<?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>147811</bug_id>
          
          <creation_ts>2015-08-08 13:59:10 -0700</creation_ts>
          <short_desc>Replace WebPageConfiguration with API::PageConfiguration and expose a C-SPI accessor for it</short_desc>
          <delta_ts>2015-08-27 01:47:19 -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>New Bugs</component>
          <version>528+ (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=148471</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>andersca</cc>
    
    <cc>mitz</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1116032</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2015-08-08 13:59:10 -0700</bug_when>
    <thetext>Replace WebPageConfiguration with API::PageConfiguration and expose a C-SPI accessor for it</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116035</commentid>
    <comment_count>1</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2015-08-08 14:06:17 -0700</bug_when>
    <thetext>This is a step on the way to making WKWebViewConfiguration backed by API::PageConfiguration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116037</commentid>
    <comment_count>2</comment_count>
      <attachid>258573</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2015-08-08 14:06:44 -0700</bug_when>
    <thetext>Created attachment 258573
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116041</commentid>
    <comment_count>3</comment_count>
      <attachid>258574</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2015-08-08 14:24:33 -0700</bug_when>
    <thetext>Created attachment 258574
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116042</commentid>
    <comment_count>4</comment_count>
      <attachid>258575</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2015-08-08 14:25:56 -0700</bug_when>
    <thetext>Created attachment 258575
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116046</commentid>
    <comment_count>5</comment_count>
      <attachid>258576</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2015-08-08 14:36:51 -0700</bug_when>
    <thetext>Created attachment 258576
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116056</commentid>
    <comment_count>6</comment_count>
      <attachid>258577</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2015-08-08 16:00:51 -0700</bug_when>
    <thetext>Created attachment 258577
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116057</commentid>
    <comment_count>7</comment_count>
      <attachid>258578</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2015-08-08 16:01:51 -0700</bug_when>
    <thetext>Created attachment 258578
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116058</commentid>
    <comment_count>8</comment_count>
      <attachid>258579</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2015-08-08 16:15:49 -0700</bug_when>
    <thetext>Created attachment 258579
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116082</commentid>
    <comment_count>9</comment_count>
      <attachid>258587</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2015-08-08 20:23:32 -0700</bug_when>
    <thetext>Created attachment 258587
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116147</commentid>
    <comment_count>10</comment_count>
      <attachid>258587</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-08-09 18:10:05 -0700</bug_when>
    <thetext>Comment on attachment 258587
Patch

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

&gt; Source/WebKit2/UIProcess/API/APIPageConfiguration.cpp:55
&gt; +    auto copy = this-&gt;create();

Why the explicit &quot;this-&gt;&quot;?

&gt; Source/WebKit2/UIProcess/API/APIPageConfiguration.cpp:70
&gt; +    copy-&gt;m_processPool = this-&gt;m_processPool;
&gt; +    copy-&gt;m_userContentController = this-&gt;m_userContentController;
&gt; +    copy-&gt;m_pageGroup = this-&gt;m_pageGroup;
&gt; +    copy-&gt;m_preferences = this-&gt;m_preferences;
&gt; +    copy-&gt;m_preferenceValues = this-&gt;m_preferenceValues;
&gt; +    copy-&gt;m_relatedPage = this-&gt;m_relatedPage;
&gt; +    copy-&gt;m_visitedLinkProvider = this-&gt;m_visitedLinkProvider;
&gt; +    copy-&gt;m_websiteDataStore = this-&gt;m_websiteDataStore;
&gt; +    copy-&gt;m_sessionID = this-&gt;m_sessionID;
&gt; +    copy-&gt;m_treatsSHA1SignedCertificatesAsInsecure = this-&gt;m_treatsSHA1SignedCertificatesAsInsecure;
&gt; +
&gt; +#if PLATFORM(IOS)
&gt; +    copy-&gt;m_alwaysRunsAtForegroundPriority = this-&gt;m_alwaysRunsAtForegroundPriority;
&gt; +#endif

This seems likely to be fragile. What will remind us to keep this in sync as we add data members? Is there a good reason to not use a copy constructor instead? It could be a private one to avoid confusion about reference counting, just as other constructors are private for the same reason.

&gt; Source/WebKit2/UIProcess/API/C/WKPage.cpp:134
&gt; +    auto configuration = toImpl(pageRef)-&gt;configuration().copy();
&gt; +    return toAPI(&amp;configuration.leakRef());

Is the local variable needed? I think it would read fine without it.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:305
&gt; +    Ref&lt;API::PageConfiguration&gt; pageConfiguration = API::PageConfiguration::create();

auto?

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:1320
&gt; +    Ref&lt;API::PageConfiguration&gt; pageConfiguration = API::PageConfiguration::create();

auto?

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:1049
&gt; +    Ref&lt;API::PageConfiguration&gt; pageConfiguration = API::PageConfiguration::create();

auto?

&gt; Source/WebKit2/UIProcess/API/ios/WKViewIOS.mm:229
&gt; +    Ref&lt;API::PageConfiguration&gt; configuration = API::PageConfiguration::create();

auto?

&gt; Source/WebKit2/UIProcess/API/mac/WKView.mm:3997
&gt; +    Ref&lt;API::PageConfiguration&gt; configuration = API::PageConfiguration::create();

auto?

&gt; Source/WebKit2/UIProcess/API/mac/WKView.mm:4007
&gt; +    Ref&lt;API::PageConfiguration&gt; configuration = *toImpl(configurationRef);

auto?

&gt; Source/WebKit2/UIProcess/CoordinatedGraphics/WebView.cpp:56
&gt; +    Ref&lt;API::PageConfiguration&gt; pageConfiguration = API::PageConfiguration::create();

auto?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116159</commentid>
    <comment_count>11</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2015-08-09 19:28:11 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Comment on attachment 258587 [details]
&gt; Patch
&gt; &gt; Source/WebKit2/UIProcess/API/APIPageConfiguration.cpp:70
&gt; &gt; +    copy-&gt;m_processPool = this-&gt;m_processPool;
&gt; &gt; +    copy-&gt;m_userContentController = this-&gt;m_userContentController;
&gt; &gt; +    copy-&gt;m_pageGroup = this-&gt;m_pageGroup;
&gt; &gt; +    copy-&gt;m_preferences = this-&gt;m_preferences;
&gt; &gt; +    copy-&gt;m_preferenceValues = this-&gt;m_preferenceValues;
&gt; &gt; +    copy-&gt;m_relatedPage = this-&gt;m_relatedPage;
&gt; &gt; +    copy-&gt;m_visitedLinkProvider = this-&gt;m_visitedLinkProvider;
&gt; &gt; +    copy-&gt;m_websiteDataStore = this-&gt;m_websiteDataStore;
&gt; &gt; +    copy-&gt;m_sessionID = this-&gt;m_sessionID;
&gt; &gt; +    copy-&gt;m_treatsSHA1SignedCertificatesAsInsecure = this-&gt;m_treatsSHA1SignedCertificatesAsInsecure;
&gt; &gt; +
&gt; &gt; +#if PLATFORM(IOS)
&gt; &gt; +    copy-&gt;m_alwaysRunsAtForegroundPriority = this-&gt;m_alwaysRunsAtForegroundPriority;
&gt; &gt; +#endif
&gt; 
&gt; This seems likely to be fragile. What will remind us to keep this in sync as
&gt; we add data members? Is there a good reason to not use a copy constructor
&gt; instead? It could be a private one to avoid confusion about reference
&gt; counting, just as other constructors are private for the same reason.

Honestly, I was just blindingly following APIProcessPoolConfiguration, which does it this way. A copy constructor that copy calls would be cleaner. I&apos;ll do that for both classes in a follow up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116325</commentid>
    <comment_count>12</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2015-08-10 13:52:10 -0700</bug_when>
    <thetext>Committed r188228: &lt;http://trac.webkit.org/changeset/188228&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258573</attachid>
            <date>2015-08-08 14:06:44 -0700</date>
            <delta_ts>2015-08-08 14:24:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147811-20150808140632.patch</filename>
            <type>text/plain</type>
            <size>42425</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4ODE5MCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg1IEBACisyMDE1LTA4LTA4ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVwbGFjZSBXZWJQYWdlQ29uZmlndXJh
dGlvbiB3aXRoIEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24gYW5kIGV4cG9zZSBhIEMtU1BJIGFjY2Vz
c29yIGZvciBpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQ3ODExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgLSBBZGRzIHRoZSBtaXNzaW5nIHBpZWNlcyBmcm9tIFdlYlBhZ2VDb25maWd1cmF0aW9uIGlu
dG8gQVBJOjpQYWdlQ29uZmlndXJhdGlvbi4KKyAgICAgICAgLSBBZGRzIEMtU1BJIHRvIHNldCBh
bmQgZ2V0IHRoZSBXZWJzaXRlRGF0YVN0b3JlIG9uIHRoZSBXS1BhZ2VDb25maWd1cmF0aW9uUmVm
LgorICAgICAgICAtIFVzZXMgQVBJOjpQYWdlQ29uZmlndXJhdGlvbiB0byBwYXNzIGNvbmZpZ3Vy
YXRpb24gaW5mb3JtYXRpb24gZnJvbSBXS1dlYlZpZXcvV0tWaWV3IAorICAgICAgICAgIHRvIFdl
YlBhZ2VQcm94eS4KKyAgICAgICAgLSBTdG9yZXMgdGhlIEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24g
b24gdGhlIFdlYlBhZ2VQcm94eSBhbmQgZXhwb3NlcyBhIG5ldyBDLVNQSSBmdW5jdGlvbiwKKyAg
ICAgICAgICBXS1BhZ2VDb3B5UGFnZUNvbmZpZ3VyYXRpb24sIHRvIGdldCBhIGNvcHkgb2YgaXQu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcDoKKyAg
ICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChBUEk6OlBh
Z2VDb25maWd1cmF0aW9uOjpQYWdlQ29uZmlndXJhdGlvbik6CisgICAgICAgIChBUEk6OlBhZ2VD
b25maWd1cmF0aW9uOjp+UGFnZUNvbmZpZ3VyYXRpb24pOgorICAgICAgICAoQVBJOjpQYWdlQ29u
ZmlndXJhdGlvbjo6Y29weSk6CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpwcm9j
ZXNzUG9vbCk6CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpzZXRSZWxhdGVkUGFn
ZSk6CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjp2aXNpdGVkTGlua1Byb3ZpZGVy
KToKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OnNldFZpc2l0ZWRMaW5rUHJvdmlk
ZXIpOgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6d2Vic2l0ZURhdGFTdG9yZSk6
CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpzZXRXZWJzaXRlRGF0YVN0b3JlKToK
KyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OnNlc3Npb25JRCk6CisgICAgICAgIChB
UEk6OlBhZ2VDb25maWd1cmF0aW9uOjpzZXRTZXNzaW9uSUQpOgorICAgICAgICAoQVBJOjpQYWdl
Q29uZmlndXJhdGlvbjo6d2ViUGFnZUNvbmZpZ3VyYXRpb24pOiBEZWxldGVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKEFQSTo6UGFn
ZUNvbmZpZ3VyYXRpb246OnByZWZlcmVuY2VWYWx1ZXMpOgorICAgICAgICAoQVBJOjpQYWdlQ29u
ZmlndXJhdGlvbjo6dHJlYXRzU0hBMVNpZ25lZENlcnRpZmljYXRlc0FzSW5zZWN1cmUpOgorICAg
ICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6c2V0VHJlYXRzU0hBMVNpZ25lZENlcnRpZmlj
YXRlc0FzSW5zZWN1cmUpOgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6YWx3YXlz
UnVuc0F0Rm9yZWdyb3VuZFByaW9yaXR5KToKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRp
b246OnNldEFsd2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eSk6CisgICAgICAgIChBUEk6OlBh
Z2VDb25maWd1cmF0aW9uOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdlR2V0UGFnZUdyb3VwKToKKyAgICAgICAg
KFdLUGFnZUNvcHlQYWdlQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXS1BhZ2VMb2FkVVJMKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLUGFnZUNvbmZpZ3VyYXRpb25SZWYuY3BwOgorICAgICAgICAoV0tQYWdlQ29uZmln
dXJhdGlvblNldFJlbGF0ZWRQYWdlKToKKyAgICAgICAgKFdLUGFnZUNvbmZpZ3VyYXRpb25HZXRX
ZWJzaXRlRGF0YVN0b3JlKToKKyAgICAgICAgKFdLUGFnZUNvbmZpZ3VyYXRpb25TZXRXZWJzaXRl
RGF0YVN0b3JlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlQ29uZmlndXJhdGlv
blJlZi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAg
ICAgICAoLVtXS1dlYlZpZXcgaW5pdFdpdGhGcmFtZTpjb25maWd1cmF0aW9uOl0pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvaW9zL1dLVmlld0lPUy5tbToKKyAgICAgICAgKC1bV0tWaWV3IF9j
b21tb25Jbml0aWFsaXphdGlvbldpdGhDb250ZXh0UmVmOnBhZ2VHcm91cFJlZjpyZWxhdGVkVG9Q
YWdlOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbToKKyAgICAgICAg
KC1bV0tWaWV3IF9zZXRQcmltYXJ5VHJhY2tpbmdBcmVhOl0pOgorICAgICAgICAoLVtXS1ZpZXcg
aW5pdFdpdGhGcmFtZTpwcm9jZXNzUG9vbDpjb25maWd1cmF0aW9uOndlYlZpZXc6XSk6CisgICAg
ICAgICgtW1dLVmlldyBpbml0V2l0aEZyYW1lOmNvbnRleHRSZWY6cGFnZUdyb3VwUmVmOnJlbGF0
ZWRUb1BhZ2U6XSk6CisgICAgICAgICgtW1dLVmlldyBpbml0V2l0aEZyYW1lOmNvbmZpZ3VyYXRp
b25SZWY6XSk6CisgICAgICAgICgtW1dLVmlldyB3YW50c1VwZGF0ZUxheWVyXSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50ZXJuYWwuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVh
dGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6fldlYlBhZ2VQcm94eSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6Y29uZmlndXJhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6cHJvY2Vzc0lkZW50aWZpZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwYWdlSUQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNlc3Npb25JRCk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNy
ZWF0ZU5ld1dlYlByb2Nlc3NSZXNwZWN0aW5nUHJvY2Vzc0NvdW50TGltaXQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQb29sOjpkb3dubG9hZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6d2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQcm94eTo6Y3JlYXRlV2ViUGFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnByb2Nl
c3NQb29sKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW06CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aFByb2Nlc3NQb29sOmNvbmZpZ3VyYXRpb246
XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgaW5pdFdpdGhGcmFtZTpwcm9jZXNzUG9vbDpj
b25maWd1cmF0aW9uOndlYlZpZXc6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgaW5pdFdp
dGhGcmFtZTpwcm9jZXNzUG9vbDpjb25maWd1cmF0aW9uOndrVmlldzpdKToKKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyBkZWFsbG9jXSk6CisKIDIwMTUtMDgtMDcgIEZpbGlwIFBpemxvICA8ZnBp
emxvQGFwcGxlLmNvbT4KIAogICAgICAgICBMaWdodHdlaWdodCBsb2NrcyBzaG91bGQgYmUgYWRh
cHRpdmUKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShy
ZXZpc2lvbiAxODgxMjUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIkFQSU5hdmln
YXRpb25BY3Rpb24uaCIKICNpbmNsdWRlICJBUElOYXZpZ2F0aW9uQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiQVBJTmF2aWdhdGlvblJlc3BvbnNlLmgiCisjaW5jbHVkZSAiQVBJUGFnZUNvbmZpZ3VyYXRp
b24uaCIKICNpbmNsdWRlICJBUElQb2xpY3lDbGllbnQuaCIKICNpbmNsdWRlICJBUElTZWN1cml0
eU9yaWdpbi5oIgogI2luY2x1ZGUgIkFQSVVJQ2xpZW50LmgiCkBAIC0yOTMsMTMgKzI5NCwxNCBA
QCBwcml2YXRlOgogICAgIFBhZ2VDbGllbnQmIG1fcGFnZUNsaWVudDsKIH07CiAKLVJlZjxXZWJQ
YWdlUHJveHk+IFdlYlBhZ2VQcm94eTo6Y3JlYXRlKFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdl
YlByb2Nlc3NQcm94eSYgcHJvY2VzcywgdWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJQYWdlQ29u
ZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKK1JlZjxXZWJQYWdlUHJveHk+IFdlYlBhZ2VQcm94
eTo6Y3JlYXRlKFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2Vz
cywgdWludDY0X3QgcGFnZUlELCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJiBjb25maWd1
cmF0aW9uKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlBhZ2VQcm94eShwYWdlQ2xp
ZW50LCBwcm9jZXNzLCBwYWdlSUQsIGNvbmZpZ3VyYXRpb24pKTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBXZWJQYWdlUHJveHkocGFnZUNsaWVudCwgcHJvY2VzcywgcGFnZUlELCBXVEY6Om1v
dmUoY29uZmlndXJhdGlvbikpKTsKIH0KIAotV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFn
ZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCB1aW50NjRfdCBw
YWdlSUQsIGNvbnN0IFdlYlBhZ2VDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQorV2ViUGFn
ZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1By
b3h5JiBwcm9jZXNzLCB1aW50NjRfdCBwYWdlSUQsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9u
PiYmIGNvbmZpZ3VyYXRpb24pCiAgICAgOiBtX3BhZ2VDbGllbnQocGFnZUNsaWVudCkKKyAgICAs
IG1fY29uZmlndXJhdGlvbihXVEY6Om1vdmUoY29uZmlndXJhdGlvbikpCiAgICAgLCBtX2xvYWRl
ckNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6TG9hZGVyQ2xpZW50PigpKQogICAgICwgbV9w
b2xpY3lDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OlBvbGljeUNsaWVudD4oKSkKICAgICAs
IG1fZm9ybUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6Rm9ybUNsaWVudD4oKSkKQEAgLTMx
MSwxNCArMzEzLDE0IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHAK
ICNlbmRpZgogICAgICwgbV9uYXZpZ2F0aW9uU3RhdGUoc3RkOjptYWtlX3VuaXF1ZTxXZWJOYXZp
Z2F0aW9uU3RhdGU+KCkpCiAgICAgLCBtX3Byb2Nlc3MocHJvY2VzcykKLSAgICAsIG1fcGFnZUdy
b3VwKCpjb25maWd1cmF0aW9uLnBhZ2VHcm91cCkKLSAgICAsIG1fcHJlZmVyZW5jZXMoKmNvbmZp
Z3VyYXRpb24ucHJlZmVyZW5jZXMpCi0gICAgLCBtX3VzZXJDb250ZW50Q29udHJvbGxlcihjb25m
aWd1cmF0aW9uLnVzZXJDb250ZW50Q29udHJvbGxlcikKLSAgICAsIG1fdmlzaXRlZExpbmtQcm92
aWRlcigqY29uZmlndXJhdGlvbi52aXNpdGVkTGlua1Byb3ZpZGVyKQotICAgICwgbV93ZWJzaXRl
RGF0YVN0b3JlKCpjb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUpCisgICAgLCBtX3BhZ2VH
cm91cCgqbV9jb25maWd1cmF0aW9uLT5wYWdlR3JvdXAoKSkKKyAgICAsIG1fcHJlZmVyZW5jZXMo
Km1fY29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKSkKKyAgICAsIG1fdXNlckNvbnRlbnRDb250
cm9sbGVyKG1fY29uZmlndXJhdGlvbi0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkpCisgICAgLCBt
X3Zpc2l0ZWRMaW5rUHJvdmlkZXIoKm1fY29uZmlndXJhdGlvbi0+dmlzaXRlZExpbmtQcm92aWRl
cigpKQorICAgICwgbV93ZWJzaXRlRGF0YVN0b3JlKG1fY29uZmlndXJhdGlvbi0+d2Vic2l0ZURh
dGFTdG9yZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCkpCiAgICAgLCBtX21haW5GcmFtZShudWxscHRy
KQogICAgICwgbV91c2VyQWdlbnQoc3RhbmRhcmRVc2VyQWdlbnQoKSkKLSAgICAsIG1fdHJlYXRz
U0hBMUNlcnRpZmljYXRlc0FzSW5zZWN1cmUoY29uZmlndXJhdGlvbi50cmVhdHNTSEExU2lnbmVk
Q2VydGlmaWNhdGVzQXNJbnNlY3VyZSkKKyAgICAsIG1fdHJlYXRzU0hBMUNlcnRpZmljYXRlc0Fz
SW5zZWN1cmUobV9jb25maWd1cmF0aW9uLT50cmVhdHNTSEExU2lnbmVkQ2VydGlmaWNhdGVzQXNJ
bnNlY3VyZSgpKQogI2lmIFBMQVRGT1JNKElPUykKICAgICAsIG1faGFzUmVjZWl2ZWRMYXllclRy
ZWVUcmFuc2FjdGlvbkFmdGVyRGlkQ29tbWl0TG9hZCh0cnVlKQogICAgICwgbV9maXJzdExheWVy
VHJlZVRyYW5zYWN0aW9uSWRBZnRlckRpZENvbW1pdExvYWQoMCkKQEAgLTMzNSw3ICszMzcsNyBA
QCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwCiAgICAgLCBtX3ZpZXdT
dGF0ZShWaWV3U3RhdGU6Ok5vRmxhZ3MpCiAgICAgLCBtX3ZpZXdXYXNFdmVySW5XaW5kb3coZmFs
c2UpCiAjaWYgUExBVEZPUk0oSU9TKQotICAgICwgbV9hbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJp
b3JpdHkoY29uZmlndXJhdGlvbi5hbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHkpCisgICAg
LCBtX2Fsd2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eShtX2NvbmZpZ3VyYXRpb24tPmFsd2F5
c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eSgpKQogI2VuZGlmCiAgICAgLCBtX2JhY2tGb3J3YXJk
TGlzdChXZWJCYWNrRm9yd2FyZExpc3Q6OmNyZWF0ZSgqdGhpcykpCiAgICAgLCBtX21haW50YWlu
c0luYWN0aXZlU2VsZWN0aW9uKGZhbHNlKQpAQCAtMzc5LDcgKzM4MSw3IEBAIFdlYlBhZ2VQcm94
eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHAKICAgICAsIG1faXNUcmFja2luZ1RvdWNoRXZl
bnRzKGZhbHNlKQogI2VuZGlmCiAgICAgLCBtX3BhZ2VJRChwYWdlSUQpCi0gICAgLCBtX3Nlc3Np
b25JRChjb25maWd1cmF0aW9uLnNlc3Npb25JRCkKKyAgICAsIG1fc2Vzc2lvbklEKG1fY29uZmln
dXJhdGlvbi0+c2Vzc2lvbklEKCkpCiAgICAgLCBtX2lzUGFnZVN1c3BlbmRlZChmYWxzZSkKICAg
ICAsIG1fYWRkc1Zpc2l0ZWRMaW5rcyh0cnVlKQogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9S
KQpAQCAtNDM2LDcgKzQzOCw3IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGll
bnQmIHAKICNlbmRpZgogICAgICwgbV9zY3JvbGxQaW5uaW5nQmVoYXZpb3IoRG9Ob3RQaW4pCiAg
ICAgLCBtX25hdmlnYXRpb25JRCgwKQotICAgICwgbV9jb25maWd1cmF0aW9uUHJlZmVyZW5jZVZh
bHVlcyhjb25maWd1cmF0aW9uLnByZWZlcmVuY2VWYWx1ZXMpCisgICAgLCBtX2NvbmZpZ3VyYXRp
b25QcmVmZXJlbmNlVmFsdWVzKG1fY29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpKQog
ICAgICwgbV9wb3RlbnRpYWxseUNoYW5nZWRWaWV3U3RhdGVGbGFncyhWaWV3U3RhdGU6Ok5vRmxh
Z3MpCiAgICAgLCBtX3ZpZXdTdGF0ZUNoYW5nZVdhbnRzU3luY2hyb25vdXNSZXBseShmYWxzZSkK
IHsKQEAgLTUxOCw2ICs1MjAsMTEgQEAgV2ViUGFnZVByb3h5Ojp+V2ViUGFnZVByb3h5KCkKICNl
bmRpZgogfQogCitjb25zdCBBUEk6OlBhZ2VDb25maWd1cmF0aW9uJiBXZWJQYWdlUHJveHk6OmNv
bmZpZ3VyYXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbmZpZ3VyYXRpb24uZ2V0KCk7
Cit9CisKIFBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIgV2ViUGFnZVByb3h5Ojpwcm9jZXNzSWRl
bnRpZmllcigpIGNvbnN0CiB7CiAgICAgaWYgKG1faXNDbG9zZWQpCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAxODgxMjUpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1NCwy
OCArMjU0LDYgQEAgdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgV2ViQ29yZTo6SQogdHlw
ZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgV2ViQ29yZTo6TWFjaFNlbmRSaWdodCY+IE1hY2hT
ZW5kUmlnaHRDYWxsYmFjazsKICNlbmRpZgogCi1zdHJ1Y3QgV2ViUGFnZUNvbmZpZ3VyYXRpb24g
ewotICAgIFdlYlBhZ2VHcm91cCogcGFnZUdyb3VwID0gbnVsbHB0cjsKLSAgICBXZWJQcmVmZXJl
bmNlcyogcHJlZmVyZW5jZXMgPSBudWxscHRyOwotICAgIFdlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5KiB1c2VyQ29udGVudENvbnRyb2xsZXIgPSBudWxscHRyOwotICAgIFZpc2l0ZWRMaW5r
UHJvdmlkZXIqIHZpc2l0ZWRMaW5rUHJvdmlkZXIgPSBudWxscHRyOwotCi0gICAgV2Vic2l0ZURh
dGFTdG9yZSogd2Vic2l0ZURhdGFTdG9yZSA9IG51bGxwdHI7Ci0gICAgLy8gRklYTUU6IFdlIGN1
cnJlbnRseSBoYXZlIHRvIHBhc3MgdGhlIHNlc3Npb24gSUQgc2VwYXJhdGVseSBoZXJlIHRvIHN1
cHBvcnQgdGhlIGxlZ2FjeSBwcml2YXRlIGJyb3dzaW5nIHNlc3Npb24uCi0gICAgLy8gT25jZSB3
ZSBnZXQgcmlkIG9mIGl0IHdlIHNob3VsZCBnZXQgcmlkIG9mIHRoaXMgY29uZmlndXJhdGlvbiBw
YXJhbWV0ZXIgYXMgd2VsbC4KLSAgICBXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEOwotCi0g
ICAgV2ViUGFnZVByb3h5KiByZWxhdGVkUGFnZSA9IG51bGxwdHI7Ci0KLSAgICBib29sIHRyZWF0
c1NIQTFTaWduZWRDZXJ0aWZpY2F0ZXNBc0luc2VjdXJlID0gZmFsc2U7Ci0KLSNpZiBQTEFURk9S
TShJT1MpCi0gICAgYm9vbCBhbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHkgPSBmYWxzZTsK
LSNlbmRpZgotCi0gICAgV2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWVNYXAgcHJlZmVyZW5jZVZh
bHVlczsKLX07Ci0KIGNsYXNzIFdlYlBhZ2VQcm94eSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8
QVBJOjpPYmplY3Q6OlR5cGU6OlBhZ2U+CiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCiAg
ICAgLCBwdWJsaWMgV2ViQ29sb3JQaWNrZXI6OkNsaWVudApAQCAtMjg3LDkgKzI2NSwxMSBAQCBj
bGFzcyBXZWJQYWdlUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJCiAgICAgLCBwdWJsaWMgSVBD
OjpNZXNzYWdlUmVjZWl2ZXIKICAgICAsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIgewogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8V2ViUGFnZVByb3h5PiBjcmVhdGUoUGFnZUNsaWVudCYsIFdl
YlByb2Nlc3NQcm94eSYsIHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViUGFnZUNvbmZpZ3VyYXRp
b24mKTsKKyAgICBzdGF0aWMgUmVmPFdlYlBhZ2VQcm94eT4gY3JlYXRlKFBhZ2VDbGllbnQmLCBX
ZWJQcm9jZXNzUHJveHkmLCB1aW50NjRfdCBwYWdlSUQsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0
aW9uPiYmKTsKICAgICB2aXJ0dWFsIH5XZWJQYWdlUHJveHkoKTsKIAorICAgIGNvbnN0IEFQSTo6
UGFnZUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24oKSBjb25zdDsKKwogICAgIHVpbnQ2NF90
IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEOyB9CiAgICAgV2ViQ29yZTo6U2Vzc2lv
bklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbklEOyB9CiAgICAgdm9pZCBz
ZXRTZXNzaW9uSUQoV2ViQ29yZTo6U2Vzc2lvbklEKTsKQEAgLTEwODQsNyArMTA2NCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGNsZWFyV2hlZWxFdmVudFRlc3RUcmlnZ2VyKCk7CiAKIHByaXZhdGU6
Ci0gICAgV2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJveHkmLCB1aW50NjRf
dCBwYWdlSUQsIGNvbnN0IFdlYlBhZ2VDb25maWd1cmF0aW9uJik7CisgICAgV2ViUGFnZVByb3h5
KFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJveHkmLCB1aW50NjRfdCBwYWdlSUQsIFJlZjxBUEk6
OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwog
CiAgICAgdm9pZCB1cGRhdGVWaWV3U3RhdGUoV2ViQ29yZTo6Vmlld1N0YXRlOjpGbGFncyBmbGFn
c1RvVXBkYXRlID0gV2ViQ29yZTo6Vmlld1N0YXRlOjpBbGxGbGFncyk7CkBAIC0xNDg4LDYgKzE0
NjgsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgaGFuZGxlU3luY2hyb25vdXNNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUsIGNvbnN0IFVzZXJEYXRhJiBt
ZXNzYWdlQm9keSwgVXNlckRhdGEmIHJldHVyblVzZXJEYXRhKTsKIAogICAgIFBhZ2VDbGllbnQm
IG1fcGFnZUNsaWVudDsKKyAgICBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4gbV9jb25maWd1
cmF0aW9uOworCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6TG9hZGVyQ2xpZW50PiBtX2xvYWRl
ckNsaWVudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpQb2xpY3lDbGllbnQ+IG1fcG9saWN5
Q2xpZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6Ok5hdmlnYXRpb25DbGllbnQ+IG1fbmF2
aWdhdGlvbkNsaWVudDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcAkocmV2aXNpb24gMTg4MTI1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2lu
Y2x1ZGUgIkFQSUFycmF5LmgiCiAjaW5jbHVkZSAiQVBJRG93bmxvYWRDbGllbnQuaCIKICNpbmNs
dWRlICJBUElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudC5oIgorI2luY2x1ZGUgIkFQSVBhZ2VD
b25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgi
CiAjaW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJE
b3dubG9hZFByb3h5LmgiCkBAIC04MzEsMTggKzgzMiwxOCBAQCBXZWJQcm9jZXNzUHJveHkmIFdl
YlByb2Nlc3NQb29sOjpjcmVhdGVOCiAgICAgcmV0dXJuICpwcm9jZXNzOwogfQogCi1QYXNzUmVm
UHRyPFdlYlBhZ2VQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVu
dCYgcGFnZUNsaWVudCwgV2ViUGFnZUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbikKK1Bhc3NS
ZWZQdHI8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xp
ZW50JiBwYWdlQ2xpZW50LCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJiBwYWdlQ29uZmln
dXJhdGlvbikKIHsKLSAgICBpZiAoIWNvbmZpZ3VyYXRpb24ucGFnZUdyb3VwKQotICAgICAgICBj
b25maWd1cmF0aW9uLnBhZ2VHcm91cCA9IG1fZGVmYXVsdFBhZ2VHcm91cC5wdHIoKTsKLSAgICBp
ZiAoIWNvbmZpZ3VyYXRpb24ucHJlZmVyZW5jZXMpCi0gICAgICAgIGNvbmZpZ3VyYXRpb24ucHJl
ZmVyZW5jZXMgPSAmY29uZmlndXJhdGlvbi5wYWdlR3JvdXAtPnByZWZlcmVuY2VzKCk7Ci0gICAg
aWYgKCFjb25maWd1cmF0aW9uLnZpc2l0ZWRMaW5rUHJvdmlkZXIpCi0gICAgICAgIGNvbmZpZ3Vy
YXRpb24udmlzaXRlZExpbmtQcm92aWRlciA9IG1fdmlzaXRlZExpbmtQcm92aWRlci5wdHIoKTsK
LSAgICBpZiAoIWNvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSkgewotICAgICAgICBBU1NF
UlQoIWNvbmZpZ3VyYXRpb24uc2Vzc2lvbklELmlzVmFsaWQoKSk7Ci0gICAgICAgIGNvbmZpZ3Vy
YXRpb24ud2Vic2l0ZURhdGFTdG9yZSA9ICZtX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRh
U3RvcmUoKTsKLSAgICAgICAgY29uZmlndXJhdGlvbi5zZXNzaW9uSUQgPSBjb25maWd1cmF0aW9u
LnByZWZlcmVuY2VzLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkgPyBTZXNzaW9uSUQ6OmxlZ2Fj
eVByaXZhdGVTZXNzaW9uSUQoKSA6IFNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpOworICAg
IGlmICghcGFnZUNvbmZpZ3VyYXRpb24tPnBhZ2VHcm91cCgpKQorICAgICAgICBwYWdlQ29uZmln
dXJhdGlvbi0+c2V0UGFnZUdyb3VwKG1fZGVmYXVsdFBhZ2VHcm91cC5wdHIoKSk7CisgICAgaWYg
KCFwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKSkKKyAgICAgICAgcGFnZUNvbmZpZ3Vy
YXRpb24tPnNldFByZWZlcmVuY2VzKCZwYWdlQ29uZmlndXJhdGlvbi0+cGFnZUdyb3VwKCktPnBy
ZWZlcmVuY2VzKCkpOworICAgIGlmICghcGFnZUNvbmZpZ3VyYXRpb24tPnZpc2l0ZWRMaW5rUHJv
dmlkZXIoKSkKKyAgICAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFZpc2l0ZWRMaW5rUHJvdmlk
ZXIobV92aXNpdGVkTGlua1Byb3ZpZGVyLnB0cigpKTsKKyAgICBpZiAoIXBhZ2VDb25maWd1cmF0
aW9uLT53ZWJzaXRlRGF0YVN0b3JlKCkpIHsKKyAgICAgICAgQVNTRVJUKCFwYWdlQ29uZmlndXJh
dGlvbi0+c2Vzc2lvbklEKCkuaXNWYWxpZCgpKTsKKyAgICAgICAgcGFnZUNvbmZpZ3VyYXRpb24t
PnNldFdlYnNpdGVEYXRhU3RvcmUobV93ZWJzaXRlRGF0YVN0b3JlLmdldCgpKTsKKyAgICAgICAg
cGFnZUNvbmZpZ3VyYXRpb24tPnNldFNlc3Npb25JRChwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVy
ZW5jZXMoKS0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpID8gU2Vzc2lvbklEOjpsZWdhY3lQcml2
YXRlU2Vzc2lvbklEKCkgOiBTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CiAgICAgfQog
CiAgICAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gcHJvY2VzczsKQEAgLTg1MiwxNCArODUzLDE0
IEBAIFBhc3NSZWZQdHI8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUG9vbDoKICAgICAgICAgaWYg
KG1faGF2ZUluaXRpYWxFbXB0eVByb2Nlc3MpIHsKICAgICAgICAgICAgIHByb2Nlc3MgPSBtX3By
b2Nlc3Nlcy5sYXN0KCk7CiAgICAgICAgICAgICBtX2hhdmVJbml0aWFsRW1wdHlQcm9jZXNzID0g
ZmFsc2U7Ci0gICAgICAgIH0gZWxzZSBpZiAoY29uZmlndXJhdGlvbi5yZWxhdGVkUGFnZSkgewor
ICAgICAgICB9IGVsc2UgaWYgKHBhZ2VDb25maWd1cmF0aW9uLT5yZWxhdGVkUGFnZSgpKSB7CiAg
ICAgICAgICAgICAvLyBTaGFyaW5nIHByb2Nlc3NlcywgZS5nLiB3aGVuIGNyZWF0aW5nIHRoZSBw
YWdlIHZpYSB3aW5kb3cub3BlbigpLgotICAgICAgICAgICAgcHJvY2VzcyA9ICZjb25maWd1cmF0
aW9uLnJlbGF0ZWRQYWdlLT5wcm9jZXNzKCk7CisgICAgICAgICAgICBwcm9jZXNzID0gJnBhZ2VD
b25maWd1cmF0aW9uLT5yZWxhdGVkUGFnZSgpLT5wcm9jZXNzKCk7CiAgICAgICAgIH0gZWxzZQog
ICAgICAgICAgICAgcHJvY2VzcyA9ICZjcmVhdGVOZXdXZWJQcm9jZXNzUmVzcGVjdGluZ1Byb2Nl
c3NDb3VudExpbWl0KCk7CiAgICAgfQogCi0gICAgcmV0dXJuIHByb2Nlc3MtPmNyZWF0ZVdlYlBh
Z2UocGFnZUNsaWVudCwgV1RGOjptb3ZlKGNvbmZpZ3VyYXRpb24pKTsKKyAgICByZXR1cm4gcHJv
Y2Vzcy0+Y3JlYXRlV2ViUGFnZShwYWdlQ2xpZW50LCBXVEY6Om1vdmUocGFnZUNvbmZpZ3VyYXRp
b24pKTsKIH0KIAogRG93bmxvYWRQcm94eSogV2ViUHJvY2Vzc1Bvb2w6OmRvd25sb2FkKFdlYlBh
Z2VQcm94eSogaW5pdGlhdGluZ1BhZ2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCShyZXZpc2lv
biAxODgxMjUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAko
d29ya2luZyBjb3B5KQpAQCAtNzYsNiArNzYsNyBAQCBPQkpDX0NMQVNTIE5TU3RyaW5nOwogbmFt
ZXNwYWNlIEFQSSB7CiBjbGFzcyBEb3dubG9hZENsaWVudDsKIGNsYXNzIExlZ2FjeUNvbnRleHRI
aXN0b3J5Q2xpZW50OworY2xhc3MgUGFnZUNvbmZpZ3VyYXRpb247CiB9CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewpAQCAtODYsNyArODcsNiBAQCBjbGFzcyBXZWJJY29uRGF0YWJhc2U7CiBjbGFzcyBX
ZWJQYWdlR3JvdXA7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiBzdHJ1Y3QgU3RhdGlzdGljc0RhdGE7
Ci1zdHJ1Y3QgV2ViUGFnZUNvbmZpZ3VyYXRpb247CiBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVyczsKICAgICAKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPEFQSTo6RGljdGlvbmFy
eSo+IERpY3Rpb25hcnlDYWxsYmFjazsKQEAgLTE3MSw3ICsxNzEsNyBAQCBwdWJsaWM6CiAKICAg
ICBBUEk6OldlYnNpdGVEYXRhU3RvcmUqIHdlYnNpdGVEYXRhU3RvcmUoKSBjb25zdCB7IHJldHVy
biBtX3dlYnNpdGVEYXRhU3RvcmUuZ2V0KCk7IH0KIAotICAgIFBhc3NSZWZQdHI8V2ViUGFnZVBy
b3h5PiBjcmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmLCBXZWJQYWdlQ29uZmlndXJhdGlvbik7Cisg
ICAgUGFzc1JlZlB0cjxXZWJQYWdlUHJveHk+IGNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYsIFJl
ZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsKIAogICAgIGNvbnN0IFN0cmluZyYgaW5qZWN0
ZWRCdW5kbGVQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9jb25maWd1cmF0aW9uLT5pbmplY3RlZEJ1
bmRsZVBhdGgoKTsgfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmNwcAkocmV2aXNpb24gMTg4MTI1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwNiwxMCArMjA2LDEw
IEBAIFdlYlBhZ2VQcm94eSogV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHUKICAgICByZXR1cm4g
Z2xvYmFsUGFnZU1hcCgpLmdldChwYWdlSUQpOwogfQogCi1SZWY8V2ViUGFnZVByb3h5PiBXZWJQ
cm9jZXNzUHJveHk6OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgY29uc3Qg
V2ViUGFnZUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCitSZWY8V2ViUGFnZVByb3h5PiBX
ZWJQcm9jZXNzUHJveHk6OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgUmVm
PEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYgcGFnZUNvbmZpZ3VyYXRpb24pCiB7CiAgICAgdWlu
dDY0X3QgcGFnZUlEID0gZ2VuZXJhdGVQYWdlSUQoKTsKLSAgICBSZWY8V2ViUGFnZVByb3h5PiB3
ZWJQYWdlID0gV2ViUGFnZVByb3h5OjpjcmVhdGUocGFnZUNsaWVudCwgKnRoaXMsIHBhZ2VJRCwg
Y29uZmlndXJhdGlvbik7CisgICAgUmVmPFdlYlBhZ2VQcm94eT4gd2ViUGFnZSA9IFdlYlBhZ2VQ
cm94eTo6Y3JlYXRlKHBhZ2VDbGllbnQsICp0aGlzLCBwYWdlSUQsIFdURjo6bW92ZShwYWdlQ29u
ZmlndXJhdGlvbikpOwogCiAgICAgbV9wYWdlTWFwLnNldChwYWdlSUQsIHdlYlBhZ2UucHRyKCkp
OwogICAgIGdsb2JhbFBhZ2VNYXAoKS5zZXQocGFnZUlELCB3ZWJQYWdlLnB0cigpKTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgJKHJldmlzaW9uIDE4
ODEyNSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAkod29y
a2luZyBjb3B5KQpAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6CiAgICAgV2ViUHJvY2Vzc1Bvb2wm
IHByb2Nlc3NQb29sKCkgeyByZXR1cm4gbV9wcm9jZXNzUG9vbDsgfQogCiAgICAgc3RhdGljIFdl
YlBhZ2VQcm94eSogd2ViUGFnZSh1aW50NjRfdCBwYWdlSUQpOwotICAgIFJlZjxXZWJQYWdlUHJv
eHk+IGNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYsIGNvbnN0IFdlYlBhZ2VDb25maWd1cmF0aW9u
Jik7CisgICAgUmVmPFdlYlBhZ2VQcm94eT4gY3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiwgUmVm
PEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpOwogICAgIHZvaWQgYWRkRXhpc3RpbmdXZWJQYWdl
KFdlYlBhZ2VQcm94eSosIHVpbnQ2NF90IHBhZ2VJRCk7CiAgICAgdm9pZCByZW1vdmVXZWJQYWdl
KHVpbnQ2NF90IHBhZ2VJRCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
QVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwCShyZXZpc2lvbiAxODgxMjUpCisr
KyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsMTEgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsK
IAogbmFtZXNwYWNlIEFQSSB7CiAKK1JlZjxQYWdlQ29uZmlndXJhdGlvbj4gUGFnZUNvbmZpZ3Vy
YXRpb246OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGFnZUNvbmZpZ3Vy
YXRpb24pOworfQorCiBQYWdlQ29uZmlndXJhdGlvbjo6UGFnZUNvbmZpZ3VyYXRpb24oKQogewog
fQpAQCAtNDUsNiArNTAsMjkgQEAgUGFnZUNvbmZpZ3VyYXRpb246On5QYWdlQ29uZmlndXJhdGlv
bigpCiB7CiB9CiAKK1JlZjxQYWdlQ29uZmlndXJhdGlvbj4gUGFnZUNvbmZpZ3VyYXRpb246OmNv
cHkoKSBjb25zdAoreworICAgIGF1dG8gY29weSA9IHRoaXMtPmNyZWF0ZSgpOworCisgICAgY29w
eS0+bV9wcm9jZXNzUG9vbCA9IHRoaXMtPm1fcHJvY2Vzc1Bvb2w7CisgICAgY29weS0+bV91c2Vy
Q29udGVudENvbnRyb2xsZXIgPSB0aGlzLT5tX3VzZXJDb250ZW50Q29udHJvbGxlcjsKKyAgICBj
b3B5LT5tX3BhZ2VHcm91cCA9IHRoaXMtPm1fcGFnZUdyb3VwOworICAgIGNvcHktPm1fcHJlZmVy
ZW5jZXMgPSB0aGlzLT5tX3ByZWZlcmVuY2VzOworICAgIGNvcHktPm1fcHJlZmVyZW5jZVZhbHVl
cyA9IHRoaXMtPm1fcHJlZmVyZW5jZVZhbHVlczsKKyAgICBjb3B5LT5tX3JlbGF0ZWRQYWdlID0g
dGhpcy0+bV9yZWxhdGVkUGFnZTsKKyAgICBjb3B5LT5tX3Zpc2l0ZWRMaW5rUHJvdmlkZXIgPSB0
aGlzLT5tX3Zpc2l0ZWRMaW5rUHJvdmlkZXI7CisgICAgY29weS0+bV93ZWJzaXRlRGF0YVN0b3Jl
ID0gdGhpcy0+bV93ZWJzaXRlRGF0YVN0b3JlOworICAgIGNvcHktPm1fc2Vzc2lvbklEID0gdGhp
cy0+bV9zZXNzaW9uSUQ7CisgICAgY29weS0+bV90cmVhdHNTSEExU2lnbmVkQ2VydGlmaWNhdGVz
QXNJbnNlY3VyZSA9IHRoaXMtPm1fdHJlYXRzU0hBMVNpZ25lZENlcnRpZmljYXRlc0FzSW5zZWN1
cmU7CisKKyNpZiBQTEFURk9STShJT1MpCisgICAgY29weS0+bV9hbHdheXNSdW5zQXRGb3JlZ3Jv
dW5kUHJpb3JpdHkgPSB0aGlzLT5tX2Fsd2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eTsKKyNl
bmRpZgorCisgICAgcmV0dXJuIGNvcHk7Cit9CisKKwogV2ViUHJvY2Vzc1Bvb2wqIFBhZ2VDb25m
aWd1cmF0aW9uOjpwcm9jZXNzUG9vbCgpCiB7CiAgICAgcmV0dXJuIG1fcHJvY2Vzc1Bvb2wuZ2V0
KCk7CkBAIC05NSwxNiArMTIzLDM1IEBAIHZvaWQgUGFnZUNvbmZpZ3VyYXRpb246OnNldFJlbGF0
ZWRQYWdlKFcKICAgICBtX3JlbGF0ZWRQYWdlID0gcmVsYXRlZFBhZ2U7CiB9CiAKLVdlYktpdDo6
V2ViUGFnZUNvbmZpZ3VyYXRpb24gUGFnZUNvbmZpZ3VyYXRpb246OndlYlBhZ2VDb25maWd1cmF0
aW9uKCkKKworVmlzaXRlZExpbmtQcm92aWRlciogUGFnZUNvbmZpZ3VyYXRpb246OnZpc2l0ZWRM
aW5rUHJvdmlkZXIoKQogewotICAgIFdlYktpdDo6V2ViUGFnZUNvbmZpZ3VyYXRpb24gY29uZmln
dXJhdGlvbjsKKyAgICByZXR1cm4gbV92aXNpdGVkTGlua1Byb3ZpZGVyLmdldCgpOworfQogCi0g
ICAgY29uZmlndXJhdGlvbi51c2VyQ29udGVudENvbnRyb2xsZXIgPSB1c2VyQ29udGVudENvbnRy
b2xsZXIoKTsKLSAgICBjb25maWd1cmF0aW9uLnBhZ2VHcm91cCA9IHBhZ2VHcm91cCgpOwotICAg
IGNvbmZpZ3VyYXRpb24ucHJlZmVyZW5jZXMgPSBwcmVmZXJlbmNlcygpOwotICAgIGNvbmZpZ3Vy
YXRpb24ucmVsYXRlZFBhZ2UgPSByZWxhdGVkUGFnZSgpOwordm9pZCBQYWdlQ29uZmlndXJhdGlv
bjo6c2V0VmlzaXRlZExpbmtQcm92aWRlcihWaXNpdGVkTGlua1Byb3ZpZGVyKiB2aXNpdGVkTGlu
a1Byb3ZpZGVyKQoreworICAgIG1fdmlzaXRlZExpbmtQcm92aWRlciA9IHZpc2l0ZWRMaW5rUHJv
dmlkZXI7Cit9CisKK0FQSTo6V2Vic2l0ZURhdGFTdG9yZSogUGFnZUNvbmZpZ3VyYXRpb246Ondl
YnNpdGVEYXRhU3RvcmUoKQoreworICAgIHJldHVybiBtX3dlYnNpdGVEYXRhU3RvcmUuZ2V0KCk7
Cit9CiAKLSAgICByZXR1cm4gY29uZmlndXJhdGlvbjsKK3ZvaWQgUGFnZUNvbmZpZ3VyYXRpb246
OnNldFdlYnNpdGVEYXRhU3RvcmUoQVBJOjpXZWJzaXRlRGF0YVN0b3JlKiB3ZWJzaXRlRGF0YVN0
b3JlKQoreworICAgIG1fd2Vic2l0ZURhdGFTdG9yZSA9IHdlYnNpdGVEYXRhU3RvcmU7Cit9CisK
K1dlYkNvcmU6OlNlc3Npb25JRCBQYWdlQ29uZmlndXJhdGlvbjo6c2Vzc2lvbklEKCkKK3sKKyAg
ICByZXR1cm4gbV9zZXNzaW9uSUQ7Cit9CisKK3ZvaWQgUGFnZUNvbmZpZ3VyYXRpb246OnNldFNl
c3Npb25JRChXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQoreworICAgIG1fc2Vzc2lvbklE
ID0gc2Vzc2lvbklEOwogfQogCiB9IC8vIG5hbWVzcGFjZSBBUEkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgJKHJldmlz
aW9uIDE4ODEyNSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZp
Z3VyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMjcgKzI3LDMyIEBACiAjZGVmaW5lIEFQ
SVBhZ2VDb25maWd1cmF0aW9uX2gKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUg
IldlYlByZWZlcmVuY2VzU3RvcmUuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Nlc3Npb25JRC5oPgog
I2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7Ci1zdHJ1Y3QgV2Vi
UGFnZUNvbmZpZ3VyYXRpb247Ci1jbGFzcyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTsK
LWNsYXNzIFdlYlByb2Nlc3NQb29sOworY2xhc3MgVmlzaXRlZExpbmtQcm92aWRlcjsKIGNsYXNz
IFdlYlBhZ2VHcm91cDsKLWNsYXNzIFdlYlByZWZlcmVuY2VzOwogY2xhc3MgV2ViUGFnZVByb3h5
OworY2xhc3MgV2ViUHJlZmVyZW5jZXM7CitjbGFzcyBXZWJQcm9jZXNzUG9vbDsKK2NsYXNzIFdl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OwogfQogCiBuYW1lc3BhY2UgQVBJIHsKIAorY2xh
c3MgV2Vic2l0ZURhdGFTdG9yZTsKKwogY2xhc3MgUGFnZUNvbmZpZ3VyYXRpb24gOiBwdWJsaWMg
T2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6OlBhZ2VDb25maWd1cmF0aW9uPiB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZjxQYWdlQ29uZmlndXJhdGlvbj4gY3JlYXRlKCkKLSAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFBhZ2VDb25maWd1cmF0aW9uKTsKLSAgICB9CisgICAgc3Rh
dGljIFJlZjxQYWdlQ29uZmlndXJhdGlvbj4gY3JlYXRlKCk7CisKKyAgICBleHBsaWNpdCBQYWdl
Q29uZmlndXJhdGlvbigpOwogICAgIHZpcnR1YWwgflBhZ2VDb25maWd1cmF0aW9uKCk7CiAKKyAg
ICBSZWY8UGFnZUNvbmZpZ3VyYXRpb24+IGNvcHkoKSBjb25zdDsKKwogICAgIC8vIEZJWE1FOiBU
aGUgY29uZmlndXJhdGlvbiBwcm9wZXJ0aWVzIHNob3VsZCByZXR1cm4gdGhlaXIgZGVmYXVsdCB2
YWx1ZXMKICAgICAvLyByYXRoZXIgdGhhbiBudWxscHRyLgogICAgIApAQCAtNjMsMTkgKzY4LDQ3
IEBAIHB1YmxpYzoKICAgICBXZWJLaXQ6OldlYlByZWZlcmVuY2VzKiBwcmVmZXJlbmNlcygpOwog
ICAgIHZvaWQgc2V0UHJlZmVyZW5jZXMoV2ViS2l0OjpXZWJQcmVmZXJlbmNlcyopOwogCisgICAg
V2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZU1hcCYgcHJlZmVyZW5jZVZhbHVlcygp
IHsgcmV0dXJuIG1fcHJlZmVyZW5jZVZhbHVlczsgfQorCiAgICAgV2ViS2l0OjpXZWJQYWdlUHJv
eHkqIHJlbGF0ZWRQYWdlKCk7CiAgICAgdm9pZCBzZXRSZWxhdGVkUGFnZShXZWJLaXQ6OldlYlBh
Z2VQcm94eSopOwogCi0gICAgV2ViS2l0OjpXZWJQYWdlQ29uZmlndXJhdGlvbiB3ZWJQYWdlQ29u
ZmlndXJhdGlvbigpOworICAgIFdlYktpdDo6VmlzaXRlZExpbmtQcm92aWRlciogdmlzaXRlZExp
bmtQcm92aWRlcigpOworICAgIHZvaWQgc2V0VmlzaXRlZExpbmtQcm92aWRlcihXZWJLaXQ6OlZp
c2l0ZWRMaW5rUHJvdmlkZXIqKTsKKworICAgIFdlYnNpdGVEYXRhU3RvcmUqIHdlYnNpdGVEYXRh
U3RvcmUoKTsKKyAgICB2b2lkIHNldFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZSop
OworCisgICAgV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCgpOworICAgIHZvaWQgc2V0U2Vz
c2lvbklEKFdlYkNvcmU6OlNlc3Npb25JRCk7CisKKyAgICBib29sIHRyZWF0c1NIQTFTaWduZWRD
ZXJ0aWZpY2F0ZXNBc0luc2VjdXJlKCkgeyByZXR1cm4gbV90cmVhdHNTSEExU2lnbmVkQ2VydGlm
aWNhdGVzQXNJbnNlY3VyZTsgfQorICAgIHZvaWQgc2V0VHJlYXRzU0hBMVNpZ25lZENlcnRpZmlj
YXRlc0FzSW5zZWN1cmUoYm9vbCB0cmVhdHNTSEExU2lnbmVkQ2VydGlmaWNhdGVzQXNJbnNlY3Vy
ZSkgeyBtX3RyZWF0c1NIQTFTaWduZWRDZXJ0aWZpY2F0ZXNBc0luc2VjdXJlID0gdHJlYXRzU0hB
MVNpZ25lZENlcnRpZmljYXRlc0FzSW5zZWN1cmU7IH0gCisKKyNpZiBQTEFURk9STShJT1MpCisg
ICAgYm9vbCBhbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHkoKSB7IHJldHVybiBtX2Fsd2F5
c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eTsgfQorICAgIHZvaWQgc2V0QWx3YXlzUnVuc0F0Rm9y
ZWdyb3VuZFByaW9yaXR5KGJvb2wgYWx3YXlzUnVuc0F0Rm9yZWdyb3VuZFByaW9yaXR5KSB7IG1f
YWx3YXlzUnVuc0F0Rm9yZWdyb3VuZFByaW9yaXR5ID0gYWx3YXlzUnVuc0F0Rm9yZWdyb3VuZFBy
aW9yaXR5OyB9IAorI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgUGFnZUNvbmZpZ3VyYXRpb24oKTsK
IAogICAgIFJlZlB0cjxXZWJLaXQ6OldlYlByb2Nlc3NQb29sPiBtX3Byb2Nlc3NQb29sOwogICAg
IFJlZlB0cjxXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5PiBtX3VzZXJDb250
ZW50Q29udHJvbGxlcjsKICAgICBSZWZQdHI8V2ViS2l0OjpXZWJQYWdlR3JvdXA+IG1fcGFnZUdy
b3VwOwogICAgIFJlZlB0cjxXZWJLaXQ6OldlYlByZWZlcmVuY2VzPiBtX3ByZWZlcmVuY2VzOwor
ICAgIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWVNYXAgbV9wcmVmZXJlbmNlVmFs
dWVzOwogICAgIFJlZlB0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4gbV9yZWxhdGVkUGFnZTsKKyAg
ICBSZWZQdHI8V2ViS2l0OjpWaXNpdGVkTGlua1Byb3ZpZGVyPiBtX3Zpc2l0ZWRMaW5rUHJvdmlk
ZXI7CisKKyAgICBSZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4gbV93ZWJzaXRlRGF0YVN0b3JlOwor
ICAgIC8vIEZJWE1FOiBXZSBjdXJyZW50bHkgaGF2ZSB0byBwYXNzIHRoZSBzZXNzaW9uIElEIHNl
cGFyYXRlbHkgaGVyZSB0byBzdXBwb3J0IHRoZSBsZWdhY3kgcHJpdmF0ZSBicm93c2luZyBzZXNz
aW9uLgorICAgIC8vIE9uY2Ugd2UgZ2V0IHJpZCBvZiBpdCB3ZSBzaG91bGQgZ2V0IHJpZCBvZiB0
aGlzIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyIGFzIHdlbGwuCisgICAgV2ViQ29yZTo6U2Vzc2lv
bklEIG1fc2Vzc2lvbklEOworCisgICAgYm9vbCBtX3RyZWF0c1NIQTFTaWduZWRDZXJ0aWZpY2F0
ZXNBc0luc2VjdXJlID0gZmFsc2U7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIGJvb2wgbV9hbHdh
eXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHkgPSBmYWxzZTsKKyNlbmRpZgogfTsKIAogfSAvLyBu
YW1lc3BhY2UgQVBJCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdl
LmNwcAkocmV2aXNpb24gMTg4MTI1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJB
UElOYXZpZ2F0aW9uQWN0aW9uLmgiCiAjaW5jbHVkZSAiQVBJTmF2aWdhdGlvbkNsaWVudC5oIgog
I2luY2x1ZGUgIkFQSU5hdmlnYXRpb25SZXNwb25zZS5oIgorI2luY2x1ZGUgIkFQSVBhZ2VDb25m
aWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiQVBJUG9saWN5Q2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJ
U2Vzc2lvblN0YXRlLmgiCiAjaW5jbHVkZSAiQVBJVUlDbGllbnQuaCIKQEAgLTEyNyw2ICsxMjgs
MTIgQEAgV0tQYWdlR3JvdXBSZWYgV0tQYWdlR2V0UGFnZUdyb3VwKFdLUGFnZQogICAgIHJldHVy
biB0b0FQSSgmdG9JbXBsKHBhZ2VSZWYpLT5wYWdlR3JvdXAoKSk7CiB9CiAKK1dLUGFnZUNvbmZp
Z3VyYXRpb25SZWYgV0tQYWdlQ29weVBhZ2VDb25maWd1cmF0aW9uKFdLUGFnZVJlZiBwYWdlUmVm
KQoreworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IHRvSW1wbChwYWdlUmVmKS0+Y29uZmlndXJh
dGlvbigpLmNvcHkoKTsKKyAgICByZXR1cm4gdG9BUEkoJmNvbmZpZ3VyYXRpb24ubGVha1JlZigp
KTsKK30KKwogdm9pZCBXS1BhZ2VMb2FkVVJMKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1VSTFJlZiBV
UkxSZWYpCiB7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5sb2FkUmVxdWVzdChVUkwoVVJMKCksIHRv
V1RGU3RyaW5nKFVSTFJlZikpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS1BhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tQYWdlLmgJKHJldmlzaW9uIDE4ODEyNSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTksOCBAQCBXS19FWFBPUlQg
V0tUeXBlSUQgV0tQYWdlR2V0VHlwZUlEKCk7CiBXS19FWFBPUlQgV0tDb250ZXh0UmVmIFdLUGFn
ZUdldENvbnRleHQoV0tQYWdlUmVmIHBhZ2UpOwogV0tfRVhQT1JUIFdLUGFnZUdyb3VwUmVmIFdL
UGFnZUdldFBhZ2VHcm91cChXS1BhZ2VSZWYgcGFnZSk7CiAKK1dLX0VYUE9SVCBXS1BhZ2VDb25m
aWd1cmF0aW9uUmVmIFdLUGFnZUNvcHlQYWdlQ29uZmlndXJhdGlvbihXS1BhZ2VSZWYgcGFnZSk7
CisKIC8vIFVSTCBSZXF1ZXN0cwogV0tfRVhQT1JUIHZvaWQgV0tQYWdlTG9hZFVSTChXS1BhZ2VS
ZWYgcGFnZSwgV0tVUkxSZWYgdXJsKTsKIFdLX0VYUE9SVCB2b2lkIFdLUGFnZUxvYWRVUkxXaXRo
VXNlckRhdGEoV0tQYWdlUmVmIHBhZ2UsIFdLVVJMUmVmIHVybCwgV0tUeXBlUmVmIHVzZXJEYXRh
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VDb25maWd1cmF0
aW9uUmVmLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tQYWdlQ29uZmlndXJhdGlvblJlZi5jcHAJKHJldmlzaW9uIDE4ODEyNSkKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VDb25maWd1cmF0aW9uUmVmLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTMsMyArOTMsMTMgQEAgdm9pZCBXS1BhZ2VDb25maWd1cmF0aW9uU2V0UmVs
YXRlZFBhZ2UoVwogewogICAgIHRvSW1wbChjb25maWd1cmF0aW9uKS0+c2V0UmVsYXRlZFBhZ2Uo
dG9JbXBsKHJlbGF0ZWRQYWdlKSk7CiB9CisKK1dLV2Vic2l0ZURhdGFTdG9yZVJlZiBXS1BhZ2VD
b25maWd1cmF0aW9uR2V0V2Vic2l0ZURhdGFTdG9yZShXS1BhZ2VDb25maWd1cmF0aW9uUmVmIGNv
bmZpZ3VyYXRpb24pCit7CisgICAgcmV0dXJuIHRvQVBJKHRvSW1wbChjb25maWd1cmF0aW9uKS0+
d2Vic2l0ZURhdGFTdG9yZSgpKTsKK30KKwordm9pZCBXS1BhZ2VDb25maWd1cmF0aW9uU2V0V2Vi
c2l0ZURhdGFTdG9yZShXS1BhZ2VDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24sIFdLV2Vi
c2l0ZURhdGFTdG9yZVJlZiB3ZWJzaXRlRGF0YVN0b3JlKQoreworICAgIHRvSW1wbChjb25maWd1
cmF0aW9uKS0+c2V0V2Vic2l0ZURhdGFTdG9yZSh0b0ltcGwod2Vic2l0ZURhdGFTdG9yZSkpOwor
fQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUNvbmZpZ3VyYXRp
b25SZWYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQ
YWdlQ29uZmlndXJhdGlvblJlZi5oCShyZXZpc2lvbiAxODgxMjUpCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlQ29uZmlndXJhdGlvblJlZi5oCSh3b3JraW5nIGNvcHkp
CkBAIC01MSw2ICs1MSw5IEBAIFdLX0VYUE9SVCB2b2lkIFdLUGFnZUNvbmZpZ3VyYXRpb25TZXRQ
cmUKIFdLX0VYUE9SVCBXS1BhZ2VSZWYgV0tQYWdlQ29uZmlndXJhdGlvbkdldFJlbGF0ZWRQYWdl
KFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbik7CiBXS19FWFBPUlQgdm9pZCBX
S1BhZ2VDb25maWd1cmF0aW9uU2V0UmVsYXRlZFBhZ2UoV0tQYWdlQ29uZmlndXJhdGlvblJlZiBj
b25maWd1cmF0aW9uLCBXS1BhZ2VSZWYgcmVsYXRlZFBhZ2UpOwogCitXS19FWFBPUlQgV0tXZWJz
aXRlRGF0YVN0b3JlUmVmIFdLUGFnZUNvbmZpZ3VyYXRpb25HZXRXZWJzaXRlRGF0YVN0b3JlKFdL
UGFnZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbik7CitXS19FWFBPUlQgdm9pZCBXS1Bh
Z2VDb25maWd1cmF0aW9uU2V0V2Vic2l0ZURhdGFTdG9yZShXS1BhZ2VDb25maWd1cmF0aW9uUmVm
IGNvbmZpZ3VyYXRpb24sIFdLV2Vic2l0ZURhdGFTdG9yZVJlZiB3ZWJzaXRlRGF0YVN0b3JlKTsK
KwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCShyZXZpc2lvbiAxODgxMjUpCisr
KyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2lmIFdLX0FQSV9FTkFCTEVECiAKICNpbXBvcnQg
IkFQSUZvcm1DbGllbnQuaCIKKyNpbXBvcnQgIkFQSVBhZ2VDb25maWd1cmF0aW9uLmgiCiAjaW1w
b3J0ICJBUElTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbXBvcnQgIkNvbXBsZXRpb25IYW5k
bGVyQ2FsbENoZWNrZXIuaCIKICNpbXBvcnQgIkRpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmgiCkBA
IC0zMDAsMzYgKzMwMSwzOCBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0
KWZyCiAgICAgQ0dSZWN0IGJvdW5kcyA9IHNlbGYuYm91bmRzOwogCiAgICAgV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wgPSAqW19jb25maWd1cmF0aW9uIHByb2Nlc3NQb29sXS0+
X3Byb2Nlc3NQb29sOworICAgIAorICAgIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiBwYWdl
Q29uZmlndXJhdGlvbiA9IEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOwogCi0gICAg
V2ViS2l0OjpXZWJQYWdlQ29uZmlndXJhdGlvbiB3ZWJQYWdlQ29uZmlndXJhdGlvbjsKLSAgICB3
ZWJQYWdlQ29uZmlndXJhdGlvbi5wcmVmZXJlbmNlcyA9IFtfY29uZmlndXJhdGlvbiBwcmVmZXJl
bmNlc10tPl9wcmVmZXJlbmNlcy5nZXQoKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UHJv
Y2Vzc1Bvb2woJnByb2Nlc3NQb29sKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UHJlZmVy
ZW5jZXMoW19jb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXS0+X3ByZWZlcmVuY2VzLmdldCgpKTsK
ICAgICBpZiAoV0tXZWJWaWV3ICpyZWxhdGVkV2ViVmlldyA9IFtfY29uZmlndXJhdGlvbiBfcmVs
YXRlZFdlYlZpZXddKQotICAgICAgICB3ZWJQYWdlQ29uZmlndXJhdGlvbi5yZWxhdGVkUGFnZSA9
IHJlbGF0ZWRXZWJWaWV3LT5fcGFnZS5nZXQoKTsKKyAgICAgICAgcGFnZUNvbmZpZ3VyYXRpb24t
PnNldFJlbGF0ZWRQYWdlKHJlbGF0ZWRXZWJWaWV3LT5fcGFnZS5nZXQoKSk7CiAKLSAgICB3ZWJQ
YWdlQ29uZmlndXJhdGlvbi51c2VyQ29udGVudENvbnRyb2xsZXIgPSBbX2NvbmZpZ3VyYXRpb24g
dXNlckNvbnRlbnRDb250cm9sbGVyXS0+X3VzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmdldCgp
OwotICAgIHdlYlBhZ2VDb25maWd1cmF0aW9uLnZpc2l0ZWRMaW5rUHJvdmlkZXIgPSBbX2NvbmZp
Z3VyYXRpb24gX3Zpc2l0ZWRMaW5rUHJvdmlkZXJdLT5fdmlzaXRlZExpbmtQcm92aWRlci5nZXQo
KTsKLSAgICB3ZWJQYWdlQ29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlID0gJltfY29uZmln
dXJhdGlvbiB3ZWJzaXRlRGF0YVN0b3JlXS0+X3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRh
U3RvcmUoKTsKLSAgICB3ZWJQYWdlQ29uZmlndXJhdGlvbi5zZXNzaW9uSUQgPSB3ZWJQYWdlQ29u
ZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlLT5zZXNzaW9uSUQoKTsKLSAgICB3ZWJQYWdlQ29u
ZmlndXJhdGlvbi50cmVhdHNTSEExU2lnbmVkQ2VydGlmaWNhdGVzQXNJbnNlY3VyZSA9IFtfY29u
ZmlndXJhdGlvbiBfdHJlYXRzU0hBMVNpZ25lZENlcnRpZmljYXRlc0FzSW5zZWN1cmVdOworICAg
IHBhZ2VDb25maWd1cmF0aW9uLT5zZXRVc2VyQ29udGVudENvbnRyb2xsZXIoW19jb25maWd1cmF0
aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0tPl91c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5n
ZXQoKSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFZpc2l0ZWRMaW5rUHJvdmlkZXIoW19j
b25maWd1cmF0aW9uIF92aXNpdGVkTGlua1Byb3ZpZGVyXS0+X3Zpc2l0ZWRMaW5rUHJvdmlkZXIu
Z2V0KCkpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRXZWJzaXRlRGF0YVN0b3JlKFtfY29u
ZmlndXJhdGlvbiB3ZWJzaXRlRGF0YVN0b3JlXS0+X3dlYnNpdGVEYXRhU3RvcmUuZ2V0KCkpOwor
ICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRTZXNzaW9uSUQocGFnZUNvbmZpZ3VyYXRpb24tPndl
YnNpdGVEYXRhU3RvcmUoKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Npb25JRCgpKTsKKyAgICBw
YWdlQ29uZmlndXJhdGlvbi0+c2V0VHJlYXRzU0hBMVNpZ25lZENlcnRpZmljYXRlc0FzSW5zZWN1
cmUoW19jb25maWd1cmF0aW9uIF90cmVhdHNTSEExU2lnbmVkQ2VydGlmaWNhdGVzQXNJbnNlY3Vy
ZV0pOwogCiAgICAgUmVmUHRyPFdlYktpdDo6V2ViUGFnZUdyb3VwPiBwYWdlR3JvdXA7CiAgICAg
TlNTdHJpbmcgKmdyb3VwSWRlbnRpZmllciA9IGNvbmZpZ3VyYXRpb24uX2dyb3VwSWRlbnRpZmll
cjsKICAgICBpZiAoZ3JvdXBJZGVudGlmaWVyLmxlbmd0aCkgewogICAgICAgICBwYWdlR3JvdXAg
PSBXZWJLaXQ6OldlYlBhZ2VHcm91cDo6Y3JlYXRlKGNvbmZpZ3VyYXRpb24uX2dyb3VwSWRlbnRp
Zmllcik7Ci0gICAgICAgIHdlYlBhZ2VDb25maWd1cmF0aW9uLnBhZ2VHcm91cCA9IHBhZ2VHcm91
cC5nZXQoKTsKKyAgICAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFBhZ2VHcm91cChwYWdlR3Jv
dXAuZ2V0KCkpOwogICAgIH0KIAotICAgIHdlYlBhZ2VDb25maWd1cmF0aW9uLnByZWZlcmVuY2VW
YWx1ZXMuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OnN1cHByZXNzZXNJbmNyZW1lbnRh
bFJlbmRlcmluZ0tleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKCEhW19j
b25maWd1cmF0aW9uIHN1cHByZXNzZXNJbmNyZW1lbnRhbFJlbmRlcmluZ10pKTsKKyAgICBwYWdl
Q29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVu
Y2VzS2V5OjpzdXBwcmVzc2VzSW5jcmVtZW50YWxSZW5kZXJpbmdLZXkoKSwgV2ViS2l0OjpXZWJQ
cmVmZXJlbmNlc1N0b3JlOjpWYWx1ZSghIVtfY29uZmlndXJhdGlvbiBzdXBwcmVzc2VzSW5jcmVt
ZW50YWxSZW5kZXJpbmddKSk7CiAKICNpZiBQTEFURk9STShJT1MpCi0gICAgd2ViUGFnZUNvbmZp
Z3VyYXRpb24uYWx3YXlzUnVuc0F0Rm9yZWdyb3VuZFByaW9yaXR5ID0gW19jb25maWd1cmF0aW9u
IF9hbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHldOworICAgIHBhZ2VDb25maWd1cmF0aW9u
LT5zZXRBbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHkoW19jb25maWd1cmF0aW9uIF9hbHdh
eXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHldKTsKIAotICAgIHdlYlBhZ2VDb25maWd1cmF0aW9u
LnByZWZlcmVuY2VWYWx1ZXMuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OmFsbG93c0lu
bGluZU1lZGlhUGxheWJhY2tLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1
ZSghIVtfY29uZmlndXJhdGlvbiBhbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrXSkpOwotICAgIHdl
YlBhZ2VDb25maWd1cmF0aW9uLnByZWZlcmVuY2VWYWx1ZXMuc2V0KFdlYktpdDo6V2ViUHJlZmVy
ZW5jZXNLZXk6OmFsbG93c1BpY3R1cmVJblBpY3R1cmVNZWRpYVBsYXliYWNrS2V5KCksIFdlYktp
dDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoISFbX2NvbmZpZ3VyYXRpb24gYWxsb3dzUGlj
dHVyZUluUGljdHVyZU1lZGlhUGxheWJhY2tdICYmIHNob3VsZEFsbG93UGljdHVyZUluUGljdHVy
ZU1lZGlhUGxheWJhY2soKSkpOwotICAgIHdlYlBhZ2VDb25maWd1cmF0aW9uLnByZWZlcmVuY2VW
YWx1ZXMuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OnJlcXVpcmVzVXNlckdlc3R1cmVG
b3JNZWRpYVBsYXliYWNrS2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUo
ISFbX2NvbmZpZ3VyYXRpb24gcmVxdWlyZXNVc2VyQWN0aW9uRm9yTWVkaWFQbGF5YmFja10pKTsK
KyAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6Oldl
YlByZWZlcmVuY2VzS2V5OjphbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrS2V5KCksIFdlYktpdDo6
V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoISFbX2NvbmZpZ3VyYXRpb24gYWxsb3dzSW5saW5l
TWVkaWFQbGF5YmFja10pKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVl
cygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5OjphbGxvd3NQaWN0dXJlSW5QaWN0dXJl
TWVkaWFQbGF5YmFja0tleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKCEh
W19jb25maWd1cmF0aW9uIGFsbG93c1BpY3R1cmVJblBpY3R1cmVNZWRpYVBsYXliYWNrXSAmJiBz
aG91bGRBbGxvd1BpY3R1cmVJblBpY3R1cmVNZWRpYVBsYXliYWNrKCkpKTsKKyAgICBwYWdlQ29u
ZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2Vz
S2V5OjpyZXF1aXJlc1VzZXJHZXN0dXJlRm9yTWVkaWFQbGF5YmFja0tleSgpLCBXZWJLaXQ6Oldl
YlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKCEhW19jb25maWd1cmF0aW9uIHJlcXVpcmVzVXNlckFj
dGlvbkZvck1lZGlhUGxheWJhY2tdKSk7CiAjZW5kaWYKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExB
WUJBQ0tfVEFSR0VUKQotICAgIHdlYlBhZ2VDb25maWd1cmF0aW9uLnByZWZlcmVuY2VWYWx1ZXMu
c2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OmFsbG93c0FpclBsYXlGb3JNZWRpYVBsYXli
YWNrS2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoISFbX2NvbmZpZ3Vy
YXRpb24gYWxsb3dzQWlyUGxheUZvck1lZGlhUGxheWJhY2tdKSk7CisgICAgcGFnZUNvbmZpZ3Vy
YXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6
YWxsb3dzQWlyUGxheUZvck1lZGlhUGxheWJhY2tLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNl
c1N0b3JlOjpWYWx1ZSghIVtfY29uZmlndXJhdGlvbiBhbGxvd3NBaXJQbGF5Rm9yTWVkaWFQbGF5
YmFja10pKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtMzM5LDcgKzM0Miw3IEBA
IC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihDR1JlY3QpZnIKIAogICAgIFtzZWxmIGFk
ZFN1YnZpZXc6X3Njcm9sbFZpZXcuZ2V0KCldOwogCi0gICAgX2NvbnRlbnRWaWV3ID0gYWRvcHRO
UyhbW1dLQ29udGVudFZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Ym91bmRzIHByb2Nlc3NQb29s
OnByb2Nlc3NQb29sIGNvbmZpZ3VyYXRpb246V1RGOjptb3ZlKHdlYlBhZ2VDb25maWd1cmF0aW9u
KSB3ZWJWaWV3OnNlbGZdKTsKKyAgICBfY29udGVudFZpZXcgPSBhZG9wdE5TKFtbV0tDb250ZW50
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpib3VuZHMgcHJvY2Vzc1Bvb2w6cHJvY2Vzc1Bvb2wg
Y29uZmlndXJhdGlvbjpXVEY6Om1vdmUocGFnZUNvbmZpZ3VyYXRpb24pIHdlYlZpZXc6c2VsZl0p
OwogCiAgICAgX3BhZ2UgPSBbX2NvbnRlbnRWaWV3IHBhZ2VdOwogICAgIF9wYWdlLT5zZXREZXZp
Y2VPcmllbnRhdGlvbihkZXZpY2VPcmllbnRhdGlvbigpKTsKQEAgLTM2Nyw3ICszNzAsNyBAQCAt
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyCiAjZW5kaWYKIAogI2lmIFBM
QVRGT1JNKE1BQykKLSAgICBfd2tWaWV3ID0gYWRvcHROUyhbW1dLVmlldyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpib3VuZHMgcHJvY2Vzc1Bvb2w6cHJvY2Vzc1Bvb2wgY29uZmlndXJhdGlvbjpXVEY6
Om1vdmUod2ViUGFnZUNvbmZpZ3VyYXRpb24pIHdlYlZpZXc6c2VsZl0pOworICAgIF93a1ZpZXcg
PSBhZG9wdE5TKFtbV0tWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOmJvdW5kcyBwcm9jZXNzUG9v
bDpwcm9jZXNzUG9vbCBjb25maWd1cmF0aW9uOldURjo6bW92ZShwYWdlQ29uZmlndXJhdGlvbikg
d2ViVmlldzpzZWxmXSk7CiAgICAgW3NlbGYgYWRkU3Vidmlldzpfd2tWaWV3LmdldCgpXTsKICAg
ICBfcGFnZSA9IFdlYktpdDo6dG9JbXBsKFtfd2tWaWV3IHBhZ2VSZWZdKTsKIApJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9pb3MvV0tWaWV3SU9TLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvaW9zL1dLVmlld0lPUy5tbQkocmV2aXNpb24g
MTg4MTI1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9pb3MvV0tWaWV3SU9TLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0yMjUsMTEgKzIyNSwxMiBAQCAtICh2b2lkKV9jb21tb25Jbml0
aWFsaXphdGlvbldpdGhDb250ZXh0CiAKICAgICBbc2VsZiBhZGRTdWJ2aWV3Ol9zY3JvbGxWaWV3
LmdldCgpXTsKIAotICAgIFdlYktpdDo6V2ViUGFnZUNvbmZpZ3VyYXRpb24gd2ViUGFnZUNvbmZp
Z3VyYXRpb247Ci0gICAgd2ViUGFnZUNvbmZpZ3VyYXRpb24ucGFnZUdyb3VwID0gdG9JbXBsKHBh
Z2VHcm91cFJlZik7Ci0gICAgd2ViUGFnZUNvbmZpZ3VyYXRpb24ucmVsYXRlZFBhZ2UgPSB0b0lt
cGwocmVsYXRlZFBhZ2UpOworICAgIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiBjb25maWd1
cmF0aW9uID0gQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7CisgICAgY29uZmlndXJh
dGlvbi0+c2V0UHJvY2Vzc1Bvb2wodG9JbXBsKGNvbnRleHRSZWYpKTsKKyAgICBjb25maWd1cmF0
aW9uLT5zZXRQYWdlR3JvdXAodG9JbXBsKHBhZ2VHcm91cFJlZikpOworICAgIGNvbmZpZ3VyYXRp
b24tPnNldFJlbGF0ZWRQYWdlKHRvSW1wbChyZWxhdGVkUGFnZSkpOwogCi0gICAgX2NvbnRlbnRW
aWV3ID0gYWRvcHROUyhbW1dLQ29udGVudFZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Ym91bmRz
IHByb2Nlc3NQb29sOip0b0ltcGwoY29udGV4dFJlZikgY29uZmlndXJhdGlvbjpXVEY6Om1vdmUo
d2ViUGFnZUNvbmZpZ3VyYXRpb24pIHdrVmlldzpzZWxmXSk7CisgICAgX2NvbnRlbnRWaWV3ID0g
YWRvcHROUyhbW1dLQ29udGVudFZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Ym91bmRzIHByb2Nl
c3NQb29sOip0b0ltcGwoY29udGV4dFJlZikgY29uZmlndXJhdGlvbjpXVEY6Om1vdmUoY29uZmln
dXJhdGlvbikgd2tWaWV3OnNlbGZdKTsKIAogICAgIFtbX2NvbnRlbnRWaWV3IGxheWVyXSBzZXRB
bmNob3JQb2ludDpDR1BvaW50WmVyb107CiAgICAgW19jb250ZW50VmlldyBzZXRGcmFtZTpib3Vu
ZHNdOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQko
cmV2aXNpb24gMTg4MTI1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tW
aWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNzQ0LDcgKzM3NDQsNyBAQCAtICh2b2lkKV9zZXRQ
cmltYXJ5VHJhY2tpbmdBcmVhOihOU1RyYWNrCiAgICAgW3NlbGYgYWRkVHJhY2tpbmdBcmVhOnRy
YWNraW5nQXJlYV07CiB9CiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihOU1JlY3Qp
ZnJhbWUgcHJvY2Vzc1Bvb2w6KFdlYlByb2Nlc3NQb29sJilwcm9jZXNzUG9vbCBjb25maWd1cmF0
aW9uOihXZWJQYWdlQ29uZmlndXJhdGlvbil3ZWJQYWdlQ29uZmlndXJhdGlvbiB3ZWJWaWV3OihX
S1dlYlZpZXcgKil3ZWJWaWV3CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooTlNSZWN0
KWZyYW1lIHByb2Nlc3NQb29sOihXZWJQcm9jZXNzUG9vbCYpcHJvY2Vzc1Bvb2wgY29uZmlndXJh
dGlvbjooUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpY29uZmlndXJhdGlvbiB3ZWJWaWV3
OihXS1dlYlZpZXcgKil3ZWJWaWV3CiB7CiAgICAgc2VsZiA9IFtzdXBlciBpbml0V2l0aEZyYW1l
OmZyYW1lXTsKICAgICBpZiAoIXNlbGYpCkBAIC0zNzY2LDcgKzM3NjYsNyBAQCAtIChpbnN0YW5j
ZXR5cGUpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyCiAgICAgW3NlbGYgYWRkVHJhY2tpbmdBcmVh
Ol9kYXRhLT5fcHJpbWFyeVRyYWNraW5nQXJlYS5nZXQoKV07CiAKICAgICBfZGF0YS0+X3BhZ2VD
bGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VDbGllbnRJbXBsPihzZWxmLCB3ZWJWaWV3KTsK
LSAgICBfZGF0YS0+X3BhZ2UgPSBwcm9jZXNzUG9vbC5jcmVhdGVXZWJQYWdlKCpfZGF0YS0+X3Bh
Z2VDbGllbnQsIFdURjo6bW92ZSh3ZWJQYWdlQ29uZmlndXJhdGlvbikpOworICAgIF9kYXRhLT5f
cGFnZSA9IHByb2Nlc3NQb29sLmNyZWF0ZVdlYlBhZ2UoKl9kYXRhLT5fcGFnZUNsaWVudCwgV1RG
Ojptb3ZlKGNvbmZpZ3VyYXRpb24pKTsKICAgICBfZGF0YS0+X3BhZ2UtPnNldEFkZHNWaXNpdGVk
TGlua3MocHJvY2Vzc1Bvb2wuaGlzdG9yeUNsaWVudCgpLmFkZHNWaXNpdGVkTGlua3MoKSk7CiAK
ICAgICBfZGF0YS0+X3BhZ2UtPnNldEludHJpbnNpY0RldmljZVNjYWxlRmFjdG9yKFtzZWxmIF9p
bnRyaW5zaWNEZXZpY2VTY2FsZUZhY3Rvcl0pOwpAQCAtMzk5NCwxOSArMzk5NCwyMCBAQCAtIChp
ZClpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUgY29udGV4CiAKIC0gKGlkKWluaXRXaXRoRnJh
bWU6KE5TUmVjdClmcmFtZSBjb250ZXh0UmVmOihXS0NvbnRleHRSZWYpY29udGV4dFJlZiBwYWdl
R3JvdXBSZWY6KFdLUGFnZUdyb3VwUmVmKXBhZ2VHcm91cFJlZiByZWxhdGVkVG9QYWdlOihXS1Bh
Z2VSZWYpcmVsYXRlZFBhZ2UKIHsKLSAgICBXZWJQYWdlQ29uZmlndXJhdGlvbiB3ZWJQYWdlQ29u
ZmlndXJhdGlvbjsKLSAgICB3ZWJQYWdlQ29uZmlndXJhdGlvbi5wYWdlR3JvdXAgPSB0b0ltcGwo
cGFnZUdyb3VwUmVmKTsKLSAgICB3ZWJQYWdlQ29uZmlndXJhdGlvbi5yZWxhdGVkUGFnZSA9IHRv
SW1wbChyZWxhdGVkUGFnZSk7CisgICAgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+IGNvbmZp
Z3VyYXRpb24gPSBBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKKyAgICBjb25maWd1
cmF0aW9uLT5zZXRQcm9jZXNzUG9vbCh0b0ltcGwoY29udGV4dFJlZikpOworICAgIGNvbmZpZ3Vy
YXRpb24tPnNldFBhZ2VHcm91cCh0b0ltcGwocGFnZUdyb3VwUmVmKSk7CisgICAgY29uZmlndXJh
dGlvbi0+c2V0UmVsYXRlZFBhZ2UodG9JbXBsKHJlbGF0ZWRQYWdlKSk7CiAKLSAgICByZXR1cm4g
W3NlbGYgaW5pdFdpdGhGcmFtZTpmcmFtZSBwcm9jZXNzUG9vbDoqdG9JbXBsKGNvbnRleHRSZWYp
IGNvbmZpZ3VyYXRpb246d2ViUGFnZUNvbmZpZ3VyYXRpb24gd2ViVmlldzpuaWxdOworICAgIHJl
dHVybiBbc2VsZiBpbml0V2l0aEZyYW1lOmZyYW1lIHByb2Nlc3NQb29sOip0b0ltcGwoY29udGV4
dFJlZikgY29uZmlndXJhdGlvbjpXVEY6Om1vdmUoY29uZmlndXJhdGlvbikgd2ViVmlldzpuaWxd
OwogfQogCi0tIChpZClpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUgY29uZmlndXJhdGlvblJl
ZjooV0tQYWdlQ29uZmlndXJhdGlvblJlZiljb25maWd1cmF0aW9uCistIChpZClpbml0V2l0aEZy
YW1lOihOU1JlY3QpZnJhbWUgY29uZmlndXJhdGlvblJlZjooV0tQYWdlQ29uZmlndXJhdGlvblJl
Ziljb25maWd1cmF0aW9uUmVmCiB7Ci0gICAgYXV0byYgcHJvY2Vzc1Bvb2wgPSAqdG9JbXBsKGNv
bmZpZ3VyYXRpb24pLT5wcm9jZXNzUG9vbCgpOwotICAgIGF1dG8gd2ViUGFnZUNvbmZpZ3VyYXRp
b24gPSB0b0ltcGwoY29uZmlndXJhdGlvbiktPndlYlBhZ2VDb25maWd1cmF0aW9uKCk7CisgICAg
UmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSAqdG9JbXBsKGNvbmZp
Z3VyYXRpb25SZWYpOworICAgIGF1dG8mIHByb2Nlc3NQb29sID0gKmNvbmZpZ3VyYXRpb24tPnBy
b2Nlc3NQb29sKCk7CiAKLSAgICByZXR1cm4gW3NlbGYgaW5pdFdpdGhGcmFtZTpmcmFtZSBwcm9j
ZXNzUG9vbDpwcm9jZXNzUG9vbCBjb25maWd1cmF0aW9uOndlYlBhZ2VDb25maWd1cmF0aW9uIHdl
YlZpZXc6bmlsXTsKKyAgICByZXR1cm4gW3NlbGYgaW5pdFdpdGhGcmFtZTpmcmFtZSBwcm9jZXNz
UG9vbDpwcm9jZXNzUG9vbCBjb25maWd1cmF0aW9uOldURjo6bW92ZShjb25maWd1cmF0aW9uKSB3
ZWJWaWV3Om5pbF07CiB9CiAKIC0gKEJPT0wpd2FudHNVcGRhdGVMYXllcgpJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50ZXJuYWwuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXdJbnRlcm5hbC5oCShyZXZp
c2lvbiAxODgxMjUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXdJ
bnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBACiAKIG5hbWVzcGFjZSBB
UEkgewogY2xhc3MgT2JqZWN0OworY2xhc3MgUGFnZUNvbmZpZ3VyYXRpb247CiB9CiAKIG5hbWVz
cGFjZSBJUEMgewpAQCAtNTgsNyArNTksNiBAQCBjbGFzcyBWaWV3U25hcHNob3Q7CiBjbGFzcyBX
ZWJQcm9jZXNzUG9vbDsKIHN0cnVjdCBDb2xvclNwYWNlRGF0YTsKIHN0cnVjdCBFZGl0b3JTdGF0
ZTsKLXN0cnVjdCBXZWJQYWdlQ29uZmlndXJhdGlvbjsKIH0KIAogQGNsYXNzIFdLRnVsbFNjcmVl
bldpbmRvd0NvbnRyb2xsZXI7CkBAIC02OCw5ICs2OCw3IEBAIHN0cnVjdCBXZWJQYWdlQ29uZmln
dXJhdGlvbjsKICNlbmRpZgogCiBAaW50ZXJmYWNlIFdLVmlldyAoKQotI2lmIFdLX0FQSV9FTkFC
TEVECi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lIHByb2Nlc3NQ
b29sOihXZWJLaXQ6OldlYlByb2Nlc3NQb29sJilwcm9jZXNzUG9vbCBjb25maWd1cmF0aW9uOihX
ZWJLaXQ6OldlYlBhZ2VDb25maWd1cmF0aW9uKXdlYlBhZ2VDb25maWd1cmF0aW9uIHdlYlZpZXc6
KFdLV2ViVmlldyAqKXdlYlZpZXc7Ci0jZW5kaWYKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZy
YW1lOihDR1JlY3QpZnJhbWUgcHJvY2Vzc1Bvb2w6KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmKXBy
b2Nlc3NQb29sIGNvbmZpZ3VyYXRpb246KFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKWNv
bmZpZ3VyYXRpb24gd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldzsKIAogLSAoc3RkOjp1bmlx
dWVfcHRyPFdlYktpdDo6RHJhd2luZ0FyZWFQcm94eT4pX2NyZWF0ZURyYXdpbmdBcmVhUHJveHk7
CiAtIChCT09MKV9pc0ZvY3VzZWQ7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXcuaAkocmV2aXNpb24gMTg4MTI1KQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1
LDYgQEAgY2xhc3MgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb247CiBjbGFzcyBXZWJGcmFtZVBy
b3h5OwogY2xhc3MgV2ViUGFnZVByb3h5OwogY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7Ci1zdHJ1Y3Qg
V2ViUGFnZUNvbmZpZ3VyYXRpb247CiB9CiAKIEBpbnRlcmZhY2UgV0tDb250ZW50VmlldyA6IFVJ
VmlldyB7CkBAIC02MSw4ICs2MCw4IEBAIHN0cnVjdCBXZWJQYWdlQ29uZmlndXJhdGlvbjsKIEBw
cm9wZXJ0eSAobm9uYXRvbWljLCBnZXR0ZXI9aXNTaG93aW5nSW5zcGVjdG9ySW5kaWNhdGlvbikg
Qk9PTCBzaG93aW5nSW5zcGVjdG9ySW5kaWNhdGlvbjsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBy
ZWFkb25seSkgQk9PTCBpc0JhY2tncm91bmQ7CiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZy
YW1lOihDR1JlY3QpZnJhbWUgcHJvY2Vzc1Bvb2w6KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmKXBy
b2Nlc3NQb29sIGNvbmZpZ3VyYXRpb246KFdlYktpdDo6V2ViUGFnZUNvbmZpZ3VyYXRpb24pd2Vi
UGFnZUNvbmZpZ3VyYXRpb24gd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldzsKLS0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aEZyYW1lOihDR1JlY3QpZnJhbWUgcHJvY2Vzc1Bvb2w6KFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2wmKXByb2Nlc3NQb29sIGNvbmZpZ3VyYXRpb246KFdlYktpdDo6V2ViUGFn
ZUNvbmZpZ3VyYXRpb24pd2ViUGFnZUNvbmZpZ3VyYXRpb24gd2tWaWV3OihXS1ZpZXcgKil3ZWJW
aWV3OworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KENHUmVjdClmcmFtZSBwcm9jZXNz
UG9vbDooV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYpcHJvY2Vzc1Bvb2wgY29uZmlndXJhdGlvbjoo
UmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpY29uZmlndXJhdGlvbiB3ZWJWaWV3OihXS1dl
YlZpZXcgKil3ZWJWaWV3OworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KENHUmVjdClm
cmFtZSBwcm9jZXNzUG9vbDooV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYpcHJvY2Vzc1Bvb2wgY29u
ZmlndXJhdGlvbjooUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpY29uZmlndXJhdGlvbiB3
a1ZpZXc6KFdLVmlldyAqKXdlYlZpZXc7CiAKIC0gKHZvaWQpZGlkVXBkYXRlVmlzaWJsZVJlY3Q6
KENHUmVjdCl2aXNpYmxlUmVjdCB1bm9ic2N1cmVkUmVjdDooQ0dSZWN0KXVub2JzY3VyZWRSZWN0
CiAgICAgdW5vYnNjdXJlZFJlY3RJblNjcm9sbFZpZXdDb29yZGluYXRlczooQ0dSZWN0KXVub2Jz
Y3VyZWRSZWN0SW5TY3JvbGxWaWV3Q29vcmRpbmF0ZXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0JKHJldmlzaW9uIDE4ODEyNSkKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQkod29ya2luZyBjb3B5
KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgUExBVEZPUk0oSU9TKQogCisjaW1wb3J0ICJBUElQ
YWdlQ29uZmlndXJhdGlvbi5oIgogI2ltcG9ydCAiQXBwbGljYXRpb25TdGF0ZVRyYWNrZXIuaCIK
ICNpbXBvcnQgIlBhZ2VDbGllbnRJbXBsSU9TLmgiCiAjaW1wb3J0ICJSZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYVByb3h5LmgiCkBAIC0xODEsMTEgKzE4MiwxMSBAQCAtIChpbnN0YW5jZXR5cGUp
aW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFwcGxpY2F0aW9u
U3RhdGVUcmFja2VyPiBfYXBwbGljYXRpb25TdGF0ZVRyYWNrZXI7CiB9CiAKLS0gKGluc3RhbmNl
dHlwZSlfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoUHJvY2Vzc1Bvb2w6KFdlYktpdDo6V2ViUHJv
Y2Vzc1Bvb2wmKXByb2Nlc3NQb29sIGNvbmZpZ3VyYXRpb246KFdlYktpdDo6V2ViUGFnZUNvbmZp
Z3VyYXRpb24pd2ViUGFnZUNvbmZpZ3VyYXRpb24KKy0gKGluc3RhbmNldHlwZSlfY29tbW9uSW5p
dGlhbGl6YXRpb25XaXRoUHJvY2Vzc1Bvb2w6KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmKXByb2Nl
c3NQb29sIGNvbmZpZ3VyYXRpb246KFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKWNvbmZp
Z3VyYXRpb24KIHsKICAgICBBU1NFUlQoX3BhZ2VDbGllbnQpOwogCi0gICAgX3BhZ2UgPSBwcm9j
ZXNzUG9vbC5jcmVhdGVXZWJQYWdlKCpfcGFnZUNsaWVudCwgV1RGOjptb3ZlKHdlYlBhZ2VDb25m
aWd1cmF0aW9uKSk7CisgICAgX3BhZ2UgPSBwcm9jZXNzUG9vbC5jcmVhdGVXZWJQYWdlKCpfcGFn
ZUNsaWVudCwgV1RGOjptb3ZlKGNvbmZpZ3VyYXRpb24pKTsKICAgICBfcGFnZS0+aW5pdGlhbGl6
ZVdlYlBhZ2UoKTsKICAgICBfcGFnZS0+c2V0SW50cmluc2ljRGV2aWNlU2NhbGVGYWN0b3IoV0tH
ZXRTY2FsZUZhY3RvckZvclNjcmVlbihbVUlTY3JlZW4gbWFpblNjcmVlbl0pKTsKICAgICBfcGFn
ZS0+c2V0VXNlRml4ZWRMYXlvdXQodHJ1ZSk7CkBAIC0yMTgsNyArMjE5LDcgQEAgLSAoaW5zdGFu
Y2V0eXBlKV9jb21tb25Jbml0aWFsaXphdGlvbldpdAogICAgIHJldHVybiBzZWxmOwogfQogCi0t
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lIHByb2Nlc3NQb29sOihX
ZWJLaXQ6OldlYlByb2Nlc3NQb29sJilwcm9jZXNzUG9vbCBjb25maWd1cmF0aW9uOihXZWJLaXQ6
OldlYlBhZ2VDb25maWd1cmF0aW9uKXdlYlBhZ2VDb25maWd1cmF0aW9uIHdlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXcKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihDR1JlY3QpZnJh
bWUgcHJvY2Vzc1Bvb2w6KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmKXByb2Nlc3NQb29sIGNvbmZp
Z3VyYXRpb246KFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKWNvbmZpZ3VyYXRpb24gd2Vi
VmlldzooV0tXZWJWaWV3ICopd2ViVmlldwogewogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5p
dFdpdGhGcmFtZTpmcmFtZV0pKQogICAgICAgICByZXR1cm4gbmlsOwpAQCAtMjI4LDEwICsyMjks
MTAgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KENHUmVjdClmcgogICAgIF9wYWdl
Q2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlQ2xpZW50SW1wbD4oc2VsZiwgd2ViVmlldyk7
CiAgICAgX3dlYlZpZXcgPSB3ZWJWaWV3OwogCi0gICAgcmV0dXJuIFtzZWxmIF9jb21tb25Jbml0
aWFsaXphdGlvbldpdGhQcm9jZXNzUG9vbDpwcm9jZXNzUG9vbCBjb25maWd1cmF0aW9uOndlYlBh
Z2VDb25maWd1cmF0aW9uXTsKKyAgICByZXR1cm4gW3NlbGYgX2NvbW1vbkluaXRpYWxpemF0aW9u
V2l0aFByb2Nlc3NQb29sOnByb2Nlc3NQb29sIGNvbmZpZ3VyYXRpb246V1RGOjptb3ZlKGNvbmZp
Z3VyYXRpb24pXTsKIH0KIAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KENHUmVjdClm
cmFtZSBwcm9jZXNzUG9vbDooV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYpcHJvY2Vzc1Bvb2wgY29u
ZmlndXJhdGlvbjooV2ViS2l0OjpXZWJQYWdlQ29uZmlndXJhdGlvbil3ZWJQYWdlQ29uZmlndXJh
dGlvbiB3a1ZpZXc6KFdLVmlldyAqKXdrVmlldworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJh
bWU6KENHUmVjdClmcmFtZSBwcm9jZXNzUG9vbDooV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYpcHJv
Y2Vzc1Bvb2wgY29uZmlndXJhdGlvbjooUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpY29u
ZmlndXJhdGlvbiB3a1ZpZXc6KFdLVmlldyAqKXdrVmlldwogewogICAgIGlmICghKHNlbGYgPSBb
c3VwZXIgaW5pdFdpdGhGcmFtZTpmcmFtZV0pKQogICAgICAgICByZXR1cm4gbmlsOwpAQCAtMjQw
LDcgKzI0MSw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihDR1JlY3QpZnIKIAog
ICAgIF9wYWdlQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlQ2xpZW50SW1wbD4oc2VsZiwg
d2tWaWV3KTsKIAotICAgIHJldHVybiBbc2VsZiBfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoUHJv
Y2Vzc1Bvb2w6cHJvY2Vzc1Bvb2wgY29uZmlndXJhdGlvbjp3ZWJQYWdlQ29uZmlndXJhdGlvbl07
CisgICAgcmV0dXJuIFtzZWxmIF9jb21tb25Jbml0aWFsaXphdGlvbldpdGhQcm9jZXNzUG9vbDpw
cm9jZXNzUG9vbCBjb25maWd1cmF0aW9uOldURjo6bW92ZShjb25maWd1cmF0aW9uKV07CiB9CiAK
IC0gKHZvaWQpZGVhbGxvYwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258574</attachid>
            <date>2015-08-08 14:24:33 -0700</date>
            <delta_ts>2015-08-08 14:25:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147811-20150808142421.patch</filename>
            <type>text/plain</type>
            <size>49500</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4ODE5MCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg1IEBACisyMDE1LTA4LTA4ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVwbGFjZSBXZWJQYWdlQ29uZmlndXJh
dGlvbiB3aXRoIEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24gYW5kIGV4cG9zZSBhIEMtU1BJIGFjY2Vz
c29yIGZvciBpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQ3ODExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgLSBBZGRzIHRoZSBtaXNzaW5nIHBpZWNlcyBmcm9tIFdlYlBhZ2VDb25maWd1cmF0aW9uIGlu
dG8gQVBJOjpQYWdlQ29uZmlndXJhdGlvbi4KKyAgICAgICAgLSBBZGRzIEMtU1BJIHRvIHNldCBh
bmQgZ2V0IHRoZSBXZWJzaXRlRGF0YVN0b3JlIG9uIHRoZSBXS1BhZ2VDb25maWd1cmF0aW9uUmVm
LgorICAgICAgICAtIFVzZXMgQVBJOjpQYWdlQ29uZmlndXJhdGlvbiB0byBwYXNzIGNvbmZpZ3Vy
YXRpb24gaW5mb3JtYXRpb24gZnJvbSBXS1dlYlZpZXcvV0tWaWV3IAorICAgICAgICAgIHRvIFdl
YlBhZ2VQcm94eS4KKyAgICAgICAgLSBTdG9yZXMgdGhlIEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24g
b24gdGhlIFdlYlBhZ2VQcm94eSBhbmQgZXhwb3NlcyBhIG5ldyBDLVNQSSBmdW5jdGlvbiwKKyAg
ICAgICAgICBXS1BhZ2VDb3B5UGFnZUNvbmZpZ3VyYXRpb24sIHRvIGdldCBhIGNvcHkgb2YgaXQu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcDoKKyAg
ICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChBUEk6OlBh
Z2VDb25maWd1cmF0aW9uOjpQYWdlQ29uZmlndXJhdGlvbik6CisgICAgICAgIChBUEk6OlBhZ2VD
b25maWd1cmF0aW9uOjp+UGFnZUNvbmZpZ3VyYXRpb24pOgorICAgICAgICAoQVBJOjpQYWdlQ29u
ZmlndXJhdGlvbjo6Y29weSk6CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpwcm9j
ZXNzUG9vbCk6CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpzZXRSZWxhdGVkUGFn
ZSk6CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjp2aXNpdGVkTGlua1Byb3ZpZGVy
KToKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OnNldFZpc2l0ZWRMaW5rUHJvdmlk
ZXIpOgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6d2Vic2l0ZURhdGFTdG9yZSk6
CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpzZXRXZWJzaXRlRGF0YVN0b3JlKToK
KyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OnNlc3Npb25JRCk6CisgICAgICAgIChB
UEk6OlBhZ2VDb25maWd1cmF0aW9uOjpzZXRTZXNzaW9uSUQpOgorICAgICAgICAoQVBJOjpQYWdl
Q29uZmlndXJhdGlvbjo6d2ViUGFnZUNvbmZpZ3VyYXRpb24pOiBEZWxldGVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKEFQSTo6UGFn
ZUNvbmZpZ3VyYXRpb246OnByZWZlcmVuY2VWYWx1ZXMpOgorICAgICAgICAoQVBJOjpQYWdlQ29u
ZmlndXJhdGlvbjo6dHJlYXRzU0hBMVNpZ25lZENlcnRpZmljYXRlc0FzSW5zZWN1cmUpOgorICAg
ICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6c2V0VHJlYXRzU0hBMVNpZ25lZENlcnRpZmlj
YXRlc0FzSW5zZWN1cmUpOgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6YWx3YXlz
UnVuc0F0Rm9yZWdyb3VuZFByaW9yaXR5KToKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRp
b246OnNldEFsd2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eSk6CisgICAgICAgIChBUEk6OlBh
Z2VDb25maWd1cmF0aW9uOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdlR2V0UGFnZUdyb3VwKToKKyAgICAgICAg
KFdLUGFnZUNvcHlQYWdlQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXS1BhZ2VMb2FkVVJMKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLUGFnZUNvbmZpZ3VyYXRpb25SZWYuY3BwOgorICAgICAgICAoV0tQYWdlQ29uZmln
dXJhdGlvblNldFJlbGF0ZWRQYWdlKToKKyAgICAgICAgKFdLUGFnZUNvbmZpZ3VyYXRpb25HZXRX
ZWJzaXRlRGF0YVN0b3JlKToKKyAgICAgICAgKFdLUGFnZUNvbmZpZ3VyYXRpb25TZXRXZWJzaXRl
RGF0YVN0b3JlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlQ29uZmlndXJhdGlv
blJlZi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAg
ICAgICAoLVtXS1dlYlZpZXcgaW5pdFdpdGhGcmFtZTpjb25maWd1cmF0aW9uOl0pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvaW9zL1dLVmlld0lPUy5tbToKKyAgICAgICAgKC1bV0tWaWV3IF9j
b21tb25Jbml0aWFsaXphdGlvbldpdGhDb250ZXh0UmVmOnBhZ2VHcm91cFJlZjpyZWxhdGVkVG9Q
YWdlOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbToKKyAgICAgICAg
KC1bV0tWaWV3IF9zZXRQcmltYXJ5VHJhY2tpbmdBcmVhOl0pOgorICAgICAgICAoLVtXS1ZpZXcg
aW5pdFdpdGhGcmFtZTpwcm9jZXNzUG9vbDpjb25maWd1cmF0aW9uOndlYlZpZXc6XSk6CisgICAg
ICAgICgtW1dLVmlldyBpbml0V2l0aEZyYW1lOmNvbnRleHRSZWY6cGFnZUdyb3VwUmVmOnJlbGF0
ZWRUb1BhZ2U6XSk6CisgICAgICAgICgtW1dLVmlldyBpbml0V2l0aEZyYW1lOmNvbmZpZ3VyYXRp
b25SZWY6XSk6CisgICAgICAgICgtW1dLVmlldyB3YW50c1VwZGF0ZUxheWVyXSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50ZXJuYWwuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVh
dGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6fldlYlBhZ2VQcm94eSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6Y29uZmlndXJhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6cHJvY2Vzc0lkZW50aWZpZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwYWdlSUQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNlc3Npb25JRCk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNy
ZWF0ZU5ld1dlYlByb2Nlc3NSZXNwZWN0aW5nUHJvY2Vzc0NvdW50TGltaXQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQb29sOjpkb3dubG9hZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6d2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQcm94eTo6Y3JlYXRlV2ViUGFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnByb2Nl
c3NQb29sKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW06CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aFByb2Nlc3NQb29sOmNvbmZpZ3VyYXRpb246
XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgaW5pdFdpdGhGcmFtZTpwcm9jZXNzUG9vbDpj
b25maWd1cmF0aW9uOndlYlZpZXc6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgaW5pdFdp
dGhGcmFtZTpwcm9jZXNzUG9vbDpjb25maWd1cmF0aW9uOndrVmlldzpdKToKKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyBkZWFsbG9jXSk6CisKIDIwMTUtMDgtMDcgIEZpbGlwIFBpemxvICA8ZnBp
emxvQGFwcGxlLmNvbT4KIAogICAgICAgICBMaWdodHdlaWdodCBsb2NrcyBzaG91bGQgYmUgYWRh
cHRpdmUKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShy
ZXZpc2lvbiAxODgxMjUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIkFQSU5hdmln
YXRpb25BY3Rpb24uaCIKICNpbmNsdWRlICJBUElOYXZpZ2F0aW9uQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiQVBJTmF2aWdhdGlvblJlc3BvbnNlLmgiCisjaW5jbHVkZSAiQVBJUGFnZUNvbmZpZ3VyYXRp
b24uaCIKICNpbmNsdWRlICJBUElQb2xpY3lDbGllbnQuaCIKICNpbmNsdWRlICJBUElTZWN1cml0
eU9yaWdpbi5oIgogI2luY2x1ZGUgIkFQSVVJQ2xpZW50LmgiCkBAIC0yOTMsMTMgKzI5NCwxNCBA
QCBwcml2YXRlOgogICAgIFBhZ2VDbGllbnQmIG1fcGFnZUNsaWVudDsKIH07CiAKLVJlZjxXZWJQ
YWdlUHJveHk+IFdlYlBhZ2VQcm94eTo6Y3JlYXRlKFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdl
YlByb2Nlc3NQcm94eSYgcHJvY2VzcywgdWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJQYWdlQ29u
ZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKK1JlZjxXZWJQYWdlUHJveHk+IFdlYlBhZ2VQcm94
eTo6Y3JlYXRlKFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2Vz
cywgdWludDY0X3QgcGFnZUlELCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJiBjb25maWd1
cmF0aW9uKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlBhZ2VQcm94eShwYWdlQ2xp
ZW50LCBwcm9jZXNzLCBwYWdlSUQsIGNvbmZpZ3VyYXRpb24pKTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBXZWJQYWdlUHJveHkocGFnZUNsaWVudCwgcHJvY2VzcywgcGFnZUlELCBXVEY6Om1v
dmUoY29uZmlndXJhdGlvbikpKTsKIH0KIAotV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFn
ZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCB1aW50NjRfdCBw
YWdlSUQsIGNvbnN0IFdlYlBhZ2VDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQorV2ViUGFn
ZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1By
b3h5JiBwcm9jZXNzLCB1aW50NjRfdCBwYWdlSUQsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9u
PiYmIGNvbmZpZ3VyYXRpb24pCiAgICAgOiBtX3BhZ2VDbGllbnQocGFnZUNsaWVudCkKKyAgICAs
IG1fY29uZmlndXJhdGlvbihXVEY6Om1vdmUoY29uZmlndXJhdGlvbikpCiAgICAgLCBtX2xvYWRl
ckNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6TG9hZGVyQ2xpZW50PigpKQogICAgICwgbV9w
b2xpY3lDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OlBvbGljeUNsaWVudD4oKSkKICAgICAs
IG1fZm9ybUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6Rm9ybUNsaWVudD4oKSkKQEAgLTMx
MSwxNCArMzEzLDE0IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHAK
ICNlbmRpZgogICAgICwgbV9uYXZpZ2F0aW9uU3RhdGUoc3RkOjptYWtlX3VuaXF1ZTxXZWJOYXZp
Z2F0aW9uU3RhdGU+KCkpCiAgICAgLCBtX3Byb2Nlc3MocHJvY2VzcykKLSAgICAsIG1fcGFnZUdy
b3VwKCpjb25maWd1cmF0aW9uLnBhZ2VHcm91cCkKLSAgICAsIG1fcHJlZmVyZW5jZXMoKmNvbmZp
Z3VyYXRpb24ucHJlZmVyZW5jZXMpCi0gICAgLCBtX3VzZXJDb250ZW50Q29udHJvbGxlcihjb25m
aWd1cmF0aW9uLnVzZXJDb250ZW50Q29udHJvbGxlcikKLSAgICAsIG1fdmlzaXRlZExpbmtQcm92
aWRlcigqY29uZmlndXJhdGlvbi52aXNpdGVkTGlua1Byb3ZpZGVyKQotICAgICwgbV93ZWJzaXRl
RGF0YVN0b3JlKCpjb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUpCisgICAgLCBtX3BhZ2VH
cm91cCgqbV9jb25maWd1cmF0aW9uLT5wYWdlR3JvdXAoKSkKKyAgICAsIG1fcHJlZmVyZW5jZXMo
Km1fY29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKSkKKyAgICAsIG1fdXNlckNvbnRlbnRDb250
cm9sbGVyKG1fY29uZmlndXJhdGlvbi0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkpCisgICAgLCBt
X3Zpc2l0ZWRMaW5rUHJvdmlkZXIoKm1fY29uZmlndXJhdGlvbi0+dmlzaXRlZExpbmtQcm92aWRl
cigpKQorICAgICwgbV93ZWJzaXRlRGF0YVN0b3JlKG1fY29uZmlndXJhdGlvbi0+d2Vic2l0ZURh
dGFTdG9yZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCkpCiAgICAgLCBtX21haW5GcmFtZShudWxscHRy
KQogICAgICwgbV91c2VyQWdlbnQoc3RhbmRhcmRVc2VyQWdlbnQoKSkKLSAgICAsIG1fdHJlYXRz
U0hBMUNlcnRpZmljYXRlc0FzSW5zZWN1cmUoY29uZmlndXJhdGlvbi50cmVhdHNTSEExU2lnbmVk
Q2VydGlmaWNhdGVzQXNJbnNlY3VyZSkKKyAgICAsIG1fdHJlYXRzU0hBMUNlcnRpZmljYXRlc0Fz
SW5zZWN1cmUobV9jb25maWd1cmF0aW9uLT50cmVhdHNTSEExU2lnbmVkQ2VydGlmaWNhdGVzQXNJ
bnNlY3VyZSgpKQogI2lmIFBMQVRGT1JNKElPUykKICAgICAsIG1faGFzUmVjZWl2ZWRMYXllclRy
ZWVUcmFuc2FjdGlvbkFmdGVyRGlkQ29tbWl0TG9hZCh0cnVlKQogICAgICwgbV9maXJzdExheWVy
VHJlZVRyYW5zYWN0aW9uSWRBZnRlckRpZENvbW1pdExvYWQoMCkKQEAgLTMzNSw3ICszMzcsNyBA
QCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwCiAgICAgLCBtX3ZpZXdT
dGF0ZShWaWV3U3RhdGU6Ok5vRmxhZ3MpCiAgICAgLCBtX3ZpZXdXYXNFdmVySW5XaW5kb3coZmFs
c2UpCiAjaWYgUExBVEZPUk0oSU9TKQotICAgICwgbV9hbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJp
b3JpdHkoY29uZmlndXJhdGlvbi5hbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHkpCisgICAg
LCBtX2Fsd2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eShtX2NvbmZpZ3VyYXRpb24tPmFsd2F5
c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eSgpKQogI2VuZGlmCiAgICAgLCBtX2JhY2tGb3J3YXJk
TGlzdChXZWJCYWNrRm9yd2FyZExpc3Q6OmNyZWF0ZSgqdGhpcykpCiAgICAgLCBtX21haW50YWlu
c0luYWN0aXZlU2VsZWN0aW9uKGZhbHNlKQpAQCAtMzc5LDcgKzM4MSw3IEBAIFdlYlBhZ2VQcm94
eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHAKICAgICAsIG1faXNUcmFja2luZ1RvdWNoRXZl
bnRzKGZhbHNlKQogI2VuZGlmCiAgICAgLCBtX3BhZ2VJRChwYWdlSUQpCi0gICAgLCBtX3Nlc3Np
b25JRChjb25maWd1cmF0aW9uLnNlc3Npb25JRCkKKyAgICAsIG1fc2Vzc2lvbklEKG1fY29uZmln
dXJhdGlvbi0+c2Vzc2lvbklEKCkpCiAgICAgLCBtX2lzUGFnZVN1c3BlbmRlZChmYWxzZSkKICAg
ICAsIG1fYWRkc1Zpc2l0ZWRMaW5rcyh0cnVlKQogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9S
KQpAQCAtNDM2LDcgKzQzOCw3IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGll
bnQmIHAKICNlbmRpZgogICAgICwgbV9zY3JvbGxQaW5uaW5nQmVoYXZpb3IoRG9Ob3RQaW4pCiAg
ICAgLCBtX25hdmlnYXRpb25JRCgwKQotICAgICwgbV9jb25maWd1cmF0aW9uUHJlZmVyZW5jZVZh
bHVlcyhjb25maWd1cmF0aW9uLnByZWZlcmVuY2VWYWx1ZXMpCisgICAgLCBtX2NvbmZpZ3VyYXRp
b25QcmVmZXJlbmNlVmFsdWVzKG1fY29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpKQog
ICAgICwgbV9wb3RlbnRpYWxseUNoYW5nZWRWaWV3U3RhdGVGbGFncyhWaWV3U3RhdGU6Ok5vRmxh
Z3MpCiAgICAgLCBtX3ZpZXdTdGF0ZUNoYW5nZVdhbnRzU3luY2hyb25vdXNSZXBseShmYWxzZSkK
IHsKQEAgLTUxOCw2ICs1MjAsMTEgQEAgV2ViUGFnZVByb3h5Ojp+V2ViUGFnZVByb3h5KCkKICNl
bmRpZgogfQogCitjb25zdCBBUEk6OlBhZ2VDb25maWd1cmF0aW9uJiBXZWJQYWdlUHJveHk6OmNv
bmZpZ3VyYXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbmZpZ3VyYXRpb24uZ2V0KCk7
Cit9CisKIFBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIgV2ViUGFnZVByb3h5Ojpwcm9jZXNzSWRl
bnRpZmllcigpIGNvbnN0CiB7CiAgICAgaWYgKG1faXNDbG9zZWQpCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAxODgxMjUpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1NCwy
OCArMjU0LDYgQEAgdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgV2ViQ29yZTo6SQogdHlw
ZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgV2ViQ29yZTo6TWFjaFNlbmRSaWdodCY+IE1hY2hT
ZW5kUmlnaHRDYWxsYmFjazsKICNlbmRpZgogCi1zdHJ1Y3QgV2ViUGFnZUNvbmZpZ3VyYXRpb24g
ewotICAgIFdlYlBhZ2VHcm91cCogcGFnZUdyb3VwID0gbnVsbHB0cjsKLSAgICBXZWJQcmVmZXJl
bmNlcyogcHJlZmVyZW5jZXMgPSBudWxscHRyOwotICAgIFdlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5KiB1c2VyQ29udGVudENvbnRyb2xsZXIgPSBudWxscHRyOwotICAgIFZpc2l0ZWRMaW5r
UHJvdmlkZXIqIHZpc2l0ZWRMaW5rUHJvdmlkZXIgPSBudWxscHRyOwotCi0gICAgV2Vic2l0ZURh
dGFTdG9yZSogd2Vic2l0ZURhdGFTdG9yZSA9IG51bGxwdHI7Ci0gICAgLy8gRklYTUU6IFdlIGN1
cnJlbnRseSBoYXZlIHRvIHBhc3MgdGhlIHNlc3Npb24gSUQgc2VwYXJhdGVseSBoZXJlIHRvIHN1
cHBvcnQgdGhlIGxlZ2FjeSBwcml2YXRlIGJyb3dzaW5nIHNlc3Npb24uCi0gICAgLy8gT25jZSB3
ZSBnZXQgcmlkIG9mIGl0IHdlIHNob3VsZCBnZXQgcmlkIG9mIHRoaXMgY29uZmlndXJhdGlvbiBw
YXJhbWV0ZXIgYXMgd2VsbC4KLSAgICBXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEOwotCi0g
ICAgV2ViUGFnZVByb3h5KiByZWxhdGVkUGFnZSA9IG51bGxwdHI7Ci0KLSAgICBib29sIHRyZWF0
c1NIQTFTaWduZWRDZXJ0aWZpY2F0ZXNBc0luc2VjdXJlID0gZmFsc2U7Ci0KLSNpZiBQTEFURk9S
TShJT1MpCi0gICAgYm9vbCBhbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHkgPSBmYWxzZTsK
LSNlbmRpZgotCi0gICAgV2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWVNYXAgcHJlZmVyZW5jZVZh
bHVlczsKLX07Ci0KIGNsYXNzIFdlYlBhZ2VQcm94eSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8
QVBJOjpPYmplY3Q6OlR5cGU6OlBhZ2U+CiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCiAg
ICAgLCBwdWJsaWMgV2ViQ29sb3JQaWNrZXI6OkNsaWVudApAQCAtMjg3LDkgKzI2NSwxMSBAQCBj
bGFzcyBXZWJQYWdlUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJCiAgICAgLCBwdWJsaWMgSVBD
OjpNZXNzYWdlUmVjZWl2ZXIKICAgICAsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIgewogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8V2ViUGFnZVByb3h5PiBjcmVhdGUoUGFnZUNsaWVudCYsIFdl
YlByb2Nlc3NQcm94eSYsIHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViUGFnZUNvbmZpZ3VyYXRp
b24mKTsKKyAgICBzdGF0aWMgUmVmPFdlYlBhZ2VQcm94eT4gY3JlYXRlKFBhZ2VDbGllbnQmLCBX
ZWJQcm9jZXNzUHJveHkmLCB1aW50NjRfdCBwYWdlSUQsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0
aW9uPiYmKTsKICAgICB2aXJ0dWFsIH5XZWJQYWdlUHJveHkoKTsKIAorICAgIGNvbnN0IEFQSTo6
UGFnZUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24oKSBjb25zdDsKKwogICAgIHVpbnQ2NF90
IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEOyB9CiAgICAgV2ViQ29yZTo6U2Vzc2lv
bklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbklEOyB9CiAgICAgdm9pZCBz
ZXRTZXNzaW9uSUQoV2ViQ29yZTo6U2Vzc2lvbklEKTsKQEAgLTEwODQsNyArMTA2NCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGNsZWFyV2hlZWxFdmVudFRlc3RUcmlnZ2VyKCk7CiAKIHByaXZhdGU6
Ci0gICAgV2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJveHkmLCB1aW50NjRf
dCBwYWdlSUQsIGNvbnN0IFdlYlBhZ2VDb25maWd1cmF0aW9uJik7CisgICAgV2ViUGFnZVByb3h5
KFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJveHkmLCB1aW50NjRfdCBwYWdlSUQsIFJlZjxBUEk6
OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwog
CiAgICAgdm9pZCB1cGRhdGVWaWV3U3RhdGUoV2ViQ29yZTo6Vmlld1N0YXRlOjpGbGFncyBmbGFn
c1RvVXBkYXRlID0gV2ViQ29yZTo6Vmlld1N0YXRlOjpBbGxGbGFncyk7CkBAIC0xNDg4LDYgKzE0
NjgsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgaGFuZGxlU3luY2hyb25vdXNNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUsIGNvbnN0IFVzZXJEYXRhJiBt
ZXNzYWdlQm9keSwgVXNlckRhdGEmIHJldHVyblVzZXJEYXRhKTsKIAogICAgIFBhZ2VDbGllbnQm
IG1fcGFnZUNsaWVudDsKKyAgICBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4gbV9jb25maWd1
cmF0aW9uOworCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6TG9hZGVyQ2xpZW50PiBtX2xvYWRl
ckNsaWVudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpQb2xpY3lDbGllbnQ+IG1fcG9saWN5
Q2xpZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6Ok5hdmlnYXRpb25DbGllbnQ+IG1fbmF2
aWdhdGlvbkNsaWVudDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcAkocmV2aXNpb24gMTg4MTI1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2lu
Y2x1ZGUgIkFQSUFycmF5LmgiCiAjaW5jbHVkZSAiQVBJRG93bmxvYWRDbGllbnQuaCIKICNpbmNs
dWRlICJBUElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudC5oIgorI2luY2x1ZGUgIkFQSVBhZ2VD
b25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgi
CiAjaW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJE
b3dubG9hZFByb3h5LmgiCkBAIC04MzEsMTggKzgzMiwxOCBAQCBXZWJQcm9jZXNzUHJveHkmIFdl
YlByb2Nlc3NQb29sOjpjcmVhdGVOCiAgICAgcmV0dXJuICpwcm9jZXNzOwogfQogCi1QYXNzUmVm
UHRyPFdlYlBhZ2VQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVu
dCYgcGFnZUNsaWVudCwgV2ViUGFnZUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbikKK1Bhc3NS
ZWZQdHI8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xp
ZW50JiBwYWdlQ2xpZW50LCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJiBwYWdlQ29uZmln
dXJhdGlvbikKIHsKLSAgICBpZiAoIWNvbmZpZ3VyYXRpb24ucGFnZUdyb3VwKQotICAgICAgICBj
b25maWd1cmF0aW9uLnBhZ2VHcm91cCA9IG1fZGVmYXVsdFBhZ2VHcm91cC5wdHIoKTsKLSAgICBp
ZiAoIWNvbmZpZ3VyYXRpb24ucHJlZmVyZW5jZXMpCi0gICAgICAgIGNvbmZpZ3VyYXRpb24ucHJl
ZmVyZW5jZXMgPSAmY29uZmlndXJhdGlvbi5wYWdlR3JvdXAtPnByZWZlcmVuY2VzKCk7Ci0gICAg
aWYgKCFjb25maWd1cmF0aW9uLnZpc2l0ZWRMaW5rUHJvdmlkZXIpCi0gICAgICAgIGNvbmZpZ3Vy
YXRpb24udmlzaXRlZExpbmtQcm92aWRlciA9IG1fdmlzaXRlZExpbmtQcm92aWRlci5wdHIoKTsK
LSAgICBpZiAoIWNvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSkgewotICAgICAgICBBU1NF
UlQoIWNvbmZpZ3VyYXRpb24uc2Vzc2lvbklELmlzVmFsaWQoKSk7Ci0gICAgICAgIGNvbmZpZ3Vy
YXRpb24ud2Vic2l0ZURhdGFTdG9yZSA9ICZtX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRh
U3RvcmUoKTsKLSAgICAgICAgY29uZmlndXJhdGlvbi5zZXNzaW9uSUQgPSBjb25maWd1cmF0aW9u
LnByZWZlcmVuY2VzLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkgPyBTZXNzaW9uSUQ6OmxlZ2Fj
eVByaXZhdGVTZXNzaW9uSUQoKSA6IFNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpOworICAg
IGlmICghcGFnZUNvbmZpZ3VyYXRpb24tPnBhZ2VHcm91cCgpKQorICAgICAgICBwYWdlQ29uZmln
dXJhdGlvbi0+c2V0UGFnZUdyb3VwKG1fZGVmYXVsdFBhZ2VHcm91cC5wdHIoKSk7CisgICAgaWYg
KCFwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKSkKKyAgICAgICAgcGFnZUNvbmZpZ3Vy
YXRpb24tPnNldFByZWZlcmVuY2VzKCZwYWdlQ29uZmlndXJhdGlvbi0+cGFnZUdyb3VwKCktPnBy
ZWZlcmVuY2VzKCkpOworICAgIGlmICghcGFnZUNvbmZpZ3VyYXRpb24tPnZpc2l0ZWRMaW5rUHJv
dmlkZXIoKSkKKyAgICAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFZpc2l0ZWRMaW5rUHJvdmlk
ZXIobV92aXNpdGVkTGlua1Byb3ZpZGVyLnB0cigpKTsKKyAgICBpZiAoIXBhZ2VDb25maWd1cmF0
aW9uLT53ZWJzaXRlRGF0YVN0b3JlKCkpIHsKKyAgICAgICAgQVNTRVJUKCFwYWdlQ29uZmlndXJh
dGlvbi0+c2Vzc2lvbklEKCkuaXNWYWxpZCgpKTsKKyAgICAgICAgcGFnZUNvbmZpZ3VyYXRpb24t
PnNldFdlYnNpdGVEYXRhU3RvcmUobV93ZWJzaXRlRGF0YVN0b3JlLmdldCgpKTsKKyAgICAgICAg
cGFnZUNvbmZpZ3VyYXRpb24tPnNldFNlc3Npb25JRChwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVy
ZW5jZXMoKS0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpID8gU2Vzc2lvbklEOjpsZWdhY3lQcml2
YXRlU2Vzc2lvbklEKCkgOiBTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CiAgICAgfQog
CiAgICAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gcHJvY2VzczsKQEAgLTg1MiwxNCArODUzLDE0
IEBAIFBhc3NSZWZQdHI8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUG9vbDoKICAgICAgICAgaWYg
KG1faGF2ZUluaXRpYWxFbXB0eVByb2Nlc3MpIHsKICAgICAgICAgICAgIHByb2Nlc3MgPSBtX3By
b2Nlc3Nlcy5sYXN0KCk7CiAgICAgICAgICAgICBtX2hhdmVJbml0aWFsRW1wdHlQcm9jZXNzID0g
ZmFsc2U7Ci0gICAgICAgIH0gZWxzZSBpZiAoY29uZmlndXJhdGlvbi5yZWxhdGVkUGFnZSkgewor
ICAgICAgICB9IGVsc2UgaWYgKHBhZ2VDb25maWd1cmF0aW9uLT5yZWxhdGVkUGFnZSgpKSB7CiAg
ICAgICAgICAgICAvLyBTaGFyaW5nIHByb2Nlc3NlcywgZS5nLiB3aGVuIGNyZWF0aW5nIHRoZSBw
YWdlIHZpYSB3aW5kb3cub3BlbigpLgotICAgICAgICAgICAgcHJvY2VzcyA9ICZjb25maWd1cmF0
aW9uLnJlbGF0ZWRQYWdlLT5wcm9jZXNzKCk7CisgICAgICAgICAgICBwcm9jZXNzID0gJnBhZ2VD
b25maWd1cmF0aW9uLT5yZWxhdGVkUGFnZSgpLT5wcm9jZXNzKCk7CiAgICAgICAgIH0gZWxzZQog
ICAgICAgICAgICAgcHJvY2VzcyA9ICZjcmVhdGVOZXdXZWJQcm9jZXNzUmVzcGVjdGluZ1Byb2Nl
c3NDb3VudExpbWl0KCk7CiAgICAgfQogCi0gICAgcmV0dXJuIHByb2Nlc3MtPmNyZWF0ZVdlYlBh
Z2UocGFnZUNsaWVudCwgV1RGOjptb3ZlKGNvbmZpZ3VyYXRpb24pKTsKKyAgICByZXR1cm4gcHJv
Y2Vzcy0+Y3JlYXRlV2ViUGFnZShwYWdlQ2xpZW50LCBXVEY6Om1vdmUocGFnZUNvbmZpZ3VyYXRp
b24pKTsKIH0KIAogRG93bmxvYWRQcm94eSogV2ViUHJvY2Vzc1Bvb2w6OmRvd25sb2FkKFdlYlBh
Z2VQcm94eSogaW5pdGlhdGluZ1BhZ2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCShyZXZpc2lv
biAxODgxMjUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAko
d29ya2luZyBjb3B5KQpAQCAtNzYsNiArNzYsNyBAQCBPQkpDX0NMQVNTIE5TU3RyaW5nOwogbmFt
ZXNwYWNlIEFQSSB7CiBjbGFzcyBEb3dubG9hZENsaWVudDsKIGNsYXNzIExlZ2FjeUNvbnRleHRI
aXN0b3J5Q2xpZW50OworY2xhc3MgUGFnZUNvbmZpZ3VyYXRpb247CiB9CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewpAQCAtODYsNyArODcsNiBAQCBjbGFzcyBXZWJJY29uRGF0YWJhc2U7CiBjbGFzcyBX
ZWJQYWdlR3JvdXA7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiBzdHJ1Y3QgU3RhdGlzdGljc0RhdGE7
Ci1zdHJ1Y3QgV2ViUGFnZUNvbmZpZ3VyYXRpb247CiBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVyczsKICAgICAKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPEFQSTo6RGljdGlvbmFy
eSo+IERpY3Rpb25hcnlDYWxsYmFjazsKQEAgLTE3MSw3ICsxNzEsNyBAQCBwdWJsaWM6CiAKICAg
ICBBUEk6OldlYnNpdGVEYXRhU3RvcmUqIHdlYnNpdGVEYXRhU3RvcmUoKSBjb25zdCB7IHJldHVy
biBtX3dlYnNpdGVEYXRhU3RvcmUuZ2V0KCk7IH0KIAotICAgIFBhc3NSZWZQdHI8V2ViUGFnZVBy
b3h5PiBjcmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmLCBXZWJQYWdlQ29uZmlndXJhdGlvbik7Cisg
ICAgUGFzc1JlZlB0cjxXZWJQYWdlUHJveHk+IGNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYsIFJl
ZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsKIAogICAgIGNvbnN0IFN0cmluZyYgaW5qZWN0
ZWRCdW5kbGVQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9jb25maWd1cmF0aW9uLT5pbmplY3RlZEJ1
bmRsZVBhdGgoKTsgfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmNwcAkocmV2aXNpb24gMTg4MTI1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwNiwxMCArMjA2LDEw
IEBAIFdlYlBhZ2VQcm94eSogV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHUKICAgICByZXR1cm4g
Z2xvYmFsUGFnZU1hcCgpLmdldChwYWdlSUQpOwogfQogCi1SZWY8V2ViUGFnZVByb3h5PiBXZWJQ
cm9jZXNzUHJveHk6OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgY29uc3Qg
V2ViUGFnZUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCitSZWY8V2ViUGFnZVByb3h5PiBX
ZWJQcm9jZXNzUHJveHk6OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgUmVm
PEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYgcGFnZUNvbmZpZ3VyYXRpb24pCiB7CiAgICAgdWlu
dDY0X3QgcGFnZUlEID0gZ2VuZXJhdGVQYWdlSUQoKTsKLSAgICBSZWY8V2ViUGFnZVByb3h5PiB3
ZWJQYWdlID0gV2ViUGFnZVByb3h5OjpjcmVhdGUocGFnZUNsaWVudCwgKnRoaXMsIHBhZ2VJRCwg
Y29uZmlndXJhdGlvbik7CisgICAgUmVmPFdlYlBhZ2VQcm94eT4gd2ViUGFnZSA9IFdlYlBhZ2VQ
cm94eTo6Y3JlYXRlKHBhZ2VDbGllbnQsICp0aGlzLCBwYWdlSUQsIFdURjo6bW92ZShwYWdlQ29u
ZmlndXJhdGlvbikpOwogCiAgICAgbV9wYWdlTWFwLnNldChwYWdlSUQsIHdlYlBhZ2UucHRyKCkp
OwogICAgIGdsb2JhbFBhZ2VNYXAoKS5zZXQocGFnZUlELCB3ZWJQYWdlLnB0cigpKTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgJKHJldmlzaW9uIDE4
ODEyNSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAkod29y
a2luZyBjb3B5KQpAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6CiAgICAgV2ViUHJvY2Vzc1Bvb2wm
IHByb2Nlc3NQb29sKCkgeyByZXR1cm4gbV9wcm9jZXNzUG9vbDsgfQogCiAgICAgc3RhdGljIFdl
YlBhZ2VQcm94eSogd2ViUGFnZSh1aW50NjRfdCBwYWdlSUQpOwotICAgIFJlZjxXZWJQYWdlUHJv
eHk+IGNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYsIGNvbnN0IFdlYlBhZ2VDb25maWd1cmF0aW9u
Jik7CisgICAgUmVmPFdlYlBhZ2VQcm94eT4gY3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiwgUmVm
PEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpOwogICAgIHZvaWQgYWRkRXhpc3RpbmdXZWJQYWdl
KFdlYlBhZ2VQcm94eSosIHVpbnQ2NF90IHBhZ2VJRCk7CiAgICAgdm9pZCByZW1vdmVXZWJQYWdl
KHVpbnQ2NF90IHBhZ2VJRCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
QVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwCShyZXZpc2lvbiAxODgxMjUpCisr
KyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsMTEgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsK
IAogbmFtZXNwYWNlIEFQSSB7CiAKK1JlZjxQYWdlQ29uZmlndXJhdGlvbj4gUGFnZUNvbmZpZ3Vy
YXRpb246OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGFnZUNvbmZpZ3Vy
YXRpb24pOworfQorCiBQYWdlQ29uZmlndXJhdGlvbjo6UGFnZUNvbmZpZ3VyYXRpb24oKQogewog
fQpAQCAtNDUsNiArNTAsMjkgQEAgUGFnZUNvbmZpZ3VyYXRpb246On5QYWdlQ29uZmlndXJhdGlv
bigpCiB7CiB9CiAKK1JlZjxQYWdlQ29uZmlndXJhdGlvbj4gUGFnZUNvbmZpZ3VyYXRpb246OmNv
cHkoKSBjb25zdAoreworICAgIGF1dG8gY29weSA9IHRoaXMtPmNyZWF0ZSgpOworCisgICAgY29w
eS0+bV9wcm9jZXNzUG9vbCA9IHRoaXMtPm1fcHJvY2Vzc1Bvb2w7CisgICAgY29weS0+bV91c2Vy
Q29udGVudENvbnRyb2xsZXIgPSB0aGlzLT5tX3VzZXJDb250ZW50Q29udHJvbGxlcjsKKyAgICBj
b3B5LT5tX3BhZ2VHcm91cCA9IHRoaXMtPm1fcGFnZUdyb3VwOworICAgIGNvcHktPm1fcHJlZmVy
ZW5jZXMgPSB0aGlzLT5tX3ByZWZlcmVuY2VzOworICAgIGNvcHktPm1fcHJlZmVyZW5jZVZhbHVl
cyA9IHRoaXMtPm1fcHJlZmVyZW5jZVZhbHVlczsKKyAgICBjb3B5LT5tX3JlbGF0ZWRQYWdlID0g
dGhpcy0+bV9yZWxhdGVkUGFnZTsKKyAgICBjb3B5LT5tX3Zpc2l0ZWRMaW5rUHJvdmlkZXIgPSB0
aGlzLT5tX3Zpc2l0ZWRMaW5rUHJvdmlkZXI7CisgICAgY29weS0+bV93ZWJzaXRlRGF0YVN0b3Jl
ID0gdGhpcy0+bV93ZWJzaXRlRGF0YVN0b3JlOworICAgIGNvcHktPm1fc2Vzc2lvbklEID0gdGhp
cy0+bV9zZXNzaW9uSUQ7CisgICAgY29weS0+bV90cmVhdHNTSEExU2lnbmVkQ2VydGlmaWNhdGVz
QXNJbnNlY3VyZSA9IHRoaXMtPm1fdHJlYXRzU0hBMVNpZ25lZENlcnRpZmljYXRlc0FzSW5zZWN1
cmU7CisKKyNpZiBQTEFURk9STShJT1MpCisgICAgY29weS0+bV9hbHdheXNSdW5zQXRGb3JlZ3Jv
dW5kUHJpb3JpdHkgPSB0aGlzLT5tX2Fsd2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eTsKKyNl
bmRpZgorCisgICAgcmV0dXJuIGNvcHk7Cit9CisKKwogV2ViUHJvY2Vzc1Bvb2wqIFBhZ2VDb25m
aWd1cmF0aW9uOjpwcm9jZXNzUG9vbCgpCiB7CiAgICAgcmV0dXJuIG1fcHJvY2Vzc1Bvb2wuZ2V0
KCk7CkBAIC05NSwxNiArMTIzLDM1IEBAIHZvaWQgUGFnZUNvbmZpZ3VyYXRpb246OnNldFJlbGF0
ZWRQYWdlKFcKICAgICBtX3JlbGF0ZWRQYWdlID0gcmVsYXRlZFBhZ2U7CiB9CiAKLVdlYktpdDo6
V2ViUGFnZUNvbmZpZ3VyYXRpb24gUGFnZUNvbmZpZ3VyYXRpb246OndlYlBhZ2VDb25maWd1cmF0
aW9uKCkKKworVmlzaXRlZExpbmtQcm92aWRlciogUGFnZUNvbmZpZ3VyYXRpb246OnZpc2l0ZWRM
aW5rUHJvdmlkZXIoKQogewotICAgIFdlYktpdDo6V2ViUGFnZUNvbmZpZ3VyYXRpb24gY29uZmln
dXJhdGlvbjsKKyAgICByZXR1cm4gbV92aXNpdGVkTGlua1Byb3ZpZGVyLmdldCgpOworfQogCi0g
ICAgY29uZmlndXJhdGlvbi51c2VyQ29udGVudENvbnRyb2xsZXIgPSB1c2VyQ29udGVudENvbnRy
b2xsZXIoKTsKLSAgICBjb25maWd1cmF0aW9uLnBhZ2VHcm91cCA9IHBhZ2VHcm91cCgpOwotICAg
IGNvbmZpZ3VyYXRpb24ucHJlZmVyZW5jZXMgPSBwcmVmZXJlbmNlcygpOwotICAgIGNvbmZpZ3Vy
YXRpb24ucmVsYXRlZFBhZ2UgPSByZWxhdGVkUGFnZSgpOwordm9pZCBQYWdlQ29uZmlndXJhdGlv
bjo6c2V0VmlzaXRlZExpbmtQcm92aWRlcihWaXNpdGVkTGlua1Byb3ZpZGVyKiB2aXNpdGVkTGlu
a1Byb3ZpZGVyKQoreworICAgIG1fdmlzaXRlZExpbmtQcm92aWRlciA9IHZpc2l0ZWRMaW5rUHJv
dmlkZXI7Cit9CisKK0FQSTo6V2Vic2l0ZURhdGFTdG9yZSogUGFnZUNvbmZpZ3VyYXRpb246Ondl
YnNpdGVEYXRhU3RvcmUoKQoreworICAgIHJldHVybiBtX3dlYnNpdGVEYXRhU3RvcmUuZ2V0KCk7
Cit9CiAKLSAgICByZXR1cm4gY29uZmlndXJhdGlvbjsKK3ZvaWQgUGFnZUNvbmZpZ3VyYXRpb246
OnNldFdlYnNpdGVEYXRhU3RvcmUoQVBJOjpXZWJzaXRlRGF0YVN0b3JlKiB3ZWJzaXRlRGF0YVN0
b3JlKQoreworICAgIG1fd2Vic2l0ZURhdGFTdG9yZSA9IHdlYnNpdGVEYXRhU3RvcmU7Cit9CisK
K1dlYkNvcmU6OlNlc3Npb25JRCBQYWdlQ29uZmlndXJhdGlvbjo6c2Vzc2lvbklEKCkKK3sKKyAg
ICByZXR1cm4gbV9zZXNzaW9uSUQ7Cit9CisKK3ZvaWQgUGFnZUNvbmZpZ3VyYXRpb246OnNldFNl
c3Npb25JRChXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQoreworICAgIG1fc2Vzc2lvbklE
ID0gc2Vzc2lvbklEOwogfQogCiB9IC8vIG5hbWVzcGFjZSBBUEkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgJKHJldmlz
aW9uIDE4ODEyNSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZp
Z3VyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMjcgKzI3LDMyIEBACiAjZGVmaW5lIEFQ
SVBhZ2VDb25maWd1cmF0aW9uX2gKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUg
IldlYlByZWZlcmVuY2VzU3RvcmUuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Nlc3Npb25JRC5oPgog
I2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7Ci1zdHJ1Y3QgV2Vi
UGFnZUNvbmZpZ3VyYXRpb247Ci1jbGFzcyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTsK
LWNsYXNzIFdlYlByb2Nlc3NQb29sOworY2xhc3MgVmlzaXRlZExpbmtQcm92aWRlcjsKIGNsYXNz
IFdlYlBhZ2VHcm91cDsKLWNsYXNzIFdlYlByZWZlcmVuY2VzOwogY2xhc3MgV2ViUGFnZVByb3h5
OworY2xhc3MgV2ViUHJlZmVyZW5jZXM7CitjbGFzcyBXZWJQcm9jZXNzUG9vbDsKK2NsYXNzIFdl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OwogfQogCiBuYW1lc3BhY2UgQVBJIHsKIAorY2xh
c3MgV2Vic2l0ZURhdGFTdG9yZTsKKwogY2xhc3MgUGFnZUNvbmZpZ3VyYXRpb24gOiBwdWJsaWMg
T2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6OlBhZ2VDb25maWd1cmF0aW9uPiB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZjxQYWdlQ29uZmlndXJhdGlvbj4gY3JlYXRlKCkKLSAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFBhZ2VDb25maWd1cmF0aW9uKTsKLSAgICB9CisgICAgc3Rh
dGljIFJlZjxQYWdlQ29uZmlndXJhdGlvbj4gY3JlYXRlKCk7CisKKyAgICBleHBsaWNpdCBQYWdl
Q29uZmlndXJhdGlvbigpOwogICAgIHZpcnR1YWwgflBhZ2VDb25maWd1cmF0aW9uKCk7CiAKKyAg
ICBSZWY8UGFnZUNvbmZpZ3VyYXRpb24+IGNvcHkoKSBjb25zdDsKKwogICAgIC8vIEZJWE1FOiBU
aGUgY29uZmlndXJhdGlvbiBwcm9wZXJ0aWVzIHNob3VsZCByZXR1cm4gdGhlaXIgZGVmYXVsdCB2
YWx1ZXMKICAgICAvLyByYXRoZXIgdGhhbiBudWxscHRyLgogICAgIApAQCAtNjMsMTkgKzY4LDQ3
IEBAIHB1YmxpYzoKICAgICBXZWJLaXQ6OldlYlByZWZlcmVuY2VzKiBwcmVmZXJlbmNlcygpOwog
ICAgIHZvaWQgc2V0UHJlZmVyZW5jZXMoV2ViS2l0OjpXZWJQcmVmZXJlbmNlcyopOwogCisgICAg
V2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZU1hcCYgcHJlZmVyZW5jZVZhbHVlcygp
IHsgcmV0dXJuIG1fcHJlZmVyZW5jZVZhbHVlczsgfQorCiAgICAgV2ViS2l0OjpXZWJQYWdlUHJv
eHkqIHJlbGF0ZWRQYWdlKCk7CiAgICAgdm9pZCBzZXRSZWxhdGVkUGFnZShXZWJLaXQ6OldlYlBh
Z2VQcm94eSopOwogCi0gICAgV2ViS2l0OjpXZWJQYWdlQ29uZmlndXJhdGlvbiB3ZWJQYWdlQ29u
ZmlndXJhdGlvbigpOworICAgIFdlYktpdDo6VmlzaXRlZExpbmtQcm92aWRlciogdmlzaXRlZExp
bmtQcm92aWRlcigpOworICAgIHZvaWQgc2V0VmlzaXRlZExpbmtQcm92aWRlcihXZWJLaXQ6OlZp
c2l0ZWRMaW5rUHJvdmlkZXIqKTsKKworICAgIFdlYnNpdGVEYXRhU3RvcmUqIHdlYnNpdGVEYXRh
U3RvcmUoKTsKKyAgICB2b2lkIHNldFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZSop
OworCisgICAgV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCgpOworICAgIHZvaWQgc2V0U2Vz
c2lvbklEKFdlYkNvcmU6OlNlc3Npb25JRCk7CisKKyAgICBib29sIHRyZWF0c1NIQTFTaWduZWRD
ZXJ0aWZpY2F0ZXNBc0luc2VjdXJlKCkgeyByZXR1cm4gbV90cmVhdHNTSEExU2lnbmVkQ2VydGlm
aWNhdGVzQXNJbnNlY3VyZTsgfQorICAgIHZvaWQgc2V0VHJlYXRzU0hBMVNpZ25lZENlcnRpZmlj
YXRlc0FzSW5zZWN1cmUoYm9vbCB0cmVhdHNTSEExU2lnbmVkQ2VydGlmaWNhdGVzQXNJbnNlY3Vy
ZSkgeyBtX3RyZWF0c1NIQTFTaWduZWRDZXJ0aWZpY2F0ZXNBc0luc2VjdXJlID0gdHJlYXRzU0hB
MVNpZ25lZENlcnRpZmljYXRlc0FzSW5zZWN1cmU7IH0gCisKKyNpZiBQTEFURk9STShJT1MpCisg
ICAgYm9vbCBhbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHkoKSB7IHJldHVybiBtX2Fsd2F5
c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eTsgfQorICAgIHZvaWQgc2V0QWx3YXlzUnVuc0F0Rm9y
ZWdyb3VuZFByaW9yaXR5KGJvb2wgYWx3YXlzUnVuc0F0Rm9yZWdyb3VuZFByaW9yaXR5KSB7IG1f
YWx3YXlzUnVuc0F0Rm9yZWdyb3VuZFByaW9yaXR5ID0gYWx3YXlzUnVuc0F0Rm9yZWdyb3VuZFBy
aW9yaXR5OyB9IAorI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgUGFnZUNvbmZpZ3VyYXRpb24oKTsK
IAogICAgIFJlZlB0cjxXZWJLaXQ6OldlYlByb2Nlc3NQb29sPiBtX3Byb2Nlc3NQb29sOwogICAg
IFJlZlB0cjxXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5PiBtX3VzZXJDb250
ZW50Q29udHJvbGxlcjsKICAgICBSZWZQdHI8V2ViS2l0OjpXZWJQYWdlR3JvdXA+IG1fcGFnZUdy
b3VwOwogICAgIFJlZlB0cjxXZWJLaXQ6OldlYlByZWZlcmVuY2VzPiBtX3ByZWZlcmVuY2VzOwor
ICAgIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWVNYXAgbV9wcmVmZXJlbmNlVmFs
dWVzOwogICAgIFJlZlB0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4gbV9yZWxhdGVkUGFnZTsKKyAg
ICBSZWZQdHI8V2ViS2l0OjpWaXNpdGVkTGlua1Byb3ZpZGVyPiBtX3Zpc2l0ZWRMaW5rUHJvdmlk
ZXI7CisKKyAgICBSZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4gbV93ZWJzaXRlRGF0YVN0b3JlOwor
ICAgIC8vIEZJWE1FOiBXZSBjdXJyZW50bHkgaGF2ZSB0byBwYXNzIHRoZSBzZXNzaW9uIElEIHNl
cGFyYXRlbHkgaGVyZSB0byBzdXBwb3J0IHRoZSBsZWdhY3kgcHJpdmF0ZSBicm93c2luZyBzZXNz
aW9uLgorICAgIC8vIE9uY2Ugd2UgZ2V0IHJpZCBvZiBpdCB3ZSBzaG91bGQgZ2V0IHJpZCBvZiB0
aGlzIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyIGFzIHdlbGwuCisgICAgV2ViQ29yZTo6U2Vzc2lv
bklEIG1fc2Vzc2lvbklEOworCisgICAgYm9vbCBtX3RyZWF0c1NIQTFTaWduZWRDZXJ0aWZpY2F0
ZXNBc0luc2VjdXJlID0gZmFsc2U7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIGJvb2wgbV9hbHdh
eXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHkgPSBmYWxzZTsKKyNlbmRpZgogfTsKIAogfSAvLyBu
YW1lc3BhY2UgQVBJCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdl
LmNwcAkocmV2aXNpb24gMTg4MTI1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJB
UElOYXZpZ2F0aW9uQWN0aW9uLmgiCiAjaW5jbHVkZSAiQVBJTmF2aWdhdGlvbkNsaWVudC5oIgog
I2luY2x1ZGUgIkFQSU5hdmlnYXRpb25SZXNwb25zZS5oIgorI2luY2x1ZGUgIkFQSVBhZ2VDb25m
aWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiQVBJUG9saWN5Q2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJ
U2Vzc2lvblN0YXRlLmgiCiAjaW5jbHVkZSAiQVBJVUlDbGllbnQuaCIKQEAgLTEyNyw2ICsxMjgs
MTIgQEAgV0tQYWdlR3JvdXBSZWYgV0tQYWdlR2V0UGFnZUdyb3VwKFdLUGFnZQogICAgIHJldHVy
biB0b0FQSSgmdG9JbXBsKHBhZ2VSZWYpLT5wYWdlR3JvdXAoKSk7CiB9CiAKK1dLUGFnZUNvbmZp
Z3VyYXRpb25SZWYgV0tQYWdlQ29weVBhZ2VDb25maWd1cmF0aW9uKFdLUGFnZVJlZiBwYWdlUmVm
KQoreworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IHRvSW1wbChwYWdlUmVmKS0+Y29uZmlndXJh
dGlvbigpLmNvcHkoKTsKKyAgICByZXR1cm4gdG9BUEkoJmNvbmZpZ3VyYXRpb24ubGVha1JlZigp
KTsKK30KKwogdm9pZCBXS1BhZ2VMb2FkVVJMKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1VSTFJlZiBV
UkxSZWYpCiB7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5sb2FkUmVxdWVzdChVUkwoVVJMKCksIHRv
V1RGU3RyaW5nKFVSTFJlZikpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS1BhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tQYWdlLmgJKHJldmlzaW9uIDE4ODEyNSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTksOCBAQCBXS19FWFBPUlQg
V0tUeXBlSUQgV0tQYWdlR2V0VHlwZUlEKCk7CiBXS19FWFBPUlQgV0tDb250ZXh0UmVmIFdLUGFn
ZUdldENvbnRleHQoV0tQYWdlUmVmIHBhZ2UpOwogV0tfRVhQT1JUIFdLUGFnZUdyb3VwUmVmIFdL
UGFnZUdldFBhZ2VHcm91cChXS1BhZ2VSZWYgcGFnZSk7CiAKK1dLX0VYUE9SVCBXS1BhZ2VDb25m
aWd1cmF0aW9uUmVmIFdLUGFnZUNvcHlQYWdlQ29uZmlndXJhdGlvbihXS1BhZ2VSZWYgcGFnZSk7
CisKIC8vIFVSTCBSZXF1ZXN0cwogV0tfRVhQT1JUIHZvaWQgV0tQYWdlTG9hZFVSTChXS1BhZ2VS
ZWYgcGFnZSwgV0tVUkxSZWYgdXJsKTsKIFdLX0VYUE9SVCB2b2lkIFdLUGFnZUxvYWRVUkxXaXRo
VXNlckRhdGEoV0tQYWdlUmVmIHBhZ2UsIFdLVVJMUmVmIHVybCwgV0tUeXBlUmVmIHVzZXJEYXRh
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VDb25maWd1cmF0
aW9uUmVmLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tQYWdlQ29uZmlndXJhdGlvblJlZi5jcHAJKHJldmlzaW9uIDE4ODEyNSkKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VDb25maWd1cmF0aW9uUmVmLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTMsMyArOTMsMTMgQEAgdm9pZCBXS1BhZ2VDb25maWd1cmF0aW9uU2V0UmVs
YXRlZFBhZ2UoVwogewogICAgIHRvSW1wbChjb25maWd1cmF0aW9uKS0+c2V0UmVsYXRlZFBhZ2Uo
dG9JbXBsKHJlbGF0ZWRQYWdlKSk7CiB9CisKK1dLV2Vic2l0ZURhdGFTdG9yZVJlZiBXS1BhZ2VD
b25maWd1cmF0aW9uR2V0V2Vic2l0ZURhdGFTdG9yZShXS1BhZ2VDb25maWd1cmF0aW9uUmVmIGNv
bmZpZ3VyYXRpb24pCit7CisgICAgcmV0dXJuIHRvQVBJKHRvSW1wbChjb25maWd1cmF0aW9uKS0+
d2Vic2l0ZURhdGFTdG9yZSgpKTsKK30KKwordm9pZCBXS1BhZ2VDb25maWd1cmF0aW9uU2V0V2Vi
c2l0ZURhdGFTdG9yZShXS1BhZ2VDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24sIFdLV2Vi
c2l0ZURhdGFTdG9yZVJlZiB3ZWJzaXRlRGF0YVN0b3JlKQoreworICAgIHRvSW1wbChjb25maWd1
cmF0aW9uKS0+c2V0V2Vic2l0ZURhdGFTdG9yZSh0b0ltcGwod2Vic2l0ZURhdGFTdG9yZSkpOwor
fQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUNvbmZpZ3VyYXRp
b25SZWYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQ
YWdlQ29uZmlndXJhdGlvblJlZi5oCShyZXZpc2lvbiAxODgxMjUpCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlQ29uZmlndXJhdGlvblJlZi5oCSh3b3JraW5nIGNvcHkp
CkBAIC01MSw2ICs1MSw5IEBAIFdLX0VYUE9SVCB2b2lkIFdLUGFnZUNvbmZpZ3VyYXRpb25TZXRQ
cmUKIFdLX0VYUE9SVCBXS1BhZ2VSZWYgV0tQYWdlQ29uZmlndXJhdGlvbkdldFJlbGF0ZWRQYWdl
KFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbik7CiBXS19FWFBPUlQgdm9pZCBX
S1BhZ2VDb25maWd1cmF0aW9uU2V0UmVsYXRlZFBhZ2UoV0tQYWdlQ29uZmlndXJhdGlvblJlZiBj
b25maWd1cmF0aW9uLCBXS1BhZ2VSZWYgcmVsYXRlZFBhZ2UpOwogCitXS19FWFBPUlQgV0tXZWJz
aXRlRGF0YVN0b3JlUmVmIFdLUGFnZUNvbmZpZ3VyYXRpb25HZXRXZWJzaXRlRGF0YVN0b3JlKFdL
UGFnZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbik7CitXS19FWFBPUlQgdm9pZCBXS1Bh
Z2VDb25maWd1cmF0aW9uU2V0V2Vic2l0ZURhdGFTdG9yZShXS1BhZ2VDb25maWd1cmF0aW9uUmVm
IGNvbmZpZ3VyYXRpb24sIFdLV2Vic2l0ZURhdGFTdG9yZVJlZiB3ZWJzaXRlRGF0YVN0b3JlKTsK
KwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCShyZXZpc2lvbiAxODgxMjUpCisr
KyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2lmIFdLX0FQSV9FTkFCTEVECiAKICNpbXBvcnQg
IkFQSUZvcm1DbGllbnQuaCIKKyNpbXBvcnQgIkFQSVBhZ2VDb25maWd1cmF0aW9uLmgiCiAjaW1w
b3J0ICJBUElTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbXBvcnQgIkNvbXBsZXRpb25IYW5k
bGVyQ2FsbENoZWNrZXIuaCIKICNpbXBvcnQgIkRpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmgiCkBA
IC0zMDAsMzYgKzMwMSwzOCBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0
KWZyCiAgICAgQ0dSZWN0IGJvdW5kcyA9IHNlbGYuYm91bmRzOwogCiAgICAgV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wgPSAqW19jb25maWd1cmF0aW9uIHByb2Nlc3NQb29sXS0+
X3Byb2Nlc3NQb29sOworICAgIAorICAgIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiBwYWdl
Q29uZmlndXJhdGlvbiA9IEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOwogCi0gICAg
V2ViS2l0OjpXZWJQYWdlQ29uZmlndXJhdGlvbiB3ZWJQYWdlQ29uZmlndXJhdGlvbjsKLSAgICB3
ZWJQYWdlQ29uZmlndXJhdGlvbi5wcmVmZXJlbmNlcyA9IFtfY29uZmlndXJhdGlvbiBwcmVmZXJl
bmNlc10tPl9wcmVmZXJlbmNlcy5nZXQoKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UHJv
Y2Vzc1Bvb2woJnByb2Nlc3NQb29sKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UHJlZmVy
ZW5jZXMoW19jb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXS0+X3ByZWZlcmVuY2VzLmdldCgpKTsK
ICAgICBpZiAoV0tXZWJWaWV3ICpyZWxhdGVkV2ViVmlldyA9IFtfY29uZmlndXJhdGlvbiBfcmVs
YXRlZFdlYlZpZXddKQotICAgICAgICB3ZWJQYWdlQ29uZmlndXJhdGlvbi5yZWxhdGVkUGFnZSA9
IHJlbGF0ZWRXZWJWaWV3LT5fcGFnZS5nZXQoKTsKKyAgICAgICAgcGFnZUNvbmZpZ3VyYXRpb24t
PnNldFJlbGF0ZWRQYWdlKHJlbGF0ZWRXZWJWaWV3LT5fcGFnZS5nZXQoKSk7CiAKLSAgICB3ZWJQ
YWdlQ29uZmlndXJhdGlvbi51c2VyQ29udGVudENvbnRyb2xsZXIgPSBbX2NvbmZpZ3VyYXRpb24g
dXNlckNvbnRlbnRDb250cm9sbGVyXS0+X3VzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmdldCgp
OwotICAgIHdlYlBhZ2VDb25maWd1cmF0aW9uLnZpc2l0ZWRMaW5rUHJvdmlkZXIgPSBbX2NvbmZp
Z3VyYXRpb24gX3Zpc2l0ZWRMaW5rUHJvdmlkZXJdLT5fdmlzaXRlZExpbmtQcm92aWRlci5nZXQo
KTsKLSAgICB3ZWJQYWdlQ29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlID0gJltfY29uZmln
dXJhdGlvbiB3ZWJzaXRlRGF0YVN0b3JlXS0+X3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRh
U3RvcmUoKTsKLSAgICB3ZWJQYWdlQ29uZmlndXJhdGlvbi5zZXNzaW9uSUQgPSB3ZWJQYWdlQ29u
ZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlLT5zZXNzaW9uSUQoKTsKLSAgICB3ZWJQYWdlQ29u
ZmlndXJhdGlvbi50cmVhdHNTSEExU2lnbmVkQ2VydGlmaWNhdGVzQXNJbnNlY3VyZSA9IFtfY29u
ZmlndXJhdGlvbiBfdHJlYXRzU0hBMVNpZ25lZENlcnRpZmljYXRlc0FzSW5zZWN1cmVdOworICAg
IHBhZ2VDb25maWd1cmF0aW9uLT5zZXRVc2VyQ29udGVudENvbnRyb2xsZXIoW19jb25maWd1cmF0
aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0tPl91c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5n
ZXQoKSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFZpc2l0ZWRMaW5rUHJvdmlkZXIoW19j
b25maWd1cmF0aW9uIF92aXNpdGVkTGlua1Byb3ZpZGVyXS0+X3Zpc2l0ZWRMaW5rUHJvdmlkZXIu
Z2V0KCkpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRXZWJzaXRlRGF0YVN0b3JlKFtfY29u
ZmlndXJhdGlvbiB3ZWJzaXRlRGF0YVN0b3JlXS0+X3dlYnNpdGVEYXRhU3RvcmUuZ2V0KCkpOwor
ICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRTZXNzaW9uSUQocGFnZUNvbmZpZ3VyYXRpb24tPndl
YnNpdGVEYXRhU3RvcmUoKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Npb25JRCgpKTsKKyAgICBw
YWdlQ29uZmlndXJhdGlvbi0+c2V0VHJlYXRzU0hBMVNpZ25lZENlcnRpZmljYXRlc0FzSW5zZWN1
cmUoW19jb25maWd1cmF0aW9uIF90cmVhdHNTSEExU2lnbmVkQ2VydGlmaWNhdGVzQXNJbnNlY3Vy
ZV0pOwogCiAgICAgUmVmUHRyPFdlYktpdDo6V2ViUGFnZUdyb3VwPiBwYWdlR3JvdXA7CiAgICAg
TlNTdHJpbmcgKmdyb3VwSWRlbnRpZmllciA9IGNvbmZpZ3VyYXRpb24uX2dyb3VwSWRlbnRpZmll
cjsKICAgICBpZiAoZ3JvdXBJZGVudGlmaWVyLmxlbmd0aCkgewogICAgICAgICBwYWdlR3JvdXAg
PSBXZWJLaXQ6OldlYlBhZ2VHcm91cDo6Y3JlYXRlKGNvbmZpZ3VyYXRpb24uX2dyb3VwSWRlbnRp
Zmllcik7Ci0gICAgICAgIHdlYlBhZ2VDb25maWd1cmF0aW9uLnBhZ2VHcm91cCA9IHBhZ2VHcm91
cC5nZXQoKTsKKyAgICAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFBhZ2VHcm91cChwYWdlR3Jv
dXAuZ2V0KCkpOwogICAgIH0KIAotICAgIHdlYlBhZ2VDb25maWd1cmF0aW9uLnByZWZlcmVuY2VW
YWx1ZXMuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OnN1cHByZXNzZXNJbmNyZW1lbnRh
bFJlbmRlcmluZ0tleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKCEhW19j
b25maWd1cmF0aW9uIHN1cHByZXNzZXNJbmNyZW1lbnRhbFJlbmRlcmluZ10pKTsKKyAgICBwYWdl
Q29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVu
Y2VzS2V5OjpzdXBwcmVzc2VzSW5jcmVtZW50YWxSZW5kZXJpbmdLZXkoKSwgV2ViS2l0OjpXZWJQ
cmVmZXJlbmNlc1N0b3JlOjpWYWx1ZSghIVtfY29uZmlndXJhdGlvbiBzdXBwcmVzc2VzSW5jcmVt
ZW50YWxSZW5kZXJpbmddKSk7CiAKICNpZiBQTEFURk9STShJT1MpCi0gICAgd2ViUGFnZUNvbmZp
Z3VyYXRpb24uYWx3YXlzUnVuc0F0Rm9yZWdyb3VuZFByaW9yaXR5ID0gW19jb25maWd1cmF0aW9u
IF9hbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHldOworICAgIHBhZ2VDb25maWd1cmF0aW9u
LT5zZXRBbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHkoW19jb25maWd1cmF0aW9uIF9hbHdh
eXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHldKTsKIAotICAgIHdlYlBhZ2VDb25maWd1cmF0aW9u
LnByZWZlcmVuY2VWYWx1ZXMuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OmFsbG93c0lu
bGluZU1lZGlhUGxheWJhY2tLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1
ZSghIVtfY29uZmlndXJhdGlvbiBhbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrXSkpOwotICAgIHdl
YlBhZ2VDb25maWd1cmF0aW9uLnByZWZlcmVuY2VWYWx1ZXMuc2V0KFdlYktpdDo6V2ViUHJlZmVy
ZW5jZXNLZXk6OmFsbG93c1BpY3R1cmVJblBpY3R1cmVNZWRpYVBsYXliYWNrS2V5KCksIFdlYktp
dDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoISFbX2NvbmZpZ3VyYXRpb24gYWxsb3dzUGlj
dHVyZUluUGljdHVyZU1lZGlhUGxheWJhY2tdICYmIHNob3VsZEFsbG93UGljdHVyZUluUGljdHVy
ZU1lZGlhUGxheWJhY2soKSkpOwotICAgIHdlYlBhZ2VDb25maWd1cmF0aW9uLnByZWZlcmVuY2VW
YWx1ZXMuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OnJlcXVpcmVzVXNlckdlc3R1cmVG
b3JNZWRpYVBsYXliYWNrS2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUo
ISFbX2NvbmZpZ3VyYXRpb24gcmVxdWlyZXNVc2VyQWN0aW9uRm9yTWVkaWFQbGF5YmFja10pKTsK
KyAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6Oldl
YlByZWZlcmVuY2VzS2V5OjphbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrS2V5KCksIFdlYktpdDo6
V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoISFbX2NvbmZpZ3VyYXRpb24gYWxsb3dzSW5saW5l
TWVkaWFQbGF5YmFja10pKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVl
cygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5OjphbGxvd3NQaWN0dXJlSW5QaWN0dXJl
TWVkaWFQbGF5YmFja0tleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKCEh
W19jb25maWd1cmF0aW9uIGFsbG93c1BpY3R1cmVJblBpY3R1cmVNZWRpYVBsYXliYWNrXSAmJiBz
aG91bGRBbGxvd1BpY3R1cmVJblBpY3R1cmVNZWRpYVBsYXliYWNrKCkpKTsKKyAgICBwYWdlQ29u
ZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2Vz
S2V5OjpyZXF1aXJlc1VzZXJHZXN0dXJlRm9yTWVkaWFQbGF5YmFja0tleSgpLCBXZWJLaXQ6Oldl
YlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKCEhW19jb25maWd1cmF0aW9uIHJlcXVpcmVzVXNlckFj
dGlvbkZvck1lZGlhUGxheWJhY2tdKSk7CiAjZW5kaWYKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExB
WUJBQ0tfVEFSR0VUKQotICAgIHdlYlBhZ2VDb25maWd1cmF0aW9uLnByZWZlcmVuY2VWYWx1ZXMu
c2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OmFsbG93c0FpclBsYXlGb3JNZWRpYVBsYXli
YWNrS2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoISFbX2NvbmZpZ3Vy
YXRpb24gYWxsb3dzQWlyUGxheUZvck1lZGlhUGxheWJhY2tdKSk7CisgICAgcGFnZUNvbmZpZ3Vy
YXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6
YWxsb3dzQWlyUGxheUZvck1lZGlhUGxheWJhY2tLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNl
c1N0b3JlOjpWYWx1ZSghIVtfY29uZmlndXJhdGlvbiBhbGxvd3NBaXJQbGF5Rm9yTWVkaWFQbGF5
YmFja10pKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtMzM5LDcgKzM0Miw3IEBA
IC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihDR1JlY3QpZnIKIAogICAgIFtzZWxmIGFk
ZFN1YnZpZXc6X3Njcm9sbFZpZXcuZ2V0KCldOwogCi0gICAgX2NvbnRlbnRWaWV3ID0gYWRvcHRO
UyhbW1dLQ29udGVudFZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Ym91bmRzIHByb2Nlc3NQb29s
OnByb2Nlc3NQb29sIGNvbmZpZ3VyYXRpb246V1RGOjptb3ZlKHdlYlBhZ2VDb25maWd1cmF0aW9u
KSB3ZWJWaWV3OnNlbGZdKTsKKyAgICBfY29udGVudFZpZXcgPSBhZG9wdE5TKFtbV0tDb250ZW50
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpib3VuZHMgcHJvY2Vzc1Bvb2w6cHJvY2Vzc1Bvb2wg
Y29uZmlndXJhdGlvbjpXVEY6Om1vdmUocGFnZUNvbmZpZ3VyYXRpb24pIHdlYlZpZXc6c2VsZl0p
OwogCiAgICAgX3BhZ2UgPSBbX2NvbnRlbnRWaWV3IHBhZ2VdOwogICAgIF9wYWdlLT5zZXREZXZp
Y2VPcmllbnRhdGlvbihkZXZpY2VPcmllbnRhdGlvbigpKTsKQEAgLTM2Nyw3ICszNzAsNyBAQCAt
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyCiAjZW5kaWYKIAogI2lmIFBM
QVRGT1JNKE1BQykKLSAgICBfd2tWaWV3ID0gYWRvcHROUyhbW1dLVmlldyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpib3VuZHMgcHJvY2Vzc1Bvb2w6cHJvY2Vzc1Bvb2wgY29uZmlndXJhdGlvbjpXVEY6
Om1vdmUod2ViUGFnZUNvbmZpZ3VyYXRpb24pIHdlYlZpZXc6c2VsZl0pOworICAgIF93a1ZpZXcg
PSBhZG9wdE5TKFtbV0tWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOmJvdW5kcyBwcm9jZXNzUG9v
bDpwcm9jZXNzUG9vbCBjb25maWd1cmF0aW9uOldURjo6bW92ZShwYWdlQ29uZmlndXJhdGlvbikg
d2ViVmlldzpzZWxmXSk7CiAgICAgW3NlbGYgYWRkU3Vidmlldzpfd2tWaWV3LmdldCgpXTsKICAg
ICBfcGFnZSA9IFdlYktpdDo6dG9JbXBsKFtfd2tWaWV3IHBhZ2VSZWZdKTsKIApJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4
dC5jcHAJKHJldmlzaW9uIDE4ODEyNSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYkNvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw2ICsyMSw3IEBA
CiAjaW5jbHVkZSAiV2ViS2l0V2ViQ29udGV4dC5oIgogCiAjaW5jbHVkZSAiQVBJRG93bmxvYWRD
bGllbnQuaCIKKyNpbmNsdWRlICJBUElQYWdlQ29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIkFQ
SVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIkFQSVN0cmluZy5oIgogI2lu
Y2x1ZGUgIlRleHRDaGVja2VyLmgiCkBAIC0xMzE1LDEzICsxMzE2LDE0IEBAIHZvaWQgd2Via2l0
V2ViQ29udGV4dERpZEZpbmlzaExvYWRpbmdDdXMKIHZvaWQgd2Via2l0V2ViQ29udGV4dENyZWF0
ZVBhZ2VGb3JXZWJWaWV3KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcsIFdlYktpdFVzZXJDb250ZW50TWFuYWdlciogdXNlckNvbnRlbnRNYW5hZ2VyLCBX
ZWJLaXRXZWJWaWV3KiByZWxhdGVkVmlldykKIHsKICAgICBXZWJLaXRXZWJWaWV3QmFzZSogd2Vi
Vmlld0Jhc2UgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3ZWJWaWV3KTsKLSAgICBXZWJQYWdlQ29u
ZmlndXJhdGlvbiB3ZWJQYWdlQ29uZmlndXJhdGlvbjsKLSAgICB3ZWJQYWdlQ29uZmlndXJhdGlv
bi5wcmVmZXJlbmNlcyA9IHdlYmtpdFNldHRpbmdzR2V0UHJlZmVyZW5jZXMod2Via2l0X3dlYl92
aWV3X2dldF9zZXR0aW5ncyh3ZWJWaWV3KSk7Ci0gICAgd2ViUGFnZUNvbmZpZ3VyYXRpb24ucmVs
YXRlZFBhZ2UgPSByZWxhdGVkVmlldyA/IHdlYmtpdFdlYlZpZXdCYXNlR2V0UGFnZShXRUJLSVRf
V0VCX1ZJRVdfQkFTRShyZWxhdGVkVmlldykpIDogbnVsbHB0cjsKLSAgICB3ZWJQYWdlQ29uZmln
dXJhdGlvbi51c2VyQ29udGVudENvbnRyb2xsZXIgPSB1c2VyQ29udGVudE1hbmFnZXIgPyB3ZWJr
aXRVc2VyQ29udGVudE1hbmFnZXJHZXRVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSh1c2VyQ29u
dGVudE1hbmFnZXIpIDogbnVsbHB0cjsKLSAgICB3ZWJQYWdlQ29uZmlndXJhdGlvbi53ZWJzaXRl
RGF0YVN0b3JlID0gJndlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckdldERhdGFTdG9yZShjb250ZXh0
LT5wcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpOwotICAgIHdlYlBhZ2VDb25maWd1cmF0
aW9uLnNlc3Npb25JRCA9IHdlYlBhZ2VDb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUtPnNl
c3Npb25JRCgpOwotICAgIHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlV2ViUGFnZSh3ZWJWaWV3QmFz
ZSwgY29udGV4dC0+cHJpdi0+Y29udGV4dC5nZXQoKSwgV1RGOjptb3ZlKHdlYlBhZ2VDb25maWd1
cmF0aW9uKSk7CisKKyAgICBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4gcGFnZUNvbmZpZ3Vy
YXRpb24gPSBBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKKyAgICBwYWdlQ29uZmln
dXJhdGlvbi0+c2V0UHJlZmVyZW5jZXMod2Via2l0U2V0dGluZ3NHZXRQcmVmZXJlbmNlcyh3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKHdlYlZpZXcpKSk7CisgICAgcGFnZUNvbmZpZ3VyYXRp
b24tPnNldFJlbGF0ZWRQYWdlKHJlbGF0ZWRWaWV3ID8gd2Via2l0V2ViVmlld0Jhc2VHZXRQYWdl
KFdFQktJVF9XRUJfVklFV19CQVNFKHJlbGF0ZWRWaWV3KSkgOiBudWxscHRyKTsKKyAgICBwYWdl
Q29uZmlndXJhdGlvbi0+c2V0VXNlckNvbnRlbnRDb250cm9sbGVyKHVzZXJDb250ZW50TWFuYWdl
ciA/IHdlYmtpdFVzZXJDb250ZW50TWFuYWdlckdldFVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
KHVzZXJDb250ZW50TWFuYWdlcikgOiBudWxscHRyKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+
c2V0V2Vic2l0ZURhdGFTdG9yZSgmd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyR2V0RGF0YVN0b3Jl
KGNvbnRleHQtPnByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpOworICAgIHBhZ2VDb25m
aWd1cmF0aW9uLT5zZXRTZXNzaW9uSUQod2ViUGFnZUNvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFT
dG9yZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2Vzc2lvbklEKCkpOworICAgIHdlYmtpdFdlYlZp
ZXdCYXNlQ3JlYXRlV2ViUGFnZSh3ZWJWaWV3QmFzZSwgY29udGV4dC0+cHJpdi0+Y29udGV4dC5n
ZXQoKSwgV1RGOjptb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7CiAKICAgICBXZWJQYWdlUHJveHkq
IHBhZ2UgPSB3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2Uod2ViVmlld0Jhc2UpOwogICAgIGNvbnRl
eHQtPnByaXYtPndlYlZpZXdzLnNldChwYWdlLT5wYWdlSUQoKSwgd2ViVmlldyk7CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
d0Jhc2UuY3BwCShyZXZpc2lvbiAxODgxMjUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5
LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3QmFzZS5o
IgogCisjaW5jbHVkZSAiQVBJUGFnZUNvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJEcmF3aW5n
QXJlYVByb3h5SW1wbC5oIgogI2luY2x1ZGUgIklucHV0TWV0aG9kRmlsdGVyLmgiCiAjaW5jbHVk
ZSAiS2V5QmluZGluZ1RyYW5zbGF0b3IuaCIKQEAgLTEwNDQsMTIgKzEwNDUsMTMgQEAgc3RhdGlj
IHZvaWQgd2Via2l0X3dlYl92aWV3X2Jhc2VfY2xhc3NfaQogV2ViS2l0V2ViVmlld0Jhc2UqIHdl
YmtpdFdlYlZpZXdCYXNlQ3JlYXRlKFdlYlByb2Nlc3NQb29sKiBjb250ZXh0LCBXZWJQcmVmZXJl
bmNlcyogcHJlZmVyZW5jZXMsIFdlYlBhZ2VHcm91cCogcGFnZUdyb3VwLCBXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eSogdXNlckNvbnRlbnRDb250cm9sbGVyLCBXZWJQYWdlUHJveHkqIHJl
bGF0ZWRQYWdlKQogewogICAgIFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZSA9
IFdFQktJVF9XRUJfVklFV19CQVNFKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfVklFV19C
QVNFLCBudWxscHRyKSk7Ci0gICAgV2ViUGFnZUNvbmZpZ3VyYXRpb24gd2ViUGFnZUNvbmZpZ3Vy
YXRpb247Ci0gICAgd2ViUGFnZUNvbmZpZ3VyYXRpb24ucHJlZmVyZW5jZXMgPSBwcmVmZXJlbmNl
czsKLSAgICB3ZWJQYWdlQ29uZmlndXJhdGlvbi5wYWdlR3JvdXAgPSBwYWdlR3JvdXA7Ci0gICAg
d2ViUGFnZUNvbmZpZ3VyYXRpb24ucmVsYXRlZFBhZ2UgPSByZWxhdGVkUGFnZTsKLSAgICB3ZWJQ
YWdlQ29uZmlndXJhdGlvbi51c2VyQ29udGVudENvbnRyb2xsZXIgPSB1c2VyQ29udGVudENvbnRy
b2xsZXI7Ci0gICAgd2Via2l0V2ViVmlld0Jhc2VDcmVhdGVXZWJQYWdlKHdlYmtpdFdlYlZpZXdC
YXNlLCBjb250ZXh0LCBXVEY6Om1vdmUod2ViUGFnZUNvbmZpZ3VyYXRpb24pKTsKKworICAgIFJl
ZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiBwYWdlQ29uZmlndXJhdGlvbiA9IEFQSTo6UGFnZUNv
bmZpZ3VyYXRpb246OmNyZWF0ZSgpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRQcmVmZXJl
bmNlcyhwcmVmZXJlbmNlcyk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFBhZ2VHcm91cChw
YWdlR3JvdXApOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRSZWxhdGVkUGFnZShyZWxhdGVk
UGFnZSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFVzZXJDb250ZW50Q29udHJvbGxlcih1
c2VyQ29udGVudENvbnRyb2xsZXIpOworICAgIHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlV2ViUGFn
ZSh3ZWJraXRXZWJWaWV3QmFzZSwgY29udGV4dCwgV1RGOjptb3ZlKHBhZ2VDb25maWd1cmF0aW9u
KSk7CiAgICAgcmV0dXJuIHdlYmtpdFdlYlZpZXdCYXNlOwogfQogCkBAIC0xMDcwLDcgKzEwNzIs
NyBAQCBzdGF0aWMgdm9pZCBkZXZpY2VTY2FsZUZhY3RvckNoYW5nZWQoV2ViCiB9CiAjZW5kaWYg
Ly8gSEFWRShHVEtfU0NBTEVfRkFDVE9SKQogCi12b2lkIHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRl
V2ViUGFnZShXZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2UsIFdlYlByb2Nlc3NQ
b29sKiBjb250ZXh0LCBXZWJQYWdlQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24pCit2b2lk
IHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlV2ViUGFnZShXZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0
V2ViVmlld0Jhc2UsIFdlYlByb2Nlc3NQb29sKiBjb250ZXh0LCBSZWY8QVBJOjpQYWdlQ29uZmln
dXJhdGlvbj4mJiBjb25maWd1cmF0aW9uKQogewogICAgIFdlYktpdFdlYlZpZXdCYXNlUHJpdmF0
ZSogcHJpdiA9IHdlYmtpdFdlYlZpZXdCYXNlLT5wcml2OwogICAgIHByaXYtPnBhZ2VQcm94eSA9
IGNvbnRleHQtPmNyZWF0ZVdlYlBhZ2UoKnByaXYtPnBhZ2VDbGllbnQsIFdURjo6bW92ZShjb25m
aWd1cmF0aW9uKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3QmFzZVByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaAkocmV2aXNpb24gMTg4MTI1
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2VQ
cml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAKIFdlYktpdFdlYlZpZXdC
YXNlKiB3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZShXZWJLaXQ6OldlYlByb2Nlc3NQb29sKiwgV2Vi
S2l0OjpXZWJQcmVmZXJlbmNlcyosIFdlYktpdDo6V2ViUGFnZUdyb3VwKiwgV2ViS2l0OjpXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eSosIFdlYktpdDo6V2ViUGFnZVByb3h5Kik7CiBHdGtJ
TUNvbnRleHQqIHdlYmtpdFdlYlZpZXdCYXNlR2V0SU1Db250ZXh0KFdlYktpdFdlYlZpZXdCYXNl
Kik7CiBXZWJLaXQ6OldlYlBhZ2VQcm94eSogd2Via2l0V2ViVmlld0Jhc2VHZXRQYWdlKFdlYktp
dFdlYlZpZXdCYXNlKik7Ci12b2lkIHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlV2ViUGFnZShXZWJL
aXRXZWJWaWV3QmFzZSosIFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wqLCBXZWJLaXQ6OldlYlBhZ2VD
b25maWd1cmF0aW9uJiYpOwordm9pZCB3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZVdlYlBhZ2UoV2Vi
S2l0V2ViVmlld0Jhc2UqLCBXZWJLaXQ6OldlYlByb2Nlc3NQb29sKiwgUmVmPEFQSTo6UGFnZUNv
bmZpZ3VyYXRpb24+JiYpOwogdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVNldFRvb2x0aXBUZXh0KFdl
YktpdFdlYlZpZXdCYXNlKiwgY29uc3QgY2hhciopOwogdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVNl
dFRvb2x0aXBBcmVhKFdlYktpdFdlYlZpZXdCYXNlKiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYp
Owogdm9pZCB3ZWJraXRXZWJWaWV3QmFzZUZvcndhcmROZXh0S2V5RXZlbnQoV2ViS2l0V2ViVmll
d0Jhc2UqKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvaW9zL1dLVmlld0lP
Uy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2lvcy9XS1Zp
ZXdJT1MubW0JKHJldmlzaW9uIDE4ODEyNSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvaW9zL1dLVmlld0lPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjI1LDExICsyMjUsMTIgQEAg
LSAodm9pZClfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoQ29udGV4dAogCiAgICAgW3NlbGYgYWRk
U3Vidmlldzpfc2Nyb2xsVmlldy5nZXQoKV07CiAKLSAgICBXZWJLaXQ6OldlYlBhZ2VDb25maWd1
cmF0aW9uIHdlYlBhZ2VDb25maWd1cmF0aW9uOwotICAgIHdlYlBhZ2VDb25maWd1cmF0aW9uLnBh
Z2VHcm91cCA9IHRvSW1wbChwYWdlR3JvdXBSZWYpOwotICAgIHdlYlBhZ2VDb25maWd1cmF0aW9u
LnJlbGF0ZWRQYWdlID0gdG9JbXBsKHJlbGF0ZWRQYWdlKTsKKyAgICBSZWY8QVBJOjpQYWdlQ29u
ZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OmNyZWF0
ZSgpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldFByb2Nlc3NQb29sKHRvSW1wbChjb250ZXh0UmVm
KSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0UGFnZUdyb3VwKHRvSW1wbChwYWdlR3JvdXBSZWYp
KTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRSZWxhdGVkUGFnZSh0b0ltcGwocmVsYXRlZFBhZ2Up
KTsKIAotICAgIF9jb250ZW50VmlldyA9IGFkb3B0TlMoW1tXS0NvbnRlbnRWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOmJvdW5kcyBwcm9jZXNzUG9vbDoqdG9JbXBsKGNvbnRleHRSZWYpIGNvbmZp
Z3VyYXRpb246V1RGOjptb3ZlKHdlYlBhZ2VDb25maWd1cmF0aW9uKSB3a1ZpZXc6c2VsZl0pOwor
ICAgIF9jb250ZW50VmlldyA9IGFkb3B0TlMoW1tXS0NvbnRlbnRWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOmJvdW5kcyBwcm9jZXNzUG9vbDoqdG9JbXBsKGNvbnRleHRSZWYpIGNvbmZpZ3VyYXRp
b246V1RGOjptb3ZlKGNvbmZpZ3VyYXRpb24pIHdrVmlldzpzZWxmXSk7CiAKICAgICBbW19jb250
ZW50VmlldyBsYXllcl0gc2V0QW5jaG9yUG9pbnQ6Q0dQb2ludFplcm9dOwogICAgIFtfY29udGVu
dFZpZXcgc2V0RnJhbWU6Ym91bmRzXTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvbWFjL1dLVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL21hYy9XS1ZpZXcubW0JKHJldmlzaW9uIDE4ODEyNSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzc0NCw3ICszNzQ0
LDcgQEAgLSAodm9pZClfc2V0UHJpbWFyeVRyYWNraW5nQXJlYTooTlNUcmFjawogICAgIFtzZWxm
IGFkZFRyYWNraW5nQXJlYTp0cmFja2luZ0FyZWFdOwogfQogCi0tIChpbnN0YW5jZXR5cGUpaW5p
dFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lIHByb2Nlc3NQb29sOihXZWJQcm9jZXNzUG9vbCYpcHJv
Y2Vzc1Bvb2wgY29uZmlndXJhdGlvbjooV2ViUGFnZUNvbmZpZ3VyYXRpb24pd2ViUGFnZUNvbmZp
Z3VyYXRpb24gd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldworLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSBwcm9jZXNzUG9vbDooV2ViUHJvY2Vzc1Bvb2wmKXBy
b2Nlc3NQb29sIGNvbmZpZ3VyYXRpb246KFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKWNv
bmZpZ3VyYXRpb24gd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldwogewogICAgIHNlbGYgPSBb
c3VwZXIgaW5pdFdpdGhGcmFtZTpmcmFtZV07CiAgICAgaWYgKCFzZWxmKQpAQCAtMzc2Niw3ICsz
NzY2LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcgogICAgIFtz
ZWxmIGFkZFRyYWNraW5nQXJlYTpfZGF0YS0+X3ByaW1hcnlUcmFja2luZ0FyZWEuZ2V0KCldOwog
CiAgICAgX2RhdGEtPl9wYWdlQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlQ2xpZW50SW1w
bD4oc2VsZiwgd2ViVmlldyk7Ci0gICAgX2RhdGEtPl9wYWdlID0gcHJvY2Vzc1Bvb2wuY3JlYXRl
V2ViUGFnZSgqX2RhdGEtPl9wYWdlQ2xpZW50LCBXVEY6Om1vdmUod2ViUGFnZUNvbmZpZ3VyYXRp
b24pKTsKKyAgICBfZGF0YS0+X3BhZ2UgPSBwcm9jZXNzUG9vbC5jcmVhdGVXZWJQYWdlKCpfZGF0
YS0+X3BhZ2VDbGllbnQsIFdURjo6bW92ZShjb25maWd1cmF0aW9uKSk7CiAgICAgX2RhdGEtPl9w
YWdlLT5zZXRBZGRzVmlzaXRlZExpbmtzKHByb2Nlc3NQb29sLmhpc3RvcnlDbGllbnQoKS5hZGRz
VmlzaXRlZExpbmtzKCkpOwogCiAgICAgX2RhdGEtPl9wYWdlLT5zZXRJbnRyaW5zaWNEZXZpY2VT
Y2FsZUZhY3Rvcihbc2VsZiBfaW50cmluc2ljRGV2aWNlU2NhbGVGYWN0b3JdKTsKQEAgLTM5OTQs
MTkgKzM5OTQsMjAgQEAgLSAoaWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lIGNvbnRleAog
CiAtIChpZClpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUgY29udGV4dFJlZjooV0tDb250ZXh0
UmVmKWNvbnRleHRSZWYgcGFnZUdyb3VwUmVmOihXS1BhZ2VHcm91cFJlZilwYWdlR3JvdXBSZWYg
cmVsYXRlZFRvUGFnZTooV0tQYWdlUmVmKXJlbGF0ZWRQYWdlCiB7Ci0gICAgV2ViUGFnZUNvbmZp
Z3VyYXRpb24gd2ViUGFnZUNvbmZpZ3VyYXRpb247Ci0gICAgd2ViUGFnZUNvbmZpZ3VyYXRpb24u
cGFnZUdyb3VwID0gdG9JbXBsKHBhZ2VHcm91cFJlZik7Ci0gICAgd2ViUGFnZUNvbmZpZ3VyYXRp
b24ucmVsYXRlZFBhZ2UgPSB0b0ltcGwocmVsYXRlZFBhZ2UpOworICAgIFJlZjxBUEk6OlBhZ2VD
b25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6Y3Jl
YXRlKCk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0UHJvY2Vzc1Bvb2wodG9JbXBsKGNvbnRleHRS
ZWYpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRQYWdlR3JvdXAodG9JbXBsKHBhZ2VHcm91cFJl
ZikpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldFJlbGF0ZWRQYWdlKHRvSW1wbChyZWxhdGVkUGFn
ZSkpOwogCi0gICAgcmV0dXJuIFtzZWxmIGluaXRXaXRoRnJhbWU6ZnJhbWUgcHJvY2Vzc1Bvb2w6
KnRvSW1wbChjb250ZXh0UmVmKSBjb25maWd1cmF0aW9uOndlYlBhZ2VDb25maWd1cmF0aW9uIHdl
YlZpZXc6bmlsXTsKKyAgICByZXR1cm4gW3NlbGYgaW5pdFdpdGhGcmFtZTpmcmFtZSBwcm9jZXNz
UG9vbDoqdG9JbXBsKGNvbnRleHRSZWYpIGNvbmZpZ3VyYXRpb246V1RGOjptb3ZlKGNvbmZpZ3Vy
YXRpb24pIHdlYlZpZXc6bmlsXTsKIH0KIAotLSAoaWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZy
YW1lIGNvbmZpZ3VyYXRpb25SZWY6KFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYpY29uZmlndXJhdGlv
bgorLSAoaWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lIGNvbmZpZ3VyYXRpb25SZWY6KFdL
UGFnZUNvbmZpZ3VyYXRpb25SZWYpY29uZmlndXJhdGlvblJlZgogewotICAgIGF1dG8mIHByb2Nl
c3NQb29sID0gKnRvSW1wbChjb25maWd1cmF0aW9uKS0+cHJvY2Vzc1Bvb2woKTsKLSAgICBhdXRv
IHdlYlBhZ2VDb25maWd1cmF0aW9uID0gdG9JbXBsKGNvbmZpZ3VyYXRpb24pLT53ZWJQYWdlQ29u
ZmlndXJhdGlvbigpOworICAgIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiBjb25maWd1cmF0
aW9uID0gKnRvSW1wbChjb25maWd1cmF0aW9uUmVmKTsKKyAgICBhdXRvJiBwcm9jZXNzUG9vbCA9
ICpjb25maWd1cmF0aW9uLT5wcm9jZXNzUG9vbCgpOwogCi0gICAgcmV0dXJuIFtzZWxmIGluaXRX
aXRoRnJhbWU6ZnJhbWUgcHJvY2Vzc1Bvb2w6cHJvY2Vzc1Bvb2wgY29uZmlndXJhdGlvbjp3ZWJQ
YWdlQ29uZmlndXJhdGlvbiB3ZWJWaWV3Om5pbF07CisgICAgcmV0dXJuIFtzZWxmIGluaXRXaXRo
RnJhbWU6ZnJhbWUgcHJvY2Vzc1Bvb2w6cHJvY2Vzc1Bvb2wgY29uZmlndXJhdGlvbjpXVEY6Om1v
dmUoY29uZmlndXJhdGlvbikgd2ViVmlldzpuaWxdOwogfQogCiAtIChCT09MKXdhbnRzVXBkYXRl
TGF5ZXIKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlld0ludGVy
bmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tW
aWV3SW50ZXJuYWwuaAkocmV2aXNpb24gMTg4MTI1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9tYWMvV0tWaWV3SW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgs
NyBAQAogCiBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIE9iamVjdDsKK2NsYXNzIFBhZ2VDb25maWd1
cmF0aW9uOwogfQogCiBuYW1lc3BhY2UgSVBDIHsKQEAgLTU4LDcgKzU5LDYgQEAgY2xhc3MgVmll
d1NuYXBzaG90OwogY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7CiBzdHJ1Y3QgQ29sb3JTcGFjZURhdGE7
CiBzdHJ1Y3QgRWRpdG9yU3RhdGU7Ci1zdHJ1Y3QgV2ViUGFnZUNvbmZpZ3VyYXRpb247CiB9CiAK
IEBjbGFzcyBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyOwpAQCAtNjgsOSArNjgsNyBAQCBz
dHJ1Y3QgV2ViUGFnZUNvbmZpZ3VyYXRpb247CiAjZW5kaWYKIAogQGludGVyZmFjZSBXS1ZpZXcg
KCkKLSNpZiBXS19BUElfRU5BQkxFRAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KENH
UmVjdClmcmFtZSBwcm9jZXNzUG9vbDooV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYpcHJvY2Vzc1Bv
b2wgY29uZmlndXJhdGlvbjooV2ViS2l0OjpXZWJQYWdlQ29uZmlndXJhdGlvbil3ZWJQYWdlQ29u
ZmlndXJhdGlvbiB3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3OwotI2VuZGlmCistIChpbnN0
YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lIHByb2Nlc3NQb29sOihXZWJLaXQ6
OldlYlByb2Nlc3NQb29sJilwcm9jZXNzUG9vbCBjb25maWd1cmF0aW9uOihSZWY8QVBJOjpQYWdl
Q29uZmlndXJhdGlvbj4mJiljb25maWd1cmF0aW9uIHdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZp
ZXc7CiAKIC0gKHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXQ6OkRyYXdpbmdBcmVhUHJveHk+KV9jcmVh
dGVEcmF3aW5nQXJlYVByb3h5OwogLSAoQk9PTClfaXNGb2N1c2VkOwpJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViVmlldy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViVmll
dy5jcHAJKHJldmlzaW9uIDE4ODEyNSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29y
ZGluYXRlZEdyYXBoaWNzL1dlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3
IEBACiAKICNpbmNsdWRlICJXZWJWaWV3LmgiCiAKKyNpbmNsdWRlICJBUElQYWdlQ29uZmlndXJh
dGlvbi5oIgogI2luY2x1ZGUgIkNvb3JkaW5hdGVkRHJhd2luZ0FyZWFQcm94eS5oIgogI2luY2x1
ZGUgIkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oIgogI2luY2x1ZGUgIkNvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdFByb3h5LmgiCkBAIC01MiwxMSArNTMsMTEgQEAgV2ViVmlldzo6V2ViVmlldyhX
ZWJQcm9jZXNzUG9vbCogY29udGV4dAogICAgICwgbV92aXNpYmxlKGZhbHNlKQogICAgICwgbV9v
cGFjaXR5KDEuMCkKIHsKLSAgICBXZWJQYWdlQ29uZmlndXJhdGlvbiB3ZWJQYWdlQ29uZmlndXJh
dGlvbjsKLSAgICB3ZWJQYWdlQ29uZmlndXJhdGlvbi5wYWdlR3JvdXAgPSBwYWdlR3JvdXA7Cisg
ICAgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+IHBhZ2VDb25maWd1cmF0aW9uID0gQVBJOjpQ
YWdlQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFBh
Z2VHcm91cChwYWdlR3JvdXApOwogCiAgICAgLy8gTmVlZCB0byBjYWxsIGNyZWF0ZVdlYlBhZ2Ug
YWZ0ZXIgb3RoZXIgZGF0YSBtZW1iZXJzLCBzcGVjaWZpY2FsbHkgbV92aXNpYmxlLCBhcmUgaW5p
dGlhbGl6ZWQuCi0gICAgbV9wYWdlID0gY29udGV4dC0+Y3JlYXRlV2ViUGFnZSgqdGhpcywgV1RG
Ojptb3ZlKHdlYlBhZ2VDb25maWd1cmF0aW9uKSk7CisgICAgbV9wYWdlID0gY29udGV4dC0+Y3Jl
YXRlV2ViUGFnZSgqdGhpcywgV1RGOjptb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7CiAKICAgICBt
X3BhZ2UtPnBhZ2VHcm91cCgpLnByZWZlcmVuY2VzKCkuc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0VuYWJsZWQodHJ1ZSk7CiAgICAgbV9wYWdlLT5wYWdlR3JvdXAoKS5wcmVmZXJlbmNlcygpLnNl
dEZvcmNlQ29tcG9zaXRpbmdNb2RlKHRydWUpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3LmgJKHJldmlzaW9uIDE4ODEyNSkKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC00
NSw3ICs0NSw2IEBAIGNsYXNzIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOwogY2xhc3MgV2Vi
RnJhbWVQcm94eTsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIGNsYXNzIFdlYlByb2Nlc3NQb29sOwot
c3RydWN0IFdlYlBhZ2VDb25maWd1cmF0aW9uOwogfQogCiBAaW50ZXJmYWNlIFdLQ29udGVudFZp
ZXcgOiBVSVZpZXcgewpAQCAtNjEsOCArNjAsOCBAQCBzdHJ1Y3QgV2ViUGFnZUNvbmZpZ3VyYXRp
b247CiBAcHJvcGVydHkgKG5vbmF0b21pYywgZ2V0dGVyPWlzU2hvd2luZ0luc3BlY3RvckluZGlj
YXRpb24pIEJPT0wgc2hvd2luZ0luc3BlY3RvckluZGljYXRpb247CiBAcHJvcGVydHkgKG5vbmF0
b21pYywgcmVhZG9ubHkpIEJPT0wgaXNCYWNrZ3JvdW5kOwogCi0tIChpbnN0YW5jZXR5cGUpaW5p
dFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lIHByb2Nlc3NQb29sOihXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sJilwcm9jZXNzUG9vbCBjb25maWd1cmF0aW9uOihXZWJLaXQ6OldlYlBhZ2VDb25maWd1cmF0
aW9uKXdlYlBhZ2VDb25maWd1cmF0aW9uIHdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXc7Ci0t
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lIHByb2Nlc3NQb29sOihX
ZWJLaXQ6OldlYlByb2Nlc3NQb29sJilwcm9jZXNzUG9vbCBjb25maWd1cmF0aW9uOihXZWJLaXQ6
OldlYlBhZ2VDb25maWd1cmF0aW9uKXdlYlBhZ2VDb25maWd1cmF0aW9uIHdrVmlldzooV0tWaWV3
ICopd2ViVmlldzsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihDR1JlY3QpZnJhbWUg
cHJvY2Vzc1Bvb2w6KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmKXByb2Nlc3NQb29sIGNvbmZpZ3Vy
YXRpb246KFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKWNvbmZpZ3VyYXRpb24gd2ViVmll
dzooV0tXZWJWaWV3ICopd2ViVmlldzsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihD
R1JlY3QpZnJhbWUgcHJvY2Vzc1Bvb2w6KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmKXByb2Nlc3NQ
b29sIGNvbmZpZ3VyYXRpb246KFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKWNvbmZpZ3Vy
YXRpb24gd2tWaWV3OihXS1ZpZXcgKil3ZWJWaWV3OwogCiAtICh2b2lkKWRpZFVwZGF0ZVZpc2li
bGVSZWN0OihDR1JlY3QpdmlzaWJsZVJlY3QgdW5vYnNjdXJlZFJlY3Q6KENHUmVjdCl1bm9ic2N1
cmVkUmVjdAogICAgIHVub2JzY3VyZWRSZWN0SW5TY3JvbGxWaWV3Q29vcmRpbmF0ZXM6KENHUmVj
dCl1bm9ic2N1cmVkUmVjdEluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCShyZXZpc2lvbiAxODgxMjUp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0JKHdvcmtp
bmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIFBMQVRGT1JNKElPUykKIAorI2ltcG9y
dCAiQVBJUGFnZUNvbmZpZ3VyYXRpb24uaCIKICNpbXBvcnQgIkFwcGxpY2F0aW9uU3RhdGVUcmFj
a2VyLmgiCiAjaW1wb3J0ICJQYWdlQ2xpZW50SW1wbElPUy5oIgogI2ltcG9ydCAiUmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5oIgpAQCAtMTgxLDExICsxODIsMTEgQEAgLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoRnJhbWU6KENHUmVjdClmcgogICAgIHN0ZDo6dW5pcXVlX3B0cjxBcHBs
aWNhdGlvblN0YXRlVHJhY2tlcj4gX2FwcGxpY2F0aW9uU3RhdGVUcmFja2VyOwogfQogCi0tIChp
bnN0YW5jZXR5cGUpX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aFByb2Nlc3NQb29sOihXZWJLaXQ6
OldlYlByb2Nlc3NQb29sJilwcm9jZXNzUG9vbCBjb25maWd1cmF0aW9uOihXZWJLaXQ6OldlYlBh
Z2VDb25maWd1cmF0aW9uKXdlYlBhZ2VDb25maWd1cmF0aW9uCistIChpbnN0YW5jZXR5cGUpX2Nv
bW1vbkluaXRpYWxpemF0aW9uV2l0aFByb2Nlc3NQb29sOihXZWJLaXQ6OldlYlByb2Nlc3NQb29s
Jilwcm9jZXNzUG9vbCBjb25maWd1cmF0aW9uOihSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4m
Jiljb25maWd1cmF0aW9uCiB7CiAgICAgQVNTRVJUKF9wYWdlQ2xpZW50KTsKIAotICAgIF9wYWdl
ID0gcHJvY2Vzc1Bvb2wuY3JlYXRlV2ViUGFnZSgqX3BhZ2VDbGllbnQsIFdURjo6bW92ZSh3ZWJQ
YWdlQ29uZmlndXJhdGlvbikpOworICAgIF9wYWdlID0gcHJvY2Vzc1Bvb2wuY3JlYXRlV2ViUGFn
ZSgqX3BhZ2VDbGllbnQsIFdURjo6bW92ZShjb25maWd1cmF0aW9uKSk7CiAgICAgX3BhZ2UtPmlu
aXRpYWxpemVXZWJQYWdlKCk7CiAgICAgX3BhZ2UtPnNldEludHJpbnNpY0RldmljZVNjYWxlRmFj
dG9yKFdLR2V0U2NhbGVGYWN0b3JGb3JTY3JlZW4oW1VJU2NyZWVuIG1haW5TY3JlZW5dKSk7CiAg
ICAgX3BhZ2UtPnNldFVzZUZpeGVkTGF5b3V0KHRydWUpOwpAQCAtMjE4LDcgKzIxOSw3IEBAIC0g
KGluc3RhbmNldHlwZSlfY29tbW9uSW5pdGlhbGl6YXRpb25XaXQKICAgICByZXR1cm4gc2VsZjsK
IH0KIAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KENHUmVjdClmcmFtZSBwcm9jZXNz
UG9vbDooV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYpcHJvY2Vzc1Bvb2wgY29uZmlndXJhdGlvbjoo
V2ViS2l0OjpXZWJQYWdlQ29uZmlndXJhdGlvbil3ZWJQYWdlQ29uZmlndXJhdGlvbiB3ZWJWaWV3
OihXS1dlYlZpZXcgKil3ZWJWaWV3CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dS
ZWN0KWZyYW1lIHByb2Nlc3NQb29sOihXZWJLaXQ6OldlYlByb2Nlc3NQb29sJilwcm9jZXNzUG9v
bCBjb25maWd1cmF0aW9uOihSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJiljb25maWd1cmF0
aW9uIHdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcKIHsKICAgICBpZiAoIShzZWxmID0gW3N1
cGVyIGluaXRXaXRoRnJhbWU6ZnJhbWVdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTIyOCwx
MCArMjI5LDEwIEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihDR1JlY3QpZnIKICAg
ICBfcGFnZUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZUNsaWVudEltcGw+KHNlbGYsIHdl
YlZpZXcpOwogICAgIF93ZWJWaWV3ID0gd2ViVmlldzsKIAotICAgIHJldHVybiBbc2VsZiBfY29t
bW9uSW5pdGlhbGl6YXRpb25XaXRoUHJvY2Vzc1Bvb2w6cHJvY2Vzc1Bvb2wgY29uZmlndXJhdGlv
bjp3ZWJQYWdlQ29uZmlndXJhdGlvbl07CisgICAgcmV0dXJuIFtzZWxmIF9jb21tb25Jbml0aWFs
aXphdGlvbldpdGhQcm9jZXNzUG9vbDpwcm9jZXNzUG9vbCBjb25maWd1cmF0aW9uOldURjo6bW92
ZShjb25maWd1cmF0aW9uKV07CiB9CiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihD
R1JlY3QpZnJhbWUgcHJvY2Vzc1Bvb2w6KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmKXByb2Nlc3NQ
b29sIGNvbmZpZ3VyYXRpb246KFdlYktpdDo6V2ViUGFnZUNvbmZpZ3VyYXRpb24pd2ViUGFnZUNv
bmZpZ3VyYXRpb24gd2tWaWV3OihXS1ZpZXcgKil3a1ZpZXcKKy0gKGluc3RhbmNldHlwZSlpbml0
V2l0aEZyYW1lOihDR1JlY3QpZnJhbWUgcHJvY2Vzc1Bvb2w6KFdlYktpdDo6V2ViUHJvY2Vzc1Bv
b2wmKXByb2Nlc3NQb29sIGNvbmZpZ3VyYXRpb246KFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9u
PiYmKWNvbmZpZ3VyYXRpb24gd2tWaWV3OihXS1ZpZXcgKil3a1ZpZXcKIHsKICAgICBpZiAoIShz
ZWxmID0gW3N1cGVyIGluaXRXaXRoRnJhbWU6ZnJhbWVdKSkKICAgICAgICAgcmV0dXJuIG5pbDsK
QEAgLTI0MCw3ICsyNDEsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0
KWZyCiAKICAgICBfcGFnZUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZUNsaWVudEltcGw+
KHNlbGYsIHdrVmlldyk7CiAKLSAgICByZXR1cm4gW3NlbGYgX2NvbW1vbkluaXRpYWxpemF0aW9u
V2l0aFByb2Nlc3NQb29sOnByb2Nlc3NQb29sIGNvbmZpZ3VyYXRpb246d2ViUGFnZUNvbmZpZ3Vy
YXRpb25dOworICAgIHJldHVybiBbc2VsZiBfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoUHJvY2Vz
c1Bvb2w6cHJvY2Vzc1Bvb2wgY29uZmlndXJhdGlvbjpXVEY6Om1vdmUoY29uZmlndXJhdGlvbild
OwogfQogCiAtICh2b2lkKWRlYWxsb2MK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258575</attachid>
            <date>2015-08-08 14:25:56 -0700</date>
            <delta_ts>2015-08-08 14:36:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147811-20150808142544.patch</filename>
            <type>text/plain</type>
            <size>49500</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4ODE5MCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg1IEBACisyMDE1LTA4LTA4ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVwbGFjZSBXZWJQYWdlQ29uZmlndXJh
dGlvbiB3aXRoIEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24gYW5kIGV4cG9zZSBhIEMtU1BJIGFjY2Vz
c29yIGZvciBpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQ3ODExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgLSBBZGRzIHRoZSBtaXNzaW5nIHBpZWNlcyBmcm9tIFdlYlBhZ2VDb25maWd1cmF0aW9uIGlu
dG8gQVBJOjpQYWdlQ29uZmlndXJhdGlvbi4KKyAgICAgICAgLSBBZGRzIEMtU1BJIHRvIHNldCBh
bmQgZ2V0IHRoZSBXZWJzaXRlRGF0YVN0b3JlIG9uIHRoZSBXS1BhZ2VDb25maWd1cmF0aW9uUmVm
LgorICAgICAgICAtIFVzZXMgQVBJOjpQYWdlQ29uZmlndXJhdGlvbiB0byBwYXNzIGNvbmZpZ3Vy
YXRpb24gaW5mb3JtYXRpb24gZnJvbSBXS1dlYlZpZXcvV0tWaWV3IAorICAgICAgICAgIHRvIFdl
YlBhZ2VQcm94eS4KKyAgICAgICAgLSBTdG9yZXMgdGhlIEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24g
b24gdGhlIFdlYlBhZ2VQcm94eSBhbmQgZXhwb3NlcyBhIG5ldyBDLVNQSSBmdW5jdGlvbiwKKyAg
ICAgICAgICBXS1BhZ2VDb3B5UGFnZUNvbmZpZ3VyYXRpb24sIHRvIGdldCBhIGNvcHkgb2YgaXQu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcDoKKyAg
ICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChBUEk6OlBh
Z2VDb25maWd1cmF0aW9uOjpQYWdlQ29uZmlndXJhdGlvbik6CisgICAgICAgIChBUEk6OlBhZ2VD
b25maWd1cmF0aW9uOjp+UGFnZUNvbmZpZ3VyYXRpb24pOgorICAgICAgICAoQVBJOjpQYWdlQ29u
ZmlndXJhdGlvbjo6Y29weSk6CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpwcm9j
ZXNzUG9vbCk6CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpzZXRSZWxhdGVkUGFn
ZSk6CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjp2aXNpdGVkTGlua1Byb3ZpZGVy
KToKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OnNldFZpc2l0ZWRMaW5rUHJvdmlk
ZXIpOgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6d2Vic2l0ZURhdGFTdG9yZSk6
CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpzZXRXZWJzaXRlRGF0YVN0b3JlKToK
KyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OnNlc3Npb25JRCk6CisgICAgICAgIChB
UEk6OlBhZ2VDb25maWd1cmF0aW9uOjpzZXRTZXNzaW9uSUQpOgorICAgICAgICAoQVBJOjpQYWdl
Q29uZmlndXJhdGlvbjo6d2ViUGFnZUNvbmZpZ3VyYXRpb24pOiBEZWxldGVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKEFQSTo6UGFn
ZUNvbmZpZ3VyYXRpb246OnByZWZlcmVuY2VWYWx1ZXMpOgorICAgICAgICAoQVBJOjpQYWdlQ29u
ZmlndXJhdGlvbjo6dHJlYXRzU0hBMVNpZ25lZENlcnRpZmljYXRlc0FzSW5zZWN1cmUpOgorICAg
ICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6c2V0VHJlYXRzU0hBMVNpZ25lZENlcnRpZmlj
YXRlc0FzSW5zZWN1cmUpOgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6YWx3YXlz
UnVuc0F0Rm9yZWdyb3VuZFByaW9yaXR5KToKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRp
b246OnNldEFsd2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eSk6CisgICAgICAgIChBUEk6OlBh
Z2VDb25maWd1cmF0aW9uOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdlR2V0UGFnZUdyb3VwKToKKyAgICAgICAg
KFdLUGFnZUNvcHlQYWdlQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXS1BhZ2VMb2FkVVJMKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLUGFnZUNvbmZpZ3VyYXRpb25SZWYuY3BwOgorICAgICAgICAoV0tQYWdlQ29uZmln
dXJhdGlvblNldFJlbGF0ZWRQYWdlKToKKyAgICAgICAgKFdLUGFnZUNvbmZpZ3VyYXRpb25HZXRX
ZWJzaXRlRGF0YVN0b3JlKToKKyAgICAgICAgKFdLUGFnZUNvbmZpZ3VyYXRpb25TZXRXZWJzaXRl
RGF0YVN0b3JlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlQ29uZmlndXJhdGlv
blJlZi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAg
ICAgICAoLVtXS1dlYlZpZXcgaW5pdFdpdGhGcmFtZTpjb25maWd1cmF0aW9uOl0pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvaW9zL1dLVmlld0lPUy5tbToKKyAgICAgICAgKC1bV0tWaWV3IF9j
b21tb25Jbml0aWFsaXphdGlvbldpdGhDb250ZXh0UmVmOnBhZ2VHcm91cFJlZjpyZWxhdGVkVG9Q
YWdlOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbToKKyAgICAgICAg
KC1bV0tWaWV3IF9zZXRQcmltYXJ5VHJhY2tpbmdBcmVhOl0pOgorICAgICAgICAoLVtXS1ZpZXcg
aW5pdFdpdGhGcmFtZTpwcm9jZXNzUG9vbDpjb25maWd1cmF0aW9uOndlYlZpZXc6XSk6CisgICAg
ICAgICgtW1dLVmlldyBpbml0V2l0aEZyYW1lOmNvbnRleHRSZWY6cGFnZUdyb3VwUmVmOnJlbGF0
ZWRUb1BhZ2U6XSk6CisgICAgICAgICgtW1dLVmlldyBpbml0V2l0aEZyYW1lOmNvbmZpZ3VyYXRp
b25SZWY6XSk6CisgICAgICAgICgtW1dLVmlldyB3YW50c1VwZGF0ZUxheWVyXSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50ZXJuYWwuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVh
dGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6fldlYlBhZ2VQcm94eSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6Y29uZmlndXJhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6cHJvY2Vzc0lkZW50aWZpZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwYWdlSUQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNlc3Npb25JRCk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNy
ZWF0ZU5ld1dlYlByb2Nlc3NSZXNwZWN0aW5nUHJvY2Vzc0NvdW50TGltaXQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQb29sOjpkb3dubG9hZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6d2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQcm94eTo6Y3JlYXRlV2ViUGFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnByb2Nl
c3NQb29sKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW06CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aFByb2Nlc3NQb29sOmNvbmZpZ3VyYXRpb246
XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgaW5pdFdpdGhGcmFtZTpwcm9jZXNzUG9vbDpj
b25maWd1cmF0aW9uOndlYlZpZXc6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgaW5pdFdp
dGhGcmFtZTpwcm9jZXNzUG9vbDpjb25maWd1cmF0aW9uOndrVmlldzpdKToKKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyBkZWFsbG9jXSk6CisKIDIwMTUtMDgtMDcgIEZpbGlwIFBpemxvICA8ZnBp
emxvQGFwcGxlLmNvbT4KIAogICAgICAgICBMaWdodHdlaWdodCBsb2NrcyBzaG91bGQgYmUgYWRh
cHRpdmUKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShy
ZXZpc2lvbiAxODgxOTApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIkFQSU5hdmln
YXRpb25BY3Rpb24uaCIKICNpbmNsdWRlICJBUElOYXZpZ2F0aW9uQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiQVBJTmF2aWdhdGlvblJlc3BvbnNlLmgiCisjaW5jbHVkZSAiQVBJUGFnZUNvbmZpZ3VyYXRp
b24uaCIKICNpbmNsdWRlICJBUElQb2xpY3lDbGllbnQuaCIKICNpbmNsdWRlICJBUElTZWN1cml0
eU9yaWdpbi5oIgogI2luY2x1ZGUgIkFQSVVJQ2xpZW50LmgiCkBAIC0yOTMsMTMgKzI5NCwxNCBA
QCBwcml2YXRlOgogICAgIFBhZ2VDbGllbnQmIG1fcGFnZUNsaWVudDsKIH07CiAKLVJlZjxXZWJQ
YWdlUHJveHk+IFdlYlBhZ2VQcm94eTo6Y3JlYXRlKFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdl
YlByb2Nlc3NQcm94eSYgcHJvY2VzcywgdWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJQYWdlQ29u
ZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKK1JlZjxXZWJQYWdlUHJveHk+IFdlYlBhZ2VQcm94
eTo6Y3JlYXRlKFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2Vz
cywgdWludDY0X3QgcGFnZUlELCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJiBjb25maWd1
cmF0aW9uKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlBhZ2VQcm94eShwYWdlQ2xp
ZW50LCBwcm9jZXNzLCBwYWdlSUQsIGNvbmZpZ3VyYXRpb24pKTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBXZWJQYWdlUHJveHkocGFnZUNsaWVudCwgcHJvY2VzcywgcGFnZUlELCBXVEY6Om1v
dmUoY29uZmlndXJhdGlvbikpKTsKIH0KIAotV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFn
ZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCB1aW50NjRfdCBw
YWdlSUQsIGNvbnN0IFdlYlBhZ2VDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQorV2ViUGFn
ZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1By
b3h5JiBwcm9jZXNzLCB1aW50NjRfdCBwYWdlSUQsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9u
PiYmIGNvbmZpZ3VyYXRpb24pCiAgICAgOiBtX3BhZ2VDbGllbnQocGFnZUNsaWVudCkKKyAgICAs
IG1fY29uZmlndXJhdGlvbihXVEY6Om1vdmUoY29uZmlndXJhdGlvbikpCiAgICAgLCBtX2xvYWRl
ckNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6TG9hZGVyQ2xpZW50PigpKQogICAgICwgbV9w
b2xpY3lDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OlBvbGljeUNsaWVudD4oKSkKICAgICAs
IG1fZm9ybUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6Rm9ybUNsaWVudD4oKSkKQEAgLTMx
MSwxNCArMzEzLDE0IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHAK
ICNlbmRpZgogICAgICwgbV9uYXZpZ2F0aW9uU3RhdGUoc3RkOjptYWtlX3VuaXF1ZTxXZWJOYXZp
Z2F0aW9uU3RhdGU+KCkpCiAgICAgLCBtX3Byb2Nlc3MocHJvY2VzcykKLSAgICAsIG1fcGFnZUdy
b3VwKCpjb25maWd1cmF0aW9uLnBhZ2VHcm91cCkKLSAgICAsIG1fcHJlZmVyZW5jZXMoKmNvbmZp
Z3VyYXRpb24ucHJlZmVyZW5jZXMpCi0gICAgLCBtX3VzZXJDb250ZW50Q29udHJvbGxlcihjb25m
aWd1cmF0aW9uLnVzZXJDb250ZW50Q29udHJvbGxlcikKLSAgICAsIG1fdmlzaXRlZExpbmtQcm92
aWRlcigqY29uZmlndXJhdGlvbi52aXNpdGVkTGlua1Byb3ZpZGVyKQotICAgICwgbV93ZWJzaXRl
RGF0YVN0b3JlKCpjb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUpCisgICAgLCBtX3BhZ2VH
cm91cCgqbV9jb25maWd1cmF0aW9uLT5wYWdlR3JvdXAoKSkKKyAgICAsIG1fcHJlZmVyZW5jZXMo
Km1fY29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKSkKKyAgICAsIG1fdXNlckNvbnRlbnRDb250
cm9sbGVyKG1fY29uZmlndXJhdGlvbi0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkpCisgICAgLCBt
X3Zpc2l0ZWRMaW5rUHJvdmlkZXIoKm1fY29uZmlndXJhdGlvbi0+dmlzaXRlZExpbmtQcm92aWRl
cigpKQorICAgICwgbV93ZWJzaXRlRGF0YVN0b3JlKG1fY29uZmlndXJhdGlvbi0+d2Vic2l0ZURh
dGFTdG9yZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCkpCiAgICAgLCBtX21haW5GcmFtZShudWxscHRy
KQogICAgICwgbV91c2VyQWdlbnQoc3RhbmRhcmRVc2VyQWdlbnQoKSkKLSAgICAsIG1fdHJlYXRz
U0hBMUNlcnRpZmljYXRlc0FzSW5zZWN1cmUoY29uZmlndXJhdGlvbi50cmVhdHNTSEExU2lnbmVk
Q2VydGlmaWNhdGVzQXNJbnNlY3VyZSkKKyAgICAsIG1fdHJlYXRzU0hBMUNlcnRpZmljYXRlc0Fz
SW5zZWN1cmUobV9jb25maWd1cmF0aW9uLT50cmVhdHNTSEExU2lnbmVkQ2VydGlmaWNhdGVzQXNJ
bnNlY3VyZSgpKQogI2lmIFBMQVRGT1JNKElPUykKICAgICAsIG1faGFzUmVjZWl2ZWRMYXllclRy
ZWVUcmFuc2FjdGlvbkFmdGVyRGlkQ29tbWl0TG9hZCh0cnVlKQogICAgICwgbV9maXJzdExheWVy
VHJlZVRyYW5zYWN0aW9uSWRBZnRlckRpZENvbW1pdExvYWQoMCkKQEAgLTMzNSw3ICszMzcsNyBA
QCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwCiAgICAgLCBtX3ZpZXdT
dGF0ZShWaWV3U3RhdGU6Ok5vRmxhZ3MpCiAgICAgLCBtX3ZpZXdXYXNFdmVySW5XaW5kb3coZmFs
c2UpCiAjaWYgUExBVEZPUk0oSU9TKQotICAgICwgbV9hbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJp
b3JpdHkoY29uZmlndXJhdGlvbi5hbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHkpCisgICAg
LCBtX2Fsd2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eShtX2NvbmZpZ3VyYXRpb24tPmFsd2F5
c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eSgpKQogI2VuZGlmCiAgICAgLCBtX2JhY2tGb3J3YXJk
TGlzdChXZWJCYWNrRm9yd2FyZExpc3Q6OmNyZWF0ZSgqdGhpcykpCiAgICAgLCBtX21haW50YWlu
c0luYWN0aXZlU2VsZWN0aW9uKGZhbHNlKQpAQCAtMzc5LDcgKzM4MSw3IEBAIFdlYlBhZ2VQcm94
eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHAKICAgICAsIG1faXNUcmFja2luZ1RvdWNoRXZl
bnRzKGZhbHNlKQogI2VuZGlmCiAgICAgLCBtX3BhZ2VJRChwYWdlSUQpCi0gICAgLCBtX3Nlc3Np
b25JRChjb25maWd1cmF0aW9uLnNlc3Npb25JRCkKKyAgICAsIG1fc2Vzc2lvbklEKG1fY29uZmln
dXJhdGlvbi0+c2Vzc2lvbklEKCkpCiAgICAgLCBtX2lzUGFnZVN1c3BlbmRlZChmYWxzZSkKICAg
ICAsIG1fYWRkc1Zpc2l0ZWRMaW5rcyh0cnVlKQogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9S
KQpAQCAtNDM2LDcgKzQzOCw3IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGll
bnQmIHAKICNlbmRpZgogICAgICwgbV9zY3JvbGxQaW5uaW5nQmVoYXZpb3IoRG9Ob3RQaW4pCiAg
ICAgLCBtX25hdmlnYXRpb25JRCgwKQotICAgICwgbV9jb25maWd1cmF0aW9uUHJlZmVyZW5jZVZh
bHVlcyhjb25maWd1cmF0aW9uLnByZWZlcmVuY2VWYWx1ZXMpCisgICAgLCBtX2NvbmZpZ3VyYXRp
b25QcmVmZXJlbmNlVmFsdWVzKG1fY29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpKQog
ICAgICwgbV9wb3RlbnRpYWxseUNoYW5nZWRWaWV3U3RhdGVGbGFncyhWaWV3U3RhdGU6Ok5vRmxh
Z3MpCiAgICAgLCBtX3ZpZXdTdGF0ZUNoYW5nZVdhbnRzU3luY2hyb25vdXNSZXBseShmYWxzZSkK
IHsKQEAgLTUxOCw2ICs1MjAsMTEgQEAgV2ViUGFnZVByb3h5Ojp+V2ViUGFnZVByb3h5KCkKICNl
bmRpZgogfQogCitjb25zdCBBUEk6OlBhZ2VDb25maWd1cmF0aW9uJiBXZWJQYWdlUHJveHk6OmNv
bmZpZ3VyYXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbmZpZ3VyYXRpb24uZ2V0KCk7
Cit9CisKIFBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIgV2ViUGFnZVByb3h5Ojpwcm9jZXNzSWRl
bnRpZmllcigpIGNvbnN0CiB7CiAgICAgaWYgKG1faXNDbG9zZWQpCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAxODgxOTApCisrKyBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1NCwy
OCArMjU0LDYgQEAgdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgV2ViQ29yZTo6SQogdHlw
ZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgV2ViQ29yZTo6TWFjaFNlbmRSaWdodCY+IE1hY2hT
ZW5kUmlnaHRDYWxsYmFjazsKICNlbmRpZgogCi1zdHJ1Y3QgV2ViUGFnZUNvbmZpZ3VyYXRpb24g
ewotICAgIFdlYlBhZ2VHcm91cCogcGFnZUdyb3VwID0gbnVsbHB0cjsKLSAgICBXZWJQcmVmZXJl
bmNlcyogcHJlZmVyZW5jZXMgPSBudWxscHRyOwotICAgIFdlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5KiB1c2VyQ29udGVudENvbnRyb2xsZXIgPSBudWxscHRyOwotICAgIFZpc2l0ZWRMaW5r
UHJvdmlkZXIqIHZpc2l0ZWRMaW5rUHJvdmlkZXIgPSBudWxscHRyOwotCi0gICAgV2Vic2l0ZURh
dGFTdG9yZSogd2Vic2l0ZURhdGFTdG9yZSA9IG51bGxwdHI7Ci0gICAgLy8gRklYTUU6IFdlIGN1
cnJlbnRseSBoYXZlIHRvIHBhc3MgdGhlIHNlc3Npb24gSUQgc2VwYXJhdGVseSBoZXJlIHRvIHN1
cHBvcnQgdGhlIGxlZ2FjeSBwcml2YXRlIGJyb3dzaW5nIHNlc3Npb24uCi0gICAgLy8gT25jZSB3
ZSBnZXQgcmlkIG9mIGl0IHdlIHNob3VsZCBnZXQgcmlkIG9mIHRoaXMgY29uZmlndXJhdGlvbiBw
YXJhbWV0ZXIgYXMgd2VsbC4KLSAgICBXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEOwotCi0g
ICAgV2ViUGFnZVByb3h5KiByZWxhdGVkUGFnZSA9IG51bGxwdHI7Ci0KLSAgICBib29sIHRyZWF0
c1NIQTFTaWduZWRDZXJ0aWZpY2F0ZXNBc0luc2VjdXJlID0gZmFsc2U7Ci0KLSNpZiBQTEFURk9S
TShJT1MpCi0gICAgYm9vbCBhbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHkgPSBmYWxzZTsK
LSNlbmRpZgotCi0gICAgV2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWVNYXAgcHJlZmVyZW5jZVZh
bHVlczsKLX07Ci0KIGNsYXNzIFdlYlBhZ2VQcm94eSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8
QVBJOjpPYmplY3Q6OlR5cGU6OlBhZ2U+CiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCiAg
ICAgLCBwdWJsaWMgV2ViQ29sb3JQaWNrZXI6OkNsaWVudApAQCAtMjg3LDkgKzI2NSwxMSBAQCBj
bGFzcyBXZWJQYWdlUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJCiAgICAgLCBwdWJsaWMgSVBD
OjpNZXNzYWdlUmVjZWl2ZXIKICAgICAsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIgewogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8V2ViUGFnZVByb3h5PiBjcmVhdGUoUGFnZUNsaWVudCYsIFdl
YlByb2Nlc3NQcm94eSYsIHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViUGFnZUNvbmZpZ3VyYXRp
b24mKTsKKyAgICBzdGF0aWMgUmVmPFdlYlBhZ2VQcm94eT4gY3JlYXRlKFBhZ2VDbGllbnQmLCBX
ZWJQcm9jZXNzUHJveHkmLCB1aW50NjRfdCBwYWdlSUQsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0
aW9uPiYmKTsKICAgICB2aXJ0dWFsIH5XZWJQYWdlUHJveHkoKTsKIAorICAgIGNvbnN0IEFQSTo6
UGFnZUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24oKSBjb25zdDsKKwogICAgIHVpbnQ2NF90
IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEOyB9CiAgICAgV2ViQ29yZTo6U2Vzc2lv
bklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbklEOyB9CiAgICAgdm9pZCBz
ZXRTZXNzaW9uSUQoV2ViQ29yZTo6U2Vzc2lvbklEKTsKQEAgLTEwODQsNyArMTA2NCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGNsZWFyV2hlZWxFdmVudFRlc3RUcmlnZ2VyKCk7CiAKIHByaXZhdGU6
Ci0gICAgV2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJveHkmLCB1aW50NjRf
dCBwYWdlSUQsIGNvbnN0IFdlYlBhZ2VDb25maWd1cmF0aW9uJik7CisgICAgV2ViUGFnZVByb3h5
KFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJveHkmLCB1aW50NjRfdCBwYWdlSUQsIFJlZjxBUEk6
OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwog
CiAgICAgdm9pZCB1cGRhdGVWaWV3U3RhdGUoV2ViQ29yZTo6Vmlld1N0YXRlOjpGbGFncyBmbGFn
c1RvVXBkYXRlID0gV2ViQ29yZTo6Vmlld1N0YXRlOjpBbGxGbGFncyk7CkBAIC0xNDg4LDYgKzE0
NjgsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgaGFuZGxlU3luY2hyb25vdXNNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUsIGNvbnN0IFVzZXJEYXRhJiBt
ZXNzYWdlQm9keSwgVXNlckRhdGEmIHJldHVyblVzZXJEYXRhKTsKIAogICAgIFBhZ2VDbGllbnQm
IG1fcGFnZUNsaWVudDsKKyAgICBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4gbV9jb25maWd1
cmF0aW9uOworCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6TG9hZGVyQ2xpZW50PiBtX2xvYWRl
ckNsaWVudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpQb2xpY3lDbGllbnQ+IG1fcG9saWN5
Q2xpZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6Ok5hdmlnYXRpb25DbGllbnQ+IG1fbmF2
aWdhdGlvbkNsaWVudDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcAkocmV2aXNpb24gMTg4MTkwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2lu
Y2x1ZGUgIkFQSUFycmF5LmgiCiAjaW5jbHVkZSAiQVBJRG93bmxvYWRDbGllbnQuaCIKICNpbmNs
dWRlICJBUElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudC5oIgorI2luY2x1ZGUgIkFQSVBhZ2VD
b25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgi
CiAjaW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJE
b3dubG9hZFByb3h5LmgiCkBAIC04MzEsMTggKzgzMiwxOCBAQCBXZWJQcm9jZXNzUHJveHkmIFdl
YlByb2Nlc3NQb29sOjpjcmVhdGVOCiAgICAgcmV0dXJuICpwcm9jZXNzOwogfQogCi1QYXNzUmVm
UHRyPFdlYlBhZ2VQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVu
dCYgcGFnZUNsaWVudCwgV2ViUGFnZUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbikKK1Bhc3NS
ZWZQdHI8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xp
ZW50JiBwYWdlQ2xpZW50LCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJiBwYWdlQ29uZmln
dXJhdGlvbikKIHsKLSAgICBpZiAoIWNvbmZpZ3VyYXRpb24ucGFnZUdyb3VwKQotICAgICAgICBj
b25maWd1cmF0aW9uLnBhZ2VHcm91cCA9IG1fZGVmYXVsdFBhZ2VHcm91cC5wdHIoKTsKLSAgICBp
ZiAoIWNvbmZpZ3VyYXRpb24ucHJlZmVyZW5jZXMpCi0gICAgICAgIGNvbmZpZ3VyYXRpb24ucHJl
ZmVyZW5jZXMgPSAmY29uZmlndXJhdGlvbi5wYWdlR3JvdXAtPnByZWZlcmVuY2VzKCk7Ci0gICAg
aWYgKCFjb25maWd1cmF0aW9uLnZpc2l0ZWRMaW5rUHJvdmlkZXIpCi0gICAgICAgIGNvbmZpZ3Vy
YXRpb24udmlzaXRlZExpbmtQcm92aWRlciA9IG1fdmlzaXRlZExpbmtQcm92aWRlci5wdHIoKTsK
LSAgICBpZiAoIWNvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSkgewotICAgICAgICBBU1NF
UlQoIWNvbmZpZ3VyYXRpb24uc2Vzc2lvbklELmlzVmFsaWQoKSk7Ci0gICAgICAgIGNvbmZpZ3Vy
YXRpb24ud2Vic2l0ZURhdGFTdG9yZSA9ICZtX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRh
U3RvcmUoKTsKLSAgICAgICAgY29uZmlndXJhdGlvbi5zZXNzaW9uSUQgPSBjb25maWd1cmF0aW9u
LnByZWZlcmVuY2VzLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkgPyBTZXNzaW9uSUQ6OmxlZ2Fj
eVByaXZhdGVTZXNzaW9uSUQoKSA6IFNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpOworICAg
IGlmICghcGFnZUNvbmZpZ3VyYXRpb24tPnBhZ2VHcm91cCgpKQorICAgICAgICBwYWdlQ29uZmln
dXJhdGlvbi0+c2V0UGFnZUdyb3VwKG1fZGVmYXVsdFBhZ2VHcm91cC5wdHIoKSk7CisgICAgaWYg
KCFwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKSkKKyAgICAgICAgcGFnZUNvbmZpZ3Vy
YXRpb24tPnNldFByZWZlcmVuY2VzKCZwYWdlQ29uZmlndXJhdGlvbi0+cGFnZUdyb3VwKCktPnBy
ZWZlcmVuY2VzKCkpOworICAgIGlmICghcGFnZUNvbmZpZ3VyYXRpb24tPnZpc2l0ZWRMaW5rUHJv
dmlkZXIoKSkKKyAgICAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFZpc2l0ZWRMaW5rUHJvdmlk
ZXIobV92aXNpdGVkTGlua1Byb3ZpZGVyLnB0cigpKTsKKyAgICBpZiAoIXBhZ2VDb25maWd1cmF0
aW9uLT53ZWJzaXRlRGF0YVN0b3JlKCkpIHsKKyAgICAgICAgQVNTRVJUKCFwYWdlQ29uZmlndXJh
dGlvbi0+c2Vzc2lvbklEKCkuaXNWYWxpZCgpKTsKKyAgICAgICAgcGFnZUNvbmZpZ3VyYXRpb24t
PnNldFdlYnNpdGVEYXRhU3RvcmUobV93ZWJzaXRlRGF0YVN0b3JlLmdldCgpKTsKKyAgICAgICAg
cGFnZUNvbmZpZ3VyYXRpb24tPnNldFNlc3Npb25JRChwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVy
ZW5jZXMoKS0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpID8gU2Vzc2lvbklEOjpsZWdhY3lQcml2
YXRlU2Vzc2lvbklEKCkgOiBTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CiAgICAgfQog
CiAgICAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gcHJvY2VzczsKQEAgLTg1MiwxNCArODUzLDE0
IEBAIFBhc3NSZWZQdHI8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUG9vbDoKICAgICAgICAgaWYg
KG1faGF2ZUluaXRpYWxFbXB0eVByb2Nlc3MpIHsKICAgICAgICAgICAgIHByb2Nlc3MgPSBtX3By
b2Nlc3Nlcy5sYXN0KCk7CiAgICAgICAgICAgICBtX2hhdmVJbml0aWFsRW1wdHlQcm9jZXNzID0g
ZmFsc2U7Ci0gICAgICAgIH0gZWxzZSBpZiAoY29uZmlndXJhdGlvbi5yZWxhdGVkUGFnZSkgewor
ICAgICAgICB9IGVsc2UgaWYgKHBhZ2VDb25maWd1cmF0aW9uLT5yZWxhdGVkUGFnZSgpKSB7CiAg
ICAgICAgICAgICAvLyBTaGFyaW5nIHByb2Nlc3NlcywgZS5nLiB3aGVuIGNyZWF0aW5nIHRoZSBw
YWdlIHZpYSB3aW5kb3cub3BlbigpLgotICAgICAgICAgICAgcHJvY2VzcyA9ICZjb25maWd1cmF0
aW9uLnJlbGF0ZWRQYWdlLT5wcm9jZXNzKCk7CisgICAgICAgICAgICBwcm9jZXNzID0gJnBhZ2VD
b25maWd1cmF0aW9uLT5yZWxhdGVkUGFnZSgpLT5wcm9jZXNzKCk7CiAgICAgICAgIH0gZWxzZQog
ICAgICAgICAgICAgcHJvY2VzcyA9ICZjcmVhdGVOZXdXZWJQcm9jZXNzUmVzcGVjdGluZ1Byb2Nl
c3NDb3VudExpbWl0KCk7CiAgICAgfQogCi0gICAgcmV0dXJuIHByb2Nlc3MtPmNyZWF0ZVdlYlBh
Z2UocGFnZUNsaWVudCwgV1RGOjptb3ZlKGNvbmZpZ3VyYXRpb24pKTsKKyAgICByZXR1cm4gcHJv
Y2Vzcy0+Y3JlYXRlV2ViUGFnZShwYWdlQ2xpZW50LCBXVEY6Om1vdmUocGFnZUNvbmZpZ3VyYXRp
b24pKTsKIH0KIAogRG93bmxvYWRQcm94eSogV2ViUHJvY2Vzc1Bvb2w6OmRvd25sb2FkKFdlYlBh
Z2VQcm94eSogaW5pdGlhdGluZ1BhZ2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCShyZXZpc2lv
biAxODgxOTApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAko
d29ya2luZyBjb3B5KQpAQCAtNzYsNiArNzYsNyBAQCBPQkpDX0NMQVNTIE5TU3RyaW5nOwogbmFt
ZXNwYWNlIEFQSSB7CiBjbGFzcyBEb3dubG9hZENsaWVudDsKIGNsYXNzIExlZ2FjeUNvbnRleHRI
aXN0b3J5Q2xpZW50OworY2xhc3MgUGFnZUNvbmZpZ3VyYXRpb247CiB9CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewpAQCAtODYsNyArODcsNiBAQCBjbGFzcyBXZWJJY29uRGF0YWJhc2U7CiBjbGFzcyBX
ZWJQYWdlR3JvdXA7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiBzdHJ1Y3QgU3RhdGlzdGljc0RhdGE7
Ci1zdHJ1Y3QgV2ViUGFnZUNvbmZpZ3VyYXRpb247CiBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVyczsKICAgICAKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPEFQSTo6RGljdGlvbmFy
eSo+IERpY3Rpb25hcnlDYWxsYmFjazsKQEAgLTE3MSw3ICsxNzEsNyBAQCBwdWJsaWM6CiAKICAg
ICBBUEk6OldlYnNpdGVEYXRhU3RvcmUqIHdlYnNpdGVEYXRhU3RvcmUoKSBjb25zdCB7IHJldHVy
biBtX3dlYnNpdGVEYXRhU3RvcmUuZ2V0KCk7IH0KIAotICAgIFBhc3NSZWZQdHI8V2ViUGFnZVBy
b3h5PiBjcmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmLCBXZWJQYWdlQ29uZmlndXJhdGlvbik7Cisg
ICAgUGFzc1JlZlB0cjxXZWJQYWdlUHJveHk+IGNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYsIFJl
ZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsKIAogICAgIGNvbnN0IFN0cmluZyYgaW5qZWN0
ZWRCdW5kbGVQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9jb25maWd1cmF0aW9uLT5pbmplY3RlZEJ1
bmRsZVBhdGgoKTsgfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmNwcAkocmV2aXNpb24gMTg4MTkwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwNiwxMCArMjA2LDEw
IEBAIFdlYlBhZ2VQcm94eSogV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHUKICAgICByZXR1cm4g
Z2xvYmFsUGFnZU1hcCgpLmdldChwYWdlSUQpOwogfQogCi1SZWY8V2ViUGFnZVByb3h5PiBXZWJQ
cm9jZXNzUHJveHk6OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgY29uc3Qg
V2ViUGFnZUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCitSZWY8V2ViUGFnZVByb3h5PiBX
ZWJQcm9jZXNzUHJveHk6OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgUmVm
PEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYgcGFnZUNvbmZpZ3VyYXRpb24pCiB7CiAgICAgdWlu
dDY0X3QgcGFnZUlEID0gZ2VuZXJhdGVQYWdlSUQoKTsKLSAgICBSZWY8V2ViUGFnZVByb3h5PiB3
ZWJQYWdlID0gV2ViUGFnZVByb3h5OjpjcmVhdGUocGFnZUNsaWVudCwgKnRoaXMsIHBhZ2VJRCwg
Y29uZmlndXJhdGlvbik7CisgICAgUmVmPFdlYlBhZ2VQcm94eT4gd2ViUGFnZSA9IFdlYlBhZ2VQ
cm94eTo6Y3JlYXRlKHBhZ2VDbGllbnQsICp0aGlzLCBwYWdlSUQsIFdURjo6bW92ZShwYWdlQ29u
ZmlndXJhdGlvbikpOwogCiAgICAgbV9wYWdlTWFwLnNldChwYWdlSUQsIHdlYlBhZ2UucHRyKCkp
OwogICAgIGdsb2JhbFBhZ2VNYXAoKS5zZXQocGFnZUlELCB3ZWJQYWdlLnB0cigpKTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgJKHJldmlzaW9uIDE4
ODE5MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAkod29y
a2luZyBjb3B5KQpAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6CiAgICAgV2ViUHJvY2Vzc1Bvb2wm
IHByb2Nlc3NQb29sKCkgeyByZXR1cm4gbV9wcm9jZXNzUG9vbDsgfQogCiAgICAgc3RhdGljIFdl
YlBhZ2VQcm94eSogd2ViUGFnZSh1aW50NjRfdCBwYWdlSUQpOwotICAgIFJlZjxXZWJQYWdlUHJv
eHk+IGNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYsIGNvbnN0IFdlYlBhZ2VDb25maWd1cmF0aW9u
Jik7CisgICAgUmVmPFdlYlBhZ2VQcm94eT4gY3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiwgUmVm
PEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpOwogICAgIHZvaWQgYWRkRXhpc3RpbmdXZWJQYWdl
KFdlYlBhZ2VQcm94eSosIHVpbnQ2NF90IHBhZ2VJRCk7CiAgICAgdm9pZCByZW1vdmVXZWJQYWdl
KHVpbnQ2NF90IHBhZ2VJRCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
QVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwCShyZXZpc2lvbiAxODgxOTApCisr
KyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsMTEgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsK
IAogbmFtZXNwYWNlIEFQSSB7CiAKK1JlZjxQYWdlQ29uZmlndXJhdGlvbj4gUGFnZUNvbmZpZ3Vy
YXRpb246OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGFnZUNvbmZpZ3Vy
YXRpb24pOworfQorCiBQYWdlQ29uZmlndXJhdGlvbjo6UGFnZUNvbmZpZ3VyYXRpb24oKQogewog
fQpAQCAtNDUsNiArNTAsMjkgQEAgUGFnZUNvbmZpZ3VyYXRpb246On5QYWdlQ29uZmlndXJhdGlv
bigpCiB7CiB9CiAKK1JlZjxQYWdlQ29uZmlndXJhdGlvbj4gUGFnZUNvbmZpZ3VyYXRpb246OmNv
cHkoKSBjb25zdAoreworICAgIGF1dG8gY29weSA9IHRoaXMtPmNyZWF0ZSgpOworCisgICAgY29w
eS0+bV9wcm9jZXNzUG9vbCA9IHRoaXMtPm1fcHJvY2Vzc1Bvb2w7CisgICAgY29weS0+bV91c2Vy
Q29udGVudENvbnRyb2xsZXIgPSB0aGlzLT5tX3VzZXJDb250ZW50Q29udHJvbGxlcjsKKyAgICBj
b3B5LT5tX3BhZ2VHcm91cCA9IHRoaXMtPm1fcGFnZUdyb3VwOworICAgIGNvcHktPm1fcHJlZmVy
ZW5jZXMgPSB0aGlzLT5tX3ByZWZlcmVuY2VzOworICAgIGNvcHktPm1fcHJlZmVyZW5jZVZhbHVl
cyA9IHRoaXMtPm1fcHJlZmVyZW5jZVZhbHVlczsKKyAgICBjb3B5LT5tX3JlbGF0ZWRQYWdlID0g
dGhpcy0+bV9yZWxhdGVkUGFnZTsKKyAgICBjb3B5LT5tX3Zpc2l0ZWRMaW5rUHJvdmlkZXIgPSB0
aGlzLT5tX3Zpc2l0ZWRMaW5rUHJvdmlkZXI7CisgICAgY29weS0+bV93ZWJzaXRlRGF0YVN0b3Jl
ID0gdGhpcy0+bV93ZWJzaXRlRGF0YVN0b3JlOworICAgIGNvcHktPm1fc2Vzc2lvbklEID0gdGhp
cy0+bV9zZXNzaW9uSUQ7CisgICAgY29weS0+bV90cmVhdHNTSEExU2lnbmVkQ2VydGlmaWNhdGVz
QXNJbnNlY3VyZSA9IHRoaXMtPm1fdHJlYXRzU0hBMVNpZ25lZENlcnRpZmljYXRlc0FzSW5zZWN1
cmU7CisKKyNpZiBQTEFURk9STShJT1MpCisgICAgY29weS0+bV9hbHdheXNSdW5zQXRGb3JlZ3Jv
dW5kUHJpb3JpdHkgPSB0aGlzLT5tX2Fsd2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eTsKKyNl
bmRpZgorCisgICAgcmV0dXJuIGNvcHk7Cit9CisKKwogV2ViUHJvY2Vzc1Bvb2wqIFBhZ2VDb25m
aWd1cmF0aW9uOjpwcm9jZXNzUG9vbCgpCiB7CiAgICAgcmV0dXJuIG1fcHJvY2Vzc1Bvb2wuZ2V0
KCk7CkBAIC05NSwxNiArMTIzLDM1IEBAIHZvaWQgUGFnZUNvbmZpZ3VyYXRpb246OnNldFJlbGF0
ZWRQYWdlKFcKICAgICBtX3JlbGF0ZWRQYWdlID0gcmVsYXRlZFBhZ2U7CiB9CiAKLVdlYktpdDo6
V2ViUGFnZUNvbmZpZ3VyYXRpb24gUGFnZUNvbmZpZ3VyYXRpb246OndlYlBhZ2VDb25maWd1cmF0
aW9uKCkKKworVmlzaXRlZExpbmtQcm92aWRlciogUGFnZUNvbmZpZ3VyYXRpb246OnZpc2l0ZWRM
aW5rUHJvdmlkZXIoKQogewotICAgIFdlYktpdDo6V2ViUGFnZUNvbmZpZ3VyYXRpb24gY29uZmln
dXJhdGlvbjsKKyAgICByZXR1cm4gbV92aXNpdGVkTGlua1Byb3ZpZGVyLmdldCgpOworfQogCi0g
ICAgY29uZmlndXJhdGlvbi51c2VyQ29udGVudENvbnRyb2xsZXIgPSB1c2VyQ29udGVudENvbnRy
b2xsZXIoKTsKLSAgICBjb25maWd1cmF0aW9uLnBhZ2VHcm91cCA9IHBhZ2VHcm91cCgpOwotICAg
IGNvbmZpZ3VyYXRpb24ucHJlZmVyZW5jZXMgPSBwcmVmZXJlbmNlcygpOwotICAgIGNvbmZpZ3Vy
YXRpb24ucmVsYXRlZFBhZ2UgPSByZWxhdGVkUGFnZSgpOwordm9pZCBQYWdlQ29uZmlndXJhdGlv
bjo6c2V0VmlzaXRlZExpbmtQcm92aWRlcihWaXNpdGVkTGlua1Byb3ZpZGVyKiB2aXNpdGVkTGlu
a1Byb3ZpZGVyKQoreworICAgIG1fdmlzaXRlZExpbmtQcm92aWRlciA9IHZpc2l0ZWRMaW5rUHJv
dmlkZXI7Cit9CisKK0FQSTo6V2Vic2l0ZURhdGFTdG9yZSogUGFnZUNvbmZpZ3VyYXRpb246Ondl
YnNpdGVEYXRhU3RvcmUoKQoreworICAgIHJldHVybiBtX3dlYnNpdGVEYXRhU3RvcmUuZ2V0KCk7
Cit9CiAKLSAgICByZXR1cm4gY29uZmlndXJhdGlvbjsKK3ZvaWQgUGFnZUNvbmZpZ3VyYXRpb246
OnNldFdlYnNpdGVEYXRhU3RvcmUoQVBJOjpXZWJzaXRlRGF0YVN0b3JlKiB3ZWJzaXRlRGF0YVN0
b3JlKQoreworICAgIG1fd2Vic2l0ZURhdGFTdG9yZSA9IHdlYnNpdGVEYXRhU3RvcmU7Cit9CisK
K1dlYkNvcmU6OlNlc3Npb25JRCBQYWdlQ29uZmlndXJhdGlvbjo6c2Vzc2lvbklEKCkKK3sKKyAg
ICByZXR1cm4gbV9zZXNzaW9uSUQ7Cit9CisKK3ZvaWQgUGFnZUNvbmZpZ3VyYXRpb246OnNldFNl
c3Npb25JRChXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQoreworICAgIG1fc2Vzc2lvbklE
ID0gc2Vzc2lvbklEOwogfQogCiB9IC8vIG5hbWVzcGFjZSBBUEkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgJKHJldmlz
aW9uIDE4ODE5MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZp
Z3VyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMjcgKzI3LDMyIEBACiAjZGVmaW5lIEFQ
SVBhZ2VDb25maWd1cmF0aW9uX2gKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUg
IldlYlByZWZlcmVuY2VzU3RvcmUuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Nlc3Npb25JRC5oPgog
I2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7Ci1zdHJ1Y3QgV2Vi
UGFnZUNvbmZpZ3VyYXRpb247Ci1jbGFzcyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTsK
LWNsYXNzIFdlYlByb2Nlc3NQb29sOworY2xhc3MgVmlzaXRlZExpbmtQcm92aWRlcjsKIGNsYXNz
IFdlYlBhZ2VHcm91cDsKLWNsYXNzIFdlYlByZWZlcmVuY2VzOwogY2xhc3MgV2ViUGFnZVByb3h5
OworY2xhc3MgV2ViUHJlZmVyZW5jZXM7CitjbGFzcyBXZWJQcm9jZXNzUG9vbDsKK2NsYXNzIFdl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OwogfQogCiBuYW1lc3BhY2UgQVBJIHsKIAorY2xh
c3MgV2Vic2l0ZURhdGFTdG9yZTsKKwogY2xhc3MgUGFnZUNvbmZpZ3VyYXRpb24gOiBwdWJsaWMg
T2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6OlBhZ2VDb25maWd1cmF0aW9uPiB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZjxQYWdlQ29uZmlndXJhdGlvbj4gY3JlYXRlKCkKLSAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFBhZ2VDb25maWd1cmF0aW9uKTsKLSAgICB9CisgICAgc3Rh
dGljIFJlZjxQYWdlQ29uZmlndXJhdGlvbj4gY3JlYXRlKCk7CisKKyAgICBleHBsaWNpdCBQYWdl
Q29uZmlndXJhdGlvbigpOwogICAgIHZpcnR1YWwgflBhZ2VDb25maWd1cmF0aW9uKCk7CiAKKyAg
ICBSZWY8UGFnZUNvbmZpZ3VyYXRpb24+IGNvcHkoKSBjb25zdDsKKwogICAgIC8vIEZJWE1FOiBU
aGUgY29uZmlndXJhdGlvbiBwcm9wZXJ0aWVzIHNob3VsZCByZXR1cm4gdGhlaXIgZGVmYXVsdCB2
YWx1ZXMKICAgICAvLyByYXRoZXIgdGhhbiBudWxscHRyLgogICAgIApAQCAtNjMsMTkgKzY4LDQ3
IEBAIHB1YmxpYzoKICAgICBXZWJLaXQ6OldlYlByZWZlcmVuY2VzKiBwcmVmZXJlbmNlcygpOwog
ICAgIHZvaWQgc2V0UHJlZmVyZW5jZXMoV2ViS2l0OjpXZWJQcmVmZXJlbmNlcyopOwogCisgICAg
V2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZU1hcCYgcHJlZmVyZW5jZVZhbHVlcygp
IHsgcmV0dXJuIG1fcHJlZmVyZW5jZVZhbHVlczsgfQorCiAgICAgV2ViS2l0OjpXZWJQYWdlUHJv
eHkqIHJlbGF0ZWRQYWdlKCk7CiAgICAgdm9pZCBzZXRSZWxhdGVkUGFnZShXZWJLaXQ6OldlYlBh
Z2VQcm94eSopOwogCi0gICAgV2ViS2l0OjpXZWJQYWdlQ29uZmlndXJhdGlvbiB3ZWJQYWdlQ29u
ZmlndXJhdGlvbigpOworICAgIFdlYktpdDo6VmlzaXRlZExpbmtQcm92aWRlciogdmlzaXRlZExp
bmtQcm92aWRlcigpOworICAgIHZvaWQgc2V0VmlzaXRlZExpbmtQcm92aWRlcihXZWJLaXQ6OlZp
c2l0ZWRMaW5rUHJvdmlkZXIqKTsKKworICAgIFdlYnNpdGVEYXRhU3RvcmUqIHdlYnNpdGVEYXRh
U3RvcmUoKTsKKyAgICB2b2lkIHNldFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZSop
OworCisgICAgV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCgpOworICAgIHZvaWQgc2V0U2Vz
c2lvbklEKFdlYkNvcmU6OlNlc3Npb25JRCk7CisKKyAgICBib29sIHRyZWF0c1NIQTFTaWduZWRD
ZXJ0aWZpY2F0ZXNBc0luc2VjdXJlKCkgeyByZXR1cm4gbV90cmVhdHNTSEExU2lnbmVkQ2VydGlm
aWNhdGVzQXNJbnNlY3VyZTsgfQorICAgIHZvaWQgc2V0VHJlYXRzU0hBMVNpZ25lZENlcnRpZmlj
YXRlc0FzSW5zZWN1cmUoYm9vbCB0cmVhdHNTSEExU2lnbmVkQ2VydGlmaWNhdGVzQXNJbnNlY3Vy
ZSkgeyBtX3RyZWF0c1NIQTFTaWduZWRDZXJ0aWZpY2F0ZXNBc0luc2VjdXJlID0gdHJlYXRzU0hB
MVNpZ25lZENlcnRpZmljYXRlc0FzSW5zZWN1cmU7IH0gCisKKyNpZiBQTEFURk9STShJT1MpCisg
ICAgYm9vbCBhbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHkoKSB7IHJldHVybiBtX2Fsd2F5
c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eTsgfQorICAgIHZvaWQgc2V0QWx3YXlzUnVuc0F0Rm9y
ZWdyb3VuZFByaW9yaXR5KGJvb2wgYWx3YXlzUnVuc0F0Rm9yZWdyb3VuZFByaW9yaXR5KSB7IG1f
YWx3YXlzUnVuc0F0Rm9yZWdyb3VuZFByaW9yaXR5ID0gYWx3YXlzUnVuc0F0Rm9yZWdyb3VuZFBy
aW9yaXR5OyB9IAorI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgUGFnZUNvbmZpZ3VyYXRpb24oKTsK
IAogICAgIFJlZlB0cjxXZWJLaXQ6OldlYlByb2Nlc3NQb29sPiBtX3Byb2Nlc3NQb29sOwogICAg
IFJlZlB0cjxXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5PiBtX3VzZXJDb250
ZW50Q29udHJvbGxlcjsKICAgICBSZWZQdHI8V2ViS2l0OjpXZWJQYWdlR3JvdXA+IG1fcGFnZUdy
b3VwOwogICAgIFJlZlB0cjxXZWJLaXQ6OldlYlByZWZlcmVuY2VzPiBtX3ByZWZlcmVuY2VzOwor
ICAgIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWVNYXAgbV9wcmVmZXJlbmNlVmFs
dWVzOwogICAgIFJlZlB0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4gbV9yZWxhdGVkUGFnZTsKKyAg
ICBSZWZQdHI8V2ViS2l0OjpWaXNpdGVkTGlua1Byb3ZpZGVyPiBtX3Zpc2l0ZWRMaW5rUHJvdmlk
ZXI7CisKKyAgICBSZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4gbV93ZWJzaXRlRGF0YVN0b3JlOwor
ICAgIC8vIEZJWE1FOiBXZSBjdXJyZW50bHkgaGF2ZSB0byBwYXNzIHRoZSBzZXNzaW9uIElEIHNl
cGFyYXRlbHkgaGVyZSB0byBzdXBwb3J0IHRoZSBsZWdhY3kgcHJpdmF0ZSBicm93c2luZyBzZXNz
aW9uLgorICAgIC8vIE9uY2Ugd2UgZ2V0IHJpZCBvZiBpdCB3ZSBzaG91bGQgZ2V0IHJpZCBvZiB0
aGlzIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyIGFzIHdlbGwuCisgICAgV2ViQ29yZTo6U2Vzc2lv
bklEIG1fc2Vzc2lvbklEOworCisgICAgYm9vbCBtX3RyZWF0c1NIQTFTaWduZWRDZXJ0aWZpY2F0
ZXNBc0luc2VjdXJlID0gZmFsc2U7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIGJvb2wgbV9hbHdh
eXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHkgPSBmYWxzZTsKKyNlbmRpZgogfTsKIAogfSAvLyBu
YW1lc3BhY2UgQVBJCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdl
LmNwcAkocmV2aXNpb24gMTg4MTkwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJB
UElOYXZpZ2F0aW9uQWN0aW9uLmgiCiAjaW5jbHVkZSAiQVBJTmF2aWdhdGlvbkNsaWVudC5oIgog
I2luY2x1ZGUgIkFQSU5hdmlnYXRpb25SZXNwb25zZS5oIgorI2luY2x1ZGUgIkFQSVBhZ2VDb25m
aWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiQVBJUG9saWN5Q2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJ
U2Vzc2lvblN0YXRlLmgiCiAjaW5jbHVkZSAiQVBJVUlDbGllbnQuaCIKQEAgLTEyNyw2ICsxMjgs
MTIgQEAgV0tQYWdlR3JvdXBSZWYgV0tQYWdlR2V0UGFnZUdyb3VwKFdLUGFnZQogICAgIHJldHVy
biB0b0FQSSgmdG9JbXBsKHBhZ2VSZWYpLT5wYWdlR3JvdXAoKSk7CiB9CiAKK1dLUGFnZUNvbmZp
Z3VyYXRpb25SZWYgV0tQYWdlQ29weVBhZ2VDb25maWd1cmF0aW9uKFdLUGFnZVJlZiBwYWdlUmVm
KQoreworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IHRvSW1wbChwYWdlUmVmKS0+Y29uZmlndXJh
dGlvbigpLmNvcHkoKTsKKyAgICByZXR1cm4gdG9BUEkoJmNvbmZpZ3VyYXRpb24ubGVha1JlZigp
KTsKK30KKwogdm9pZCBXS1BhZ2VMb2FkVVJMKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1VSTFJlZiBV
UkxSZWYpCiB7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5sb2FkUmVxdWVzdChVUkwoVVJMKCksIHRv
V1RGU3RyaW5nKFVSTFJlZikpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS1BhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tQYWdlLmgJKHJldmlzaW9uIDE4ODE5MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTksOCBAQCBXS19FWFBPUlQg
V0tUeXBlSUQgV0tQYWdlR2V0VHlwZUlEKCk7CiBXS19FWFBPUlQgV0tDb250ZXh0UmVmIFdLUGFn
ZUdldENvbnRleHQoV0tQYWdlUmVmIHBhZ2UpOwogV0tfRVhQT1JUIFdLUGFnZUdyb3VwUmVmIFdL
UGFnZUdldFBhZ2VHcm91cChXS1BhZ2VSZWYgcGFnZSk7CiAKK1dLX0VYUE9SVCBXS1BhZ2VDb25m
aWd1cmF0aW9uUmVmIFdLUGFnZUNvcHlQYWdlQ29uZmlndXJhdGlvbihXS1BhZ2VSZWYgcGFnZSk7
CisKIC8vIFVSTCBSZXF1ZXN0cwogV0tfRVhQT1JUIHZvaWQgV0tQYWdlTG9hZFVSTChXS1BhZ2VS
ZWYgcGFnZSwgV0tVUkxSZWYgdXJsKTsKIFdLX0VYUE9SVCB2b2lkIFdLUGFnZUxvYWRVUkxXaXRo
VXNlckRhdGEoV0tQYWdlUmVmIHBhZ2UsIFdLVVJMUmVmIHVybCwgV0tUeXBlUmVmIHVzZXJEYXRh
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VDb25maWd1cmF0
aW9uUmVmLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tQYWdlQ29uZmlndXJhdGlvblJlZi5jcHAJKHJldmlzaW9uIDE4ODE5MCkKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VDb25maWd1cmF0aW9uUmVmLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTMsMyArOTMsMTMgQEAgdm9pZCBXS1BhZ2VDb25maWd1cmF0aW9uU2V0UmVs
YXRlZFBhZ2UoVwogewogICAgIHRvSW1wbChjb25maWd1cmF0aW9uKS0+c2V0UmVsYXRlZFBhZ2Uo
dG9JbXBsKHJlbGF0ZWRQYWdlKSk7CiB9CisKK1dLV2Vic2l0ZURhdGFTdG9yZVJlZiBXS1BhZ2VD
b25maWd1cmF0aW9uR2V0V2Vic2l0ZURhdGFTdG9yZShXS1BhZ2VDb25maWd1cmF0aW9uUmVmIGNv
bmZpZ3VyYXRpb24pCit7CisgICAgcmV0dXJuIHRvQVBJKHRvSW1wbChjb25maWd1cmF0aW9uKS0+
d2Vic2l0ZURhdGFTdG9yZSgpKTsKK30KKwordm9pZCBXS1BhZ2VDb25maWd1cmF0aW9uU2V0V2Vi
c2l0ZURhdGFTdG9yZShXS1BhZ2VDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24sIFdLV2Vi
c2l0ZURhdGFTdG9yZVJlZiB3ZWJzaXRlRGF0YVN0b3JlKQoreworICAgIHRvSW1wbChjb25maWd1
cmF0aW9uKS0+c2V0V2Vic2l0ZURhdGFTdG9yZSh0b0ltcGwod2Vic2l0ZURhdGFTdG9yZSkpOwor
fQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUNvbmZpZ3VyYXRp
b25SZWYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQ
YWdlQ29uZmlndXJhdGlvblJlZi5oCShyZXZpc2lvbiAxODgxOTApCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlQ29uZmlndXJhdGlvblJlZi5oCSh3b3JraW5nIGNvcHkp
CkBAIC01MSw2ICs1MSw5IEBAIFdLX0VYUE9SVCB2b2lkIFdLUGFnZUNvbmZpZ3VyYXRpb25TZXRQ
cmUKIFdLX0VYUE9SVCBXS1BhZ2VSZWYgV0tQYWdlQ29uZmlndXJhdGlvbkdldFJlbGF0ZWRQYWdl
KFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbik7CiBXS19FWFBPUlQgdm9pZCBX
S1BhZ2VDb25maWd1cmF0aW9uU2V0UmVsYXRlZFBhZ2UoV0tQYWdlQ29uZmlndXJhdGlvblJlZiBj
b25maWd1cmF0aW9uLCBXS1BhZ2VSZWYgcmVsYXRlZFBhZ2UpOwogCitXS19FWFBPUlQgV0tXZWJz
aXRlRGF0YVN0b3JlUmVmIFdLUGFnZUNvbmZpZ3VyYXRpb25HZXRXZWJzaXRlRGF0YVN0b3JlKFdL
UGFnZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbik7CitXS19FWFBPUlQgdm9pZCBXS1Bh
Z2VDb25maWd1cmF0aW9uU2V0V2Vic2l0ZURhdGFTdG9yZShXS1BhZ2VDb25maWd1cmF0aW9uUmVm
IGNvbmZpZ3VyYXRpb24sIFdLV2Vic2l0ZURhdGFTdG9yZVJlZiB3ZWJzaXRlRGF0YVN0b3JlKTsK
KwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCShyZXZpc2lvbiAxODgxOTApCisr
KyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2lmIFdLX0FQSV9FTkFCTEVECiAKICNpbXBvcnQg
IkFQSUZvcm1DbGllbnQuaCIKKyNpbXBvcnQgIkFQSVBhZ2VDb25maWd1cmF0aW9uLmgiCiAjaW1w
b3J0ICJBUElTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbXBvcnQgIkNvbXBsZXRpb25IYW5k
bGVyQ2FsbENoZWNrZXIuaCIKICNpbXBvcnQgIkRpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmgiCkBA
IC0zMDAsMzYgKzMwMSwzOCBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0
KWZyCiAgICAgQ0dSZWN0IGJvdW5kcyA9IHNlbGYuYm91bmRzOwogCiAgICAgV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wgPSAqW19jb25maWd1cmF0aW9uIHByb2Nlc3NQb29sXS0+
X3Byb2Nlc3NQb29sOworICAgIAorICAgIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiBwYWdl
Q29uZmlndXJhdGlvbiA9IEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOwogCi0gICAg
V2ViS2l0OjpXZWJQYWdlQ29uZmlndXJhdGlvbiB3ZWJQYWdlQ29uZmlndXJhdGlvbjsKLSAgICB3
ZWJQYWdlQ29uZmlndXJhdGlvbi5wcmVmZXJlbmNlcyA9IFtfY29uZmlndXJhdGlvbiBwcmVmZXJl
bmNlc10tPl9wcmVmZXJlbmNlcy5nZXQoKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UHJv
Y2Vzc1Bvb2woJnByb2Nlc3NQb29sKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UHJlZmVy
ZW5jZXMoW19jb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXS0+X3ByZWZlcmVuY2VzLmdldCgpKTsK
ICAgICBpZiAoV0tXZWJWaWV3ICpyZWxhdGVkV2ViVmlldyA9IFtfY29uZmlndXJhdGlvbiBfcmVs
YXRlZFdlYlZpZXddKQotICAgICAgICB3ZWJQYWdlQ29uZmlndXJhdGlvbi5yZWxhdGVkUGFnZSA9
IHJlbGF0ZWRXZWJWaWV3LT5fcGFnZS5nZXQoKTsKKyAgICAgICAgcGFnZUNvbmZpZ3VyYXRpb24t
PnNldFJlbGF0ZWRQYWdlKHJlbGF0ZWRXZWJWaWV3LT5fcGFnZS5nZXQoKSk7CiAKLSAgICB3ZWJQ
YWdlQ29uZmlndXJhdGlvbi51c2VyQ29udGVudENvbnRyb2xsZXIgPSBbX2NvbmZpZ3VyYXRpb24g
dXNlckNvbnRlbnRDb250cm9sbGVyXS0+X3VzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmdldCgp
OwotICAgIHdlYlBhZ2VDb25maWd1cmF0aW9uLnZpc2l0ZWRMaW5rUHJvdmlkZXIgPSBbX2NvbmZp
Z3VyYXRpb24gX3Zpc2l0ZWRMaW5rUHJvdmlkZXJdLT5fdmlzaXRlZExpbmtQcm92aWRlci5nZXQo
KTsKLSAgICB3ZWJQYWdlQ29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlID0gJltfY29uZmln
dXJhdGlvbiB3ZWJzaXRlRGF0YVN0b3JlXS0+X3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRh
U3RvcmUoKTsKLSAgICB3ZWJQYWdlQ29uZmlndXJhdGlvbi5zZXNzaW9uSUQgPSB3ZWJQYWdlQ29u
ZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlLT5zZXNzaW9uSUQoKTsKLSAgICB3ZWJQYWdlQ29u
ZmlndXJhdGlvbi50cmVhdHNTSEExU2lnbmVkQ2VydGlmaWNhdGVzQXNJbnNlY3VyZSA9IFtfY29u
ZmlndXJhdGlvbiBfdHJlYXRzU0hBMVNpZ25lZENlcnRpZmljYXRlc0FzSW5zZWN1cmVdOworICAg
IHBhZ2VDb25maWd1cmF0aW9uLT5zZXRVc2VyQ29udGVudENvbnRyb2xsZXIoW19jb25maWd1cmF0
aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0tPl91c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5n
ZXQoKSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFZpc2l0ZWRMaW5rUHJvdmlkZXIoW19j
b25maWd1cmF0aW9uIF92aXNpdGVkTGlua1Byb3ZpZGVyXS0+X3Zpc2l0ZWRMaW5rUHJvdmlkZXIu
Z2V0KCkpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRXZWJzaXRlRGF0YVN0b3JlKFtfY29u
ZmlndXJhdGlvbiB3ZWJzaXRlRGF0YVN0b3JlXS0+X3dlYnNpdGVEYXRhU3RvcmUuZ2V0KCkpOwor
ICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRTZXNzaW9uSUQocGFnZUNvbmZpZ3VyYXRpb24tPndl
YnNpdGVEYXRhU3RvcmUoKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Npb25JRCgpKTsKKyAgICBw
YWdlQ29uZmlndXJhdGlvbi0+c2V0VHJlYXRzU0hBMVNpZ25lZENlcnRpZmljYXRlc0FzSW5zZWN1
cmUoW19jb25maWd1cmF0aW9uIF90cmVhdHNTSEExU2lnbmVkQ2VydGlmaWNhdGVzQXNJbnNlY3Vy
ZV0pOwogCiAgICAgUmVmUHRyPFdlYktpdDo6V2ViUGFnZUdyb3VwPiBwYWdlR3JvdXA7CiAgICAg
TlNTdHJpbmcgKmdyb3VwSWRlbnRpZmllciA9IGNvbmZpZ3VyYXRpb24uX2dyb3VwSWRlbnRpZmll
cjsKICAgICBpZiAoZ3JvdXBJZGVudGlmaWVyLmxlbmd0aCkgewogICAgICAgICBwYWdlR3JvdXAg
PSBXZWJLaXQ6OldlYlBhZ2VHcm91cDo6Y3JlYXRlKGNvbmZpZ3VyYXRpb24uX2dyb3VwSWRlbnRp
Zmllcik7Ci0gICAgICAgIHdlYlBhZ2VDb25maWd1cmF0aW9uLnBhZ2VHcm91cCA9IHBhZ2VHcm91
cC5nZXQoKTsKKyAgICAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFBhZ2VHcm91cChwYWdlR3Jv
dXAuZ2V0KCkpOwogICAgIH0KIAotICAgIHdlYlBhZ2VDb25maWd1cmF0aW9uLnByZWZlcmVuY2VW
YWx1ZXMuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OnN1cHByZXNzZXNJbmNyZW1lbnRh
bFJlbmRlcmluZ0tleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKCEhW19j
b25maWd1cmF0aW9uIHN1cHByZXNzZXNJbmNyZW1lbnRhbFJlbmRlcmluZ10pKTsKKyAgICBwYWdl
Q29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVu
Y2VzS2V5OjpzdXBwcmVzc2VzSW5jcmVtZW50YWxSZW5kZXJpbmdLZXkoKSwgV2ViS2l0OjpXZWJQ
cmVmZXJlbmNlc1N0b3JlOjpWYWx1ZSghIVtfY29uZmlndXJhdGlvbiBzdXBwcmVzc2VzSW5jcmVt
ZW50YWxSZW5kZXJpbmddKSk7CiAKICNpZiBQTEFURk9STShJT1MpCi0gICAgd2ViUGFnZUNvbmZp
Z3VyYXRpb24uYWx3YXlzUnVuc0F0Rm9yZWdyb3VuZFByaW9yaXR5ID0gW19jb25maWd1cmF0aW9u
IF9hbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHldOworICAgIHBhZ2VDb25maWd1cmF0aW9u
LT5zZXRBbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHkoW19jb25maWd1cmF0aW9uIF9hbHdh
eXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHldKTsKIAotICAgIHdlYlBhZ2VDb25maWd1cmF0aW9u
LnByZWZlcmVuY2VWYWx1ZXMuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OmFsbG93c0lu
bGluZU1lZGlhUGxheWJhY2tLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1
ZSghIVtfY29uZmlndXJhdGlvbiBhbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrXSkpOwotICAgIHdl
YlBhZ2VDb25maWd1cmF0aW9uLnByZWZlcmVuY2VWYWx1ZXMuc2V0KFdlYktpdDo6V2ViUHJlZmVy
ZW5jZXNLZXk6OmFsbG93c1BpY3R1cmVJblBpY3R1cmVNZWRpYVBsYXliYWNrS2V5KCksIFdlYktp
dDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoISFbX2NvbmZpZ3VyYXRpb24gYWxsb3dzUGlj
dHVyZUluUGljdHVyZU1lZGlhUGxheWJhY2tdICYmIHNob3VsZEFsbG93UGljdHVyZUluUGljdHVy
ZU1lZGlhUGxheWJhY2soKSkpOwotICAgIHdlYlBhZ2VDb25maWd1cmF0aW9uLnByZWZlcmVuY2VW
YWx1ZXMuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OnJlcXVpcmVzVXNlckdlc3R1cmVG
b3JNZWRpYVBsYXliYWNrS2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUo
ISFbX2NvbmZpZ3VyYXRpb24gcmVxdWlyZXNVc2VyQWN0aW9uRm9yTWVkaWFQbGF5YmFja10pKTsK
KyAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6Oldl
YlByZWZlcmVuY2VzS2V5OjphbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrS2V5KCksIFdlYktpdDo6
V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoISFbX2NvbmZpZ3VyYXRpb24gYWxsb3dzSW5saW5l
TWVkaWFQbGF5YmFja10pKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVl
cygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5OjphbGxvd3NQaWN0dXJlSW5QaWN0dXJl
TWVkaWFQbGF5YmFja0tleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKCEh
W19jb25maWd1cmF0aW9uIGFsbG93c1BpY3R1cmVJblBpY3R1cmVNZWRpYVBsYXliYWNrXSAmJiBz
aG91bGRBbGxvd1BpY3R1cmVJblBpY3R1cmVNZWRpYVBsYXliYWNrKCkpKTsKKyAgICBwYWdlQ29u
ZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2Vz
S2V5OjpyZXF1aXJlc1VzZXJHZXN0dXJlRm9yTWVkaWFQbGF5YmFja0tleSgpLCBXZWJLaXQ6Oldl
YlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKCEhW19jb25maWd1cmF0aW9uIHJlcXVpcmVzVXNlckFj
dGlvbkZvck1lZGlhUGxheWJhY2tdKSk7CiAjZW5kaWYKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExB
WUJBQ0tfVEFSR0VUKQotICAgIHdlYlBhZ2VDb25maWd1cmF0aW9uLnByZWZlcmVuY2VWYWx1ZXMu
c2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OmFsbG93c0FpclBsYXlGb3JNZWRpYVBsYXli
YWNrS2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoISFbX2NvbmZpZ3Vy
YXRpb24gYWxsb3dzQWlyUGxheUZvck1lZGlhUGxheWJhY2tdKSk7CisgICAgcGFnZUNvbmZpZ3Vy
YXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6
YWxsb3dzQWlyUGxheUZvck1lZGlhUGxheWJhY2tLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNl
c1N0b3JlOjpWYWx1ZSghIVtfY29uZmlndXJhdGlvbiBhbGxvd3NBaXJQbGF5Rm9yTWVkaWFQbGF5
YmFja10pKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtMzM5LDcgKzM0Miw3IEBA
IC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihDR1JlY3QpZnIKIAogICAgIFtzZWxmIGFk
ZFN1YnZpZXc6X3Njcm9sbFZpZXcuZ2V0KCldOwogCi0gICAgX2NvbnRlbnRWaWV3ID0gYWRvcHRO
UyhbW1dLQ29udGVudFZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Ym91bmRzIHByb2Nlc3NQb29s
OnByb2Nlc3NQb29sIGNvbmZpZ3VyYXRpb246V1RGOjptb3ZlKHdlYlBhZ2VDb25maWd1cmF0aW9u
KSB3ZWJWaWV3OnNlbGZdKTsKKyAgICBfY29udGVudFZpZXcgPSBhZG9wdE5TKFtbV0tDb250ZW50
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpib3VuZHMgcHJvY2Vzc1Bvb2w6cHJvY2Vzc1Bvb2wg
Y29uZmlndXJhdGlvbjpXVEY6Om1vdmUocGFnZUNvbmZpZ3VyYXRpb24pIHdlYlZpZXc6c2VsZl0p
OwogCiAgICAgX3BhZ2UgPSBbX2NvbnRlbnRWaWV3IHBhZ2VdOwogICAgIF9wYWdlLT5zZXREZXZp
Y2VPcmllbnRhdGlvbihkZXZpY2VPcmllbnRhdGlvbigpKTsKQEAgLTM2Nyw3ICszNzAsNyBAQCAt
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyCiAjZW5kaWYKIAogI2lmIFBM
QVRGT1JNKE1BQykKLSAgICBfd2tWaWV3ID0gYWRvcHROUyhbW1dLVmlldyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpib3VuZHMgcHJvY2Vzc1Bvb2w6cHJvY2Vzc1Bvb2wgY29uZmlndXJhdGlvbjpXVEY6
Om1vdmUod2ViUGFnZUNvbmZpZ3VyYXRpb24pIHdlYlZpZXc6c2VsZl0pOworICAgIF93a1ZpZXcg
PSBhZG9wdE5TKFtbV0tWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOmJvdW5kcyBwcm9jZXNzUG9v
bDpwcm9jZXNzUG9vbCBjb25maWd1cmF0aW9uOldURjo6bW92ZShwYWdlQ29uZmlndXJhdGlvbikg
d2ViVmlldzpzZWxmXSk7CiAgICAgW3NlbGYgYWRkU3Vidmlldzpfd2tWaWV3LmdldCgpXTsKICAg
ICBfcGFnZSA9IFdlYktpdDo6dG9JbXBsKFtfd2tWaWV3IHBhZ2VSZWZdKTsKIApJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4
dC5jcHAJKHJldmlzaW9uIDE4ODE5MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYkNvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw2ICsyMSw3IEBA
CiAjaW5jbHVkZSAiV2ViS2l0V2ViQ29udGV4dC5oIgogCiAjaW5jbHVkZSAiQVBJRG93bmxvYWRD
bGllbnQuaCIKKyNpbmNsdWRlICJBUElQYWdlQ29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIkFQ
SVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIkFQSVN0cmluZy5oIgogI2lu
Y2x1ZGUgIlRleHRDaGVja2VyLmgiCkBAIC0xMzE1LDEzICsxMzE2LDE0IEBAIHZvaWQgd2Via2l0
V2ViQ29udGV4dERpZEZpbmlzaExvYWRpbmdDdXMKIHZvaWQgd2Via2l0V2ViQ29udGV4dENyZWF0
ZVBhZ2VGb3JXZWJWaWV3KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcsIFdlYktpdFVzZXJDb250ZW50TWFuYWdlciogdXNlckNvbnRlbnRNYW5hZ2VyLCBX
ZWJLaXRXZWJWaWV3KiByZWxhdGVkVmlldykKIHsKICAgICBXZWJLaXRXZWJWaWV3QmFzZSogd2Vi
Vmlld0Jhc2UgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3ZWJWaWV3KTsKLSAgICBXZWJQYWdlQ29u
ZmlndXJhdGlvbiB3ZWJQYWdlQ29uZmlndXJhdGlvbjsKLSAgICB3ZWJQYWdlQ29uZmlndXJhdGlv
bi5wcmVmZXJlbmNlcyA9IHdlYmtpdFNldHRpbmdzR2V0UHJlZmVyZW5jZXMod2Via2l0X3dlYl92
aWV3X2dldF9zZXR0aW5ncyh3ZWJWaWV3KSk7Ci0gICAgd2ViUGFnZUNvbmZpZ3VyYXRpb24ucmVs
YXRlZFBhZ2UgPSByZWxhdGVkVmlldyA/IHdlYmtpdFdlYlZpZXdCYXNlR2V0UGFnZShXRUJLSVRf
V0VCX1ZJRVdfQkFTRShyZWxhdGVkVmlldykpIDogbnVsbHB0cjsKLSAgICB3ZWJQYWdlQ29uZmln
dXJhdGlvbi51c2VyQ29udGVudENvbnRyb2xsZXIgPSB1c2VyQ29udGVudE1hbmFnZXIgPyB3ZWJr
aXRVc2VyQ29udGVudE1hbmFnZXJHZXRVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSh1c2VyQ29u
dGVudE1hbmFnZXIpIDogbnVsbHB0cjsKLSAgICB3ZWJQYWdlQ29uZmlndXJhdGlvbi53ZWJzaXRl
RGF0YVN0b3JlID0gJndlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckdldERhdGFTdG9yZShjb250ZXh0
LT5wcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpOwotICAgIHdlYlBhZ2VDb25maWd1cmF0
aW9uLnNlc3Npb25JRCA9IHdlYlBhZ2VDb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUtPnNl
c3Npb25JRCgpOwotICAgIHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlV2ViUGFnZSh3ZWJWaWV3QmFz
ZSwgY29udGV4dC0+cHJpdi0+Y29udGV4dC5nZXQoKSwgV1RGOjptb3ZlKHdlYlBhZ2VDb25maWd1
cmF0aW9uKSk7CisKKyAgICBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4gcGFnZUNvbmZpZ3Vy
YXRpb24gPSBBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKKyAgICBwYWdlQ29uZmln
dXJhdGlvbi0+c2V0UHJlZmVyZW5jZXMod2Via2l0U2V0dGluZ3NHZXRQcmVmZXJlbmNlcyh3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKHdlYlZpZXcpKSk7CisgICAgcGFnZUNvbmZpZ3VyYXRp
b24tPnNldFJlbGF0ZWRQYWdlKHJlbGF0ZWRWaWV3ID8gd2Via2l0V2ViVmlld0Jhc2VHZXRQYWdl
KFdFQktJVF9XRUJfVklFV19CQVNFKHJlbGF0ZWRWaWV3KSkgOiBudWxscHRyKTsKKyAgICBwYWdl
Q29uZmlndXJhdGlvbi0+c2V0VXNlckNvbnRlbnRDb250cm9sbGVyKHVzZXJDb250ZW50TWFuYWdl
ciA/IHdlYmtpdFVzZXJDb250ZW50TWFuYWdlckdldFVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
KHVzZXJDb250ZW50TWFuYWdlcikgOiBudWxscHRyKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+
c2V0V2Vic2l0ZURhdGFTdG9yZSgmd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyR2V0RGF0YVN0b3Jl
KGNvbnRleHQtPnByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpOworICAgIHBhZ2VDb25m
aWd1cmF0aW9uLT5zZXRTZXNzaW9uSUQod2ViUGFnZUNvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFT
dG9yZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2Vzc2lvbklEKCkpOworICAgIHdlYmtpdFdlYlZp
ZXdCYXNlQ3JlYXRlV2ViUGFnZSh3ZWJWaWV3QmFzZSwgY29udGV4dC0+cHJpdi0+Y29udGV4dC5n
ZXQoKSwgV1RGOjptb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7CiAKICAgICBXZWJQYWdlUHJveHkq
IHBhZ2UgPSB3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2Uod2ViVmlld0Jhc2UpOwogICAgIGNvbnRl
eHQtPnByaXYtPndlYlZpZXdzLnNldChwYWdlLT5wYWdlSUQoKSwgd2ViVmlldyk7CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
d0Jhc2UuY3BwCShyZXZpc2lvbiAxODgxOTApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5
LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3QmFzZS5o
IgogCisjaW5jbHVkZSAiQVBJUGFnZUNvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJEcmF3aW5n
QXJlYVByb3h5SW1wbC5oIgogI2luY2x1ZGUgIklucHV0TWV0aG9kRmlsdGVyLmgiCiAjaW5jbHVk
ZSAiS2V5QmluZGluZ1RyYW5zbGF0b3IuaCIKQEAgLTEwNDQsMTIgKzEwNDUsMTMgQEAgc3RhdGlj
IHZvaWQgd2Via2l0X3dlYl92aWV3X2Jhc2VfY2xhc3NfaQogV2ViS2l0V2ViVmlld0Jhc2UqIHdl
YmtpdFdlYlZpZXdCYXNlQ3JlYXRlKFdlYlByb2Nlc3NQb29sKiBjb250ZXh0LCBXZWJQcmVmZXJl
bmNlcyogcHJlZmVyZW5jZXMsIFdlYlBhZ2VHcm91cCogcGFnZUdyb3VwLCBXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eSogdXNlckNvbnRlbnRDb250cm9sbGVyLCBXZWJQYWdlUHJveHkqIHJl
bGF0ZWRQYWdlKQogewogICAgIFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZSA9
IFdFQktJVF9XRUJfVklFV19CQVNFKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfVklFV19C
QVNFLCBudWxscHRyKSk7Ci0gICAgV2ViUGFnZUNvbmZpZ3VyYXRpb24gd2ViUGFnZUNvbmZpZ3Vy
YXRpb247Ci0gICAgd2ViUGFnZUNvbmZpZ3VyYXRpb24ucHJlZmVyZW5jZXMgPSBwcmVmZXJlbmNl
czsKLSAgICB3ZWJQYWdlQ29uZmlndXJhdGlvbi5wYWdlR3JvdXAgPSBwYWdlR3JvdXA7Ci0gICAg
d2ViUGFnZUNvbmZpZ3VyYXRpb24ucmVsYXRlZFBhZ2UgPSByZWxhdGVkUGFnZTsKLSAgICB3ZWJQ
YWdlQ29uZmlndXJhdGlvbi51c2VyQ29udGVudENvbnRyb2xsZXIgPSB1c2VyQ29udGVudENvbnRy
b2xsZXI7Ci0gICAgd2Via2l0V2ViVmlld0Jhc2VDcmVhdGVXZWJQYWdlKHdlYmtpdFdlYlZpZXdC
YXNlLCBjb250ZXh0LCBXVEY6Om1vdmUod2ViUGFnZUNvbmZpZ3VyYXRpb24pKTsKKworICAgIFJl
ZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiBwYWdlQ29uZmlndXJhdGlvbiA9IEFQSTo6UGFnZUNv
bmZpZ3VyYXRpb246OmNyZWF0ZSgpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRQcmVmZXJl
bmNlcyhwcmVmZXJlbmNlcyk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFBhZ2VHcm91cChw
YWdlR3JvdXApOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRSZWxhdGVkUGFnZShyZWxhdGVk
UGFnZSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFVzZXJDb250ZW50Q29udHJvbGxlcih1
c2VyQ29udGVudENvbnRyb2xsZXIpOworICAgIHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlV2ViUGFn
ZSh3ZWJraXRXZWJWaWV3QmFzZSwgY29udGV4dCwgV1RGOjptb3ZlKHBhZ2VDb25maWd1cmF0aW9u
KSk7CiAgICAgcmV0dXJuIHdlYmtpdFdlYlZpZXdCYXNlOwogfQogCkBAIC0xMDcwLDcgKzEwNzIs
NyBAQCBzdGF0aWMgdm9pZCBkZXZpY2VTY2FsZUZhY3RvckNoYW5nZWQoV2ViCiB9CiAjZW5kaWYg
Ly8gSEFWRShHVEtfU0NBTEVfRkFDVE9SKQogCi12b2lkIHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRl
V2ViUGFnZShXZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2UsIFdlYlByb2Nlc3NQ
b29sKiBjb250ZXh0LCBXZWJQYWdlQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24pCit2b2lk
IHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlV2ViUGFnZShXZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0
V2ViVmlld0Jhc2UsIFdlYlByb2Nlc3NQb29sKiBjb250ZXh0LCBSZWY8QVBJOjpQYWdlQ29uZmln
dXJhdGlvbj4mJiBjb25maWd1cmF0aW9uKQogewogICAgIFdlYktpdFdlYlZpZXdCYXNlUHJpdmF0
ZSogcHJpdiA9IHdlYmtpdFdlYlZpZXdCYXNlLT5wcml2OwogICAgIHByaXYtPnBhZ2VQcm94eSA9
IGNvbnRleHQtPmNyZWF0ZVdlYlBhZ2UoKnByaXYtPnBhZ2VDbGllbnQsIFdURjo6bW92ZShjb25m
aWd1cmF0aW9uKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3QmFzZVByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaAkocmV2aXNpb24gMTg4MTkw
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2VQ
cml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAKIFdlYktpdFdlYlZpZXdC
YXNlKiB3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZShXZWJLaXQ6OldlYlByb2Nlc3NQb29sKiwgV2Vi
S2l0OjpXZWJQcmVmZXJlbmNlcyosIFdlYktpdDo6V2ViUGFnZUdyb3VwKiwgV2ViS2l0OjpXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eSosIFdlYktpdDo6V2ViUGFnZVByb3h5Kik7CiBHdGtJ
TUNvbnRleHQqIHdlYmtpdFdlYlZpZXdCYXNlR2V0SU1Db250ZXh0KFdlYktpdFdlYlZpZXdCYXNl
Kik7CiBXZWJLaXQ6OldlYlBhZ2VQcm94eSogd2Via2l0V2ViVmlld0Jhc2VHZXRQYWdlKFdlYktp
dFdlYlZpZXdCYXNlKik7Ci12b2lkIHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlV2ViUGFnZShXZWJL
aXRXZWJWaWV3QmFzZSosIFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wqLCBXZWJLaXQ6OldlYlBhZ2VD
b25maWd1cmF0aW9uJiYpOwordm9pZCB3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZVdlYlBhZ2UoV2Vi
S2l0V2ViVmlld0Jhc2UqLCBXZWJLaXQ6OldlYlByb2Nlc3NQb29sKiwgUmVmPEFQSTo6UGFnZUNv
bmZpZ3VyYXRpb24+JiYpOwogdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVNldFRvb2x0aXBUZXh0KFdl
YktpdFdlYlZpZXdCYXNlKiwgY29uc3QgY2hhciopOwogdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVNl
dFRvb2x0aXBBcmVhKFdlYktpdFdlYlZpZXdCYXNlKiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYp
Owogdm9pZCB3ZWJraXRXZWJWaWV3QmFzZUZvcndhcmROZXh0S2V5RXZlbnQoV2ViS2l0V2ViVmll
d0Jhc2UqKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvaW9zL1dLVmlld0lP
Uy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2lvcy9XS1Zp
ZXdJT1MubW0JKHJldmlzaW9uIDE4ODE5MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvaW9zL1dLVmlld0lPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjI1LDExICsyMjUsMTIgQEAg
LSAodm9pZClfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoQ29udGV4dAogCiAgICAgW3NlbGYgYWRk
U3Vidmlldzpfc2Nyb2xsVmlldy5nZXQoKV07CiAKLSAgICBXZWJLaXQ6OldlYlBhZ2VDb25maWd1
cmF0aW9uIHdlYlBhZ2VDb25maWd1cmF0aW9uOwotICAgIHdlYlBhZ2VDb25maWd1cmF0aW9uLnBh
Z2VHcm91cCA9IHRvSW1wbChwYWdlR3JvdXBSZWYpOwotICAgIHdlYlBhZ2VDb25maWd1cmF0aW9u
LnJlbGF0ZWRQYWdlID0gdG9JbXBsKHJlbGF0ZWRQYWdlKTsKKyAgICBSZWY8QVBJOjpQYWdlQ29u
ZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OmNyZWF0
ZSgpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldFByb2Nlc3NQb29sKHRvSW1wbChjb250ZXh0UmVm
KSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0UGFnZUdyb3VwKHRvSW1wbChwYWdlR3JvdXBSZWYp
KTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRSZWxhdGVkUGFnZSh0b0ltcGwocmVsYXRlZFBhZ2Up
KTsKIAotICAgIF9jb250ZW50VmlldyA9IGFkb3B0TlMoW1tXS0NvbnRlbnRWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOmJvdW5kcyBwcm9jZXNzUG9vbDoqdG9JbXBsKGNvbnRleHRSZWYpIGNvbmZp
Z3VyYXRpb246V1RGOjptb3ZlKHdlYlBhZ2VDb25maWd1cmF0aW9uKSB3a1ZpZXc6c2VsZl0pOwor
ICAgIF9jb250ZW50VmlldyA9IGFkb3B0TlMoW1tXS0NvbnRlbnRWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOmJvdW5kcyBwcm9jZXNzUG9vbDoqdG9JbXBsKGNvbnRleHRSZWYpIGNvbmZpZ3VyYXRp
b246V1RGOjptb3ZlKGNvbmZpZ3VyYXRpb24pIHdrVmlldzpzZWxmXSk7CiAKICAgICBbW19jb250
ZW50VmlldyBsYXllcl0gc2V0QW5jaG9yUG9pbnQ6Q0dQb2ludFplcm9dOwogICAgIFtfY29udGVu
dFZpZXcgc2V0RnJhbWU6Ym91bmRzXTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvbWFjL1dLVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL21hYy9XS1ZpZXcubW0JKHJldmlzaW9uIDE4ODE5MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzc0NCw3ICszNzQ0
LDcgQEAgLSAodm9pZClfc2V0UHJpbWFyeVRyYWNraW5nQXJlYTooTlNUcmFjawogICAgIFtzZWxm
IGFkZFRyYWNraW5nQXJlYTp0cmFja2luZ0FyZWFdOwogfQogCi0tIChpbnN0YW5jZXR5cGUpaW5p
dFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lIHByb2Nlc3NQb29sOihXZWJQcm9jZXNzUG9vbCYpcHJv
Y2Vzc1Bvb2wgY29uZmlndXJhdGlvbjooV2ViUGFnZUNvbmZpZ3VyYXRpb24pd2ViUGFnZUNvbmZp
Z3VyYXRpb24gd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldworLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSBwcm9jZXNzUG9vbDooV2ViUHJvY2Vzc1Bvb2wmKXBy
b2Nlc3NQb29sIGNvbmZpZ3VyYXRpb246KFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKWNv
bmZpZ3VyYXRpb24gd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldwogewogICAgIHNlbGYgPSBb
c3VwZXIgaW5pdFdpdGhGcmFtZTpmcmFtZV07CiAgICAgaWYgKCFzZWxmKQpAQCAtMzc2Niw3ICsz
NzY2LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcgogICAgIFtz
ZWxmIGFkZFRyYWNraW5nQXJlYTpfZGF0YS0+X3ByaW1hcnlUcmFja2luZ0FyZWEuZ2V0KCldOwog
CiAgICAgX2RhdGEtPl9wYWdlQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlQ2xpZW50SW1w
bD4oc2VsZiwgd2ViVmlldyk7Ci0gICAgX2RhdGEtPl9wYWdlID0gcHJvY2Vzc1Bvb2wuY3JlYXRl
V2ViUGFnZSgqX2RhdGEtPl9wYWdlQ2xpZW50LCBXVEY6Om1vdmUod2ViUGFnZUNvbmZpZ3VyYXRp
b24pKTsKKyAgICBfZGF0YS0+X3BhZ2UgPSBwcm9jZXNzUG9vbC5jcmVhdGVXZWJQYWdlKCpfZGF0
YS0+X3BhZ2VDbGllbnQsIFdURjo6bW92ZShjb25maWd1cmF0aW9uKSk7CiAgICAgX2RhdGEtPl9w
YWdlLT5zZXRBZGRzVmlzaXRlZExpbmtzKHByb2Nlc3NQb29sLmhpc3RvcnlDbGllbnQoKS5hZGRz
VmlzaXRlZExpbmtzKCkpOwogCiAgICAgX2RhdGEtPl9wYWdlLT5zZXRJbnRyaW5zaWNEZXZpY2VT
Y2FsZUZhY3Rvcihbc2VsZiBfaW50cmluc2ljRGV2aWNlU2NhbGVGYWN0b3JdKTsKQEAgLTM5OTQs
MTkgKzM5OTQsMjAgQEAgLSAoaWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lIGNvbnRleAog
CiAtIChpZClpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUgY29udGV4dFJlZjooV0tDb250ZXh0
UmVmKWNvbnRleHRSZWYgcGFnZUdyb3VwUmVmOihXS1BhZ2VHcm91cFJlZilwYWdlR3JvdXBSZWYg
cmVsYXRlZFRvUGFnZTooV0tQYWdlUmVmKXJlbGF0ZWRQYWdlCiB7Ci0gICAgV2ViUGFnZUNvbmZp
Z3VyYXRpb24gd2ViUGFnZUNvbmZpZ3VyYXRpb247Ci0gICAgd2ViUGFnZUNvbmZpZ3VyYXRpb24u
cGFnZUdyb3VwID0gdG9JbXBsKHBhZ2VHcm91cFJlZik7Ci0gICAgd2ViUGFnZUNvbmZpZ3VyYXRp
b24ucmVsYXRlZFBhZ2UgPSB0b0ltcGwocmVsYXRlZFBhZ2UpOworICAgIFJlZjxBUEk6OlBhZ2VD
b25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6Y3Jl
YXRlKCk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0UHJvY2Vzc1Bvb2wodG9JbXBsKGNvbnRleHRS
ZWYpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRQYWdlR3JvdXAodG9JbXBsKHBhZ2VHcm91cFJl
ZikpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldFJlbGF0ZWRQYWdlKHRvSW1wbChyZWxhdGVkUGFn
ZSkpOwogCi0gICAgcmV0dXJuIFtzZWxmIGluaXRXaXRoRnJhbWU6ZnJhbWUgcHJvY2Vzc1Bvb2w6
KnRvSW1wbChjb250ZXh0UmVmKSBjb25maWd1cmF0aW9uOndlYlBhZ2VDb25maWd1cmF0aW9uIHdl
YlZpZXc6bmlsXTsKKyAgICByZXR1cm4gW3NlbGYgaW5pdFdpdGhGcmFtZTpmcmFtZSBwcm9jZXNz
UG9vbDoqdG9JbXBsKGNvbnRleHRSZWYpIGNvbmZpZ3VyYXRpb246V1RGOjptb3ZlKGNvbmZpZ3Vy
YXRpb24pIHdlYlZpZXc6bmlsXTsKIH0KIAotLSAoaWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZy
YW1lIGNvbmZpZ3VyYXRpb25SZWY6KFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYpY29uZmlndXJhdGlv
bgorLSAoaWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lIGNvbmZpZ3VyYXRpb25SZWY6KFdL
UGFnZUNvbmZpZ3VyYXRpb25SZWYpY29uZmlndXJhdGlvblJlZgogewotICAgIGF1dG8mIHByb2Nl
c3NQb29sID0gKnRvSW1wbChjb25maWd1cmF0aW9uKS0+cHJvY2Vzc1Bvb2woKTsKLSAgICBhdXRv
IHdlYlBhZ2VDb25maWd1cmF0aW9uID0gdG9JbXBsKGNvbmZpZ3VyYXRpb24pLT53ZWJQYWdlQ29u
ZmlndXJhdGlvbigpOworICAgIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiBjb25maWd1cmF0
aW9uID0gKnRvSW1wbChjb25maWd1cmF0aW9uUmVmKTsKKyAgICBhdXRvJiBwcm9jZXNzUG9vbCA9
ICpjb25maWd1cmF0aW9uLT5wcm9jZXNzUG9vbCgpOwogCi0gICAgcmV0dXJuIFtzZWxmIGluaXRX
aXRoRnJhbWU6ZnJhbWUgcHJvY2Vzc1Bvb2w6cHJvY2Vzc1Bvb2wgY29uZmlndXJhdGlvbjp3ZWJQ
YWdlQ29uZmlndXJhdGlvbiB3ZWJWaWV3Om5pbF07CisgICAgcmV0dXJuIFtzZWxmIGluaXRXaXRo
RnJhbWU6ZnJhbWUgcHJvY2Vzc1Bvb2w6cHJvY2Vzc1Bvb2wgY29uZmlndXJhdGlvbjpXVEY6Om1v
dmUoY29uZmlndXJhdGlvbikgd2ViVmlldzpuaWxdOwogfQogCiAtIChCT09MKXdhbnRzVXBkYXRl
TGF5ZXIKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlld0ludGVy
bmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tW
aWV3SW50ZXJuYWwuaAkocmV2aXNpb24gMTg4MTkwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9tYWMvV0tWaWV3SW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgs
NyBAQAogCiBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIE9iamVjdDsKK2NsYXNzIFBhZ2VDb25maWd1
cmF0aW9uOwogfQogCiBuYW1lc3BhY2UgSVBDIHsKQEAgLTU4LDcgKzU5LDYgQEAgY2xhc3MgVmll
d1NuYXBzaG90OwogY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7CiBzdHJ1Y3QgQ29sb3JTcGFjZURhdGE7
CiBzdHJ1Y3QgRWRpdG9yU3RhdGU7Ci1zdHJ1Y3QgV2ViUGFnZUNvbmZpZ3VyYXRpb247CiB9CiAK
IEBjbGFzcyBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyOwpAQCAtNjgsOSArNjgsNyBAQCBz
dHJ1Y3QgV2ViUGFnZUNvbmZpZ3VyYXRpb247CiAjZW5kaWYKIAogQGludGVyZmFjZSBXS1ZpZXcg
KCkKLSNpZiBXS19BUElfRU5BQkxFRAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KENH
UmVjdClmcmFtZSBwcm9jZXNzUG9vbDooV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYpcHJvY2Vzc1Bv
b2wgY29uZmlndXJhdGlvbjooV2ViS2l0OjpXZWJQYWdlQ29uZmlndXJhdGlvbil3ZWJQYWdlQ29u
ZmlndXJhdGlvbiB3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3OwotI2VuZGlmCistIChpbnN0
YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lIHByb2Nlc3NQb29sOihXZWJLaXQ6
OldlYlByb2Nlc3NQb29sJilwcm9jZXNzUG9vbCBjb25maWd1cmF0aW9uOihSZWY8QVBJOjpQYWdl
Q29uZmlndXJhdGlvbj4mJiljb25maWd1cmF0aW9uIHdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZp
ZXc7CiAKIC0gKHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXQ6OkRyYXdpbmdBcmVhUHJveHk+KV9jcmVh
dGVEcmF3aW5nQXJlYVByb3h5OwogLSAoQk9PTClfaXNGb2N1c2VkOwpJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViVmlldy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViVmll
dy5jcHAJKHJldmlzaW9uIDE4ODE5MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29y
ZGluYXRlZEdyYXBoaWNzL1dlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3
IEBACiAKICNpbmNsdWRlICJXZWJWaWV3LmgiCiAKKyNpbmNsdWRlICJBUElQYWdlQ29uZmlndXJh
dGlvbi5oIgogI2luY2x1ZGUgIkNvb3JkaW5hdGVkRHJhd2luZ0FyZWFQcm94eS5oIgogI2luY2x1
ZGUgIkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oIgogI2luY2x1ZGUgIkNvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdFByb3h5LmgiCkBAIC01MiwxMSArNTMsMTEgQEAgV2ViVmlldzo6V2ViVmlldyhX
ZWJQcm9jZXNzUG9vbCogY29udGV4dAogICAgICwgbV92aXNpYmxlKGZhbHNlKQogICAgICwgbV9v
cGFjaXR5KDEuMCkKIHsKLSAgICBXZWJQYWdlQ29uZmlndXJhdGlvbiB3ZWJQYWdlQ29uZmlndXJh
dGlvbjsKLSAgICB3ZWJQYWdlQ29uZmlndXJhdGlvbi5wYWdlR3JvdXAgPSBwYWdlR3JvdXA7Cisg
ICAgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+IHBhZ2VDb25maWd1cmF0aW9uID0gQVBJOjpQ
YWdlQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFBh
Z2VHcm91cChwYWdlR3JvdXApOwogCiAgICAgLy8gTmVlZCB0byBjYWxsIGNyZWF0ZVdlYlBhZ2Ug
YWZ0ZXIgb3RoZXIgZGF0YSBtZW1iZXJzLCBzcGVjaWZpY2FsbHkgbV92aXNpYmxlLCBhcmUgaW5p
dGlhbGl6ZWQuCi0gICAgbV9wYWdlID0gY29udGV4dC0+Y3JlYXRlV2ViUGFnZSgqdGhpcywgV1RG
Ojptb3ZlKHdlYlBhZ2VDb25maWd1cmF0aW9uKSk7CisgICAgbV9wYWdlID0gY29udGV4dC0+Y3Jl
YXRlV2ViUGFnZSgqdGhpcywgV1RGOjptb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7CiAKICAgICBt
X3BhZ2UtPnBhZ2VHcm91cCgpLnByZWZlcmVuY2VzKCkuc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0VuYWJsZWQodHJ1ZSk7CiAgICAgbV9wYWdlLT5wYWdlR3JvdXAoKS5wcmVmZXJlbmNlcygpLnNl
dEZvcmNlQ29tcG9zaXRpbmdNb2RlKHRydWUpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3LmgJKHJldmlzaW9uIDE4ODE5MCkKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC00
NSw3ICs0NSw2IEBAIGNsYXNzIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOwogY2xhc3MgV2Vi
RnJhbWVQcm94eTsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIGNsYXNzIFdlYlByb2Nlc3NQb29sOwot
c3RydWN0IFdlYlBhZ2VDb25maWd1cmF0aW9uOwogfQogCiBAaW50ZXJmYWNlIFdLQ29udGVudFZp
ZXcgOiBVSVZpZXcgewpAQCAtNjEsOCArNjAsOCBAQCBzdHJ1Y3QgV2ViUGFnZUNvbmZpZ3VyYXRp
b247CiBAcHJvcGVydHkgKG5vbmF0b21pYywgZ2V0dGVyPWlzU2hvd2luZ0luc3BlY3RvckluZGlj
YXRpb24pIEJPT0wgc2hvd2luZ0luc3BlY3RvckluZGljYXRpb247CiBAcHJvcGVydHkgKG5vbmF0
b21pYywgcmVhZG9ubHkpIEJPT0wgaXNCYWNrZ3JvdW5kOwogCi0tIChpbnN0YW5jZXR5cGUpaW5p
dFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lIHByb2Nlc3NQb29sOihXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sJilwcm9jZXNzUG9vbCBjb25maWd1cmF0aW9uOihXZWJLaXQ6OldlYlBhZ2VDb25maWd1cmF0
aW9uKXdlYlBhZ2VDb25maWd1cmF0aW9uIHdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXc7Ci0t
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lIHByb2Nlc3NQb29sOihX
ZWJLaXQ6OldlYlByb2Nlc3NQb29sJilwcm9jZXNzUG9vbCBjb25maWd1cmF0aW9uOihXZWJLaXQ6
OldlYlBhZ2VDb25maWd1cmF0aW9uKXdlYlBhZ2VDb25maWd1cmF0aW9uIHdrVmlldzooV0tWaWV3
ICopd2ViVmlldzsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihDR1JlY3QpZnJhbWUg
cHJvY2Vzc1Bvb2w6KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmKXByb2Nlc3NQb29sIGNvbmZpZ3Vy
YXRpb246KFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKWNvbmZpZ3VyYXRpb24gd2ViVmll
dzooV0tXZWJWaWV3ICopd2ViVmlldzsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihD
R1JlY3QpZnJhbWUgcHJvY2Vzc1Bvb2w6KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmKXByb2Nlc3NQ
b29sIGNvbmZpZ3VyYXRpb246KFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKWNvbmZpZ3Vy
YXRpb24gd2tWaWV3OihXS1ZpZXcgKil3ZWJWaWV3OwogCiAtICh2b2lkKWRpZFVwZGF0ZVZpc2li
bGVSZWN0OihDR1JlY3QpdmlzaWJsZVJlY3QgdW5vYnNjdXJlZFJlY3Q6KENHUmVjdCl1bm9ic2N1
cmVkUmVjdAogICAgIHVub2JzY3VyZWRSZWN0SW5TY3JvbGxWaWV3Q29vcmRpbmF0ZXM6KENHUmVj
dCl1bm9ic2N1cmVkUmVjdEluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCShyZXZpc2lvbiAxODgxOTAp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0JKHdvcmtp
bmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIFBMQVRGT1JNKElPUykKIAorI2ltcG9y
dCAiQVBJUGFnZUNvbmZpZ3VyYXRpb24uaCIKICNpbXBvcnQgIkFwcGxpY2F0aW9uU3RhdGVUcmFj
a2VyLmgiCiAjaW1wb3J0ICJQYWdlQ2xpZW50SW1wbElPUy5oIgogI2ltcG9ydCAiUmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5oIgpAQCAtMTgxLDExICsxODIsMTEgQEAgLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoRnJhbWU6KENHUmVjdClmcgogICAgIHN0ZDo6dW5pcXVlX3B0cjxBcHBs
aWNhdGlvblN0YXRlVHJhY2tlcj4gX2FwcGxpY2F0aW9uU3RhdGVUcmFja2VyOwogfQogCi0tIChp
bnN0YW5jZXR5cGUpX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aFByb2Nlc3NQb29sOihXZWJLaXQ6
OldlYlByb2Nlc3NQb29sJilwcm9jZXNzUG9vbCBjb25maWd1cmF0aW9uOihXZWJLaXQ6OldlYlBh
Z2VDb25maWd1cmF0aW9uKXdlYlBhZ2VDb25maWd1cmF0aW9uCistIChpbnN0YW5jZXR5cGUpX2Nv
bW1vbkluaXRpYWxpemF0aW9uV2l0aFByb2Nlc3NQb29sOihXZWJLaXQ6OldlYlByb2Nlc3NQb29s
Jilwcm9jZXNzUG9vbCBjb25maWd1cmF0aW9uOihSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4m
Jiljb25maWd1cmF0aW9uCiB7CiAgICAgQVNTRVJUKF9wYWdlQ2xpZW50KTsKIAotICAgIF9wYWdl
ID0gcHJvY2Vzc1Bvb2wuY3JlYXRlV2ViUGFnZSgqX3BhZ2VDbGllbnQsIFdURjo6bW92ZSh3ZWJQ
YWdlQ29uZmlndXJhdGlvbikpOworICAgIF9wYWdlID0gcHJvY2Vzc1Bvb2wuY3JlYXRlV2ViUGFn
ZSgqX3BhZ2VDbGllbnQsIFdURjo6bW92ZShjb25maWd1cmF0aW9uKSk7CiAgICAgX3BhZ2UtPmlu
aXRpYWxpemVXZWJQYWdlKCk7CiAgICAgX3BhZ2UtPnNldEludHJpbnNpY0RldmljZVNjYWxlRmFj
dG9yKFdLR2V0U2NhbGVGYWN0b3JGb3JTY3JlZW4oW1VJU2NyZWVuIG1haW5TY3JlZW5dKSk7CiAg
ICAgX3BhZ2UtPnNldFVzZUZpeGVkTGF5b3V0KHRydWUpOwpAQCAtMjE4LDcgKzIxOSw3IEBAIC0g
KGluc3RhbmNldHlwZSlfY29tbW9uSW5pdGlhbGl6YXRpb25XaXQKICAgICByZXR1cm4gc2VsZjsK
IH0KIAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KENHUmVjdClmcmFtZSBwcm9jZXNz
UG9vbDooV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYpcHJvY2Vzc1Bvb2wgY29uZmlndXJhdGlvbjoo
V2ViS2l0OjpXZWJQYWdlQ29uZmlndXJhdGlvbil3ZWJQYWdlQ29uZmlndXJhdGlvbiB3ZWJWaWV3
OihXS1dlYlZpZXcgKil3ZWJWaWV3CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dS
ZWN0KWZyYW1lIHByb2Nlc3NQb29sOihXZWJLaXQ6OldlYlByb2Nlc3NQb29sJilwcm9jZXNzUG9v
bCBjb25maWd1cmF0aW9uOihSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJiljb25maWd1cmF0
aW9uIHdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcKIHsKICAgICBpZiAoIShzZWxmID0gW3N1
cGVyIGluaXRXaXRoRnJhbWU6ZnJhbWVdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTIyOCwx
MCArMjI5LDEwIEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihDR1JlY3QpZnIKICAg
ICBfcGFnZUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZUNsaWVudEltcGw+KHNlbGYsIHdl
YlZpZXcpOwogICAgIF93ZWJWaWV3ID0gd2ViVmlldzsKIAotICAgIHJldHVybiBbc2VsZiBfY29t
bW9uSW5pdGlhbGl6YXRpb25XaXRoUHJvY2Vzc1Bvb2w6cHJvY2Vzc1Bvb2wgY29uZmlndXJhdGlv
bjp3ZWJQYWdlQ29uZmlndXJhdGlvbl07CisgICAgcmV0dXJuIFtzZWxmIF9jb21tb25Jbml0aWFs
aXphdGlvbldpdGhQcm9jZXNzUG9vbDpwcm9jZXNzUG9vbCBjb25maWd1cmF0aW9uOldURjo6bW92
ZShjb25maWd1cmF0aW9uKV07CiB9CiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihD
R1JlY3QpZnJhbWUgcHJvY2Vzc1Bvb2w6KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmKXByb2Nlc3NQ
b29sIGNvbmZpZ3VyYXRpb246KFdlYktpdDo6V2ViUGFnZUNvbmZpZ3VyYXRpb24pd2ViUGFnZUNv
bmZpZ3VyYXRpb24gd2tWaWV3OihXS1ZpZXcgKil3a1ZpZXcKKy0gKGluc3RhbmNldHlwZSlpbml0
V2l0aEZyYW1lOihDR1JlY3QpZnJhbWUgcHJvY2Vzc1Bvb2w6KFdlYktpdDo6V2ViUHJvY2Vzc1Bv
b2wmKXByb2Nlc3NQb29sIGNvbmZpZ3VyYXRpb246KFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9u
PiYmKWNvbmZpZ3VyYXRpb24gd2tWaWV3OihXS1ZpZXcgKil3a1ZpZXcKIHsKICAgICBpZiAoIShz
ZWxmID0gW3N1cGVyIGluaXRXaXRoRnJhbWU6ZnJhbWVdKSkKICAgICAgICAgcmV0dXJuIG5pbDsK
QEAgLTI0MCw3ICsyNDEsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0
KWZyCiAKICAgICBfcGFnZUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZUNsaWVudEltcGw+
KHNlbGYsIHdrVmlldyk7CiAKLSAgICByZXR1cm4gW3NlbGYgX2NvbW1vbkluaXRpYWxpemF0aW9u
V2l0aFByb2Nlc3NQb29sOnByb2Nlc3NQb29sIGNvbmZpZ3VyYXRpb246d2ViUGFnZUNvbmZpZ3Vy
YXRpb25dOworICAgIHJldHVybiBbc2VsZiBfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoUHJvY2Vz
c1Bvb2w6cHJvY2Vzc1Bvb2wgY29uZmlndXJhdGlvbjpXVEY6Om1vdmUoY29uZmlndXJhdGlvbild
OwogfQogCiAtICh2b2lkKWRlYWxsb2MK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258576</attachid>
            <date>2015-08-08 14:36:51 -0700</date>
            <delta_ts>2015-08-08 16:00:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147811-20150808143638.patch</filename>
            <type>text/plain</type>
            <size>52351</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4ODE5MCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg1IEBACisyMDE1LTA4LTA4ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVwbGFjZSBXZWJQYWdlQ29uZmlndXJh
dGlvbiB3aXRoIEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24gYW5kIGV4cG9zZSBhIEMtU1BJIGFjY2Vz
c29yIGZvciBpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQ3ODExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgLSBBZGRzIHRoZSBtaXNzaW5nIHBpZWNlcyBmcm9tIFdlYlBhZ2VDb25maWd1cmF0aW9uIGlu
dG8gQVBJOjpQYWdlQ29uZmlndXJhdGlvbi4KKyAgICAgICAgLSBBZGRzIEMtU1BJIHRvIHNldCBh
bmQgZ2V0IHRoZSBXZWJzaXRlRGF0YVN0b3JlIG9uIHRoZSBXS1BhZ2VDb25maWd1cmF0aW9uUmVm
LgorICAgICAgICAtIFVzZXMgQVBJOjpQYWdlQ29uZmlndXJhdGlvbiB0byBwYXNzIGNvbmZpZ3Vy
YXRpb24gaW5mb3JtYXRpb24gZnJvbSBXS1dlYlZpZXcvV0tWaWV3IAorICAgICAgICAgIHRvIFdl
YlBhZ2VQcm94eS4KKyAgICAgICAgLSBTdG9yZXMgdGhlIEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24g
b24gdGhlIFdlYlBhZ2VQcm94eSBhbmQgZXhwb3NlcyBhIG5ldyBDLVNQSSBmdW5jdGlvbiwKKyAg
ICAgICAgICBXS1BhZ2VDb3B5UGFnZUNvbmZpZ3VyYXRpb24sIHRvIGdldCBhIGNvcHkgb2YgaXQu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcDoKKyAg
ICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChBUEk6OlBh
Z2VDb25maWd1cmF0aW9uOjpQYWdlQ29uZmlndXJhdGlvbik6CisgICAgICAgIChBUEk6OlBhZ2VD
b25maWd1cmF0aW9uOjp+UGFnZUNvbmZpZ3VyYXRpb24pOgorICAgICAgICAoQVBJOjpQYWdlQ29u
ZmlndXJhdGlvbjo6Y29weSk6CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpwcm9j
ZXNzUG9vbCk6CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpzZXRSZWxhdGVkUGFn
ZSk6CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjp2aXNpdGVkTGlua1Byb3ZpZGVy
KToKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OnNldFZpc2l0ZWRMaW5rUHJvdmlk
ZXIpOgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6d2Vic2l0ZURhdGFTdG9yZSk6
CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpzZXRXZWJzaXRlRGF0YVN0b3JlKToK
KyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OnNlc3Npb25JRCk6CisgICAgICAgIChB
UEk6OlBhZ2VDb25maWd1cmF0aW9uOjpzZXRTZXNzaW9uSUQpOgorICAgICAgICAoQVBJOjpQYWdl
Q29uZmlndXJhdGlvbjo6d2ViUGFnZUNvbmZpZ3VyYXRpb24pOiBEZWxldGVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKEFQSTo6UGFn
ZUNvbmZpZ3VyYXRpb246OnByZWZlcmVuY2VWYWx1ZXMpOgorICAgICAgICAoQVBJOjpQYWdlQ29u
ZmlndXJhdGlvbjo6dHJlYXRzU0hBMVNpZ25lZENlcnRpZmljYXRlc0FzSW5zZWN1cmUpOgorICAg
ICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6c2V0VHJlYXRzU0hBMVNpZ25lZENlcnRpZmlj
YXRlc0FzSW5zZWN1cmUpOgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6YWx3YXlz
UnVuc0F0Rm9yZWdyb3VuZFByaW9yaXR5KToKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRp
b246OnNldEFsd2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eSk6CisgICAgICAgIChBUEk6OlBh
Z2VDb25maWd1cmF0aW9uOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdlR2V0UGFnZUdyb3VwKToKKyAgICAgICAg
KFdLUGFnZUNvcHlQYWdlQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXS1BhZ2VMb2FkVVJMKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLUGFnZUNvbmZpZ3VyYXRpb25SZWYuY3BwOgorICAgICAgICAoV0tQYWdlQ29uZmln
dXJhdGlvblNldFJlbGF0ZWRQYWdlKToKKyAgICAgICAgKFdLUGFnZUNvbmZpZ3VyYXRpb25HZXRX
ZWJzaXRlRGF0YVN0b3JlKToKKyAgICAgICAgKFdLUGFnZUNvbmZpZ3VyYXRpb25TZXRXZWJzaXRl
RGF0YVN0b3JlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlQ29uZmlndXJhdGlv
blJlZi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAg
ICAgICAoLVtXS1dlYlZpZXcgaW5pdFdpdGhGcmFtZTpjb25maWd1cmF0aW9uOl0pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvaW9zL1dLVmlld0lPUy5tbToKKyAgICAgICAgKC1bV0tWaWV3IF9j
b21tb25Jbml0aWFsaXphdGlvbldpdGhDb250ZXh0UmVmOnBhZ2VHcm91cFJlZjpyZWxhdGVkVG9Q
YWdlOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbToKKyAgICAgICAg
KC1bV0tWaWV3IF9zZXRQcmltYXJ5VHJhY2tpbmdBcmVhOl0pOgorICAgICAgICAoLVtXS1ZpZXcg
aW5pdFdpdGhGcmFtZTpwcm9jZXNzUG9vbDpjb25maWd1cmF0aW9uOndlYlZpZXc6XSk6CisgICAg
ICAgICgtW1dLVmlldyBpbml0V2l0aEZyYW1lOmNvbnRleHRSZWY6cGFnZUdyb3VwUmVmOnJlbGF0
ZWRUb1BhZ2U6XSk6CisgICAgICAgICgtW1dLVmlldyBpbml0V2l0aEZyYW1lOmNvbmZpZ3VyYXRp
b25SZWY6XSk6CisgICAgICAgICgtW1dLVmlldyB3YW50c1VwZGF0ZUxheWVyXSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50ZXJuYWwuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVh
dGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6fldlYlBhZ2VQcm94eSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6Y29uZmlndXJhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6cHJvY2Vzc0lkZW50aWZpZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwYWdlSUQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNlc3Npb25JRCk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNy
ZWF0ZU5ld1dlYlByb2Nlc3NSZXNwZWN0aW5nUHJvY2Vzc0NvdW50TGltaXQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQb29sOjpkb3dubG9hZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6d2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQcm94eTo6Y3JlYXRlV2ViUGFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnByb2Nl
c3NQb29sKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW06CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aFByb2Nlc3NQb29sOmNvbmZpZ3VyYXRpb246
XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgaW5pdFdpdGhGcmFtZTpwcm9jZXNzUG9vbDpj
b25maWd1cmF0aW9uOndlYlZpZXc6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgaW5pdFdp
dGhGcmFtZTpwcm9jZXNzUG9vbDpjb25maWd1cmF0aW9uOndrVmlldzpdKToKKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyBkZWFsbG9jXSk6CisKIDIwMTUtMDgtMDcgIEZpbGlwIFBpemxvICA8ZnBp
emxvQGFwcGxlLmNvbT4KIAogICAgICAgICBMaWdodHdlaWdodCBsb2NrcyBzaG91bGQgYmUgYWRh
cHRpdmUKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShy
ZXZpc2lvbiAxODgxOTApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIkFQSU5hdmln
YXRpb25BY3Rpb24uaCIKICNpbmNsdWRlICJBUElOYXZpZ2F0aW9uQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiQVBJTmF2aWdhdGlvblJlc3BvbnNlLmgiCisjaW5jbHVkZSAiQVBJUGFnZUNvbmZpZ3VyYXRp
b24uaCIKICNpbmNsdWRlICJBUElQb2xpY3lDbGllbnQuaCIKICNpbmNsdWRlICJBUElTZWN1cml0
eU9yaWdpbi5oIgogI2luY2x1ZGUgIkFQSVVJQ2xpZW50LmgiCkBAIC0yOTMsMTMgKzI5NCwxNCBA
QCBwcml2YXRlOgogICAgIFBhZ2VDbGllbnQmIG1fcGFnZUNsaWVudDsKIH07CiAKLVJlZjxXZWJQ
YWdlUHJveHk+IFdlYlBhZ2VQcm94eTo6Y3JlYXRlKFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdl
YlByb2Nlc3NQcm94eSYgcHJvY2VzcywgdWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJQYWdlQ29u
ZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKK1JlZjxXZWJQYWdlUHJveHk+IFdlYlBhZ2VQcm94
eTo6Y3JlYXRlKFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2Vz
cywgdWludDY0X3QgcGFnZUlELCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJiBjb25maWd1
cmF0aW9uKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlBhZ2VQcm94eShwYWdlQ2xp
ZW50LCBwcm9jZXNzLCBwYWdlSUQsIGNvbmZpZ3VyYXRpb24pKTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBXZWJQYWdlUHJveHkocGFnZUNsaWVudCwgcHJvY2VzcywgcGFnZUlELCBXVEY6Om1v
dmUoY29uZmlndXJhdGlvbikpKTsKIH0KIAotV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFn
ZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCB1aW50NjRfdCBw
YWdlSUQsIGNvbnN0IFdlYlBhZ2VDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQorV2ViUGFn
ZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1By
b3h5JiBwcm9jZXNzLCB1aW50NjRfdCBwYWdlSUQsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9u
PiYmIGNvbmZpZ3VyYXRpb24pCiAgICAgOiBtX3BhZ2VDbGllbnQocGFnZUNsaWVudCkKKyAgICAs
IG1fY29uZmlndXJhdGlvbihXVEY6Om1vdmUoY29uZmlndXJhdGlvbikpCiAgICAgLCBtX2xvYWRl
ckNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6TG9hZGVyQ2xpZW50PigpKQogICAgICwgbV9w
b2xpY3lDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OlBvbGljeUNsaWVudD4oKSkKICAgICAs
IG1fZm9ybUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6Rm9ybUNsaWVudD4oKSkKQEAgLTMx
MSwxNCArMzEzLDE0IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHAK
ICNlbmRpZgogICAgICwgbV9uYXZpZ2F0aW9uU3RhdGUoc3RkOjptYWtlX3VuaXF1ZTxXZWJOYXZp
Z2F0aW9uU3RhdGU+KCkpCiAgICAgLCBtX3Byb2Nlc3MocHJvY2VzcykKLSAgICAsIG1fcGFnZUdy
b3VwKCpjb25maWd1cmF0aW9uLnBhZ2VHcm91cCkKLSAgICAsIG1fcHJlZmVyZW5jZXMoKmNvbmZp
Z3VyYXRpb24ucHJlZmVyZW5jZXMpCi0gICAgLCBtX3VzZXJDb250ZW50Q29udHJvbGxlcihjb25m
aWd1cmF0aW9uLnVzZXJDb250ZW50Q29udHJvbGxlcikKLSAgICAsIG1fdmlzaXRlZExpbmtQcm92
aWRlcigqY29uZmlndXJhdGlvbi52aXNpdGVkTGlua1Byb3ZpZGVyKQotICAgICwgbV93ZWJzaXRl
RGF0YVN0b3JlKCpjb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUpCisgICAgLCBtX3BhZ2VH
cm91cCgqbV9jb25maWd1cmF0aW9uLT5wYWdlR3JvdXAoKSkKKyAgICAsIG1fcHJlZmVyZW5jZXMo
Km1fY29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKSkKKyAgICAsIG1fdXNlckNvbnRlbnRDb250
cm9sbGVyKG1fY29uZmlndXJhdGlvbi0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkpCisgICAgLCBt
X3Zpc2l0ZWRMaW5rUHJvdmlkZXIoKm1fY29uZmlndXJhdGlvbi0+dmlzaXRlZExpbmtQcm92aWRl
cigpKQorICAgICwgbV93ZWJzaXRlRGF0YVN0b3JlKG1fY29uZmlndXJhdGlvbi0+d2Vic2l0ZURh
dGFTdG9yZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCkpCiAgICAgLCBtX21haW5GcmFtZShudWxscHRy
KQogICAgICwgbV91c2VyQWdlbnQoc3RhbmRhcmRVc2VyQWdlbnQoKSkKLSAgICAsIG1fdHJlYXRz
U0hBMUNlcnRpZmljYXRlc0FzSW5zZWN1cmUoY29uZmlndXJhdGlvbi50cmVhdHNTSEExU2lnbmVk
Q2VydGlmaWNhdGVzQXNJbnNlY3VyZSkKKyAgICAsIG1fdHJlYXRzU0hBMUNlcnRpZmljYXRlc0Fz
SW5zZWN1cmUobV9jb25maWd1cmF0aW9uLT50cmVhdHNTSEExU2lnbmVkQ2VydGlmaWNhdGVzQXNJ
bnNlY3VyZSgpKQogI2lmIFBMQVRGT1JNKElPUykKICAgICAsIG1faGFzUmVjZWl2ZWRMYXllclRy
ZWVUcmFuc2FjdGlvbkFmdGVyRGlkQ29tbWl0TG9hZCh0cnVlKQogICAgICwgbV9maXJzdExheWVy
VHJlZVRyYW5zYWN0aW9uSWRBZnRlckRpZENvbW1pdExvYWQoMCkKQEAgLTMzNSw3ICszMzcsNyBA
QCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwCiAgICAgLCBtX3ZpZXdT
dGF0ZShWaWV3U3RhdGU6Ok5vRmxhZ3MpCiAgICAgLCBtX3ZpZXdXYXNFdmVySW5XaW5kb3coZmFs
c2UpCiAjaWYgUExBVEZPUk0oSU9TKQotICAgICwgbV9hbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJp
b3JpdHkoY29uZmlndXJhdGlvbi5hbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHkpCisgICAg
LCBtX2Fsd2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eShtX2NvbmZpZ3VyYXRpb24tPmFsd2F5
c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eSgpKQogI2VuZGlmCiAgICAgLCBtX2JhY2tGb3J3YXJk
TGlzdChXZWJCYWNrRm9yd2FyZExpc3Q6OmNyZWF0ZSgqdGhpcykpCiAgICAgLCBtX21haW50YWlu
c0luYWN0aXZlU2VsZWN0aW9uKGZhbHNlKQpAQCAtMzc5LDcgKzM4MSw3IEBAIFdlYlBhZ2VQcm94
eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHAKICAgICAsIG1faXNUcmFja2luZ1RvdWNoRXZl
bnRzKGZhbHNlKQogI2VuZGlmCiAgICAgLCBtX3BhZ2VJRChwYWdlSUQpCi0gICAgLCBtX3Nlc3Np
b25JRChjb25maWd1cmF0aW9uLnNlc3Npb25JRCkKKyAgICAsIG1fc2Vzc2lvbklEKG1fY29uZmln
dXJhdGlvbi0+c2Vzc2lvbklEKCkpCiAgICAgLCBtX2lzUGFnZVN1c3BlbmRlZChmYWxzZSkKICAg
ICAsIG1fYWRkc1Zpc2l0ZWRMaW5rcyh0cnVlKQogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9S
KQpAQCAtNDM2LDcgKzQzOCw3IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGll
bnQmIHAKICNlbmRpZgogICAgICwgbV9zY3JvbGxQaW5uaW5nQmVoYXZpb3IoRG9Ob3RQaW4pCiAg
ICAgLCBtX25hdmlnYXRpb25JRCgwKQotICAgICwgbV9jb25maWd1cmF0aW9uUHJlZmVyZW5jZVZh
bHVlcyhjb25maWd1cmF0aW9uLnByZWZlcmVuY2VWYWx1ZXMpCisgICAgLCBtX2NvbmZpZ3VyYXRp
b25QcmVmZXJlbmNlVmFsdWVzKG1fY29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpKQog
ICAgICwgbV9wb3RlbnRpYWxseUNoYW5nZWRWaWV3U3RhdGVGbGFncyhWaWV3U3RhdGU6Ok5vRmxh
Z3MpCiAgICAgLCBtX3ZpZXdTdGF0ZUNoYW5nZVdhbnRzU3luY2hyb25vdXNSZXBseShmYWxzZSkK
IHsKQEAgLTUxOCw2ICs1MjAsMTEgQEAgV2ViUGFnZVByb3h5Ojp+V2ViUGFnZVByb3h5KCkKICNl
bmRpZgogfQogCitjb25zdCBBUEk6OlBhZ2VDb25maWd1cmF0aW9uJiBXZWJQYWdlUHJveHk6OmNv
bmZpZ3VyYXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbmZpZ3VyYXRpb24uZ2V0KCk7
Cit9CisKIFBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIgV2ViUGFnZVByb3h5Ojpwcm9jZXNzSWRl
bnRpZmllcigpIGNvbnN0CiB7CiAgICAgaWYgKG1faXNDbG9zZWQpCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAxODgxOTApCisrKyBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1NCwy
OCArMjU0LDYgQEAgdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgV2ViQ29yZTo6SQogdHlw
ZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgV2ViQ29yZTo6TWFjaFNlbmRSaWdodCY+IE1hY2hT
ZW5kUmlnaHRDYWxsYmFjazsKICNlbmRpZgogCi1zdHJ1Y3QgV2ViUGFnZUNvbmZpZ3VyYXRpb24g
ewotICAgIFdlYlBhZ2VHcm91cCogcGFnZUdyb3VwID0gbnVsbHB0cjsKLSAgICBXZWJQcmVmZXJl
bmNlcyogcHJlZmVyZW5jZXMgPSBudWxscHRyOwotICAgIFdlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5KiB1c2VyQ29udGVudENvbnRyb2xsZXIgPSBudWxscHRyOwotICAgIFZpc2l0ZWRMaW5r
UHJvdmlkZXIqIHZpc2l0ZWRMaW5rUHJvdmlkZXIgPSBudWxscHRyOwotCi0gICAgV2Vic2l0ZURh
dGFTdG9yZSogd2Vic2l0ZURhdGFTdG9yZSA9IG51bGxwdHI7Ci0gICAgLy8gRklYTUU6IFdlIGN1
cnJlbnRseSBoYXZlIHRvIHBhc3MgdGhlIHNlc3Npb24gSUQgc2VwYXJhdGVseSBoZXJlIHRvIHN1
cHBvcnQgdGhlIGxlZ2FjeSBwcml2YXRlIGJyb3dzaW5nIHNlc3Npb24uCi0gICAgLy8gT25jZSB3
ZSBnZXQgcmlkIG9mIGl0IHdlIHNob3VsZCBnZXQgcmlkIG9mIHRoaXMgY29uZmlndXJhdGlvbiBw
YXJhbWV0ZXIgYXMgd2VsbC4KLSAgICBXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEOwotCi0g
ICAgV2ViUGFnZVByb3h5KiByZWxhdGVkUGFnZSA9IG51bGxwdHI7Ci0KLSAgICBib29sIHRyZWF0
c1NIQTFTaWduZWRDZXJ0aWZpY2F0ZXNBc0luc2VjdXJlID0gZmFsc2U7Ci0KLSNpZiBQTEFURk9S
TShJT1MpCi0gICAgYm9vbCBhbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHkgPSBmYWxzZTsK
LSNlbmRpZgotCi0gICAgV2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWVNYXAgcHJlZmVyZW5jZVZh
bHVlczsKLX07Ci0KIGNsYXNzIFdlYlBhZ2VQcm94eSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8
QVBJOjpPYmplY3Q6OlR5cGU6OlBhZ2U+CiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCiAg
ICAgLCBwdWJsaWMgV2ViQ29sb3JQaWNrZXI6OkNsaWVudApAQCAtMjg3LDkgKzI2NSwxMSBAQCBj
bGFzcyBXZWJQYWdlUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJCiAgICAgLCBwdWJsaWMgSVBD
OjpNZXNzYWdlUmVjZWl2ZXIKICAgICAsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIgewogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8V2ViUGFnZVByb3h5PiBjcmVhdGUoUGFnZUNsaWVudCYsIFdl
YlByb2Nlc3NQcm94eSYsIHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViUGFnZUNvbmZpZ3VyYXRp
b24mKTsKKyAgICBzdGF0aWMgUmVmPFdlYlBhZ2VQcm94eT4gY3JlYXRlKFBhZ2VDbGllbnQmLCBX
ZWJQcm9jZXNzUHJveHkmLCB1aW50NjRfdCBwYWdlSUQsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0
aW9uPiYmKTsKICAgICB2aXJ0dWFsIH5XZWJQYWdlUHJveHkoKTsKIAorICAgIGNvbnN0IEFQSTo6
UGFnZUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24oKSBjb25zdDsKKwogICAgIHVpbnQ2NF90
IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEOyB9CiAgICAgV2ViQ29yZTo6U2Vzc2lv
bklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbklEOyB9CiAgICAgdm9pZCBz
ZXRTZXNzaW9uSUQoV2ViQ29yZTo6U2Vzc2lvbklEKTsKQEAgLTEwODQsNyArMTA2NCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGNsZWFyV2hlZWxFdmVudFRlc3RUcmlnZ2VyKCk7CiAKIHByaXZhdGU6
Ci0gICAgV2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJveHkmLCB1aW50NjRf
dCBwYWdlSUQsIGNvbnN0IFdlYlBhZ2VDb25maWd1cmF0aW9uJik7CisgICAgV2ViUGFnZVByb3h5
KFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJveHkmLCB1aW50NjRfdCBwYWdlSUQsIFJlZjxBUEk6
OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwog
CiAgICAgdm9pZCB1cGRhdGVWaWV3U3RhdGUoV2ViQ29yZTo6Vmlld1N0YXRlOjpGbGFncyBmbGFn
c1RvVXBkYXRlID0gV2ViQ29yZTo6Vmlld1N0YXRlOjpBbGxGbGFncyk7CkBAIC0xNDg4LDYgKzE0
NjgsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgaGFuZGxlU3luY2hyb25vdXNNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUsIGNvbnN0IFVzZXJEYXRhJiBt
ZXNzYWdlQm9keSwgVXNlckRhdGEmIHJldHVyblVzZXJEYXRhKTsKIAogICAgIFBhZ2VDbGllbnQm
IG1fcGFnZUNsaWVudDsKKyAgICBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4gbV9jb25maWd1
cmF0aW9uOworCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6TG9hZGVyQ2xpZW50PiBtX2xvYWRl
ckNsaWVudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpQb2xpY3lDbGllbnQ+IG1fcG9saWN5
Q2xpZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6Ok5hdmlnYXRpb25DbGllbnQ+IG1fbmF2
aWdhdGlvbkNsaWVudDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcAkocmV2aXNpb24gMTg4MTkwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2lu
Y2x1ZGUgIkFQSUFycmF5LmgiCiAjaW5jbHVkZSAiQVBJRG93bmxvYWRDbGllbnQuaCIKICNpbmNs
dWRlICJBUElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudC5oIgorI2luY2x1ZGUgIkFQSVBhZ2VD
b25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgi
CiAjaW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJE
b3dubG9hZFByb3h5LmgiCkBAIC04MzEsMTggKzgzMiwxOCBAQCBXZWJQcm9jZXNzUHJveHkmIFdl
YlByb2Nlc3NQb29sOjpjcmVhdGVOCiAgICAgcmV0dXJuICpwcm9jZXNzOwogfQogCi1QYXNzUmVm
UHRyPFdlYlBhZ2VQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVu
dCYgcGFnZUNsaWVudCwgV2ViUGFnZUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbikKK1Bhc3NS
ZWZQdHI8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xp
ZW50JiBwYWdlQ2xpZW50LCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJiBwYWdlQ29uZmln
dXJhdGlvbikKIHsKLSAgICBpZiAoIWNvbmZpZ3VyYXRpb24ucGFnZUdyb3VwKQotICAgICAgICBj
b25maWd1cmF0aW9uLnBhZ2VHcm91cCA9IG1fZGVmYXVsdFBhZ2VHcm91cC5wdHIoKTsKLSAgICBp
ZiAoIWNvbmZpZ3VyYXRpb24ucHJlZmVyZW5jZXMpCi0gICAgICAgIGNvbmZpZ3VyYXRpb24ucHJl
ZmVyZW5jZXMgPSAmY29uZmlndXJhdGlvbi5wYWdlR3JvdXAtPnByZWZlcmVuY2VzKCk7Ci0gICAg
aWYgKCFjb25maWd1cmF0aW9uLnZpc2l0ZWRMaW5rUHJvdmlkZXIpCi0gICAgICAgIGNvbmZpZ3Vy
YXRpb24udmlzaXRlZExpbmtQcm92aWRlciA9IG1fdmlzaXRlZExpbmtQcm92aWRlci5wdHIoKTsK
LSAgICBpZiAoIWNvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSkgewotICAgICAgICBBU1NF
UlQoIWNvbmZpZ3VyYXRpb24uc2Vzc2lvbklELmlzVmFsaWQoKSk7Ci0gICAgICAgIGNvbmZpZ3Vy
YXRpb24ud2Vic2l0ZURhdGFTdG9yZSA9ICZtX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRh
U3RvcmUoKTsKLSAgICAgICAgY29uZmlndXJhdGlvbi5zZXNzaW9uSUQgPSBjb25maWd1cmF0aW9u
LnByZWZlcmVuY2VzLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkgPyBTZXNzaW9uSUQ6OmxlZ2Fj
eVByaXZhdGVTZXNzaW9uSUQoKSA6IFNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpOworICAg
IGlmICghcGFnZUNvbmZpZ3VyYXRpb24tPnBhZ2VHcm91cCgpKQorICAgICAgICBwYWdlQ29uZmln
dXJhdGlvbi0+c2V0UGFnZUdyb3VwKG1fZGVmYXVsdFBhZ2VHcm91cC5wdHIoKSk7CisgICAgaWYg
KCFwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKSkKKyAgICAgICAgcGFnZUNvbmZpZ3Vy
YXRpb24tPnNldFByZWZlcmVuY2VzKCZwYWdlQ29uZmlndXJhdGlvbi0+cGFnZUdyb3VwKCktPnBy
ZWZlcmVuY2VzKCkpOworICAgIGlmICghcGFnZUNvbmZpZ3VyYXRpb24tPnZpc2l0ZWRMaW5rUHJv
dmlkZXIoKSkKKyAgICAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFZpc2l0ZWRMaW5rUHJvdmlk
ZXIobV92aXNpdGVkTGlua1Byb3ZpZGVyLnB0cigpKTsKKyAgICBpZiAoIXBhZ2VDb25maWd1cmF0
aW9uLT53ZWJzaXRlRGF0YVN0b3JlKCkpIHsKKyAgICAgICAgQVNTRVJUKCFwYWdlQ29uZmlndXJh
dGlvbi0+c2Vzc2lvbklEKCkuaXNWYWxpZCgpKTsKKyAgICAgICAgcGFnZUNvbmZpZ3VyYXRpb24t
PnNldFdlYnNpdGVEYXRhU3RvcmUobV93ZWJzaXRlRGF0YVN0b3JlLmdldCgpKTsKKyAgICAgICAg
cGFnZUNvbmZpZ3VyYXRpb24tPnNldFNlc3Npb25JRChwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVy
ZW5jZXMoKS0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpID8gU2Vzc2lvbklEOjpsZWdhY3lQcml2
YXRlU2Vzc2lvbklEKCkgOiBTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CiAgICAgfQog
CiAgICAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gcHJvY2VzczsKQEAgLTg1MiwxNCArODUzLDE0
IEBAIFBhc3NSZWZQdHI8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUG9vbDoKICAgICAgICAgaWYg
KG1faGF2ZUluaXRpYWxFbXB0eVByb2Nlc3MpIHsKICAgICAgICAgICAgIHByb2Nlc3MgPSBtX3By
b2Nlc3Nlcy5sYXN0KCk7CiAgICAgICAgICAgICBtX2hhdmVJbml0aWFsRW1wdHlQcm9jZXNzID0g
ZmFsc2U7Ci0gICAgICAgIH0gZWxzZSBpZiAoY29uZmlndXJhdGlvbi5yZWxhdGVkUGFnZSkgewor
ICAgICAgICB9IGVsc2UgaWYgKHBhZ2VDb25maWd1cmF0aW9uLT5yZWxhdGVkUGFnZSgpKSB7CiAg
ICAgICAgICAgICAvLyBTaGFyaW5nIHByb2Nlc3NlcywgZS5nLiB3aGVuIGNyZWF0aW5nIHRoZSBw
YWdlIHZpYSB3aW5kb3cub3BlbigpLgotICAgICAgICAgICAgcHJvY2VzcyA9ICZjb25maWd1cmF0
aW9uLnJlbGF0ZWRQYWdlLT5wcm9jZXNzKCk7CisgICAgICAgICAgICBwcm9jZXNzID0gJnBhZ2VD
b25maWd1cmF0aW9uLT5yZWxhdGVkUGFnZSgpLT5wcm9jZXNzKCk7CiAgICAgICAgIH0gZWxzZQog
ICAgICAgICAgICAgcHJvY2VzcyA9ICZjcmVhdGVOZXdXZWJQcm9jZXNzUmVzcGVjdGluZ1Byb2Nl
c3NDb3VudExpbWl0KCk7CiAgICAgfQogCi0gICAgcmV0dXJuIHByb2Nlc3MtPmNyZWF0ZVdlYlBh
Z2UocGFnZUNsaWVudCwgV1RGOjptb3ZlKGNvbmZpZ3VyYXRpb24pKTsKKyAgICByZXR1cm4gcHJv
Y2Vzcy0+Y3JlYXRlV2ViUGFnZShwYWdlQ2xpZW50LCBXVEY6Om1vdmUocGFnZUNvbmZpZ3VyYXRp
b24pKTsKIH0KIAogRG93bmxvYWRQcm94eSogV2ViUHJvY2Vzc1Bvb2w6OmRvd25sb2FkKFdlYlBh
Z2VQcm94eSogaW5pdGlhdGluZ1BhZ2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCShyZXZpc2lv
biAxODgxOTApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAko
d29ya2luZyBjb3B5KQpAQCAtNzYsNiArNzYsNyBAQCBPQkpDX0NMQVNTIE5TU3RyaW5nOwogbmFt
ZXNwYWNlIEFQSSB7CiBjbGFzcyBEb3dubG9hZENsaWVudDsKIGNsYXNzIExlZ2FjeUNvbnRleHRI
aXN0b3J5Q2xpZW50OworY2xhc3MgUGFnZUNvbmZpZ3VyYXRpb247CiB9CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewpAQCAtODYsNyArODcsNiBAQCBjbGFzcyBXZWJJY29uRGF0YWJhc2U7CiBjbGFzcyBX
ZWJQYWdlR3JvdXA7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiBzdHJ1Y3QgU3RhdGlzdGljc0RhdGE7
Ci1zdHJ1Y3QgV2ViUGFnZUNvbmZpZ3VyYXRpb247CiBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVyczsKICAgICAKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPEFQSTo6RGljdGlvbmFy
eSo+IERpY3Rpb25hcnlDYWxsYmFjazsKQEAgLTE3MSw3ICsxNzEsNyBAQCBwdWJsaWM6CiAKICAg
ICBBUEk6OldlYnNpdGVEYXRhU3RvcmUqIHdlYnNpdGVEYXRhU3RvcmUoKSBjb25zdCB7IHJldHVy
biBtX3dlYnNpdGVEYXRhU3RvcmUuZ2V0KCk7IH0KIAotICAgIFBhc3NSZWZQdHI8V2ViUGFnZVBy
b3h5PiBjcmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmLCBXZWJQYWdlQ29uZmlndXJhdGlvbik7Cisg
ICAgUGFzc1JlZlB0cjxXZWJQYWdlUHJveHk+IGNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYsIFJl
ZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsKIAogICAgIGNvbnN0IFN0cmluZyYgaW5qZWN0
ZWRCdW5kbGVQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9jb25maWd1cmF0aW9uLT5pbmplY3RlZEJ1
bmRsZVBhdGgoKTsgfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmNwcAkocmV2aXNpb24gMTg4MTkwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwNiwxMCArMjA2LDEw
IEBAIFdlYlBhZ2VQcm94eSogV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHUKICAgICByZXR1cm4g
Z2xvYmFsUGFnZU1hcCgpLmdldChwYWdlSUQpOwogfQogCi1SZWY8V2ViUGFnZVByb3h5PiBXZWJQ
cm9jZXNzUHJveHk6OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgY29uc3Qg
V2ViUGFnZUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCitSZWY8V2ViUGFnZVByb3h5PiBX
ZWJQcm9jZXNzUHJveHk6OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgUmVm
PEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYgcGFnZUNvbmZpZ3VyYXRpb24pCiB7CiAgICAgdWlu
dDY0X3QgcGFnZUlEID0gZ2VuZXJhdGVQYWdlSUQoKTsKLSAgICBSZWY8V2ViUGFnZVByb3h5PiB3
ZWJQYWdlID0gV2ViUGFnZVByb3h5OjpjcmVhdGUocGFnZUNsaWVudCwgKnRoaXMsIHBhZ2VJRCwg
Y29uZmlndXJhdGlvbik7CisgICAgUmVmPFdlYlBhZ2VQcm94eT4gd2ViUGFnZSA9IFdlYlBhZ2VQ
cm94eTo6Y3JlYXRlKHBhZ2VDbGllbnQsICp0aGlzLCBwYWdlSUQsIFdURjo6bW92ZShwYWdlQ29u
ZmlndXJhdGlvbikpOwogCiAgICAgbV9wYWdlTWFwLnNldChwYWdlSUQsIHdlYlBhZ2UucHRyKCkp
OwogICAgIGdsb2JhbFBhZ2VNYXAoKS5zZXQocGFnZUlELCB3ZWJQYWdlLnB0cigpKTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgJKHJldmlzaW9uIDE4
ODE5MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAkod29y
a2luZyBjb3B5KQpAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6CiAgICAgV2ViUHJvY2Vzc1Bvb2wm
IHByb2Nlc3NQb29sKCkgeyByZXR1cm4gbV9wcm9jZXNzUG9vbDsgfQogCiAgICAgc3RhdGljIFdl
YlBhZ2VQcm94eSogd2ViUGFnZSh1aW50NjRfdCBwYWdlSUQpOwotICAgIFJlZjxXZWJQYWdlUHJv
eHk+IGNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYsIGNvbnN0IFdlYlBhZ2VDb25maWd1cmF0aW9u
Jik7CisgICAgUmVmPFdlYlBhZ2VQcm94eT4gY3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiwgUmVm
PEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpOwogICAgIHZvaWQgYWRkRXhpc3RpbmdXZWJQYWdl
KFdlYlBhZ2VQcm94eSosIHVpbnQ2NF90IHBhZ2VJRCk7CiAgICAgdm9pZCByZW1vdmVXZWJQYWdl
KHVpbnQ2NF90IHBhZ2VJRCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
QVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwCShyZXZpc2lvbiAxODgxOTApCisr
KyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsMTEgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsK
IAogbmFtZXNwYWNlIEFQSSB7CiAKK1JlZjxQYWdlQ29uZmlndXJhdGlvbj4gUGFnZUNvbmZpZ3Vy
YXRpb246OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGFnZUNvbmZpZ3Vy
YXRpb24pOworfQorCiBQYWdlQ29uZmlndXJhdGlvbjo6UGFnZUNvbmZpZ3VyYXRpb24oKQogewog
fQpAQCAtNDUsNiArNTAsMjkgQEAgUGFnZUNvbmZpZ3VyYXRpb246On5QYWdlQ29uZmlndXJhdGlv
bigpCiB7CiB9CiAKK1JlZjxQYWdlQ29uZmlndXJhdGlvbj4gUGFnZUNvbmZpZ3VyYXRpb246OmNv
cHkoKSBjb25zdAoreworICAgIGF1dG8gY29weSA9IHRoaXMtPmNyZWF0ZSgpOworCisgICAgY29w
eS0+bV9wcm9jZXNzUG9vbCA9IHRoaXMtPm1fcHJvY2Vzc1Bvb2w7CisgICAgY29weS0+bV91c2Vy
Q29udGVudENvbnRyb2xsZXIgPSB0aGlzLT5tX3VzZXJDb250ZW50Q29udHJvbGxlcjsKKyAgICBj
b3B5LT5tX3BhZ2VHcm91cCA9IHRoaXMtPm1fcGFnZUdyb3VwOworICAgIGNvcHktPm1fcHJlZmVy
ZW5jZXMgPSB0aGlzLT5tX3ByZWZlcmVuY2VzOworICAgIGNvcHktPm1fcHJlZmVyZW5jZVZhbHVl
cyA9IHRoaXMtPm1fcHJlZmVyZW5jZVZhbHVlczsKKyAgICBjb3B5LT5tX3JlbGF0ZWRQYWdlID0g
dGhpcy0+bV9yZWxhdGVkUGFnZTsKKyAgICBjb3B5LT5tX3Zpc2l0ZWRMaW5rUHJvdmlkZXIgPSB0
aGlzLT5tX3Zpc2l0ZWRMaW5rUHJvdmlkZXI7CisgICAgY29weS0+bV93ZWJzaXRlRGF0YVN0b3Jl
ID0gdGhpcy0+bV93ZWJzaXRlRGF0YVN0b3JlOworICAgIGNvcHktPm1fc2Vzc2lvbklEID0gdGhp
cy0+bV9zZXNzaW9uSUQ7CisgICAgY29weS0+bV90cmVhdHNTSEExU2lnbmVkQ2VydGlmaWNhdGVz
QXNJbnNlY3VyZSA9IHRoaXMtPm1fdHJlYXRzU0hBMVNpZ25lZENlcnRpZmljYXRlc0FzSW5zZWN1
cmU7CisKKyNpZiBQTEFURk9STShJT1MpCisgICAgY29weS0+bV9hbHdheXNSdW5zQXRGb3JlZ3Jv
dW5kUHJpb3JpdHkgPSB0aGlzLT5tX2Fsd2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eTsKKyNl
bmRpZgorCisgICAgcmV0dXJuIGNvcHk7Cit9CisKKwogV2ViUHJvY2Vzc1Bvb2wqIFBhZ2VDb25m
aWd1cmF0aW9uOjpwcm9jZXNzUG9vbCgpCiB7CiAgICAgcmV0dXJuIG1fcHJvY2Vzc1Bvb2wuZ2V0
KCk7CkBAIC05NSwxNiArMTIzLDM1IEBAIHZvaWQgUGFnZUNvbmZpZ3VyYXRpb246OnNldFJlbGF0
ZWRQYWdlKFcKICAgICBtX3JlbGF0ZWRQYWdlID0gcmVsYXRlZFBhZ2U7CiB9CiAKLVdlYktpdDo6
V2ViUGFnZUNvbmZpZ3VyYXRpb24gUGFnZUNvbmZpZ3VyYXRpb246OndlYlBhZ2VDb25maWd1cmF0
aW9uKCkKKworVmlzaXRlZExpbmtQcm92aWRlciogUGFnZUNvbmZpZ3VyYXRpb246OnZpc2l0ZWRM
aW5rUHJvdmlkZXIoKQogewotICAgIFdlYktpdDo6V2ViUGFnZUNvbmZpZ3VyYXRpb24gY29uZmln
dXJhdGlvbjsKKyAgICByZXR1cm4gbV92aXNpdGVkTGlua1Byb3ZpZGVyLmdldCgpOworfQogCi0g
ICAgY29uZmlndXJhdGlvbi51c2VyQ29udGVudENvbnRyb2xsZXIgPSB1c2VyQ29udGVudENvbnRy
b2xsZXIoKTsKLSAgICBjb25maWd1cmF0aW9uLnBhZ2VHcm91cCA9IHBhZ2VHcm91cCgpOwotICAg
IGNvbmZpZ3VyYXRpb24ucHJlZmVyZW5jZXMgPSBwcmVmZXJlbmNlcygpOwotICAgIGNvbmZpZ3Vy
YXRpb24ucmVsYXRlZFBhZ2UgPSByZWxhdGVkUGFnZSgpOwordm9pZCBQYWdlQ29uZmlndXJhdGlv
bjo6c2V0VmlzaXRlZExpbmtQcm92aWRlcihWaXNpdGVkTGlua1Byb3ZpZGVyKiB2aXNpdGVkTGlu
a1Byb3ZpZGVyKQoreworICAgIG1fdmlzaXRlZExpbmtQcm92aWRlciA9IHZpc2l0ZWRMaW5rUHJv
dmlkZXI7Cit9CisKK0FQSTo6V2Vic2l0ZURhdGFTdG9yZSogUGFnZUNvbmZpZ3VyYXRpb246Ondl
YnNpdGVEYXRhU3RvcmUoKQoreworICAgIHJldHVybiBtX3dlYnNpdGVEYXRhU3RvcmUuZ2V0KCk7
Cit9CiAKLSAgICByZXR1cm4gY29uZmlndXJhdGlvbjsKK3ZvaWQgUGFnZUNvbmZpZ3VyYXRpb246
OnNldFdlYnNpdGVEYXRhU3RvcmUoQVBJOjpXZWJzaXRlRGF0YVN0b3JlKiB3ZWJzaXRlRGF0YVN0
b3JlKQoreworICAgIG1fd2Vic2l0ZURhdGFTdG9yZSA9IHdlYnNpdGVEYXRhU3RvcmU7Cit9CisK
K1dlYkNvcmU6OlNlc3Npb25JRCBQYWdlQ29uZmlndXJhdGlvbjo6c2Vzc2lvbklEKCkKK3sKKyAg
ICByZXR1cm4gbV9zZXNzaW9uSUQ7Cit9CisKK3ZvaWQgUGFnZUNvbmZpZ3VyYXRpb246OnNldFNl
c3Npb25JRChXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQoreworICAgIG1fc2Vzc2lvbklE
ID0gc2Vzc2lvbklEOwogfQogCiB9IC8vIG5hbWVzcGFjZSBBUEkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgJKHJldmlz
aW9uIDE4ODE5MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZp
Z3VyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMjcgKzI3LDMyIEBACiAjZGVmaW5lIEFQ
SVBhZ2VDb25maWd1cmF0aW9uX2gKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUg
IldlYlByZWZlcmVuY2VzU3RvcmUuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Nlc3Npb25JRC5oPgog
I2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7Ci1zdHJ1Y3QgV2Vi
UGFnZUNvbmZpZ3VyYXRpb247Ci1jbGFzcyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTsK
LWNsYXNzIFdlYlByb2Nlc3NQb29sOworY2xhc3MgVmlzaXRlZExpbmtQcm92aWRlcjsKIGNsYXNz
IFdlYlBhZ2VHcm91cDsKLWNsYXNzIFdlYlByZWZlcmVuY2VzOwogY2xhc3MgV2ViUGFnZVByb3h5
OworY2xhc3MgV2ViUHJlZmVyZW5jZXM7CitjbGFzcyBXZWJQcm9jZXNzUG9vbDsKK2NsYXNzIFdl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OwogfQogCiBuYW1lc3BhY2UgQVBJIHsKIAorY2xh
c3MgV2Vic2l0ZURhdGFTdG9yZTsKKwogY2xhc3MgUGFnZUNvbmZpZ3VyYXRpb24gOiBwdWJsaWMg
T2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6OlBhZ2VDb25maWd1cmF0aW9uPiB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZjxQYWdlQ29uZmlndXJhdGlvbj4gY3JlYXRlKCkKLSAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFBhZ2VDb25maWd1cmF0aW9uKTsKLSAgICB9CisgICAgc3Rh
dGljIFJlZjxQYWdlQ29uZmlndXJhdGlvbj4gY3JlYXRlKCk7CisKKyAgICBleHBsaWNpdCBQYWdl
Q29uZmlndXJhdGlvbigpOwogICAgIHZpcnR1YWwgflBhZ2VDb25maWd1cmF0aW9uKCk7CiAKKyAg
ICBSZWY8UGFnZUNvbmZpZ3VyYXRpb24+IGNvcHkoKSBjb25zdDsKKwogICAgIC8vIEZJWE1FOiBU
aGUgY29uZmlndXJhdGlvbiBwcm9wZXJ0aWVzIHNob3VsZCByZXR1cm4gdGhlaXIgZGVmYXVsdCB2
YWx1ZXMKICAgICAvLyByYXRoZXIgdGhhbiBudWxscHRyLgogICAgIApAQCAtNjMsMTkgKzY4LDQ3
IEBAIHB1YmxpYzoKICAgICBXZWJLaXQ6OldlYlByZWZlcmVuY2VzKiBwcmVmZXJlbmNlcygpOwog
ICAgIHZvaWQgc2V0UHJlZmVyZW5jZXMoV2ViS2l0OjpXZWJQcmVmZXJlbmNlcyopOwogCisgICAg
V2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZU1hcCYgcHJlZmVyZW5jZVZhbHVlcygp
IHsgcmV0dXJuIG1fcHJlZmVyZW5jZVZhbHVlczsgfQorCiAgICAgV2ViS2l0OjpXZWJQYWdlUHJv
eHkqIHJlbGF0ZWRQYWdlKCk7CiAgICAgdm9pZCBzZXRSZWxhdGVkUGFnZShXZWJLaXQ6OldlYlBh
Z2VQcm94eSopOwogCi0gICAgV2ViS2l0OjpXZWJQYWdlQ29uZmlndXJhdGlvbiB3ZWJQYWdlQ29u
ZmlndXJhdGlvbigpOworICAgIFdlYktpdDo6VmlzaXRlZExpbmtQcm92aWRlciogdmlzaXRlZExp
bmtQcm92aWRlcigpOworICAgIHZvaWQgc2V0VmlzaXRlZExpbmtQcm92aWRlcihXZWJLaXQ6OlZp
c2l0ZWRMaW5rUHJvdmlkZXIqKTsKKworICAgIFdlYnNpdGVEYXRhU3RvcmUqIHdlYnNpdGVEYXRh
U3RvcmUoKTsKKyAgICB2b2lkIHNldFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZSop
OworCisgICAgV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCgpOworICAgIHZvaWQgc2V0U2Vz
c2lvbklEKFdlYkNvcmU6OlNlc3Npb25JRCk7CisKKyAgICBib29sIHRyZWF0c1NIQTFTaWduZWRD
ZXJ0aWZpY2F0ZXNBc0luc2VjdXJlKCkgeyByZXR1cm4gbV90cmVhdHNTSEExU2lnbmVkQ2VydGlm
aWNhdGVzQXNJbnNlY3VyZTsgfQorICAgIHZvaWQgc2V0VHJlYXRzU0hBMVNpZ25lZENlcnRpZmlj
YXRlc0FzSW5zZWN1cmUoYm9vbCB0cmVhdHNTSEExU2lnbmVkQ2VydGlmaWNhdGVzQXNJbnNlY3Vy
ZSkgeyBtX3RyZWF0c1NIQTFTaWduZWRDZXJ0aWZpY2F0ZXNBc0luc2VjdXJlID0gdHJlYXRzU0hB
MVNpZ25lZENlcnRpZmljYXRlc0FzSW5zZWN1cmU7IH0gCisKKyNpZiBQTEFURk9STShJT1MpCisg
ICAgYm9vbCBhbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHkoKSB7IHJldHVybiBtX2Fsd2F5
c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eTsgfQorICAgIHZvaWQgc2V0QWx3YXlzUnVuc0F0Rm9y
ZWdyb3VuZFByaW9yaXR5KGJvb2wgYWx3YXlzUnVuc0F0Rm9yZWdyb3VuZFByaW9yaXR5KSB7IG1f
YWx3YXlzUnVuc0F0Rm9yZWdyb3VuZFByaW9yaXR5ID0gYWx3YXlzUnVuc0F0Rm9yZWdyb3VuZFBy
aW9yaXR5OyB9IAorI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgUGFnZUNvbmZpZ3VyYXRpb24oKTsK
IAogICAgIFJlZlB0cjxXZWJLaXQ6OldlYlByb2Nlc3NQb29sPiBtX3Byb2Nlc3NQb29sOwogICAg
IFJlZlB0cjxXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5PiBtX3VzZXJDb250
ZW50Q29udHJvbGxlcjsKICAgICBSZWZQdHI8V2ViS2l0OjpXZWJQYWdlR3JvdXA+IG1fcGFnZUdy
b3VwOwogICAgIFJlZlB0cjxXZWJLaXQ6OldlYlByZWZlcmVuY2VzPiBtX3ByZWZlcmVuY2VzOwor
ICAgIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWVNYXAgbV9wcmVmZXJlbmNlVmFs
dWVzOwogICAgIFJlZlB0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4gbV9yZWxhdGVkUGFnZTsKKyAg
ICBSZWZQdHI8V2ViS2l0OjpWaXNpdGVkTGlua1Byb3ZpZGVyPiBtX3Zpc2l0ZWRMaW5rUHJvdmlk
ZXI7CisKKyAgICBSZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4gbV93ZWJzaXRlRGF0YVN0b3JlOwor
ICAgIC8vIEZJWE1FOiBXZSBjdXJyZW50bHkgaGF2ZSB0byBwYXNzIHRoZSBzZXNzaW9uIElEIHNl
cGFyYXRlbHkgaGVyZSB0byBzdXBwb3J0IHRoZSBsZWdhY3kgcHJpdmF0ZSBicm93c2luZyBzZXNz
aW9uLgorICAgIC8vIE9uY2Ugd2UgZ2V0IHJpZCBvZiBpdCB3ZSBzaG91bGQgZ2V0IHJpZCBvZiB0
aGlzIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyIGFzIHdlbGwuCisgICAgV2ViQ29yZTo6U2Vzc2lv
bklEIG1fc2Vzc2lvbklEOworCisgICAgYm9vbCBtX3RyZWF0c1NIQTFTaWduZWRDZXJ0aWZpY2F0
ZXNBc0luc2VjdXJlID0gZmFsc2U7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIGJvb2wgbV9hbHdh
eXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHkgPSBmYWxzZTsKKyNlbmRpZgogfTsKIAogfSAvLyBu
YW1lc3BhY2UgQVBJCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdl
LmNwcAkocmV2aXNpb24gMTg4MTkwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJB
UElOYXZpZ2F0aW9uQWN0aW9uLmgiCiAjaW5jbHVkZSAiQVBJTmF2aWdhdGlvbkNsaWVudC5oIgog
I2luY2x1ZGUgIkFQSU5hdmlnYXRpb25SZXNwb25zZS5oIgorI2luY2x1ZGUgIkFQSVBhZ2VDb25m
aWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiQVBJUG9saWN5Q2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJ
U2Vzc2lvblN0YXRlLmgiCiAjaW5jbHVkZSAiQVBJVUlDbGllbnQuaCIKQEAgLTEyNyw2ICsxMjgs
MTIgQEAgV0tQYWdlR3JvdXBSZWYgV0tQYWdlR2V0UGFnZUdyb3VwKFdLUGFnZQogICAgIHJldHVy
biB0b0FQSSgmdG9JbXBsKHBhZ2VSZWYpLT5wYWdlR3JvdXAoKSk7CiB9CiAKK1dLUGFnZUNvbmZp
Z3VyYXRpb25SZWYgV0tQYWdlQ29weVBhZ2VDb25maWd1cmF0aW9uKFdLUGFnZVJlZiBwYWdlUmVm
KQoreworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IHRvSW1wbChwYWdlUmVmKS0+Y29uZmlndXJh
dGlvbigpLmNvcHkoKTsKKyAgICByZXR1cm4gdG9BUEkoJmNvbmZpZ3VyYXRpb24ubGVha1JlZigp
KTsKK30KKwogdm9pZCBXS1BhZ2VMb2FkVVJMKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1VSTFJlZiBV
UkxSZWYpCiB7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5sb2FkUmVxdWVzdChVUkwoVVJMKCksIHRv
V1RGU3RyaW5nKFVSTFJlZikpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS1BhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tQYWdlLmgJKHJldmlzaW9uIDE4ODE5MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTksOCBAQCBXS19FWFBPUlQg
V0tUeXBlSUQgV0tQYWdlR2V0VHlwZUlEKCk7CiBXS19FWFBPUlQgV0tDb250ZXh0UmVmIFdLUGFn
ZUdldENvbnRleHQoV0tQYWdlUmVmIHBhZ2UpOwogV0tfRVhQT1JUIFdLUGFnZUdyb3VwUmVmIFdL
UGFnZUdldFBhZ2VHcm91cChXS1BhZ2VSZWYgcGFnZSk7CiAKK1dLX0VYUE9SVCBXS1BhZ2VDb25m
aWd1cmF0aW9uUmVmIFdLUGFnZUNvcHlQYWdlQ29uZmlndXJhdGlvbihXS1BhZ2VSZWYgcGFnZSk7
CisKIC8vIFVSTCBSZXF1ZXN0cwogV0tfRVhQT1JUIHZvaWQgV0tQYWdlTG9hZFVSTChXS1BhZ2VS
ZWYgcGFnZSwgV0tVUkxSZWYgdXJsKTsKIFdLX0VYUE9SVCB2b2lkIFdLUGFnZUxvYWRVUkxXaXRo
VXNlckRhdGEoV0tQYWdlUmVmIHBhZ2UsIFdLVVJMUmVmIHVybCwgV0tUeXBlUmVmIHVzZXJEYXRh
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VDb25maWd1cmF0
aW9uUmVmLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tQYWdlQ29uZmlndXJhdGlvblJlZi5jcHAJKHJldmlzaW9uIDE4ODE5MCkKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VDb25maWd1cmF0aW9uUmVmLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTMsMyArOTMsMTMgQEAgdm9pZCBXS1BhZ2VDb25maWd1cmF0aW9uU2V0UmVs
YXRlZFBhZ2UoVwogewogICAgIHRvSW1wbChjb25maWd1cmF0aW9uKS0+c2V0UmVsYXRlZFBhZ2Uo
dG9JbXBsKHJlbGF0ZWRQYWdlKSk7CiB9CisKK1dLV2Vic2l0ZURhdGFTdG9yZVJlZiBXS1BhZ2VD
b25maWd1cmF0aW9uR2V0V2Vic2l0ZURhdGFTdG9yZShXS1BhZ2VDb25maWd1cmF0aW9uUmVmIGNv
bmZpZ3VyYXRpb24pCit7CisgICAgcmV0dXJuIHRvQVBJKHRvSW1wbChjb25maWd1cmF0aW9uKS0+
d2Vic2l0ZURhdGFTdG9yZSgpKTsKK30KKwordm9pZCBXS1BhZ2VDb25maWd1cmF0aW9uU2V0V2Vi
c2l0ZURhdGFTdG9yZShXS1BhZ2VDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24sIFdLV2Vi
c2l0ZURhdGFTdG9yZVJlZiB3ZWJzaXRlRGF0YVN0b3JlKQoreworICAgIHRvSW1wbChjb25maWd1
cmF0aW9uKS0+c2V0V2Vic2l0ZURhdGFTdG9yZSh0b0ltcGwod2Vic2l0ZURhdGFTdG9yZSkpOwor
fQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUNvbmZpZ3VyYXRp
b25SZWYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQ
YWdlQ29uZmlndXJhdGlvblJlZi5oCShyZXZpc2lvbiAxODgxOTApCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlQ29uZmlndXJhdGlvblJlZi5oCSh3b3JraW5nIGNvcHkp
CkBAIC01MSw2ICs1MSw5IEBAIFdLX0VYUE9SVCB2b2lkIFdLUGFnZUNvbmZpZ3VyYXRpb25TZXRQ
cmUKIFdLX0VYUE9SVCBXS1BhZ2VSZWYgV0tQYWdlQ29uZmlndXJhdGlvbkdldFJlbGF0ZWRQYWdl
KFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbik7CiBXS19FWFBPUlQgdm9pZCBX
S1BhZ2VDb25maWd1cmF0aW9uU2V0UmVsYXRlZFBhZ2UoV0tQYWdlQ29uZmlndXJhdGlvblJlZiBj
b25maWd1cmF0aW9uLCBXS1BhZ2VSZWYgcmVsYXRlZFBhZ2UpOwogCitXS19FWFBPUlQgV0tXZWJz
aXRlRGF0YVN0b3JlUmVmIFdLUGFnZUNvbmZpZ3VyYXRpb25HZXRXZWJzaXRlRGF0YVN0b3JlKFdL
UGFnZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbik7CitXS19FWFBPUlQgdm9pZCBXS1Bh
Z2VDb25maWd1cmF0aW9uU2V0V2Vic2l0ZURhdGFTdG9yZShXS1BhZ2VDb25maWd1cmF0aW9uUmVm
IGNvbmZpZ3VyYXRpb24sIFdLV2Vic2l0ZURhdGFTdG9yZVJlZiB3ZWJzaXRlRGF0YVN0b3JlKTsK
KwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCShyZXZpc2lvbiAxODgxOTApCisr
KyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2lmIFdLX0FQSV9FTkFCTEVECiAKICNpbXBvcnQg
IkFQSUZvcm1DbGllbnQuaCIKKyNpbXBvcnQgIkFQSVBhZ2VDb25maWd1cmF0aW9uLmgiCiAjaW1w
b3J0ICJBUElTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbXBvcnQgIkNvbXBsZXRpb25IYW5k
bGVyQ2FsbENoZWNrZXIuaCIKICNpbXBvcnQgIkRpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmgiCkBA
IC0zMDAsMzYgKzMwMSwzOCBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0
KWZyCiAgICAgQ0dSZWN0IGJvdW5kcyA9IHNlbGYuYm91bmRzOwogCiAgICAgV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wgPSAqW19jb25maWd1cmF0aW9uIHByb2Nlc3NQb29sXS0+
X3Byb2Nlc3NQb29sOworICAgIAorICAgIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiBwYWdl
Q29uZmlndXJhdGlvbiA9IEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOwogCi0gICAg
V2ViS2l0OjpXZWJQYWdlQ29uZmlndXJhdGlvbiB3ZWJQYWdlQ29uZmlndXJhdGlvbjsKLSAgICB3
ZWJQYWdlQ29uZmlndXJhdGlvbi5wcmVmZXJlbmNlcyA9IFtfY29uZmlndXJhdGlvbiBwcmVmZXJl
bmNlc10tPl9wcmVmZXJlbmNlcy5nZXQoKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UHJv
Y2Vzc1Bvb2woJnByb2Nlc3NQb29sKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UHJlZmVy
ZW5jZXMoW19jb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXS0+X3ByZWZlcmVuY2VzLmdldCgpKTsK
ICAgICBpZiAoV0tXZWJWaWV3ICpyZWxhdGVkV2ViVmlldyA9IFtfY29uZmlndXJhdGlvbiBfcmVs
YXRlZFdlYlZpZXddKQotICAgICAgICB3ZWJQYWdlQ29uZmlndXJhdGlvbi5yZWxhdGVkUGFnZSA9
IHJlbGF0ZWRXZWJWaWV3LT5fcGFnZS5nZXQoKTsKKyAgICAgICAgcGFnZUNvbmZpZ3VyYXRpb24t
PnNldFJlbGF0ZWRQYWdlKHJlbGF0ZWRXZWJWaWV3LT5fcGFnZS5nZXQoKSk7CiAKLSAgICB3ZWJQ
YWdlQ29uZmlndXJhdGlvbi51c2VyQ29udGVudENvbnRyb2xsZXIgPSBbX2NvbmZpZ3VyYXRpb24g
dXNlckNvbnRlbnRDb250cm9sbGVyXS0+X3VzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmdldCgp
OwotICAgIHdlYlBhZ2VDb25maWd1cmF0aW9uLnZpc2l0ZWRMaW5rUHJvdmlkZXIgPSBbX2NvbmZp
Z3VyYXRpb24gX3Zpc2l0ZWRMaW5rUHJvdmlkZXJdLT5fdmlzaXRlZExpbmtQcm92aWRlci5nZXQo
KTsKLSAgICB3ZWJQYWdlQ29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlID0gJltfY29uZmln
dXJhdGlvbiB3ZWJzaXRlRGF0YVN0b3JlXS0+X3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRh
U3RvcmUoKTsKLSAgICB3ZWJQYWdlQ29uZmlndXJhdGlvbi5zZXNzaW9uSUQgPSB3ZWJQYWdlQ29u
ZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlLT5zZXNzaW9uSUQoKTsKLSAgICB3ZWJQYWdlQ29u
ZmlndXJhdGlvbi50cmVhdHNTSEExU2lnbmVkQ2VydGlmaWNhdGVzQXNJbnNlY3VyZSA9IFtfY29u
ZmlndXJhdGlvbiBfdHJlYXRzU0hBMVNpZ25lZENlcnRpZmljYXRlc0FzSW5zZWN1cmVdOworICAg
IHBhZ2VDb25maWd1cmF0aW9uLT5zZXRVc2VyQ29udGVudENvbnRyb2xsZXIoW19jb25maWd1cmF0
aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0tPl91c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5n
ZXQoKSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFZpc2l0ZWRMaW5rUHJvdmlkZXIoW19j
b25maWd1cmF0aW9uIF92aXNpdGVkTGlua1Byb3ZpZGVyXS0+X3Zpc2l0ZWRMaW5rUHJvdmlkZXIu
Z2V0KCkpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRXZWJzaXRlRGF0YVN0b3JlKFtfY29u
ZmlndXJhdGlvbiB3ZWJzaXRlRGF0YVN0b3JlXS0+X3dlYnNpdGVEYXRhU3RvcmUuZ2V0KCkpOwor
ICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRTZXNzaW9uSUQocGFnZUNvbmZpZ3VyYXRpb24tPndl
YnNpdGVEYXRhU3RvcmUoKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Npb25JRCgpKTsKKyAgICBw
YWdlQ29uZmlndXJhdGlvbi0+c2V0VHJlYXRzU0hBMVNpZ25lZENlcnRpZmljYXRlc0FzSW5zZWN1
cmUoW19jb25maWd1cmF0aW9uIF90cmVhdHNTSEExU2lnbmVkQ2VydGlmaWNhdGVzQXNJbnNlY3Vy
ZV0pOwogCiAgICAgUmVmUHRyPFdlYktpdDo6V2ViUGFnZUdyb3VwPiBwYWdlR3JvdXA7CiAgICAg
TlNTdHJpbmcgKmdyb3VwSWRlbnRpZmllciA9IGNvbmZpZ3VyYXRpb24uX2dyb3VwSWRlbnRpZmll
cjsKICAgICBpZiAoZ3JvdXBJZGVudGlmaWVyLmxlbmd0aCkgewogICAgICAgICBwYWdlR3JvdXAg
PSBXZWJLaXQ6OldlYlBhZ2VHcm91cDo6Y3JlYXRlKGNvbmZpZ3VyYXRpb24uX2dyb3VwSWRlbnRp
Zmllcik7Ci0gICAgICAgIHdlYlBhZ2VDb25maWd1cmF0aW9uLnBhZ2VHcm91cCA9IHBhZ2VHcm91
cC5nZXQoKTsKKyAgICAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFBhZ2VHcm91cChwYWdlR3Jv
dXAuZ2V0KCkpOwogICAgIH0KIAotICAgIHdlYlBhZ2VDb25maWd1cmF0aW9uLnByZWZlcmVuY2VW
YWx1ZXMuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OnN1cHByZXNzZXNJbmNyZW1lbnRh
bFJlbmRlcmluZ0tleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKCEhW19j
b25maWd1cmF0aW9uIHN1cHByZXNzZXNJbmNyZW1lbnRhbFJlbmRlcmluZ10pKTsKKyAgICBwYWdl
Q29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVu
Y2VzS2V5OjpzdXBwcmVzc2VzSW5jcmVtZW50YWxSZW5kZXJpbmdLZXkoKSwgV2ViS2l0OjpXZWJQ
cmVmZXJlbmNlc1N0b3JlOjpWYWx1ZSghIVtfY29uZmlndXJhdGlvbiBzdXBwcmVzc2VzSW5jcmVt
ZW50YWxSZW5kZXJpbmddKSk7CiAKICNpZiBQTEFURk9STShJT1MpCi0gICAgd2ViUGFnZUNvbmZp
Z3VyYXRpb24uYWx3YXlzUnVuc0F0Rm9yZWdyb3VuZFByaW9yaXR5ID0gW19jb25maWd1cmF0aW9u
IF9hbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHldOworICAgIHBhZ2VDb25maWd1cmF0aW9u
LT5zZXRBbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHkoW19jb25maWd1cmF0aW9uIF9hbHdh
eXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHldKTsKIAotICAgIHdlYlBhZ2VDb25maWd1cmF0aW9u
LnByZWZlcmVuY2VWYWx1ZXMuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OmFsbG93c0lu
bGluZU1lZGlhUGxheWJhY2tLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1
ZSghIVtfY29uZmlndXJhdGlvbiBhbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrXSkpOwotICAgIHdl
YlBhZ2VDb25maWd1cmF0aW9uLnByZWZlcmVuY2VWYWx1ZXMuc2V0KFdlYktpdDo6V2ViUHJlZmVy
ZW5jZXNLZXk6OmFsbG93c1BpY3R1cmVJblBpY3R1cmVNZWRpYVBsYXliYWNrS2V5KCksIFdlYktp
dDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoISFbX2NvbmZpZ3VyYXRpb24gYWxsb3dzUGlj
dHVyZUluUGljdHVyZU1lZGlhUGxheWJhY2tdICYmIHNob3VsZEFsbG93UGljdHVyZUluUGljdHVy
ZU1lZGlhUGxheWJhY2soKSkpOwotICAgIHdlYlBhZ2VDb25maWd1cmF0aW9uLnByZWZlcmVuY2VW
YWx1ZXMuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OnJlcXVpcmVzVXNlckdlc3R1cmVG
b3JNZWRpYVBsYXliYWNrS2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUo
ISFbX2NvbmZpZ3VyYXRpb24gcmVxdWlyZXNVc2VyQWN0aW9uRm9yTWVkaWFQbGF5YmFja10pKTsK
KyAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6Oldl
YlByZWZlcmVuY2VzS2V5OjphbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrS2V5KCksIFdlYktpdDo6
V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoISFbX2NvbmZpZ3VyYXRpb24gYWxsb3dzSW5saW5l
TWVkaWFQbGF5YmFja10pKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVl
cygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5OjphbGxvd3NQaWN0dXJlSW5QaWN0dXJl
TWVkaWFQbGF5YmFja0tleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKCEh
W19jb25maWd1cmF0aW9uIGFsbG93c1BpY3R1cmVJblBpY3R1cmVNZWRpYVBsYXliYWNrXSAmJiBz
aG91bGRBbGxvd1BpY3R1cmVJblBpY3R1cmVNZWRpYVBsYXliYWNrKCkpKTsKKyAgICBwYWdlQ29u
ZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2Vz
S2V5OjpyZXF1aXJlc1VzZXJHZXN0dXJlRm9yTWVkaWFQbGF5YmFja0tleSgpLCBXZWJLaXQ6Oldl
YlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKCEhW19jb25maWd1cmF0aW9uIHJlcXVpcmVzVXNlckFj
dGlvbkZvck1lZGlhUGxheWJhY2tdKSk7CiAjZW5kaWYKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExB
WUJBQ0tfVEFSR0VUKQotICAgIHdlYlBhZ2VDb25maWd1cmF0aW9uLnByZWZlcmVuY2VWYWx1ZXMu
c2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OmFsbG93c0FpclBsYXlGb3JNZWRpYVBsYXli
YWNrS2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoISFbX2NvbmZpZ3Vy
YXRpb24gYWxsb3dzQWlyUGxheUZvck1lZGlhUGxheWJhY2tdKSk7CisgICAgcGFnZUNvbmZpZ3Vy
YXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6
YWxsb3dzQWlyUGxheUZvck1lZGlhUGxheWJhY2tLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNl
c1N0b3JlOjpWYWx1ZSghIVtfY29uZmlndXJhdGlvbiBhbGxvd3NBaXJQbGF5Rm9yTWVkaWFQbGF5
YmFja10pKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtMzM5LDcgKzM0Miw3IEBA
IC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihDR1JlY3QpZnIKIAogICAgIFtzZWxmIGFk
ZFN1YnZpZXc6X3Njcm9sbFZpZXcuZ2V0KCldOwogCi0gICAgX2NvbnRlbnRWaWV3ID0gYWRvcHRO
UyhbW1dLQ29udGVudFZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Ym91bmRzIHByb2Nlc3NQb29s
OnByb2Nlc3NQb29sIGNvbmZpZ3VyYXRpb246V1RGOjptb3ZlKHdlYlBhZ2VDb25maWd1cmF0aW9u
KSB3ZWJWaWV3OnNlbGZdKTsKKyAgICBfY29udGVudFZpZXcgPSBhZG9wdE5TKFtbV0tDb250ZW50
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpib3VuZHMgcHJvY2Vzc1Bvb2w6cHJvY2Vzc1Bvb2wg
Y29uZmlndXJhdGlvbjpXVEY6Om1vdmUocGFnZUNvbmZpZ3VyYXRpb24pIHdlYlZpZXc6c2VsZl0p
OwogCiAgICAgX3BhZ2UgPSBbX2NvbnRlbnRWaWV3IHBhZ2VdOwogICAgIF9wYWdlLT5zZXREZXZp
Y2VPcmllbnRhdGlvbihkZXZpY2VPcmllbnRhdGlvbigpKTsKQEAgLTM2Nyw3ICszNzAsNyBAQCAt
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyCiAjZW5kaWYKIAogI2lmIFBM
QVRGT1JNKE1BQykKLSAgICBfd2tWaWV3ID0gYWRvcHROUyhbW1dLVmlldyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpib3VuZHMgcHJvY2Vzc1Bvb2w6cHJvY2Vzc1Bvb2wgY29uZmlndXJhdGlvbjpXVEY6
Om1vdmUod2ViUGFnZUNvbmZpZ3VyYXRpb24pIHdlYlZpZXc6c2VsZl0pOworICAgIF93a1ZpZXcg
PSBhZG9wdE5TKFtbV0tWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOmJvdW5kcyBwcm9jZXNzUG9v
bDpwcm9jZXNzUG9vbCBjb25maWd1cmF0aW9uOldURjo6bW92ZShwYWdlQ29uZmlndXJhdGlvbikg
d2ViVmlldzpzZWxmXSk7CiAgICAgW3NlbGYgYWRkU3Vidmlldzpfd2tWaWV3LmdldCgpXTsKICAg
ICBfcGFnZSA9IFdlYktpdDo6dG9JbXBsKFtfd2tWaWV3IHBhZ2VSZWZdKTsKIApJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4
dC5jcHAJKHJldmlzaW9uIDE4ODE5MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYkNvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw2ICsyMSw3IEBA
CiAjaW5jbHVkZSAiV2ViS2l0V2ViQ29udGV4dC5oIgogCiAjaW5jbHVkZSAiQVBJRG93bmxvYWRD
bGllbnQuaCIKKyNpbmNsdWRlICJBUElQYWdlQ29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIkFQ
SVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIkFQSVN0cmluZy5oIgogI2lu
Y2x1ZGUgIlRleHRDaGVja2VyLmgiCkBAIC0xMzE1LDEzICsxMzE2LDE0IEBAIHZvaWQgd2Via2l0
V2ViQ29udGV4dERpZEZpbmlzaExvYWRpbmdDdXMKIHZvaWQgd2Via2l0V2ViQ29udGV4dENyZWF0
ZVBhZ2VGb3JXZWJWaWV3KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcsIFdlYktpdFVzZXJDb250ZW50TWFuYWdlciogdXNlckNvbnRlbnRNYW5hZ2VyLCBX
ZWJLaXRXZWJWaWV3KiByZWxhdGVkVmlldykKIHsKICAgICBXZWJLaXRXZWJWaWV3QmFzZSogd2Vi
Vmlld0Jhc2UgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3ZWJWaWV3KTsKLSAgICBXZWJQYWdlQ29u
ZmlndXJhdGlvbiB3ZWJQYWdlQ29uZmlndXJhdGlvbjsKLSAgICB3ZWJQYWdlQ29uZmlndXJhdGlv
bi5wcmVmZXJlbmNlcyA9IHdlYmtpdFNldHRpbmdzR2V0UHJlZmVyZW5jZXMod2Via2l0X3dlYl92
aWV3X2dldF9zZXR0aW5ncyh3ZWJWaWV3KSk7Ci0gICAgd2ViUGFnZUNvbmZpZ3VyYXRpb24ucmVs
YXRlZFBhZ2UgPSByZWxhdGVkVmlldyA/IHdlYmtpdFdlYlZpZXdCYXNlR2V0UGFnZShXRUJLSVRf
V0VCX1ZJRVdfQkFTRShyZWxhdGVkVmlldykpIDogbnVsbHB0cjsKLSAgICB3ZWJQYWdlQ29uZmln
dXJhdGlvbi51c2VyQ29udGVudENvbnRyb2xsZXIgPSB1c2VyQ29udGVudE1hbmFnZXIgPyB3ZWJr
aXRVc2VyQ29udGVudE1hbmFnZXJHZXRVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSh1c2VyQ29u
dGVudE1hbmFnZXIpIDogbnVsbHB0cjsKLSAgICB3ZWJQYWdlQ29uZmlndXJhdGlvbi53ZWJzaXRl
RGF0YVN0b3JlID0gJndlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckdldERhdGFTdG9yZShjb250ZXh0
LT5wcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpOwotICAgIHdlYlBhZ2VDb25maWd1cmF0
aW9uLnNlc3Npb25JRCA9IHdlYlBhZ2VDb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUtPnNl
c3Npb25JRCgpOwotICAgIHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlV2ViUGFnZSh3ZWJWaWV3QmFz
ZSwgY29udGV4dC0+cHJpdi0+Y29udGV4dC5nZXQoKSwgV1RGOjptb3ZlKHdlYlBhZ2VDb25maWd1
cmF0aW9uKSk7CisKKyAgICBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4gcGFnZUNvbmZpZ3Vy
YXRpb24gPSBBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKKyAgICBwYWdlQ29uZmln
dXJhdGlvbi0+c2V0UHJlZmVyZW5jZXMod2Via2l0U2V0dGluZ3NHZXRQcmVmZXJlbmNlcyh3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKHdlYlZpZXcpKSk7CisgICAgcGFnZUNvbmZpZ3VyYXRp
b24tPnNldFJlbGF0ZWRQYWdlKHJlbGF0ZWRWaWV3ID8gd2Via2l0V2ViVmlld0Jhc2VHZXRQYWdl
KFdFQktJVF9XRUJfVklFV19CQVNFKHJlbGF0ZWRWaWV3KSkgOiBudWxscHRyKTsKKyAgICBwYWdl
Q29uZmlndXJhdGlvbi0+c2V0VXNlckNvbnRlbnRDb250cm9sbGVyKHVzZXJDb250ZW50TWFuYWdl
ciA/IHdlYmtpdFVzZXJDb250ZW50TWFuYWdlckdldFVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
KHVzZXJDb250ZW50TWFuYWdlcikgOiBudWxscHRyKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+
c2V0V2Vic2l0ZURhdGFTdG9yZSgmd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyR2V0RGF0YVN0b3Jl
KGNvbnRleHQtPnByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpOworICAgIHBhZ2VDb25m
aWd1cmF0aW9uLT5zZXRTZXNzaW9uSUQod2ViUGFnZUNvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFT
dG9yZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2Vzc2lvbklEKCkpOworICAgIHdlYmtpdFdlYlZp
ZXdCYXNlQ3JlYXRlV2ViUGFnZSh3ZWJWaWV3QmFzZSwgY29udGV4dC0+cHJpdi0+Y29udGV4dC5n
ZXQoKSwgV1RGOjptb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7CiAKICAgICBXZWJQYWdlUHJveHkq
IHBhZ2UgPSB3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2Uod2ViVmlld0Jhc2UpOwogICAgIGNvbnRl
eHQtPnByaXYtPndlYlZpZXdzLnNldChwYWdlLT5wYWdlSUQoKSwgd2ViVmlldyk7CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
d0Jhc2UuY3BwCShyZXZpc2lvbiAxODgxOTApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5
LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3QmFzZS5o
IgogCisjaW5jbHVkZSAiQVBJUGFnZUNvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJEcmF3aW5n
QXJlYVByb3h5SW1wbC5oIgogI2luY2x1ZGUgIklucHV0TWV0aG9kRmlsdGVyLmgiCiAjaW5jbHVk
ZSAiS2V5QmluZGluZ1RyYW5zbGF0b3IuaCIKQEAgLTEwNDQsMTIgKzEwNDUsMTMgQEAgc3RhdGlj
IHZvaWQgd2Via2l0X3dlYl92aWV3X2Jhc2VfY2xhc3NfaQogV2ViS2l0V2ViVmlld0Jhc2UqIHdl
YmtpdFdlYlZpZXdCYXNlQ3JlYXRlKFdlYlByb2Nlc3NQb29sKiBjb250ZXh0LCBXZWJQcmVmZXJl
bmNlcyogcHJlZmVyZW5jZXMsIFdlYlBhZ2VHcm91cCogcGFnZUdyb3VwLCBXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eSogdXNlckNvbnRlbnRDb250cm9sbGVyLCBXZWJQYWdlUHJveHkqIHJl
bGF0ZWRQYWdlKQogewogICAgIFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZSA9
IFdFQktJVF9XRUJfVklFV19CQVNFKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfVklFV19C
QVNFLCBudWxscHRyKSk7Ci0gICAgV2ViUGFnZUNvbmZpZ3VyYXRpb24gd2ViUGFnZUNvbmZpZ3Vy
YXRpb247Ci0gICAgd2ViUGFnZUNvbmZpZ3VyYXRpb24ucHJlZmVyZW5jZXMgPSBwcmVmZXJlbmNl
czsKLSAgICB3ZWJQYWdlQ29uZmlndXJhdGlvbi5wYWdlR3JvdXAgPSBwYWdlR3JvdXA7Ci0gICAg
d2ViUGFnZUNvbmZpZ3VyYXRpb24ucmVsYXRlZFBhZ2UgPSByZWxhdGVkUGFnZTsKLSAgICB3ZWJQ
YWdlQ29uZmlndXJhdGlvbi51c2VyQ29udGVudENvbnRyb2xsZXIgPSB1c2VyQ29udGVudENvbnRy
b2xsZXI7Ci0gICAgd2Via2l0V2ViVmlld0Jhc2VDcmVhdGVXZWJQYWdlKHdlYmtpdFdlYlZpZXdC
YXNlLCBjb250ZXh0LCBXVEY6Om1vdmUod2ViUGFnZUNvbmZpZ3VyYXRpb24pKTsKKworICAgIFJl
ZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiBwYWdlQ29uZmlndXJhdGlvbiA9IEFQSTo6UGFnZUNv
bmZpZ3VyYXRpb246OmNyZWF0ZSgpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRQcmVmZXJl
bmNlcyhwcmVmZXJlbmNlcyk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFBhZ2VHcm91cChw
YWdlR3JvdXApOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRSZWxhdGVkUGFnZShyZWxhdGVk
UGFnZSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFVzZXJDb250ZW50Q29udHJvbGxlcih1
c2VyQ29udGVudENvbnRyb2xsZXIpOworICAgIHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlV2ViUGFn
ZSh3ZWJraXRXZWJWaWV3QmFzZSwgY29udGV4dCwgV1RGOjptb3ZlKHBhZ2VDb25maWd1cmF0aW9u
KSk7CiAgICAgcmV0dXJuIHdlYmtpdFdlYlZpZXdCYXNlOwogfQogCkBAIC0xMDcwLDcgKzEwNzIs
NyBAQCBzdGF0aWMgdm9pZCBkZXZpY2VTY2FsZUZhY3RvckNoYW5nZWQoV2ViCiB9CiAjZW5kaWYg
Ly8gSEFWRShHVEtfU0NBTEVfRkFDVE9SKQogCi12b2lkIHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRl
V2ViUGFnZShXZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2UsIFdlYlByb2Nlc3NQ
b29sKiBjb250ZXh0LCBXZWJQYWdlQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24pCit2b2lk
IHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlV2ViUGFnZShXZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0
V2ViVmlld0Jhc2UsIFdlYlByb2Nlc3NQb29sKiBjb250ZXh0LCBSZWY8QVBJOjpQYWdlQ29uZmln
dXJhdGlvbj4mJiBjb25maWd1cmF0aW9uKQogewogICAgIFdlYktpdFdlYlZpZXdCYXNlUHJpdmF0
ZSogcHJpdiA9IHdlYmtpdFdlYlZpZXdCYXNlLT5wcml2OwogICAgIHByaXYtPnBhZ2VQcm94eSA9
IGNvbnRleHQtPmNyZWF0ZVdlYlBhZ2UoKnByaXYtPnBhZ2VDbGllbnQsIFdURjo6bW92ZShjb25m
aWd1cmF0aW9uKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3QmFzZVByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaAkocmV2aXNpb24gMTg4MTkw
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2VQ
cml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAKIFdlYktpdFdlYlZpZXdC
YXNlKiB3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZShXZWJLaXQ6OldlYlByb2Nlc3NQb29sKiwgV2Vi
S2l0OjpXZWJQcmVmZXJlbmNlcyosIFdlYktpdDo6V2ViUGFnZUdyb3VwKiwgV2ViS2l0OjpXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eSosIFdlYktpdDo6V2ViUGFnZVByb3h5Kik7CiBHdGtJ
TUNvbnRleHQqIHdlYmtpdFdlYlZpZXdCYXNlR2V0SU1Db250ZXh0KFdlYktpdFdlYlZpZXdCYXNl
Kik7CiBXZWJLaXQ6OldlYlBhZ2VQcm94eSogd2Via2l0V2ViVmlld0Jhc2VHZXRQYWdlKFdlYktp
dFdlYlZpZXdCYXNlKik7Ci12b2lkIHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlV2ViUGFnZShXZWJL
aXRXZWJWaWV3QmFzZSosIFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wqLCBXZWJLaXQ6OldlYlBhZ2VD
b25maWd1cmF0aW9uJiYpOwordm9pZCB3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZVdlYlBhZ2UoV2Vi
S2l0V2ViVmlld0Jhc2UqLCBXZWJLaXQ6OldlYlByb2Nlc3NQb29sKiwgUmVmPEFQSTo6UGFnZUNv
bmZpZ3VyYXRpb24+JiYpOwogdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVNldFRvb2x0aXBUZXh0KFdl
YktpdFdlYlZpZXdCYXNlKiwgY29uc3QgY2hhciopOwogdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVNl
dFRvb2x0aXBBcmVhKFdlYktpdFdlYlZpZXdCYXNlKiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYp
Owogdm9pZCB3ZWJraXRXZWJWaWV3QmFzZUZvcndhcmROZXh0S2V5RXZlbnQoV2ViS2l0V2ViVmll
d0Jhc2UqKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YnNpdGVEYXRhTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmNwcAkocmV2aXNpb24gMTg4MTkw
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vic2l0ZURhdGFN
YW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQCBlbnVtIHsKIH07CiAK
IHN0cnVjdCBfV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyUHJpdmF0ZSB7Ci0gICAgUmVmUHRyPFdl
YnNpdGVEYXRhU3RvcmU+IHdlYnNpdGVEYXRhU3RvcmU7CisgICAgUmVmUHRyPEFQSTo6V2Vic2l0
ZURhdGFTdG9yZT4gd2Vic2l0ZURhdGFTdG9yZTsKICAgICBHVW5pcXVlUHRyPGNoYXI+IGJhc2VE
YXRhRGlyZWN0b3J5OwogICAgIEdVbmlxdWVQdHI8Y2hhcj4gYmFzZUNhY2hlRGlyZWN0b3J5Owog
ICAgIEdVbmlxdWVQdHI8Y2hhcj4gbG9jYWxTdG9yYWdlRGlyZWN0b3J5OwpAQCAtMjk5LDEyICsy
OTksMTIgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyXwogV2ViS2l0
V2Vic2l0ZURhdGFNYW5hZ2VyKiB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJDcmVhdGUoV2Vic2l0
ZURhdGFTdG9yZTo6Q29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24pCiB7CiAgICAgV2ViS2l0
V2Vic2l0ZURhdGFNYW5hZ2VyKiBtYW5hZ2VyID0gV0VCS0lUX1dFQlNJVEVfREFUQV9NQU5BR0VS
KGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJTSVRFX0RBVEFfTUFOQUdFUiwgbnVsbHB0cikp
OwotICAgIG1hbmFnZXItPnByaXYtPndlYnNpdGVEYXRhU3RvcmUgPSBXZWJzaXRlRGF0YVN0b3Jl
OjpjcmVhdGUoV1RGOjptb3ZlKGNvbmZpZ3VyYXRpb24pKTsKKyAgICBtYW5hZ2VyLT5wcml2LT53
ZWJzaXRlRGF0YVN0b3JlID0gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGUoV1RGOjptb3Zl
KGNvbmZpZ3VyYXRpb24pKTsKIAogICAgIHJldHVybiBtYW5hZ2VyOwogfQogCi1XZWJzaXRlRGF0
YVN0b3JlJiB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJHZXREYXRhU3RvcmUoV2ViS2l0V2Vic2l0
ZURhdGFNYW5hZ2VyKiBtYW5hZ2VyKQorQVBJOjpXZWJzaXRlRGF0YVN0b3JlJiB3ZWJraXRXZWJz
aXRlRGF0YU1hbmFnZXJHZXREYXRhU3RvcmUoV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKiBtYW5h
Z2VyKQogewogICAgIFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlclByaXZhdGUqIHByaXYgPSBtYW5h
Z2VyLT5wcml2OwogICAgIGlmICghcHJpdi0+d2Vic2l0ZURhdGFTdG9yZSkgewpAQCAtMzE4LDcg
KzMxOCw3IEBAIFdlYnNpdGVEYXRhU3RvcmUmIHdlYmtpdFdlYnNpdGVEYXRhTWFuYWcKICAgICAg
ICAgY29uZmlndXJhdGlvbi53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9ICFwcml2LT53ZWJTUUxE
aXJlY3RvcnkgPwogICAgICAgICAgICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0V2Vi
U1FMRGF0YWJhc2VEaXJlY3RvcnkoKSA6IFdlYkNvcmU6OmZpbGVuYW1lVG9TdHJpbmcocHJpdi0+
d2ViU1FMRGlyZWN0b3J5LmdldCgpKTsKICAgICAgICAgY29uZmlndXJhdGlvbi5tZWRpYUtleXNT
dG9yYWdlRGlyZWN0b3J5ID0gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFLZXlz
U3RvcmFnZURpcmVjdG9yeSgpOwotICAgICAgICBwcml2LT53ZWJzaXRlRGF0YVN0b3JlID0gV2Vi
c2l0ZURhdGFTdG9yZTo6Y3JlYXRlKFdURjo6bW92ZShjb25maWd1cmF0aW9uKSk7CisgICAgICAg
IHByaXYtPndlYnNpdGVEYXRhU3RvcmUgPSBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZShX
VEY6Om1vdmUoY29uZmlndXJhdGlvbikpOwogICAgIH0KIAogICAgIHJldHVybiAqcHJpdi0+d2Vi
c2l0ZURhdGFTdG9yZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYnNpdGVEYXRhTWFuYWdlclByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJQcml2YXRlLmgJ
KHJldmlzaW9uIDE4ODE5MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYnNpdGVEYXRhTWFuYWdlclByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjAsMTAg
KzIwLDExIEBACiAjaWZuZGVmIFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlclByaXZhdGVfaAogI2Rl
ZmluZSBXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJQcml2YXRlX2gKIAorI2luY2x1ZGUgIkFQSVdl
YnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlICJXZWJLaXRQcml2YXRlLmgiCiAjaW5jbHVkZSAi
V2Vic2l0ZURhdGFTdG9yZS5oIgogCiBXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIqIHdlYmtpdFdl
YnNpdGVEYXRhTWFuYWdlckNyZWF0ZShXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3Vy
YXRpb24mJik7Ci1XZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUmIHdlYmtpdFdlYnNpdGVEYXRhTWFu
YWdlckdldERhdGFTdG9yZShXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIqKTsKK0FQSTo6V2Vic2l0
ZURhdGFTdG9yZSYgd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyR2V0RGF0YVN0b3JlKFdlYktpdFdl
YnNpdGVEYXRhTWFuYWdlciopOwogCiAjZW5kaWYgLy8gV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2Vy
UHJpdmF0ZV9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2lvcy9XS1ZpZXdJ
T1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9pb3MvV0tW
aWV3SU9TLm1tCShyZXZpc2lvbiAxODgxOTApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2lvcy9XS1ZpZXdJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTIyNSwxMSArMjI1LDEyIEBA
IC0gKHZvaWQpX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aENvbnRleHQKIAogICAgIFtzZWxmIGFk
ZFN1YnZpZXc6X3Njcm9sbFZpZXcuZ2V0KCldOwogCi0gICAgV2ViS2l0OjpXZWJQYWdlQ29uZmln
dXJhdGlvbiB3ZWJQYWdlQ29uZmlndXJhdGlvbjsKLSAgICB3ZWJQYWdlQ29uZmlndXJhdGlvbi5w
YWdlR3JvdXAgPSB0b0ltcGwocGFnZUdyb3VwUmVmKTsKLSAgICB3ZWJQYWdlQ29uZmlndXJhdGlv
bi5yZWxhdGVkUGFnZSA9IHRvSW1wbChyZWxhdGVkUGFnZSk7CisgICAgUmVmPEFQSTo6UGFnZUNv
bmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpjcmVh
dGUoKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRQcm9jZXNzUG9vbCh0b0ltcGwoY29udGV4dFJl
ZikpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldFBhZ2VHcm91cCh0b0ltcGwocGFnZUdyb3VwUmVm
KSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0UmVsYXRlZFBhZ2UodG9JbXBsKHJlbGF0ZWRQYWdl
KSk7CiAKLSAgICBfY29udGVudFZpZXcgPSBhZG9wdE5TKFtbV0tDb250ZW50VmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpib3VuZHMgcHJvY2Vzc1Bvb2w6KnRvSW1wbChjb250ZXh0UmVmKSBjb25m
aWd1cmF0aW9uOldURjo6bW92ZSh3ZWJQYWdlQ29uZmlndXJhdGlvbikgd2tWaWV3OnNlbGZdKTsK
KyAgICBfY29udGVudFZpZXcgPSBhZG9wdE5TKFtbV0tDb250ZW50VmlldyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpib3VuZHMgcHJvY2Vzc1Bvb2w6KnRvSW1wbChjb250ZXh0UmVmKSBjb25maWd1cmF0
aW9uOldURjo6bW92ZShjb25maWd1cmF0aW9uKSB3a1ZpZXc6c2VsZl0pOwogCiAgICAgW1tfY29u
dGVudFZpZXcgbGF5ZXJdIHNldEFuY2hvclBvaW50OkNHUG9pbnRaZXJvXTsKICAgICBbX2NvbnRl
bnRWaWV3IHNldEZyYW1lOmJvdW5kc107CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL21hYy9XS1ZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9tYWMvV0tWaWV3Lm1tCShyZXZpc2lvbiAxODgxOTApCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTM3NDQsNyArMzc0
NCw3IEBAIC0gKHZvaWQpX3NldFByaW1hcnlUcmFja2luZ0FyZWE6KE5TVHJhY2sKICAgICBbc2Vs
ZiBhZGRUcmFja2luZ0FyZWE6dHJhY2tpbmdBcmVhXTsKIH0KIAotLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSBwcm9jZXNzUG9vbDooV2ViUHJvY2Vzc1Bvb2wmKXBy
b2Nlc3NQb29sIGNvbmZpZ3VyYXRpb246KFdlYlBhZ2VDb25maWd1cmF0aW9uKXdlYlBhZ2VDb25m
aWd1cmF0aW9uIHdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcKKy0gKGluc3RhbmNldHlwZSlp
bml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUgcHJvY2Vzc1Bvb2w6KFdlYlByb2Nlc3NQb29sJilw
cm9jZXNzUG9vbCBjb25maWd1cmF0aW9uOihSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJilj
b25maWd1cmF0aW9uIHdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcKIHsKICAgICBzZWxmID0g
W3N1cGVyIGluaXRXaXRoRnJhbWU6ZnJhbWVdOwogICAgIGlmICghc2VsZikKQEAgLTM3NjYsNyAr
Mzc2Niw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihOU1JlY3QpZnIKICAgICBb
c2VsZiBhZGRUcmFja2luZ0FyZWE6X2RhdGEtPl9wcmltYXJ5VHJhY2tpbmdBcmVhLmdldCgpXTsK
IAogICAgIF9kYXRhLT5fcGFnZUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZUNsaWVudElt
cGw+KHNlbGYsIHdlYlZpZXcpOwotICAgIF9kYXRhLT5fcGFnZSA9IHByb2Nlc3NQb29sLmNyZWF0
ZVdlYlBhZ2UoKl9kYXRhLT5fcGFnZUNsaWVudCwgV1RGOjptb3ZlKHdlYlBhZ2VDb25maWd1cmF0
aW9uKSk7CisgICAgX2RhdGEtPl9wYWdlID0gcHJvY2Vzc1Bvb2wuY3JlYXRlV2ViUGFnZSgqX2Rh
dGEtPl9wYWdlQ2xpZW50LCBXVEY6Om1vdmUoY29uZmlndXJhdGlvbikpOwogICAgIF9kYXRhLT5f
cGFnZS0+c2V0QWRkc1Zpc2l0ZWRMaW5rcyhwcm9jZXNzUG9vbC5oaXN0b3J5Q2xpZW50KCkuYWRk
c1Zpc2l0ZWRMaW5rcygpKTsKIAogICAgIF9kYXRhLT5fcGFnZS0+c2V0SW50cmluc2ljRGV2aWNl
U2NhbGVGYWN0b3IoW3NlbGYgX2ludHJpbnNpY0RldmljZVNjYWxlRmFjdG9yXSk7CkBAIC0zOTk0
LDE5ICszOTk0LDIwIEBAIC0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSBjb250ZXgK
IAogLSAoaWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lIGNvbnRleHRSZWY6KFdLQ29udGV4
dFJlZiljb250ZXh0UmVmIHBhZ2VHcm91cFJlZjooV0tQYWdlR3JvdXBSZWYpcGFnZUdyb3VwUmVm
IHJlbGF0ZWRUb1BhZ2U6KFdLUGFnZVJlZilyZWxhdGVkUGFnZQogewotICAgIFdlYlBhZ2VDb25m
aWd1cmF0aW9uIHdlYlBhZ2VDb25maWd1cmF0aW9uOwotICAgIHdlYlBhZ2VDb25maWd1cmF0aW9u
LnBhZ2VHcm91cCA9IHRvSW1wbChwYWdlR3JvdXBSZWYpOwotICAgIHdlYlBhZ2VDb25maWd1cmF0
aW9uLnJlbGF0ZWRQYWdlID0gdG9JbXBsKHJlbGF0ZWRQYWdlKTsKKyAgICBSZWY8QVBJOjpQYWdl
Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OmNy
ZWF0ZSgpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldFByb2Nlc3NQb29sKHRvSW1wbChjb250ZXh0
UmVmKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0UGFnZUdyb3VwKHRvSW1wbChwYWdlR3JvdXBS
ZWYpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRSZWxhdGVkUGFnZSh0b0ltcGwocmVsYXRlZFBh
Z2UpKTsKIAotICAgIHJldHVybiBbc2VsZiBpbml0V2l0aEZyYW1lOmZyYW1lIHByb2Nlc3NQb29s
Oip0b0ltcGwoY29udGV4dFJlZikgY29uZmlndXJhdGlvbjp3ZWJQYWdlQ29uZmlndXJhdGlvbiB3
ZWJWaWV3Om5pbF07CisgICAgcmV0dXJuIFtzZWxmIGluaXRXaXRoRnJhbWU6ZnJhbWUgcHJvY2Vz
c1Bvb2w6KnRvSW1wbChjb250ZXh0UmVmKSBjb25maWd1cmF0aW9uOldURjo6bW92ZShjb25maWd1
cmF0aW9uKSB3ZWJWaWV3Om5pbF07CiB9CiAKLS0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVjdClm
cmFtZSBjb25maWd1cmF0aW9uUmVmOihXS1BhZ2VDb25maWd1cmF0aW9uUmVmKWNvbmZpZ3VyYXRp
b24KKy0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSBjb25maWd1cmF0aW9uUmVmOihX
S1BhZ2VDb25maWd1cmF0aW9uUmVmKWNvbmZpZ3VyYXRpb25SZWYKIHsKLSAgICBhdXRvJiBwcm9j
ZXNzUG9vbCA9ICp0b0ltcGwoY29uZmlndXJhdGlvbiktPnByb2Nlc3NQb29sKCk7Ci0gICAgYXV0
byB3ZWJQYWdlQ29uZmlndXJhdGlvbiA9IHRvSW1wbChjb25maWd1cmF0aW9uKS0+d2ViUGFnZUNv
bmZpZ3VyYXRpb24oKTsKKyAgICBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4gY29uZmlndXJh
dGlvbiA9ICp0b0ltcGwoY29uZmlndXJhdGlvblJlZik7CisgICAgYXV0byYgcHJvY2Vzc1Bvb2wg
PSAqY29uZmlndXJhdGlvbi0+cHJvY2Vzc1Bvb2woKTsKIAotICAgIHJldHVybiBbc2VsZiBpbml0
V2l0aEZyYW1lOmZyYW1lIHByb2Nlc3NQb29sOnByb2Nlc3NQb29sIGNvbmZpZ3VyYXRpb246d2Vi
UGFnZUNvbmZpZ3VyYXRpb24gd2ViVmlldzpuaWxdOworICAgIHJldHVybiBbc2VsZiBpbml0V2l0
aEZyYW1lOmZyYW1lIHByb2Nlc3NQb29sOnByb2Nlc3NQb29sIGNvbmZpZ3VyYXRpb246V1RGOjpt
b3ZlKGNvbmZpZ3VyYXRpb24pIHdlYlZpZXc6bmlsXTsKIH0KIAogLSAoQk9PTCl3YW50c1VwZGF0
ZUxheWVyCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXdJbnRl
cm5hbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dL
Vmlld0ludGVybmFsLmgJKHJldmlzaW9uIDE4ODE5MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvbWFjL1dLVmlld0ludGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4
LDcgQEAKIAogbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBPYmplY3Q7CitjbGFzcyBQYWdlQ29uZmln
dXJhdGlvbjsKIH0KIAogbmFtZXNwYWNlIElQQyB7CkBAIC01OCw3ICs1OSw2IEBAIGNsYXNzIFZp
ZXdTbmFwc2hvdDsKIGNsYXNzIFdlYlByb2Nlc3NQb29sOwogc3RydWN0IENvbG9yU3BhY2VEYXRh
Owogc3RydWN0IEVkaXRvclN0YXRlOwotc3RydWN0IFdlYlBhZ2VDb25maWd1cmF0aW9uOwogfQog
CiBAY2xhc3MgV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcjsKQEAgLTY4LDkgKzY4LDcgQEAg
c3RydWN0IFdlYlBhZ2VDb25maWd1cmF0aW9uOwogI2VuZGlmCiAKIEBpbnRlcmZhY2UgV0tWaWV3
ICgpCi0jaWYgV0tfQVBJX0VOQUJMRUQKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihD
R1JlY3QpZnJhbWUgcHJvY2Vzc1Bvb2w6KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmKXByb2Nlc3NQ
b29sIGNvbmZpZ3VyYXRpb246KFdlYktpdDo6V2ViUGFnZUNvbmZpZ3VyYXRpb24pd2ViUGFnZUNv
bmZpZ3VyYXRpb24gd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldzsKLSNlbmRpZgorLSAoaW5z
dGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KENHUmVjdClmcmFtZSBwcm9jZXNzUG9vbDooV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbCYpcHJvY2Vzc1Bvb2wgY29uZmlndXJhdGlvbjooUmVmPEFQSTo6UGFn
ZUNvbmZpZ3VyYXRpb24+JiYpY29uZmlndXJhdGlvbiB3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJW
aWV3OwogCiAtIChzdGQ6OnVuaXF1ZV9wdHI8V2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5PilfY3Jl
YXRlRHJhd2luZ0FyZWFQcm94eTsKIC0gKEJPT0wpX2lzRm9jdXNlZDsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlZpZXcuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlZp
ZXcuY3BwCShyZXZpc2lvbiAxODgxOTApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29v
cmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjks
NyBAQAogCiAjaW5jbHVkZSAiV2ViVmlldy5oIgogCisjaW5jbHVkZSAiQVBJUGFnZUNvbmZpZ3Vy
YXRpb24uaCIKICNpbmNsdWRlICJDb29yZGluYXRlZERyYXdpbmdBcmVhUHJveHkuaCIKICNpbmNs
dWRlICJDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaCIKICNpbmNsdWRlICJDb29yZGluYXRlZExh
eWVyVHJlZUhvc3RQcm94eS5oIgpAQCAtNTIsMTEgKzUzLDExIEBAIFdlYlZpZXc6OldlYlZpZXco
V2ViUHJvY2Vzc1Bvb2wqIGNvbnRleHQKICAgICAsIG1fdmlzaWJsZShmYWxzZSkKICAgICAsIG1f
b3BhY2l0eSgxLjApCiB7Ci0gICAgV2ViUGFnZUNvbmZpZ3VyYXRpb24gd2ViUGFnZUNvbmZpZ3Vy
YXRpb247Ci0gICAgd2ViUGFnZUNvbmZpZ3VyYXRpb24ucGFnZUdyb3VwID0gcGFnZUdyb3VwOwor
ICAgIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiBwYWdlQ29uZmlndXJhdGlvbiA9IEFQSTo6
UGFnZUNvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRQ
YWdlR3JvdXAocGFnZUdyb3VwKTsKIAogICAgIC8vIE5lZWQgdG8gY2FsbCBjcmVhdGVXZWJQYWdl
IGFmdGVyIG90aGVyIGRhdGEgbWVtYmVycywgc3BlY2lmaWNhbGx5IG1fdmlzaWJsZSwgYXJlIGlu
aXRpYWxpemVkLgotICAgIG1fcGFnZSA9IGNvbnRleHQtPmNyZWF0ZVdlYlBhZ2UoKnRoaXMsIFdU
Rjo6bW92ZSh3ZWJQYWdlQ29uZmlndXJhdGlvbikpOworICAgIG1fcGFnZSA9IGNvbnRleHQtPmNy
ZWF0ZVdlYlBhZ2UoKnRoaXMsIFdURjo6bW92ZShwYWdlQ29uZmlndXJhdGlvbikpOwogCiAgICAg
bV9wYWdlLT5wYWdlR3JvdXAoKS5wcmVmZXJlbmNlcygpLnNldEFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdFbmFibGVkKHRydWUpOwogICAgIG1fcGFnZS0+cGFnZUdyb3VwKCkucHJlZmVyZW5jZXMoKS5z
ZXRGb3JjZUNvbXBvc2l0aW5nTW9kZSh0cnVlKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5oCShyZXZpc2lvbiAxODgxOTApCisrKyBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAt
NDUsNyArNDUsNiBAQCBjbGFzcyBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjsKIGNsYXNzIFdl
YkZyYW1lUHJveHk7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiBjbGFzcyBXZWJQcm9jZXNzUG9vbDsK
LXN0cnVjdCBXZWJQYWdlQ29uZmlndXJhdGlvbjsKIH0KIAogQGludGVyZmFjZSBXS0NvbnRlbnRW
aWV3IDogVUlWaWV3IHsKQEAgLTYxLDggKzYwLDggQEAgc3RydWN0IFdlYlBhZ2VDb25maWd1cmF0
aW9uOwogQHByb3BlcnR5IChub25hdG9taWMsIGdldHRlcj1pc1Nob3dpbmdJbnNwZWN0b3JJbmRp
Y2F0aW9uKSBCT09MIHNob3dpbmdJbnNwZWN0b3JJbmRpY2F0aW9uOwogQHByb3BlcnR5IChub25h
dG9taWMsIHJlYWRvbmx5KSBCT09MIGlzQmFja2dyb3VuZDsKIAotLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoRnJhbWU6KENHUmVjdClmcmFtZSBwcm9jZXNzUG9vbDooV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbCYpcHJvY2Vzc1Bvb2wgY29uZmlndXJhdGlvbjooV2ViS2l0OjpXZWJQYWdlQ29uZmlndXJh
dGlvbil3ZWJQYWdlQ29uZmlndXJhdGlvbiB3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3Owot
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KENHUmVjdClmcmFtZSBwcm9jZXNzUG9vbDoo
V2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYpcHJvY2Vzc1Bvb2wgY29uZmlndXJhdGlvbjooV2ViS2l0
OjpXZWJQYWdlQ29uZmlndXJhdGlvbil3ZWJQYWdlQ29uZmlndXJhdGlvbiB3a1ZpZXc6KFdLVmll
dyAqKXdlYlZpZXc7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1l
IHByb2Nlc3NQb29sOihXZWJLaXQ6OldlYlByb2Nlc3NQb29sJilwcm9jZXNzUG9vbCBjb25maWd1
cmF0aW9uOihSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJiljb25maWd1cmF0aW9uIHdlYlZp
ZXc6KFdLV2ViVmlldyAqKXdlYlZpZXc7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZToo
Q0dSZWN0KWZyYW1lIHByb2Nlc3NQb29sOihXZWJLaXQ6OldlYlByb2Nlc3NQb29sJilwcm9jZXNz
UG9vbCBjb25maWd1cmF0aW9uOihSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJiljb25maWd1
cmF0aW9uIHdrVmlldzooV0tWaWV3ICopd2ViVmlldzsKIAogLSAodm9pZClkaWRVcGRhdGVWaXNp
YmxlUmVjdDooQ0dSZWN0KXZpc2libGVSZWN0IHVub2JzY3VyZWRSZWN0OihDR1JlY3QpdW5vYnNj
dXJlZFJlY3QKICAgICB1bm9ic2N1cmVkUmVjdEluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzOihDR1Jl
Y3QpdW5vYnNjdXJlZFJlY3RJblNjcm9sbFZpZXdDb29yZGluYXRlcwpJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQkocmV2aXNpb24gMTg4MTkw
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBQTEFURk9STShJT1MpCiAKKyNpbXBv
cnQgIkFQSVBhZ2VDb25maWd1cmF0aW9uLmgiCiAjaW1wb3J0ICJBcHBsaWNhdGlvblN0YXRlVHJh
Y2tlci5oIgogI2ltcG9ydCAiUGFnZUNsaWVudEltcGxJT1MuaCIKICNpbXBvcnQgIlJlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhUHJveHkuaCIKQEAgLTE4MSwxMSArMTgyLDExIEBAIC0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aEZyYW1lOihDR1JlY3QpZnIKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXBw
bGljYXRpb25TdGF0ZVRyYWNrZXI+IF9hcHBsaWNhdGlvblN0YXRlVHJhY2tlcjsKIH0KIAotLSAo
aW5zdGFuY2V0eXBlKV9jb21tb25Jbml0aWFsaXphdGlvbldpdGhQcm9jZXNzUG9vbDooV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbCYpcHJvY2Vzc1Bvb2wgY29uZmlndXJhdGlvbjooV2ViS2l0OjpXZWJQ
YWdlQ29uZmlndXJhdGlvbil3ZWJQYWdlQ29uZmlndXJhdGlvbgorLSAoaW5zdGFuY2V0eXBlKV9j
b21tb25Jbml0aWFsaXphdGlvbldpdGhQcm9jZXNzUG9vbDooV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bCYpcHJvY2Vzc1Bvb2wgY29uZmlndXJhdGlvbjooUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+
JiYpY29uZmlndXJhdGlvbgogewogICAgIEFTU0VSVChfcGFnZUNsaWVudCk7CiAKLSAgICBfcGFn
ZSA9IHByb2Nlc3NQb29sLmNyZWF0ZVdlYlBhZ2UoKl9wYWdlQ2xpZW50LCBXVEY6Om1vdmUod2Vi
UGFnZUNvbmZpZ3VyYXRpb24pKTsKKyAgICBfcGFnZSA9IHByb2Nlc3NQb29sLmNyZWF0ZVdlYlBh
Z2UoKl9wYWdlQ2xpZW50LCBXVEY6Om1vdmUoY29uZmlndXJhdGlvbikpOwogICAgIF9wYWdlLT5p
bml0aWFsaXplV2ViUGFnZSgpOwogICAgIF9wYWdlLT5zZXRJbnRyaW5zaWNEZXZpY2VTY2FsZUZh
Y3RvcihXS0dldFNjYWxlRmFjdG9yRm9yU2NyZWVuKFtVSVNjcmVlbiBtYWluU2NyZWVuXSkpOwog
ICAgIF9wYWdlLT5zZXRVc2VGaXhlZExheW91dCh0cnVlKTsKQEAgLTIxOCw3ICsyMTksNyBAQCAt
IChpbnN0YW5jZXR5cGUpX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0CiAgICAgcmV0dXJuIHNlbGY7
CiB9CiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihDR1JlY3QpZnJhbWUgcHJvY2Vz
c1Bvb2w6KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmKXByb2Nlc3NQb29sIGNvbmZpZ3VyYXRpb246
KFdlYktpdDo6V2ViUGFnZUNvbmZpZ3VyYXRpb24pd2ViUGFnZUNvbmZpZ3VyYXRpb24gd2ViVmll
dzooV0tXZWJWaWV3ICopd2ViVmlldworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KENH
UmVjdClmcmFtZSBwcm9jZXNzUG9vbDooV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYpcHJvY2Vzc1Bv
b2wgY29uZmlndXJhdGlvbjooUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpY29uZmlndXJh
dGlvbiB3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3CiB7CiAgICAgaWYgKCEoc2VsZiA9IFtz
dXBlciBpbml0V2l0aEZyYW1lOmZyYW1lXSkpCiAgICAgICAgIHJldHVybiBuaWw7CkBAIC0yMjgs
MTAgKzIyOSwxMCBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyCiAg
ICAgX3BhZ2VDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VDbGllbnRJbXBsPihzZWxmLCB3
ZWJWaWV3KTsKICAgICBfd2ViVmlldyA9IHdlYlZpZXc7CiAKLSAgICByZXR1cm4gW3NlbGYgX2Nv
bW1vbkluaXRpYWxpemF0aW9uV2l0aFByb2Nlc3NQb29sOnByb2Nlc3NQb29sIGNvbmZpZ3VyYXRp
b246d2ViUGFnZUNvbmZpZ3VyYXRpb25dOworICAgIHJldHVybiBbc2VsZiBfY29tbW9uSW5pdGlh
bGl6YXRpb25XaXRoUHJvY2Vzc1Bvb2w6cHJvY2Vzc1Bvb2wgY29uZmlndXJhdGlvbjpXVEY6Om1v
dmUoY29uZmlndXJhdGlvbildOwogfQogCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZToo
Q0dSZWN0KWZyYW1lIHByb2Nlc3NQb29sOihXZWJLaXQ6OldlYlByb2Nlc3NQb29sJilwcm9jZXNz
UG9vbCBjb25maWd1cmF0aW9uOihXZWJLaXQ6OldlYlBhZ2VDb25maWd1cmF0aW9uKXdlYlBhZ2VD
b25maWd1cmF0aW9uIHdrVmlldzooV0tWaWV3ICopd2tWaWV3CistIChpbnN0YW5jZXR5cGUpaW5p
dFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lIHByb2Nlc3NQb29sOihXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sJilwcm9jZXNzUG9vbCBjb25maWd1cmF0aW9uOihSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlv
bj4mJiljb25maWd1cmF0aW9uIHdrVmlldzooV0tWaWV3ICopd2tWaWV3CiB7CiAgICAgaWYgKCEo
c2VsZiA9IFtzdXBlciBpbml0V2l0aEZyYW1lOmZyYW1lXSkpCiAgICAgICAgIHJldHVybiBuaWw7
CkBAIC0yNDAsNyArMjQxLDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KENHUmVj
dClmcgogCiAgICAgX3BhZ2VDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VDbGllbnRJbXBs
PihzZWxmLCB3a1ZpZXcpOwogCi0gICAgcmV0dXJuIFtzZWxmIF9jb21tb25Jbml0aWFsaXphdGlv
bldpdGhQcm9jZXNzUG9vbDpwcm9jZXNzUG9vbCBjb25maWd1cmF0aW9uOndlYlBhZ2VDb25maWd1
cmF0aW9uXTsKKyAgICByZXR1cm4gW3NlbGYgX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aFByb2Nl
c3NQb29sOnByb2Nlc3NQb29sIGNvbmZpZ3VyYXRpb246V1RGOjptb3ZlKGNvbmZpZ3VyYXRpb24p
XTsKIH0KIAogLSAodm9pZClkZWFsbG9jCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258577</attachid>
            <date>2015-08-08 16:00:51 -0700</date>
            <delta_ts>2015-08-08 16:01:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147811-20150808160039.patch</filename>
            <type>text/plain</type>
            <size>52498</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4ODE5MCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg1IEBACisyMDE1LTA4LTA4ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVwbGFjZSBXZWJQYWdlQ29uZmlndXJh
dGlvbiB3aXRoIEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24gYW5kIGV4cG9zZSBhIEMtU1BJIGFjY2Vz
c29yIGZvciBpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQ3ODExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgLSBBZGRzIHRoZSBtaXNzaW5nIHBpZWNlcyBmcm9tIFdlYlBhZ2VDb25maWd1cmF0aW9uIGlu
dG8gQVBJOjpQYWdlQ29uZmlndXJhdGlvbi4KKyAgICAgICAgLSBBZGRzIEMtU1BJIHRvIHNldCBh
bmQgZ2V0IHRoZSBXZWJzaXRlRGF0YVN0b3JlIG9uIHRoZSBXS1BhZ2VDb25maWd1cmF0aW9uUmVm
LgorICAgICAgICAtIFVzZXMgQVBJOjpQYWdlQ29uZmlndXJhdGlvbiB0byBwYXNzIGNvbmZpZ3Vy
YXRpb24gaW5mb3JtYXRpb24gZnJvbSBXS1dlYlZpZXcvV0tWaWV3IAorICAgICAgICAgIHRvIFdl
YlBhZ2VQcm94eS4KKyAgICAgICAgLSBTdG9yZXMgdGhlIEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24g
b24gdGhlIFdlYlBhZ2VQcm94eSBhbmQgZXhwb3NlcyBhIG5ldyBDLVNQSSBmdW5jdGlvbiwKKyAg
ICAgICAgICBXS1BhZ2VDb3B5UGFnZUNvbmZpZ3VyYXRpb24sIHRvIGdldCBhIGNvcHkgb2YgaXQu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcDoKKyAg
ICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChBUEk6OlBh
Z2VDb25maWd1cmF0aW9uOjpQYWdlQ29uZmlndXJhdGlvbik6CisgICAgICAgIChBUEk6OlBhZ2VD
b25maWd1cmF0aW9uOjp+UGFnZUNvbmZpZ3VyYXRpb24pOgorICAgICAgICAoQVBJOjpQYWdlQ29u
ZmlndXJhdGlvbjo6Y29weSk6CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpwcm9j
ZXNzUG9vbCk6CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpzZXRSZWxhdGVkUGFn
ZSk6CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjp2aXNpdGVkTGlua1Byb3ZpZGVy
KToKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OnNldFZpc2l0ZWRMaW5rUHJvdmlk
ZXIpOgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6d2Vic2l0ZURhdGFTdG9yZSk6
CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpzZXRXZWJzaXRlRGF0YVN0b3JlKToK
KyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OnNlc3Npb25JRCk6CisgICAgICAgIChB
UEk6OlBhZ2VDb25maWd1cmF0aW9uOjpzZXRTZXNzaW9uSUQpOgorICAgICAgICAoQVBJOjpQYWdl
Q29uZmlndXJhdGlvbjo6d2ViUGFnZUNvbmZpZ3VyYXRpb24pOiBEZWxldGVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKEFQSTo6UGFn
ZUNvbmZpZ3VyYXRpb246OnByZWZlcmVuY2VWYWx1ZXMpOgorICAgICAgICAoQVBJOjpQYWdlQ29u
ZmlndXJhdGlvbjo6dHJlYXRzU0hBMVNpZ25lZENlcnRpZmljYXRlc0FzSW5zZWN1cmUpOgorICAg
ICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6c2V0VHJlYXRzU0hBMVNpZ25lZENlcnRpZmlj
YXRlc0FzSW5zZWN1cmUpOgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6YWx3YXlz
UnVuc0F0Rm9yZWdyb3VuZFByaW9yaXR5KToKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRp
b246OnNldEFsd2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eSk6CisgICAgICAgIChBUEk6OlBh
Z2VDb25maWd1cmF0aW9uOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdlR2V0UGFnZUdyb3VwKToKKyAgICAgICAg
KFdLUGFnZUNvcHlQYWdlQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXS1BhZ2VMb2FkVVJMKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLUGFnZUNvbmZpZ3VyYXRpb25SZWYuY3BwOgorICAgICAgICAoV0tQYWdlQ29uZmln
dXJhdGlvblNldFJlbGF0ZWRQYWdlKToKKyAgICAgICAgKFdLUGFnZUNvbmZpZ3VyYXRpb25HZXRX
ZWJzaXRlRGF0YVN0b3JlKToKKyAgICAgICAgKFdLUGFnZUNvbmZpZ3VyYXRpb25TZXRXZWJzaXRl
RGF0YVN0b3JlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlQ29uZmlndXJhdGlv
blJlZi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAg
ICAgICAoLVtXS1dlYlZpZXcgaW5pdFdpdGhGcmFtZTpjb25maWd1cmF0aW9uOl0pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvaW9zL1dLVmlld0lPUy5tbToKKyAgICAgICAgKC1bV0tWaWV3IF9j
b21tb25Jbml0aWFsaXphdGlvbldpdGhDb250ZXh0UmVmOnBhZ2VHcm91cFJlZjpyZWxhdGVkVG9Q
YWdlOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbToKKyAgICAgICAg
KC1bV0tWaWV3IF9zZXRQcmltYXJ5VHJhY2tpbmdBcmVhOl0pOgorICAgICAgICAoLVtXS1ZpZXcg
aW5pdFdpdGhGcmFtZTpwcm9jZXNzUG9vbDpjb25maWd1cmF0aW9uOndlYlZpZXc6XSk6CisgICAg
ICAgICgtW1dLVmlldyBpbml0V2l0aEZyYW1lOmNvbnRleHRSZWY6cGFnZUdyb3VwUmVmOnJlbGF0
ZWRUb1BhZ2U6XSk6CisgICAgICAgICgtW1dLVmlldyBpbml0V2l0aEZyYW1lOmNvbmZpZ3VyYXRp
b25SZWY6XSk6CisgICAgICAgICgtW1dLVmlldyB3YW50c1VwZGF0ZUxheWVyXSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50ZXJuYWwuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVh
dGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6fldlYlBhZ2VQcm94eSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6Y29uZmlndXJhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6cHJvY2Vzc0lkZW50aWZpZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwYWdlSUQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNlc3Npb25JRCk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNy
ZWF0ZU5ld1dlYlByb2Nlc3NSZXNwZWN0aW5nUHJvY2Vzc0NvdW50TGltaXQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQb29sOjpkb3dubG9hZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6d2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQcm94eTo6Y3JlYXRlV2ViUGFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnByb2Nl
c3NQb29sKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW06CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aFByb2Nlc3NQb29sOmNvbmZpZ3VyYXRpb246
XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgaW5pdFdpdGhGcmFtZTpwcm9jZXNzUG9vbDpj
b25maWd1cmF0aW9uOndlYlZpZXc6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgaW5pdFdp
dGhGcmFtZTpwcm9jZXNzUG9vbDpjb25maWd1cmF0aW9uOndrVmlldzpdKToKKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyBkZWFsbG9jXSk6CisKIDIwMTUtMDgtMDcgIEZpbGlwIFBpemxvICA8ZnBp
emxvQGFwcGxlLmNvbT4KIAogICAgICAgICBMaWdodHdlaWdodCBsb2NrcyBzaG91bGQgYmUgYWRh
cHRpdmUKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShy
ZXZpc2lvbiAxODgxOTApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIkFQSU5hdmln
YXRpb25BY3Rpb24uaCIKICNpbmNsdWRlICJBUElOYXZpZ2F0aW9uQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiQVBJTmF2aWdhdGlvblJlc3BvbnNlLmgiCisjaW5jbHVkZSAiQVBJUGFnZUNvbmZpZ3VyYXRp
b24uaCIKICNpbmNsdWRlICJBUElQb2xpY3lDbGllbnQuaCIKICNpbmNsdWRlICJBUElTZWN1cml0
eU9yaWdpbi5oIgogI2luY2x1ZGUgIkFQSVVJQ2xpZW50LmgiCkBAIC0yOTMsMTMgKzI5NCwxNCBA
QCBwcml2YXRlOgogICAgIFBhZ2VDbGllbnQmIG1fcGFnZUNsaWVudDsKIH07CiAKLVJlZjxXZWJQ
YWdlUHJveHk+IFdlYlBhZ2VQcm94eTo6Y3JlYXRlKFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdl
YlByb2Nlc3NQcm94eSYgcHJvY2VzcywgdWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJQYWdlQ29u
ZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKK1JlZjxXZWJQYWdlUHJveHk+IFdlYlBhZ2VQcm94
eTo6Y3JlYXRlKFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2Vz
cywgdWludDY0X3QgcGFnZUlELCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJiBjb25maWd1
cmF0aW9uKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlBhZ2VQcm94eShwYWdlQ2xp
ZW50LCBwcm9jZXNzLCBwYWdlSUQsIGNvbmZpZ3VyYXRpb24pKTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBXZWJQYWdlUHJveHkocGFnZUNsaWVudCwgcHJvY2VzcywgcGFnZUlELCBXVEY6Om1v
dmUoY29uZmlndXJhdGlvbikpKTsKIH0KIAotV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFn
ZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCB1aW50NjRfdCBw
YWdlSUQsIGNvbnN0IFdlYlBhZ2VDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQorV2ViUGFn
ZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1By
b3h5JiBwcm9jZXNzLCB1aW50NjRfdCBwYWdlSUQsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9u
PiYmIGNvbmZpZ3VyYXRpb24pCiAgICAgOiBtX3BhZ2VDbGllbnQocGFnZUNsaWVudCkKKyAgICAs
IG1fY29uZmlndXJhdGlvbihXVEY6Om1vdmUoY29uZmlndXJhdGlvbikpCiAgICAgLCBtX2xvYWRl
ckNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6TG9hZGVyQ2xpZW50PigpKQogICAgICwgbV9w
b2xpY3lDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OlBvbGljeUNsaWVudD4oKSkKICAgICAs
IG1fZm9ybUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6Rm9ybUNsaWVudD4oKSkKQEAgLTMx
MSwxNCArMzEzLDE0IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHAK
ICNlbmRpZgogICAgICwgbV9uYXZpZ2F0aW9uU3RhdGUoc3RkOjptYWtlX3VuaXF1ZTxXZWJOYXZp
Z2F0aW9uU3RhdGU+KCkpCiAgICAgLCBtX3Byb2Nlc3MocHJvY2VzcykKLSAgICAsIG1fcGFnZUdy
b3VwKCpjb25maWd1cmF0aW9uLnBhZ2VHcm91cCkKLSAgICAsIG1fcHJlZmVyZW5jZXMoKmNvbmZp
Z3VyYXRpb24ucHJlZmVyZW5jZXMpCi0gICAgLCBtX3VzZXJDb250ZW50Q29udHJvbGxlcihjb25m
aWd1cmF0aW9uLnVzZXJDb250ZW50Q29udHJvbGxlcikKLSAgICAsIG1fdmlzaXRlZExpbmtQcm92
aWRlcigqY29uZmlndXJhdGlvbi52aXNpdGVkTGlua1Byb3ZpZGVyKQotICAgICwgbV93ZWJzaXRl
RGF0YVN0b3JlKCpjb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUpCisgICAgLCBtX3BhZ2VH
cm91cCgqbV9jb25maWd1cmF0aW9uLT5wYWdlR3JvdXAoKSkKKyAgICAsIG1fcHJlZmVyZW5jZXMo
Km1fY29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKSkKKyAgICAsIG1fdXNlckNvbnRlbnRDb250
cm9sbGVyKG1fY29uZmlndXJhdGlvbi0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkpCisgICAgLCBt
X3Zpc2l0ZWRMaW5rUHJvdmlkZXIoKm1fY29uZmlndXJhdGlvbi0+dmlzaXRlZExpbmtQcm92aWRl
cigpKQorICAgICwgbV93ZWJzaXRlRGF0YVN0b3JlKG1fY29uZmlndXJhdGlvbi0+d2Vic2l0ZURh
dGFTdG9yZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCkpCiAgICAgLCBtX21haW5GcmFtZShudWxscHRy
KQogICAgICwgbV91c2VyQWdlbnQoc3RhbmRhcmRVc2VyQWdlbnQoKSkKLSAgICAsIG1fdHJlYXRz
U0hBMUNlcnRpZmljYXRlc0FzSW5zZWN1cmUoY29uZmlndXJhdGlvbi50cmVhdHNTSEExU2lnbmVk
Q2VydGlmaWNhdGVzQXNJbnNlY3VyZSkKKyAgICAsIG1fdHJlYXRzU0hBMUNlcnRpZmljYXRlc0Fz
SW5zZWN1cmUobV9jb25maWd1cmF0aW9uLT50cmVhdHNTSEExU2lnbmVkQ2VydGlmaWNhdGVzQXNJ
bnNlY3VyZSgpKQogI2lmIFBMQVRGT1JNKElPUykKICAgICAsIG1faGFzUmVjZWl2ZWRMYXllclRy
ZWVUcmFuc2FjdGlvbkFmdGVyRGlkQ29tbWl0TG9hZCh0cnVlKQogICAgICwgbV9maXJzdExheWVy
VHJlZVRyYW5zYWN0aW9uSWRBZnRlckRpZENvbW1pdExvYWQoMCkKQEAgLTMzNSw3ICszMzcsNyBA
QCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwCiAgICAgLCBtX3ZpZXdT
dGF0ZShWaWV3U3RhdGU6Ok5vRmxhZ3MpCiAgICAgLCBtX3ZpZXdXYXNFdmVySW5XaW5kb3coZmFs
c2UpCiAjaWYgUExBVEZPUk0oSU9TKQotICAgICwgbV9hbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJp
b3JpdHkoY29uZmlndXJhdGlvbi5hbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHkpCisgICAg
LCBtX2Fsd2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eShtX2NvbmZpZ3VyYXRpb24tPmFsd2F5
c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eSgpKQogI2VuZGlmCiAgICAgLCBtX2JhY2tGb3J3YXJk
TGlzdChXZWJCYWNrRm9yd2FyZExpc3Q6OmNyZWF0ZSgqdGhpcykpCiAgICAgLCBtX21haW50YWlu
c0luYWN0aXZlU2VsZWN0aW9uKGZhbHNlKQpAQCAtMzc5LDcgKzM4MSw3IEBAIFdlYlBhZ2VQcm94
eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHAKICAgICAsIG1faXNUcmFja2luZ1RvdWNoRXZl
bnRzKGZhbHNlKQogI2VuZGlmCiAgICAgLCBtX3BhZ2VJRChwYWdlSUQpCi0gICAgLCBtX3Nlc3Np
b25JRChjb25maWd1cmF0aW9uLnNlc3Npb25JRCkKKyAgICAsIG1fc2Vzc2lvbklEKG1fY29uZmln
dXJhdGlvbi0+c2Vzc2lvbklEKCkpCiAgICAgLCBtX2lzUGFnZVN1c3BlbmRlZChmYWxzZSkKICAg
ICAsIG1fYWRkc1Zpc2l0ZWRMaW5rcyh0cnVlKQogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9S
KQpAQCAtNDM2LDcgKzQzOCw3IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGll
bnQmIHAKICNlbmRpZgogICAgICwgbV9zY3JvbGxQaW5uaW5nQmVoYXZpb3IoRG9Ob3RQaW4pCiAg
ICAgLCBtX25hdmlnYXRpb25JRCgwKQotICAgICwgbV9jb25maWd1cmF0aW9uUHJlZmVyZW5jZVZh
bHVlcyhjb25maWd1cmF0aW9uLnByZWZlcmVuY2VWYWx1ZXMpCisgICAgLCBtX2NvbmZpZ3VyYXRp
b25QcmVmZXJlbmNlVmFsdWVzKG1fY29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpKQog
ICAgICwgbV9wb3RlbnRpYWxseUNoYW5nZWRWaWV3U3RhdGVGbGFncyhWaWV3U3RhdGU6Ok5vRmxh
Z3MpCiAgICAgLCBtX3ZpZXdTdGF0ZUNoYW5nZVdhbnRzU3luY2hyb25vdXNSZXBseShmYWxzZSkK
IHsKQEAgLTUxOCw2ICs1MjAsMTEgQEAgV2ViUGFnZVByb3h5Ojp+V2ViUGFnZVByb3h5KCkKICNl
bmRpZgogfQogCitjb25zdCBBUEk6OlBhZ2VDb25maWd1cmF0aW9uJiBXZWJQYWdlUHJveHk6OmNv
bmZpZ3VyYXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbmZpZ3VyYXRpb24uZ2V0KCk7
Cit9CisKIFBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIgV2ViUGFnZVByb3h5Ojpwcm9jZXNzSWRl
bnRpZmllcigpIGNvbnN0CiB7CiAgICAgaWYgKG1faXNDbG9zZWQpCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAxODgxOTApCisrKyBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1NCwy
OCArMjU0LDYgQEAgdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgV2ViQ29yZTo6SQogdHlw
ZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgV2ViQ29yZTo6TWFjaFNlbmRSaWdodCY+IE1hY2hT
ZW5kUmlnaHRDYWxsYmFjazsKICNlbmRpZgogCi1zdHJ1Y3QgV2ViUGFnZUNvbmZpZ3VyYXRpb24g
ewotICAgIFdlYlBhZ2VHcm91cCogcGFnZUdyb3VwID0gbnVsbHB0cjsKLSAgICBXZWJQcmVmZXJl
bmNlcyogcHJlZmVyZW5jZXMgPSBudWxscHRyOwotICAgIFdlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5KiB1c2VyQ29udGVudENvbnRyb2xsZXIgPSBudWxscHRyOwotICAgIFZpc2l0ZWRMaW5r
UHJvdmlkZXIqIHZpc2l0ZWRMaW5rUHJvdmlkZXIgPSBudWxscHRyOwotCi0gICAgV2Vic2l0ZURh
dGFTdG9yZSogd2Vic2l0ZURhdGFTdG9yZSA9IG51bGxwdHI7Ci0gICAgLy8gRklYTUU6IFdlIGN1
cnJlbnRseSBoYXZlIHRvIHBhc3MgdGhlIHNlc3Npb24gSUQgc2VwYXJhdGVseSBoZXJlIHRvIHN1
cHBvcnQgdGhlIGxlZ2FjeSBwcml2YXRlIGJyb3dzaW5nIHNlc3Npb24uCi0gICAgLy8gT25jZSB3
ZSBnZXQgcmlkIG9mIGl0IHdlIHNob3VsZCBnZXQgcmlkIG9mIHRoaXMgY29uZmlndXJhdGlvbiBw
YXJhbWV0ZXIgYXMgd2VsbC4KLSAgICBXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEOwotCi0g
ICAgV2ViUGFnZVByb3h5KiByZWxhdGVkUGFnZSA9IG51bGxwdHI7Ci0KLSAgICBib29sIHRyZWF0
c1NIQTFTaWduZWRDZXJ0aWZpY2F0ZXNBc0luc2VjdXJlID0gZmFsc2U7Ci0KLSNpZiBQTEFURk9S
TShJT1MpCi0gICAgYm9vbCBhbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHkgPSBmYWxzZTsK
LSNlbmRpZgotCi0gICAgV2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWVNYXAgcHJlZmVyZW5jZVZh
bHVlczsKLX07Ci0KIGNsYXNzIFdlYlBhZ2VQcm94eSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8
QVBJOjpPYmplY3Q6OlR5cGU6OlBhZ2U+CiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCiAg
ICAgLCBwdWJsaWMgV2ViQ29sb3JQaWNrZXI6OkNsaWVudApAQCAtMjg3LDkgKzI2NSwxMSBAQCBj
bGFzcyBXZWJQYWdlUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJCiAgICAgLCBwdWJsaWMgSVBD
OjpNZXNzYWdlUmVjZWl2ZXIKICAgICAsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIgewogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8V2ViUGFnZVByb3h5PiBjcmVhdGUoUGFnZUNsaWVudCYsIFdl
YlByb2Nlc3NQcm94eSYsIHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViUGFnZUNvbmZpZ3VyYXRp
b24mKTsKKyAgICBzdGF0aWMgUmVmPFdlYlBhZ2VQcm94eT4gY3JlYXRlKFBhZ2VDbGllbnQmLCBX
ZWJQcm9jZXNzUHJveHkmLCB1aW50NjRfdCBwYWdlSUQsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0
aW9uPiYmKTsKICAgICB2aXJ0dWFsIH5XZWJQYWdlUHJveHkoKTsKIAorICAgIGNvbnN0IEFQSTo6
UGFnZUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24oKSBjb25zdDsKKwogICAgIHVpbnQ2NF90
IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEOyB9CiAgICAgV2ViQ29yZTo6U2Vzc2lv
bklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbklEOyB9CiAgICAgdm9pZCBz
ZXRTZXNzaW9uSUQoV2ViQ29yZTo6U2Vzc2lvbklEKTsKQEAgLTEwODQsNyArMTA2NCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGNsZWFyV2hlZWxFdmVudFRlc3RUcmlnZ2VyKCk7CiAKIHByaXZhdGU6
Ci0gICAgV2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJveHkmLCB1aW50NjRf
dCBwYWdlSUQsIGNvbnN0IFdlYlBhZ2VDb25maWd1cmF0aW9uJik7CisgICAgV2ViUGFnZVByb3h5
KFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJveHkmLCB1aW50NjRfdCBwYWdlSUQsIFJlZjxBUEk6
OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwog
CiAgICAgdm9pZCB1cGRhdGVWaWV3U3RhdGUoV2ViQ29yZTo6Vmlld1N0YXRlOjpGbGFncyBmbGFn
c1RvVXBkYXRlID0gV2ViQ29yZTo6Vmlld1N0YXRlOjpBbGxGbGFncyk7CkBAIC0xNDg4LDYgKzE0
NjgsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgaGFuZGxlU3luY2hyb25vdXNNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUsIGNvbnN0IFVzZXJEYXRhJiBt
ZXNzYWdlQm9keSwgVXNlckRhdGEmIHJldHVyblVzZXJEYXRhKTsKIAogICAgIFBhZ2VDbGllbnQm
IG1fcGFnZUNsaWVudDsKKyAgICBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4gbV9jb25maWd1
cmF0aW9uOworCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6TG9hZGVyQ2xpZW50PiBtX2xvYWRl
ckNsaWVudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpQb2xpY3lDbGllbnQ+IG1fcG9saWN5
Q2xpZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6Ok5hdmlnYXRpb25DbGllbnQ+IG1fbmF2
aWdhdGlvbkNsaWVudDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcAkocmV2aXNpb24gMTg4MTkwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2lu
Y2x1ZGUgIkFQSUFycmF5LmgiCiAjaW5jbHVkZSAiQVBJRG93bmxvYWRDbGllbnQuaCIKICNpbmNs
dWRlICJBUElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudC5oIgorI2luY2x1ZGUgIkFQSVBhZ2VD
b25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgi
CiAjaW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJE
b3dubG9hZFByb3h5LmgiCkBAIC04MzEsMTggKzgzMiwxOCBAQCBXZWJQcm9jZXNzUHJveHkmIFdl
YlByb2Nlc3NQb29sOjpjcmVhdGVOCiAgICAgcmV0dXJuICpwcm9jZXNzOwogfQogCi1QYXNzUmVm
UHRyPFdlYlBhZ2VQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVu
dCYgcGFnZUNsaWVudCwgV2ViUGFnZUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbikKK1Bhc3NS
ZWZQdHI8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xp
ZW50JiBwYWdlQ2xpZW50LCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJiBwYWdlQ29uZmln
dXJhdGlvbikKIHsKLSAgICBpZiAoIWNvbmZpZ3VyYXRpb24ucGFnZUdyb3VwKQotICAgICAgICBj
b25maWd1cmF0aW9uLnBhZ2VHcm91cCA9IG1fZGVmYXVsdFBhZ2VHcm91cC5wdHIoKTsKLSAgICBp
ZiAoIWNvbmZpZ3VyYXRpb24ucHJlZmVyZW5jZXMpCi0gICAgICAgIGNvbmZpZ3VyYXRpb24ucHJl
ZmVyZW5jZXMgPSAmY29uZmlndXJhdGlvbi5wYWdlR3JvdXAtPnByZWZlcmVuY2VzKCk7Ci0gICAg
aWYgKCFjb25maWd1cmF0aW9uLnZpc2l0ZWRMaW5rUHJvdmlkZXIpCi0gICAgICAgIGNvbmZpZ3Vy
YXRpb24udmlzaXRlZExpbmtQcm92aWRlciA9IG1fdmlzaXRlZExpbmtQcm92aWRlci5wdHIoKTsK
LSAgICBpZiAoIWNvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSkgewotICAgICAgICBBU1NF
UlQoIWNvbmZpZ3VyYXRpb24uc2Vzc2lvbklELmlzVmFsaWQoKSk7Ci0gICAgICAgIGNvbmZpZ3Vy
YXRpb24ud2Vic2l0ZURhdGFTdG9yZSA9ICZtX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRh
U3RvcmUoKTsKLSAgICAgICAgY29uZmlndXJhdGlvbi5zZXNzaW9uSUQgPSBjb25maWd1cmF0aW9u
LnByZWZlcmVuY2VzLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkgPyBTZXNzaW9uSUQ6OmxlZ2Fj
eVByaXZhdGVTZXNzaW9uSUQoKSA6IFNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpOworICAg
IGlmICghcGFnZUNvbmZpZ3VyYXRpb24tPnBhZ2VHcm91cCgpKQorICAgICAgICBwYWdlQ29uZmln
dXJhdGlvbi0+c2V0UGFnZUdyb3VwKG1fZGVmYXVsdFBhZ2VHcm91cC5wdHIoKSk7CisgICAgaWYg
KCFwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKSkKKyAgICAgICAgcGFnZUNvbmZpZ3Vy
YXRpb24tPnNldFByZWZlcmVuY2VzKCZwYWdlQ29uZmlndXJhdGlvbi0+cGFnZUdyb3VwKCktPnBy
ZWZlcmVuY2VzKCkpOworICAgIGlmICghcGFnZUNvbmZpZ3VyYXRpb24tPnZpc2l0ZWRMaW5rUHJv
dmlkZXIoKSkKKyAgICAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFZpc2l0ZWRMaW5rUHJvdmlk
ZXIobV92aXNpdGVkTGlua1Byb3ZpZGVyLnB0cigpKTsKKyAgICBpZiAoIXBhZ2VDb25maWd1cmF0
aW9uLT53ZWJzaXRlRGF0YVN0b3JlKCkpIHsKKyAgICAgICAgQVNTRVJUKCFwYWdlQ29uZmlndXJh
dGlvbi0+c2Vzc2lvbklEKCkuaXNWYWxpZCgpKTsKKyAgICAgICAgcGFnZUNvbmZpZ3VyYXRpb24t
PnNldFdlYnNpdGVEYXRhU3RvcmUobV93ZWJzaXRlRGF0YVN0b3JlLmdldCgpKTsKKyAgICAgICAg
cGFnZUNvbmZpZ3VyYXRpb24tPnNldFNlc3Npb25JRChwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVy
ZW5jZXMoKS0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpID8gU2Vzc2lvbklEOjpsZWdhY3lQcml2
YXRlU2Vzc2lvbklEKCkgOiBTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CiAgICAgfQog
CiAgICAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gcHJvY2VzczsKQEAgLTg1MiwxNCArODUzLDE0
IEBAIFBhc3NSZWZQdHI8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUG9vbDoKICAgICAgICAgaWYg
KG1faGF2ZUluaXRpYWxFbXB0eVByb2Nlc3MpIHsKICAgICAgICAgICAgIHByb2Nlc3MgPSBtX3By
b2Nlc3Nlcy5sYXN0KCk7CiAgICAgICAgICAgICBtX2hhdmVJbml0aWFsRW1wdHlQcm9jZXNzID0g
ZmFsc2U7Ci0gICAgICAgIH0gZWxzZSBpZiAoY29uZmlndXJhdGlvbi5yZWxhdGVkUGFnZSkgewor
ICAgICAgICB9IGVsc2UgaWYgKHBhZ2VDb25maWd1cmF0aW9uLT5yZWxhdGVkUGFnZSgpKSB7CiAg
ICAgICAgICAgICAvLyBTaGFyaW5nIHByb2Nlc3NlcywgZS5nLiB3aGVuIGNyZWF0aW5nIHRoZSBw
YWdlIHZpYSB3aW5kb3cub3BlbigpLgotICAgICAgICAgICAgcHJvY2VzcyA9ICZjb25maWd1cmF0
aW9uLnJlbGF0ZWRQYWdlLT5wcm9jZXNzKCk7CisgICAgICAgICAgICBwcm9jZXNzID0gJnBhZ2VD
b25maWd1cmF0aW9uLT5yZWxhdGVkUGFnZSgpLT5wcm9jZXNzKCk7CiAgICAgICAgIH0gZWxzZQog
ICAgICAgICAgICAgcHJvY2VzcyA9ICZjcmVhdGVOZXdXZWJQcm9jZXNzUmVzcGVjdGluZ1Byb2Nl
c3NDb3VudExpbWl0KCk7CiAgICAgfQogCi0gICAgcmV0dXJuIHByb2Nlc3MtPmNyZWF0ZVdlYlBh
Z2UocGFnZUNsaWVudCwgV1RGOjptb3ZlKGNvbmZpZ3VyYXRpb24pKTsKKyAgICByZXR1cm4gcHJv
Y2Vzcy0+Y3JlYXRlV2ViUGFnZShwYWdlQ2xpZW50LCBXVEY6Om1vdmUocGFnZUNvbmZpZ3VyYXRp
b24pKTsKIH0KIAogRG93bmxvYWRQcm94eSogV2ViUHJvY2Vzc1Bvb2w6OmRvd25sb2FkKFdlYlBh
Z2VQcm94eSogaW5pdGlhdGluZ1BhZ2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCShyZXZpc2lv
biAxODgxOTApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAko
d29ya2luZyBjb3B5KQpAQCAtNzYsNiArNzYsNyBAQCBPQkpDX0NMQVNTIE5TU3RyaW5nOwogbmFt
ZXNwYWNlIEFQSSB7CiBjbGFzcyBEb3dubG9hZENsaWVudDsKIGNsYXNzIExlZ2FjeUNvbnRleHRI
aXN0b3J5Q2xpZW50OworY2xhc3MgUGFnZUNvbmZpZ3VyYXRpb247CiB9CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewpAQCAtODYsNyArODcsNiBAQCBjbGFzcyBXZWJJY29uRGF0YWJhc2U7CiBjbGFzcyBX
ZWJQYWdlR3JvdXA7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiBzdHJ1Y3QgU3RhdGlzdGljc0RhdGE7
Ci1zdHJ1Y3QgV2ViUGFnZUNvbmZpZ3VyYXRpb247CiBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVyczsKICAgICAKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPEFQSTo6RGljdGlvbmFy
eSo+IERpY3Rpb25hcnlDYWxsYmFjazsKQEAgLTE3MSw3ICsxNzEsNyBAQCBwdWJsaWM6CiAKICAg
ICBBUEk6OldlYnNpdGVEYXRhU3RvcmUqIHdlYnNpdGVEYXRhU3RvcmUoKSBjb25zdCB7IHJldHVy
biBtX3dlYnNpdGVEYXRhU3RvcmUuZ2V0KCk7IH0KIAotICAgIFBhc3NSZWZQdHI8V2ViUGFnZVBy
b3h5PiBjcmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmLCBXZWJQYWdlQ29uZmlndXJhdGlvbik7Cisg
ICAgUGFzc1JlZlB0cjxXZWJQYWdlUHJveHk+IGNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYsIFJl
ZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsKIAogICAgIGNvbnN0IFN0cmluZyYgaW5qZWN0
ZWRCdW5kbGVQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9jb25maWd1cmF0aW9uLT5pbmplY3RlZEJ1
bmRsZVBhdGgoKTsgfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmNwcAkocmV2aXNpb24gMTg4MTkwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwNiwxMCArMjA2LDEw
IEBAIFdlYlBhZ2VQcm94eSogV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHUKICAgICByZXR1cm4g
Z2xvYmFsUGFnZU1hcCgpLmdldChwYWdlSUQpOwogfQogCi1SZWY8V2ViUGFnZVByb3h5PiBXZWJQ
cm9jZXNzUHJveHk6OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgY29uc3Qg
V2ViUGFnZUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCitSZWY8V2ViUGFnZVByb3h5PiBX
ZWJQcm9jZXNzUHJveHk6OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgUmVm
PEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYgcGFnZUNvbmZpZ3VyYXRpb24pCiB7CiAgICAgdWlu
dDY0X3QgcGFnZUlEID0gZ2VuZXJhdGVQYWdlSUQoKTsKLSAgICBSZWY8V2ViUGFnZVByb3h5PiB3
ZWJQYWdlID0gV2ViUGFnZVByb3h5OjpjcmVhdGUocGFnZUNsaWVudCwgKnRoaXMsIHBhZ2VJRCwg
Y29uZmlndXJhdGlvbik7CisgICAgUmVmPFdlYlBhZ2VQcm94eT4gd2ViUGFnZSA9IFdlYlBhZ2VQ
cm94eTo6Y3JlYXRlKHBhZ2VDbGllbnQsICp0aGlzLCBwYWdlSUQsIFdURjo6bW92ZShwYWdlQ29u
ZmlndXJhdGlvbikpOwogCiAgICAgbV9wYWdlTWFwLnNldChwYWdlSUQsIHdlYlBhZ2UucHRyKCkp
OwogICAgIGdsb2JhbFBhZ2VNYXAoKS5zZXQocGFnZUlELCB3ZWJQYWdlLnB0cigpKTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgJKHJldmlzaW9uIDE4
ODE5MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAkod29y
a2luZyBjb3B5KQpAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6CiAgICAgV2ViUHJvY2Vzc1Bvb2wm
IHByb2Nlc3NQb29sKCkgeyByZXR1cm4gbV9wcm9jZXNzUG9vbDsgfQogCiAgICAgc3RhdGljIFdl
YlBhZ2VQcm94eSogd2ViUGFnZSh1aW50NjRfdCBwYWdlSUQpOwotICAgIFJlZjxXZWJQYWdlUHJv
eHk+IGNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYsIGNvbnN0IFdlYlBhZ2VDb25maWd1cmF0aW9u
Jik7CisgICAgUmVmPFdlYlBhZ2VQcm94eT4gY3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiwgUmVm
PEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpOwogICAgIHZvaWQgYWRkRXhpc3RpbmdXZWJQYWdl
KFdlYlBhZ2VQcm94eSosIHVpbnQ2NF90IHBhZ2VJRCk7CiAgICAgdm9pZCByZW1vdmVXZWJQYWdl
KHVpbnQ2NF90IHBhZ2VJRCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
QVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwCShyZXZpc2lvbiAxODgxOTApCisr
KyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsMTEgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsK
IAogbmFtZXNwYWNlIEFQSSB7CiAKK1JlZjxQYWdlQ29uZmlndXJhdGlvbj4gUGFnZUNvbmZpZ3Vy
YXRpb246OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGFnZUNvbmZpZ3Vy
YXRpb24pOworfQorCiBQYWdlQ29uZmlndXJhdGlvbjo6UGFnZUNvbmZpZ3VyYXRpb24oKQogewog
fQpAQCAtNDUsNiArNTAsMjkgQEAgUGFnZUNvbmZpZ3VyYXRpb246On5QYWdlQ29uZmlndXJhdGlv
bigpCiB7CiB9CiAKK1JlZjxQYWdlQ29uZmlndXJhdGlvbj4gUGFnZUNvbmZpZ3VyYXRpb246OmNv
cHkoKSBjb25zdAoreworICAgIGF1dG8gY29weSA9IHRoaXMtPmNyZWF0ZSgpOworCisgICAgY29w
eS0+bV9wcm9jZXNzUG9vbCA9IHRoaXMtPm1fcHJvY2Vzc1Bvb2w7CisgICAgY29weS0+bV91c2Vy
Q29udGVudENvbnRyb2xsZXIgPSB0aGlzLT5tX3VzZXJDb250ZW50Q29udHJvbGxlcjsKKyAgICBj
b3B5LT5tX3BhZ2VHcm91cCA9IHRoaXMtPm1fcGFnZUdyb3VwOworICAgIGNvcHktPm1fcHJlZmVy
ZW5jZXMgPSB0aGlzLT5tX3ByZWZlcmVuY2VzOworICAgIGNvcHktPm1fcHJlZmVyZW5jZVZhbHVl
cyA9IHRoaXMtPm1fcHJlZmVyZW5jZVZhbHVlczsKKyAgICBjb3B5LT5tX3JlbGF0ZWRQYWdlID0g
dGhpcy0+bV9yZWxhdGVkUGFnZTsKKyAgICBjb3B5LT5tX3Zpc2l0ZWRMaW5rUHJvdmlkZXIgPSB0
aGlzLT5tX3Zpc2l0ZWRMaW5rUHJvdmlkZXI7CisgICAgY29weS0+bV93ZWJzaXRlRGF0YVN0b3Jl
ID0gdGhpcy0+bV93ZWJzaXRlRGF0YVN0b3JlOworICAgIGNvcHktPm1fc2Vzc2lvbklEID0gdGhp
cy0+bV9zZXNzaW9uSUQ7CisgICAgY29weS0+bV90cmVhdHNTSEExU2lnbmVkQ2VydGlmaWNhdGVz
QXNJbnNlY3VyZSA9IHRoaXMtPm1fdHJlYXRzU0hBMVNpZ25lZENlcnRpZmljYXRlc0FzSW5zZWN1
cmU7CisKKyNpZiBQTEFURk9STShJT1MpCisgICAgY29weS0+bV9hbHdheXNSdW5zQXRGb3JlZ3Jv
dW5kUHJpb3JpdHkgPSB0aGlzLT5tX2Fsd2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eTsKKyNl
bmRpZgorCisgICAgcmV0dXJuIGNvcHk7Cit9CisKKwogV2ViUHJvY2Vzc1Bvb2wqIFBhZ2VDb25m
aWd1cmF0aW9uOjpwcm9jZXNzUG9vbCgpCiB7CiAgICAgcmV0dXJuIG1fcHJvY2Vzc1Bvb2wuZ2V0
KCk7CkBAIC05NSwxNiArMTIzLDM1IEBAIHZvaWQgUGFnZUNvbmZpZ3VyYXRpb246OnNldFJlbGF0
ZWRQYWdlKFcKICAgICBtX3JlbGF0ZWRQYWdlID0gcmVsYXRlZFBhZ2U7CiB9CiAKLVdlYktpdDo6
V2ViUGFnZUNvbmZpZ3VyYXRpb24gUGFnZUNvbmZpZ3VyYXRpb246OndlYlBhZ2VDb25maWd1cmF0
aW9uKCkKKworVmlzaXRlZExpbmtQcm92aWRlciogUGFnZUNvbmZpZ3VyYXRpb246OnZpc2l0ZWRM
aW5rUHJvdmlkZXIoKQogewotICAgIFdlYktpdDo6V2ViUGFnZUNvbmZpZ3VyYXRpb24gY29uZmln
dXJhdGlvbjsKKyAgICByZXR1cm4gbV92aXNpdGVkTGlua1Byb3ZpZGVyLmdldCgpOworfQogCi0g
ICAgY29uZmlndXJhdGlvbi51c2VyQ29udGVudENvbnRyb2xsZXIgPSB1c2VyQ29udGVudENvbnRy
b2xsZXIoKTsKLSAgICBjb25maWd1cmF0aW9uLnBhZ2VHcm91cCA9IHBhZ2VHcm91cCgpOwotICAg
IGNvbmZpZ3VyYXRpb24ucHJlZmVyZW5jZXMgPSBwcmVmZXJlbmNlcygpOwotICAgIGNvbmZpZ3Vy
YXRpb24ucmVsYXRlZFBhZ2UgPSByZWxhdGVkUGFnZSgpOwordm9pZCBQYWdlQ29uZmlndXJhdGlv
bjo6c2V0VmlzaXRlZExpbmtQcm92aWRlcihWaXNpdGVkTGlua1Byb3ZpZGVyKiB2aXNpdGVkTGlu
a1Byb3ZpZGVyKQoreworICAgIG1fdmlzaXRlZExpbmtQcm92aWRlciA9IHZpc2l0ZWRMaW5rUHJv
dmlkZXI7Cit9CisKK0FQSTo6V2Vic2l0ZURhdGFTdG9yZSogUGFnZUNvbmZpZ3VyYXRpb246Ondl
YnNpdGVEYXRhU3RvcmUoKQoreworICAgIHJldHVybiBtX3dlYnNpdGVEYXRhU3RvcmUuZ2V0KCk7
Cit9CiAKLSAgICByZXR1cm4gY29uZmlndXJhdGlvbjsKK3ZvaWQgUGFnZUNvbmZpZ3VyYXRpb246
OnNldFdlYnNpdGVEYXRhU3RvcmUoQVBJOjpXZWJzaXRlRGF0YVN0b3JlKiB3ZWJzaXRlRGF0YVN0
b3JlKQoreworICAgIG1fd2Vic2l0ZURhdGFTdG9yZSA9IHdlYnNpdGVEYXRhU3RvcmU7Cit9CisK
K1dlYkNvcmU6OlNlc3Npb25JRCBQYWdlQ29uZmlndXJhdGlvbjo6c2Vzc2lvbklEKCkKK3sKKyAg
ICByZXR1cm4gbV9zZXNzaW9uSUQ7Cit9CisKK3ZvaWQgUGFnZUNvbmZpZ3VyYXRpb246OnNldFNl
c3Npb25JRChXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQoreworICAgIG1fc2Vzc2lvbklE
ID0gc2Vzc2lvbklEOwogfQogCiB9IC8vIG5hbWVzcGFjZSBBUEkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgJKHJldmlz
aW9uIDE4ODE5MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZp
Z3VyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMjcgKzI3LDMyIEBACiAjZGVmaW5lIEFQ
SVBhZ2VDb25maWd1cmF0aW9uX2gKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUg
IldlYlByZWZlcmVuY2VzU3RvcmUuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Nlc3Npb25JRC5oPgog
I2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7Ci1zdHJ1Y3QgV2Vi
UGFnZUNvbmZpZ3VyYXRpb247Ci1jbGFzcyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTsK
LWNsYXNzIFdlYlByb2Nlc3NQb29sOworY2xhc3MgVmlzaXRlZExpbmtQcm92aWRlcjsKIGNsYXNz
IFdlYlBhZ2VHcm91cDsKLWNsYXNzIFdlYlByZWZlcmVuY2VzOwogY2xhc3MgV2ViUGFnZVByb3h5
OworY2xhc3MgV2ViUHJlZmVyZW5jZXM7CitjbGFzcyBXZWJQcm9jZXNzUG9vbDsKK2NsYXNzIFdl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OwogfQogCiBuYW1lc3BhY2UgQVBJIHsKIAorY2xh
c3MgV2Vic2l0ZURhdGFTdG9yZTsKKwogY2xhc3MgUGFnZUNvbmZpZ3VyYXRpb24gOiBwdWJsaWMg
T2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6OlBhZ2VDb25maWd1cmF0aW9uPiB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZjxQYWdlQ29uZmlndXJhdGlvbj4gY3JlYXRlKCkKLSAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFBhZ2VDb25maWd1cmF0aW9uKTsKLSAgICB9CisgICAgc3Rh
dGljIFJlZjxQYWdlQ29uZmlndXJhdGlvbj4gY3JlYXRlKCk7CisKKyAgICBleHBsaWNpdCBQYWdl
Q29uZmlndXJhdGlvbigpOwogICAgIHZpcnR1YWwgflBhZ2VDb25maWd1cmF0aW9uKCk7CiAKKyAg
ICBSZWY8UGFnZUNvbmZpZ3VyYXRpb24+IGNvcHkoKSBjb25zdDsKKwogICAgIC8vIEZJWE1FOiBU
aGUgY29uZmlndXJhdGlvbiBwcm9wZXJ0aWVzIHNob3VsZCByZXR1cm4gdGhlaXIgZGVmYXVsdCB2
YWx1ZXMKICAgICAvLyByYXRoZXIgdGhhbiBudWxscHRyLgogICAgIApAQCAtNjMsMTkgKzY4LDQ3
IEBAIHB1YmxpYzoKICAgICBXZWJLaXQ6OldlYlByZWZlcmVuY2VzKiBwcmVmZXJlbmNlcygpOwog
ICAgIHZvaWQgc2V0UHJlZmVyZW5jZXMoV2ViS2l0OjpXZWJQcmVmZXJlbmNlcyopOwogCisgICAg
V2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZU1hcCYgcHJlZmVyZW5jZVZhbHVlcygp
IHsgcmV0dXJuIG1fcHJlZmVyZW5jZVZhbHVlczsgfQorCiAgICAgV2ViS2l0OjpXZWJQYWdlUHJv
eHkqIHJlbGF0ZWRQYWdlKCk7CiAgICAgdm9pZCBzZXRSZWxhdGVkUGFnZShXZWJLaXQ6OldlYlBh
Z2VQcm94eSopOwogCi0gICAgV2ViS2l0OjpXZWJQYWdlQ29uZmlndXJhdGlvbiB3ZWJQYWdlQ29u
ZmlndXJhdGlvbigpOworICAgIFdlYktpdDo6VmlzaXRlZExpbmtQcm92aWRlciogdmlzaXRlZExp
bmtQcm92aWRlcigpOworICAgIHZvaWQgc2V0VmlzaXRlZExpbmtQcm92aWRlcihXZWJLaXQ6OlZp
c2l0ZWRMaW5rUHJvdmlkZXIqKTsKKworICAgIFdlYnNpdGVEYXRhU3RvcmUqIHdlYnNpdGVEYXRh
U3RvcmUoKTsKKyAgICB2b2lkIHNldFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZSop
OworCisgICAgV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCgpOworICAgIHZvaWQgc2V0U2Vz
c2lvbklEKFdlYkNvcmU6OlNlc3Npb25JRCk7CisKKyAgICBib29sIHRyZWF0c1NIQTFTaWduZWRD
ZXJ0aWZpY2F0ZXNBc0luc2VjdXJlKCkgeyByZXR1cm4gbV90cmVhdHNTSEExU2lnbmVkQ2VydGlm
aWNhdGVzQXNJbnNlY3VyZTsgfQorICAgIHZvaWQgc2V0VHJlYXRzU0hBMVNpZ25lZENlcnRpZmlj
YXRlc0FzSW5zZWN1cmUoYm9vbCB0cmVhdHNTSEExU2lnbmVkQ2VydGlmaWNhdGVzQXNJbnNlY3Vy
ZSkgeyBtX3RyZWF0c1NIQTFTaWduZWRDZXJ0aWZpY2F0ZXNBc0luc2VjdXJlID0gdHJlYXRzU0hB
MVNpZ25lZENlcnRpZmljYXRlc0FzSW5zZWN1cmU7IH0gCisKKyNpZiBQTEFURk9STShJT1MpCisg
ICAgYm9vbCBhbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHkoKSB7IHJldHVybiBtX2Fsd2F5
c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eTsgfQorICAgIHZvaWQgc2V0QWx3YXlzUnVuc0F0Rm9y
ZWdyb3VuZFByaW9yaXR5KGJvb2wgYWx3YXlzUnVuc0F0Rm9yZWdyb3VuZFByaW9yaXR5KSB7IG1f
YWx3YXlzUnVuc0F0Rm9yZWdyb3VuZFByaW9yaXR5ID0gYWx3YXlzUnVuc0F0Rm9yZWdyb3VuZFBy
aW9yaXR5OyB9IAorI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgUGFnZUNvbmZpZ3VyYXRpb24oKTsK
IAogICAgIFJlZlB0cjxXZWJLaXQ6OldlYlByb2Nlc3NQb29sPiBtX3Byb2Nlc3NQb29sOwogICAg
IFJlZlB0cjxXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5PiBtX3VzZXJDb250
ZW50Q29udHJvbGxlcjsKICAgICBSZWZQdHI8V2ViS2l0OjpXZWJQYWdlR3JvdXA+IG1fcGFnZUdy
b3VwOwogICAgIFJlZlB0cjxXZWJLaXQ6OldlYlByZWZlcmVuY2VzPiBtX3ByZWZlcmVuY2VzOwor
ICAgIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWVNYXAgbV9wcmVmZXJlbmNlVmFs
dWVzOwogICAgIFJlZlB0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4gbV9yZWxhdGVkUGFnZTsKKyAg
ICBSZWZQdHI8V2ViS2l0OjpWaXNpdGVkTGlua1Byb3ZpZGVyPiBtX3Zpc2l0ZWRMaW5rUHJvdmlk
ZXI7CisKKyAgICBSZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4gbV93ZWJzaXRlRGF0YVN0b3JlOwor
ICAgIC8vIEZJWE1FOiBXZSBjdXJyZW50bHkgaGF2ZSB0byBwYXNzIHRoZSBzZXNzaW9uIElEIHNl
cGFyYXRlbHkgaGVyZSB0byBzdXBwb3J0IHRoZSBsZWdhY3kgcHJpdmF0ZSBicm93c2luZyBzZXNz
aW9uLgorICAgIC8vIE9uY2Ugd2UgZ2V0IHJpZCBvZiBpdCB3ZSBzaG91bGQgZ2V0IHJpZCBvZiB0
aGlzIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyIGFzIHdlbGwuCisgICAgV2ViQ29yZTo6U2Vzc2lv
bklEIG1fc2Vzc2lvbklEOworCisgICAgYm9vbCBtX3RyZWF0c1NIQTFTaWduZWRDZXJ0aWZpY2F0
ZXNBc0luc2VjdXJlID0gZmFsc2U7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIGJvb2wgbV9hbHdh
eXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHkgPSBmYWxzZTsKKyNlbmRpZgogfTsKIAogfSAvLyBu
YW1lc3BhY2UgQVBJCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdl
LmNwcAkocmV2aXNpb24gMTg4MTkwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJB
UElOYXZpZ2F0aW9uQWN0aW9uLmgiCiAjaW5jbHVkZSAiQVBJTmF2aWdhdGlvbkNsaWVudC5oIgog
I2luY2x1ZGUgIkFQSU5hdmlnYXRpb25SZXNwb25zZS5oIgorI2luY2x1ZGUgIkFQSVBhZ2VDb25m
aWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiQVBJUG9saWN5Q2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJ
U2Vzc2lvblN0YXRlLmgiCiAjaW5jbHVkZSAiQVBJVUlDbGllbnQuaCIKQEAgLTEyNyw2ICsxMjgs
MTIgQEAgV0tQYWdlR3JvdXBSZWYgV0tQYWdlR2V0UGFnZUdyb3VwKFdLUGFnZQogICAgIHJldHVy
biB0b0FQSSgmdG9JbXBsKHBhZ2VSZWYpLT5wYWdlR3JvdXAoKSk7CiB9CiAKK1dLUGFnZUNvbmZp
Z3VyYXRpb25SZWYgV0tQYWdlQ29weVBhZ2VDb25maWd1cmF0aW9uKFdLUGFnZVJlZiBwYWdlUmVm
KQoreworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IHRvSW1wbChwYWdlUmVmKS0+Y29uZmlndXJh
dGlvbigpLmNvcHkoKTsKKyAgICByZXR1cm4gdG9BUEkoJmNvbmZpZ3VyYXRpb24ubGVha1JlZigp
KTsKK30KKwogdm9pZCBXS1BhZ2VMb2FkVVJMKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1VSTFJlZiBV
UkxSZWYpCiB7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5sb2FkUmVxdWVzdChVUkwoVVJMKCksIHRv
V1RGU3RyaW5nKFVSTFJlZikpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS1BhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tQYWdlLmgJKHJldmlzaW9uIDE4ODE5MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTksOCBAQCBXS19FWFBPUlQg
V0tUeXBlSUQgV0tQYWdlR2V0VHlwZUlEKCk7CiBXS19FWFBPUlQgV0tDb250ZXh0UmVmIFdLUGFn
ZUdldENvbnRleHQoV0tQYWdlUmVmIHBhZ2UpOwogV0tfRVhQT1JUIFdLUGFnZUdyb3VwUmVmIFdL
UGFnZUdldFBhZ2VHcm91cChXS1BhZ2VSZWYgcGFnZSk7CiAKK1dLX0VYUE9SVCBXS1BhZ2VDb25m
aWd1cmF0aW9uUmVmIFdLUGFnZUNvcHlQYWdlQ29uZmlndXJhdGlvbihXS1BhZ2VSZWYgcGFnZSk7
CisKIC8vIFVSTCBSZXF1ZXN0cwogV0tfRVhQT1JUIHZvaWQgV0tQYWdlTG9hZFVSTChXS1BhZ2VS
ZWYgcGFnZSwgV0tVUkxSZWYgdXJsKTsKIFdLX0VYUE9SVCB2b2lkIFdLUGFnZUxvYWRVUkxXaXRo
VXNlckRhdGEoV0tQYWdlUmVmIHBhZ2UsIFdLVVJMUmVmIHVybCwgV0tUeXBlUmVmIHVzZXJEYXRh
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VDb25maWd1cmF0
aW9uUmVmLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tQYWdlQ29uZmlndXJhdGlvblJlZi5jcHAJKHJldmlzaW9uIDE4ODE5MCkKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VDb25maWd1cmF0aW9uUmVmLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTMsMyArOTMsMTMgQEAgdm9pZCBXS1BhZ2VDb25maWd1cmF0aW9uU2V0UmVs
YXRlZFBhZ2UoVwogewogICAgIHRvSW1wbChjb25maWd1cmF0aW9uKS0+c2V0UmVsYXRlZFBhZ2Uo
dG9JbXBsKHJlbGF0ZWRQYWdlKSk7CiB9CisKK1dLV2Vic2l0ZURhdGFTdG9yZVJlZiBXS1BhZ2VD
b25maWd1cmF0aW9uR2V0V2Vic2l0ZURhdGFTdG9yZShXS1BhZ2VDb25maWd1cmF0aW9uUmVmIGNv
bmZpZ3VyYXRpb24pCit7CisgICAgcmV0dXJuIHRvQVBJKHRvSW1wbChjb25maWd1cmF0aW9uKS0+
d2Vic2l0ZURhdGFTdG9yZSgpKTsKK30KKwordm9pZCBXS1BhZ2VDb25maWd1cmF0aW9uU2V0V2Vi
c2l0ZURhdGFTdG9yZShXS1BhZ2VDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24sIFdLV2Vi
c2l0ZURhdGFTdG9yZVJlZiB3ZWJzaXRlRGF0YVN0b3JlKQoreworICAgIHRvSW1wbChjb25maWd1
cmF0aW9uKS0+c2V0V2Vic2l0ZURhdGFTdG9yZSh0b0ltcGwod2Vic2l0ZURhdGFTdG9yZSkpOwor
fQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUNvbmZpZ3VyYXRp
b25SZWYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQ
YWdlQ29uZmlndXJhdGlvblJlZi5oCShyZXZpc2lvbiAxODgxOTApCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlQ29uZmlndXJhdGlvblJlZi5oCSh3b3JraW5nIGNvcHkp
CkBAIC01MSw2ICs1MSw5IEBAIFdLX0VYUE9SVCB2b2lkIFdLUGFnZUNvbmZpZ3VyYXRpb25TZXRQ
cmUKIFdLX0VYUE9SVCBXS1BhZ2VSZWYgV0tQYWdlQ29uZmlndXJhdGlvbkdldFJlbGF0ZWRQYWdl
KFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbik7CiBXS19FWFBPUlQgdm9pZCBX
S1BhZ2VDb25maWd1cmF0aW9uU2V0UmVsYXRlZFBhZ2UoV0tQYWdlQ29uZmlndXJhdGlvblJlZiBj
b25maWd1cmF0aW9uLCBXS1BhZ2VSZWYgcmVsYXRlZFBhZ2UpOwogCitXS19FWFBPUlQgV0tXZWJz
aXRlRGF0YVN0b3JlUmVmIFdLUGFnZUNvbmZpZ3VyYXRpb25HZXRXZWJzaXRlRGF0YVN0b3JlKFdL
UGFnZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbik7CitXS19FWFBPUlQgdm9pZCBXS1Bh
Z2VDb25maWd1cmF0aW9uU2V0V2Vic2l0ZURhdGFTdG9yZShXS1BhZ2VDb25maWd1cmF0aW9uUmVm
IGNvbmZpZ3VyYXRpb24sIFdLV2Vic2l0ZURhdGFTdG9yZVJlZiB3ZWJzaXRlRGF0YVN0b3JlKTsK
KwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCShyZXZpc2lvbiAxODgxOTApCisr
KyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2lmIFdLX0FQSV9FTkFCTEVECiAKICNpbXBvcnQg
IkFQSUZvcm1DbGllbnQuaCIKKyNpbXBvcnQgIkFQSVBhZ2VDb25maWd1cmF0aW9uLmgiCiAjaW1w
b3J0ICJBUElTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbXBvcnQgIkNvbXBsZXRpb25IYW5k
bGVyQ2FsbENoZWNrZXIuaCIKICNpbXBvcnQgIkRpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmgiCkBA
IC0zMDAsMzYgKzMwMSwzOCBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0
KWZyCiAgICAgQ0dSZWN0IGJvdW5kcyA9IHNlbGYuYm91bmRzOwogCiAgICAgV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wgPSAqW19jb25maWd1cmF0aW9uIHByb2Nlc3NQb29sXS0+
X3Byb2Nlc3NQb29sOworICAgIAorICAgIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiBwYWdl
Q29uZmlndXJhdGlvbiA9IEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOwogCi0gICAg
V2ViS2l0OjpXZWJQYWdlQ29uZmlndXJhdGlvbiB3ZWJQYWdlQ29uZmlndXJhdGlvbjsKLSAgICB3
ZWJQYWdlQ29uZmlndXJhdGlvbi5wcmVmZXJlbmNlcyA9IFtfY29uZmlndXJhdGlvbiBwcmVmZXJl
bmNlc10tPl9wcmVmZXJlbmNlcy5nZXQoKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UHJv
Y2Vzc1Bvb2woJnByb2Nlc3NQb29sKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UHJlZmVy
ZW5jZXMoW19jb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXS0+X3ByZWZlcmVuY2VzLmdldCgpKTsK
ICAgICBpZiAoV0tXZWJWaWV3ICpyZWxhdGVkV2ViVmlldyA9IFtfY29uZmlndXJhdGlvbiBfcmVs
YXRlZFdlYlZpZXddKQotICAgICAgICB3ZWJQYWdlQ29uZmlndXJhdGlvbi5yZWxhdGVkUGFnZSA9
IHJlbGF0ZWRXZWJWaWV3LT5fcGFnZS5nZXQoKTsKKyAgICAgICAgcGFnZUNvbmZpZ3VyYXRpb24t
PnNldFJlbGF0ZWRQYWdlKHJlbGF0ZWRXZWJWaWV3LT5fcGFnZS5nZXQoKSk7CiAKLSAgICB3ZWJQ
YWdlQ29uZmlndXJhdGlvbi51c2VyQ29udGVudENvbnRyb2xsZXIgPSBbX2NvbmZpZ3VyYXRpb24g
dXNlckNvbnRlbnRDb250cm9sbGVyXS0+X3VzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmdldCgp
OwotICAgIHdlYlBhZ2VDb25maWd1cmF0aW9uLnZpc2l0ZWRMaW5rUHJvdmlkZXIgPSBbX2NvbmZp
Z3VyYXRpb24gX3Zpc2l0ZWRMaW5rUHJvdmlkZXJdLT5fdmlzaXRlZExpbmtQcm92aWRlci5nZXQo
KTsKLSAgICB3ZWJQYWdlQ29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlID0gJltfY29uZmln
dXJhdGlvbiB3ZWJzaXRlRGF0YVN0b3JlXS0+X3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRh
U3RvcmUoKTsKLSAgICB3ZWJQYWdlQ29uZmlndXJhdGlvbi5zZXNzaW9uSUQgPSB3ZWJQYWdlQ29u
ZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlLT5zZXNzaW9uSUQoKTsKLSAgICB3ZWJQYWdlQ29u
ZmlndXJhdGlvbi50cmVhdHNTSEExU2lnbmVkQ2VydGlmaWNhdGVzQXNJbnNlY3VyZSA9IFtfY29u
ZmlndXJhdGlvbiBfdHJlYXRzU0hBMVNpZ25lZENlcnRpZmljYXRlc0FzSW5zZWN1cmVdOworICAg
IHBhZ2VDb25maWd1cmF0aW9uLT5zZXRVc2VyQ29udGVudENvbnRyb2xsZXIoW19jb25maWd1cmF0
aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0tPl91c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5n
ZXQoKSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFZpc2l0ZWRMaW5rUHJvdmlkZXIoW19j
b25maWd1cmF0aW9uIF92aXNpdGVkTGlua1Byb3ZpZGVyXS0+X3Zpc2l0ZWRMaW5rUHJvdmlkZXIu
Z2V0KCkpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRXZWJzaXRlRGF0YVN0b3JlKFtfY29u
ZmlndXJhdGlvbiB3ZWJzaXRlRGF0YVN0b3JlXS0+X3dlYnNpdGVEYXRhU3RvcmUuZ2V0KCkpOwor
ICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRTZXNzaW9uSUQocGFnZUNvbmZpZ3VyYXRpb24tPndl
YnNpdGVEYXRhU3RvcmUoKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Npb25JRCgpKTsKKyAgICBw
YWdlQ29uZmlndXJhdGlvbi0+c2V0VHJlYXRzU0hBMVNpZ25lZENlcnRpZmljYXRlc0FzSW5zZWN1
cmUoW19jb25maWd1cmF0aW9uIF90cmVhdHNTSEExU2lnbmVkQ2VydGlmaWNhdGVzQXNJbnNlY3Vy
ZV0pOwogCiAgICAgUmVmUHRyPFdlYktpdDo6V2ViUGFnZUdyb3VwPiBwYWdlR3JvdXA7CiAgICAg
TlNTdHJpbmcgKmdyb3VwSWRlbnRpZmllciA9IGNvbmZpZ3VyYXRpb24uX2dyb3VwSWRlbnRpZmll
cjsKICAgICBpZiAoZ3JvdXBJZGVudGlmaWVyLmxlbmd0aCkgewogICAgICAgICBwYWdlR3JvdXAg
PSBXZWJLaXQ6OldlYlBhZ2VHcm91cDo6Y3JlYXRlKGNvbmZpZ3VyYXRpb24uX2dyb3VwSWRlbnRp
Zmllcik7Ci0gICAgICAgIHdlYlBhZ2VDb25maWd1cmF0aW9uLnBhZ2VHcm91cCA9IHBhZ2VHcm91
cC5nZXQoKTsKKyAgICAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFBhZ2VHcm91cChwYWdlR3Jv
dXAuZ2V0KCkpOwogICAgIH0KIAotICAgIHdlYlBhZ2VDb25maWd1cmF0aW9uLnByZWZlcmVuY2VW
YWx1ZXMuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OnN1cHByZXNzZXNJbmNyZW1lbnRh
bFJlbmRlcmluZ0tleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKCEhW19j
b25maWd1cmF0aW9uIHN1cHByZXNzZXNJbmNyZW1lbnRhbFJlbmRlcmluZ10pKTsKKyAgICBwYWdl
Q29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVu
Y2VzS2V5OjpzdXBwcmVzc2VzSW5jcmVtZW50YWxSZW5kZXJpbmdLZXkoKSwgV2ViS2l0OjpXZWJQ
cmVmZXJlbmNlc1N0b3JlOjpWYWx1ZSghIVtfY29uZmlndXJhdGlvbiBzdXBwcmVzc2VzSW5jcmVt
ZW50YWxSZW5kZXJpbmddKSk7CiAKICNpZiBQTEFURk9STShJT1MpCi0gICAgd2ViUGFnZUNvbmZp
Z3VyYXRpb24uYWx3YXlzUnVuc0F0Rm9yZWdyb3VuZFByaW9yaXR5ID0gW19jb25maWd1cmF0aW9u
IF9hbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHldOworICAgIHBhZ2VDb25maWd1cmF0aW9u
LT5zZXRBbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHkoW19jb25maWd1cmF0aW9uIF9hbHdh
eXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHldKTsKIAotICAgIHdlYlBhZ2VDb25maWd1cmF0aW9u
LnByZWZlcmVuY2VWYWx1ZXMuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OmFsbG93c0lu
bGluZU1lZGlhUGxheWJhY2tLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1
ZSghIVtfY29uZmlndXJhdGlvbiBhbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrXSkpOwotICAgIHdl
YlBhZ2VDb25maWd1cmF0aW9uLnByZWZlcmVuY2VWYWx1ZXMuc2V0KFdlYktpdDo6V2ViUHJlZmVy
ZW5jZXNLZXk6OmFsbG93c1BpY3R1cmVJblBpY3R1cmVNZWRpYVBsYXliYWNrS2V5KCksIFdlYktp
dDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoISFbX2NvbmZpZ3VyYXRpb24gYWxsb3dzUGlj
dHVyZUluUGljdHVyZU1lZGlhUGxheWJhY2tdICYmIHNob3VsZEFsbG93UGljdHVyZUluUGljdHVy
ZU1lZGlhUGxheWJhY2soKSkpOwotICAgIHdlYlBhZ2VDb25maWd1cmF0aW9uLnByZWZlcmVuY2VW
YWx1ZXMuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OnJlcXVpcmVzVXNlckdlc3R1cmVG
b3JNZWRpYVBsYXliYWNrS2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUo
ISFbX2NvbmZpZ3VyYXRpb24gcmVxdWlyZXNVc2VyQWN0aW9uRm9yTWVkaWFQbGF5YmFja10pKTsK
KyAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6Oldl
YlByZWZlcmVuY2VzS2V5OjphbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrS2V5KCksIFdlYktpdDo6
V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoISFbX2NvbmZpZ3VyYXRpb24gYWxsb3dzSW5saW5l
TWVkaWFQbGF5YmFja10pKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVl
cygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5OjphbGxvd3NQaWN0dXJlSW5QaWN0dXJl
TWVkaWFQbGF5YmFja0tleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKCEh
W19jb25maWd1cmF0aW9uIGFsbG93c1BpY3R1cmVJblBpY3R1cmVNZWRpYVBsYXliYWNrXSAmJiBz
aG91bGRBbGxvd1BpY3R1cmVJblBpY3R1cmVNZWRpYVBsYXliYWNrKCkpKTsKKyAgICBwYWdlQ29u
ZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2Vz
S2V5OjpyZXF1aXJlc1VzZXJHZXN0dXJlRm9yTWVkaWFQbGF5YmFja0tleSgpLCBXZWJLaXQ6Oldl
YlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKCEhW19jb25maWd1cmF0aW9uIHJlcXVpcmVzVXNlckFj
dGlvbkZvck1lZGlhUGxheWJhY2tdKSk7CiAjZW5kaWYKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExB
WUJBQ0tfVEFSR0VUKQotICAgIHdlYlBhZ2VDb25maWd1cmF0aW9uLnByZWZlcmVuY2VWYWx1ZXMu
c2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OmFsbG93c0FpclBsYXlGb3JNZWRpYVBsYXli
YWNrS2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoISFbX2NvbmZpZ3Vy
YXRpb24gYWxsb3dzQWlyUGxheUZvck1lZGlhUGxheWJhY2tdKSk7CisgICAgcGFnZUNvbmZpZ3Vy
YXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6
YWxsb3dzQWlyUGxheUZvck1lZGlhUGxheWJhY2tLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNl
c1N0b3JlOjpWYWx1ZSghIVtfY29uZmlndXJhdGlvbiBhbGxvd3NBaXJQbGF5Rm9yTWVkaWFQbGF5
YmFja10pKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtMzM5LDcgKzM0Miw3IEBA
IC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihDR1JlY3QpZnIKIAogICAgIFtzZWxmIGFk
ZFN1YnZpZXc6X3Njcm9sbFZpZXcuZ2V0KCldOwogCi0gICAgX2NvbnRlbnRWaWV3ID0gYWRvcHRO
UyhbW1dLQ29udGVudFZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Ym91bmRzIHByb2Nlc3NQb29s
OnByb2Nlc3NQb29sIGNvbmZpZ3VyYXRpb246V1RGOjptb3ZlKHdlYlBhZ2VDb25maWd1cmF0aW9u
KSB3ZWJWaWV3OnNlbGZdKTsKKyAgICBfY29udGVudFZpZXcgPSBhZG9wdE5TKFtbV0tDb250ZW50
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpib3VuZHMgcHJvY2Vzc1Bvb2w6cHJvY2Vzc1Bvb2wg
Y29uZmlndXJhdGlvbjpXVEY6Om1vdmUocGFnZUNvbmZpZ3VyYXRpb24pIHdlYlZpZXc6c2VsZl0p
OwogCiAgICAgX3BhZ2UgPSBbX2NvbnRlbnRWaWV3IHBhZ2VdOwogICAgIF9wYWdlLT5zZXREZXZp
Y2VPcmllbnRhdGlvbihkZXZpY2VPcmllbnRhdGlvbigpKTsKQEAgLTM2Nyw3ICszNzAsNyBAQCAt
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyCiAjZW5kaWYKIAogI2lmIFBM
QVRGT1JNKE1BQykKLSAgICBfd2tWaWV3ID0gYWRvcHROUyhbW1dLVmlldyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpib3VuZHMgcHJvY2Vzc1Bvb2w6cHJvY2Vzc1Bvb2wgY29uZmlndXJhdGlvbjpXVEY6
Om1vdmUod2ViUGFnZUNvbmZpZ3VyYXRpb24pIHdlYlZpZXc6c2VsZl0pOworICAgIF93a1ZpZXcg
PSBhZG9wdE5TKFtbV0tWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOmJvdW5kcyBwcm9jZXNzUG9v
bDpwcm9jZXNzUG9vbCBjb25maWd1cmF0aW9uOldURjo6bW92ZShwYWdlQ29uZmlndXJhdGlvbikg
d2ViVmlldzpzZWxmXSk7CiAgICAgW3NlbGYgYWRkU3Vidmlldzpfd2tWaWV3LmdldCgpXTsKICAg
ICBfcGFnZSA9IFdlYktpdDo6dG9JbXBsKFtfd2tWaWV3IHBhZ2VSZWZdKTsKIApJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4
dC5jcHAJKHJldmlzaW9uIDE4ODE5MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYkNvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw2ICsyMSw3IEBA
CiAjaW5jbHVkZSAiV2ViS2l0V2ViQ29udGV4dC5oIgogCiAjaW5jbHVkZSAiQVBJRG93bmxvYWRD
bGllbnQuaCIKKyNpbmNsdWRlICJBUElQYWdlQ29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIkFQ
SVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIkFQSVN0cmluZy5oIgogI2lu
Y2x1ZGUgIlRleHRDaGVja2VyLmgiCkBAIC0xMzE1LDEzICsxMzE2LDE0IEBAIHZvaWQgd2Via2l0
V2ViQ29udGV4dERpZEZpbmlzaExvYWRpbmdDdXMKIHZvaWQgd2Via2l0V2ViQ29udGV4dENyZWF0
ZVBhZ2VGb3JXZWJWaWV3KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcsIFdlYktpdFVzZXJDb250ZW50TWFuYWdlciogdXNlckNvbnRlbnRNYW5hZ2VyLCBX
ZWJLaXRXZWJWaWV3KiByZWxhdGVkVmlldykKIHsKICAgICBXZWJLaXRXZWJWaWV3QmFzZSogd2Vi
Vmlld0Jhc2UgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3ZWJWaWV3KTsKLSAgICBXZWJQYWdlQ29u
ZmlndXJhdGlvbiB3ZWJQYWdlQ29uZmlndXJhdGlvbjsKLSAgICB3ZWJQYWdlQ29uZmlndXJhdGlv
bi5wcmVmZXJlbmNlcyA9IHdlYmtpdFNldHRpbmdzR2V0UHJlZmVyZW5jZXMod2Via2l0X3dlYl92
aWV3X2dldF9zZXR0aW5ncyh3ZWJWaWV3KSk7Ci0gICAgd2ViUGFnZUNvbmZpZ3VyYXRpb24ucmVs
YXRlZFBhZ2UgPSByZWxhdGVkVmlldyA/IHdlYmtpdFdlYlZpZXdCYXNlR2V0UGFnZShXRUJLSVRf
V0VCX1ZJRVdfQkFTRShyZWxhdGVkVmlldykpIDogbnVsbHB0cjsKLSAgICB3ZWJQYWdlQ29uZmln
dXJhdGlvbi51c2VyQ29udGVudENvbnRyb2xsZXIgPSB1c2VyQ29udGVudE1hbmFnZXIgPyB3ZWJr
aXRVc2VyQ29udGVudE1hbmFnZXJHZXRVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSh1c2VyQ29u
dGVudE1hbmFnZXIpIDogbnVsbHB0cjsKLSAgICB3ZWJQYWdlQ29uZmlndXJhdGlvbi53ZWJzaXRl
RGF0YVN0b3JlID0gJndlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckdldERhdGFTdG9yZShjb250ZXh0
LT5wcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpOwotICAgIHdlYlBhZ2VDb25maWd1cmF0
aW9uLnNlc3Npb25JRCA9IHdlYlBhZ2VDb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUtPnNl
c3Npb25JRCgpOwotICAgIHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlV2ViUGFnZSh3ZWJWaWV3QmFz
ZSwgY29udGV4dC0+cHJpdi0+Y29udGV4dC5nZXQoKSwgV1RGOjptb3ZlKHdlYlBhZ2VDb25maWd1
cmF0aW9uKSk7CisKKyAgICBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4gcGFnZUNvbmZpZ3Vy
YXRpb24gPSBBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKKyAgICBwYWdlQ29uZmln
dXJhdGlvbi0+c2V0UHJlZmVyZW5jZXMod2Via2l0U2V0dGluZ3NHZXRQcmVmZXJlbmNlcyh3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKHdlYlZpZXcpKSk7CisgICAgcGFnZUNvbmZpZ3VyYXRp
b24tPnNldFJlbGF0ZWRQYWdlKHJlbGF0ZWRWaWV3ID8gd2Via2l0V2ViVmlld0Jhc2VHZXRQYWdl
KFdFQktJVF9XRUJfVklFV19CQVNFKHJlbGF0ZWRWaWV3KSkgOiBudWxscHRyKTsKKyAgICBwYWdl
Q29uZmlndXJhdGlvbi0+c2V0VXNlckNvbnRlbnRDb250cm9sbGVyKHVzZXJDb250ZW50TWFuYWdl
ciA/IHdlYmtpdFVzZXJDb250ZW50TWFuYWdlckdldFVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
KHVzZXJDb250ZW50TWFuYWdlcikgOiBudWxscHRyKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+
c2V0V2Vic2l0ZURhdGFTdG9yZSgmd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyR2V0RGF0YVN0b3Jl
KGNvbnRleHQtPnByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpOworICAgIHBhZ2VDb25m
aWd1cmF0aW9uLT5zZXRTZXNzaW9uSUQod2ViUGFnZUNvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFT
dG9yZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2Vzc2lvbklEKCkpOworICAgIHdlYmtpdFdlYlZp
ZXdCYXNlQ3JlYXRlV2ViUGFnZSh3ZWJWaWV3QmFzZSwgY29udGV4dC0+cHJpdi0+Y29udGV4dC5n
ZXQoKSwgV1RGOjptb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7CiAKICAgICBXZWJQYWdlUHJveHkq
IHBhZ2UgPSB3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2Uod2ViVmlld0Jhc2UpOwogICAgIGNvbnRl
eHQtPnByaXYtPndlYlZpZXdzLnNldChwYWdlLT5wYWdlSUQoKSwgd2ViVmlldyk7CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
d0Jhc2UuY3BwCShyZXZpc2lvbiAxODgxOTApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5
LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3QmFzZS5o
IgogCisjaW5jbHVkZSAiQVBJUGFnZUNvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJEcmF3aW5n
QXJlYVByb3h5SW1wbC5oIgogI2luY2x1ZGUgIklucHV0TWV0aG9kRmlsdGVyLmgiCiAjaW5jbHVk
ZSAiS2V5QmluZGluZ1RyYW5zbGF0b3IuaCIKQEAgLTEwNDQsMTIgKzEwNDUsMTMgQEAgc3RhdGlj
IHZvaWQgd2Via2l0X3dlYl92aWV3X2Jhc2VfY2xhc3NfaQogV2ViS2l0V2ViVmlld0Jhc2UqIHdl
YmtpdFdlYlZpZXdCYXNlQ3JlYXRlKFdlYlByb2Nlc3NQb29sKiBjb250ZXh0LCBXZWJQcmVmZXJl
bmNlcyogcHJlZmVyZW5jZXMsIFdlYlBhZ2VHcm91cCogcGFnZUdyb3VwLCBXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eSogdXNlckNvbnRlbnRDb250cm9sbGVyLCBXZWJQYWdlUHJveHkqIHJl
bGF0ZWRQYWdlKQogewogICAgIFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZSA9
IFdFQktJVF9XRUJfVklFV19CQVNFKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfVklFV19C
QVNFLCBudWxscHRyKSk7Ci0gICAgV2ViUGFnZUNvbmZpZ3VyYXRpb24gd2ViUGFnZUNvbmZpZ3Vy
YXRpb247Ci0gICAgd2ViUGFnZUNvbmZpZ3VyYXRpb24ucHJlZmVyZW5jZXMgPSBwcmVmZXJlbmNl
czsKLSAgICB3ZWJQYWdlQ29uZmlndXJhdGlvbi5wYWdlR3JvdXAgPSBwYWdlR3JvdXA7Ci0gICAg
d2ViUGFnZUNvbmZpZ3VyYXRpb24ucmVsYXRlZFBhZ2UgPSByZWxhdGVkUGFnZTsKLSAgICB3ZWJQ
YWdlQ29uZmlndXJhdGlvbi51c2VyQ29udGVudENvbnRyb2xsZXIgPSB1c2VyQ29udGVudENvbnRy
b2xsZXI7Ci0gICAgd2Via2l0V2ViVmlld0Jhc2VDcmVhdGVXZWJQYWdlKHdlYmtpdFdlYlZpZXdC
YXNlLCBjb250ZXh0LCBXVEY6Om1vdmUod2ViUGFnZUNvbmZpZ3VyYXRpb24pKTsKKworICAgIFJl
ZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiBwYWdlQ29uZmlndXJhdGlvbiA9IEFQSTo6UGFnZUNv
bmZpZ3VyYXRpb246OmNyZWF0ZSgpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRQcmVmZXJl
bmNlcyhwcmVmZXJlbmNlcyk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFBhZ2VHcm91cChw
YWdlR3JvdXApOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRSZWxhdGVkUGFnZShyZWxhdGVk
UGFnZSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFVzZXJDb250ZW50Q29udHJvbGxlcih1
c2VyQ29udGVudENvbnRyb2xsZXIpOworICAgIHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlV2ViUGFn
ZSh3ZWJraXRXZWJWaWV3QmFzZSwgY29udGV4dCwgV1RGOjptb3ZlKHBhZ2VDb25maWd1cmF0aW9u
KSk7CiAgICAgcmV0dXJuIHdlYmtpdFdlYlZpZXdCYXNlOwogfQogCkBAIC0xMDcwLDcgKzEwNzIs
NyBAQCBzdGF0aWMgdm9pZCBkZXZpY2VTY2FsZUZhY3RvckNoYW5nZWQoV2ViCiB9CiAjZW5kaWYg
Ly8gSEFWRShHVEtfU0NBTEVfRkFDVE9SKQogCi12b2lkIHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRl
V2ViUGFnZShXZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2UsIFdlYlByb2Nlc3NQ
b29sKiBjb250ZXh0LCBXZWJQYWdlQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24pCit2b2lk
IHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlV2ViUGFnZShXZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0
V2ViVmlld0Jhc2UsIFdlYlByb2Nlc3NQb29sKiBjb250ZXh0LCBSZWY8QVBJOjpQYWdlQ29uZmln
dXJhdGlvbj4mJiBjb25maWd1cmF0aW9uKQogewogICAgIFdlYktpdFdlYlZpZXdCYXNlUHJpdmF0
ZSogcHJpdiA9IHdlYmtpdFdlYlZpZXdCYXNlLT5wcml2OwogICAgIHByaXYtPnBhZ2VQcm94eSA9
IGNvbnRleHQtPmNyZWF0ZVdlYlBhZ2UoKnByaXYtPnBhZ2VDbGllbnQsIFdURjo6bW92ZShjb25m
aWd1cmF0aW9uKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3QmFzZVByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaAkocmV2aXNpb24gMTg4MTkw
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2VQ
cml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAKIFdlYktpdFdlYlZpZXdC
YXNlKiB3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZShXZWJLaXQ6OldlYlByb2Nlc3NQb29sKiwgV2Vi
S2l0OjpXZWJQcmVmZXJlbmNlcyosIFdlYktpdDo6V2ViUGFnZUdyb3VwKiwgV2ViS2l0OjpXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eSosIFdlYktpdDo6V2ViUGFnZVByb3h5Kik7CiBHdGtJ
TUNvbnRleHQqIHdlYmtpdFdlYlZpZXdCYXNlR2V0SU1Db250ZXh0KFdlYktpdFdlYlZpZXdCYXNl
Kik7CiBXZWJLaXQ6OldlYlBhZ2VQcm94eSogd2Via2l0V2ViVmlld0Jhc2VHZXRQYWdlKFdlYktp
dFdlYlZpZXdCYXNlKik7Ci12b2lkIHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlV2ViUGFnZShXZWJL
aXRXZWJWaWV3QmFzZSosIFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wqLCBXZWJLaXQ6OldlYlBhZ2VD
b25maWd1cmF0aW9uJiYpOwordm9pZCB3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZVdlYlBhZ2UoV2Vi
S2l0V2ViVmlld0Jhc2UqLCBXZWJLaXQ6OldlYlByb2Nlc3NQb29sKiwgUmVmPEFQSTo6UGFnZUNv
bmZpZ3VyYXRpb24+JiYpOwogdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVNldFRvb2x0aXBUZXh0KFdl
YktpdFdlYlZpZXdCYXNlKiwgY29uc3QgY2hhciopOwogdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVNl
dFRvb2x0aXBBcmVhKFdlYktpdFdlYlZpZXdCYXNlKiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYp
Owogdm9pZCB3ZWJraXRXZWJWaWV3QmFzZUZvcndhcmROZXh0S2V5RXZlbnQoV2ViS2l0V2ViVmll
d0Jhc2UqKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YnNpdGVEYXRhTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmNwcAkocmV2aXNpb24gMTg4MTkw
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vic2l0ZURhdGFN
YW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQCBlbnVtIHsKIH07CiAK
IHN0cnVjdCBfV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyUHJpdmF0ZSB7Ci0gICAgUmVmUHRyPFdl
YnNpdGVEYXRhU3RvcmU+IHdlYnNpdGVEYXRhU3RvcmU7CisgICAgUmVmUHRyPEFQSTo6V2Vic2l0
ZURhdGFTdG9yZT4gd2Vic2l0ZURhdGFTdG9yZTsKICAgICBHVW5pcXVlUHRyPGNoYXI+IGJhc2VE
YXRhRGlyZWN0b3J5OwogICAgIEdVbmlxdWVQdHI8Y2hhcj4gYmFzZUNhY2hlRGlyZWN0b3J5Owog
ICAgIEdVbmlxdWVQdHI8Y2hhcj4gbG9jYWxTdG9yYWdlRGlyZWN0b3J5OwpAQCAtMjk5LDEyICsy
OTksMTIgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyXwogV2ViS2l0
V2Vic2l0ZURhdGFNYW5hZ2VyKiB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJDcmVhdGUoV2Vic2l0
ZURhdGFTdG9yZTo6Q29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24pCiB7CiAgICAgV2ViS2l0
V2Vic2l0ZURhdGFNYW5hZ2VyKiBtYW5hZ2VyID0gV0VCS0lUX1dFQlNJVEVfREFUQV9NQU5BR0VS
KGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJTSVRFX0RBVEFfTUFOQUdFUiwgbnVsbHB0cikp
OwotICAgIG1hbmFnZXItPnByaXYtPndlYnNpdGVEYXRhU3RvcmUgPSBXZWJzaXRlRGF0YVN0b3Jl
OjpjcmVhdGUoV1RGOjptb3ZlKGNvbmZpZ3VyYXRpb24pKTsKKyAgICBtYW5hZ2VyLT5wcml2LT53
ZWJzaXRlRGF0YVN0b3JlID0gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGUoV1RGOjptb3Zl
KGNvbmZpZ3VyYXRpb24pKTsKIAogICAgIHJldHVybiBtYW5hZ2VyOwogfQogCi1XZWJzaXRlRGF0
YVN0b3JlJiB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJHZXREYXRhU3RvcmUoV2ViS2l0V2Vic2l0
ZURhdGFNYW5hZ2VyKiBtYW5hZ2VyKQorQVBJOjpXZWJzaXRlRGF0YVN0b3JlJiB3ZWJraXRXZWJz
aXRlRGF0YU1hbmFnZXJHZXREYXRhU3RvcmUoV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKiBtYW5h
Z2VyKQogewogICAgIFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlclByaXZhdGUqIHByaXYgPSBtYW5h
Z2VyLT5wcml2OwogICAgIGlmICghcHJpdi0+d2Vic2l0ZURhdGFTdG9yZSkgewpAQCAtMzE4LDcg
KzMxOCw3IEBAIFdlYnNpdGVEYXRhU3RvcmUmIHdlYmtpdFdlYnNpdGVEYXRhTWFuYWcKICAgICAg
ICAgY29uZmlndXJhdGlvbi53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9ICFwcml2LT53ZWJTUUxE
aXJlY3RvcnkgPwogICAgICAgICAgICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0V2Vi
U1FMRGF0YWJhc2VEaXJlY3RvcnkoKSA6IFdlYkNvcmU6OmZpbGVuYW1lVG9TdHJpbmcocHJpdi0+
d2ViU1FMRGlyZWN0b3J5LmdldCgpKTsKICAgICAgICAgY29uZmlndXJhdGlvbi5tZWRpYUtleXNT
dG9yYWdlRGlyZWN0b3J5ID0gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFLZXlz
U3RvcmFnZURpcmVjdG9yeSgpOwotICAgICAgICBwcml2LT53ZWJzaXRlRGF0YVN0b3JlID0gV2Vi
c2l0ZURhdGFTdG9yZTo6Y3JlYXRlKFdURjo6bW92ZShjb25maWd1cmF0aW9uKSk7CisgICAgICAg
IHByaXYtPndlYnNpdGVEYXRhU3RvcmUgPSBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZShX
VEY6Om1vdmUoY29uZmlndXJhdGlvbikpOwogICAgIH0KIAogICAgIHJldHVybiAqcHJpdi0+d2Vi
c2l0ZURhdGFTdG9yZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYnNpdGVEYXRhTWFuYWdlclByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJQcml2YXRlLmgJ
KHJldmlzaW9uIDE4ODE5MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYnNpdGVEYXRhTWFuYWdlclByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjAsMTAg
KzIwLDExIEBACiAjaWZuZGVmIFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlclByaXZhdGVfaAogI2Rl
ZmluZSBXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJQcml2YXRlX2gKIAorI2luY2x1ZGUgIkFQSVdl
YnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlICJXZWJLaXRQcml2YXRlLmgiCiAjaW5jbHVkZSAi
V2Vic2l0ZURhdGFTdG9yZS5oIgogCiBXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIqIHdlYmtpdFdl
YnNpdGVEYXRhTWFuYWdlckNyZWF0ZShXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3Vy
YXRpb24mJik7Ci1XZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUmIHdlYmtpdFdlYnNpdGVEYXRhTWFu
YWdlckdldERhdGFTdG9yZShXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIqKTsKK0FQSTo6V2Vic2l0
ZURhdGFTdG9yZSYgd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyR2V0RGF0YVN0b3JlKFdlYktpdFdl
YnNpdGVEYXRhTWFuYWdlciopOwogCiAjZW5kaWYgLy8gV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2Vy
UHJpdmF0ZV9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2lvcy9XS1ZpZXdJ
T1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9pb3MvV0tW
aWV3SU9TLm1tCShyZXZpc2lvbiAxODgxOTApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2lvcy9XS1ZpZXdJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTIyNSwxMSArMjI1LDEyIEBA
IC0gKHZvaWQpX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aENvbnRleHQKIAogICAgIFtzZWxmIGFk
ZFN1YnZpZXc6X3Njcm9sbFZpZXcuZ2V0KCldOwogCi0gICAgV2ViS2l0OjpXZWJQYWdlQ29uZmln
dXJhdGlvbiB3ZWJQYWdlQ29uZmlndXJhdGlvbjsKLSAgICB3ZWJQYWdlQ29uZmlndXJhdGlvbi5w
YWdlR3JvdXAgPSB0b0ltcGwocGFnZUdyb3VwUmVmKTsKLSAgICB3ZWJQYWdlQ29uZmlndXJhdGlv
bi5yZWxhdGVkUGFnZSA9IHRvSW1wbChyZWxhdGVkUGFnZSk7CisgICAgUmVmPEFQSTo6UGFnZUNv
bmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpjcmVh
dGUoKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRQcm9jZXNzUG9vbCh0b0ltcGwoY29udGV4dFJl
ZikpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldFBhZ2VHcm91cCh0b0ltcGwocGFnZUdyb3VwUmVm
KSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0UmVsYXRlZFBhZ2UodG9JbXBsKHJlbGF0ZWRQYWdl
KSk7CiAKLSAgICBfY29udGVudFZpZXcgPSBhZG9wdE5TKFtbV0tDb250ZW50VmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpib3VuZHMgcHJvY2Vzc1Bvb2w6KnRvSW1wbChjb250ZXh0UmVmKSBjb25m
aWd1cmF0aW9uOldURjo6bW92ZSh3ZWJQYWdlQ29uZmlndXJhdGlvbikgd2tWaWV3OnNlbGZdKTsK
KyAgICBfY29udGVudFZpZXcgPSBhZG9wdE5TKFtbV0tDb250ZW50VmlldyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpib3VuZHMgcHJvY2Vzc1Bvb2w6KnRvSW1wbChjb250ZXh0UmVmKSBjb25maWd1cmF0
aW9uOldURjo6bW92ZShjb25maWd1cmF0aW9uKSB3a1ZpZXc6c2VsZl0pOwogCiAgICAgW1tfY29u
dGVudFZpZXcgbGF5ZXJdIHNldEFuY2hvclBvaW50OkNHUG9pbnRaZXJvXTsKICAgICBbX2NvbnRl
bnRWaWV3IHNldEZyYW1lOmJvdW5kc107CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL21hYy9XS1ZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9tYWMvV0tWaWV3Lm1tCShyZXZpc2lvbiAxODgxOTApCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTM3NDQsNyArMzc0
NCw3IEBAIC0gKHZvaWQpX3NldFByaW1hcnlUcmFja2luZ0FyZWE6KE5TVHJhY2sKICAgICBbc2Vs
ZiBhZGRUcmFja2luZ0FyZWE6dHJhY2tpbmdBcmVhXTsKIH0KIAotLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSBwcm9jZXNzUG9vbDooV2ViUHJvY2Vzc1Bvb2wmKXBy
b2Nlc3NQb29sIGNvbmZpZ3VyYXRpb246KFdlYlBhZ2VDb25maWd1cmF0aW9uKXdlYlBhZ2VDb25m
aWd1cmF0aW9uIHdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcKKy0gKGluc3RhbmNldHlwZSlp
bml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUgcHJvY2Vzc1Bvb2w6KFdlYlByb2Nlc3NQb29sJilw
cm9jZXNzUG9vbCBjb25maWd1cmF0aW9uOihSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJilj
b25maWd1cmF0aW9uIHdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcKIHsKICAgICBzZWxmID0g
W3N1cGVyIGluaXRXaXRoRnJhbWU6ZnJhbWVdOwogICAgIGlmICghc2VsZikKQEAgLTM3NjYsNyAr
Mzc2Niw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihOU1JlY3QpZnIKICAgICBb
c2VsZiBhZGRUcmFja2luZ0FyZWE6X2RhdGEtPl9wcmltYXJ5VHJhY2tpbmdBcmVhLmdldCgpXTsK
IAogICAgIF9kYXRhLT5fcGFnZUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZUNsaWVudElt
cGw+KHNlbGYsIHdlYlZpZXcpOwotICAgIF9kYXRhLT5fcGFnZSA9IHByb2Nlc3NQb29sLmNyZWF0
ZVdlYlBhZ2UoKl9kYXRhLT5fcGFnZUNsaWVudCwgV1RGOjptb3ZlKHdlYlBhZ2VDb25maWd1cmF0
aW9uKSk7CisgICAgX2RhdGEtPl9wYWdlID0gcHJvY2Vzc1Bvb2wuY3JlYXRlV2ViUGFnZSgqX2Rh
dGEtPl9wYWdlQ2xpZW50LCBXVEY6Om1vdmUoY29uZmlndXJhdGlvbikpOwogICAgIF9kYXRhLT5f
cGFnZS0+c2V0QWRkc1Zpc2l0ZWRMaW5rcyhwcm9jZXNzUG9vbC5oaXN0b3J5Q2xpZW50KCkuYWRk
c1Zpc2l0ZWRMaW5rcygpKTsKIAogICAgIF9kYXRhLT5fcGFnZS0+c2V0SW50cmluc2ljRGV2aWNl
U2NhbGVGYWN0b3IoW3NlbGYgX2ludHJpbnNpY0RldmljZVNjYWxlRmFjdG9yXSk7CkBAIC0zOTk0
LDE5ICszOTk0LDIwIEBAIC0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSBjb250ZXgK
IAogLSAoaWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lIGNvbnRleHRSZWY6KFdLQ29udGV4
dFJlZiljb250ZXh0UmVmIHBhZ2VHcm91cFJlZjooV0tQYWdlR3JvdXBSZWYpcGFnZUdyb3VwUmVm
IHJlbGF0ZWRUb1BhZ2U6KFdLUGFnZVJlZilyZWxhdGVkUGFnZQogewotICAgIFdlYlBhZ2VDb25m
aWd1cmF0aW9uIHdlYlBhZ2VDb25maWd1cmF0aW9uOwotICAgIHdlYlBhZ2VDb25maWd1cmF0aW9u
LnBhZ2VHcm91cCA9IHRvSW1wbChwYWdlR3JvdXBSZWYpOwotICAgIHdlYlBhZ2VDb25maWd1cmF0
aW9uLnJlbGF0ZWRQYWdlID0gdG9JbXBsKHJlbGF0ZWRQYWdlKTsKKyAgICBSZWY8QVBJOjpQYWdl
Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OmNy
ZWF0ZSgpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldFByb2Nlc3NQb29sKHRvSW1wbChjb250ZXh0
UmVmKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0UGFnZUdyb3VwKHRvSW1wbChwYWdlR3JvdXBS
ZWYpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRSZWxhdGVkUGFnZSh0b0ltcGwocmVsYXRlZFBh
Z2UpKTsKIAotICAgIHJldHVybiBbc2VsZiBpbml0V2l0aEZyYW1lOmZyYW1lIHByb2Nlc3NQb29s
Oip0b0ltcGwoY29udGV4dFJlZikgY29uZmlndXJhdGlvbjp3ZWJQYWdlQ29uZmlndXJhdGlvbiB3
ZWJWaWV3Om5pbF07CisgICAgcmV0dXJuIFtzZWxmIGluaXRXaXRoRnJhbWU6ZnJhbWUgcHJvY2Vz
c1Bvb2w6KnRvSW1wbChjb250ZXh0UmVmKSBjb25maWd1cmF0aW9uOldURjo6bW92ZShjb25maWd1
cmF0aW9uKSB3ZWJWaWV3Om5pbF07CiB9CiAKLS0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVjdClm
cmFtZSBjb25maWd1cmF0aW9uUmVmOihXS1BhZ2VDb25maWd1cmF0aW9uUmVmKWNvbmZpZ3VyYXRp
b24KKy0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSBjb25maWd1cmF0aW9uUmVmOihX
S1BhZ2VDb25maWd1cmF0aW9uUmVmKWNvbmZpZ3VyYXRpb25SZWYKIHsKLSAgICBhdXRvJiBwcm9j
ZXNzUG9vbCA9ICp0b0ltcGwoY29uZmlndXJhdGlvbiktPnByb2Nlc3NQb29sKCk7Ci0gICAgYXV0
byB3ZWJQYWdlQ29uZmlndXJhdGlvbiA9IHRvSW1wbChjb25maWd1cmF0aW9uKS0+d2ViUGFnZUNv
bmZpZ3VyYXRpb24oKTsKKyAgICBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4gY29uZmlndXJh
dGlvbiA9ICp0b0ltcGwoY29uZmlndXJhdGlvblJlZik7CisgICAgYXV0byYgcHJvY2Vzc1Bvb2wg
PSAqY29uZmlndXJhdGlvbi0+cHJvY2Vzc1Bvb2woKTsKIAotICAgIHJldHVybiBbc2VsZiBpbml0
V2l0aEZyYW1lOmZyYW1lIHByb2Nlc3NQb29sOnByb2Nlc3NQb29sIGNvbmZpZ3VyYXRpb246d2Vi
UGFnZUNvbmZpZ3VyYXRpb24gd2ViVmlldzpuaWxdOworICAgIHJldHVybiBbc2VsZiBpbml0V2l0
aEZyYW1lOmZyYW1lIHByb2Nlc3NQb29sOnByb2Nlc3NQb29sIGNvbmZpZ3VyYXRpb246V1RGOjpt
b3ZlKGNvbmZpZ3VyYXRpb24pIHdlYlZpZXc6bmlsXTsKIH0KIAogLSAoQk9PTCl3YW50c1VwZGF0
ZUxheWVyCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXdJbnRl
cm5hbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dL
Vmlld0ludGVybmFsLmgJKHJldmlzaW9uIDE4ODE5MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvbWFjL1dLVmlld0ludGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4
LDcgQEAKIAogbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBPYmplY3Q7CitjbGFzcyBQYWdlQ29uZmln
dXJhdGlvbjsKIH0KIAogbmFtZXNwYWNlIElQQyB7CkBAIC01OCw3ICs1OSw2IEBAIGNsYXNzIFZp
ZXdTbmFwc2hvdDsKIGNsYXNzIFdlYlByb2Nlc3NQb29sOwogc3RydWN0IENvbG9yU3BhY2VEYXRh
Owogc3RydWN0IEVkaXRvclN0YXRlOwotc3RydWN0IFdlYlBhZ2VDb25maWd1cmF0aW9uOwogfQog
CiBAY2xhc3MgV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcjsKQEAgLTY4LDkgKzY4LDcgQEAg
c3RydWN0IFdlYlBhZ2VDb25maWd1cmF0aW9uOwogI2VuZGlmCiAKIEBpbnRlcmZhY2UgV0tWaWV3
ICgpCi0jaWYgV0tfQVBJX0VOQUJMRUQKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihD
R1JlY3QpZnJhbWUgcHJvY2Vzc1Bvb2w6KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmKXByb2Nlc3NQ
b29sIGNvbmZpZ3VyYXRpb246KFdlYktpdDo6V2ViUGFnZUNvbmZpZ3VyYXRpb24pd2ViUGFnZUNv
bmZpZ3VyYXRpb24gd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldzsKLSNlbmRpZgorLSAoaW5z
dGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KENHUmVjdClmcmFtZSBwcm9jZXNzUG9vbDooV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbCYpcHJvY2Vzc1Bvb2wgY29uZmlndXJhdGlvbjooUmVmPEFQSTo6UGFn
ZUNvbmZpZ3VyYXRpb24+JiYpY29uZmlndXJhdGlvbiB3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJW
aWV3OwogCiAtIChzdGQ6OnVuaXF1ZV9wdHI8V2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5PilfY3Jl
YXRlRHJhd2luZ0FyZWFQcm94eTsKIC0gKEJPT0wpX2lzRm9jdXNlZDsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlZpZXcuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlZp
ZXcuY3BwCShyZXZpc2lvbiAxODgxOTApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29v
cmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjks
NyBAQAogCiAjaW5jbHVkZSAiV2ViVmlldy5oIgogCisjaW5jbHVkZSAiQVBJUGFnZUNvbmZpZ3Vy
YXRpb24uaCIKICNpbmNsdWRlICJDb29yZGluYXRlZERyYXdpbmdBcmVhUHJveHkuaCIKICNpbmNs
dWRlICJDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaCIKICNpbmNsdWRlICJDb29yZGluYXRlZExh
eWVyVHJlZUhvc3RQcm94eS5oIgpAQCAtNTIsMTEgKzUzLDExIEBAIFdlYlZpZXc6OldlYlZpZXco
V2ViUHJvY2Vzc1Bvb2wqIGNvbnRleHQKICAgICAsIG1fdmlzaWJsZShmYWxzZSkKICAgICAsIG1f
b3BhY2l0eSgxLjApCiB7Ci0gICAgV2ViUGFnZUNvbmZpZ3VyYXRpb24gd2ViUGFnZUNvbmZpZ3Vy
YXRpb247Ci0gICAgd2ViUGFnZUNvbmZpZ3VyYXRpb24ucGFnZUdyb3VwID0gcGFnZUdyb3VwOwor
ICAgIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiBwYWdlQ29uZmlndXJhdGlvbiA9IEFQSTo6
UGFnZUNvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRQ
YWdlR3JvdXAocGFnZUdyb3VwKTsKIAogICAgIC8vIE5lZWQgdG8gY2FsbCBjcmVhdGVXZWJQYWdl
IGFmdGVyIG90aGVyIGRhdGEgbWVtYmVycywgc3BlY2lmaWNhbGx5IG1fdmlzaWJsZSwgYXJlIGlu
aXRpYWxpemVkLgotICAgIG1fcGFnZSA9IGNvbnRleHQtPmNyZWF0ZVdlYlBhZ2UoKnRoaXMsIFdU
Rjo6bW92ZSh3ZWJQYWdlQ29uZmlndXJhdGlvbikpOworICAgIG1fcGFnZSA9IGNvbnRleHQtPmNy
ZWF0ZVdlYlBhZ2UoKnRoaXMsIFdURjo6bW92ZShwYWdlQ29uZmlndXJhdGlvbikpOwogCiAgICAg
bV9wYWdlLT5wYWdlR3JvdXAoKS5wcmVmZXJlbmNlcygpLnNldEFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdFbmFibGVkKHRydWUpOwogICAgIG1fcGFnZS0+cGFnZUdyb3VwKCkucHJlZmVyZW5jZXMoKS5z
ZXRGb3JjZUNvbXBvc2l0aW5nTW9kZSh0cnVlKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5oCShyZXZpc2lvbiAxODgxOTApCisrKyBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAt
MzQsNiArMzQsMTAgQEAKIEBjbGFzcyBXS1ZpZXc7CiBAY2xhc3MgV0tXZWJWaWV3OwogCituYW1l
c3BhY2UgQVBJIHsKK2NsYXNzIFBhZ2VDb25maWd1cmF0aW9uOworfQorCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBzdHJ1Y3QgSGlnaGxpZ2h0OwogfQpAQCAtNDUsNyArNDksNiBAQCBjbGFzcyBSZW1v
dGVMYXllclRyZWVUcmFuc2FjdGlvbjsKIGNsYXNzIFdlYkZyYW1lUHJveHk7CiBjbGFzcyBXZWJQ
YWdlUHJveHk7CiBjbGFzcyBXZWJQcm9jZXNzUG9vbDsKLXN0cnVjdCBXZWJQYWdlQ29uZmlndXJh
dGlvbjsKIH0KIAogQGludGVyZmFjZSBXS0NvbnRlbnRWaWV3IDogVUlWaWV3IHsKQEAgLTYxLDgg
KzY0LDggQEAgc3RydWN0IFdlYlBhZ2VDb25maWd1cmF0aW9uOwogQHByb3BlcnR5IChub25hdG9t
aWMsIGdldHRlcj1pc1Nob3dpbmdJbnNwZWN0b3JJbmRpY2F0aW9uKSBCT09MIHNob3dpbmdJbnNw
ZWN0b3JJbmRpY2F0aW9uOwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09MIGlz
QmFja2dyb3VuZDsKIAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KENHUmVjdClmcmFt
ZSBwcm9jZXNzUG9vbDooV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYpcHJvY2Vzc1Bvb2wgY29uZmln
dXJhdGlvbjooV2ViS2l0OjpXZWJQYWdlQ29uZmlndXJhdGlvbil3ZWJQYWdlQ29uZmlndXJhdGlv
biB3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3OwotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
RnJhbWU6KENHUmVjdClmcmFtZSBwcm9jZXNzUG9vbDooV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYp
cHJvY2Vzc1Bvb2wgY29uZmlndXJhdGlvbjooV2ViS2l0OjpXZWJQYWdlQ29uZmlndXJhdGlvbil3
ZWJQYWdlQ29uZmlndXJhdGlvbiB3a1ZpZXc6KFdLVmlldyAqKXdlYlZpZXc7CistIChpbnN0YW5j
ZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lIHByb2Nlc3NQb29sOihXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sJilwcm9jZXNzUG9vbCBjb25maWd1cmF0aW9uOihSZWY8QVBJOjpQYWdlQ29u
ZmlndXJhdGlvbj4mJiljb25maWd1cmF0aW9uIHdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXc7
CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lIHByb2Nlc3NQb29s
OihXZWJLaXQ6OldlYlByb2Nlc3NQb29sJilwcm9jZXNzUG9vbCBjb25maWd1cmF0aW9uOihSZWY8
QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJiljb25maWd1cmF0aW9uIHdrVmlldzooV0tWaWV3ICop
d2ViVmlldzsKIAogLSAodm9pZClkaWRVcGRhdGVWaXNpYmxlUmVjdDooQ0dSZWN0KXZpc2libGVS
ZWN0IHVub2JzY3VyZWRSZWN0OihDR1JlY3QpdW5vYnNjdXJlZFJlY3QKICAgICB1bm9ic2N1cmVk
UmVjdEluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzOihDR1JlY3QpdW5vYnNjdXJlZFJlY3RJblNjcm9s
bFZpZXdDb29yZGluYXRlcwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlldy5tbQkocmV2aXNpb24gMTg4MTkwKQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3
IEBACiAKICNpZiBQTEFURk9STShJT1MpCiAKKyNpbXBvcnQgIkFQSVBhZ2VDb25maWd1cmF0aW9u
LmgiCiAjaW1wb3J0ICJBcHBsaWNhdGlvblN0YXRlVHJhY2tlci5oIgogI2ltcG9ydCAiUGFnZUNs
aWVudEltcGxJT1MuaCIKICNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHku
aCIKQEAgLTE4MSwxMSArMTgyLDExIEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihD
R1JlY3QpZnIKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXBwbGljYXRpb25TdGF0ZVRyYWNrZXI+IF9h
cHBsaWNhdGlvblN0YXRlVHJhY2tlcjsKIH0KIAotLSAoaW5zdGFuY2V0eXBlKV9jb21tb25Jbml0
aWFsaXphdGlvbldpdGhQcm9jZXNzUG9vbDooV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYpcHJvY2Vz
c1Bvb2wgY29uZmlndXJhdGlvbjooV2ViS2l0OjpXZWJQYWdlQ29uZmlndXJhdGlvbil3ZWJQYWdl
Q29uZmlndXJhdGlvbgorLSAoaW5zdGFuY2V0eXBlKV9jb21tb25Jbml0aWFsaXphdGlvbldpdGhQ
cm9jZXNzUG9vbDooV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYpcHJvY2Vzc1Bvb2wgY29uZmlndXJh
dGlvbjooUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpY29uZmlndXJhdGlvbgogewogICAg
IEFTU0VSVChfcGFnZUNsaWVudCk7CiAKLSAgICBfcGFnZSA9IHByb2Nlc3NQb29sLmNyZWF0ZVdl
YlBhZ2UoKl9wYWdlQ2xpZW50LCBXVEY6Om1vdmUod2ViUGFnZUNvbmZpZ3VyYXRpb24pKTsKKyAg
ICBfcGFnZSA9IHByb2Nlc3NQb29sLmNyZWF0ZVdlYlBhZ2UoKl9wYWdlQ2xpZW50LCBXVEY6Om1v
dmUoY29uZmlndXJhdGlvbikpOwogICAgIF9wYWdlLT5pbml0aWFsaXplV2ViUGFnZSgpOwogICAg
IF9wYWdlLT5zZXRJbnRyaW5zaWNEZXZpY2VTY2FsZUZhY3RvcihXS0dldFNjYWxlRmFjdG9yRm9y
U2NyZWVuKFtVSVNjcmVlbiBtYWluU2NyZWVuXSkpOwogICAgIF9wYWdlLT5zZXRVc2VGaXhlZExh
eW91dCh0cnVlKTsKQEAgLTIxOCw3ICsyMTksNyBAQCAtIChpbnN0YW5jZXR5cGUpX2NvbW1vbklu
aXRpYWxpemF0aW9uV2l0CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKLS0gKGluc3RhbmNldHlwZSlp
bml0V2l0aEZyYW1lOihDR1JlY3QpZnJhbWUgcHJvY2Vzc1Bvb2w6KFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2wmKXByb2Nlc3NQb29sIGNvbmZpZ3VyYXRpb246KFdlYktpdDo6V2ViUGFnZUNvbmZpZ3Vy
YXRpb24pd2ViUGFnZUNvbmZpZ3VyYXRpb24gd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldwor
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KENHUmVjdClmcmFtZSBwcm9jZXNzUG9vbDoo
V2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYpcHJvY2Vzc1Bvb2wgY29uZmlndXJhdGlvbjooUmVmPEFQ
STo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpY29uZmlndXJhdGlvbiB3ZWJWaWV3OihXS1dlYlZpZXcg
Kil3ZWJWaWV3CiB7CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0V2l0aEZyYW1lOmZyYW1l
XSkpCiAgICAgICAgIHJldHVybiBuaWw7CkBAIC0yMjgsMTAgKzIyOSwxMCBAQCAtIChpbnN0YW5j
ZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyCiAgICAgX3BhZ2VDbGllbnQgPSBzdGQ6Om1h
a2VfdW5pcXVlPFBhZ2VDbGllbnRJbXBsPihzZWxmLCB3ZWJWaWV3KTsKICAgICBfd2ViVmlldyA9
IHdlYlZpZXc7CiAKLSAgICByZXR1cm4gW3NlbGYgX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aFBy
b2Nlc3NQb29sOnByb2Nlc3NQb29sIGNvbmZpZ3VyYXRpb246d2ViUGFnZUNvbmZpZ3VyYXRpb25d
OworICAgIHJldHVybiBbc2VsZiBfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoUHJvY2Vzc1Bvb2w6
cHJvY2Vzc1Bvb2wgY29uZmlndXJhdGlvbjpXVEY6Om1vdmUoY29uZmlndXJhdGlvbildOwogfQog
Ci0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lIHByb2Nlc3NQb29s
OihXZWJLaXQ6OldlYlByb2Nlc3NQb29sJilwcm9jZXNzUG9vbCBjb25maWd1cmF0aW9uOihXZWJL
aXQ6OldlYlBhZ2VDb25maWd1cmF0aW9uKXdlYlBhZ2VDb25maWd1cmF0aW9uIHdrVmlldzooV0tW
aWV3ICopd2tWaWV3CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1l
IHByb2Nlc3NQb29sOihXZWJLaXQ6OldlYlByb2Nlc3NQb29sJilwcm9jZXNzUG9vbCBjb25maWd1
cmF0aW9uOihSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJiljb25maWd1cmF0aW9uIHdrVmll
dzooV0tWaWV3ICopd2tWaWV3CiB7CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0V2l0aEZy
YW1lOmZyYW1lXSkpCiAgICAgICAgIHJldHVybiBuaWw7CkBAIC0yNDAsNyArMjQxLDcgQEAgLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KENHUmVjdClmcgogCiAgICAgX3BhZ2VDbGllbnQg
PSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VDbGllbnRJbXBsPihzZWxmLCB3a1ZpZXcpOwogCi0gICAg
cmV0dXJuIFtzZWxmIF9jb21tb25Jbml0aWFsaXphdGlvbldpdGhQcm9jZXNzUG9vbDpwcm9jZXNz
UG9vbCBjb25maWd1cmF0aW9uOndlYlBhZ2VDb25maWd1cmF0aW9uXTsKKyAgICByZXR1cm4gW3Nl
bGYgX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aFByb2Nlc3NQb29sOnByb2Nlc3NQb29sIGNvbmZp
Z3VyYXRpb246V1RGOjptb3ZlKGNvbmZpZ3VyYXRpb24pXTsKIH0KIAogLSAodm9pZClkZWFsbG9j
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258578</attachid>
            <date>2015-08-08 16:01:51 -0700</date>
            <delta_ts>2015-08-08 16:15:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147811-20150808160139.patch</filename>
            <type>text/plain</type>
            <size>53026</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4ODE5MCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg1IEBACisyMDE1LTA4LTA4ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVwbGFjZSBXZWJQYWdlQ29uZmlndXJh
dGlvbiB3aXRoIEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24gYW5kIGV4cG9zZSBhIEMtU1BJIGFjY2Vz
c29yIGZvciBpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQ3ODExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgLSBBZGRzIHRoZSBtaXNzaW5nIHBpZWNlcyBmcm9tIFdlYlBhZ2VDb25maWd1cmF0aW9uIGlu
dG8gQVBJOjpQYWdlQ29uZmlndXJhdGlvbi4KKyAgICAgICAgLSBBZGRzIEMtU1BJIHRvIHNldCBh
bmQgZ2V0IHRoZSBXZWJzaXRlRGF0YVN0b3JlIG9uIHRoZSBXS1BhZ2VDb25maWd1cmF0aW9uUmVm
LgorICAgICAgICAtIFVzZXMgQVBJOjpQYWdlQ29uZmlndXJhdGlvbiB0byBwYXNzIGNvbmZpZ3Vy
YXRpb24gaW5mb3JtYXRpb24gZnJvbSBXS1dlYlZpZXcvV0tWaWV3IAorICAgICAgICAgIHRvIFdl
YlBhZ2VQcm94eS4KKyAgICAgICAgLSBTdG9yZXMgdGhlIEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24g
b24gdGhlIFdlYlBhZ2VQcm94eSBhbmQgZXhwb3NlcyBhIG5ldyBDLVNQSSBmdW5jdGlvbiwKKyAg
ICAgICAgICBXS1BhZ2VDb3B5UGFnZUNvbmZpZ3VyYXRpb24sIHRvIGdldCBhIGNvcHkgb2YgaXQu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcDoKKyAg
ICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChBUEk6OlBh
Z2VDb25maWd1cmF0aW9uOjpQYWdlQ29uZmlndXJhdGlvbik6CisgICAgICAgIChBUEk6OlBhZ2VD
b25maWd1cmF0aW9uOjp+UGFnZUNvbmZpZ3VyYXRpb24pOgorICAgICAgICAoQVBJOjpQYWdlQ29u
ZmlndXJhdGlvbjo6Y29weSk6CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpwcm9j
ZXNzUG9vbCk6CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpzZXRSZWxhdGVkUGFn
ZSk6CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjp2aXNpdGVkTGlua1Byb3ZpZGVy
KToKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OnNldFZpc2l0ZWRMaW5rUHJvdmlk
ZXIpOgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6d2Vic2l0ZURhdGFTdG9yZSk6
CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpzZXRXZWJzaXRlRGF0YVN0b3JlKToK
KyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OnNlc3Npb25JRCk6CisgICAgICAgIChB
UEk6OlBhZ2VDb25maWd1cmF0aW9uOjpzZXRTZXNzaW9uSUQpOgorICAgICAgICAoQVBJOjpQYWdl
Q29uZmlndXJhdGlvbjo6d2ViUGFnZUNvbmZpZ3VyYXRpb24pOiBEZWxldGVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKEFQSTo6UGFn
ZUNvbmZpZ3VyYXRpb246OnByZWZlcmVuY2VWYWx1ZXMpOgorICAgICAgICAoQVBJOjpQYWdlQ29u
ZmlndXJhdGlvbjo6dHJlYXRzU0hBMVNpZ25lZENlcnRpZmljYXRlc0FzSW5zZWN1cmUpOgorICAg
ICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6c2V0VHJlYXRzU0hBMVNpZ25lZENlcnRpZmlj
YXRlc0FzSW5zZWN1cmUpOgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6YWx3YXlz
UnVuc0F0Rm9yZWdyb3VuZFByaW9yaXR5KToKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRp
b246OnNldEFsd2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eSk6CisgICAgICAgIChBUEk6OlBh
Z2VDb25maWd1cmF0aW9uOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdlR2V0UGFnZUdyb3VwKToKKyAgICAgICAg
KFdLUGFnZUNvcHlQYWdlQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXS1BhZ2VMb2FkVVJMKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLUGFnZUNvbmZpZ3VyYXRpb25SZWYuY3BwOgorICAgICAgICAoV0tQYWdlQ29uZmln
dXJhdGlvblNldFJlbGF0ZWRQYWdlKToKKyAgICAgICAgKFdLUGFnZUNvbmZpZ3VyYXRpb25HZXRX
ZWJzaXRlRGF0YVN0b3JlKToKKyAgICAgICAgKFdLUGFnZUNvbmZpZ3VyYXRpb25TZXRXZWJzaXRl
RGF0YVN0b3JlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlQ29uZmlndXJhdGlv
blJlZi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAg
ICAgICAoLVtXS1dlYlZpZXcgaW5pdFdpdGhGcmFtZTpjb25maWd1cmF0aW9uOl0pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvaW9zL1dLVmlld0lPUy5tbToKKyAgICAgICAgKC1bV0tWaWV3IF9j
b21tb25Jbml0aWFsaXphdGlvbldpdGhDb250ZXh0UmVmOnBhZ2VHcm91cFJlZjpyZWxhdGVkVG9Q
YWdlOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbToKKyAgICAgICAg
KC1bV0tWaWV3IF9zZXRQcmltYXJ5VHJhY2tpbmdBcmVhOl0pOgorICAgICAgICAoLVtXS1ZpZXcg
aW5pdFdpdGhGcmFtZTpwcm9jZXNzUG9vbDpjb25maWd1cmF0aW9uOndlYlZpZXc6XSk6CisgICAg
ICAgICgtW1dLVmlldyBpbml0V2l0aEZyYW1lOmNvbnRleHRSZWY6cGFnZUdyb3VwUmVmOnJlbGF0
ZWRUb1BhZ2U6XSk6CisgICAgICAgICgtW1dLVmlldyBpbml0V2l0aEZyYW1lOmNvbmZpZ3VyYXRp
b25SZWY6XSk6CisgICAgICAgICgtW1dLVmlldyB3YW50c1VwZGF0ZUxheWVyXSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50ZXJuYWwuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVh
dGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6fldlYlBhZ2VQcm94eSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6Y29uZmlndXJhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6cHJvY2Vzc0lkZW50aWZpZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwYWdlSUQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNlc3Npb25JRCk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNy
ZWF0ZU5ld1dlYlByb2Nlc3NSZXNwZWN0aW5nUHJvY2Vzc0NvdW50TGltaXQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQb29sOjpkb3dubG9hZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6d2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQcm94eTo6Y3JlYXRlV2ViUGFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnByb2Nl
c3NQb29sKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW06CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aFByb2Nlc3NQb29sOmNvbmZpZ3VyYXRpb246
XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgaW5pdFdpdGhGcmFtZTpwcm9jZXNzUG9vbDpj
b25maWd1cmF0aW9uOndlYlZpZXc6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgaW5pdFdp
dGhGcmFtZTpwcm9jZXNzUG9vbDpjb25maWd1cmF0aW9uOndrVmlldzpdKToKKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyBkZWFsbG9jXSk6CisKIDIwMTUtMDgtMDcgIEZpbGlwIFBpemxvICA8ZnBp
emxvQGFwcGxlLmNvbT4KIAogICAgICAgICBMaWdodHdlaWdodCBsb2NrcyBzaG91bGQgYmUgYWRh
cHRpdmUKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxODgxOTApCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzkzLDYgKzM5Myw3
IEBAIHNldChXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL0FQSUZyYW1lSW5mby5j
cHAKICAgICBVSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24uY3BwCiAgICAgVUlQcm9jZXNzL0FQ
SS9BUElOYXZpZ2F0aW9uRGF0YS5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1
cmF0aW9uLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvQVBJU2Vzc2lvbi5jcHAKICAgICBVSVByb2Nlc3MvQVBJ
L0FQSVNlc3Npb25TdGF0ZS5jcHAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCShyZXZpc2lvbiAxODgxOTApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQAogI2lu
Y2x1ZGUgIkFQSU5hdmlnYXRpb25BY3Rpb24uaCIKICNpbmNsdWRlICJBUElOYXZpZ2F0aW9uQ2xp
ZW50LmgiCiAjaW5jbHVkZSAiQVBJTmF2aWdhdGlvblJlc3BvbnNlLmgiCisjaW5jbHVkZSAiQVBJ
UGFnZUNvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJBUElQb2xpY3lDbGllbnQuaCIKICNpbmNs
dWRlICJBUElTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIkFQSVVJQ2xpZW50LmgiCkBAIC0y
OTMsMTMgKzI5NCwxNCBAQCBwcml2YXRlOgogICAgIFBhZ2VDbGllbnQmIG1fcGFnZUNsaWVudDsK
IH07CiAKLVJlZjxXZWJQYWdlUHJveHk+IFdlYlBhZ2VQcm94eTo6Y3JlYXRlKFBhZ2VDbGllbnQm
IHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgdWludDY0X3QgcGFnZUlELCBj
b25zdCBXZWJQYWdlQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKK1JlZjxXZWJQYWdlUHJv
eHk+IFdlYlBhZ2VQcm94eTo6Y3JlYXRlKFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nl
c3NQcm94eSYgcHJvY2VzcywgdWludDY0X3QgcGFnZUlELCBSZWY8QVBJOjpQYWdlQ29uZmlndXJh
dGlvbj4mJiBjb25maWd1cmF0aW9uKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlBh
Z2VQcm94eShwYWdlQ2xpZW50LCBwcm9jZXNzLCBwYWdlSUQsIGNvbmZpZ3VyYXRpb24pKTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJQYWdlUHJveHkocGFnZUNsaWVudCwgcHJvY2Vzcywg
cGFnZUlELCBXVEY6Om1vdmUoY29uZmlndXJhdGlvbikpKTsKIH0KIAotV2ViUGFnZVByb3h5OjpX
ZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9j
ZXNzLCB1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlBhZ2VDb25maWd1cmF0aW9uJiBjb25maWd1
cmF0aW9uKQorV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVu
dCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCB1aW50NjRfdCBwYWdlSUQsIFJlZjxBUEk6OlBh
Z2VDb25maWd1cmF0aW9uPiYmIGNvbmZpZ3VyYXRpb24pCiAgICAgOiBtX3BhZ2VDbGllbnQocGFn
ZUNsaWVudCkKKyAgICAsIG1fY29uZmlndXJhdGlvbihXVEY6Om1vdmUoY29uZmlndXJhdGlvbikp
CiAgICAgLCBtX2xvYWRlckNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6TG9hZGVyQ2xpZW50
PigpKQogICAgICwgbV9wb2xpY3lDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OlBvbGljeUNs
aWVudD4oKSkKICAgICAsIG1fZm9ybUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6Rm9ybUNs
aWVudD4oKSkKQEAgLTMxMSwxNCArMzEzLDE0IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5
KFBhZ2VDbGllbnQmIHAKICNlbmRpZgogICAgICwgbV9uYXZpZ2F0aW9uU3RhdGUoc3RkOjptYWtl
X3VuaXF1ZTxXZWJOYXZpZ2F0aW9uU3RhdGU+KCkpCiAgICAgLCBtX3Byb2Nlc3MocHJvY2VzcykK
LSAgICAsIG1fcGFnZUdyb3VwKCpjb25maWd1cmF0aW9uLnBhZ2VHcm91cCkKLSAgICAsIG1fcHJl
ZmVyZW5jZXMoKmNvbmZpZ3VyYXRpb24ucHJlZmVyZW5jZXMpCi0gICAgLCBtX3VzZXJDb250ZW50
Q29udHJvbGxlcihjb25maWd1cmF0aW9uLnVzZXJDb250ZW50Q29udHJvbGxlcikKLSAgICAsIG1f
dmlzaXRlZExpbmtQcm92aWRlcigqY29uZmlndXJhdGlvbi52aXNpdGVkTGlua1Byb3ZpZGVyKQot
ICAgICwgbV93ZWJzaXRlRGF0YVN0b3JlKCpjb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUp
CisgICAgLCBtX3BhZ2VHcm91cCgqbV9jb25maWd1cmF0aW9uLT5wYWdlR3JvdXAoKSkKKyAgICAs
IG1fcHJlZmVyZW5jZXMoKm1fY29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKSkKKyAgICAsIG1f
dXNlckNvbnRlbnRDb250cm9sbGVyKG1fY29uZmlndXJhdGlvbi0+dXNlckNvbnRlbnRDb250cm9s
bGVyKCkpCisgICAgLCBtX3Zpc2l0ZWRMaW5rUHJvdmlkZXIoKm1fY29uZmlndXJhdGlvbi0+dmlz
aXRlZExpbmtQcm92aWRlcigpKQorICAgICwgbV93ZWJzaXRlRGF0YVN0b3JlKG1fY29uZmlndXJh
dGlvbi0+d2Vic2l0ZURhdGFTdG9yZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCkpCiAgICAgLCBtX21h
aW5GcmFtZShudWxscHRyKQogICAgICwgbV91c2VyQWdlbnQoc3RhbmRhcmRVc2VyQWdlbnQoKSkK
LSAgICAsIG1fdHJlYXRzU0hBMUNlcnRpZmljYXRlc0FzSW5zZWN1cmUoY29uZmlndXJhdGlvbi50
cmVhdHNTSEExU2lnbmVkQ2VydGlmaWNhdGVzQXNJbnNlY3VyZSkKKyAgICAsIG1fdHJlYXRzU0hB
MUNlcnRpZmljYXRlc0FzSW5zZWN1cmUobV9jb25maWd1cmF0aW9uLT50cmVhdHNTSEExU2lnbmVk
Q2VydGlmaWNhdGVzQXNJbnNlY3VyZSgpKQogI2lmIFBMQVRGT1JNKElPUykKICAgICAsIG1faGFz
UmVjZWl2ZWRMYXllclRyZWVUcmFuc2FjdGlvbkFmdGVyRGlkQ29tbWl0TG9hZCh0cnVlKQogICAg
ICwgbV9maXJzdExheWVyVHJlZVRyYW5zYWN0aW9uSWRBZnRlckRpZENvbW1pdExvYWQoMCkKQEAg
LTMzNSw3ICszMzcsNyBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBw
CiAgICAgLCBtX3ZpZXdTdGF0ZShWaWV3U3RhdGU6Ok5vRmxhZ3MpCiAgICAgLCBtX3ZpZXdXYXNF
dmVySW5XaW5kb3coZmFsc2UpCiAjaWYgUExBVEZPUk0oSU9TKQotICAgICwgbV9hbHdheXNSdW5z
QXRGb3JlZ3JvdW5kUHJpb3JpdHkoY29uZmlndXJhdGlvbi5hbHdheXNSdW5zQXRGb3JlZ3JvdW5k
UHJpb3JpdHkpCisgICAgLCBtX2Fsd2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eShtX2NvbmZp
Z3VyYXRpb24tPmFsd2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eSgpKQogI2VuZGlmCiAgICAg
LCBtX2JhY2tGb3J3YXJkTGlzdChXZWJCYWNrRm9yd2FyZExpc3Q6OmNyZWF0ZSgqdGhpcykpCiAg
ICAgLCBtX21haW50YWluc0luYWN0aXZlU2VsZWN0aW9uKGZhbHNlKQpAQCAtMzc5LDcgKzM4MSw3
IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHAKICAgICAsIG1faXNU
cmFja2luZ1RvdWNoRXZlbnRzKGZhbHNlKQogI2VuZGlmCiAgICAgLCBtX3BhZ2VJRChwYWdlSUQp
Ci0gICAgLCBtX3Nlc3Npb25JRChjb25maWd1cmF0aW9uLnNlc3Npb25JRCkKKyAgICAsIG1fc2Vz
c2lvbklEKG1fY29uZmlndXJhdGlvbi0+c2Vzc2lvbklEKCkpCiAgICAgLCBtX2lzUGFnZVN1c3Bl
bmRlZChmYWxzZSkKICAgICAsIG1fYWRkc1Zpc2l0ZWRMaW5rcyh0cnVlKQogI2lmIEVOQUJMRShS
RU1PVEVfSU5TUEVDVE9SKQpAQCAtNDM2LDcgKzQzOCw3IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFn
ZVByb3h5KFBhZ2VDbGllbnQmIHAKICNlbmRpZgogICAgICwgbV9zY3JvbGxQaW5uaW5nQmVoYXZp
b3IoRG9Ob3RQaW4pCiAgICAgLCBtX25hdmlnYXRpb25JRCgwKQotICAgICwgbV9jb25maWd1cmF0
aW9uUHJlZmVyZW5jZVZhbHVlcyhjb25maWd1cmF0aW9uLnByZWZlcmVuY2VWYWx1ZXMpCisgICAg
LCBtX2NvbmZpZ3VyYXRpb25QcmVmZXJlbmNlVmFsdWVzKG1fY29uZmlndXJhdGlvbi0+cHJlZmVy
ZW5jZVZhbHVlcygpKQogICAgICwgbV9wb3RlbnRpYWxseUNoYW5nZWRWaWV3U3RhdGVGbGFncyhW
aWV3U3RhdGU6Ok5vRmxhZ3MpCiAgICAgLCBtX3ZpZXdTdGF0ZUNoYW5nZVdhbnRzU3luY2hyb25v
dXNSZXBseShmYWxzZSkKIHsKQEAgLTUxOCw2ICs1MjAsMTEgQEAgV2ViUGFnZVByb3h5Ojp+V2Vi
UGFnZVByb3h5KCkKICNlbmRpZgogfQogCitjb25zdCBBUEk6OlBhZ2VDb25maWd1cmF0aW9uJiBX
ZWJQYWdlUHJveHk6OmNvbmZpZ3VyYXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbmZp
Z3VyYXRpb24uZ2V0KCk7Cit9CisKIFBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIgV2ViUGFnZVBy
b3h5Ojpwcm9jZXNzSWRlbnRpZmllcigpIGNvbnN0CiB7CiAgICAgaWYgKG1faXNDbG9zZWQpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAxODgx
OTApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI1NCwyOCArMjU0LDYgQEAgdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3Qg
V2ViQ29yZTo6SQogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgV2ViQ29yZTo6TWFjaFNl
bmRSaWdodCY+IE1hY2hTZW5kUmlnaHRDYWxsYmFjazsKICNlbmRpZgogCi1zdHJ1Y3QgV2ViUGFn
ZUNvbmZpZ3VyYXRpb24gewotICAgIFdlYlBhZ2VHcm91cCogcGFnZUdyb3VwID0gbnVsbHB0cjsK
LSAgICBXZWJQcmVmZXJlbmNlcyogcHJlZmVyZW5jZXMgPSBudWxscHRyOwotICAgIFdlYlVzZXJD
b250ZW50Q29udHJvbGxlclByb3h5KiB1c2VyQ29udGVudENvbnRyb2xsZXIgPSBudWxscHRyOwot
ICAgIFZpc2l0ZWRMaW5rUHJvdmlkZXIqIHZpc2l0ZWRMaW5rUHJvdmlkZXIgPSBudWxscHRyOwot
Ci0gICAgV2Vic2l0ZURhdGFTdG9yZSogd2Vic2l0ZURhdGFTdG9yZSA9IG51bGxwdHI7Ci0gICAg
Ly8gRklYTUU6IFdlIGN1cnJlbnRseSBoYXZlIHRvIHBhc3MgdGhlIHNlc3Npb24gSUQgc2VwYXJh
dGVseSBoZXJlIHRvIHN1cHBvcnQgdGhlIGxlZ2FjeSBwcml2YXRlIGJyb3dzaW5nIHNlc3Npb24u
Ci0gICAgLy8gT25jZSB3ZSBnZXQgcmlkIG9mIGl0IHdlIHNob3VsZCBnZXQgcmlkIG9mIHRoaXMg
Y29uZmlndXJhdGlvbiBwYXJhbWV0ZXIgYXMgd2VsbC4KLSAgICBXZWJDb3JlOjpTZXNzaW9uSUQg
c2Vzc2lvbklEOwotCi0gICAgV2ViUGFnZVByb3h5KiByZWxhdGVkUGFnZSA9IG51bGxwdHI7Ci0K
LSAgICBib29sIHRyZWF0c1NIQTFTaWduZWRDZXJ0aWZpY2F0ZXNBc0luc2VjdXJlID0gZmFsc2U7
Ci0KLSNpZiBQTEFURk9STShJT1MpCi0gICAgYm9vbCBhbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJp
b3JpdHkgPSBmYWxzZTsKLSNlbmRpZgotCi0gICAgV2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWVN
YXAgcHJlZmVyZW5jZVZhbHVlczsKLX07Ci0KIGNsYXNzIFdlYlBhZ2VQcm94eSA6IHB1YmxpYyBB
UEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlBhZ2U+CiAjaWYgRU5BQkxFKElOUFVU
X1RZUEVfQ09MT1IpCiAgICAgLCBwdWJsaWMgV2ViQ29sb3JQaWNrZXI6OkNsaWVudApAQCAtMjg3
LDkgKzI2NSwxMSBAQCBjbGFzcyBXZWJQYWdlUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJCiAg
ICAgLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICAsIHB1YmxpYyBJUEM6Ok1lc3Nh
Z2VTZW5kZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViUGFnZVByb3h5PiBjcmVhdGUo
UGFnZUNsaWVudCYsIFdlYlByb2Nlc3NQcm94eSYsIHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2Vi
UGFnZUNvbmZpZ3VyYXRpb24mKTsKKyAgICBzdGF0aWMgUmVmPFdlYlBhZ2VQcm94eT4gY3JlYXRl
KFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJveHkmLCB1aW50NjRfdCBwYWdlSUQsIFJlZjxBUEk6
OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsKICAgICB2aXJ0dWFsIH5XZWJQYWdlUHJveHkoKTsKIAor
ICAgIGNvbnN0IEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24oKSBjb25zdDsK
KwogICAgIHVpbnQ2NF90IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEOyB9CiAgICAg
V2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbklE
OyB9CiAgICAgdm9pZCBzZXRTZXNzaW9uSUQoV2ViQ29yZTo6U2Vzc2lvbklEKTsKQEAgLTEwODQs
NyArMTA2NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyV2hlZWxFdmVudFRlc3RUcmlnZ2Vy
KCk7CiAKIHByaXZhdGU6Ci0gICAgV2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNz
UHJveHkmLCB1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlBhZ2VDb25maWd1cmF0aW9uJik7Cisg
ICAgV2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJveHkmLCB1aW50NjRfdCBw
YWdlSUQsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsKICAgICB2b2lkIHBsYXRmb3Jt
SW5pdGlhbGl6ZSgpOwogCiAgICAgdm9pZCB1cGRhdGVWaWV3U3RhdGUoV2ViQ29yZTo6Vmlld1N0
YXRlOjpGbGFncyBmbGFnc1RvVXBkYXRlID0gV2ViQ29yZTo6Vmlld1N0YXRlOjpBbGxGbGFncyk7
CkBAIC0xNDg4LDYgKzE0NjgsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgaGFuZGxlU3luY2hyb25v
dXNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUsIGNv
bnN0IFVzZXJEYXRhJiBtZXNzYWdlQm9keSwgVXNlckRhdGEmIHJldHVyblVzZXJEYXRhKTsKIAog
ICAgIFBhZ2VDbGllbnQmIG1fcGFnZUNsaWVudDsKKyAgICBSZWY8QVBJOjpQYWdlQ29uZmlndXJh
dGlvbj4gbV9jb25maWd1cmF0aW9uOworCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6TG9hZGVy
Q2xpZW50PiBtX2xvYWRlckNsaWVudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpQb2xpY3lD
bGllbnQ+IG1fcG9saWN5Q2xpZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6Ok5hdmlnYXRp
b25DbGllbnQ+IG1fbmF2aWdhdGlvbkNsaWVudDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkocmV2aXNpb24gMTg4MTkwKQorKysgU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjks
NiArMjksNyBAQAogI2luY2x1ZGUgIkFQSUFycmF5LmgiCiAjaW5jbHVkZSAiQVBJRG93bmxvYWRD
bGllbnQuaCIKICNpbmNsdWRlICJBUElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudC5oIgorI2lu
Y2x1ZGUgIkFQSVBhZ2VDb25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiQVBJUHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWVzc2FnZXMu
aCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5LmgiCkBAIC04MzEsMTggKzgzMiwxOCBAQCBXZWJQ
cm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjpjcmVhdGVOCiAgICAgcmV0dXJuICpwcm9jZXNz
OwogfQogCi1QYXNzUmVmUHRyPFdlYlBhZ2VQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZVdl
YlBhZ2UoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUGFnZUNvbmZpZ3VyYXRpb24gY29uZmln
dXJhdGlvbikKK1Bhc3NSZWZQdHI8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRl
V2ViUGFnZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlv
bj4mJiBwYWdlQ29uZmlndXJhdGlvbikKIHsKLSAgICBpZiAoIWNvbmZpZ3VyYXRpb24ucGFnZUdy
b3VwKQotICAgICAgICBjb25maWd1cmF0aW9uLnBhZ2VHcm91cCA9IG1fZGVmYXVsdFBhZ2VHcm91
cC5wdHIoKTsKLSAgICBpZiAoIWNvbmZpZ3VyYXRpb24ucHJlZmVyZW5jZXMpCi0gICAgICAgIGNv
bmZpZ3VyYXRpb24ucHJlZmVyZW5jZXMgPSAmY29uZmlndXJhdGlvbi5wYWdlR3JvdXAtPnByZWZl
cmVuY2VzKCk7Ci0gICAgaWYgKCFjb25maWd1cmF0aW9uLnZpc2l0ZWRMaW5rUHJvdmlkZXIpCi0g
ICAgICAgIGNvbmZpZ3VyYXRpb24udmlzaXRlZExpbmtQcm92aWRlciA9IG1fdmlzaXRlZExpbmtQ
cm92aWRlci5wdHIoKTsKLSAgICBpZiAoIWNvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSkg
ewotICAgICAgICBBU1NFUlQoIWNvbmZpZ3VyYXRpb24uc2Vzc2lvbklELmlzVmFsaWQoKSk7Ci0g
ICAgICAgIGNvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSA9ICZtX3dlYnNpdGVEYXRhU3Rv
cmUtPndlYnNpdGVEYXRhU3RvcmUoKTsKLSAgICAgICAgY29uZmlndXJhdGlvbi5zZXNzaW9uSUQg
PSBjb25maWd1cmF0aW9uLnByZWZlcmVuY2VzLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkgPyBT
ZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSA6IFNlc3Npb25JRDo6ZGVmYXVsdFNl
c3Npb25JRCgpOworICAgIGlmICghcGFnZUNvbmZpZ3VyYXRpb24tPnBhZ2VHcm91cCgpKQorICAg
ICAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UGFnZUdyb3VwKG1fZGVmYXVsdFBhZ2VHcm91cC5w
dHIoKSk7CisgICAgaWYgKCFwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKSkKKyAgICAg
ICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFByZWZlcmVuY2VzKCZwYWdlQ29uZmlndXJhdGlvbi0+
cGFnZUdyb3VwKCktPnByZWZlcmVuY2VzKCkpOworICAgIGlmICghcGFnZUNvbmZpZ3VyYXRpb24t
PnZpc2l0ZWRMaW5rUHJvdmlkZXIoKSkKKyAgICAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFZp
c2l0ZWRMaW5rUHJvdmlkZXIobV92aXNpdGVkTGlua1Byb3ZpZGVyLnB0cigpKTsKKyAgICBpZiAo
IXBhZ2VDb25maWd1cmF0aW9uLT53ZWJzaXRlRGF0YVN0b3JlKCkpIHsKKyAgICAgICAgQVNTRVJU
KCFwYWdlQ29uZmlndXJhdGlvbi0+c2Vzc2lvbklEKCkuaXNWYWxpZCgpKTsKKyAgICAgICAgcGFn
ZUNvbmZpZ3VyYXRpb24tPnNldFdlYnNpdGVEYXRhU3RvcmUobV93ZWJzaXRlRGF0YVN0b3JlLmdl
dCgpKTsKKyAgICAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFNlc3Npb25JRChwYWdlQ29uZmln
dXJhdGlvbi0+cHJlZmVyZW5jZXMoKS0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpID8gU2Vzc2lv
bklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkgOiBTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9u
SUQoKSk7CiAgICAgfQogCiAgICAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gcHJvY2VzczsKQEAg
LTg1MiwxNCArODUzLDE0IEBAIFBhc3NSZWZQdHI8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUG9v
bDoKICAgICAgICAgaWYgKG1faGF2ZUluaXRpYWxFbXB0eVByb2Nlc3MpIHsKICAgICAgICAgICAg
IHByb2Nlc3MgPSBtX3Byb2Nlc3Nlcy5sYXN0KCk7CiAgICAgICAgICAgICBtX2hhdmVJbml0aWFs
RW1wdHlQcm9jZXNzID0gZmFsc2U7Ci0gICAgICAgIH0gZWxzZSBpZiAoY29uZmlndXJhdGlvbi5y
ZWxhdGVkUGFnZSkgeworICAgICAgICB9IGVsc2UgaWYgKHBhZ2VDb25maWd1cmF0aW9uLT5yZWxh
dGVkUGFnZSgpKSB7CiAgICAgICAgICAgICAvLyBTaGFyaW5nIHByb2Nlc3NlcywgZS5nLiB3aGVu
IGNyZWF0aW5nIHRoZSBwYWdlIHZpYSB3aW5kb3cub3BlbigpLgotICAgICAgICAgICAgcHJvY2Vz
cyA9ICZjb25maWd1cmF0aW9uLnJlbGF0ZWRQYWdlLT5wcm9jZXNzKCk7CisgICAgICAgICAgICBw
cm9jZXNzID0gJnBhZ2VDb25maWd1cmF0aW9uLT5yZWxhdGVkUGFnZSgpLT5wcm9jZXNzKCk7CiAg
ICAgICAgIH0gZWxzZQogICAgICAgICAgICAgcHJvY2VzcyA9ICZjcmVhdGVOZXdXZWJQcm9jZXNz
UmVzcGVjdGluZ1Byb2Nlc3NDb3VudExpbWl0KCk7CiAgICAgfQogCi0gICAgcmV0dXJuIHByb2Nl
c3MtPmNyZWF0ZVdlYlBhZ2UocGFnZUNsaWVudCwgV1RGOjptb3ZlKGNvbmZpZ3VyYXRpb24pKTsK
KyAgICByZXR1cm4gcHJvY2Vzcy0+Y3JlYXRlV2ViUGFnZShwYWdlQ2xpZW50LCBXVEY6Om1vdmUo
cGFnZUNvbmZpZ3VyYXRpb24pKTsKIH0KIAogRG93bmxvYWRQcm94eSogV2ViUHJvY2Vzc1Bvb2w6
OmRvd25sb2FkKFdlYlBhZ2VQcm94eSogaW5pdGlhdGluZ1BhZ2UsIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5oCShyZXZpc2lvbiAxODgxOTApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuaAkod29ya2luZyBjb3B5KQpAQCAtNzYsNiArNzYsNyBAQCBPQkpDX0NMQVNT
IE5TU3RyaW5nOwogbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBEb3dubG9hZENsaWVudDsKIGNsYXNz
IExlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50OworY2xhc3MgUGFnZUNvbmZpZ3VyYXRpb247CiB9
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtODYsNyArODcsNiBAQCBjbGFzcyBXZWJJY29uRGF0
YWJhc2U7CiBjbGFzcyBXZWJQYWdlR3JvdXA7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiBzdHJ1Y3Qg
U3RhdGlzdGljc0RhdGE7Ci1zdHJ1Y3QgV2ViUGFnZUNvbmZpZ3VyYXRpb247CiBzdHJ1Y3QgV2Vi
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsKICAgICAKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNr
PEFQSTo6RGljdGlvbmFyeSo+IERpY3Rpb25hcnlDYWxsYmFjazsKQEAgLTE3MSw3ICsxNzEsNyBA
QCBwdWJsaWM6CiAKICAgICBBUEk6OldlYnNpdGVEYXRhU3RvcmUqIHdlYnNpdGVEYXRhU3RvcmUo
KSBjb25zdCB7IHJldHVybiBtX3dlYnNpdGVEYXRhU3RvcmUuZ2V0KCk7IH0KIAotICAgIFBhc3NS
ZWZQdHI8V2ViUGFnZVByb3h5PiBjcmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmLCBXZWJQYWdlQ29u
ZmlndXJhdGlvbik7CisgICAgUGFzc1JlZlB0cjxXZWJQYWdlUHJveHk+IGNyZWF0ZVdlYlBhZ2Uo
UGFnZUNsaWVudCYsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsKIAogICAgIGNvbnN0
IFN0cmluZyYgaW5qZWN0ZWRCdW5kbGVQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9jb25maWd1cmF0
aW9uLT5pbmplY3RlZEJ1bmRsZVBhdGgoKTsgfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAkocmV2aXNpb24gMTg4MTkwKQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIwNiwxMCArMjA2LDEwIEBAIFdlYlBhZ2VQcm94eSogV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdl
KHUKICAgICByZXR1cm4gZ2xvYmFsUGFnZU1hcCgpLmdldChwYWdlSUQpOwogfQogCi1SZWY8V2Vi
UGFnZVByb3h5PiBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYgcGFn
ZUNsaWVudCwgY29uc3QgV2ViUGFnZUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCitSZWY8
V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYg
cGFnZUNsaWVudCwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYgcGFnZUNvbmZpZ3VyYXRp
b24pCiB7CiAgICAgdWludDY0X3QgcGFnZUlEID0gZ2VuZXJhdGVQYWdlSUQoKTsKLSAgICBSZWY8
V2ViUGFnZVByb3h5PiB3ZWJQYWdlID0gV2ViUGFnZVByb3h5OjpjcmVhdGUocGFnZUNsaWVudCwg
KnRoaXMsIHBhZ2VJRCwgY29uZmlndXJhdGlvbik7CisgICAgUmVmPFdlYlBhZ2VQcm94eT4gd2Vi
UGFnZSA9IFdlYlBhZ2VQcm94eTo6Y3JlYXRlKHBhZ2VDbGllbnQsICp0aGlzLCBwYWdlSUQsIFdU
Rjo6bW92ZShwYWdlQ29uZmlndXJhdGlvbikpOwogCiAgICAgbV9wYWdlTWFwLnNldChwYWdlSUQs
IHdlYlBhZ2UucHRyKCkpOwogICAgIGdsb2JhbFBhZ2VNYXAoKS5zZXQocGFnZUlELCB3ZWJQYWdl
LnB0cigpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmgJKHJldmlzaW9uIDE4ODE5MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6CiAgICAg
V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sKCkgeyByZXR1cm4gbV9wcm9jZXNzUG9vbDsgfQog
CiAgICAgc3RhdGljIFdlYlBhZ2VQcm94eSogd2ViUGFnZSh1aW50NjRfdCBwYWdlSUQpOwotICAg
IFJlZjxXZWJQYWdlUHJveHk+IGNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYsIGNvbnN0IFdlYlBh
Z2VDb25maWd1cmF0aW9uJik7CisgICAgUmVmPFdlYlBhZ2VQcm94eT4gY3JlYXRlV2ViUGFnZShQ
YWdlQ2xpZW50JiwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpOwogICAgIHZvaWQgYWRk
RXhpc3RpbmdXZWJQYWdlKFdlYlBhZ2VQcm94eSosIHVpbnQ2NF90IHBhZ2VJRCk7CiAgICAgdm9p
ZCByZW1vdmVXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwCShyZXZp
c2lvbiAxODgxOTApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25m
aWd1cmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsMTEgQEAgdXNpbmcgbmFt
ZXNwYWNlIFdlYktpdDsKIAogbmFtZXNwYWNlIEFQSSB7CiAKK1JlZjxQYWdlQ29uZmlndXJhdGlv
bj4gUGFnZUNvbmZpZ3VyYXRpb246OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgUGFnZUNvbmZpZ3VyYXRpb24pOworfQorCiBQYWdlQ29uZmlndXJhdGlvbjo6UGFnZUNvbmZp
Z3VyYXRpb24oKQogewogfQpAQCAtNDUsNiArNTAsMjkgQEAgUGFnZUNvbmZpZ3VyYXRpb246On5Q
YWdlQ29uZmlndXJhdGlvbigpCiB7CiB9CiAKK1JlZjxQYWdlQ29uZmlndXJhdGlvbj4gUGFnZUNv
bmZpZ3VyYXRpb246OmNvcHkoKSBjb25zdAoreworICAgIGF1dG8gY29weSA9IHRoaXMtPmNyZWF0
ZSgpOworCisgICAgY29weS0+bV9wcm9jZXNzUG9vbCA9IHRoaXMtPm1fcHJvY2Vzc1Bvb2w7Cisg
ICAgY29weS0+bV91c2VyQ29udGVudENvbnRyb2xsZXIgPSB0aGlzLT5tX3VzZXJDb250ZW50Q29u
dHJvbGxlcjsKKyAgICBjb3B5LT5tX3BhZ2VHcm91cCA9IHRoaXMtPm1fcGFnZUdyb3VwOworICAg
IGNvcHktPm1fcHJlZmVyZW5jZXMgPSB0aGlzLT5tX3ByZWZlcmVuY2VzOworICAgIGNvcHktPm1f
cHJlZmVyZW5jZVZhbHVlcyA9IHRoaXMtPm1fcHJlZmVyZW5jZVZhbHVlczsKKyAgICBjb3B5LT5t
X3JlbGF0ZWRQYWdlID0gdGhpcy0+bV9yZWxhdGVkUGFnZTsKKyAgICBjb3B5LT5tX3Zpc2l0ZWRM
aW5rUHJvdmlkZXIgPSB0aGlzLT5tX3Zpc2l0ZWRMaW5rUHJvdmlkZXI7CisgICAgY29weS0+bV93
ZWJzaXRlRGF0YVN0b3JlID0gdGhpcy0+bV93ZWJzaXRlRGF0YVN0b3JlOworICAgIGNvcHktPm1f
c2Vzc2lvbklEID0gdGhpcy0+bV9zZXNzaW9uSUQ7CisgICAgY29weS0+bV90cmVhdHNTSEExU2ln
bmVkQ2VydGlmaWNhdGVzQXNJbnNlY3VyZSA9IHRoaXMtPm1fdHJlYXRzU0hBMVNpZ25lZENlcnRp
ZmljYXRlc0FzSW5zZWN1cmU7CisKKyNpZiBQTEFURk9STShJT1MpCisgICAgY29weS0+bV9hbHdh
eXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHkgPSB0aGlzLT5tX2Fsd2F5c1J1bnNBdEZvcmVncm91
bmRQcmlvcml0eTsKKyNlbmRpZgorCisgICAgcmV0dXJuIGNvcHk7Cit9CisKKwogV2ViUHJvY2Vz
c1Bvb2wqIFBhZ2VDb25maWd1cmF0aW9uOjpwcm9jZXNzUG9vbCgpCiB7CiAgICAgcmV0dXJuIG1f
cHJvY2Vzc1Bvb2wuZ2V0KCk7CkBAIC05NSwxNiArMTIzLDM1IEBAIHZvaWQgUGFnZUNvbmZpZ3Vy
YXRpb246OnNldFJlbGF0ZWRQYWdlKFcKICAgICBtX3JlbGF0ZWRQYWdlID0gcmVsYXRlZFBhZ2U7
CiB9CiAKLVdlYktpdDo6V2ViUGFnZUNvbmZpZ3VyYXRpb24gUGFnZUNvbmZpZ3VyYXRpb246Ondl
YlBhZ2VDb25maWd1cmF0aW9uKCkKKworVmlzaXRlZExpbmtQcm92aWRlciogUGFnZUNvbmZpZ3Vy
YXRpb246OnZpc2l0ZWRMaW5rUHJvdmlkZXIoKQogewotICAgIFdlYktpdDo6V2ViUGFnZUNvbmZp
Z3VyYXRpb24gY29uZmlndXJhdGlvbjsKKyAgICByZXR1cm4gbV92aXNpdGVkTGlua1Byb3ZpZGVy
LmdldCgpOworfQogCi0gICAgY29uZmlndXJhdGlvbi51c2VyQ29udGVudENvbnRyb2xsZXIgPSB1
c2VyQ29udGVudENvbnRyb2xsZXIoKTsKLSAgICBjb25maWd1cmF0aW9uLnBhZ2VHcm91cCA9IHBh
Z2VHcm91cCgpOwotICAgIGNvbmZpZ3VyYXRpb24ucHJlZmVyZW5jZXMgPSBwcmVmZXJlbmNlcygp
OwotICAgIGNvbmZpZ3VyYXRpb24ucmVsYXRlZFBhZ2UgPSByZWxhdGVkUGFnZSgpOwordm9pZCBQ
YWdlQ29uZmlndXJhdGlvbjo6c2V0VmlzaXRlZExpbmtQcm92aWRlcihWaXNpdGVkTGlua1Byb3Zp
ZGVyKiB2aXNpdGVkTGlua1Byb3ZpZGVyKQoreworICAgIG1fdmlzaXRlZExpbmtQcm92aWRlciA9
IHZpc2l0ZWRMaW5rUHJvdmlkZXI7Cit9CisKK0FQSTo6V2Vic2l0ZURhdGFTdG9yZSogUGFnZUNv
bmZpZ3VyYXRpb246OndlYnNpdGVEYXRhU3RvcmUoKQoreworICAgIHJldHVybiBtX3dlYnNpdGVE
YXRhU3RvcmUuZ2V0KCk7Cit9CiAKLSAgICByZXR1cm4gY29uZmlndXJhdGlvbjsKK3ZvaWQgUGFn
ZUNvbmZpZ3VyYXRpb246OnNldFdlYnNpdGVEYXRhU3RvcmUoQVBJOjpXZWJzaXRlRGF0YVN0b3Jl
KiB3ZWJzaXRlRGF0YVN0b3JlKQoreworICAgIG1fd2Vic2l0ZURhdGFTdG9yZSA9IHdlYnNpdGVE
YXRhU3RvcmU7Cit9CisKK1dlYkNvcmU6OlNlc3Npb25JRCBQYWdlQ29uZmlndXJhdGlvbjo6c2Vz
c2lvbklEKCkKK3sKKyAgICByZXR1cm4gbV9zZXNzaW9uSUQ7Cit9CisKK3ZvaWQgUGFnZUNvbmZp
Z3VyYXRpb246OnNldFNlc3Npb25JRChXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQorewor
ICAgIG1fc2Vzc2lvbklEID0gc2Vzc2lvbklEOwogfQogCiB9IC8vIG5hbWVzcGFjZSBBUEkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1
cmF0aW9uLmgJKHJldmlzaW9uIDE4ODE5MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMjcgKzI3LDMy
IEBACiAjZGVmaW5lIEFQSVBhZ2VDb25maWd1cmF0aW9uX2gKIAogI2luY2x1ZGUgIkFQSU9iamVj
dC5oIgorI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzU3RvcmUuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KIAogbmFtZXNwYWNlIFdlYktp
dCB7Ci1zdHJ1Y3QgV2ViUGFnZUNvbmZpZ3VyYXRpb247Ci1jbGFzcyBXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eTsKLWNsYXNzIFdlYlByb2Nlc3NQb29sOworY2xhc3MgVmlzaXRlZExpbmtQ
cm92aWRlcjsKIGNsYXNzIFdlYlBhZ2VHcm91cDsKLWNsYXNzIFdlYlByZWZlcmVuY2VzOwogY2xh
c3MgV2ViUGFnZVByb3h5OworY2xhc3MgV2ViUHJlZmVyZW5jZXM7CitjbGFzcyBXZWJQcm9jZXNz
UG9vbDsKK2NsYXNzIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OwogfQogCiBuYW1lc3Bh
Y2UgQVBJIHsKIAorY2xhc3MgV2Vic2l0ZURhdGFTdG9yZTsKKwogY2xhc3MgUGFnZUNvbmZpZ3Vy
YXRpb24gOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6OlBhZ2VDb25maWd1cmF0aW9u
PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxQYWdlQ29uZmlndXJhdGlvbj4gY3JlYXRlKCkK
LSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBhZ2VDb25maWd1cmF0aW9uKTsK
LSAgICB9CisgICAgc3RhdGljIFJlZjxQYWdlQ29uZmlndXJhdGlvbj4gY3JlYXRlKCk7CisKKyAg
ICBleHBsaWNpdCBQYWdlQ29uZmlndXJhdGlvbigpOwogICAgIHZpcnR1YWwgflBhZ2VDb25maWd1
cmF0aW9uKCk7CiAKKyAgICBSZWY8UGFnZUNvbmZpZ3VyYXRpb24+IGNvcHkoKSBjb25zdDsKKwog
ICAgIC8vIEZJWE1FOiBUaGUgY29uZmlndXJhdGlvbiBwcm9wZXJ0aWVzIHNob3VsZCByZXR1cm4g
dGhlaXIgZGVmYXVsdCB2YWx1ZXMKICAgICAvLyByYXRoZXIgdGhhbiBudWxscHRyLgogICAgIApA
QCAtNjMsMTkgKzY4LDQ3IEBAIHB1YmxpYzoKICAgICBXZWJLaXQ6OldlYlByZWZlcmVuY2VzKiBw
cmVmZXJlbmNlcygpOwogICAgIHZvaWQgc2V0UHJlZmVyZW5jZXMoV2ViS2l0OjpXZWJQcmVmZXJl
bmNlcyopOwogCisgICAgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZU1hcCYgcHJl
ZmVyZW5jZVZhbHVlcygpIHsgcmV0dXJuIG1fcHJlZmVyZW5jZVZhbHVlczsgfQorCiAgICAgV2Vi
S2l0OjpXZWJQYWdlUHJveHkqIHJlbGF0ZWRQYWdlKCk7CiAgICAgdm9pZCBzZXRSZWxhdGVkUGFn
ZShXZWJLaXQ6OldlYlBhZ2VQcm94eSopOwogCi0gICAgV2ViS2l0OjpXZWJQYWdlQ29uZmlndXJh
dGlvbiB3ZWJQYWdlQ29uZmlndXJhdGlvbigpOworICAgIFdlYktpdDo6VmlzaXRlZExpbmtQcm92
aWRlciogdmlzaXRlZExpbmtQcm92aWRlcigpOworICAgIHZvaWQgc2V0VmlzaXRlZExpbmtQcm92
aWRlcihXZWJLaXQ6OlZpc2l0ZWRMaW5rUHJvdmlkZXIqKTsKKworICAgIFdlYnNpdGVEYXRhU3Rv
cmUqIHdlYnNpdGVEYXRhU3RvcmUoKTsKKyAgICB2b2lkIHNldFdlYnNpdGVEYXRhU3RvcmUoV2Vi
c2l0ZURhdGFTdG9yZSopOworCisgICAgV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCgpOwor
ICAgIHZvaWQgc2V0U2Vzc2lvbklEKFdlYkNvcmU6OlNlc3Npb25JRCk7CisKKyAgICBib29sIHRy
ZWF0c1NIQTFTaWduZWRDZXJ0aWZpY2F0ZXNBc0luc2VjdXJlKCkgeyByZXR1cm4gbV90cmVhdHNT
SEExU2lnbmVkQ2VydGlmaWNhdGVzQXNJbnNlY3VyZTsgfQorICAgIHZvaWQgc2V0VHJlYXRzU0hB
MVNpZ25lZENlcnRpZmljYXRlc0FzSW5zZWN1cmUoYm9vbCB0cmVhdHNTSEExU2lnbmVkQ2VydGlm
aWNhdGVzQXNJbnNlY3VyZSkgeyBtX3RyZWF0c1NIQTFTaWduZWRDZXJ0aWZpY2F0ZXNBc0luc2Vj
dXJlID0gdHJlYXRzU0hBMVNpZ25lZENlcnRpZmljYXRlc0FzSW5zZWN1cmU7IH0gCisKKyNpZiBQ
TEFURk9STShJT1MpCisgICAgYm9vbCBhbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHkoKSB7
IHJldHVybiBtX2Fsd2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eTsgfQorICAgIHZvaWQgc2V0
QWx3YXlzUnVuc0F0Rm9yZWdyb3VuZFByaW9yaXR5KGJvb2wgYWx3YXlzUnVuc0F0Rm9yZWdyb3Vu
ZFByaW9yaXR5KSB7IG1fYWx3YXlzUnVuc0F0Rm9yZWdyb3VuZFByaW9yaXR5ID0gYWx3YXlzUnVu
c0F0Rm9yZWdyb3VuZFByaW9yaXR5OyB9IAorI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgUGFnZUNv
bmZpZ3VyYXRpb24oKTsKIAogICAgIFJlZlB0cjxXZWJLaXQ6OldlYlByb2Nlc3NQb29sPiBtX3By
b2Nlc3NQb29sOwogICAgIFJlZlB0cjxXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5PiBtX3VzZXJDb250ZW50Q29udHJvbGxlcjsKICAgICBSZWZQdHI8V2ViS2l0OjpXZWJQYWdl
R3JvdXA+IG1fcGFnZUdyb3VwOwogICAgIFJlZlB0cjxXZWJLaXQ6OldlYlByZWZlcmVuY2VzPiBt
X3ByZWZlcmVuY2VzOworICAgIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWVNYXAg
bV9wcmVmZXJlbmNlVmFsdWVzOwogICAgIFJlZlB0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4gbV9y
ZWxhdGVkUGFnZTsKKyAgICBSZWZQdHI8V2ViS2l0OjpWaXNpdGVkTGlua1Byb3ZpZGVyPiBtX3Zp
c2l0ZWRMaW5rUHJvdmlkZXI7CisKKyAgICBSZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4gbV93ZWJz
aXRlRGF0YVN0b3JlOworICAgIC8vIEZJWE1FOiBXZSBjdXJyZW50bHkgaGF2ZSB0byBwYXNzIHRo
ZSBzZXNzaW9uIElEIHNlcGFyYXRlbHkgaGVyZSB0byBzdXBwb3J0IHRoZSBsZWdhY3kgcHJpdmF0
ZSBicm93c2luZyBzZXNzaW9uLgorICAgIC8vIE9uY2Ugd2UgZ2V0IHJpZCBvZiBpdCB3ZSBzaG91
bGQgZ2V0IHJpZCBvZiB0aGlzIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyIGFzIHdlbGwuCisgICAg
V2ViQ29yZTo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOworCisgICAgYm9vbCBtX3RyZWF0c1NIQTFT
aWduZWRDZXJ0aWZpY2F0ZXNBc0luc2VjdXJlID0gZmFsc2U7CisjaWYgUExBVEZPUk0oSU9TKQor
ICAgIGJvb2wgbV9hbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHkgPSBmYWxzZTsKKyNlbmRp
ZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgQVBJCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tQYWdlLmNwcAkocmV2aXNpb24gMTg4MTkwKQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcg
QEAKICNpbmNsdWRlICJBUElOYXZpZ2F0aW9uQWN0aW9uLmgiCiAjaW5jbHVkZSAiQVBJTmF2aWdh
dGlvbkNsaWVudC5oIgogI2luY2x1ZGUgIkFQSU5hdmlnYXRpb25SZXNwb25zZS5oIgorI2luY2x1
ZGUgIkFQSVBhZ2VDb25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiQVBJUG9saWN5Q2xpZW50Lmgi
CiAjaW5jbHVkZSAiQVBJU2Vzc2lvblN0YXRlLmgiCiAjaW5jbHVkZSAiQVBJVUlDbGllbnQuaCIK
QEAgLTEyNyw2ICsxMjgsMTIgQEAgV0tQYWdlR3JvdXBSZWYgV0tQYWdlR2V0UGFnZUdyb3VwKFdL
UGFnZQogICAgIHJldHVybiB0b0FQSSgmdG9JbXBsKHBhZ2VSZWYpLT5wYWdlR3JvdXAoKSk7CiB9
CiAKK1dLUGFnZUNvbmZpZ3VyYXRpb25SZWYgV0tQYWdlQ29weVBhZ2VDb25maWd1cmF0aW9uKFdL
UGFnZVJlZiBwYWdlUmVmKQoreworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IHRvSW1wbChwYWdl
UmVmKS0+Y29uZmlndXJhdGlvbigpLmNvcHkoKTsKKyAgICByZXR1cm4gdG9BUEkoJmNvbmZpZ3Vy
YXRpb24ubGVha1JlZigpKTsKK30KKwogdm9pZCBXS1BhZ2VMb2FkVVJMKFdLUGFnZVJlZiBwYWdl
UmVmLCBXS1VSTFJlZiBVUkxSZWYpCiB7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5sb2FkUmVxdWVz
dChVUkwoVVJMKCksIHRvV1RGU3RyaW5nKFVSTFJlZikpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgJKHJldmlzaW9uIDE4ODE5MCkKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTks
OCBAQCBXS19FWFBPUlQgV0tUeXBlSUQgV0tQYWdlR2V0VHlwZUlEKCk7CiBXS19FWFBPUlQgV0tD
b250ZXh0UmVmIFdLUGFnZUdldENvbnRleHQoV0tQYWdlUmVmIHBhZ2UpOwogV0tfRVhQT1JUIFdL
UGFnZUdyb3VwUmVmIFdLUGFnZUdldFBhZ2VHcm91cChXS1BhZ2VSZWYgcGFnZSk7CiAKK1dLX0VY
UE9SVCBXS1BhZ2VDb25maWd1cmF0aW9uUmVmIFdLUGFnZUNvcHlQYWdlQ29uZmlndXJhdGlvbihX
S1BhZ2VSZWYgcGFnZSk7CisKIC8vIFVSTCBSZXF1ZXN0cwogV0tfRVhQT1JUIHZvaWQgV0tQYWdl
TG9hZFVSTChXS1BhZ2VSZWYgcGFnZSwgV0tVUkxSZWYgdXJsKTsKIFdLX0VYUE9SVCB2b2lkIFdL
UGFnZUxvYWRVUkxXaXRoVXNlckRhdGEoV0tQYWdlUmVmIHBhZ2UsIFdLVVJMUmVmIHVybCwgV0tU
eXBlUmVmIHVzZXJEYXRhKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2VDb25maWd1cmF0aW9uUmVmLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tQYWdlQ29uZmlndXJhdGlvblJlZi5jcHAJKHJldmlzaW9uIDE4ODE5
MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VDb25maWd1cmF0aW9u
UmVmLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTMsMyArOTMsMTMgQEAgdm9pZCBXS1BhZ2VDb25m
aWd1cmF0aW9uU2V0UmVsYXRlZFBhZ2UoVwogewogICAgIHRvSW1wbChjb25maWd1cmF0aW9uKS0+
c2V0UmVsYXRlZFBhZ2UodG9JbXBsKHJlbGF0ZWRQYWdlKSk7CiB9CisKK1dLV2Vic2l0ZURhdGFT
dG9yZVJlZiBXS1BhZ2VDb25maWd1cmF0aW9uR2V0V2Vic2l0ZURhdGFTdG9yZShXS1BhZ2VDb25m
aWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24pCit7CisgICAgcmV0dXJuIHRvQVBJKHRvSW1wbChj
b25maWd1cmF0aW9uKS0+d2Vic2l0ZURhdGFTdG9yZSgpKTsKK30KKwordm9pZCBXS1BhZ2VDb25m
aWd1cmF0aW9uU2V0V2Vic2l0ZURhdGFTdG9yZShXS1BhZ2VDb25maWd1cmF0aW9uUmVmIGNvbmZp
Z3VyYXRpb24sIFdLV2Vic2l0ZURhdGFTdG9yZVJlZiB3ZWJzaXRlRGF0YVN0b3JlKQoreworICAg
IHRvSW1wbChjb25maWd1cmF0aW9uKS0+c2V0V2Vic2l0ZURhdGFTdG9yZSh0b0ltcGwod2Vic2l0
ZURhdGFTdG9yZSkpOworfQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
UGFnZUNvbmZpZ3VyYXRpb25SZWYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlQ29uZmlndXJhdGlvblJlZi5oCShyZXZpc2lvbiAxODgxOTApCisr
KyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlQ29uZmlndXJhdGlvblJlZi5o
CSh3b3JraW5nIGNvcHkpCkBAIC01MSw2ICs1MSw5IEBAIFdLX0VYUE9SVCB2b2lkIFdLUGFnZUNv
bmZpZ3VyYXRpb25TZXRQcmUKIFdLX0VYUE9SVCBXS1BhZ2VSZWYgV0tQYWdlQ29uZmlndXJhdGlv
bkdldFJlbGF0ZWRQYWdlKFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbik7CiBX
S19FWFBPUlQgdm9pZCBXS1BhZ2VDb25maWd1cmF0aW9uU2V0UmVsYXRlZFBhZ2UoV0tQYWdlQ29u
ZmlndXJhdGlvblJlZiBjb25maWd1cmF0aW9uLCBXS1BhZ2VSZWYgcmVsYXRlZFBhZ2UpOwogCitX
S19FWFBPUlQgV0tXZWJzaXRlRGF0YVN0b3JlUmVmIFdLUGFnZUNvbmZpZ3VyYXRpb25HZXRXZWJz
aXRlRGF0YVN0b3JlKFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbik7CitXS19F
WFBPUlQgdm9pZCBXS1BhZ2VDb25maWd1cmF0aW9uU2V0V2Vic2l0ZURhdGFTdG9yZShXS1BhZ2VD
b25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24sIFdLV2Vic2l0ZURhdGFTdG9yZVJlZiB3ZWJz
aXRlRGF0YVN0b3JlKTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCShyZXZp
c2lvbiAxODgxOTApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2lmIFdLX0FQSV9FTkFC
TEVECiAKICNpbXBvcnQgIkFQSUZvcm1DbGllbnQuaCIKKyNpbXBvcnQgIkFQSVBhZ2VDb25maWd1
cmF0aW9uLmgiCiAjaW1wb3J0ICJBUElTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbXBvcnQg
IkNvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXIuaCIKICNpbXBvcnQgIkRpYWdub3N0aWNMb2dn
aW5nQ2xpZW50LmgiCkBAIC0zMDAsMzYgKzMwMSwzOCBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhGcmFtZTooQ0dSZWN0KWZyCiAgICAgQ0dSZWN0IGJvdW5kcyA9IHNlbGYuYm91bmRzOwogCiAg
ICAgV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wgPSAqW19jb25maWd1cmF0aW9u
IHByb2Nlc3NQb29sXS0+X3Byb2Nlc3NQb29sOworICAgIAorICAgIFJlZjxBUEk6OlBhZ2VDb25m
aWd1cmF0aW9uPiBwYWdlQ29uZmlndXJhdGlvbiA9IEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OmNy
ZWF0ZSgpOwogCi0gICAgV2ViS2l0OjpXZWJQYWdlQ29uZmlndXJhdGlvbiB3ZWJQYWdlQ29uZmln
dXJhdGlvbjsKLSAgICB3ZWJQYWdlQ29uZmlndXJhdGlvbi5wcmVmZXJlbmNlcyA9IFtfY29uZmln
dXJhdGlvbiBwcmVmZXJlbmNlc10tPl9wcmVmZXJlbmNlcy5nZXQoKTsKKyAgICBwYWdlQ29uZmln
dXJhdGlvbi0+c2V0UHJvY2Vzc1Bvb2woJnByb2Nlc3NQb29sKTsKKyAgICBwYWdlQ29uZmlndXJh
dGlvbi0+c2V0UHJlZmVyZW5jZXMoW19jb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXS0+X3ByZWZl
cmVuY2VzLmdldCgpKTsKICAgICBpZiAoV0tXZWJWaWV3ICpyZWxhdGVkV2ViVmlldyA9IFtfY29u
ZmlndXJhdGlvbiBfcmVsYXRlZFdlYlZpZXddKQotICAgICAgICB3ZWJQYWdlQ29uZmlndXJhdGlv
bi5yZWxhdGVkUGFnZSA9IHJlbGF0ZWRXZWJWaWV3LT5fcGFnZS5nZXQoKTsKKyAgICAgICAgcGFn
ZUNvbmZpZ3VyYXRpb24tPnNldFJlbGF0ZWRQYWdlKHJlbGF0ZWRXZWJWaWV3LT5fcGFnZS5nZXQo
KSk7CiAKLSAgICB3ZWJQYWdlQ29uZmlndXJhdGlvbi51c2VyQ29udGVudENvbnRyb2xsZXIgPSBb
X2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXS0+X3VzZXJDb250ZW50Q29udHJv
bGxlclByb3h5LmdldCgpOwotICAgIHdlYlBhZ2VDb25maWd1cmF0aW9uLnZpc2l0ZWRMaW5rUHJv
dmlkZXIgPSBbX2NvbmZpZ3VyYXRpb24gX3Zpc2l0ZWRMaW5rUHJvdmlkZXJdLT5fdmlzaXRlZExp
bmtQcm92aWRlci5nZXQoKTsKLSAgICB3ZWJQYWdlQ29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0
b3JlID0gJltfY29uZmlndXJhdGlvbiB3ZWJzaXRlRGF0YVN0b3JlXS0+X3dlYnNpdGVEYXRhU3Rv
cmUtPndlYnNpdGVEYXRhU3RvcmUoKTsKLSAgICB3ZWJQYWdlQ29uZmlndXJhdGlvbi5zZXNzaW9u
SUQgPSB3ZWJQYWdlQ29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlLT5zZXNzaW9uSUQoKTsK
LSAgICB3ZWJQYWdlQ29uZmlndXJhdGlvbi50cmVhdHNTSEExU2lnbmVkQ2VydGlmaWNhdGVzQXNJ
bnNlY3VyZSA9IFtfY29uZmlndXJhdGlvbiBfdHJlYXRzU0hBMVNpZ25lZENlcnRpZmljYXRlc0Fz
SW5zZWN1cmVdOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRVc2VyQ29udGVudENvbnRyb2xs
ZXIoW19jb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0tPl91c2VyQ29udGVudENv
bnRyb2xsZXJQcm94eS5nZXQoKSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFZpc2l0ZWRM
aW5rUHJvdmlkZXIoW19jb25maWd1cmF0aW9uIF92aXNpdGVkTGlua1Byb3ZpZGVyXS0+X3Zpc2l0
ZWRMaW5rUHJvdmlkZXIuZ2V0KCkpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRXZWJzaXRl
RGF0YVN0b3JlKFtfY29uZmlndXJhdGlvbiB3ZWJzaXRlRGF0YVN0b3JlXS0+X3dlYnNpdGVEYXRh
U3RvcmUuZ2V0KCkpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRTZXNzaW9uSUQocGFnZUNv
bmZpZ3VyYXRpb24tPndlYnNpdGVEYXRhU3RvcmUoKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Np
b25JRCgpKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0VHJlYXRzU0hBMVNpZ25lZENlcnRp
ZmljYXRlc0FzSW5zZWN1cmUoW19jb25maWd1cmF0aW9uIF90cmVhdHNTSEExU2lnbmVkQ2VydGlm
aWNhdGVzQXNJbnNlY3VyZV0pOwogCiAgICAgUmVmUHRyPFdlYktpdDo6V2ViUGFnZUdyb3VwPiBw
YWdlR3JvdXA7CiAgICAgTlNTdHJpbmcgKmdyb3VwSWRlbnRpZmllciA9IGNvbmZpZ3VyYXRpb24u
X2dyb3VwSWRlbnRpZmllcjsKICAgICBpZiAoZ3JvdXBJZGVudGlmaWVyLmxlbmd0aCkgewogICAg
ICAgICBwYWdlR3JvdXAgPSBXZWJLaXQ6OldlYlBhZ2VHcm91cDo6Y3JlYXRlKGNvbmZpZ3VyYXRp
b24uX2dyb3VwSWRlbnRpZmllcik7Ci0gICAgICAgIHdlYlBhZ2VDb25maWd1cmF0aW9uLnBhZ2VH
cm91cCA9IHBhZ2VHcm91cC5nZXQoKTsKKyAgICAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFBh
Z2VHcm91cChwYWdlR3JvdXAuZ2V0KCkpOwogICAgIH0KIAotICAgIHdlYlBhZ2VDb25maWd1cmF0
aW9uLnByZWZlcmVuY2VWYWx1ZXMuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OnN1cHBy
ZXNzZXNJbmNyZW1lbnRhbFJlbmRlcmluZ0tleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3Rv
cmU6OlZhbHVlKCEhW19jb25maWd1cmF0aW9uIHN1cHByZXNzZXNJbmNyZW1lbnRhbFJlbmRlcmlu
Z10pKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJL
aXQ6OldlYlByZWZlcmVuY2VzS2V5OjpzdXBwcmVzc2VzSW5jcmVtZW50YWxSZW5kZXJpbmdLZXko
KSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZSghIVtfY29uZmlndXJhdGlvbiBz
dXBwcmVzc2VzSW5jcmVtZW50YWxSZW5kZXJpbmddKSk7CiAKICNpZiBQTEFURk9STShJT1MpCi0g
ICAgd2ViUGFnZUNvbmZpZ3VyYXRpb24uYWx3YXlzUnVuc0F0Rm9yZWdyb3VuZFByaW9yaXR5ID0g
W19jb25maWd1cmF0aW9uIF9hbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHldOworICAgIHBh
Z2VDb25maWd1cmF0aW9uLT5zZXRBbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHkoW19jb25m
aWd1cmF0aW9uIF9hbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHldKTsKIAotICAgIHdlYlBh
Z2VDb25maWd1cmF0aW9uLnByZWZlcmVuY2VWYWx1ZXMuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5j
ZXNLZXk6OmFsbG93c0lubGluZU1lZGlhUGxheWJhY2tLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJl
bmNlc1N0b3JlOjpWYWx1ZSghIVtfY29uZmlndXJhdGlvbiBhbGxvd3NJbmxpbmVNZWRpYVBsYXli
YWNrXSkpOwotICAgIHdlYlBhZ2VDb25maWd1cmF0aW9uLnByZWZlcmVuY2VWYWx1ZXMuc2V0KFdl
YktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OmFsbG93c1BpY3R1cmVJblBpY3R1cmVNZWRpYVBsYXli
YWNrS2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoISFbX2NvbmZpZ3Vy
YXRpb24gYWxsb3dzUGljdHVyZUluUGljdHVyZU1lZGlhUGxheWJhY2tdICYmIHNob3VsZEFsbG93
UGljdHVyZUluUGljdHVyZU1lZGlhUGxheWJhY2soKSkpOwotICAgIHdlYlBhZ2VDb25maWd1cmF0
aW9uLnByZWZlcmVuY2VWYWx1ZXMuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OnJlcXVp
cmVzVXNlckdlc3R1cmVGb3JNZWRpYVBsYXliYWNrS2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5j
ZXNTdG9yZTo6VmFsdWUoISFbX2NvbmZpZ3VyYXRpb24gcmVxdWlyZXNVc2VyQWN0aW9uRm9yTWVk
aWFQbGF5YmFja10pKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygp
LnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5OjphbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNr
S2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoISFbX2NvbmZpZ3VyYXRp
b24gYWxsb3dzSW5saW5lTWVkaWFQbGF5YmFja10pKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+
cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5OjphbGxvd3NQ
aWN0dXJlSW5QaWN0dXJlTWVkaWFQbGF5YmFja0tleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2Vz
U3RvcmU6OlZhbHVlKCEhW19jb25maWd1cmF0aW9uIGFsbG93c1BpY3R1cmVJblBpY3R1cmVNZWRp
YVBsYXliYWNrXSAmJiBzaG91bGRBbGxvd1BpY3R1cmVJblBpY3R1cmVNZWRpYVBsYXliYWNrKCkp
KTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6
OldlYlByZWZlcmVuY2VzS2V5OjpyZXF1aXJlc1VzZXJHZXN0dXJlRm9yTWVkaWFQbGF5YmFja0tl
eSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKCEhW19jb25maWd1cmF0aW9u
IHJlcXVpcmVzVXNlckFjdGlvbkZvck1lZGlhUGxheWJhY2tdKSk7CiAjZW5kaWYKICNpZiBFTkFC
TEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQotICAgIHdlYlBhZ2VDb25maWd1cmF0aW9uLnBy
ZWZlcmVuY2VWYWx1ZXMuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OmFsbG93c0FpclBs
YXlGb3JNZWRpYVBsYXliYWNrS2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFs
dWUoISFbX2NvbmZpZ3VyYXRpb24gYWxsb3dzQWlyUGxheUZvck1lZGlhUGxheWJhY2tdKSk7Cisg
ICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQ
cmVmZXJlbmNlc0tleTo6YWxsb3dzQWlyUGxheUZvck1lZGlhUGxheWJhY2tLZXkoKSwgV2ViS2l0
OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZSghIVtfY29uZmlndXJhdGlvbiBhbGxvd3NBaXJQ
bGF5Rm9yTWVkaWFQbGF5YmFja10pKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAt
MzM5LDcgKzM0Miw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihDR1JlY3QpZnIK
IAogICAgIFtzZWxmIGFkZFN1YnZpZXc6X3Njcm9sbFZpZXcuZ2V0KCldOwogCi0gICAgX2NvbnRl
bnRWaWV3ID0gYWRvcHROUyhbW1dLQ29udGVudFZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Ym91
bmRzIHByb2Nlc3NQb29sOnByb2Nlc3NQb29sIGNvbmZpZ3VyYXRpb246V1RGOjptb3ZlKHdlYlBh
Z2VDb25maWd1cmF0aW9uKSB3ZWJWaWV3OnNlbGZdKTsKKyAgICBfY29udGVudFZpZXcgPSBhZG9w
dE5TKFtbV0tDb250ZW50VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpib3VuZHMgcHJvY2Vzc1Bv
b2w6cHJvY2Vzc1Bvb2wgY29uZmlndXJhdGlvbjpXVEY6Om1vdmUocGFnZUNvbmZpZ3VyYXRpb24p
IHdlYlZpZXc6c2VsZl0pOwogCiAgICAgX3BhZ2UgPSBbX2NvbnRlbnRWaWV3IHBhZ2VdOwogICAg
IF9wYWdlLT5zZXREZXZpY2VPcmllbnRhdGlvbihkZXZpY2VPcmllbnRhdGlvbigpKTsKQEAgLTM2
Nyw3ICszNzAsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyCiAj
ZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBfd2tWaWV3ID0gYWRvcHROUyhbW1dLVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpib3VuZHMgcHJvY2Vzc1Bvb2w6cHJvY2Vzc1Bvb2wgY29u
ZmlndXJhdGlvbjpXVEY6Om1vdmUod2ViUGFnZUNvbmZpZ3VyYXRpb24pIHdlYlZpZXc6c2VsZl0p
OworICAgIF93a1ZpZXcgPSBhZG9wdE5TKFtbV0tWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOmJv
dW5kcyBwcm9jZXNzUG9vbDpwcm9jZXNzUG9vbCBjb25maWd1cmF0aW9uOldURjo6bW92ZShwYWdl
Q29uZmlndXJhdGlvbikgd2ViVmlldzpzZWxmXSk7CiAgICAgW3NlbGYgYWRkU3Vidmlldzpfd2tW
aWV3LmdldCgpXTsKICAgICBfcGFnZSA9IFdlYktpdDo6dG9JbXBsKFtfd2tWaWV3IHBhZ2VSZWZd
KTsKIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29u
dGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViQ29udGV4dC5jcHAJKHJldmlzaW9uIDE4ODE5MCkKKysrIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMSw2ICsyMSw3IEBACiAjaW5jbHVkZSAiV2ViS2l0V2ViQ29udGV4dC5oIgogCiAjaW5jbHVk
ZSAiQVBJRG93bmxvYWRDbGllbnQuaCIKKyNpbmNsdWRlICJBUElQYWdlQ29uZmlndXJhdGlvbi5o
IgogI2luY2x1ZGUgIkFQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIkFQ
SVN0cmluZy5oIgogI2luY2x1ZGUgIlRleHRDaGVja2VyLmgiCkBAIC0xMzE1LDEzICsxMzE2LDE0
IEBAIHZvaWQgd2Via2l0V2ViQ29udGV4dERpZEZpbmlzaExvYWRpbmdDdXMKIHZvaWQgd2Via2l0
V2ViQ29udGV4dENyZWF0ZVBhZ2VGb3JXZWJWaWV3KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQs
IFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdFVzZXJDb250ZW50TWFuYWdlciogdXNlckNv
bnRlbnRNYW5hZ2VyLCBXZWJLaXRXZWJWaWV3KiByZWxhdGVkVmlldykKIHsKICAgICBXZWJLaXRX
ZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3ZWJWaWV3KTsK
LSAgICBXZWJQYWdlQ29uZmlndXJhdGlvbiB3ZWJQYWdlQ29uZmlndXJhdGlvbjsKLSAgICB3ZWJQ
YWdlQ29uZmlndXJhdGlvbi5wcmVmZXJlbmNlcyA9IHdlYmtpdFNldHRpbmdzR2V0UHJlZmVyZW5j
ZXMod2Via2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncyh3ZWJWaWV3KSk7Ci0gICAgd2ViUGFnZUNv
bmZpZ3VyYXRpb24ucmVsYXRlZFBhZ2UgPSByZWxhdGVkVmlldyA/IHdlYmtpdFdlYlZpZXdCYXNl
R2V0UGFnZShXRUJLSVRfV0VCX1ZJRVdfQkFTRShyZWxhdGVkVmlldykpIDogbnVsbHB0cjsKLSAg
ICB3ZWJQYWdlQ29uZmlndXJhdGlvbi51c2VyQ29udGVudENvbnRyb2xsZXIgPSB1c2VyQ29udGVu
dE1hbmFnZXIgPyB3ZWJraXRVc2VyQ29udGVudE1hbmFnZXJHZXRVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eSh1c2VyQ29udGVudE1hbmFnZXIpIDogbnVsbHB0cjsKLSAgICB3ZWJQYWdlQ29uZmln
dXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlID0gJndlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckdldERh
dGFTdG9yZShjb250ZXh0LT5wcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpOwotICAgIHdl
YlBhZ2VDb25maWd1cmF0aW9uLnNlc3Npb25JRCA9IHdlYlBhZ2VDb25maWd1cmF0aW9uLndlYnNp
dGVEYXRhU3RvcmUtPnNlc3Npb25JRCgpOwotICAgIHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlV2Vi
UGFnZSh3ZWJWaWV3QmFzZSwgY29udGV4dC0+cHJpdi0+Y29udGV4dC5nZXQoKSwgV1RGOjptb3Zl
KHdlYlBhZ2VDb25maWd1cmF0aW9uKSk7CisKKyAgICBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlv
bj4gcGFnZUNvbmZpZ3VyYXRpb24gPSBBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsK
KyAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UHJlZmVyZW5jZXMod2Via2l0U2V0dGluZ3NHZXRQ
cmVmZXJlbmNlcyh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKHdlYlZpZXcpKSk7CisgICAg
cGFnZUNvbmZpZ3VyYXRpb24tPnNldFJlbGF0ZWRQYWdlKHJlbGF0ZWRWaWV3ID8gd2Via2l0V2Vi
Vmlld0Jhc2VHZXRQYWdlKFdFQktJVF9XRUJfVklFV19CQVNFKHJlbGF0ZWRWaWV3KSkgOiBudWxs
cHRyKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0VXNlckNvbnRlbnRDb250cm9sbGVyKHVz
ZXJDb250ZW50TWFuYWdlciA/IHdlYmtpdFVzZXJDb250ZW50TWFuYWdlckdldFVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5KHVzZXJDb250ZW50TWFuYWdlcikgOiBudWxscHRyKTsKKyAgICBwYWdl
Q29uZmlndXJhdGlvbi0+c2V0V2Vic2l0ZURhdGFTdG9yZSgmd2Via2l0V2Vic2l0ZURhdGFNYW5h
Z2VyR2V0RGF0YVN0b3JlKGNvbnRleHQtPnByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkp
OworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRTZXNzaW9uSUQod2ViUGFnZUNvbmZpZ3VyYXRp
b24ud2Vic2l0ZURhdGFTdG9yZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2Vzc2lvbklEKCkpOwor
ICAgIHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlV2ViUGFnZSh3ZWJWaWV3QmFzZSwgY29udGV4dC0+
cHJpdi0+Y29udGV4dC5nZXQoKSwgV1RGOjptb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7CiAKICAg
ICBXZWJQYWdlUHJveHkqIHBhZ2UgPSB3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2Uod2ViVmlld0Jh
c2UpOwogICAgIGNvbnRleHQtPnByaXYtPndlYlZpZXdzLnNldChwYWdlLT5wYWdlSUQoKSwgd2Vi
Vmlldyk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJW
aWV3QmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCShyZXZpc2lvbiAxODgxOTApCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJL
aXRXZWJWaWV3QmFzZS5oIgogCisjaW5jbHVkZSAiQVBJUGFnZUNvbmZpZ3VyYXRpb24uaCIKICNp
bmNsdWRlICJEcmF3aW5nQXJlYVByb3h5SW1wbC5oIgogI2luY2x1ZGUgIklucHV0TWV0aG9kRmls
dGVyLmgiCiAjaW5jbHVkZSAiS2V5QmluZGluZ1RyYW5zbGF0b3IuaCIKQEAgLTEwNDQsMTIgKzEw
NDUsMTMgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2Jhc2VfY2xhc3NfaQogV2ViS2l0
V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlKFdlYlByb2Nlc3NQb29sKiBjb250
ZXh0LCBXZWJQcmVmZXJlbmNlcyogcHJlZmVyZW5jZXMsIFdlYlBhZ2VHcm91cCogcGFnZUdyb3Vw
LCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSogdXNlckNvbnRlbnRDb250cm9sbGVyLCBX
ZWJQYWdlUHJveHkqIHJlbGF0ZWRQYWdlKQogewogICAgIFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJr
aXRXZWJWaWV3QmFzZSA9IFdFQktJVF9XRUJfVklFV19CQVNFKGdfb2JqZWN0X25ldyhXRUJLSVRf
VFlQRV9XRUJfVklFV19CQVNFLCBudWxscHRyKSk7Ci0gICAgV2ViUGFnZUNvbmZpZ3VyYXRpb24g
d2ViUGFnZUNvbmZpZ3VyYXRpb247Ci0gICAgd2ViUGFnZUNvbmZpZ3VyYXRpb24ucHJlZmVyZW5j
ZXMgPSBwcmVmZXJlbmNlczsKLSAgICB3ZWJQYWdlQ29uZmlndXJhdGlvbi5wYWdlR3JvdXAgPSBw
YWdlR3JvdXA7Ci0gICAgd2ViUGFnZUNvbmZpZ3VyYXRpb24ucmVsYXRlZFBhZ2UgPSByZWxhdGVk
UGFnZTsKLSAgICB3ZWJQYWdlQ29uZmlndXJhdGlvbi51c2VyQ29udGVudENvbnRyb2xsZXIgPSB1
c2VyQ29udGVudENvbnRyb2xsZXI7Ci0gICAgd2Via2l0V2ViVmlld0Jhc2VDcmVhdGVXZWJQYWdl
KHdlYmtpdFdlYlZpZXdCYXNlLCBjb250ZXh0LCBXVEY6Om1vdmUod2ViUGFnZUNvbmZpZ3VyYXRp
b24pKTsKKworICAgIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiBwYWdlQ29uZmlndXJhdGlv
biA9IEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOworICAgIHBhZ2VDb25maWd1cmF0
aW9uLT5zZXRQcmVmZXJlbmNlcyhwcmVmZXJlbmNlcyk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24t
PnNldFBhZ2VHcm91cChwYWdlR3JvdXApOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRSZWxh
dGVkUGFnZShyZWxhdGVkUGFnZSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFVzZXJDb250
ZW50Q29udHJvbGxlcih1c2VyQ29udGVudENvbnRyb2xsZXIpOworICAgIHdlYmtpdFdlYlZpZXdC
YXNlQ3JlYXRlV2ViUGFnZSh3ZWJraXRXZWJWaWV3QmFzZSwgY29udGV4dCwgV1RGOjptb3ZlKHBh
Z2VDb25maWd1cmF0aW9uKSk7CiAgICAgcmV0dXJuIHdlYmtpdFdlYlZpZXdCYXNlOwogfQogCkBA
IC0xMDcwLDcgKzEwNzIsNyBAQCBzdGF0aWMgdm9pZCBkZXZpY2VTY2FsZUZhY3RvckNoYW5nZWQo
V2ViCiB9CiAjZW5kaWYgLy8gSEFWRShHVEtfU0NBTEVfRkFDVE9SKQogCi12b2lkIHdlYmtpdFdl
YlZpZXdCYXNlQ3JlYXRlV2ViUGFnZShXZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0V2ViVmlld0Jh
c2UsIFdlYlByb2Nlc3NQb29sKiBjb250ZXh0LCBXZWJQYWdlQ29uZmlndXJhdGlvbiYmIGNvbmZp
Z3VyYXRpb24pCit2b2lkIHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlV2ViUGFnZShXZWJLaXRXZWJW
aWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2UsIFdlYlByb2Nlc3NQb29sKiBjb250ZXh0LCBSZWY8
QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0aW9uKQogewogICAgIFdlYktpdFdl
YlZpZXdCYXNlUHJpdmF0ZSogcHJpdiA9IHdlYmtpdFdlYlZpZXdCYXNlLT5wcml2OwogICAgIHBy
aXYtPnBhZ2VQcm94eSA9IGNvbnRleHQtPmNyZWF0ZVdlYlBhZ2UoKnByaXYtPnBhZ2VDbGllbnQs
IFdURjo6bW92ZShjb25maWd1cmF0aW9uKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaAko
cmV2aXNpb24gMTg4MTkwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlld0Jhc2VQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAK
IFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZShXZWJLaXQ6OldlYlBy
b2Nlc3NQb29sKiwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlcyosIFdlYktpdDo6V2ViUGFnZUdyb3Vw
KiwgV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSosIFdlYktpdDo6V2ViUGFn
ZVByb3h5Kik7CiBHdGtJTUNvbnRleHQqIHdlYmtpdFdlYlZpZXdCYXNlR2V0SU1Db250ZXh0KFdl
YktpdFdlYlZpZXdCYXNlKik7CiBXZWJLaXQ6OldlYlBhZ2VQcm94eSogd2Via2l0V2ViVmlld0Jh
c2VHZXRQYWdlKFdlYktpdFdlYlZpZXdCYXNlKik7Ci12b2lkIHdlYmtpdFdlYlZpZXdCYXNlQ3Jl
YXRlV2ViUGFnZShXZWJLaXRXZWJWaWV3QmFzZSosIFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wqLCBX
ZWJLaXQ6OldlYlBhZ2VDb25maWd1cmF0aW9uJiYpOwordm9pZCB3ZWJraXRXZWJWaWV3QmFzZUNy
ZWF0ZVdlYlBhZ2UoV2ViS2l0V2ViVmlld0Jhc2UqLCBXZWJLaXQ6OldlYlByb2Nlc3NQb29sKiwg
UmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpOwogdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVNl
dFRvb2x0aXBUZXh0KFdlYktpdFdlYlZpZXdCYXNlKiwgY29uc3QgY2hhciopOwogdm9pZCB3ZWJr
aXRXZWJWaWV3QmFzZVNldFRvb2x0aXBBcmVhKFdlYktpdFdlYlZpZXdCYXNlKiwgY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYpOwogdm9pZCB3ZWJraXRXZWJWaWV3QmFzZUZvcndhcmROZXh0S2V5RXZl
bnQoV2ViS2l0V2ViVmlld0Jhc2UqKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmNwcAko
cmV2aXNpb24gMTg4MTkwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBA
QCBlbnVtIHsKIH07CiAKIHN0cnVjdCBfV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyUHJpdmF0ZSB7
Ci0gICAgUmVmUHRyPFdlYnNpdGVEYXRhU3RvcmU+IHdlYnNpdGVEYXRhU3RvcmU7CisgICAgUmVm
UHRyPEFQSTo6V2Vic2l0ZURhdGFTdG9yZT4gd2Vic2l0ZURhdGFTdG9yZTsKICAgICBHVW5pcXVl
UHRyPGNoYXI+IGJhc2VEYXRhRGlyZWN0b3J5OwogICAgIEdVbmlxdWVQdHI8Y2hhcj4gYmFzZUNh
Y2hlRGlyZWN0b3J5OwogICAgIEdVbmlxdWVQdHI8Y2hhcj4gbG9jYWxTdG9yYWdlRGlyZWN0b3J5
OwpAQCAtMjk5LDEyICsyOTksMTIgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYnNpdGVfZGF0YV9t
YW5hZ2VyXwogV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKiB3ZWJraXRXZWJzaXRlRGF0YU1hbmFn
ZXJDcmVhdGUoV2Vic2l0ZURhdGFTdG9yZTo6Q29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24p
CiB7CiAgICAgV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKiBtYW5hZ2VyID0gV0VCS0lUX1dFQlNJ
VEVfREFUQV9NQU5BR0VSKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJTSVRFX0RBVEFfTUFO
QUdFUiwgbnVsbHB0cikpOwotICAgIG1hbmFnZXItPnByaXYtPndlYnNpdGVEYXRhU3RvcmUgPSBX
ZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGUoV1RGOjptb3ZlKGNvbmZpZ3VyYXRpb24pKTsKKyAgICBt
YW5hZ2VyLT5wcml2LT53ZWJzaXRlRGF0YVN0b3JlID0gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpj
cmVhdGUoV1RGOjptb3ZlKGNvbmZpZ3VyYXRpb24pKTsKIAogICAgIHJldHVybiBtYW5hZ2VyOwog
fQogCi1XZWJzaXRlRGF0YVN0b3JlJiB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJHZXREYXRhU3Rv
cmUoV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKiBtYW5hZ2VyKQorQVBJOjpXZWJzaXRlRGF0YVN0
b3JlJiB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJHZXREYXRhU3RvcmUoV2ViS2l0V2Vic2l0ZURh
dGFNYW5hZ2VyKiBtYW5hZ2VyKQogewogICAgIFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlclByaXZh
dGUqIHByaXYgPSBtYW5hZ2VyLT5wcml2OwogICAgIGlmICghcHJpdi0+d2Vic2l0ZURhdGFTdG9y
ZSkgewpAQCAtMzE4LDcgKzMxOCw3IEBAIFdlYnNpdGVEYXRhU3RvcmUmIHdlYmtpdFdlYnNpdGVE
YXRhTWFuYWcKICAgICAgICAgY29uZmlndXJhdGlvbi53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9
ICFwcml2LT53ZWJTUUxEaXJlY3RvcnkgPwogICAgICAgICAgICAgQVBJOjpXZWJzaXRlRGF0YVN0
b3JlOjpkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKSA6IFdlYkNvcmU6OmZpbGVuYW1l
VG9TdHJpbmcocHJpdi0+d2ViU1FMRGlyZWN0b3J5LmdldCgpKTsKICAgICAgICAgY29uZmlndXJh
dGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpOwotICAgICAgICBwcml2LT53ZWJzaXRl
RGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlKFdURjo6bW92ZShjb25maWd1cmF0
aW9uKSk7CisgICAgICAgIHByaXYtPndlYnNpdGVEYXRhU3RvcmUgPSBBUEk6OldlYnNpdGVEYXRh
U3RvcmU6OmNyZWF0ZShXVEY6Om1vdmUoY29uZmlndXJhdGlvbikpOwogICAgIH0KIAogICAgIHJl
dHVybiAqcHJpdi0+d2Vic2l0ZURhdGFTdG9yZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlclByaXZhdGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJzaXRlRGF0YU1h
bmFnZXJQcml2YXRlLmgJKHJldmlzaW9uIDE4ODE5MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlclByaXZhdGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMjAsMTAgKzIwLDExIEBACiAjaWZuZGVmIFdlYktpdFdlYnNpdGVEYXRhTWFuYWdl
clByaXZhdGVfaAogI2RlZmluZSBXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJQcml2YXRlX2gKIAor
I2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlICJXZWJLaXRQcml2YXRl
LmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogCiBXZWJLaXRXZWJzaXRlRGF0YU1h
bmFnZXIqIHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckNyZWF0ZShXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmU6OkNvbmZpZ3VyYXRpb24mJik7Ci1XZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUmIHdlYmtp
dFdlYnNpdGVEYXRhTWFuYWdlckdldERhdGFTdG9yZShXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIq
KTsKK0FQSTo6V2Vic2l0ZURhdGFTdG9yZSYgd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyR2V0RGF0
YVN0b3JlKFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciopOwogCiAjZW5kaWYgLy8gV2ViS2l0V2Vi
c2l0ZURhdGFNYW5hZ2VyUHJpdmF0ZV9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2lvcy9XS1ZpZXdJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9pb3MvV0tWaWV3SU9TLm1tCShyZXZpc2lvbiAxODgxOTApCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2lvcy9XS1ZpZXdJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTIy
NSwxMSArMjI1LDEyIEBAIC0gKHZvaWQpX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aENvbnRleHQK
IAogICAgIFtzZWxmIGFkZFN1YnZpZXc6X3Njcm9sbFZpZXcuZ2V0KCldOwogCi0gICAgV2ViS2l0
OjpXZWJQYWdlQ29uZmlndXJhdGlvbiB3ZWJQYWdlQ29uZmlndXJhdGlvbjsKLSAgICB3ZWJQYWdl
Q29uZmlndXJhdGlvbi5wYWdlR3JvdXAgPSB0b0ltcGwocGFnZUdyb3VwUmVmKTsKLSAgICB3ZWJQ
YWdlQ29uZmlndXJhdGlvbi5yZWxhdGVkUGFnZSA9IHRvSW1wbChyZWxhdGVkUGFnZSk7CisgICAg
UmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBBUEk6OlBhZ2VDb25m
aWd1cmF0aW9uOjpjcmVhdGUoKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRQcm9jZXNzUG9vbCh0
b0ltcGwoY29udGV4dFJlZikpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldFBhZ2VHcm91cCh0b0lt
cGwocGFnZUdyb3VwUmVmKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0UmVsYXRlZFBhZ2UodG9J
bXBsKHJlbGF0ZWRQYWdlKSk7CiAKLSAgICBfY29udGVudFZpZXcgPSBhZG9wdE5TKFtbV0tDb250
ZW50VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpib3VuZHMgcHJvY2Vzc1Bvb2w6KnRvSW1wbChj
b250ZXh0UmVmKSBjb25maWd1cmF0aW9uOldURjo6bW92ZSh3ZWJQYWdlQ29uZmlndXJhdGlvbikg
d2tWaWV3OnNlbGZdKTsKKyAgICBfY29udGVudFZpZXcgPSBhZG9wdE5TKFtbV0tDb250ZW50Vmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpib3VuZHMgcHJvY2Vzc1Bvb2w6KnRvSW1wbChjb250ZXh0
UmVmKSBjb25maWd1cmF0aW9uOldURjo6bW92ZShjb25maWd1cmF0aW9uKSB3a1ZpZXc6c2VsZl0p
OwogCiAgICAgW1tfY29udGVudFZpZXcgbGF5ZXJdIHNldEFuY2hvclBvaW50OkNHUG9pbnRaZXJv
XTsKICAgICBbX2NvbnRlbnRWaWV3IHNldEZyYW1lOmJvdW5kc107CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCShyZXZpc2lvbiAxODgxOTApCisrKyBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0JKHdvcmtpbmcgY29weSkK
QEAgLTM3NDQsNyArMzc0NCw3IEBAIC0gKHZvaWQpX3NldFByaW1hcnlUcmFja2luZ0FyZWE6KE5T
VHJhY2sKICAgICBbc2VsZiBhZGRUcmFja2luZ0FyZWE6dHJhY2tpbmdBcmVhXTsKIH0KIAotLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSBwcm9jZXNzUG9vbDooV2Vi
UHJvY2Vzc1Bvb2wmKXByb2Nlc3NQb29sIGNvbmZpZ3VyYXRpb246KFdlYlBhZ2VDb25maWd1cmF0
aW9uKXdlYlBhZ2VDb25maWd1cmF0aW9uIHdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcKKy0g
KGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUgcHJvY2Vzc1Bvb2w6KFdl
YlByb2Nlc3NQb29sJilwcm9jZXNzUG9vbCBjb25maWd1cmF0aW9uOihSZWY8QVBJOjpQYWdlQ29u
ZmlndXJhdGlvbj4mJiljb25maWd1cmF0aW9uIHdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcK
IHsKICAgICBzZWxmID0gW3N1cGVyIGluaXRXaXRoRnJhbWU6ZnJhbWVdOwogICAgIGlmICghc2Vs
ZikKQEAgLTM3NjYsNyArMzc2Niw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihO
U1JlY3QpZnIKICAgICBbc2VsZiBhZGRUcmFja2luZ0FyZWE6X2RhdGEtPl9wcmltYXJ5VHJhY2tp
bmdBcmVhLmdldCgpXTsKIAogICAgIF9kYXRhLT5fcGFnZUNsaWVudCA9IHN0ZDo6bWFrZV91bmlx
dWU8UGFnZUNsaWVudEltcGw+KHNlbGYsIHdlYlZpZXcpOwotICAgIF9kYXRhLT5fcGFnZSA9IHBy
b2Nlc3NQb29sLmNyZWF0ZVdlYlBhZ2UoKl9kYXRhLT5fcGFnZUNsaWVudCwgV1RGOjptb3ZlKHdl
YlBhZ2VDb25maWd1cmF0aW9uKSk7CisgICAgX2RhdGEtPl9wYWdlID0gcHJvY2Vzc1Bvb2wuY3Jl
YXRlV2ViUGFnZSgqX2RhdGEtPl9wYWdlQ2xpZW50LCBXVEY6Om1vdmUoY29uZmlndXJhdGlvbikp
OwogICAgIF9kYXRhLT5fcGFnZS0+c2V0QWRkc1Zpc2l0ZWRMaW5rcyhwcm9jZXNzUG9vbC5oaXN0
b3J5Q2xpZW50KCkuYWRkc1Zpc2l0ZWRMaW5rcygpKTsKIAogICAgIF9kYXRhLT5fcGFnZS0+c2V0
SW50cmluc2ljRGV2aWNlU2NhbGVGYWN0b3IoW3NlbGYgX2ludHJpbnNpY0RldmljZVNjYWxlRmFj
dG9yXSk7CkBAIC0zOTk0LDE5ICszOTk0LDIwIEBAIC0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVj
dClmcmFtZSBjb250ZXgKIAogLSAoaWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lIGNvbnRl
eHRSZWY6KFdLQ29udGV4dFJlZiljb250ZXh0UmVmIHBhZ2VHcm91cFJlZjooV0tQYWdlR3JvdXBS
ZWYpcGFnZUdyb3VwUmVmIHJlbGF0ZWRUb1BhZ2U6KFdLUGFnZVJlZilyZWxhdGVkUGFnZQogewot
ICAgIFdlYlBhZ2VDb25maWd1cmF0aW9uIHdlYlBhZ2VDb25maWd1cmF0aW9uOwotICAgIHdlYlBh
Z2VDb25maWd1cmF0aW9uLnBhZ2VHcm91cCA9IHRvSW1wbChwYWdlR3JvdXBSZWYpOwotICAgIHdl
YlBhZ2VDb25maWd1cmF0aW9uLnJlbGF0ZWRQYWdlID0gdG9JbXBsKHJlbGF0ZWRQYWdlKTsKKyAg
ICBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IEFQSTo6UGFnZUNv
bmZpZ3VyYXRpb246OmNyZWF0ZSgpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldFByb2Nlc3NQb29s
KHRvSW1wbChjb250ZXh0UmVmKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0UGFnZUdyb3VwKHRv
SW1wbChwYWdlR3JvdXBSZWYpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRSZWxhdGVkUGFnZSh0
b0ltcGwocmVsYXRlZFBhZ2UpKTsKIAotICAgIHJldHVybiBbc2VsZiBpbml0V2l0aEZyYW1lOmZy
YW1lIHByb2Nlc3NQb29sOip0b0ltcGwoY29udGV4dFJlZikgY29uZmlndXJhdGlvbjp3ZWJQYWdl
Q29uZmlndXJhdGlvbiB3ZWJWaWV3Om5pbF07CisgICAgcmV0dXJuIFtzZWxmIGluaXRXaXRoRnJh
bWU6ZnJhbWUgcHJvY2Vzc1Bvb2w6KnRvSW1wbChjb250ZXh0UmVmKSBjb25maWd1cmF0aW9uOldU
Rjo6bW92ZShjb25maWd1cmF0aW9uKSB3ZWJWaWV3Om5pbF07CiB9CiAKLS0gKGlkKWluaXRXaXRo
RnJhbWU6KE5TUmVjdClmcmFtZSBjb25maWd1cmF0aW9uUmVmOihXS1BhZ2VDb25maWd1cmF0aW9u
UmVmKWNvbmZpZ3VyYXRpb24KKy0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSBjb25m
aWd1cmF0aW9uUmVmOihXS1BhZ2VDb25maWd1cmF0aW9uUmVmKWNvbmZpZ3VyYXRpb25SZWYKIHsK
LSAgICBhdXRvJiBwcm9jZXNzUG9vbCA9ICp0b0ltcGwoY29uZmlndXJhdGlvbiktPnByb2Nlc3NQ
b29sKCk7Ci0gICAgYXV0byB3ZWJQYWdlQ29uZmlndXJhdGlvbiA9IHRvSW1wbChjb25maWd1cmF0
aW9uKS0+d2ViUGFnZUNvbmZpZ3VyYXRpb24oKTsKKyAgICBSZWY8QVBJOjpQYWdlQ29uZmlndXJh
dGlvbj4gY29uZmlndXJhdGlvbiA9ICp0b0ltcGwoY29uZmlndXJhdGlvblJlZik7CisgICAgYXV0
byYgcHJvY2Vzc1Bvb2wgPSAqY29uZmlndXJhdGlvbi0+cHJvY2Vzc1Bvb2woKTsKIAotICAgIHJl
dHVybiBbc2VsZiBpbml0V2l0aEZyYW1lOmZyYW1lIHByb2Nlc3NQb29sOnByb2Nlc3NQb29sIGNv
bmZpZ3VyYXRpb246d2ViUGFnZUNvbmZpZ3VyYXRpb24gd2ViVmlldzpuaWxdOworICAgIHJldHVy
biBbc2VsZiBpbml0V2l0aEZyYW1lOmZyYW1lIHByb2Nlc3NQb29sOnByb2Nlc3NQb29sIGNvbmZp
Z3VyYXRpb246V1RGOjptb3ZlKGNvbmZpZ3VyYXRpb24pIHdlYlZpZXc6bmlsXTsKIH0KIAogLSAo
Qk9PTCl3YW50c1VwZGF0ZUxheWVyCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L21hYy9XS1ZpZXdJbnRlcm5hbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvbWFjL1dLVmlld0ludGVybmFsLmgJKHJldmlzaW9uIDE4ODE5MCkKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlld0ludGVybmFsLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM4LDYgKzM4LDcgQEAKIAogbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBPYmplY3Q7Citj
bGFzcyBQYWdlQ29uZmlndXJhdGlvbjsKIH0KIAogbmFtZXNwYWNlIElQQyB7CkBAIC01OCw3ICs1
OSw2IEBAIGNsYXNzIFZpZXdTbmFwc2hvdDsKIGNsYXNzIFdlYlByb2Nlc3NQb29sOwogc3RydWN0
IENvbG9yU3BhY2VEYXRhOwogc3RydWN0IEVkaXRvclN0YXRlOwotc3RydWN0IFdlYlBhZ2VDb25m
aWd1cmF0aW9uOwogfQogCiBAY2xhc3MgV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcjsKQEAg
LTY4LDkgKzY4LDcgQEAgc3RydWN0IFdlYlBhZ2VDb25maWd1cmF0aW9uOwogI2VuZGlmCiAKIEBp
bnRlcmZhY2UgV0tWaWV3ICgpCi0jaWYgV0tfQVBJX0VOQUJMRUQKLS0gKGluc3RhbmNldHlwZSlp
bml0V2l0aEZyYW1lOihDR1JlY3QpZnJhbWUgcHJvY2Vzc1Bvb2w6KFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2wmKXByb2Nlc3NQb29sIGNvbmZpZ3VyYXRpb246KFdlYktpdDo6V2ViUGFnZUNvbmZpZ3Vy
YXRpb24pd2ViUGFnZUNvbmZpZ3VyYXRpb24gd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldzsK
LSNlbmRpZgorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KENHUmVjdClmcmFtZSBwcm9j
ZXNzUG9vbDooV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYpcHJvY2Vzc1Bvb2wgY29uZmlndXJhdGlv
bjooUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpY29uZmlndXJhdGlvbiB3ZWJWaWV3OihX
S1dlYlZpZXcgKil3ZWJWaWV3OwogCiAtIChzdGQ6OnVuaXF1ZV9wdHI8V2ViS2l0OjpEcmF3aW5n
QXJlYVByb3h5PilfY3JlYXRlRHJhd2luZ0FyZWFQcm94eTsKIC0gKEJPT0wpX2lzRm9jdXNlZDsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlZp
ZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRl
ZEdyYXBoaWNzL1dlYlZpZXcuY3BwCShyZXZpc2lvbiAxODgxOTApCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiV2ViVmlldy5oIgogCisjaW5jbHVkZSAi
QVBJUGFnZUNvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJDb29yZGluYXRlZERyYXdpbmdBcmVh
UHJveHkuaCIKICNpbmNsdWRlICJDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaCIKICNpbmNsdWRl
ICJDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5oIgpAQCAtNTIsMTEgKzUzLDExIEBAIFdl
YlZpZXc6OldlYlZpZXcoV2ViUHJvY2Vzc1Bvb2wqIGNvbnRleHQKICAgICAsIG1fdmlzaWJsZShm
YWxzZSkKICAgICAsIG1fb3BhY2l0eSgxLjApCiB7Ci0gICAgV2ViUGFnZUNvbmZpZ3VyYXRpb24g
d2ViUGFnZUNvbmZpZ3VyYXRpb247Ci0gICAgd2ViUGFnZUNvbmZpZ3VyYXRpb24ucGFnZUdyb3Vw
ID0gcGFnZUdyb3VwOworICAgIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiBwYWdlQ29uZmln
dXJhdGlvbiA9IEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOworICAgIHBhZ2VDb25m
aWd1cmF0aW9uLT5zZXRQYWdlR3JvdXAocGFnZUdyb3VwKTsKIAogICAgIC8vIE5lZWQgdG8gY2Fs
bCBjcmVhdGVXZWJQYWdlIGFmdGVyIG90aGVyIGRhdGEgbWVtYmVycywgc3BlY2lmaWNhbGx5IG1f
dmlzaWJsZSwgYXJlIGluaXRpYWxpemVkLgotICAgIG1fcGFnZSA9IGNvbnRleHQtPmNyZWF0ZVdl
YlBhZ2UoKnRoaXMsIFdURjo6bW92ZSh3ZWJQYWdlQ29uZmlndXJhdGlvbikpOworICAgIG1fcGFn
ZSA9IGNvbnRleHQtPmNyZWF0ZVdlYlBhZ2UoKnRoaXMsIFdURjo6bW92ZShwYWdlQ29uZmlndXJh
dGlvbikpOwogCiAgICAgbV9wYWdlLT5wYWdlR3JvdXAoKS5wcmVmZXJlbmNlcygpLnNldEFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKHRydWUpOwogICAgIG1fcGFnZS0+cGFnZUdyb3VwKCku
cHJlZmVyZW5jZXMoKS5zZXRGb3JjZUNvbXBvc2l0aW5nTW9kZSh0cnVlKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5oCShyZXZpc2lvbiAxODgx
OTApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcuaAkod29y
a2luZyBjb3B5KQpAQCAtMzQsNiArMzQsMTAgQEAKIEBjbGFzcyBXS1ZpZXc7CiBAY2xhc3MgV0tX
ZWJWaWV3OwogCituYW1lc3BhY2UgQVBJIHsKK2NsYXNzIFBhZ2VDb25maWd1cmF0aW9uOworfQor
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgSGlnaGxpZ2h0OwogfQpAQCAtNDUsNyArNDks
NiBAQCBjbGFzcyBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjsKIGNsYXNzIFdlYkZyYW1lUHJv
eHk7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiBjbGFzcyBXZWJQcm9jZXNzUG9vbDsKLXN0cnVjdCBX
ZWJQYWdlQ29uZmlndXJhdGlvbjsKIH0KIAogQGludGVyZmFjZSBXS0NvbnRlbnRWaWV3IDogVUlW
aWV3IHsKQEAgLTYxLDggKzY0LDggQEAgc3RydWN0IFdlYlBhZ2VDb25maWd1cmF0aW9uOwogQHBy
b3BlcnR5IChub25hdG9taWMsIGdldHRlcj1pc1Nob3dpbmdJbnNwZWN0b3JJbmRpY2F0aW9uKSBC
T09MIHNob3dpbmdJbnNwZWN0b3JJbmRpY2F0aW9uOwogQHByb3BlcnR5IChub25hdG9taWMsIHJl
YWRvbmx5KSBCT09MIGlzQmFja2dyb3VuZDsKIAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJh
bWU6KENHUmVjdClmcmFtZSBwcm9jZXNzUG9vbDooV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYpcHJv
Y2Vzc1Bvb2wgY29uZmlndXJhdGlvbjooV2ViS2l0OjpXZWJQYWdlQ29uZmlndXJhdGlvbil3ZWJQ
YWdlQ29uZmlndXJhdGlvbiB3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3OwotLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoRnJhbWU6KENHUmVjdClmcmFtZSBwcm9jZXNzUG9vbDooV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbCYpcHJvY2Vzc1Bvb2wgY29uZmlndXJhdGlvbjooV2ViS2l0OjpXZWJQYWdl
Q29uZmlndXJhdGlvbil3ZWJQYWdlQ29uZmlndXJhdGlvbiB3a1ZpZXc6KFdLVmlldyAqKXdlYlZp
ZXc7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lIHByb2Nlc3NQ
b29sOihXZWJLaXQ6OldlYlByb2Nlc3NQb29sJilwcm9jZXNzUG9vbCBjb25maWd1cmF0aW9uOihS
ZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJiljb25maWd1cmF0aW9uIHdlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXc7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZy
YW1lIHByb2Nlc3NQb29sOihXZWJLaXQ6OldlYlByb2Nlc3NQb29sJilwcm9jZXNzUG9vbCBjb25m
aWd1cmF0aW9uOihSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJiljb25maWd1cmF0aW9uIHdr
VmlldzooV0tWaWV3ICopd2ViVmlldzsKIAogLSAodm9pZClkaWRVcGRhdGVWaXNpYmxlUmVjdDoo
Q0dSZWN0KXZpc2libGVSZWN0IHVub2JzY3VyZWRSZWN0OihDR1JlY3QpdW5vYnNjdXJlZFJlY3QK
ICAgICB1bm9ic2N1cmVkUmVjdEluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzOihDR1JlY3QpdW5vYnNj
dXJlZFJlY3RJblNjcm9sbFZpZXdDb29yZGluYXRlcwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQkocmV2aXNpb24gMTg4MTkwKQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBQTEFURk9STShJT1MpCiAKKyNpbXBvcnQgIkFQSVBh
Z2VDb25maWd1cmF0aW9uLmgiCiAjaW1wb3J0ICJBcHBsaWNhdGlvblN0YXRlVHJhY2tlci5oIgog
I2ltcG9ydCAiUGFnZUNsaWVudEltcGxJT1MuaCIKICNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhUHJveHkuaCIKQEAgLTE4MSwxMSArMTgyLDExIEBAIC0gKGluc3RhbmNldHlwZSlp
bml0V2l0aEZyYW1lOihDR1JlY3QpZnIKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXBwbGljYXRpb25T
dGF0ZVRyYWNrZXI+IF9hcHBsaWNhdGlvblN0YXRlVHJhY2tlcjsKIH0KIAotLSAoaW5zdGFuY2V0
eXBlKV9jb21tb25Jbml0aWFsaXphdGlvbldpdGhQcm9jZXNzUG9vbDooV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbCYpcHJvY2Vzc1Bvb2wgY29uZmlndXJhdGlvbjooV2ViS2l0OjpXZWJQYWdlQ29uZmln
dXJhdGlvbil3ZWJQYWdlQ29uZmlndXJhdGlvbgorLSAoaW5zdGFuY2V0eXBlKV9jb21tb25Jbml0
aWFsaXphdGlvbldpdGhQcm9jZXNzUG9vbDooV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYpcHJvY2Vz
c1Bvb2wgY29uZmlndXJhdGlvbjooUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpY29uZmln
dXJhdGlvbgogewogICAgIEFTU0VSVChfcGFnZUNsaWVudCk7CiAKLSAgICBfcGFnZSA9IHByb2Nl
c3NQb29sLmNyZWF0ZVdlYlBhZ2UoKl9wYWdlQ2xpZW50LCBXVEY6Om1vdmUod2ViUGFnZUNvbmZp
Z3VyYXRpb24pKTsKKyAgICBfcGFnZSA9IHByb2Nlc3NQb29sLmNyZWF0ZVdlYlBhZ2UoKl9wYWdl
Q2xpZW50LCBXVEY6Om1vdmUoY29uZmlndXJhdGlvbikpOwogICAgIF9wYWdlLT5pbml0aWFsaXpl
V2ViUGFnZSgpOwogICAgIF9wYWdlLT5zZXRJbnRyaW5zaWNEZXZpY2VTY2FsZUZhY3RvcihXS0dl
dFNjYWxlRmFjdG9yRm9yU2NyZWVuKFtVSVNjcmVlbiBtYWluU2NyZWVuXSkpOwogICAgIF9wYWdl
LT5zZXRVc2VGaXhlZExheW91dCh0cnVlKTsKQEAgLTIxOCw3ICsyMTksNyBAQCAtIChpbnN0YW5j
ZXR5cGUpX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKLS0g
KGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihDR1JlY3QpZnJhbWUgcHJvY2Vzc1Bvb2w6KFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2wmKXByb2Nlc3NQb29sIGNvbmZpZ3VyYXRpb246KFdlYktpdDo6
V2ViUGFnZUNvbmZpZ3VyYXRpb24pd2ViUGFnZUNvbmZpZ3VyYXRpb24gd2ViVmlldzooV0tXZWJW
aWV3ICopd2ViVmlldworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KENHUmVjdClmcmFt
ZSBwcm9jZXNzUG9vbDooV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYpcHJvY2Vzc1Bvb2wgY29uZmln
dXJhdGlvbjooUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpY29uZmlndXJhdGlvbiB3ZWJW
aWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3CiB7CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0
V2l0aEZyYW1lOmZyYW1lXSkpCiAgICAgICAgIHJldHVybiBuaWw7CkBAIC0yMjgsMTAgKzIyOSwx
MCBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyCiAgICAgX3BhZ2VD
bGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VDbGllbnRJbXBsPihzZWxmLCB3ZWJWaWV3KTsK
ICAgICBfd2ViVmlldyA9IHdlYlZpZXc7CiAKLSAgICByZXR1cm4gW3NlbGYgX2NvbW1vbkluaXRp
YWxpemF0aW9uV2l0aFByb2Nlc3NQb29sOnByb2Nlc3NQb29sIGNvbmZpZ3VyYXRpb246d2ViUGFn
ZUNvbmZpZ3VyYXRpb25dOworICAgIHJldHVybiBbc2VsZiBfY29tbW9uSW5pdGlhbGl6YXRpb25X
aXRoUHJvY2Vzc1Bvb2w6cHJvY2Vzc1Bvb2wgY29uZmlndXJhdGlvbjpXVEY6Om1vdmUoY29uZmln
dXJhdGlvbildOwogfQogCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZy
YW1lIHByb2Nlc3NQb29sOihXZWJLaXQ6OldlYlByb2Nlc3NQb29sJilwcm9jZXNzUG9vbCBjb25m
aWd1cmF0aW9uOihXZWJLaXQ6OldlYlBhZ2VDb25maWd1cmF0aW9uKXdlYlBhZ2VDb25maWd1cmF0
aW9uIHdrVmlldzooV0tWaWV3ICopd2tWaWV3CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFt
ZTooQ0dSZWN0KWZyYW1lIHByb2Nlc3NQb29sOihXZWJLaXQ6OldlYlByb2Nlc3NQb29sJilwcm9j
ZXNzUG9vbCBjb25maWd1cmF0aW9uOihSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJiljb25m
aWd1cmF0aW9uIHdrVmlldzooV0tWaWV3ICopd2tWaWV3CiB7CiAgICAgaWYgKCEoc2VsZiA9IFtz
dXBlciBpbml0V2l0aEZyYW1lOmZyYW1lXSkpCiAgICAgICAgIHJldHVybiBuaWw7CkBAIC0yNDAs
NyArMjQxLDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KENHUmVjdClmcgogCiAg
ICAgX3BhZ2VDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VDbGllbnRJbXBsPihzZWxmLCB3
a1ZpZXcpOwogCi0gICAgcmV0dXJuIFtzZWxmIF9jb21tb25Jbml0aWFsaXphdGlvbldpdGhQcm9j
ZXNzUG9vbDpwcm9jZXNzUG9vbCBjb25maWd1cmF0aW9uOndlYlBhZ2VDb25maWd1cmF0aW9uXTsK
KyAgICByZXR1cm4gW3NlbGYgX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aFByb2Nlc3NQb29sOnBy
b2Nlc3NQb29sIGNvbmZpZ3VyYXRpb246V1RGOjptb3ZlKGNvbmZpZ3VyYXRpb24pXTsKIH0KIAog
LSAodm9pZClkZWFsbG9jCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258579</attachid>
            <date>2015-08-08 16:15:49 -0700</date>
            <delta_ts>2015-08-08 20:23:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147811-20150808161536.patch</filename>
            <type>text/plain</type>
            <size>53024</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4ODE5MCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg1IEBACisyMDE1LTA4LTA4ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVwbGFjZSBXZWJQYWdlQ29uZmlndXJh
dGlvbiB3aXRoIEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24gYW5kIGV4cG9zZSBhIEMtU1BJIGFjY2Vz
c29yIGZvciBpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQ3ODExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgLSBBZGRzIHRoZSBtaXNzaW5nIHBpZWNlcyBmcm9tIFdlYlBhZ2VDb25maWd1cmF0aW9uIGlu
dG8gQVBJOjpQYWdlQ29uZmlndXJhdGlvbi4KKyAgICAgICAgLSBBZGRzIEMtU1BJIHRvIHNldCBh
bmQgZ2V0IHRoZSBXZWJzaXRlRGF0YVN0b3JlIG9uIHRoZSBXS1BhZ2VDb25maWd1cmF0aW9uUmVm
LgorICAgICAgICAtIFVzZXMgQVBJOjpQYWdlQ29uZmlndXJhdGlvbiB0byBwYXNzIGNvbmZpZ3Vy
YXRpb24gaW5mb3JtYXRpb24gZnJvbSBXS1dlYlZpZXcvV0tWaWV3IAorICAgICAgICAgIHRvIFdl
YlBhZ2VQcm94eS4KKyAgICAgICAgLSBTdG9yZXMgdGhlIEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24g
b24gdGhlIFdlYlBhZ2VQcm94eSBhbmQgZXhwb3NlcyBhIG5ldyBDLVNQSSBmdW5jdGlvbiwKKyAg
ICAgICAgICBXS1BhZ2VDb3B5UGFnZUNvbmZpZ3VyYXRpb24sIHRvIGdldCBhIGNvcHkgb2YgaXQu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcDoKKyAg
ICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChBUEk6OlBh
Z2VDb25maWd1cmF0aW9uOjpQYWdlQ29uZmlndXJhdGlvbik6CisgICAgICAgIChBUEk6OlBhZ2VD
b25maWd1cmF0aW9uOjp+UGFnZUNvbmZpZ3VyYXRpb24pOgorICAgICAgICAoQVBJOjpQYWdlQ29u
ZmlndXJhdGlvbjo6Y29weSk6CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpwcm9j
ZXNzUG9vbCk6CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpzZXRSZWxhdGVkUGFn
ZSk6CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjp2aXNpdGVkTGlua1Byb3ZpZGVy
KToKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OnNldFZpc2l0ZWRMaW5rUHJvdmlk
ZXIpOgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6d2Vic2l0ZURhdGFTdG9yZSk6
CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpzZXRXZWJzaXRlRGF0YVN0b3JlKToK
KyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OnNlc3Npb25JRCk6CisgICAgICAgIChB
UEk6OlBhZ2VDb25maWd1cmF0aW9uOjpzZXRTZXNzaW9uSUQpOgorICAgICAgICAoQVBJOjpQYWdl
Q29uZmlndXJhdGlvbjo6d2ViUGFnZUNvbmZpZ3VyYXRpb24pOiBEZWxldGVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKEFQSTo6UGFn
ZUNvbmZpZ3VyYXRpb246OnByZWZlcmVuY2VWYWx1ZXMpOgorICAgICAgICAoQVBJOjpQYWdlQ29u
ZmlndXJhdGlvbjo6dHJlYXRzU0hBMVNpZ25lZENlcnRpZmljYXRlc0FzSW5zZWN1cmUpOgorICAg
ICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6c2V0VHJlYXRzU0hBMVNpZ25lZENlcnRpZmlj
YXRlc0FzSW5zZWN1cmUpOgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6YWx3YXlz
UnVuc0F0Rm9yZWdyb3VuZFByaW9yaXR5KToKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRp
b246OnNldEFsd2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eSk6CisgICAgICAgIChBUEk6OlBh
Z2VDb25maWd1cmF0aW9uOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdlR2V0UGFnZUdyb3VwKToKKyAgICAgICAg
KFdLUGFnZUNvcHlQYWdlQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXS1BhZ2VMb2FkVVJMKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLUGFnZUNvbmZpZ3VyYXRpb25SZWYuY3BwOgorICAgICAgICAoV0tQYWdlQ29uZmln
dXJhdGlvblNldFJlbGF0ZWRQYWdlKToKKyAgICAgICAgKFdLUGFnZUNvbmZpZ3VyYXRpb25HZXRX
ZWJzaXRlRGF0YVN0b3JlKToKKyAgICAgICAgKFdLUGFnZUNvbmZpZ3VyYXRpb25TZXRXZWJzaXRl
RGF0YVN0b3JlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlQ29uZmlndXJhdGlv
blJlZi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAg
ICAgICAoLVtXS1dlYlZpZXcgaW5pdFdpdGhGcmFtZTpjb25maWd1cmF0aW9uOl0pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvaW9zL1dLVmlld0lPUy5tbToKKyAgICAgICAgKC1bV0tWaWV3IF9j
b21tb25Jbml0aWFsaXphdGlvbldpdGhDb250ZXh0UmVmOnBhZ2VHcm91cFJlZjpyZWxhdGVkVG9Q
YWdlOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbToKKyAgICAgICAg
KC1bV0tWaWV3IF9zZXRQcmltYXJ5VHJhY2tpbmdBcmVhOl0pOgorICAgICAgICAoLVtXS1ZpZXcg
aW5pdFdpdGhGcmFtZTpwcm9jZXNzUG9vbDpjb25maWd1cmF0aW9uOndlYlZpZXc6XSk6CisgICAg
ICAgICgtW1dLVmlldyBpbml0V2l0aEZyYW1lOmNvbnRleHRSZWY6cGFnZUdyb3VwUmVmOnJlbGF0
ZWRUb1BhZ2U6XSk6CisgICAgICAgICgtW1dLVmlldyBpbml0V2l0aEZyYW1lOmNvbmZpZ3VyYXRp
b25SZWY6XSk6CisgICAgICAgICgtW1dLVmlldyB3YW50c1VwZGF0ZUxheWVyXSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50ZXJuYWwuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVh
dGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6fldlYlBhZ2VQcm94eSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6Y29uZmlndXJhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6cHJvY2Vzc0lkZW50aWZpZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwYWdlSUQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNlc3Npb25JRCk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNy
ZWF0ZU5ld1dlYlByb2Nlc3NSZXNwZWN0aW5nUHJvY2Vzc0NvdW50TGltaXQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQb29sOjpkb3dubG9hZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6d2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQcm94eTo6Y3JlYXRlV2ViUGFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnByb2Nl
c3NQb29sKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW06CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aFByb2Nlc3NQb29sOmNvbmZpZ3VyYXRpb246
XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgaW5pdFdpdGhGcmFtZTpwcm9jZXNzUG9vbDpj
b25maWd1cmF0aW9uOndlYlZpZXc6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgaW5pdFdp
dGhGcmFtZTpwcm9jZXNzUG9vbDpjb25maWd1cmF0aW9uOndrVmlldzpdKToKKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyBkZWFsbG9jXSk6CisKIDIwMTUtMDgtMDcgIEZpbGlwIFBpemxvICA8ZnBp
emxvQGFwcGxlLmNvbT4KIAogICAgICAgICBMaWdodHdlaWdodCBsb2NrcyBzaG91bGQgYmUgYWRh
cHRpdmUKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxODgxOTApCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzkzLDYgKzM5Myw3
IEBAIHNldChXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL0FQSUZyYW1lSW5mby5j
cHAKICAgICBVSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24uY3BwCiAgICAgVUlQcm9jZXNzL0FQ
SS9BUElOYXZpZ2F0aW9uRGF0YS5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1
cmF0aW9uLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvQVBJU2Vzc2lvbi5jcHAKICAgICBVSVByb2Nlc3MvQVBJ
L0FQSVNlc3Npb25TdGF0ZS5jcHAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCShyZXZpc2lvbiAxODgxOTApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQAogI2lu
Y2x1ZGUgIkFQSU5hdmlnYXRpb25BY3Rpb24uaCIKICNpbmNsdWRlICJBUElOYXZpZ2F0aW9uQ2xp
ZW50LmgiCiAjaW5jbHVkZSAiQVBJTmF2aWdhdGlvblJlc3BvbnNlLmgiCisjaW5jbHVkZSAiQVBJ
UGFnZUNvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJBUElQb2xpY3lDbGllbnQuaCIKICNpbmNs
dWRlICJBUElTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIkFQSVVJQ2xpZW50LmgiCkBAIC0y
OTMsMTMgKzI5NCwxNCBAQCBwcml2YXRlOgogICAgIFBhZ2VDbGllbnQmIG1fcGFnZUNsaWVudDsK
IH07CiAKLVJlZjxXZWJQYWdlUHJveHk+IFdlYlBhZ2VQcm94eTo6Y3JlYXRlKFBhZ2VDbGllbnQm
IHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgdWludDY0X3QgcGFnZUlELCBj
b25zdCBXZWJQYWdlQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKK1JlZjxXZWJQYWdlUHJv
eHk+IFdlYlBhZ2VQcm94eTo6Y3JlYXRlKFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nl
c3NQcm94eSYgcHJvY2VzcywgdWludDY0X3QgcGFnZUlELCBSZWY8QVBJOjpQYWdlQ29uZmlndXJh
dGlvbj4mJiBjb25maWd1cmF0aW9uKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlBh
Z2VQcm94eShwYWdlQ2xpZW50LCBwcm9jZXNzLCBwYWdlSUQsIGNvbmZpZ3VyYXRpb24pKTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJQYWdlUHJveHkocGFnZUNsaWVudCwgcHJvY2Vzcywg
cGFnZUlELCBXVEY6Om1vdmUoY29uZmlndXJhdGlvbikpKTsKIH0KIAotV2ViUGFnZVByb3h5OjpX
ZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9j
ZXNzLCB1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlBhZ2VDb25maWd1cmF0aW9uJiBjb25maWd1
cmF0aW9uKQorV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVu
dCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCB1aW50NjRfdCBwYWdlSUQsIFJlZjxBUEk6OlBh
Z2VDb25maWd1cmF0aW9uPiYmIGNvbmZpZ3VyYXRpb24pCiAgICAgOiBtX3BhZ2VDbGllbnQocGFn
ZUNsaWVudCkKKyAgICAsIG1fY29uZmlndXJhdGlvbihXVEY6Om1vdmUoY29uZmlndXJhdGlvbikp
CiAgICAgLCBtX2xvYWRlckNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6TG9hZGVyQ2xpZW50
PigpKQogICAgICwgbV9wb2xpY3lDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OlBvbGljeUNs
aWVudD4oKSkKICAgICAsIG1fZm9ybUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6Rm9ybUNs
aWVudD4oKSkKQEAgLTMxMSwxNCArMzEzLDE0IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5
KFBhZ2VDbGllbnQmIHAKICNlbmRpZgogICAgICwgbV9uYXZpZ2F0aW9uU3RhdGUoc3RkOjptYWtl
X3VuaXF1ZTxXZWJOYXZpZ2F0aW9uU3RhdGU+KCkpCiAgICAgLCBtX3Byb2Nlc3MocHJvY2VzcykK
LSAgICAsIG1fcGFnZUdyb3VwKCpjb25maWd1cmF0aW9uLnBhZ2VHcm91cCkKLSAgICAsIG1fcHJl
ZmVyZW5jZXMoKmNvbmZpZ3VyYXRpb24ucHJlZmVyZW5jZXMpCi0gICAgLCBtX3VzZXJDb250ZW50
Q29udHJvbGxlcihjb25maWd1cmF0aW9uLnVzZXJDb250ZW50Q29udHJvbGxlcikKLSAgICAsIG1f
dmlzaXRlZExpbmtQcm92aWRlcigqY29uZmlndXJhdGlvbi52aXNpdGVkTGlua1Byb3ZpZGVyKQot
ICAgICwgbV93ZWJzaXRlRGF0YVN0b3JlKCpjb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUp
CisgICAgLCBtX3BhZ2VHcm91cCgqbV9jb25maWd1cmF0aW9uLT5wYWdlR3JvdXAoKSkKKyAgICAs
IG1fcHJlZmVyZW5jZXMoKm1fY29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKSkKKyAgICAsIG1f
dXNlckNvbnRlbnRDb250cm9sbGVyKG1fY29uZmlndXJhdGlvbi0+dXNlckNvbnRlbnRDb250cm9s
bGVyKCkpCisgICAgLCBtX3Zpc2l0ZWRMaW5rUHJvdmlkZXIoKm1fY29uZmlndXJhdGlvbi0+dmlz
aXRlZExpbmtQcm92aWRlcigpKQorICAgICwgbV93ZWJzaXRlRGF0YVN0b3JlKG1fY29uZmlndXJh
dGlvbi0+d2Vic2l0ZURhdGFTdG9yZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCkpCiAgICAgLCBtX21h
aW5GcmFtZShudWxscHRyKQogICAgICwgbV91c2VyQWdlbnQoc3RhbmRhcmRVc2VyQWdlbnQoKSkK
LSAgICAsIG1fdHJlYXRzU0hBMUNlcnRpZmljYXRlc0FzSW5zZWN1cmUoY29uZmlndXJhdGlvbi50
cmVhdHNTSEExU2lnbmVkQ2VydGlmaWNhdGVzQXNJbnNlY3VyZSkKKyAgICAsIG1fdHJlYXRzU0hB
MUNlcnRpZmljYXRlc0FzSW5zZWN1cmUobV9jb25maWd1cmF0aW9uLT50cmVhdHNTSEExU2lnbmVk
Q2VydGlmaWNhdGVzQXNJbnNlY3VyZSgpKQogI2lmIFBMQVRGT1JNKElPUykKICAgICAsIG1faGFz
UmVjZWl2ZWRMYXllclRyZWVUcmFuc2FjdGlvbkFmdGVyRGlkQ29tbWl0TG9hZCh0cnVlKQogICAg
ICwgbV9maXJzdExheWVyVHJlZVRyYW5zYWN0aW9uSWRBZnRlckRpZENvbW1pdExvYWQoMCkKQEAg
LTMzNSw3ICszMzcsNyBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBw
CiAgICAgLCBtX3ZpZXdTdGF0ZShWaWV3U3RhdGU6Ok5vRmxhZ3MpCiAgICAgLCBtX3ZpZXdXYXNF
dmVySW5XaW5kb3coZmFsc2UpCiAjaWYgUExBVEZPUk0oSU9TKQotICAgICwgbV9hbHdheXNSdW5z
QXRGb3JlZ3JvdW5kUHJpb3JpdHkoY29uZmlndXJhdGlvbi5hbHdheXNSdW5zQXRGb3JlZ3JvdW5k
UHJpb3JpdHkpCisgICAgLCBtX2Fsd2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eShtX2NvbmZp
Z3VyYXRpb24tPmFsd2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eSgpKQogI2VuZGlmCiAgICAg
LCBtX2JhY2tGb3J3YXJkTGlzdChXZWJCYWNrRm9yd2FyZExpc3Q6OmNyZWF0ZSgqdGhpcykpCiAg
ICAgLCBtX21haW50YWluc0luYWN0aXZlU2VsZWN0aW9uKGZhbHNlKQpAQCAtMzc5LDcgKzM4MSw3
IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHAKICAgICAsIG1faXNU
cmFja2luZ1RvdWNoRXZlbnRzKGZhbHNlKQogI2VuZGlmCiAgICAgLCBtX3BhZ2VJRChwYWdlSUQp
Ci0gICAgLCBtX3Nlc3Npb25JRChjb25maWd1cmF0aW9uLnNlc3Npb25JRCkKKyAgICAsIG1fc2Vz
c2lvbklEKG1fY29uZmlndXJhdGlvbi0+c2Vzc2lvbklEKCkpCiAgICAgLCBtX2lzUGFnZVN1c3Bl
bmRlZChmYWxzZSkKICAgICAsIG1fYWRkc1Zpc2l0ZWRMaW5rcyh0cnVlKQogI2lmIEVOQUJMRShS
RU1PVEVfSU5TUEVDVE9SKQpAQCAtNDM2LDcgKzQzOCw3IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFn
ZVByb3h5KFBhZ2VDbGllbnQmIHAKICNlbmRpZgogICAgICwgbV9zY3JvbGxQaW5uaW5nQmVoYXZp
b3IoRG9Ob3RQaW4pCiAgICAgLCBtX25hdmlnYXRpb25JRCgwKQotICAgICwgbV9jb25maWd1cmF0
aW9uUHJlZmVyZW5jZVZhbHVlcyhjb25maWd1cmF0aW9uLnByZWZlcmVuY2VWYWx1ZXMpCisgICAg
LCBtX2NvbmZpZ3VyYXRpb25QcmVmZXJlbmNlVmFsdWVzKG1fY29uZmlndXJhdGlvbi0+cHJlZmVy
ZW5jZVZhbHVlcygpKQogICAgICwgbV9wb3RlbnRpYWxseUNoYW5nZWRWaWV3U3RhdGVGbGFncyhW
aWV3U3RhdGU6Ok5vRmxhZ3MpCiAgICAgLCBtX3ZpZXdTdGF0ZUNoYW5nZVdhbnRzU3luY2hyb25v
dXNSZXBseShmYWxzZSkKIHsKQEAgLTUxOCw2ICs1MjAsMTEgQEAgV2ViUGFnZVByb3h5Ojp+V2Vi
UGFnZVByb3h5KCkKICNlbmRpZgogfQogCitjb25zdCBBUEk6OlBhZ2VDb25maWd1cmF0aW9uJiBX
ZWJQYWdlUHJveHk6OmNvbmZpZ3VyYXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbmZp
Z3VyYXRpb24uZ2V0KCk7Cit9CisKIFBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIgV2ViUGFnZVBy
b3h5Ojpwcm9jZXNzSWRlbnRpZmllcigpIGNvbnN0CiB7CiAgICAgaWYgKG1faXNDbG9zZWQpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAxODgx
OTApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI1NCwyOCArMjU0LDYgQEAgdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3Qg
V2ViQ29yZTo6SQogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgV2ViQ29yZTo6TWFjaFNl
bmRSaWdodCY+IE1hY2hTZW5kUmlnaHRDYWxsYmFjazsKICNlbmRpZgogCi1zdHJ1Y3QgV2ViUGFn
ZUNvbmZpZ3VyYXRpb24gewotICAgIFdlYlBhZ2VHcm91cCogcGFnZUdyb3VwID0gbnVsbHB0cjsK
LSAgICBXZWJQcmVmZXJlbmNlcyogcHJlZmVyZW5jZXMgPSBudWxscHRyOwotICAgIFdlYlVzZXJD
b250ZW50Q29udHJvbGxlclByb3h5KiB1c2VyQ29udGVudENvbnRyb2xsZXIgPSBudWxscHRyOwot
ICAgIFZpc2l0ZWRMaW5rUHJvdmlkZXIqIHZpc2l0ZWRMaW5rUHJvdmlkZXIgPSBudWxscHRyOwot
Ci0gICAgV2Vic2l0ZURhdGFTdG9yZSogd2Vic2l0ZURhdGFTdG9yZSA9IG51bGxwdHI7Ci0gICAg
Ly8gRklYTUU6IFdlIGN1cnJlbnRseSBoYXZlIHRvIHBhc3MgdGhlIHNlc3Npb24gSUQgc2VwYXJh
dGVseSBoZXJlIHRvIHN1cHBvcnQgdGhlIGxlZ2FjeSBwcml2YXRlIGJyb3dzaW5nIHNlc3Npb24u
Ci0gICAgLy8gT25jZSB3ZSBnZXQgcmlkIG9mIGl0IHdlIHNob3VsZCBnZXQgcmlkIG9mIHRoaXMg
Y29uZmlndXJhdGlvbiBwYXJhbWV0ZXIgYXMgd2VsbC4KLSAgICBXZWJDb3JlOjpTZXNzaW9uSUQg
c2Vzc2lvbklEOwotCi0gICAgV2ViUGFnZVByb3h5KiByZWxhdGVkUGFnZSA9IG51bGxwdHI7Ci0K
LSAgICBib29sIHRyZWF0c1NIQTFTaWduZWRDZXJ0aWZpY2F0ZXNBc0luc2VjdXJlID0gZmFsc2U7
Ci0KLSNpZiBQTEFURk9STShJT1MpCi0gICAgYm9vbCBhbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJp
b3JpdHkgPSBmYWxzZTsKLSNlbmRpZgotCi0gICAgV2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWVN
YXAgcHJlZmVyZW5jZVZhbHVlczsKLX07Ci0KIGNsYXNzIFdlYlBhZ2VQcm94eSA6IHB1YmxpYyBB
UEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlBhZ2U+CiAjaWYgRU5BQkxFKElOUFVU
X1RZUEVfQ09MT1IpCiAgICAgLCBwdWJsaWMgV2ViQ29sb3JQaWNrZXI6OkNsaWVudApAQCAtMjg3
LDkgKzI2NSwxMSBAQCBjbGFzcyBXZWJQYWdlUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJCiAg
ICAgLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICAsIHB1YmxpYyBJUEM6Ok1lc3Nh
Z2VTZW5kZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViUGFnZVByb3h5PiBjcmVhdGUo
UGFnZUNsaWVudCYsIFdlYlByb2Nlc3NQcm94eSYsIHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2Vi
UGFnZUNvbmZpZ3VyYXRpb24mKTsKKyAgICBzdGF0aWMgUmVmPFdlYlBhZ2VQcm94eT4gY3JlYXRl
KFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJveHkmLCB1aW50NjRfdCBwYWdlSUQsIFJlZjxBUEk6
OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsKICAgICB2aXJ0dWFsIH5XZWJQYWdlUHJveHkoKTsKIAor
ICAgIGNvbnN0IEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24oKSBjb25zdDsK
KwogICAgIHVpbnQ2NF90IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEOyB9CiAgICAg
V2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbklE
OyB9CiAgICAgdm9pZCBzZXRTZXNzaW9uSUQoV2ViQ29yZTo6U2Vzc2lvbklEKTsKQEAgLTEwODQs
NyArMTA2NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyV2hlZWxFdmVudFRlc3RUcmlnZ2Vy
KCk7CiAKIHByaXZhdGU6Ci0gICAgV2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNz
UHJveHkmLCB1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlBhZ2VDb25maWd1cmF0aW9uJik7Cisg
ICAgV2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJveHkmLCB1aW50NjRfdCBw
YWdlSUQsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsKICAgICB2b2lkIHBsYXRmb3Jt
SW5pdGlhbGl6ZSgpOwogCiAgICAgdm9pZCB1cGRhdGVWaWV3U3RhdGUoV2ViQ29yZTo6Vmlld1N0
YXRlOjpGbGFncyBmbGFnc1RvVXBkYXRlID0gV2ViQ29yZTo6Vmlld1N0YXRlOjpBbGxGbGFncyk7
CkBAIC0xNDg4LDYgKzE0NjgsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgaGFuZGxlU3luY2hyb25v
dXNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUsIGNv
bnN0IFVzZXJEYXRhJiBtZXNzYWdlQm9keSwgVXNlckRhdGEmIHJldHVyblVzZXJEYXRhKTsKIAog
ICAgIFBhZ2VDbGllbnQmIG1fcGFnZUNsaWVudDsKKyAgICBSZWY8QVBJOjpQYWdlQ29uZmlndXJh
dGlvbj4gbV9jb25maWd1cmF0aW9uOworCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6TG9hZGVy
Q2xpZW50PiBtX2xvYWRlckNsaWVudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpQb2xpY3lD
bGllbnQ+IG1fcG9saWN5Q2xpZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6Ok5hdmlnYXRp
b25DbGllbnQ+IG1fbmF2aWdhdGlvbkNsaWVudDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkocmV2aXNpb24gMTg4MTkwKQorKysgU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjks
NiArMjksNyBAQAogI2luY2x1ZGUgIkFQSUFycmF5LmgiCiAjaW5jbHVkZSAiQVBJRG93bmxvYWRD
bGllbnQuaCIKICNpbmNsdWRlICJBUElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudC5oIgorI2lu
Y2x1ZGUgIkFQSVBhZ2VDb25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiQVBJUHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWVzc2FnZXMu
aCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5LmgiCkBAIC04MzEsMTggKzgzMiwxOCBAQCBXZWJQ
cm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjpjcmVhdGVOCiAgICAgcmV0dXJuICpwcm9jZXNz
OwogfQogCi1QYXNzUmVmUHRyPFdlYlBhZ2VQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZVdl
YlBhZ2UoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUGFnZUNvbmZpZ3VyYXRpb24gY29uZmln
dXJhdGlvbikKK1Bhc3NSZWZQdHI8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRl
V2ViUGFnZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlv
bj4mJiBwYWdlQ29uZmlndXJhdGlvbikKIHsKLSAgICBpZiAoIWNvbmZpZ3VyYXRpb24ucGFnZUdy
b3VwKQotICAgICAgICBjb25maWd1cmF0aW9uLnBhZ2VHcm91cCA9IG1fZGVmYXVsdFBhZ2VHcm91
cC5wdHIoKTsKLSAgICBpZiAoIWNvbmZpZ3VyYXRpb24ucHJlZmVyZW5jZXMpCi0gICAgICAgIGNv
bmZpZ3VyYXRpb24ucHJlZmVyZW5jZXMgPSAmY29uZmlndXJhdGlvbi5wYWdlR3JvdXAtPnByZWZl
cmVuY2VzKCk7Ci0gICAgaWYgKCFjb25maWd1cmF0aW9uLnZpc2l0ZWRMaW5rUHJvdmlkZXIpCi0g
ICAgICAgIGNvbmZpZ3VyYXRpb24udmlzaXRlZExpbmtQcm92aWRlciA9IG1fdmlzaXRlZExpbmtQ
cm92aWRlci5wdHIoKTsKLSAgICBpZiAoIWNvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSkg
ewotICAgICAgICBBU1NFUlQoIWNvbmZpZ3VyYXRpb24uc2Vzc2lvbklELmlzVmFsaWQoKSk7Ci0g
ICAgICAgIGNvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSA9ICZtX3dlYnNpdGVEYXRhU3Rv
cmUtPndlYnNpdGVEYXRhU3RvcmUoKTsKLSAgICAgICAgY29uZmlndXJhdGlvbi5zZXNzaW9uSUQg
PSBjb25maWd1cmF0aW9uLnByZWZlcmVuY2VzLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkgPyBT
ZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSA6IFNlc3Npb25JRDo6ZGVmYXVsdFNl
c3Npb25JRCgpOworICAgIGlmICghcGFnZUNvbmZpZ3VyYXRpb24tPnBhZ2VHcm91cCgpKQorICAg
ICAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UGFnZUdyb3VwKG1fZGVmYXVsdFBhZ2VHcm91cC5w
dHIoKSk7CisgICAgaWYgKCFwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKSkKKyAgICAg
ICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFByZWZlcmVuY2VzKCZwYWdlQ29uZmlndXJhdGlvbi0+
cGFnZUdyb3VwKCktPnByZWZlcmVuY2VzKCkpOworICAgIGlmICghcGFnZUNvbmZpZ3VyYXRpb24t
PnZpc2l0ZWRMaW5rUHJvdmlkZXIoKSkKKyAgICAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFZp
c2l0ZWRMaW5rUHJvdmlkZXIobV92aXNpdGVkTGlua1Byb3ZpZGVyLnB0cigpKTsKKyAgICBpZiAo
IXBhZ2VDb25maWd1cmF0aW9uLT53ZWJzaXRlRGF0YVN0b3JlKCkpIHsKKyAgICAgICAgQVNTRVJU
KCFwYWdlQ29uZmlndXJhdGlvbi0+c2Vzc2lvbklEKCkuaXNWYWxpZCgpKTsKKyAgICAgICAgcGFn
ZUNvbmZpZ3VyYXRpb24tPnNldFdlYnNpdGVEYXRhU3RvcmUobV93ZWJzaXRlRGF0YVN0b3JlLmdl
dCgpKTsKKyAgICAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFNlc3Npb25JRChwYWdlQ29uZmln
dXJhdGlvbi0+cHJlZmVyZW5jZXMoKS0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpID8gU2Vzc2lv
bklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkgOiBTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9u
SUQoKSk7CiAgICAgfQogCiAgICAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gcHJvY2VzczsKQEAg
LTg1MiwxNCArODUzLDE0IEBAIFBhc3NSZWZQdHI8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUG9v
bDoKICAgICAgICAgaWYgKG1faGF2ZUluaXRpYWxFbXB0eVByb2Nlc3MpIHsKICAgICAgICAgICAg
IHByb2Nlc3MgPSBtX3Byb2Nlc3Nlcy5sYXN0KCk7CiAgICAgICAgICAgICBtX2hhdmVJbml0aWFs
RW1wdHlQcm9jZXNzID0gZmFsc2U7Ci0gICAgICAgIH0gZWxzZSBpZiAoY29uZmlndXJhdGlvbi5y
ZWxhdGVkUGFnZSkgeworICAgICAgICB9IGVsc2UgaWYgKHBhZ2VDb25maWd1cmF0aW9uLT5yZWxh
dGVkUGFnZSgpKSB7CiAgICAgICAgICAgICAvLyBTaGFyaW5nIHByb2Nlc3NlcywgZS5nLiB3aGVu
IGNyZWF0aW5nIHRoZSBwYWdlIHZpYSB3aW5kb3cub3BlbigpLgotICAgICAgICAgICAgcHJvY2Vz
cyA9ICZjb25maWd1cmF0aW9uLnJlbGF0ZWRQYWdlLT5wcm9jZXNzKCk7CisgICAgICAgICAgICBw
cm9jZXNzID0gJnBhZ2VDb25maWd1cmF0aW9uLT5yZWxhdGVkUGFnZSgpLT5wcm9jZXNzKCk7CiAg
ICAgICAgIH0gZWxzZQogICAgICAgICAgICAgcHJvY2VzcyA9ICZjcmVhdGVOZXdXZWJQcm9jZXNz
UmVzcGVjdGluZ1Byb2Nlc3NDb3VudExpbWl0KCk7CiAgICAgfQogCi0gICAgcmV0dXJuIHByb2Nl
c3MtPmNyZWF0ZVdlYlBhZ2UocGFnZUNsaWVudCwgV1RGOjptb3ZlKGNvbmZpZ3VyYXRpb24pKTsK
KyAgICByZXR1cm4gcHJvY2Vzcy0+Y3JlYXRlV2ViUGFnZShwYWdlQ2xpZW50LCBXVEY6Om1vdmUo
cGFnZUNvbmZpZ3VyYXRpb24pKTsKIH0KIAogRG93bmxvYWRQcm94eSogV2ViUHJvY2Vzc1Bvb2w6
OmRvd25sb2FkKFdlYlBhZ2VQcm94eSogaW5pdGlhdGluZ1BhZ2UsIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5oCShyZXZpc2lvbiAxODgxOTApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuaAkod29ya2luZyBjb3B5KQpAQCAtNzYsNiArNzYsNyBAQCBPQkpDX0NMQVNT
IE5TU3RyaW5nOwogbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBEb3dubG9hZENsaWVudDsKIGNsYXNz
IExlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50OworY2xhc3MgUGFnZUNvbmZpZ3VyYXRpb247CiB9
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtODYsNyArODcsNiBAQCBjbGFzcyBXZWJJY29uRGF0
YWJhc2U7CiBjbGFzcyBXZWJQYWdlR3JvdXA7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiBzdHJ1Y3Qg
U3RhdGlzdGljc0RhdGE7Ci1zdHJ1Y3QgV2ViUGFnZUNvbmZpZ3VyYXRpb247CiBzdHJ1Y3QgV2Vi
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsKICAgICAKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNr
PEFQSTo6RGljdGlvbmFyeSo+IERpY3Rpb25hcnlDYWxsYmFjazsKQEAgLTE3MSw3ICsxNzEsNyBA
QCBwdWJsaWM6CiAKICAgICBBUEk6OldlYnNpdGVEYXRhU3RvcmUqIHdlYnNpdGVEYXRhU3RvcmUo
KSBjb25zdCB7IHJldHVybiBtX3dlYnNpdGVEYXRhU3RvcmUuZ2V0KCk7IH0KIAotICAgIFBhc3NS
ZWZQdHI8V2ViUGFnZVByb3h5PiBjcmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmLCBXZWJQYWdlQ29u
ZmlndXJhdGlvbik7CisgICAgUGFzc1JlZlB0cjxXZWJQYWdlUHJveHk+IGNyZWF0ZVdlYlBhZ2Uo
UGFnZUNsaWVudCYsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsKIAogICAgIGNvbnN0
IFN0cmluZyYgaW5qZWN0ZWRCdW5kbGVQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9jb25maWd1cmF0
aW9uLT5pbmplY3RlZEJ1bmRsZVBhdGgoKTsgfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAkocmV2aXNpb24gMTg4MTkwKQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIwNiwxMCArMjA2LDEwIEBAIFdlYlBhZ2VQcm94eSogV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdl
KHUKICAgICByZXR1cm4gZ2xvYmFsUGFnZU1hcCgpLmdldChwYWdlSUQpOwogfQogCi1SZWY8V2Vi
UGFnZVByb3h5PiBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYgcGFn
ZUNsaWVudCwgY29uc3QgV2ViUGFnZUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCitSZWY8
V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYg
cGFnZUNsaWVudCwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYgcGFnZUNvbmZpZ3VyYXRp
b24pCiB7CiAgICAgdWludDY0X3QgcGFnZUlEID0gZ2VuZXJhdGVQYWdlSUQoKTsKLSAgICBSZWY8
V2ViUGFnZVByb3h5PiB3ZWJQYWdlID0gV2ViUGFnZVByb3h5OjpjcmVhdGUocGFnZUNsaWVudCwg
KnRoaXMsIHBhZ2VJRCwgY29uZmlndXJhdGlvbik7CisgICAgUmVmPFdlYlBhZ2VQcm94eT4gd2Vi
UGFnZSA9IFdlYlBhZ2VQcm94eTo6Y3JlYXRlKHBhZ2VDbGllbnQsICp0aGlzLCBwYWdlSUQsIFdU
Rjo6bW92ZShwYWdlQ29uZmlndXJhdGlvbikpOwogCiAgICAgbV9wYWdlTWFwLnNldChwYWdlSUQs
IHdlYlBhZ2UucHRyKCkpOwogICAgIGdsb2JhbFBhZ2VNYXAoKS5zZXQocGFnZUlELCB3ZWJQYWdl
LnB0cigpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmgJKHJldmlzaW9uIDE4ODE5MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6CiAgICAg
V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sKCkgeyByZXR1cm4gbV9wcm9jZXNzUG9vbDsgfQog
CiAgICAgc3RhdGljIFdlYlBhZ2VQcm94eSogd2ViUGFnZSh1aW50NjRfdCBwYWdlSUQpOwotICAg
IFJlZjxXZWJQYWdlUHJveHk+IGNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYsIGNvbnN0IFdlYlBh
Z2VDb25maWd1cmF0aW9uJik7CisgICAgUmVmPFdlYlBhZ2VQcm94eT4gY3JlYXRlV2ViUGFnZShQ
YWdlQ2xpZW50JiwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpOwogICAgIHZvaWQgYWRk
RXhpc3RpbmdXZWJQYWdlKFdlYlBhZ2VQcm94eSosIHVpbnQ2NF90IHBhZ2VJRCk7CiAgICAgdm9p
ZCByZW1vdmVXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwCShyZXZp
c2lvbiAxODgxOTApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25m
aWd1cmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsMTEgQEAgdXNpbmcgbmFt
ZXNwYWNlIFdlYktpdDsKIAogbmFtZXNwYWNlIEFQSSB7CiAKK1JlZjxQYWdlQ29uZmlndXJhdGlv
bj4gUGFnZUNvbmZpZ3VyYXRpb246OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgUGFnZUNvbmZpZ3VyYXRpb24pOworfQorCiBQYWdlQ29uZmlndXJhdGlvbjo6UGFnZUNvbmZp
Z3VyYXRpb24oKQogewogfQpAQCAtNDUsNiArNTAsMjkgQEAgUGFnZUNvbmZpZ3VyYXRpb246On5Q
YWdlQ29uZmlndXJhdGlvbigpCiB7CiB9CiAKK1JlZjxQYWdlQ29uZmlndXJhdGlvbj4gUGFnZUNv
bmZpZ3VyYXRpb246OmNvcHkoKSBjb25zdAoreworICAgIGF1dG8gY29weSA9IHRoaXMtPmNyZWF0
ZSgpOworCisgICAgY29weS0+bV9wcm9jZXNzUG9vbCA9IHRoaXMtPm1fcHJvY2Vzc1Bvb2w7Cisg
ICAgY29weS0+bV91c2VyQ29udGVudENvbnRyb2xsZXIgPSB0aGlzLT5tX3VzZXJDb250ZW50Q29u
dHJvbGxlcjsKKyAgICBjb3B5LT5tX3BhZ2VHcm91cCA9IHRoaXMtPm1fcGFnZUdyb3VwOworICAg
IGNvcHktPm1fcHJlZmVyZW5jZXMgPSB0aGlzLT5tX3ByZWZlcmVuY2VzOworICAgIGNvcHktPm1f
cHJlZmVyZW5jZVZhbHVlcyA9IHRoaXMtPm1fcHJlZmVyZW5jZVZhbHVlczsKKyAgICBjb3B5LT5t
X3JlbGF0ZWRQYWdlID0gdGhpcy0+bV9yZWxhdGVkUGFnZTsKKyAgICBjb3B5LT5tX3Zpc2l0ZWRM
aW5rUHJvdmlkZXIgPSB0aGlzLT5tX3Zpc2l0ZWRMaW5rUHJvdmlkZXI7CisgICAgY29weS0+bV93
ZWJzaXRlRGF0YVN0b3JlID0gdGhpcy0+bV93ZWJzaXRlRGF0YVN0b3JlOworICAgIGNvcHktPm1f
c2Vzc2lvbklEID0gdGhpcy0+bV9zZXNzaW9uSUQ7CisgICAgY29weS0+bV90cmVhdHNTSEExU2ln
bmVkQ2VydGlmaWNhdGVzQXNJbnNlY3VyZSA9IHRoaXMtPm1fdHJlYXRzU0hBMVNpZ25lZENlcnRp
ZmljYXRlc0FzSW5zZWN1cmU7CisKKyNpZiBQTEFURk9STShJT1MpCisgICAgY29weS0+bV9hbHdh
eXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHkgPSB0aGlzLT5tX2Fsd2F5c1J1bnNBdEZvcmVncm91
bmRQcmlvcml0eTsKKyNlbmRpZgorCisgICAgcmV0dXJuIGNvcHk7Cit9CisKKwogV2ViUHJvY2Vz
c1Bvb2wqIFBhZ2VDb25maWd1cmF0aW9uOjpwcm9jZXNzUG9vbCgpCiB7CiAgICAgcmV0dXJuIG1f
cHJvY2Vzc1Bvb2wuZ2V0KCk7CkBAIC05NSwxNiArMTIzLDM1IEBAIHZvaWQgUGFnZUNvbmZpZ3Vy
YXRpb246OnNldFJlbGF0ZWRQYWdlKFcKICAgICBtX3JlbGF0ZWRQYWdlID0gcmVsYXRlZFBhZ2U7
CiB9CiAKLVdlYktpdDo6V2ViUGFnZUNvbmZpZ3VyYXRpb24gUGFnZUNvbmZpZ3VyYXRpb246Ondl
YlBhZ2VDb25maWd1cmF0aW9uKCkKKworVmlzaXRlZExpbmtQcm92aWRlciogUGFnZUNvbmZpZ3Vy
YXRpb246OnZpc2l0ZWRMaW5rUHJvdmlkZXIoKQogewotICAgIFdlYktpdDo6V2ViUGFnZUNvbmZp
Z3VyYXRpb24gY29uZmlndXJhdGlvbjsKKyAgICByZXR1cm4gbV92aXNpdGVkTGlua1Byb3ZpZGVy
LmdldCgpOworfQogCi0gICAgY29uZmlndXJhdGlvbi51c2VyQ29udGVudENvbnRyb2xsZXIgPSB1
c2VyQ29udGVudENvbnRyb2xsZXIoKTsKLSAgICBjb25maWd1cmF0aW9uLnBhZ2VHcm91cCA9IHBh
Z2VHcm91cCgpOwotICAgIGNvbmZpZ3VyYXRpb24ucHJlZmVyZW5jZXMgPSBwcmVmZXJlbmNlcygp
OwotICAgIGNvbmZpZ3VyYXRpb24ucmVsYXRlZFBhZ2UgPSByZWxhdGVkUGFnZSgpOwordm9pZCBQ
YWdlQ29uZmlndXJhdGlvbjo6c2V0VmlzaXRlZExpbmtQcm92aWRlcihWaXNpdGVkTGlua1Byb3Zp
ZGVyKiB2aXNpdGVkTGlua1Byb3ZpZGVyKQoreworICAgIG1fdmlzaXRlZExpbmtQcm92aWRlciA9
IHZpc2l0ZWRMaW5rUHJvdmlkZXI7Cit9CisKK0FQSTo6V2Vic2l0ZURhdGFTdG9yZSogUGFnZUNv
bmZpZ3VyYXRpb246OndlYnNpdGVEYXRhU3RvcmUoKQoreworICAgIHJldHVybiBtX3dlYnNpdGVE
YXRhU3RvcmUuZ2V0KCk7Cit9CiAKLSAgICByZXR1cm4gY29uZmlndXJhdGlvbjsKK3ZvaWQgUGFn
ZUNvbmZpZ3VyYXRpb246OnNldFdlYnNpdGVEYXRhU3RvcmUoQVBJOjpXZWJzaXRlRGF0YVN0b3Jl
KiB3ZWJzaXRlRGF0YVN0b3JlKQoreworICAgIG1fd2Vic2l0ZURhdGFTdG9yZSA9IHdlYnNpdGVE
YXRhU3RvcmU7Cit9CisKK1dlYkNvcmU6OlNlc3Npb25JRCBQYWdlQ29uZmlndXJhdGlvbjo6c2Vz
c2lvbklEKCkKK3sKKyAgICByZXR1cm4gbV9zZXNzaW9uSUQ7Cit9CisKK3ZvaWQgUGFnZUNvbmZp
Z3VyYXRpb246OnNldFNlc3Npb25JRChXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQorewor
ICAgIG1fc2Vzc2lvbklEID0gc2Vzc2lvbklEOwogfQogCiB9IC8vIG5hbWVzcGFjZSBBUEkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1
cmF0aW9uLmgJKHJldmlzaW9uIDE4ODE5MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMjcgKzI3LDMy
IEBACiAjZGVmaW5lIEFQSVBhZ2VDb25maWd1cmF0aW9uX2gKIAogI2luY2x1ZGUgIkFQSU9iamVj
dC5oIgorI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzU3RvcmUuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KIAogbmFtZXNwYWNlIFdlYktp
dCB7Ci1zdHJ1Y3QgV2ViUGFnZUNvbmZpZ3VyYXRpb247Ci1jbGFzcyBXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eTsKLWNsYXNzIFdlYlByb2Nlc3NQb29sOworY2xhc3MgVmlzaXRlZExpbmtQ
cm92aWRlcjsKIGNsYXNzIFdlYlBhZ2VHcm91cDsKLWNsYXNzIFdlYlByZWZlcmVuY2VzOwogY2xh
c3MgV2ViUGFnZVByb3h5OworY2xhc3MgV2ViUHJlZmVyZW5jZXM7CitjbGFzcyBXZWJQcm9jZXNz
UG9vbDsKK2NsYXNzIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OwogfQogCiBuYW1lc3Bh
Y2UgQVBJIHsKIAorY2xhc3MgV2Vic2l0ZURhdGFTdG9yZTsKKwogY2xhc3MgUGFnZUNvbmZpZ3Vy
YXRpb24gOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6OlBhZ2VDb25maWd1cmF0aW9u
PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxQYWdlQ29uZmlndXJhdGlvbj4gY3JlYXRlKCkK
LSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBhZ2VDb25maWd1cmF0aW9uKTsK
LSAgICB9CisgICAgc3RhdGljIFJlZjxQYWdlQ29uZmlndXJhdGlvbj4gY3JlYXRlKCk7CisKKyAg
ICBleHBsaWNpdCBQYWdlQ29uZmlndXJhdGlvbigpOwogICAgIHZpcnR1YWwgflBhZ2VDb25maWd1
cmF0aW9uKCk7CiAKKyAgICBSZWY8UGFnZUNvbmZpZ3VyYXRpb24+IGNvcHkoKSBjb25zdDsKKwog
ICAgIC8vIEZJWE1FOiBUaGUgY29uZmlndXJhdGlvbiBwcm9wZXJ0aWVzIHNob3VsZCByZXR1cm4g
dGhlaXIgZGVmYXVsdCB2YWx1ZXMKICAgICAvLyByYXRoZXIgdGhhbiBudWxscHRyLgogICAgIApA
QCAtNjMsMTkgKzY4LDQ3IEBAIHB1YmxpYzoKICAgICBXZWJLaXQ6OldlYlByZWZlcmVuY2VzKiBw
cmVmZXJlbmNlcygpOwogICAgIHZvaWQgc2V0UHJlZmVyZW5jZXMoV2ViS2l0OjpXZWJQcmVmZXJl
bmNlcyopOwogCisgICAgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZU1hcCYgcHJl
ZmVyZW5jZVZhbHVlcygpIHsgcmV0dXJuIG1fcHJlZmVyZW5jZVZhbHVlczsgfQorCiAgICAgV2Vi
S2l0OjpXZWJQYWdlUHJveHkqIHJlbGF0ZWRQYWdlKCk7CiAgICAgdm9pZCBzZXRSZWxhdGVkUGFn
ZShXZWJLaXQ6OldlYlBhZ2VQcm94eSopOwogCi0gICAgV2ViS2l0OjpXZWJQYWdlQ29uZmlndXJh
dGlvbiB3ZWJQYWdlQ29uZmlndXJhdGlvbigpOworICAgIFdlYktpdDo6VmlzaXRlZExpbmtQcm92
aWRlciogdmlzaXRlZExpbmtQcm92aWRlcigpOworICAgIHZvaWQgc2V0VmlzaXRlZExpbmtQcm92
aWRlcihXZWJLaXQ6OlZpc2l0ZWRMaW5rUHJvdmlkZXIqKTsKKworICAgIFdlYnNpdGVEYXRhU3Rv
cmUqIHdlYnNpdGVEYXRhU3RvcmUoKTsKKyAgICB2b2lkIHNldFdlYnNpdGVEYXRhU3RvcmUoV2Vi
c2l0ZURhdGFTdG9yZSopOworCisgICAgV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCgpOwor
ICAgIHZvaWQgc2V0U2Vzc2lvbklEKFdlYkNvcmU6OlNlc3Npb25JRCk7CisKKyAgICBib29sIHRy
ZWF0c1NIQTFTaWduZWRDZXJ0aWZpY2F0ZXNBc0luc2VjdXJlKCkgeyByZXR1cm4gbV90cmVhdHNT
SEExU2lnbmVkQ2VydGlmaWNhdGVzQXNJbnNlY3VyZTsgfQorICAgIHZvaWQgc2V0VHJlYXRzU0hB
MVNpZ25lZENlcnRpZmljYXRlc0FzSW5zZWN1cmUoYm9vbCB0cmVhdHNTSEExU2lnbmVkQ2VydGlm
aWNhdGVzQXNJbnNlY3VyZSkgeyBtX3RyZWF0c1NIQTFTaWduZWRDZXJ0aWZpY2F0ZXNBc0luc2Vj
dXJlID0gdHJlYXRzU0hBMVNpZ25lZENlcnRpZmljYXRlc0FzSW5zZWN1cmU7IH0gCisKKyNpZiBQ
TEFURk9STShJT1MpCisgICAgYm9vbCBhbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHkoKSB7
IHJldHVybiBtX2Fsd2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eTsgfQorICAgIHZvaWQgc2V0
QWx3YXlzUnVuc0F0Rm9yZWdyb3VuZFByaW9yaXR5KGJvb2wgYWx3YXlzUnVuc0F0Rm9yZWdyb3Vu
ZFByaW9yaXR5KSB7IG1fYWx3YXlzUnVuc0F0Rm9yZWdyb3VuZFByaW9yaXR5ID0gYWx3YXlzUnVu
c0F0Rm9yZWdyb3VuZFByaW9yaXR5OyB9IAorI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgUGFnZUNv
bmZpZ3VyYXRpb24oKTsKIAogICAgIFJlZlB0cjxXZWJLaXQ6OldlYlByb2Nlc3NQb29sPiBtX3By
b2Nlc3NQb29sOwogICAgIFJlZlB0cjxXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5PiBtX3VzZXJDb250ZW50Q29udHJvbGxlcjsKICAgICBSZWZQdHI8V2ViS2l0OjpXZWJQYWdl
R3JvdXA+IG1fcGFnZUdyb3VwOwogICAgIFJlZlB0cjxXZWJLaXQ6OldlYlByZWZlcmVuY2VzPiBt
X3ByZWZlcmVuY2VzOworICAgIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWVNYXAg
bV9wcmVmZXJlbmNlVmFsdWVzOwogICAgIFJlZlB0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4gbV9y
ZWxhdGVkUGFnZTsKKyAgICBSZWZQdHI8V2ViS2l0OjpWaXNpdGVkTGlua1Byb3ZpZGVyPiBtX3Zp
c2l0ZWRMaW5rUHJvdmlkZXI7CisKKyAgICBSZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4gbV93ZWJz
aXRlRGF0YVN0b3JlOworICAgIC8vIEZJWE1FOiBXZSBjdXJyZW50bHkgaGF2ZSB0byBwYXNzIHRo
ZSBzZXNzaW9uIElEIHNlcGFyYXRlbHkgaGVyZSB0byBzdXBwb3J0IHRoZSBsZWdhY3kgcHJpdmF0
ZSBicm93c2luZyBzZXNzaW9uLgorICAgIC8vIE9uY2Ugd2UgZ2V0IHJpZCBvZiBpdCB3ZSBzaG91
bGQgZ2V0IHJpZCBvZiB0aGlzIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyIGFzIHdlbGwuCisgICAg
V2ViQ29yZTo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOworCisgICAgYm9vbCBtX3RyZWF0c1NIQTFT
aWduZWRDZXJ0aWZpY2F0ZXNBc0luc2VjdXJlID0gZmFsc2U7CisjaWYgUExBVEZPUk0oSU9TKQor
ICAgIGJvb2wgbV9hbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHkgPSBmYWxzZTsKKyNlbmRp
ZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgQVBJCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tQYWdlLmNwcAkocmV2aXNpb24gMTg4MTkwKQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcg
QEAKICNpbmNsdWRlICJBUElOYXZpZ2F0aW9uQWN0aW9uLmgiCiAjaW5jbHVkZSAiQVBJTmF2aWdh
dGlvbkNsaWVudC5oIgogI2luY2x1ZGUgIkFQSU5hdmlnYXRpb25SZXNwb25zZS5oIgorI2luY2x1
ZGUgIkFQSVBhZ2VDb25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiQVBJUG9saWN5Q2xpZW50Lmgi
CiAjaW5jbHVkZSAiQVBJU2Vzc2lvblN0YXRlLmgiCiAjaW5jbHVkZSAiQVBJVUlDbGllbnQuaCIK
QEAgLTEyNyw2ICsxMjgsMTIgQEAgV0tQYWdlR3JvdXBSZWYgV0tQYWdlR2V0UGFnZUdyb3VwKFdL
UGFnZQogICAgIHJldHVybiB0b0FQSSgmdG9JbXBsKHBhZ2VSZWYpLT5wYWdlR3JvdXAoKSk7CiB9
CiAKK1dLUGFnZUNvbmZpZ3VyYXRpb25SZWYgV0tQYWdlQ29weVBhZ2VDb25maWd1cmF0aW9uKFdL
UGFnZVJlZiBwYWdlUmVmKQoreworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IHRvSW1wbChwYWdl
UmVmKS0+Y29uZmlndXJhdGlvbigpLmNvcHkoKTsKKyAgICByZXR1cm4gdG9BUEkoJmNvbmZpZ3Vy
YXRpb24ubGVha1JlZigpKTsKK30KKwogdm9pZCBXS1BhZ2VMb2FkVVJMKFdLUGFnZVJlZiBwYWdl
UmVmLCBXS1VSTFJlZiBVUkxSZWYpCiB7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5sb2FkUmVxdWVz
dChVUkwoVVJMKCksIHRvV1RGU3RyaW5nKFVSTFJlZikpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgJKHJldmlzaW9uIDE4ODE5MCkKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTks
OCBAQCBXS19FWFBPUlQgV0tUeXBlSUQgV0tQYWdlR2V0VHlwZUlEKCk7CiBXS19FWFBPUlQgV0tD
b250ZXh0UmVmIFdLUGFnZUdldENvbnRleHQoV0tQYWdlUmVmIHBhZ2UpOwogV0tfRVhQT1JUIFdL
UGFnZUdyb3VwUmVmIFdLUGFnZUdldFBhZ2VHcm91cChXS1BhZ2VSZWYgcGFnZSk7CiAKK1dLX0VY
UE9SVCBXS1BhZ2VDb25maWd1cmF0aW9uUmVmIFdLUGFnZUNvcHlQYWdlQ29uZmlndXJhdGlvbihX
S1BhZ2VSZWYgcGFnZSk7CisKIC8vIFVSTCBSZXF1ZXN0cwogV0tfRVhQT1JUIHZvaWQgV0tQYWdl
TG9hZFVSTChXS1BhZ2VSZWYgcGFnZSwgV0tVUkxSZWYgdXJsKTsKIFdLX0VYUE9SVCB2b2lkIFdL
UGFnZUxvYWRVUkxXaXRoVXNlckRhdGEoV0tQYWdlUmVmIHBhZ2UsIFdLVVJMUmVmIHVybCwgV0tU
eXBlUmVmIHVzZXJEYXRhKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2VDb25maWd1cmF0aW9uUmVmLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tQYWdlQ29uZmlndXJhdGlvblJlZi5jcHAJKHJldmlzaW9uIDE4ODE5
MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VDb25maWd1cmF0aW9u
UmVmLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTMsMyArOTMsMTMgQEAgdm9pZCBXS1BhZ2VDb25m
aWd1cmF0aW9uU2V0UmVsYXRlZFBhZ2UoVwogewogICAgIHRvSW1wbChjb25maWd1cmF0aW9uKS0+
c2V0UmVsYXRlZFBhZ2UodG9JbXBsKHJlbGF0ZWRQYWdlKSk7CiB9CisKK1dLV2Vic2l0ZURhdGFT
dG9yZVJlZiBXS1BhZ2VDb25maWd1cmF0aW9uR2V0V2Vic2l0ZURhdGFTdG9yZShXS1BhZ2VDb25m
aWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24pCit7CisgICAgcmV0dXJuIHRvQVBJKHRvSW1wbChj
b25maWd1cmF0aW9uKS0+d2Vic2l0ZURhdGFTdG9yZSgpKTsKK30KKwordm9pZCBXS1BhZ2VDb25m
aWd1cmF0aW9uU2V0V2Vic2l0ZURhdGFTdG9yZShXS1BhZ2VDb25maWd1cmF0aW9uUmVmIGNvbmZp
Z3VyYXRpb24sIFdLV2Vic2l0ZURhdGFTdG9yZVJlZiB3ZWJzaXRlRGF0YVN0b3JlKQoreworICAg
IHRvSW1wbChjb25maWd1cmF0aW9uKS0+c2V0V2Vic2l0ZURhdGFTdG9yZSh0b0ltcGwod2Vic2l0
ZURhdGFTdG9yZSkpOworfQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
UGFnZUNvbmZpZ3VyYXRpb25SZWYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlQ29uZmlndXJhdGlvblJlZi5oCShyZXZpc2lvbiAxODgxOTApCisr
KyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlQ29uZmlndXJhdGlvblJlZi5o
CSh3b3JraW5nIGNvcHkpCkBAIC01MSw2ICs1MSw5IEBAIFdLX0VYUE9SVCB2b2lkIFdLUGFnZUNv
bmZpZ3VyYXRpb25TZXRQcmUKIFdLX0VYUE9SVCBXS1BhZ2VSZWYgV0tQYWdlQ29uZmlndXJhdGlv
bkdldFJlbGF0ZWRQYWdlKFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbik7CiBX
S19FWFBPUlQgdm9pZCBXS1BhZ2VDb25maWd1cmF0aW9uU2V0UmVsYXRlZFBhZ2UoV0tQYWdlQ29u
ZmlndXJhdGlvblJlZiBjb25maWd1cmF0aW9uLCBXS1BhZ2VSZWYgcmVsYXRlZFBhZ2UpOwogCitX
S19FWFBPUlQgV0tXZWJzaXRlRGF0YVN0b3JlUmVmIFdLUGFnZUNvbmZpZ3VyYXRpb25HZXRXZWJz
aXRlRGF0YVN0b3JlKFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbik7CitXS19F
WFBPUlQgdm9pZCBXS1BhZ2VDb25maWd1cmF0aW9uU2V0V2Vic2l0ZURhdGFTdG9yZShXS1BhZ2VD
b25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24sIFdLV2Vic2l0ZURhdGFTdG9yZVJlZiB3ZWJz
aXRlRGF0YVN0b3JlKTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCShyZXZp
c2lvbiAxODgxOTApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2lmIFdLX0FQSV9FTkFC
TEVECiAKICNpbXBvcnQgIkFQSUZvcm1DbGllbnQuaCIKKyNpbXBvcnQgIkFQSVBhZ2VDb25maWd1
cmF0aW9uLmgiCiAjaW1wb3J0ICJBUElTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbXBvcnQg
IkNvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXIuaCIKICNpbXBvcnQgIkRpYWdub3N0aWNMb2dn
aW5nQ2xpZW50LmgiCkBAIC0zMDAsMzYgKzMwMSwzOCBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhGcmFtZTooQ0dSZWN0KWZyCiAgICAgQ0dSZWN0IGJvdW5kcyA9IHNlbGYuYm91bmRzOwogCiAg
ICAgV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wgPSAqW19jb25maWd1cmF0aW9u
IHByb2Nlc3NQb29sXS0+X3Byb2Nlc3NQb29sOworICAgIAorICAgIFJlZjxBUEk6OlBhZ2VDb25m
aWd1cmF0aW9uPiBwYWdlQ29uZmlndXJhdGlvbiA9IEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OmNy
ZWF0ZSgpOwogCi0gICAgV2ViS2l0OjpXZWJQYWdlQ29uZmlndXJhdGlvbiB3ZWJQYWdlQ29uZmln
dXJhdGlvbjsKLSAgICB3ZWJQYWdlQ29uZmlndXJhdGlvbi5wcmVmZXJlbmNlcyA9IFtfY29uZmln
dXJhdGlvbiBwcmVmZXJlbmNlc10tPl9wcmVmZXJlbmNlcy5nZXQoKTsKKyAgICBwYWdlQ29uZmln
dXJhdGlvbi0+c2V0UHJvY2Vzc1Bvb2woJnByb2Nlc3NQb29sKTsKKyAgICBwYWdlQ29uZmlndXJh
dGlvbi0+c2V0UHJlZmVyZW5jZXMoW19jb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXS0+X3ByZWZl
cmVuY2VzLmdldCgpKTsKICAgICBpZiAoV0tXZWJWaWV3ICpyZWxhdGVkV2ViVmlldyA9IFtfY29u
ZmlndXJhdGlvbiBfcmVsYXRlZFdlYlZpZXddKQotICAgICAgICB3ZWJQYWdlQ29uZmlndXJhdGlv
bi5yZWxhdGVkUGFnZSA9IHJlbGF0ZWRXZWJWaWV3LT5fcGFnZS5nZXQoKTsKKyAgICAgICAgcGFn
ZUNvbmZpZ3VyYXRpb24tPnNldFJlbGF0ZWRQYWdlKHJlbGF0ZWRXZWJWaWV3LT5fcGFnZS5nZXQo
KSk7CiAKLSAgICB3ZWJQYWdlQ29uZmlndXJhdGlvbi51c2VyQ29udGVudENvbnRyb2xsZXIgPSBb
X2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXS0+X3VzZXJDb250ZW50Q29udHJv
bGxlclByb3h5LmdldCgpOwotICAgIHdlYlBhZ2VDb25maWd1cmF0aW9uLnZpc2l0ZWRMaW5rUHJv
dmlkZXIgPSBbX2NvbmZpZ3VyYXRpb24gX3Zpc2l0ZWRMaW5rUHJvdmlkZXJdLT5fdmlzaXRlZExp
bmtQcm92aWRlci5nZXQoKTsKLSAgICB3ZWJQYWdlQ29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0
b3JlID0gJltfY29uZmlndXJhdGlvbiB3ZWJzaXRlRGF0YVN0b3JlXS0+X3dlYnNpdGVEYXRhU3Rv
cmUtPndlYnNpdGVEYXRhU3RvcmUoKTsKLSAgICB3ZWJQYWdlQ29uZmlndXJhdGlvbi5zZXNzaW9u
SUQgPSB3ZWJQYWdlQ29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlLT5zZXNzaW9uSUQoKTsK
LSAgICB3ZWJQYWdlQ29uZmlndXJhdGlvbi50cmVhdHNTSEExU2lnbmVkQ2VydGlmaWNhdGVzQXNJ
bnNlY3VyZSA9IFtfY29uZmlndXJhdGlvbiBfdHJlYXRzU0hBMVNpZ25lZENlcnRpZmljYXRlc0Fz
SW5zZWN1cmVdOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRVc2VyQ29udGVudENvbnRyb2xs
ZXIoW19jb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0tPl91c2VyQ29udGVudENv
bnRyb2xsZXJQcm94eS5nZXQoKSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFZpc2l0ZWRM
aW5rUHJvdmlkZXIoW19jb25maWd1cmF0aW9uIF92aXNpdGVkTGlua1Byb3ZpZGVyXS0+X3Zpc2l0
ZWRMaW5rUHJvdmlkZXIuZ2V0KCkpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRXZWJzaXRl
RGF0YVN0b3JlKFtfY29uZmlndXJhdGlvbiB3ZWJzaXRlRGF0YVN0b3JlXS0+X3dlYnNpdGVEYXRh
U3RvcmUuZ2V0KCkpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRTZXNzaW9uSUQocGFnZUNv
bmZpZ3VyYXRpb24tPndlYnNpdGVEYXRhU3RvcmUoKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Np
b25JRCgpKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0VHJlYXRzU0hBMVNpZ25lZENlcnRp
ZmljYXRlc0FzSW5zZWN1cmUoW19jb25maWd1cmF0aW9uIF90cmVhdHNTSEExU2lnbmVkQ2VydGlm
aWNhdGVzQXNJbnNlY3VyZV0pOwogCiAgICAgUmVmUHRyPFdlYktpdDo6V2ViUGFnZUdyb3VwPiBw
YWdlR3JvdXA7CiAgICAgTlNTdHJpbmcgKmdyb3VwSWRlbnRpZmllciA9IGNvbmZpZ3VyYXRpb24u
X2dyb3VwSWRlbnRpZmllcjsKICAgICBpZiAoZ3JvdXBJZGVudGlmaWVyLmxlbmd0aCkgewogICAg
ICAgICBwYWdlR3JvdXAgPSBXZWJLaXQ6OldlYlBhZ2VHcm91cDo6Y3JlYXRlKGNvbmZpZ3VyYXRp
b24uX2dyb3VwSWRlbnRpZmllcik7Ci0gICAgICAgIHdlYlBhZ2VDb25maWd1cmF0aW9uLnBhZ2VH
cm91cCA9IHBhZ2VHcm91cC5nZXQoKTsKKyAgICAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFBh
Z2VHcm91cChwYWdlR3JvdXAuZ2V0KCkpOwogICAgIH0KIAotICAgIHdlYlBhZ2VDb25maWd1cmF0
aW9uLnByZWZlcmVuY2VWYWx1ZXMuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OnN1cHBy
ZXNzZXNJbmNyZW1lbnRhbFJlbmRlcmluZ0tleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3Rv
cmU6OlZhbHVlKCEhW19jb25maWd1cmF0aW9uIHN1cHByZXNzZXNJbmNyZW1lbnRhbFJlbmRlcmlu
Z10pKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJL
aXQ6OldlYlByZWZlcmVuY2VzS2V5OjpzdXBwcmVzc2VzSW5jcmVtZW50YWxSZW5kZXJpbmdLZXko
KSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZSghIVtfY29uZmlndXJhdGlvbiBz
dXBwcmVzc2VzSW5jcmVtZW50YWxSZW5kZXJpbmddKSk7CiAKICNpZiBQTEFURk9STShJT1MpCi0g
ICAgd2ViUGFnZUNvbmZpZ3VyYXRpb24uYWx3YXlzUnVuc0F0Rm9yZWdyb3VuZFByaW9yaXR5ID0g
W19jb25maWd1cmF0aW9uIF9hbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHldOworICAgIHBh
Z2VDb25maWd1cmF0aW9uLT5zZXRBbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHkoW19jb25m
aWd1cmF0aW9uIF9hbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHldKTsKIAotICAgIHdlYlBh
Z2VDb25maWd1cmF0aW9uLnByZWZlcmVuY2VWYWx1ZXMuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5j
ZXNLZXk6OmFsbG93c0lubGluZU1lZGlhUGxheWJhY2tLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJl
bmNlc1N0b3JlOjpWYWx1ZSghIVtfY29uZmlndXJhdGlvbiBhbGxvd3NJbmxpbmVNZWRpYVBsYXli
YWNrXSkpOwotICAgIHdlYlBhZ2VDb25maWd1cmF0aW9uLnByZWZlcmVuY2VWYWx1ZXMuc2V0KFdl
YktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OmFsbG93c1BpY3R1cmVJblBpY3R1cmVNZWRpYVBsYXli
YWNrS2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoISFbX2NvbmZpZ3Vy
YXRpb24gYWxsb3dzUGljdHVyZUluUGljdHVyZU1lZGlhUGxheWJhY2tdICYmIHNob3VsZEFsbG93
UGljdHVyZUluUGljdHVyZU1lZGlhUGxheWJhY2soKSkpOwotICAgIHdlYlBhZ2VDb25maWd1cmF0
aW9uLnByZWZlcmVuY2VWYWx1ZXMuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OnJlcXVp
cmVzVXNlckdlc3R1cmVGb3JNZWRpYVBsYXliYWNrS2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5j
ZXNTdG9yZTo6VmFsdWUoISFbX2NvbmZpZ3VyYXRpb24gcmVxdWlyZXNVc2VyQWN0aW9uRm9yTWVk
aWFQbGF5YmFja10pKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygp
LnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5OjphbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNr
S2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoISFbX2NvbmZpZ3VyYXRp
b24gYWxsb3dzSW5saW5lTWVkaWFQbGF5YmFja10pKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+
cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5OjphbGxvd3NQ
aWN0dXJlSW5QaWN0dXJlTWVkaWFQbGF5YmFja0tleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2Vz
U3RvcmU6OlZhbHVlKCEhW19jb25maWd1cmF0aW9uIGFsbG93c1BpY3R1cmVJblBpY3R1cmVNZWRp
YVBsYXliYWNrXSAmJiBzaG91bGRBbGxvd1BpY3R1cmVJblBpY3R1cmVNZWRpYVBsYXliYWNrKCkp
KTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6
OldlYlByZWZlcmVuY2VzS2V5OjpyZXF1aXJlc1VzZXJHZXN0dXJlRm9yTWVkaWFQbGF5YmFja0tl
eSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKCEhW19jb25maWd1cmF0aW9u
IHJlcXVpcmVzVXNlckFjdGlvbkZvck1lZGlhUGxheWJhY2tdKSk7CiAjZW5kaWYKICNpZiBFTkFC
TEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQotICAgIHdlYlBhZ2VDb25maWd1cmF0aW9uLnBy
ZWZlcmVuY2VWYWx1ZXMuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OmFsbG93c0FpclBs
YXlGb3JNZWRpYVBsYXliYWNrS2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFs
dWUoISFbX2NvbmZpZ3VyYXRpb24gYWxsb3dzQWlyUGxheUZvck1lZGlhUGxheWJhY2tdKSk7Cisg
ICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQ
cmVmZXJlbmNlc0tleTo6YWxsb3dzQWlyUGxheUZvck1lZGlhUGxheWJhY2tLZXkoKSwgV2ViS2l0
OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZSghIVtfY29uZmlndXJhdGlvbiBhbGxvd3NBaXJQ
bGF5Rm9yTWVkaWFQbGF5YmFja10pKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAt
MzM5LDcgKzM0Miw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihDR1JlY3QpZnIK
IAogICAgIFtzZWxmIGFkZFN1YnZpZXc6X3Njcm9sbFZpZXcuZ2V0KCldOwogCi0gICAgX2NvbnRl
bnRWaWV3ID0gYWRvcHROUyhbW1dLQ29udGVudFZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Ym91
bmRzIHByb2Nlc3NQb29sOnByb2Nlc3NQb29sIGNvbmZpZ3VyYXRpb246V1RGOjptb3ZlKHdlYlBh
Z2VDb25maWd1cmF0aW9uKSB3ZWJWaWV3OnNlbGZdKTsKKyAgICBfY29udGVudFZpZXcgPSBhZG9w
dE5TKFtbV0tDb250ZW50VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpib3VuZHMgcHJvY2Vzc1Bv
b2w6cHJvY2Vzc1Bvb2wgY29uZmlndXJhdGlvbjpXVEY6Om1vdmUocGFnZUNvbmZpZ3VyYXRpb24p
IHdlYlZpZXc6c2VsZl0pOwogCiAgICAgX3BhZ2UgPSBbX2NvbnRlbnRWaWV3IHBhZ2VdOwogICAg
IF9wYWdlLT5zZXREZXZpY2VPcmllbnRhdGlvbihkZXZpY2VPcmllbnRhdGlvbigpKTsKQEAgLTM2
Nyw3ICszNzAsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyCiAj
ZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBfd2tWaWV3ID0gYWRvcHROUyhbW1dLVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpib3VuZHMgcHJvY2Vzc1Bvb2w6cHJvY2Vzc1Bvb2wgY29u
ZmlndXJhdGlvbjpXVEY6Om1vdmUod2ViUGFnZUNvbmZpZ3VyYXRpb24pIHdlYlZpZXc6c2VsZl0p
OworICAgIF93a1ZpZXcgPSBhZG9wdE5TKFtbV0tWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOmJv
dW5kcyBwcm9jZXNzUG9vbDpwcm9jZXNzUG9vbCBjb25maWd1cmF0aW9uOldURjo6bW92ZShwYWdl
Q29uZmlndXJhdGlvbikgd2ViVmlldzpzZWxmXSk7CiAgICAgW3NlbGYgYWRkU3Vidmlldzpfd2tW
aWV3LmdldCgpXTsKICAgICBfcGFnZSA9IFdlYktpdDo6dG9JbXBsKFtfd2tWaWV3IHBhZ2VSZWZd
KTsKIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29u
dGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViQ29udGV4dC5jcHAJKHJldmlzaW9uIDE4ODE5MCkKKysrIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMSw2ICsyMSw3IEBACiAjaW5jbHVkZSAiV2ViS2l0V2ViQ29udGV4dC5oIgogCiAjaW5jbHVk
ZSAiQVBJRG93bmxvYWRDbGllbnQuaCIKKyNpbmNsdWRlICJBUElQYWdlQ29uZmlndXJhdGlvbi5o
IgogI2luY2x1ZGUgIkFQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIkFQ
SVN0cmluZy5oIgogI2luY2x1ZGUgIlRleHRDaGVja2VyLmgiCkBAIC0xMzE1LDEzICsxMzE2LDE0
IEBAIHZvaWQgd2Via2l0V2ViQ29udGV4dERpZEZpbmlzaExvYWRpbmdDdXMKIHZvaWQgd2Via2l0
V2ViQ29udGV4dENyZWF0ZVBhZ2VGb3JXZWJWaWV3KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQs
IFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdFVzZXJDb250ZW50TWFuYWdlciogdXNlckNv
bnRlbnRNYW5hZ2VyLCBXZWJLaXRXZWJWaWV3KiByZWxhdGVkVmlldykKIHsKICAgICBXZWJLaXRX
ZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3ZWJWaWV3KTsK
LSAgICBXZWJQYWdlQ29uZmlndXJhdGlvbiB3ZWJQYWdlQ29uZmlndXJhdGlvbjsKLSAgICB3ZWJQ
YWdlQ29uZmlndXJhdGlvbi5wcmVmZXJlbmNlcyA9IHdlYmtpdFNldHRpbmdzR2V0UHJlZmVyZW5j
ZXMod2Via2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncyh3ZWJWaWV3KSk7Ci0gICAgd2ViUGFnZUNv
bmZpZ3VyYXRpb24ucmVsYXRlZFBhZ2UgPSByZWxhdGVkVmlldyA/IHdlYmtpdFdlYlZpZXdCYXNl
R2V0UGFnZShXRUJLSVRfV0VCX1ZJRVdfQkFTRShyZWxhdGVkVmlldykpIDogbnVsbHB0cjsKLSAg
ICB3ZWJQYWdlQ29uZmlndXJhdGlvbi51c2VyQ29udGVudENvbnRyb2xsZXIgPSB1c2VyQ29udGVu
dE1hbmFnZXIgPyB3ZWJraXRVc2VyQ29udGVudE1hbmFnZXJHZXRVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eSh1c2VyQ29udGVudE1hbmFnZXIpIDogbnVsbHB0cjsKLSAgICB3ZWJQYWdlQ29uZmln
dXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlID0gJndlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckdldERh
dGFTdG9yZShjb250ZXh0LT5wcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpOwotICAgIHdl
YlBhZ2VDb25maWd1cmF0aW9uLnNlc3Npb25JRCA9IHdlYlBhZ2VDb25maWd1cmF0aW9uLndlYnNp
dGVEYXRhU3RvcmUtPnNlc3Npb25JRCgpOwotICAgIHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlV2Vi
UGFnZSh3ZWJWaWV3QmFzZSwgY29udGV4dC0+cHJpdi0+Y29udGV4dC5nZXQoKSwgV1RGOjptb3Zl
KHdlYlBhZ2VDb25maWd1cmF0aW9uKSk7CisKKyAgICBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlv
bj4gcGFnZUNvbmZpZ3VyYXRpb24gPSBBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsK
KyAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UHJlZmVyZW5jZXMod2Via2l0U2V0dGluZ3NHZXRQ
cmVmZXJlbmNlcyh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKHdlYlZpZXcpKSk7CisgICAg
cGFnZUNvbmZpZ3VyYXRpb24tPnNldFJlbGF0ZWRQYWdlKHJlbGF0ZWRWaWV3ID8gd2Via2l0V2Vi
Vmlld0Jhc2VHZXRQYWdlKFdFQktJVF9XRUJfVklFV19CQVNFKHJlbGF0ZWRWaWV3KSkgOiBudWxs
cHRyKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0VXNlckNvbnRlbnRDb250cm9sbGVyKHVz
ZXJDb250ZW50TWFuYWdlciA/IHdlYmtpdFVzZXJDb250ZW50TWFuYWdlckdldFVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5KHVzZXJDb250ZW50TWFuYWdlcikgOiBudWxscHRyKTsKKyAgICBwYWdl
Q29uZmlndXJhdGlvbi0+c2V0V2Vic2l0ZURhdGFTdG9yZSgmd2Via2l0V2Vic2l0ZURhdGFNYW5h
Z2VyR2V0RGF0YVN0b3JlKGNvbnRleHQtPnByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkp
OworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRTZXNzaW9uSUQocGFnZUNvbmZpZ3VyYXRpb24t
PndlYnNpdGVEYXRhU3RvcmUoKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Npb25JRCgpKTsKKyAg
ICB3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZVdlYlBhZ2Uod2ViVmlld0Jhc2UsIGNvbnRleHQtPnBy
aXYtPmNvbnRleHQuZ2V0KCksIFdURjo6bW92ZShwYWdlQ29uZmlndXJhdGlvbikpOwogCiAgICAg
V2ViUGFnZVByb3h5KiBwYWdlID0gd2Via2l0V2ViVmlld0Jhc2VHZXRQYWdlKHdlYlZpZXdCYXNl
KTsKICAgICBjb250ZXh0LT5wcml2LT53ZWJWaWV3cy5zZXQocGFnZS0+cGFnZUlEKCksIHdlYlZp
ZXcpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
d0Jhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXdCYXNlLmNwcAkocmV2aXNpb24gMTg4MTkwKQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViS2l0
V2ViVmlld0Jhc2UuaCIKIAorI2luY2x1ZGUgIkFQSVBhZ2VDb25maWd1cmF0aW9uLmgiCiAjaW5j
bHVkZSAiRHJhd2luZ0FyZWFQcm94eUltcGwuaCIKICNpbmNsdWRlICJJbnB1dE1ldGhvZEZpbHRl
ci5oIgogI2luY2x1ZGUgIktleUJpbmRpbmdUcmFuc2xhdG9yLmgiCkBAIC0xMDQ0LDEyICsxMDQ1
LDEzIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19iYXNlX2NsYXNzX2kKIFdlYktpdFdl
YlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZShXZWJQcm9jZXNzUG9vbCogY29udGV4
dCwgV2ViUHJlZmVyZW5jZXMqIHByZWZlcmVuY2VzLCBXZWJQYWdlR3JvdXAqIHBhZ2VHcm91cCwg
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkqIHVzZXJDb250ZW50Q29udHJvbGxlciwgV2Vi
UGFnZVByb3h5KiByZWxhdGVkUGFnZSkKIHsKICAgICBXZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0
V2ViVmlld0Jhc2UgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRShnX29iamVjdF9uZXcoV0VCS0lUX1RZ
UEVfV0VCX1ZJRVdfQkFTRSwgbnVsbHB0cikpOwotICAgIFdlYlBhZ2VDb25maWd1cmF0aW9uIHdl
YlBhZ2VDb25maWd1cmF0aW9uOwotICAgIHdlYlBhZ2VDb25maWd1cmF0aW9uLnByZWZlcmVuY2Vz
ID0gcHJlZmVyZW5jZXM7Ci0gICAgd2ViUGFnZUNvbmZpZ3VyYXRpb24ucGFnZUdyb3VwID0gcGFn
ZUdyb3VwOwotICAgIHdlYlBhZ2VDb25maWd1cmF0aW9uLnJlbGF0ZWRQYWdlID0gcmVsYXRlZFBh
Z2U7Ci0gICAgd2ViUGFnZUNvbmZpZ3VyYXRpb24udXNlckNvbnRlbnRDb250cm9sbGVyID0gdXNl
ckNvbnRlbnRDb250cm9sbGVyOwotICAgIHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlV2ViUGFnZSh3
ZWJraXRXZWJWaWV3QmFzZSwgY29udGV4dCwgV1RGOjptb3ZlKHdlYlBhZ2VDb25maWd1cmF0aW9u
KSk7CisKKyAgICBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4gcGFnZUNvbmZpZ3VyYXRpb24g
PSBBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKKyAgICBwYWdlQ29uZmlndXJhdGlv
bi0+c2V0UHJlZmVyZW5jZXMocHJlZmVyZW5jZXMpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5z
ZXRQYWdlR3JvdXAocGFnZUdyb3VwKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UmVsYXRl
ZFBhZ2UocmVsYXRlZFBhZ2UpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRVc2VyQ29udGVu
dENvbnRyb2xsZXIodXNlckNvbnRlbnRDb250cm9sbGVyKTsKKyAgICB3ZWJraXRXZWJWaWV3QmFz
ZUNyZWF0ZVdlYlBhZ2Uod2Via2l0V2ViVmlld0Jhc2UsIGNvbnRleHQsIFdURjo6bW92ZShwYWdl
Q29uZmlndXJhdGlvbikpOwogICAgIHJldHVybiB3ZWJraXRXZWJWaWV3QmFzZTsKIH0KIApAQCAt
MTA3MCw3ICsxMDcyLDcgQEAgc3RhdGljIHZvaWQgZGV2aWNlU2NhbGVGYWN0b3JDaGFuZ2VkKFdl
YgogfQogI2VuZGlmIC8vIEhBVkUoR1RLX1NDQUxFX0ZBQ1RPUikKIAotdm9pZCB3ZWJraXRXZWJW
aWV3QmFzZUNyZWF0ZVdlYlBhZ2UoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNl
LCBXZWJQcm9jZXNzUG9vbCogY29udGV4dCwgV2ViUGFnZUNvbmZpZ3VyYXRpb24mJiBjb25maWd1
cmF0aW9uKQordm9pZCB3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZVdlYlBhZ2UoV2ViS2l0V2ViVmll
d0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlLCBXZWJQcm9jZXNzUG9vbCogY29udGV4dCwgUmVmPEFQ
STo6UGFnZUNvbmZpZ3VyYXRpb24+JiYgY29uZmlndXJhdGlvbikKIHsKICAgICBXZWJLaXRXZWJW
aWV3QmFzZVByaXZhdGUqIHByaXYgPSB3ZWJraXRXZWJWaWV3QmFzZS0+cHJpdjsKICAgICBwcml2
LT5wYWdlUHJveHkgPSBjb250ZXh0LT5jcmVhdGVXZWJQYWdlKCpwcml2LT5wYWdlQ2xpZW50LCBX
VEY6Om1vdmUoY29uZmlndXJhdGlvbikpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmgJKHJl
dmlzaW9uIDE4ODE5MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYlZpZXdCYXNlUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBACiBX
ZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2VDcmVhdGUoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbCosIFdlYktpdDo6V2ViUHJlZmVyZW5jZXMqLCBXZWJLaXQ6OldlYlBhZ2VHcm91cCos
IFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkqLCBXZWJLaXQ6OldlYlBhZ2VQ
cm94eSopOwogR3RrSU1Db250ZXh0KiB3ZWJraXRXZWJWaWV3QmFzZUdldElNQ29udGV4dChXZWJL
aXRXZWJWaWV3QmFzZSopOwogV2ViS2l0OjpXZWJQYWdlUHJveHkqIHdlYmtpdFdlYlZpZXdCYXNl
R2V0UGFnZShXZWJLaXRXZWJWaWV3QmFzZSopOwotdm9pZCB3ZWJraXRXZWJWaWV3QmFzZUNyZWF0
ZVdlYlBhZ2UoV2ViS2l0V2ViVmlld0Jhc2UqLCBXZWJLaXQ6OldlYlByb2Nlc3NQb29sKiwgV2Vi
S2l0OjpXZWJQYWdlQ29uZmlndXJhdGlvbiYmKTsKK3ZvaWQgd2Via2l0V2ViVmlld0Jhc2VDcmVh
dGVXZWJQYWdlKFdlYktpdFdlYlZpZXdCYXNlKiwgV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCosIFJl
ZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsKIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VTZXRU
b29sdGlwVGV4dChXZWJLaXRXZWJWaWV3QmFzZSosIGNvbnN0IGNoYXIqKTsKIHZvaWQgd2Via2l0
V2ViVmlld0Jhc2VTZXRUb29sdGlwQXJlYShXZWJLaXRXZWJWaWV3QmFzZSosIGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmKTsKIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VGb3J3YXJkTmV4dEtleUV2ZW50
KFdlYktpdFdlYlZpZXdCYXNlKik7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5jcHAJKHJl
dmlzaW9uIDE4ODE5MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYnNpdGVEYXRhTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAg
ZW51bSB7CiB9OwogCiBzdHJ1Y3QgX1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlclByaXZhdGUgewot
ICAgIFJlZlB0cjxXZWJzaXRlRGF0YVN0b3JlPiB3ZWJzaXRlRGF0YVN0b3JlOworICAgIFJlZlB0
cjxBUEk6OldlYnNpdGVEYXRhU3RvcmU+IHdlYnNpdGVEYXRhU3RvcmU7CiAgICAgR1VuaXF1ZVB0
cjxjaGFyPiBiYXNlRGF0YURpcmVjdG9yeTsKICAgICBHVW5pcXVlUHRyPGNoYXI+IGJhc2VDYWNo
ZURpcmVjdG9yeTsKICAgICBHVW5pcXVlUHRyPGNoYXI+IGxvY2FsU3RvcmFnZURpcmVjdG9yeTsK
QEAgLTI5OSwxMiArMjk5LDEyIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFu
YWdlcl8KIFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciogd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2Vy
Q3JlYXRlKFdlYnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uKQog
ewogICAgIFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciogbWFuYWdlciA9IFdFQktJVF9XRUJTSVRF
X0RBVEFfTUFOQUdFUihnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCU0lURV9EQVRBX01BTkFH
RVIsIG51bGxwdHIpKTsKLSAgICBtYW5hZ2VyLT5wcml2LT53ZWJzaXRlRGF0YVN0b3JlID0gV2Vi
c2l0ZURhdGFTdG9yZTo6Y3JlYXRlKFdURjo6bW92ZShjb25maWd1cmF0aW9uKSk7CisgICAgbWFu
YWdlci0+cHJpdi0+d2Vic2l0ZURhdGFTdG9yZSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6Y3Jl
YXRlKFdURjo6bW92ZShjb25maWd1cmF0aW9uKSk7CiAKICAgICByZXR1cm4gbWFuYWdlcjsKIH0K
IAotV2Vic2l0ZURhdGFTdG9yZSYgd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyR2V0RGF0YVN0b3Jl
KFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciogbWFuYWdlcikKK0FQSTo6V2Vic2l0ZURhdGFTdG9y
ZSYgd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyR2V0RGF0YVN0b3JlKFdlYktpdFdlYnNpdGVEYXRh
TWFuYWdlciogbWFuYWdlcikKIHsKICAgICBXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJQcml2YXRl
KiBwcml2ID0gbWFuYWdlci0+cHJpdjsKICAgICBpZiAoIXByaXYtPndlYnNpdGVEYXRhU3RvcmUp
IHsKQEAgLTMxOCw3ICszMTgsNyBAQCBXZWJzaXRlRGF0YVN0b3JlJiB3ZWJraXRXZWJzaXRlRGF0
YU1hbmFnCiAgICAgICAgIGNvbmZpZ3VyYXRpb24ud2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkgPSAh
cHJpdi0+d2ViU1FMRGlyZWN0b3J5ID8KICAgICAgICAgICAgIEFQSTo6V2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkgOiBXZWJDb3JlOjpmaWxlbmFtZVRv
U3RyaW5nKHByaXYtPndlYlNRTERpcmVjdG9yeS5nZXQoKSk7CiAgICAgICAgIGNvbmZpZ3VyYXRp
b24ubWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICAgICAgcHJpdi0+d2Vic2l0ZURh
dGFTdG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZShXVEY6Om1vdmUoY29uZmlndXJhdGlv
bikpOworICAgICAgICBwcml2LT53ZWJzaXRlRGF0YVN0b3JlID0gQVBJOjpXZWJzaXRlRGF0YVN0
b3JlOjpjcmVhdGUoV1RGOjptb3ZlKGNvbmZpZ3VyYXRpb24pKTsKICAgICB9CiAKICAgICByZXR1
cm4gKnByaXYtPndlYnNpdGVEYXRhU3RvcmU7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJQcml2YXRlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vic2l0ZURhdGFNYW5h
Z2VyUHJpdmF0ZS5oCShyZXZpc2lvbiAxODgxOTApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJQcml2YXRlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIwLDEwICsyMCwxMSBAQAogI2lmbmRlZiBXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJQ
cml2YXRlX2gKICNkZWZpbmUgV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyUHJpdmF0ZV9oCiAKKyNp
bmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAiV2ViS2l0UHJpdmF0ZS5o
IgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKIAogV2ViS2l0V2Vic2l0ZURhdGFNYW5h
Z2VyKiB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJDcmVhdGUoV2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlOjpDb25maWd1cmF0aW9uJiYpOwotV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlJiB3ZWJraXRX
ZWJzaXRlRGF0YU1hbmFnZXJHZXREYXRhU3RvcmUoV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKik7
CitBUEk6OldlYnNpdGVEYXRhU3RvcmUmIHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckdldERhdGFT
dG9yZShXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIqKTsKIAogI2VuZGlmIC8vIFdlYktpdFdlYnNp
dGVEYXRhTWFuYWdlclByaXZhdGVfaApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9pb3MvV0tWaWV3SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvaW9zL1dLVmlld0lPUy5tbQkocmV2aXNpb24gMTg4MTkwKQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9pb3MvV0tWaWV3SU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMjUs
MTEgKzIyNSwxMiBAQCAtICh2b2lkKV9jb21tb25Jbml0aWFsaXphdGlvbldpdGhDb250ZXh0CiAK
ICAgICBbc2VsZiBhZGRTdWJ2aWV3Ol9zY3JvbGxWaWV3LmdldCgpXTsKIAotICAgIFdlYktpdDo6
V2ViUGFnZUNvbmZpZ3VyYXRpb24gd2ViUGFnZUNvbmZpZ3VyYXRpb247Ci0gICAgd2ViUGFnZUNv
bmZpZ3VyYXRpb24ucGFnZUdyb3VwID0gdG9JbXBsKHBhZ2VHcm91cFJlZik7Ci0gICAgd2ViUGFn
ZUNvbmZpZ3VyYXRpb24ucmVsYXRlZFBhZ2UgPSB0b0ltcGwocmVsYXRlZFBhZ2UpOworICAgIFJl
ZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gQVBJOjpQYWdlQ29uZmln
dXJhdGlvbjo6Y3JlYXRlKCk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0UHJvY2Vzc1Bvb2wodG9J
bXBsKGNvbnRleHRSZWYpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRQYWdlR3JvdXAodG9JbXBs
KHBhZ2VHcm91cFJlZikpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldFJlbGF0ZWRQYWdlKHRvSW1w
bChyZWxhdGVkUGFnZSkpOwogCi0gICAgX2NvbnRlbnRWaWV3ID0gYWRvcHROUyhbW1dLQ29udGVu
dFZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Ym91bmRzIHByb2Nlc3NQb29sOip0b0ltcGwoY29u
dGV4dFJlZikgY29uZmlndXJhdGlvbjpXVEY6Om1vdmUod2ViUGFnZUNvbmZpZ3VyYXRpb24pIHdr
VmlldzpzZWxmXSk7CisgICAgX2NvbnRlbnRWaWV3ID0gYWRvcHROUyhbW1dLQ29udGVudFZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6Ym91bmRzIHByb2Nlc3NQb29sOip0b0ltcGwoY29udGV4dFJl
ZikgY29uZmlndXJhdGlvbjpXVEY6Om1vdmUoY29uZmlndXJhdGlvbikgd2tWaWV3OnNlbGZdKTsK
IAogICAgIFtbX2NvbnRlbnRWaWV3IGxheWVyXSBzZXRBbmNob3JQb2ludDpDR1BvaW50WmVyb107
CiAgICAgW19jb250ZW50VmlldyBzZXRGcmFtZTpib3VuZHNdOwpJbmRleDogU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQkocmV2aXNpb24gMTg4MTkwKQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0zNzQ0LDcgKzM3NDQsNyBAQCAtICh2b2lkKV9zZXRQcmltYXJ5VHJhY2tpbmdBcmVhOihOU1Ry
YWNrCiAgICAgW3NlbGYgYWRkVHJhY2tpbmdBcmVhOnRyYWNraW5nQXJlYV07CiB9CiAKLS0gKGlu
c3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUgcHJvY2Vzc1Bvb2w6KFdlYlBy
b2Nlc3NQb29sJilwcm9jZXNzUG9vbCBjb25maWd1cmF0aW9uOihXZWJQYWdlQ29uZmlndXJhdGlv
bil3ZWJQYWdlQ29uZmlndXJhdGlvbiB3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3CistIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lIHByb2Nlc3NQb29sOihXZWJQ
cm9jZXNzUG9vbCYpcHJvY2Vzc1Bvb2wgY29uZmlndXJhdGlvbjooUmVmPEFQSTo6UGFnZUNvbmZp
Z3VyYXRpb24+JiYpY29uZmlndXJhdGlvbiB3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3CiB7
CiAgICAgc2VsZiA9IFtzdXBlciBpbml0V2l0aEZyYW1lOmZyYW1lXTsKICAgICBpZiAoIXNlbGYp
CkBAIC0zNzY2LDcgKzM3NjYsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooTlNS
ZWN0KWZyCiAgICAgW3NlbGYgYWRkVHJhY2tpbmdBcmVhOl9kYXRhLT5fcHJpbWFyeVRyYWNraW5n
QXJlYS5nZXQoKV07CiAKICAgICBfZGF0YS0+X3BhZ2VDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVl
PFBhZ2VDbGllbnRJbXBsPihzZWxmLCB3ZWJWaWV3KTsKLSAgICBfZGF0YS0+X3BhZ2UgPSBwcm9j
ZXNzUG9vbC5jcmVhdGVXZWJQYWdlKCpfZGF0YS0+X3BhZ2VDbGllbnQsIFdURjo6bW92ZSh3ZWJQ
YWdlQ29uZmlndXJhdGlvbikpOworICAgIF9kYXRhLT5fcGFnZSA9IHByb2Nlc3NQb29sLmNyZWF0
ZVdlYlBhZ2UoKl9kYXRhLT5fcGFnZUNsaWVudCwgV1RGOjptb3ZlKGNvbmZpZ3VyYXRpb24pKTsK
ICAgICBfZGF0YS0+X3BhZ2UtPnNldEFkZHNWaXNpdGVkTGlua3MocHJvY2Vzc1Bvb2wuaGlzdG9y
eUNsaWVudCgpLmFkZHNWaXNpdGVkTGlua3MoKSk7CiAKICAgICBfZGF0YS0+X3BhZ2UtPnNldElu
dHJpbnNpY0RldmljZVNjYWxlRmFjdG9yKFtzZWxmIF9pbnRyaW5zaWNEZXZpY2VTY2FsZUZhY3Rv
cl0pOwpAQCAtMzk5NCwxOSArMzk5NCwyMCBAQCAtIChpZClpbml0V2l0aEZyYW1lOihOU1JlY3Qp
ZnJhbWUgY29udGV4CiAKIC0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSBjb250ZXh0
UmVmOihXS0NvbnRleHRSZWYpY29udGV4dFJlZiBwYWdlR3JvdXBSZWY6KFdLUGFnZUdyb3VwUmVm
KXBhZ2VHcm91cFJlZiByZWxhdGVkVG9QYWdlOihXS1BhZ2VSZWYpcmVsYXRlZFBhZ2UKIHsKLSAg
ICBXZWJQYWdlQ29uZmlndXJhdGlvbiB3ZWJQYWdlQ29uZmlndXJhdGlvbjsKLSAgICB3ZWJQYWdl
Q29uZmlndXJhdGlvbi5wYWdlR3JvdXAgPSB0b0ltcGwocGFnZUdyb3VwUmVmKTsKLSAgICB3ZWJQ
YWdlQ29uZmlndXJhdGlvbi5yZWxhdGVkUGFnZSA9IHRvSW1wbChyZWxhdGVkUGFnZSk7CisgICAg
UmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBBUEk6OlBhZ2VDb25m
aWd1cmF0aW9uOjpjcmVhdGUoKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRQcm9jZXNzUG9vbCh0
b0ltcGwoY29udGV4dFJlZikpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldFBhZ2VHcm91cCh0b0lt
cGwocGFnZUdyb3VwUmVmKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0UmVsYXRlZFBhZ2UodG9J
bXBsKHJlbGF0ZWRQYWdlKSk7CiAKLSAgICByZXR1cm4gW3NlbGYgaW5pdFdpdGhGcmFtZTpmcmFt
ZSBwcm9jZXNzUG9vbDoqdG9JbXBsKGNvbnRleHRSZWYpIGNvbmZpZ3VyYXRpb246d2ViUGFnZUNv
bmZpZ3VyYXRpb24gd2ViVmlldzpuaWxdOworICAgIHJldHVybiBbc2VsZiBpbml0V2l0aEZyYW1l
OmZyYW1lIHByb2Nlc3NQb29sOip0b0ltcGwoY29udGV4dFJlZikgY29uZmlndXJhdGlvbjpXVEY6
Om1vdmUoY29uZmlndXJhdGlvbikgd2ViVmlldzpuaWxdOwogfQogCi0tIChpZClpbml0V2l0aEZy
YW1lOihOU1JlY3QpZnJhbWUgY29uZmlndXJhdGlvblJlZjooV0tQYWdlQ29uZmlndXJhdGlvblJl
Ziljb25maWd1cmF0aW9uCistIChpZClpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUgY29uZmln
dXJhdGlvblJlZjooV0tQYWdlQ29uZmlndXJhdGlvblJlZiljb25maWd1cmF0aW9uUmVmCiB7Ci0g
ICAgYXV0byYgcHJvY2Vzc1Bvb2wgPSAqdG9JbXBsKGNvbmZpZ3VyYXRpb24pLT5wcm9jZXNzUG9v
bCgpOwotICAgIGF1dG8gd2ViUGFnZUNvbmZpZ3VyYXRpb24gPSB0b0ltcGwoY29uZmlndXJhdGlv
biktPndlYlBhZ2VDb25maWd1cmF0aW9uKCk7CisgICAgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRp
b24+IGNvbmZpZ3VyYXRpb24gPSAqdG9JbXBsKGNvbmZpZ3VyYXRpb25SZWYpOworICAgIGF1dG8m
IHByb2Nlc3NQb29sID0gKmNvbmZpZ3VyYXRpb24tPnByb2Nlc3NQb29sKCk7CiAKLSAgICByZXR1
cm4gW3NlbGYgaW5pdFdpdGhGcmFtZTpmcmFtZSBwcm9jZXNzUG9vbDpwcm9jZXNzUG9vbCBjb25m
aWd1cmF0aW9uOndlYlBhZ2VDb25maWd1cmF0aW9uIHdlYlZpZXc6bmlsXTsKKyAgICByZXR1cm4g
W3NlbGYgaW5pdFdpdGhGcmFtZTpmcmFtZSBwcm9jZXNzUG9vbDpwcm9jZXNzUG9vbCBjb25maWd1
cmF0aW9uOldURjo6bW92ZShjb25maWd1cmF0aW9uKSB3ZWJWaWV3Om5pbF07CiB9CiAKIC0gKEJP
T0wpd2FudHNVcGRhdGVMYXllcgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9t
YWMvV0tWaWV3SW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL21hYy9XS1ZpZXdJbnRlcm5hbC5oCShyZXZpc2lvbiAxODgxOTApCisrKyBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXdJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zOCw2ICszOCw3IEBACiAKIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgT2JqZWN0OworY2xh
c3MgUGFnZUNvbmZpZ3VyYXRpb247CiB9CiAKIG5hbWVzcGFjZSBJUEMgewpAQCAtNTgsNyArNTks
NiBAQCBjbGFzcyBWaWV3U25hcHNob3Q7CiBjbGFzcyBXZWJQcm9jZXNzUG9vbDsKIHN0cnVjdCBD
b2xvclNwYWNlRGF0YTsKIHN0cnVjdCBFZGl0b3JTdGF0ZTsKLXN0cnVjdCBXZWJQYWdlQ29uZmln
dXJhdGlvbjsKIH0KIAogQGNsYXNzIFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXI7CkBAIC02
OCw5ICs2OCw3IEBAIHN0cnVjdCBXZWJQYWdlQ29uZmlndXJhdGlvbjsKICNlbmRpZgogCiBAaW50
ZXJmYWNlIFdLVmlldyAoKQotI2lmIFdLX0FQSV9FTkFCTEVECi0tIChpbnN0YW5jZXR5cGUpaW5p
dFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lIHByb2Nlc3NQb29sOihXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sJilwcm9jZXNzUG9vbCBjb25maWd1cmF0aW9uOihXZWJLaXQ6OldlYlBhZ2VDb25maWd1cmF0
aW9uKXdlYlBhZ2VDb25maWd1cmF0aW9uIHdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXc7Ci0j
ZW5kaWYKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihDR1JlY3QpZnJhbWUgcHJvY2Vz
c1Bvb2w6KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmKXByb2Nlc3NQb29sIGNvbmZpZ3VyYXRpb246
KFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKWNvbmZpZ3VyYXRpb24gd2ViVmlldzooV0tX
ZWJWaWV3ICopd2ViVmlldzsKIAogLSAoc3RkOjp1bmlxdWVfcHRyPFdlYktpdDo6RHJhd2luZ0Fy
ZWFQcm94eT4pX2NyZWF0ZURyYXdpbmdBcmVhUHJveHk7CiAtIChCT09MKV9pc0ZvY3VzZWQ7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9XZWJWaWV3LmNwcAkocmV2aXNpb24gMTg4MTkwKQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViVmlldy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIldlYlZpZXcuaCIKIAorI2luY2x1ZGUgIkFQ
SVBhZ2VDb25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiQ29vcmRpbmF0ZWREcmF3aW5nQXJlYVBy
b3h5LmgiCiAjaW5jbHVkZSAiQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmgiCiAjaW5jbHVkZSAi
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuaCIKQEAgLTUyLDExICs1MywxMSBAQCBXZWJW
aWV3OjpXZWJWaWV3KFdlYlByb2Nlc3NQb29sKiBjb250ZXh0CiAgICAgLCBtX3Zpc2libGUoZmFs
c2UpCiAgICAgLCBtX29wYWNpdHkoMS4wKQogewotICAgIFdlYlBhZ2VDb25maWd1cmF0aW9uIHdl
YlBhZ2VDb25maWd1cmF0aW9uOwotICAgIHdlYlBhZ2VDb25maWd1cmF0aW9uLnBhZ2VHcm91cCA9
IHBhZ2VHcm91cDsKKyAgICBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4gcGFnZUNvbmZpZ3Vy
YXRpb24gPSBBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKKyAgICBwYWdlQ29uZmln
dXJhdGlvbi0+c2V0UGFnZUdyb3VwKHBhZ2VHcm91cCk7CiAKICAgICAvLyBOZWVkIHRvIGNhbGwg
Y3JlYXRlV2ViUGFnZSBhZnRlciBvdGhlciBkYXRhIG1lbWJlcnMsIHNwZWNpZmljYWxseSBtX3Zp
c2libGUsIGFyZSBpbml0aWFsaXplZC4KLSAgICBtX3BhZ2UgPSBjb250ZXh0LT5jcmVhdGVXZWJQ
YWdlKCp0aGlzLCBXVEY6Om1vdmUod2ViUGFnZUNvbmZpZ3VyYXRpb24pKTsKKyAgICBtX3BhZ2Ug
PSBjb250ZXh0LT5jcmVhdGVXZWJQYWdlKCp0aGlzLCBXVEY6Om1vdmUocGFnZUNvbmZpZ3VyYXRp
b24pKTsKIAogICAgIG1fcGFnZS0+cGFnZUdyb3VwKCkucHJlZmVyZW5jZXMoKS5zZXRBY2NlbGVy
YXRlZENvbXBvc2l0aW5nRW5hYmxlZCh0cnVlKTsKICAgICBtX3BhZ2UtPnBhZ2VHcm91cCgpLnBy
ZWZlcmVuY2VzKCkuc2V0Rm9yY2VDb21wb3NpdGluZ01vZGUodHJ1ZSk7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcuaAkocmV2aXNpb24gMTg4MTkw
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3LmgJKHdvcmtp
bmcgY29weSkKQEAgLTM0LDYgKzM0LDEwIEBACiBAY2xhc3MgV0tWaWV3OwogQGNsYXNzIFdLV2Vi
VmlldzsKIAorbmFtZXNwYWNlIEFQSSB7CitjbGFzcyBQYWdlQ29uZmlndXJhdGlvbjsKK30KKwog
bmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IEhpZ2hsaWdodDsKIH0KQEAgLTQ1LDcgKzQ5LDYg
QEAgY2xhc3MgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb247CiBjbGFzcyBXZWJGcmFtZVByb3h5
OwogY2xhc3MgV2ViUGFnZVByb3h5OwogY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7Ci1zdHJ1Y3QgV2Vi
UGFnZUNvbmZpZ3VyYXRpb247CiB9CiAKIEBpbnRlcmZhY2UgV0tDb250ZW50VmlldyA6IFVJVmll
dyB7CkBAIC02MSw4ICs2NCw4IEBAIHN0cnVjdCBXZWJQYWdlQ29uZmlndXJhdGlvbjsKIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCBnZXR0ZXI9aXNTaG93aW5nSW5zcGVjdG9ySW5kaWNhdGlvbikgQk9P
TCBzaG93aW5nSW5zcGVjdG9ySW5kaWNhdGlvbjsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFk
b25seSkgQk9PTCBpc0JhY2tncm91bmQ7CiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1l
OihDR1JlY3QpZnJhbWUgcHJvY2Vzc1Bvb2w6KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmKXByb2Nl
c3NQb29sIGNvbmZpZ3VyYXRpb246KFdlYktpdDo6V2ViUGFnZUNvbmZpZ3VyYXRpb24pd2ViUGFn
ZUNvbmZpZ3VyYXRpb24gd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldzsKLS0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aEZyYW1lOihDR1JlY3QpZnJhbWUgcHJvY2Vzc1Bvb2w6KFdlYktpdDo6V2Vi
UHJvY2Vzc1Bvb2wmKXByb2Nlc3NQb29sIGNvbmZpZ3VyYXRpb246KFdlYktpdDo6V2ViUGFnZUNv
bmZpZ3VyYXRpb24pd2ViUGFnZUNvbmZpZ3VyYXRpb24gd2tWaWV3OihXS1ZpZXcgKil3ZWJWaWV3
OworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KENHUmVjdClmcmFtZSBwcm9jZXNzUG9v
bDooV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYpcHJvY2Vzc1Bvb2wgY29uZmlndXJhdGlvbjooUmVm
PEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpY29uZmlndXJhdGlvbiB3ZWJWaWV3OihXS1dlYlZp
ZXcgKil3ZWJWaWV3OworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KENHUmVjdClmcmFt
ZSBwcm9jZXNzUG9vbDooV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYpcHJvY2Vzc1Bvb2wgY29uZmln
dXJhdGlvbjooUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpY29uZmlndXJhdGlvbiB3a1Zp
ZXc6KFdLVmlldyAqKXdlYlZpZXc7CiAKIC0gKHZvaWQpZGlkVXBkYXRlVmlzaWJsZVJlY3Q6KENH
UmVjdCl2aXNpYmxlUmVjdCB1bm9ic2N1cmVkUmVjdDooQ0dSZWN0KXVub2JzY3VyZWRSZWN0CiAg
ICAgdW5vYnNjdXJlZFJlY3RJblNjcm9sbFZpZXdDb29yZGluYXRlczooQ0dSZWN0KXVub2JzY3Vy
ZWRSZWN0SW5TY3JvbGxWaWV3Q29vcmRpbmF0ZXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0JKHJldmlzaW9uIDE4ODE5MCkKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQkod29ya2luZyBjb3B5KQpA
QCAtMjgsNiArMjgsNyBAQAogCiAjaWYgUExBVEZPUk0oSU9TKQogCisjaW1wb3J0ICJBUElQYWdl
Q29uZmlndXJhdGlvbi5oIgogI2ltcG9ydCAiQXBwbGljYXRpb25TdGF0ZVRyYWNrZXIuaCIKICNp
bXBvcnQgIlBhZ2VDbGllbnRJbXBsSU9TLmgiCiAjaW1wb3J0ICJSZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYVByb3h5LmgiCkBAIC0xODEsMTEgKzE4MiwxMSBAQCAtIChpbnN0YW5jZXR5cGUpaW5p
dFdpdGhGcmFtZTooQ0dSZWN0KWZyCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFwcGxpY2F0aW9uU3Rh
dGVUcmFja2VyPiBfYXBwbGljYXRpb25TdGF0ZVRyYWNrZXI7CiB9CiAKLS0gKGluc3RhbmNldHlw
ZSlfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoUHJvY2Vzc1Bvb2w6KFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2wmKXByb2Nlc3NQb29sIGNvbmZpZ3VyYXRpb246KFdlYktpdDo6V2ViUGFnZUNvbmZpZ3Vy
YXRpb24pd2ViUGFnZUNvbmZpZ3VyYXRpb24KKy0gKGluc3RhbmNldHlwZSlfY29tbW9uSW5pdGlh
bGl6YXRpb25XaXRoUHJvY2Vzc1Bvb2w6KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmKXByb2Nlc3NQ
b29sIGNvbmZpZ3VyYXRpb246KFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKWNvbmZpZ3Vy
YXRpb24KIHsKICAgICBBU1NFUlQoX3BhZ2VDbGllbnQpOwogCi0gICAgX3BhZ2UgPSBwcm9jZXNz
UG9vbC5jcmVhdGVXZWJQYWdlKCpfcGFnZUNsaWVudCwgV1RGOjptb3ZlKHdlYlBhZ2VDb25maWd1
cmF0aW9uKSk7CisgICAgX3BhZ2UgPSBwcm9jZXNzUG9vbC5jcmVhdGVXZWJQYWdlKCpfcGFnZUNs
aWVudCwgV1RGOjptb3ZlKGNvbmZpZ3VyYXRpb24pKTsKICAgICBfcGFnZS0+aW5pdGlhbGl6ZVdl
YlBhZ2UoKTsKICAgICBfcGFnZS0+c2V0SW50cmluc2ljRGV2aWNlU2NhbGVGYWN0b3IoV0tHZXRT
Y2FsZUZhY3RvckZvclNjcmVlbihbVUlTY3JlZW4gbWFpblNjcmVlbl0pKTsKICAgICBfcGFnZS0+
c2V0VXNlRml4ZWRMYXlvdXQodHJ1ZSk7CkBAIC0yMTgsNyArMjE5LDcgQEAgLSAoaW5zdGFuY2V0
eXBlKV9jb21tb25Jbml0aWFsaXphdGlvbldpdAogICAgIHJldHVybiBzZWxmOwogfQogCi0tIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lIHByb2Nlc3NQb29sOihXZWJL
aXQ6OldlYlByb2Nlc3NQb29sJilwcm9jZXNzUG9vbCBjb25maWd1cmF0aW9uOihXZWJLaXQ6Oldl
YlBhZ2VDb25maWd1cmF0aW9uKXdlYlBhZ2VDb25maWd1cmF0aW9uIHdlYlZpZXc6KFdLV2ViVmll
dyAqKXdlYlZpZXcKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihDR1JlY3QpZnJhbWUg
cHJvY2Vzc1Bvb2w6KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmKXByb2Nlc3NQb29sIGNvbmZpZ3Vy
YXRpb246KFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKWNvbmZpZ3VyYXRpb24gd2ViVmll
dzooV0tXZWJWaWV3ICopd2ViVmlldwogewogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdFdp
dGhGcmFtZTpmcmFtZV0pKQogICAgICAgICByZXR1cm4gbmlsOwpAQCAtMjI4LDEwICsyMjksMTAg
QEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KENHUmVjdClmcgogICAgIF9wYWdlQ2xp
ZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlQ2xpZW50SW1wbD4oc2VsZiwgd2ViVmlldyk7CiAg
ICAgX3dlYlZpZXcgPSB3ZWJWaWV3OwogCi0gICAgcmV0dXJuIFtzZWxmIF9jb21tb25Jbml0aWFs
aXphdGlvbldpdGhQcm9jZXNzUG9vbDpwcm9jZXNzUG9vbCBjb25maWd1cmF0aW9uOndlYlBhZ2VD
b25maWd1cmF0aW9uXTsKKyAgICByZXR1cm4gW3NlbGYgX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0
aFByb2Nlc3NQb29sOnByb2Nlc3NQb29sIGNvbmZpZ3VyYXRpb246V1RGOjptb3ZlKGNvbmZpZ3Vy
YXRpb24pXTsKIH0KIAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KENHUmVjdClmcmFt
ZSBwcm9jZXNzUG9vbDooV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYpcHJvY2Vzc1Bvb2wgY29uZmln
dXJhdGlvbjooV2ViS2l0OjpXZWJQYWdlQ29uZmlndXJhdGlvbil3ZWJQYWdlQ29uZmlndXJhdGlv
biB3a1ZpZXc6KFdLVmlldyAqKXdrVmlldworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6
KENHUmVjdClmcmFtZSBwcm9jZXNzUG9vbDooV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYpcHJvY2Vz
c1Bvb2wgY29uZmlndXJhdGlvbjooUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpY29uZmln
dXJhdGlvbiB3a1ZpZXc6KFdLVmlldyAqKXdrVmlldwogewogICAgIGlmICghKHNlbGYgPSBbc3Vw
ZXIgaW5pdFdpdGhGcmFtZTpmcmFtZV0pKQogICAgICAgICByZXR1cm4gbmlsOwpAQCAtMjQwLDcg
KzI0MSw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihDR1JlY3QpZnIKIAogICAg
IF9wYWdlQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlQ2xpZW50SW1wbD4oc2VsZiwgd2tW
aWV3KTsKIAotICAgIHJldHVybiBbc2VsZiBfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoUHJvY2Vz
c1Bvb2w6cHJvY2Vzc1Bvb2wgY29uZmlndXJhdGlvbjp3ZWJQYWdlQ29uZmlndXJhdGlvbl07Cisg
ICAgcmV0dXJuIFtzZWxmIF9jb21tb25Jbml0aWFsaXphdGlvbldpdGhQcm9jZXNzUG9vbDpwcm9j
ZXNzUG9vbCBjb25maWd1cmF0aW9uOldURjo6bW92ZShjb25maWd1cmF0aW9uKV07CiB9CiAKIC0g
KHZvaWQpZGVhbGxvYwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258587</attachid>
            <date>2015-08-08 20:23:32 -0700</date>
            <delta_ts>2015-08-09 18:10:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147811-20150808202319.patch</filename>
            <type>text/plain</type>
            <size>53196</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4ODE5MikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg1IEBACisyMDE1LTA4LTA4ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVwbGFjZSBXZWJQYWdlQ29uZmlndXJh
dGlvbiB3aXRoIEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24gYW5kIGV4cG9zZSBhIEMtU1BJIGFjY2Vz
c29yIGZvciBpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQ3ODExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgLSBBZGRzIHRoZSBtaXNzaW5nIHBpZWNlcyBmcm9tIFdlYlBhZ2VDb25maWd1cmF0aW9uIGlu
dG8gQVBJOjpQYWdlQ29uZmlndXJhdGlvbi4KKyAgICAgICAgLSBBZGRzIEMtU1BJIHRvIHNldCBh
bmQgZ2V0IHRoZSBXZWJzaXRlRGF0YVN0b3JlIG9uIHRoZSBXS1BhZ2VDb25maWd1cmF0aW9uUmVm
LgorICAgICAgICAtIFVzZXMgQVBJOjpQYWdlQ29uZmlndXJhdGlvbiB0byBwYXNzIGNvbmZpZ3Vy
YXRpb24gaW5mb3JtYXRpb24gZnJvbSBXS1dlYlZpZXcvV0tWaWV3IAorICAgICAgICAgIHRvIFdl
YlBhZ2VQcm94eS4KKyAgICAgICAgLSBTdG9yZXMgdGhlIEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24g
b24gdGhlIFdlYlBhZ2VQcm94eSBhbmQgZXhwb3NlcyBhIG5ldyBDLVNQSSBmdW5jdGlvbiwKKyAg
ICAgICAgICBXS1BhZ2VDb3B5UGFnZUNvbmZpZ3VyYXRpb24sIHRvIGdldCBhIGNvcHkgb2YgaXQu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcDoKKyAg
ICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChBUEk6OlBh
Z2VDb25maWd1cmF0aW9uOjpQYWdlQ29uZmlndXJhdGlvbik6CisgICAgICAgIChBUEk6OlBhZ2VD
b25maWd1cmF0aW9uOjp+UGFnZUNvbmZpZ3VyYXRpb24pOgorICAgICAgICAoQVBJOjpQYWdlQ29u
ZmlndXJhdGlvbjo6Y29weSk6CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpwcm9j
ZXNzUG9vbCk6CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpzZXRSZWxhdGVkUGFn
ZSk6CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjp2aXNpdGVkTGlua1Byb3ZpZGVy
KToKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OnNldFZpc2l0ZWRMaW5rUHJvdmlk
ZXIpOgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6d2Vic2l0ZURhdGFTdG9yZSk6
CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpzZXRXZWJzaXRlRGF0YVN0b3JlKToK
KyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OnNlc3Npb25JRCk6CisgICAgICAgIChB
UEk6OlBhZ2VDb25maWd1cmF0aW9uOjpzZXRTZXNzaW9uSUQpOgorICAgICAgICAoQVBJOjpQYWdl
Q29uZmlndXJhdGlvbjo6d2ViUGFnZUNvbmZpZ3VyYXRpb24pOiBEZWxldGVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKEFQSTo6UGFn
ZUNvbmZpZ3VyYXRpb246OnByZWZlcmVuY2VWYWx1ZXMpOgorICAgICAgICAoQVBJOjpQYWdlQ29u
ZmlndXJhdGlvbjo6dHJlYXRzU0hBMVNpZ25lZENlcnRpZmljYXRlc0FzSW5zZWN1cmUpOgorICAg
ICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6c2V0VHJlYXRzU0hBMVNpZ25lZENlcnRpZmlj
YXRlc0FzSW5zZWN1cmUpOgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6YWx3YXlz
UnVuc0F0Rm9yZWdyb3VuZFByaW9yaXR5KToKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRp
b246OnNldEFsd2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eSk6CisgICAgICAgIChBUEk6OlBh
Z2VDb25maWd1cmF0aW9uOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdlR2V0UGFnZUdyb3VwKToKKyAgICAgICAg
KFdLUGFnZUNvcHlQYWdlQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXS1BhZ2VMb2FkVVJMKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLUGFnZUNvbmZpZ3VyYXRpb25SZWYuY3BwOgorICAgICAgICAoV0tQYWdlQ29uZmln
dXJhdGlvblNldFJlbGF0ZWRQYWdlKToKKyAgICAgICAgKFdLUGFnZUNvbmZpZ3VyYXRpb25HZXRX
ZWJzaXRlRGF0YVN0b3JlKToKKyAgICAgICAgKFdLUGFnZUNvbmZpZ3VyYXRpb25TZXRXZWJzaXRl
RGF0YVN0b3JlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlQ29uZmlndXJhdGlv
blJlZi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAg
ICAgICAoLVtXS1dlYlZpZXcgaW5pdFdpdGhGcmFtZTpjb25maWd1cmF0aW9uOl0pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvaW9zL1dLVmlld0lPUy5tbToKKyAgICAgICAgKC1bV0tWaWV3IF9j
b21tb25Jbml0aWFsaXphdGlvbldpdGhDb250ZXh0UmVmOnBhZ2VHcm91cFJlZjpyZWxhdGVkVG9Q
YWdlOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbToKKyAgICAgICAg
KC1bV0tWaWV3IF9zZXRQcmltYXJ5VHJhY2tpbmdBcmVhOl0pOgorICAgICAgICAoLVtXS1ZpZXcg
aW5pdFdpdGhGcmFtZTpwcm9jZXNzUG9vbDpjb25maWd1cmF0aW9uOndlYlZpZXc6XSk6CisgICAg
ICAgICgtW1dLVmlldyBpbml0V2l0aEZyYW1lOmNvbnRleHRSZWY6cGFnZUdyb3VwUmVmOnJlbGF0
ZWRUb1BhZ2U6XSk6CisgICAgICAgICgtW1dLVmlldyBpbml0V2l0aEZyYW1lOmNvbmZpZ3VyYXRp
b25SZWY6XSk6CisgICAgICAgICgtW1dLVmlldyB3YW50c1VwZGF0ZUxheWVyXSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50ZXJuYWwuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVh
dGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6fldlYlBhZ2VQcm94eSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6Y29uZmlndXJhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6cHJvY2Vzc0lkZW50aWZpZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwYWdlSUQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNlc3Npb25JRCk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNy
ZWF0ZU5ld1dlYlByb2Nlc3NSZXNwZWN0aW5nUHJvY2Vzc0NvdW50TGltaXQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQb29sOjpkb3dubG9hZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6d2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQcm94eTo6Y3JlYXRlV2ViUGFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnByb2Nl
c3NQb29sKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW06CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aFByb2Nlc3NQb29sOmNvbmZpZ3VyYXRpb246
XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgaW5pdFdpdGhGcmFtZTpwcm9jZXNzUG9vbDpj
b25maWd1cmF0aW9uOndlYlZpZXc6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgaW5pdFdp
dGhGcmFtZTpwcm9jZXNzUG9vbDpjb25maWd1cmF0aW9uOndrVmlldzpdKToKKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyBkZWFsbG9jXSk6CisKIDIwMTUtMDgtMDcgIEZpbGlwIFBpemxvICA8ZnBp
emxvQGFwcGxlLmNvbT4KIAogICAgICAgICBMaWdodHdlaWdodCBsb2NrcyBzaG91bGQgYmUgYWRh
cHRpdmUKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxODgxOTIpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzkzLDYgKzM5Myw3
IEBAIHNldChXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL0FQSUZyYW1lSW5mby5j
cHAKICAgICBVSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24uY3BwCiAgICAgVUlQcm9jZXNzL0FQ
SS9BUElOYXZpZ2F0aW9uRGF0YS5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1
cmF0aW9uLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvQVBJU2Vzc2lvbi5jcHAKICAgICBVSVByb2Nlc3MvQVBJ
L0FQSVNlc3Npb25TdGF0ZS5jcHAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCShyZXZpc2lvbiAxODgxOTIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQAogI2lu
Y2x1ZGUgIkFQSU5hdmlnYXRpb25BY3Rpb24uaCIKICNpbmNsdWRlICJBUElOYXZpZ2F0aW9uQ2xp
ZW50LmgiCiAjaW5jbHVkZSAiQVBJTmF2aWdhdGlvblJlc3BvbnNlLmgiCisjaW5jbHVkZSAiQVBJ
UGFnZUNvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJBUElQb2xpY3lDbGllbnQuaCIKICNpbmNs
dWRlICJBUElTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIkFQSVVJQ2xpZW50LmgiCkBAIC0y
OTMsMTMgKzI5NCwxNCBAQCBwcml2YXRlOgogICAgIFBhZ2VDbGllbnQmIG1fcGFnZUNsaWVudDsK
IH07CiAKLVJlZjxXZWJQYWdlUHJveHk+IFdlYlBhZ2VQcm94eTo6Y3JlYXRlKFBhZ2VDbGllbnQm
IHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgdWludDY0X3QgcGFnZUlELCBj
b25zdCBXZWJQYWdlQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKK1JlZjxXZWJQYWdlUHJv
eHk+IFdlYlBhZ2VQcm94eTo6Y3JlYXRlKFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nl
c3NQcm94eSYgcHJvY2VzcywgdWludDY0X3QgcGFnZUlELCBSZWY8QVBJOjpQYWdlQ29uZmlndXJh
dGlvbj4mJiBjb25maWd1cmF0aW9uKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlBh
Z2VQcm94eShwYWdlQ2xpZW50LCBwcm9jZXNzLCBwYWdlSUQsIGNvbmZpZ3VyYXRpb24pKTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJQYWdlUHJveHkocGFnZUNsaWVudCwgcHJvY2Vzcywg
cGFnZUlELCBXVEY6Om1vdmUoY29uZmlndXJhdGlvbikpKTsKIH0KIAotV2ViUGFnZVByb3h5OjpX
ZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9j
ZXNzLCB1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlBhZ2VDb25maWd1cmF0aW9uJiBjb25maWd1
cmF0aW9uKQorV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVu
dCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCB1aW50NjRfdCBwYWdlSUQsIFJlZjxBUEk6OlBh
Z2VDb25maWd1cmF0aW9uPiYmIGNvbmZpZ3VyYXRpb24pCiAgICAgOiBtX3BhZ2VDbGllbnQocGFn
ZUNsaWVudCkKKyAgICAsIG1fY29uZmlndXJhdGlvbihXVEY6Om1vdmUoY29uZmlndXJhdGlvbikp
CiAgICAgLCBtX2xvYWRlckNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6TG9hZGVyQ2xpZW50
PigpKQogICAgICwgbV9wb2xpY3lDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OlBvbGljeUNs
aWVudD4oKSkKICAgICAsIG1fZm9ybUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6Rm9ybUNs
aWVudD4oKSkKQEAgLTMxMSwxNCArMzEzLDE0IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5
KFBhZ2VDbGllbnQmIHAKICNlbmRpZgogICAgICwgbV9uYXZpZ2F0aW9uU3RhdGUoc3RkOjptYWtl
X3VuaXF1ZTxXZWJOYXZpZ2F0aW9uU3RhdGU+KCkpCiAgICAgLCBtX3Byb2Nlc3MocHJvY2VzcykK
LSAgICAsIG1fcGFnZUdyb3VwKCpjb25maWd1cmF0aW9uLnBhZ2VHcm91cCkKLSAgICAsIG1fcHJl
ZmVyZW5jZXMoKmNvbmZpZ3VyYXRpb24ucHJlZmVyZW5jZXMpCi0gICAgLCBtX3VzZXJDb250ZW50
Q29udHJvbGxlcihjb25maWd1cmF0aW9uLnVzZXJDb250ZW50Q29udHJvbGxlcikKLSAgICAsIG1f
dmlzaXRlZExpbmtQcm92aWRlcigqY29uZmlndXJhdGlvbi52aXNpdGVkTGlua1Byb3ZpZGVyKQot
ICAgICwgbV93ZWJzaXRlRGF0YVN0b3JlKCpjb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUp
CisgICAgLCBtX3BhZ2VHcm91cCgqbV9jb25maWd1cmF0aW9uLT5wYWdlR3JvdXAoKSkKKyAgICAs
IG1fcHJlZmVyZW5jZXMoKm1fY29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKSkKKyAgICAsIG1f
dXNlckNvbnRlbnRDb250cm9sbGVyKG1fY29uZmlndXJhdGlvbi0+dXNlckNvbnRlbnRDb250cm9s
bGVyKCkpCisgICAgLCBtX3Zpc2l0ZWRMaW5rUHJvdmlkZXIoKm1fY29uZmlndXJhdGlvbi0+dmlz
aXRlZExpbmtQcm92aWRlcigpKQorICAgICwgbV93ZWJzaXRlRGF0YVN0b3JlKG1fY29uZmlndXJh
dGlvbi0+d2Vic2l0ZURhdGFTdG9yZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCkpCiAgICAgLCBtX21h
aW5GcmFtZShudWxscHRyKQogICAgICwgbV91c2VyQWdlbnQoc3RhbmRhcmRVc2VyQWdlbnQoKSkK
LSAgICAsIG1fdHJlYXRzU0hBMUNlcnRpZmljYXRlc0FzSW5zZWN1cmUoY29uZmlndXJhdGlvbi50
cmVhdHNTSEExU2lnbmVkQ2VydGlmaWNhdGVzQXNJbnNlY3VyZSkKKyAgICAsIG1fdHJlYXRzU0hB
MUNlcnRpZmljYXRlc0FzSW5zZWN1cmUobV9jb25maWd1cmF0aW9uLT50cmVhdHNTSEExU2lnbmVk
Q2VydGlmaWNhdGVzQXNJbnNlY3VyZSgpKQogI2lmIFBMQVRGT1JNKElPUykKICAgICAsIG1faGFz
UmVjZWl2ZWRMYXllclRyZWVUcmFuc2FjdGlvbkFmdGVyRGlkQ29tbWl0TG9hZCh0cnVlKQogICAg
ICwgbV9maXJzdExheWVyVHJlZVRyYW5zYWN0aW9uSWRBZnRlckRpZENvbW1pdExvYWQoMCkKQEAg
LTMzNSw3ICszMzcsNyBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBw
CiAgICAgLCBtX3ZpZXdTdGF0ZShWaWV3U3RhdGU6Ok5vRmxhZ3MpCiAgICAgLCBtX3ZpZXdXYXNF
dmVySW5XaW5kb3coZmFsc2UpCiAjaWYgUExBVEZPUk0oSU9TKQotICAgICwgbV9hbHdheXNSdW5z
QXRGb3JlZ3JvdW5kUHJpb3JpdHkoY29uZmlndXJhdGlvbi5hbHdheXNSdW5zQXRGb3JlZ3JvdW5k
UHJpb3JpdHkpCisgICAgLCBtX2Fsd2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eShtX2NvbmZp
Z3VyYXRpb24tPmFsd2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eSgpKQogI2VuZGlmCiAgICAg
LCBtX2JhY2tGb3J3YXJkTGlzdChXZWJCYWNrRm9yd2FyZExpc3Q6OmNyZWF0ZSgqdGhpcykpCiAg
ICAgLCBtX21haW50YWluc0luYWN0aXZlU2VsZWN0aW9uKGZhbHNlKQpAQCAtMzc5LDcgKzM4MSw3
IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHAKICAgICAsIG1faXNU
cmFja2luZ1RvdWNoRXZlbnRzKGZhbHNlKQogI2VuZGlmCiAgICAgLCBtX3BhZ2VJRChwYWdlSUQp
Ci0gICAgLCBtX3Nlc3Npb25JRChjb25maWd1cmF0aW9uLnNlc3Npb25JRCkKKyAgICAsIG1fc2Vz
c2lvbklEKG1fY29uZmlndXJhdGlvbi0+c2Vzc2lvbklEKCkpCiAgICAgLCBtX2lzUGFnZVN1c3Bl
bmRlZChmYWxzZSkKICAgICAsIG1fYWRkc1Zpc2l0ZWRMaW5rcyh0cnVlKQogI2lmIEVOQUJMRShS
RU1PVEVfSU5TUEVDVE9SKQpAQCAtNDM2LDcgKzQzOCw3IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFn
ZVByb3h5KFBhZ2VDbGllbnQmIHAKICNlbmRpZgogICAgICwgbV9zY3JvbGxQaW5uaW5nQmVoYXZp
b3IoRG9Ob3RQaW4pCiAgICAgLCBtX25hdmlnYXRpb25JRCgwKQotICAgICwgbV9jb25maWd1cmF0
aW9uUHJlZmVyZW5jZVZhbHVlcyhjb25maWd1cmF0aW9uLnByZWZlcmVuY2VWYWx1ZXMpCisgICAg
LCBtX2NvbmZpZ3VyYXRpb25QcmVmZXJlbmNlVmFsdWVzKG1fY29uZmlndXJhdGlvbi0+cHJlZmVy
ZW5jZVZhbHVlcygpKQogICAgICwgbV9wb3RlbnRpYWxseUNoYW5nZWRWaWV3U3RhdGVGbGFncyhW
aWV3U3RhdGU6Ok5vRmxhZ3MpCiAgICAgLCBtX3ZpZXdTdGF0ZUNoYW5nZVdhbnRzU3luY2hyb25v
dXNSZXBseShmYWxzZSkKIHsKQEAgLTUxOCw2ICs1MjAsMTEgQEAgV2ViUGFnZVByb3h5Ojp+V2Vi
UGFnZVByb3h5KCkKICNlbmRpZgogfQogCitjb25zdCBBUEk6OlBhZ2VDb25maWd1cmF0aW9uJiBX
ZWJQYWdlUHJveHk6OmNvbmZpZ3VyYXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbmZp
Z3VyYXRpb24uZ2V0KCk7Cit9CisKIFBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIgV2ViUGFnZVBy
b3h5Ojpwcm9jZXNzSWRlbnRpZmllcigpIGNvbnN0CiB7CiAgICAgaWYgKG1faXNDbG9zZWQpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAxODgx
OTIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI1NCwyOCArMjU0LDYgQEAgdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3Qg
V2ViQ29yZTo6SQogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgV2ViQ29yZTo6TWFjaFNl
bmRSaWdodCY+IE1hY2hTZW5kUmlnaHRDYWxsYmFjazsKICNlbmRpZgogCi1zdHJ1Y3QgV2ViUGFn
ZUNvbmZpZ3VyYXRpb24gewotICAgIFdlYlBhZ2VHcm91cCogcGFnZUdyb3VwID0gbnVsbHB0cjsK
LSAgICBXZWJQcmVmZXJlbmNlcyogcHJlZmVyZW5jZXMgPSBudWxscHRyOwotICAgIFdlYlVzZXJD
b250ZW50Q29udHJvbGxlclByb3h5KiB1c2VyQ29udGVudENvbnRyb2xsZXIgPSBudWxscHRyOwot
ICAgIFZpc2l0ZWRMaW5rUHJvdmlkZXIqIHZpc2l0ZWRMaW5rUHJvdmlkZXIgPSBudWxscHRyOwot
Ci0gICAgV2Vic2l0ZURhdGFTdG9yZSogd2Vic2l0ZURhdGFTdG9yZSA9IG51bGxwdHI7Ci0gICAg
Ly8gRklYTUU6IFdlIGN1cnJlbnRseSBoYXZlIHRvIHBhc3MgdGhlIHNlc3Npb24gSUQgc2VwYXJh
dGVseSBoZXJlIHRvIHN1cHBvcnQgdGhlIGxlZ2FjeSBwcml2YXRlIGJyb3dzaW5nIHNlc3Npb24u
Ci0gICAgLy8gT25jZSB3ZSBnZXQgcmlkIG9mIGl0IHdlIHNob3VsZCBnZXQgcmlkIG9mIHRoaXMg
Y29uZmlndXJhdGlvbiBwYXJhbWV0ZXIgYXMgd2VsbC4KLSAgICBXZWJDb3JlOjpTZXNzaW9uSUQg
c2Vzc2lvbklEOwotCi0gICAgV2ViUGFnZVByb3h5KiByZWxhdGVkUGFnZSA9IG51bGxwdHI7Ci0K
LSAgICBib29sIHRyZWF0c1NIQTFTaWduZWRDZXJ0aWZpY2F0ZXNBc0luc2VjdXJlID0gZmFsc2U7
Ci0KLSNpZiBQTEFURk9STShJT1MpCi0gICAgYm9vbCBhbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJp
b3JpdHkgPSBmYWxzZTsKLSNlbmRpZgotCi0gICAgV2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWVN
YXAgcHJlZmVyZW5jZVZhbHVlczsKLX07Ci0KIGNsYXNzIFdlYlBhZ2VQcm94eSA6IHB1YmxpYyBB
UEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlBhZ2U+CiAjaWYgRU5BQkxFKElOUFVU
X1RZUEVfQ09MT1IpCiAgICAgLCBwdWJsaWMgV2ViQ29sb3JQaWNrZXI6OkNsaWVudApAQCAtMjg3
LDkgKzI2NSwxMSBAQCBjbGFzcyBXZWJQYWdlUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJCiAg
ICAgLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICAsIHB1YmxpYyBJUEM6Ok1lc3Nh
Z2VTZW5kZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViUGFnZVByb3h5PiBjcmVhdGUo
UGFnZUNsaWVudCYsIFdlYlByb2Nlc3NQcm94eSYsIHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2Vi
UGFnZUNvbmZpZ3VyYXRpb24mKTsKKyAgICBzdGF0aWMgUmVmPFdlYlBhZ2VQcm94eT4gY3JlYXRl
KFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJveHkmLCB1aW50NjRfdCBwYWdlSUQsIFJlZjxBUEk6
OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsKICAgICB2aXJ0dWFsIH5XZWJQYWdlUHJveHkoKTsKIAor
ICAgIGNvbnN0IEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24oKSBjb25zdDsK
KwogICAgIHVpbnQ2NF90IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEOyB9CiAgICAg
V2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbklE
OyB9CiAgICAgdm9pZCBzZXRTZXNzaW9uSUQoV2ViQ29yZTo6U2Vzc2lvbklEKTsKQEAgLTEwODQs
NyArMTA2NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyV2hlZWxFdmVudFRlc3RUcmlnZ2Vy
KCk7CiAKIHByaXZhdGU6Ci0gICAgV2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNz
UHJveHkmLCB1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlBhZ2VDb25maWd1cmF0aW9uJik7Cisg
ICAgV2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJveHkmLCB1aW50NjRfdCBw
YWdlSUQsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsKICAgICB2b2lkIHBsYXRmb3Jt
SW5pdGlhbGl6ZSgpOwogCiAgICAgdm9pZCB1cGRhdGVWaWV3U3RhdGUoV2ViQ29yZTo6Vmlld1N0
YXRlOjpGbGFncyBmbGFnc1RvVXBkYXRlID0gV2ViQ29yZTo6Vmlld1N0YXRlOjpBbGxGbGFncyk7
CkBAIC0xNDg4LDYgKzE0NjgsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgaGFuZGxlU3luY2hyb25v
dXNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUsIGNv
bnN0IFVzZXJEYXRhJiBtZXNzYWdlQm9keSwgVXNlckRhdGEmIHJldHVyblVzZXJEYXRhKTsKIAog
ICAgIFBhZ2VDbGllbnQmIG1fcGFnZUNsaWVudDsKKyAgICBSZWY8QVBJOjpQYWdlQ29uZmlndXJh
dGlvbj4gbV9jb25maWd1cmF0aW9uOworCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6TG9hZGVy
Q2xpZW50PiBtX2xvYWRlckNsaWVudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpQb2xpY3lD
bGllbnQ+IG1fcG9saWN5Q2xpZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6Ok5hdmlnYXRp
b25DbGllbnQ+IG1fbmF2aWdhdGlvbkNsaWVudDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkocmV2aXNpb24gMTg4MTkyKQorKysgU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjks
NiArMjksNyBAQAogI2luY2x1ZGUgIkFQSUFycmF5LmgiCiAjaW5jbHVkZSAiQVBJRG93bmxvYWRD
bGllbnQuaCIKICNpbmNsdWRlICJBUElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudC5oIgorI2lu
Y2x1ZGUgIkFQSVBhZ2VDb25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiQVBJUHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWVzc2FnZXMu
aCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5LmgiCkBAIC04MzEsMTggKzgzMiwxOCBAQCBXZWJQ
cm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjpjcmVhdGVOCiAgICAgcmV0dXJuICpwcm9jZXNz
OwogfQogCi1QYXNzUmVmUHRyPFdlYlBhZ2VQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZVdl
YlBhZ2UoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUGFnZUNvbmZpZ3VyYXRpb24gY29uZmln
dXJhdGlvbikKK1Bhc3NSZWZQdHI8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRl
V2ViUGFnZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlv
bj4mJiBwYWdlQ29uZmlndXJhdGlvbikKIHsKLSAgICBpZiAoIWNvbmZpZ3VyYXRpb24ucGFnZUdy
b3VwKQotICAgICAgICBjb25maWd1cmF0aW9uLnBhZ2VHcm91cCA9IG1fZGVmYXVsdFBhZ2VHcm91
cC5wdHIoKTsKLSAgICBpZiAoIWNvbmZpZ3VyYXRpb24ucHJlZmVyZW5jZXMpCi0gICAgICAgIGNv
bmZpZ3VyYXRpb24ucHJlZmVyZW5jZXMgPSAmY29uZmlndXJhdGlvbi5wYWdlR3JvdXAtPnByZWZl
cmVuY2VzKCk7Ci0gICAgaWYgKCFjb25maWd1cmF0aW9uLnZpc2l0ZWRMaW5rUHJvdmlkZXIpCi0g
ICAgICAgIGNvbmZpZ3VyYXRpb24udmlzaXRlZExpbmtQcm92aWRlciA9IG1fdmlzaXRlZExpbmtQ
cm92aWRlci5wdHIoKTsKLSAgICBpZiAoIWNvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSkg
ewotICAgICAgICBBU1NFUlQoIWNvbmZpZ3VyYXRpb24uc2Vzc2lvbklELmlzVmFsaWQoKSk7Ci0g
ICAgICAgIGNvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSA9ICZtX3dlYnNpdGVEYXRhU3Rv
cmUtPndlYnNpdGVEYXRhU3RvcmUoKTsKLSAgICAgICAgY29uZmlndXJhdGlvbi5zZXNzaW9uSUQg
PSBjb25maWd1cmF0aW9uLnByZWZlcmVuY2VzLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkgPyBT
ZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSA6IFNlc3Npb25JRDo6ZGVmYXVsdFNl
c3Npb25JRCgpOworICAgIGlmICghcGFnZUNvbmZpZ3VyYXRpb24tPnBhZ2VHcm91cCgpKQorICAg
ICAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UGFnZUdyb3VwKG1fZGVmYXVsdFBhZ2VHcm91cC5w
dHIoKSk7CisgICAgaWYgKCFwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKSkKKyAgICAg
ICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFByZWZlcmVuY2VzKCZwYWdlQ29uZmlndXJhdGlvbi0+
cGFnZUdyb3VwKCktPnByZWZlcmVuY2VzKCkpOworICAgIGlmICghcGFnZUNvbmZpZ3VyYXRpb24t
PnZpc2l0ZWRMaW5rUHJvdmlkZXIoKSkKKyAgICAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFZp
c2l0ZWRMaW5rUHJvdmlkZXIobV92aXNpdGVkTGlua1Byb3ZpZGVyLnB0cigpKTsKKyAgICBpZiAo
IXBhZ2VDb25maWd1cmF0aW9uLT53ZWJzaXRlRGF0YVN0b3JlKCkpIHsKKyAgICAgICAgQVNTRVJU
KCFwYWdlQ29uZmlndXJhdGlvbi0+c2Vzc2lvbklEKCkuaXNWYWxpZCgpKTsKKyAgICAgICAgcGFn
ZUNvbmZpZ3VyYXRpb24tPnNldFdlYnNpdGVEYXRhU3RvcmUobV93ZWJzaXRlRGF0YVN0b3JlLmdl
dCgpKTsKKyAgICAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFNlc3Npb25JRChwYWdlQ29uZmln
dXJhdGlvbi0+cHJlZmVyZW5jZXMoKS0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpID8gU2Vzc2lv
bklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkgOiBTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9u
SUQoKSk7CiAgICAgfQogCiAgICAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gcHJvY2VzczsKQEAg
LTg1MiwxNCArODUzLDE0IEBAIFBhc3NSZWZQdHI8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUG9v
bDoKICAgICAgICAgaWYgKG1faGF2ZUluaXRpYWxFbXB0eVByb2Nlc3MpIHsKICAgICAgICAgICAg
IHByb2Nlc3MgPSBtX3Byb2Nlc3Nlcy5sYXN0KCk7CiAgICAgICAgICAgICBtX2hhdmVJbml0aWFs
RW1wdHlQcm9jZXNzID0gZmFsc2U7Ci0gICAgICAgIH0gZWxzZSBpZiAoY29uZmlndXJhdGlvbi5y
ZWxhdGVkUGFnZSkgeworICAgICAgICB9IGVsc2UgaWYgKHBhZ2VDb25maWd1cmF0aW9uLT5yZWxh
dGVkUGFnZSgpKSB7CiAgICAgICAgICAgICAvLyBTaGFyaW5nIHByb2Nlc3NlcywgZS5nLiB3aGVu
IGNyZWF0aW5nIHRoZSBwYWdlIHZpYSB3aW5kb3cub3BlbigpLgotICAgICAgICAgICAgcHJvY2Vz
cyA9ICZjb25maWd1cmF0aW9uLnJlbGF0ZWRQYWdlLT5wcm9jZXNzKCk7CisgICAgICAgICAgICBw
cm9jZXNzID0gJnBhZ2VDb25maWd1cmF0aW9uLT5yZWxhdGVkUGFnZSgpLT5wcm9jZXNzKCk7CiAg
ICAgICAgIH0gZWxzZQogICAgICAgICAgICAgcHJvY2VzcyA9ICZjcmVhdGVOZXdXZWJQcm9jZXNz
UmVzcGVjdGluZ1Byb2Nlc3NDb3VudExpbWl0KCk7CiAgICAgfQogCi0gICAgcmV0dXJuIHByb2Nl
c3MtPmNyZWF0ZVdlYlBhZ2UocGFnZUNsaWVudCwgV1RGOjptb3ZlKGNvbmZpZ3VyYXRpb24pKTsK
KyAgICByZXR1cm4gcHJvY2Vzcy0+Y3JlYXRlV2ViUGFnZShwYWdlQ2xpZW50LCBXVEY6Om1vdmUo
cGFnZUNvbmZpZ3VyYXRpb24pKTsKIH0KIAogRG93bmxvYWRQcm94eSogV2ViUHJvY2Vzc1Bvb2w6
OmRvd25sb2FkKFdlYlBhZ2VQcm94eSogaW5pdGlhdGluZ1BhZ2UsIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5oCShyZXZpc2lvbiAxODgxOTIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuaAkod29ya2luZyBjb3B5KQpAQCAtNzYsNiArNzYsNyBAQCBPQkpDX0NMQVNT
IE5TU3RyaW5nOwogbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBEb3dubG9hZENsaWVudDsKIGNsYXNz
IExlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50OworY2xhc3MgUGFnZUNvbmZpZ3VyYXRpb247CiB9
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtODYsNyArODcsNiBAQCBjbGFzcyBXZWJJY29uRGF0
YWJhc2U7CiBjbGFzcyBXZWJQYWdlR3JvdXA7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiBzdHJ1Y3Qg
U3RhdGlzdGljc0RhdGE7Ci1zdHJ1Y3QgV2ViUGFnZUNvbmZpZ3VyYXRpb247CiBzdHJ1Y3QgV2Vi
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsKICAgICAKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNr
PEFQSTo6RGljdGlvbmFyeSo+IERpY3Rpb25hcnlDYWxsYmFjazsKQEAgLTE3MSw3ICsxNzEsNyBA
QCBwdWJsaWM6CiAKICAgICBBUEk6OldlYnNpdGVEYXRhU3RvcmUqIHdlYnNpdGVEYXRhU3RvcmUo
KSBjb25zdCB7IHJldHVybiBtX3dlYnNpdGVEYXRhU3RvcmUuZ2V0KCk7IH0KIAotICAgIFBhc3NS
ZWZQdHI8V2ViUGFnZVByb3h5PiBjcmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmLCBXZWJQYWdlQ29u
ZmlndXJhdGlvbik7CisgICAgUGFzc1JlZlB0cjxXZWJQYWdlUHJveHk+IGNyZWF0ZVdlYlBhZ2Uo
UGFnZUNsaWVudCYsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsKIAogICAgIGNvbnN0
IFN0cmluZyYgaW5qZWN0ZWRCdW5kbGVQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9jb25maWd1cmF0
aW9uLT5pbmplY3RlZEJ1bmRsZVBhdGgoKTsgfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAkocmV2aXNpb24gMTg4MTkyKQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIwNiwxMCArMjA2LDEwIEBAIFdlYlBhZ2VQcm94eSogV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdl
KHUKICAgICByZXR1cm4gZ2xvYmFsUGFnZU1hcCgpLmdldChwYWdlSUQpOwogfQogCi1SZWY8V2Vi
UGFnZVByb3h5PiBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYgcGFn
ZUNsaWVudCwgY29uc3QgV2ViUGFnZUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCitSZWY8
V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYg
cGFnZUNsaWVudCwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYgcGFnZUNvbmZpZ3VyYXRp
b24pCiB7CiAgICAgdWludDY0X3QgcGFnZUlEID0gZ2VuZXJhdGVQYWdlSUQoKTsKLSAgICBSZWY8
V2ViUGFnZVByb3h5PiB3ZWJQYWdlID0gV2ViUGFnZVByb3h5OjpjcmVhdGUocGFnZUNsaWVudCwg
KnRoaXMsIHBhZ2VJRCwgY29uZmlndXJhdGlvbik7CisgICAgUmVmPFdlYlBhZ2VQcm94eT4gd2Vi
UGFnZSA9IFdlYlBhZ2VQcm94eTo6Y3JlYXRlKHBhZ2VDbGllbnQsICp0aGlzLCBwYWdlSUQsIFdU
Rjo6bW92ZShwYWdlQ29uZmlndXJhdGlvbikpOwogCiAgICAgbV9wYWdlTWFwLnNldChwYWdlSUQs
IHdlYlBhZ2UucHRyKCkpOwogICAgIGdsb2JhbFBhZ2VNYXAoKS5zZXQocGFnZUlELCB3ZWJQYWdl
LnB0cigpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmgJKHJldmlzaW9uIDE4ODE5MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6CiAgICAg
V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sKCkgeyByZXR1cm4gbV9wcm9jZXNzUG9vbDsgfQog
CiAgICAgc3RhdGljIFdlYlBhZ2VQcm94eSogd2ViUGFnZSh1aW50NjRfdCBwYWdlSUQpOwotICAg
IFJlZjxXZWJQYWdlUHJveHk+IGNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYsIGNvbnN0IFdlYlBh
Z2VDb25maWd1cmF0aW9uJik7CisgICAgUmVmPFdlYlBhZ2VQcm94eT4gY3JlYXRlV2ViUGFnZShQ
YWdlQ2xpZW50JiwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpOwogICAgIHZvaWQgYWRk
RXhpc3RpbmdXZWJQYWdlKFdlYlBhZ2VQcm94eSosIHVpbnQ2NF90IHBhZ2VJRCk7CiAgICAgdm9p
ZCByZW1vdmVXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwCShyZXZp
c2lvbiAxODgxOTIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25m
aWd1cmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsMTEgQEAgdXNpbmcgbmFt
ZXNwYWNlIFdlYktpdDsKIAogbmFtZXNwYWNlIEFQSSB7CiAKK1JlZjxQYWdlQ29uZmlndXJhdGlv
bj4gUGFnZUNvbmZpZ3VyYXRpb246OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgUGFnZUNvbmZpZ3VyYXRpb24pOworfQorCiBQYWdlQ29uZmlndXJhdGlvbjo6UGFnZUNvbmZp
Z3VyYXRpb24oKQogewogfQpAQCAtNDUsNiArNTAsMjkgQEAgUGFnZUNvbmZpZ3VyYXRpb246On5Q
YWdlQ29uZmlndXJhdGlvbigpCiB7CiB9CiAKK1JlZjxQYWdlQ29uZmlndXJhdGlvbj4gUGFnZUNv
bmZpZ3VyYXRpb246OmNvcHkoKSBjb25zdAoreworICAgIGF1dG8gY29weSA9IHRoaXMtPmNyZWF0
ZSgpOworCisgICAgY29weS0+bV9wcm9jZXNzUG9vbCA9IHRoaXMtPm1fcHJvY2Vzc1Bvb2w7Cisg
ICAgY29weS0+bV91c2VyQ29udGVudENvbnRyb2xsZXIgPSB0aGlzLT5tX3VzZXJDb250ZW50Q29u
dHJvbGxlcjsKKyAgICBjb3B5LT5tX3BhZ2VHcm91cCA9IHRoaXMtPm1fcGFnZUdyb3VwOworICAg
IGNvcHktPm1fcHJlZmVyZW5jZXMgPSB0aGlzLT5tX3ByZWZlcmVuY2VzOworICAgIGNvcHktPm1f
cHJlZmVyZW5jZVZhbHVlcyA9IHRoaXMtPm1fcHJlZmVyZW5jZVZhbHVlczsKKyAgICBjb3B5LT5t
X3JlbGF0ZWRQYWdlID0gdGhpcy0+bV9yZWxhdGVkUGFnZTsKKyAgICBjb3B5LT5tX3Zpc2l0ZWRM
aW5rUHJvdmlkZXIgPSB0aGlzLT5tX3Zpc2l0ZWRMaW5rUHJvdmlkZXI7CisgICAgY29weS0+bV93
ZWJzaXRlRGF0YVN0b3JlID0gdGhpcy0+bV93ZWJzaXRlRGF0YVN0b3JlOworICAgIGNvcHktPm1f
c2Vzc2lvbklEID0gdGhpcy0+bV9zZXNzaW9uSUQ7CisgICAgY29weS0+bV90cmVhdHNTSEExU2ln
bmVkQ2VydGlmaWNhdGVzQXNJbnNlY3VyZSA9IHRoaXMtPm1fdHJlYXRzU0hBMVNpZ25lZENlcnRp
ZmljYXRlc0FzSW5zZWN1cmU7CisKKyNpZiBQTEFURk9STShJT1MpCisgICAgY29weS0+bV9hbHdh
eXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHkgPSB0aGlzLT5tX2Fsd2F5c1J1bnNBdEZvcmVncm91
bmRQcmlvcml0eTsKKyNlbmRpZgorCisgICAgcmV0dXJuIGNvcHk7Cit9CisKKwogV2ViUHJvY2Vz
c1Bvb2wqIFBhZ2VDb25maWd1cmF0aW9uOjpwcm9jZXNzUG9vbCgpCiB7CiAgICAgcmV0dXJuIG1f
cHJvY2Vzc1Bvb2wuZ2V0KCk7CkBAIC05NSwxNiArMTIzLDM1IEBAIHZvaWQgUGFnZUNvbmZpZ3Vy
YXRpb246OnNldFJlbGF0ZWRQYWdlKFcKICAgICBtX3JlbGF0ZWRQYWdlID0gcmVsYXRlZFBhZ2U7
CiB9CiAKLVdlYktpdDo6V2ViUGFnZUNvbmZpZ3VyYXRpb24gUGFnZUNvbmZpZ3VyYXRpb246Ondl
YlBhZ2VDb25maWd1cmF0aW9uKCkKKworVmlzaXRlZExpbmtQcm92aWRlciogUGFnZUNvbmZpZ3Vy
YXRpb246OnZpc2l0ZWRMaW5rUHJvdmlkZXIoKQogewotICAgIFdlYktpdDo6V2ViUGFnZUNvbmZp
Z3VyYXRpb24gY29uZmlndXJhdGlvbjsKKyAgICByZXR1cm4gbV92aXNpdGVkTGlua1Byb3ZpZGVy
LmdldCgpOworfQogCi0gICAgY29uZmlndXJhdGlvbi51c2VyQ29udGVudENvbnRyb2xsZXIgPSB1
c2VyQ29udGVudENvbnRyb2xsZXIoKTsKLSAgICBjb25maWd1cmF0aW9uLnBhZ2VHcm91cCA9IHBh
Z2VHcm91cCgpOwotICAgIGNvbmZpZ3VyYXRpb24ucHJlZmVyZW5jZXMgPSBwcmVmZXJlbmNlcygp
OwotICAgIGNvbmZpZ3VyYXRpb24ucmVsYXRlZFBhZ2UgPSByZWxhdGVkUGFnZSgpOwordm9pZCBQ
YWdlQ29uZmlndXJhdGlvbjo6c2V0VmlzaXRlZExpbmtQcm92aWRlcihWaXNpdGVkTGlua1Byb3Zp
ZGVyKiB2aXNpdGVkTGlua1Byb3ZpZGVyKQoreworICAgIG1fdmlzaXRlZExpbmtQcm92aWRlciA9
IHZpc2l0ZWRMaW5rUHJvdmlkZXI7Cit9CisKK0FQSTo6V2Vic2l0ZURhdGFTdG9yZSogUGFnZUNv
bmZpZ3VyYXRpb246OndlYnNpdGVEYXRhU3RvcmUoKQoreworICAgIHJldHVybiBtX3dlYnNpdGVE
YXRhU3RvcmUuZ2V0KCk7Cit9CiAKLSAgICByZXR1cm4gY29uZmlndXJhdGlvbjsKK3ZvaWQgUGFn
ZUNvbmZpZ3VyYXRpb246OnNldFdlYnNpdGVEYXRhU3RvcmUoQVBJOjpXZWJzaXRlRGF0YVN0b3Jl
KiB3ZWJzaXRlRGF0YVN0b3JlKQoreworICAgIG1fd2Vic2l0ZURhdGFTdG9yZSA9IHdlYnNpdGVE
YXRhU3RvcmU7Cit9CisKK1dlYkNvcmU6OlNlc3Npb25JRCBQYWdlQ29uZmlndXJhdGlvbjo6c2Vz
c2lvbklEKCkKK3sKKyAgICByZXR1cm4gbV9zZXNzaW9uSUQ7Cit9CisKK3ZvaWQgUGFnZUNvbmZp
Z3VyYXRpb246OnNldFNlc3Npb25JRChXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQorewor
ICAgIG1fc2Vzc2lvbklEID0gc2Vzc2lvbklEOwogfQogCiB9IC8vIG5hbWVzcGFjZSBBUEkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1
cmF0aW9uLmgJKHJldmlzaW9uIDE4ODE5MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMjcgKzI3LDMy
IEBACiAjZGVmaW5lIEFQSVBhZ2VDb25maWd1cmF0aW9uX2gKIAogI2luY2x1ZGUgIkFQSU9iamVj
dC5oIgorI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzU3RvcmUuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KIAogbmFtZXNwYWNlIFdlYktp
dCB7Ci1zdHJ1Y3QgV2ViUGFnZUNvbmZpZ3VyYXRpb247Ci1jbGFzcyBXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eTsKLWNsYXNzIFdlYlByb2Nlc3NQb29sOworY2xhc3MgVmlzaXRlZExpbmtQ
cm92aWRlcjsKIGNsYXNzIFdlYlBhZ2VHcm91cDsKLWNsYXNzIFdlYlByZWZlcmVuY2VzOwogY2xh
c3MgV2ViUGFnZVByb3h5OworY2xhc3MgV2ViUHJlZmVyZW5jZXM7CitjbGFzcyBXZWJQcm9jZXNz
UG9vbDsKK2NsYXNzIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OwogfQogCiBuYW1lc3Bh
Y2UgQVBJIHsKIAorY2xhc3MgV2Vic2l0ZURhdGFTdG9yZTsKKwogY2xhc3MgUGFnZUNvbmZpZ3Vy
YXRpb24gOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6OlBhZ2VDb25maWd1cmF0aW9u
PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxQYWdlQ29uZmlndXJhdGlvbj4gY3JlYXRlKCkK
LSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBhZ2VDb25maWd1cmF0aW9uKTsK
LSAgICB9CisgICAgc3RhdGljIFJlZjxQYWdlQ29uZmlndXJhdGlvbj4gY3JlYXRlKCk7CisKKyAg
ICBleHBsaWNpdCBQYWdlQ29uZmlndXJhdGlvbigpOwogICAgIHZpcnR1YWwgflBhZ2VDb25maWd1
cmF0aW9uKCk7CiAKKyAgICBSZWY8UGFnZUNvbmZpZ3VyYXRpb24+IGNvcHkoKSBjb25zdDsKKwog
ICAgIC8vIEZJWE1FOiBUaGUgY29uZmlndXJhdGlvbiBwcm9wZXJ0aWVzIHNob3VsZCByZXR1cm4g
dGhlaXIgZGVmYXVsdCB2YWx1ZXMKICAgICAvLyByYXRoZXIgdGhhbiBudWxscHRyLgogICAgIApA
QCAtNjMsMTkgKzY4LDQ3IEBAIHB1YmxpYzoKICAgICBXZWJLaXQ6OldlYlByZWZlcmVuY2VzKiBw
cmVmZXJlbmNlcygpOwogICAgIHZvaWQgc2V0UHJlZmVyZW5jZXMoV2ViS2l0OjpXZWJQcmVmZXJl
bmNlcyopOwogCisgICAgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZU1hcCYgcHJl
ZmVyZW5jZVZhbHVlcygpIHsgcmV0dXJuIG1fcHJlZmVyZW5jZVZhbHVlczsgfQorCiAgICAgV2Vi
S2l0OjpXZWJQYWdlUHJveHkqIHJlbGF0ZWRQYWdlKCk7CiAgICAgdm9pZCBzZXRSZWxhdGVkUGFn
ZShXZWJLaXQ6OldlYlBhZ2VQcm94eSopOwogCi0gICAgV2ViS2l0OjpXZWJQYWdlQ29uZmlndXJh
dGlvbiB3ZWJQYWdlQ29uZmlndXJhdGlvbigpOworICAgIFdlYktpdDo6VmlzaXRlZExpbmtQcm92
aWRlciogdmlzaXRlZExpbmtQcm92aWRlcigpOworICAgIHZvaWQgc2V0VmlzaXRlZExpbmtQcm92
aWRlcihXZWJLaXQ6OlZpc2l0ZWRMaW5rUHJvdmlkZXIqKTsKKworICAgIFdlYnNpdGVEYXRhU3Rv
cmUqIHdlYnNpdGVEYXRhU3RvcmUoKTsKKyAgICB2b2lkIHNldFdlYnNpdGVEYXRhU3RvcmUoV2Vi
c2l0ZURhdGFTdG9yZSopOworCisgICAgV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCgpOwor
ICAgIHZvaWQgc2V0U2Vzc2lvbklEKFdlYkNvcmU6OlNlc3Npb25JRCk7CisKKyAgICBib29sIHRy
ZWF0c1NIQTFTaWduZWRDZXJ0aWZpY2F0ZXNBc0luc2VjdXJlKCkgeyByZXR1cm4gbV90cmVhdHNT
SEExU2lnbmVkQ2VydGlmaWNhdGVzQXNJbnNlY3VyZTsgfQorICAgIHZvaWQgc2V0VHJlYXRzU0hB
MVNpZ25lZENlcnRpZmljYXRlc0FzSW5zZWN1cmUoYm9vbCB0cmVhdHNTSEExU2lnbmVkQ2VydGlm
aWNhdGVzQXNJbnNlY3VyZSkgeyBtX3RyZWF0c1NIQTFTaWduZWRDZXJ0aWZpY2F0ZXNBc0luc2Vj
dXJlID0gdHJlYXRzU0hBMVNpZ25lZENlcnRpZmljYXRlc0FzSW5zZWN1cmU7IH0gCisKKyNpZiBQ
TEFURk9STShJT1MpCisgICAgYm9vbCBhbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHkoKSB7
IHJldHVybiBtX2Fsd2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eTsgfQorICAgIHZvaWQgc2V0
QWx3YXlzUnVuc0F0Rm9yZWdyb3VuZFByaW9yaXR5KGJvb2wgYWx3YXlzUnVuc0F0Rm9yZWdyb3Vu
ZFByaW9yaXR5KSB7IG1fYWx3YXlzUnVuc0F0Rm9yZWdyb3VuZFByaW9yaXR5ID0gYWx3YXlzUnVu
c0F0Rm9yZWdyb3VuZFByaW9yaXR5OyB9IAorI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgUGFnZUNv
bmZpZ3VyYXRpb24oKTsKIAogICAgIFJlZlB0cjxXZWJLaXQ6OldlYlByb2Nlc3NQb29sPiBtX3By
b2Nlc3NQb29sOwogICAgIFJlZlB0cjxXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5PiBtX3VzZXJDb250ZW50Q29udHJvbGxlcjsKICAgICBSZWZQdHI8V2ViS2l0OjpXZWJQYWdl
R3JvdXA+IG1fcGFnZUdyb3VwOwogICAgIFJlZlB0cjxXZWJLaXQ6OldlYlByZWZlcmVuY2VzPiBt
X3ByZWZlcmVuY2VzOworICAgIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWVNYXAg
bV9wcmVmZXJlbmNlVmFsdWVzOwogICAgIFJlZlB0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4gbV9y
ZWxhdGVkUGFnZTsKKyAgICBSZWZQdHI8V2ViS2l0OjpWaXNpdGVkTGlua1Byb3ZpZGVyPiBtX3Zp
c2l0ZWRMaW5rUHJvdmlkZXI7CisKKyAgICBSZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4gbV93ZWJz
aXRlRGF0YVN0b3JlOworICAgIC8vIEZJWE1FOiBXZSBjdXJyZW50bHkgaGF2ZSB0byBwYXNzIHRo
ZSBzZXNzaW9uIElEIHNlcGFyYXRlbHkgaGVyZSB0byBzdXBwb3J0IHRoZSBsZWdhY3kgcHJpdmF0
ZSBicm93c2luZyBzZXNzaW9uLgorICAgIC8vIE9uY2Ugd2UgZ2V0IHJpZCBvZiBpdCB3ZSBzaG91
bGQgZ2V0IHJpZCBvZiB0aGlzIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyIGFzIHdlbGwuCisgICAg
V2ViQ29yZTo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOworCisgICAgYm9vbCBtX3RyZWF0c1NIQTFT
aWduZWRDZXJ0aWZpY2F0ZXNBc0luc2VjdXJlID0gZmFsc2U7CisjaWYgUExBVEZPUk0oSU9TKQor
ICAgIGJvb2wgbV9hbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHkgPSBmYWxzZTsKKyNlbmRp
ZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgQVBJCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tQYWdlLmNwcAkocmV2aXNpb24gMTg4MTkyKQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcg
QEAKICNpbmNsdWRlICJBUElOYXZpZ2F0aW9uQWN0aW9uLmgiCiAjaW5jbHVkZSAiQVBJTmF2aWdh
dGlvbkNsaWVudC5oIgogI2luY2x1ZGUgIkFQSU5hdmlnYXRpb25SZXNwb25zZS5oIgorI2luY2x1
ZGUgIkFQSVBhZ2VDb25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiQVBJUG9saWN5Q2xpZW50Lmgi
CiAjaW5jbHVkZSAiQVBJU2Vzc2lvblN0YXRlLmgiCiAjaW5jbHVkZSAiQVBJVUlDbGllbnQuaCIK
QEAgLTEyNyw2ICsxMjgsMTIgQEAgV0tQYWdlR3JvdXBSZWYgV0tQYWdlR2V0UGFnZUdyb3VwKFdL
UGFnZQogICAgIHJldHVybiB0b0FQSSgmdG9JbXBsKHBhZ2VSZWYpLT5wYWdlR3JvdXAoKSk7CiB9
CiAKK1dLUGFnZUNvbmZpZ3VyYXRpb25SZWYgV0tQYWdlQ29weVBhZ2VDb25maWd1cmF0aW9uKFdL
UGFnZVJlZiBwYWdlUmVmKQoreworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IHRvSW1wbChwYWdl
UmVmKS0+Y29uZmlndXJhdGlvbigpLmNvcHkoKTsKKyAgICByZXR1cm4gdG9BUEkoJmNvbmZpZ3Vy
YXRpb24ubGVha1JlZigpKTsKK30KKwogdm9pZCBXS1BhZ2VMb2FkVVJMKFdLUGFnZVJlZiBwYWdl
UmVmLCBXS1VSTFJlZiBVUkxSZWYpCiB7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5sb2FkUmVxdWVz
dChVUkwoVVJMKCksIHRvV1RGU3RyaW5nKFVSTFJlZikpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgJKHJldmlzaW9uIDE4ODE5MikKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTks
OCBAQCBXS19FWFBPUlQgV0tUeXBlSUQgV0tQYWdlR2V0VHlwZUlEKCk7CiBXS19FWFBPUlQgV0tD
b250ZXh0UmVmIFdLUGFnZUdldENvbnRleHQoV0tQYWdlUmVmIHBhZ2UpOwogV0tfRVhQT1JUIFdL
UGFnZUdyb3VwUmVmIFdLUGFnZUdldFBhZ2VHcm91cChXS1BhZ2VSZWYgcGFnZSk7CiAKK1dLX0VY
UE9SVCBXS1BhZ2VDb25maWd1cmF0aW9uUmVmIFdLUGFnZUNvcHlQYWdlQ29uZmlndXJhdGlvbihX
S1BhZ2VSZWYgcGFnZSk7CisKIC8vIFVSTCBSZXF1ZXN0cwogV0tfRVhQT1JUIHZvaWQgV0tQYWdl
TG9hZFVSTChXS1BhZ2VSZWYgcGFnZSwgV0tVUkxSZWYgdXJsKTsKIFdLX0VYUE9SVCB2b2lkIFdL
UGFnZUxvYWRVUkxXaXRoVXNlckRhdGEoV0tQYWdlUmVmIHBhZ2UsIFdLVVJMUmVmIHVybCwgV0tU
eXBlUmVmIHVzZXJEYXRhKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2VDb25maWd1cmF0aW9uUmVmLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tQYWdlQ29uZmlndXJhdGlvblJlZi5jcHAJKHJldmlzaW9uIDE4ODE5
MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VDb25maWd1cmF0aW9u
UmVmLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTMsMyArOTMsMTMgQEAgdm9pZCBXS1BhZ2VDb25m
aWd1cmF0aW9uU2V0UmVsYXRlZFBhZ2UoVwogewogICAgIHRvSW1wbChjb25maWd1cmF0aW9uKS0+
c2V0UmVsYXRlZFBhZ2UodG9JbXBsKHJlbGF0ZWRQYWdlKSk7CiB9CisKK1dLV2Vic2l0ZURhdGFT
dG9yZVJlZiBXS1BhZ2VDb25maWd1cmF0aW9uR2V0V2Vic2l0ZURhdGFTdG9yZShXS1BhZ2VDb25m
aWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24pCit7CisgICAgcmV0dXJuIHRvQVBJKHRvSW1wbChj
b25maWd1cmF0aW9uKS0+d2Vic2l0ZURhdGFTdG9yZSgpKTsKK30KKwordm9pZCBXS1BhZ2VDb25m
aWd1cmF0aW9uU2V0V2Vic2l0ZURhdGFTdG9yZShXS1BhZ2VDb25maWd1cmF0aW9uUmVmIGNvbmZp
Z3VyYXRpb24sIFdLV2Vic2l0ZURhdGFTdG9yZVJlZiB3ZWJzaXRlRGF0YVN0b3JlKQoreworICAg
IHRvSW1wbChjb25maWd1cmF0aW9uKS0+c2V0V2Vic2l0ZURhdGFTdG9yZSh0b0ltcGwod2Vic2l0
ZURhdGFTdG9yZSkpOworfQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
UGFnZUNvbmZpZ3VyYXRpb25SZWYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlQ29uZmlndXJhdGlvblJlZi5oCShyZXZpc2lvbiAxODgxOTIpCisr
KyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlQ29uZmlndXJhdGlvblJlZi5o
CSh3b3JraW5nIGNvcHkpCkBAIC01MSw2ICs1MSw5IEBAIFdLX0VYUE9SVCB2b2lkIFdLUGFnZUNv
bmZpZ3VyYXRpb25TZXRQcmUKIFdLX0VYUE9SVCBXS1BhZ2VSZWYgV0tQYWdlQ29uZmlndXJhdGlv
bkdldFJlbGF0ZWRQYWdlKFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbik7CiBX
S19FWFBPUlQgdm9pZCBXS1BhZ2VDb25maWd1cmF0aW9uU2V0UmVsYXRlZFBhZ2UoV0tQYWdlQ29u
ZmlndXJhdGlvblJlZiBjb25maWd1cmF0aW9uLCBXS1BhZ2VSZWYgcmVsYXRlZFBhZ2UpOwogCitX
S19FWFBPUlQgV0tXZWJzaXRlRGF0YVN0b3JlUmVmIFdLUGFnZUNvbmZpZ3VyYXRpb25HZXRXZWJz
aXRlRGF0YVN0b3JlKFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbik7CitXS19F
WFBPUlQgdm9pZCBXS1BhZ2VDb25maWd1cmF0aW9uU2V0V2Vic2l0ZURhdGFTdG9yZShXS1BhZ2VD
b25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24sIFdLV2Vic2l0ZURhdGFTdG9yZVJlZiB3ZWJz
aXRlRGF0YVN0b3JlKTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCShyZXZp
c2lvbiAxODgxOTIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2lmIFdLX0FQSV9FTkFC
TEVECiAKICNpbXBvcnQgIkFQSUZvcm1DbGllbnQuaCIKKyNpbXBvcnQgIkFQSVBhZ2VDb25maWd1
cmF0aW9uLmgiCiAjaW1wb3J0ICJBUElTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbXBvcnQg
IkNvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXIuaCIKICNpbXBvcnQgIkRpYWdub3N0aWNMb2dn
aW5nQ2xpZW50LmgiCkBAIC0zMDAsMzYgKzMwMSwzOCBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhGcmFtZTooQ0dSZWN0KWZyCiAgICAgQ0dSZWN0IGJvdW5kcyA9IHNlbGYuYm91bmRzOwogCiAg
ICAgV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wgPSAqW19jb25maWd1cmF0aW9u
IHByb2Nlc3NQb29sXS0+X3Byb2Nlc3NQb29sOworICAgIAorICAgIFJlZjxBUEk6OlBhZ2VDb25m
aWd1cmF0aW9uPiBwYWdlQ29uZmlndXJhdGlvbiA9IEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OmNy
ZWF0ZSgpOwogCi0gICAgV2ViS2l0OjpXZWJQYWdlQ29uZmlndXJhdGlvbiB3ZWJQYWdlQ29uZmln
dXJhdGlvbjsKLSAgICB3ZWJQYWdlQ29uZmlndXJhdGlvbi5wcmVmZXJlbmNlcyA9IFtfY29uZmln
dXJhdGlvbiBwcmVmZXJlbmNlc10tPl9wcmVmZXJlbmNlcy5nZXQoKTsKKyAgICBwYWdlQ29uZmln
dXJhdGlvbi0+c2V0UHJvY2Vzc1Bvb2woJnByb2Nlc3NQb29sKTsKKyAgICBwYWdlQ29uZmlndXJh
dGlvbi0+c2V0UHJlZmVyZW5jZXMoW19jb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXS0+X3ByZWZl
cmVuY2VzLmdldCgpKTsKICAgICBpZiAoV0tXZWJWaWV3ICpyZWxhdGVkV2ViVmlldyA9IFtfY29u
ZmlndXJhdGlvbiBfcmVsYXRlZFdlYlZpZXddKQotICAgICAgICB3ZWJQYWdlQ29uZmlndXJhdGlv
bi5yZWxhdGVkUGFnZSA9IHJlbGF0ZWRXZWJWaWV3LT5fcGFnZS5nZXQoKTsKKyAgICAgICAgcGFn
ZUNvbmZpZ3VyYXRpb24tPnNldFJlbGF0ZWRQYWdlKHJlbGF0ZWRXZWJWaWV3LT5fcGFnZS5nZXQo
KSk7CiAKLSAgICB3ZWJQYWdlQ29uZmlndXJhdGlvbi51c2VyQ29udGVudENvbnRyb2xsZXIgPSBb
X2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXS0+X3VzZXJDb250ZW50Q29udHJv
bGxlclByb3h5LmdldCgpOwotICAgIHdlYlBhZ2VDb25maWd1cmF0aW9uLnZpc2l0ZWRMaW5rUHJv
dmlkZXIgPSBbX2NvbmZpZ3VyYXRpb24gX3Zpc2l0ZWRMaW5rUHJvdmlkZXJdLT5fdmlzaXRlZExp
bmtQcm92aWRlci5nZXQoKTsKLSAgICB3ZWJQYWdlQ29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0
b3JlID0gJltfY29uZmlndXJhdGlvbiB3ZWJzaXRlRGF0YVN0b3JlXS0+X3dlYnNpdGVEYXRhU3Rv
cmUtPndlYnNpdGVEYXRhU3RvcmUoKTsKLSAgICB3ZWJQYWdlQ29uZmlndXJhdGlvbi5zZXNzaW9u
SUQgPSB3ZWJQYWdlQ29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlLT5zZXNzaW9uSUQoKTsK
LSAgICB3ZWJQYWdlQ29uZmlndXJhdGlvbi50cmVhdHNTSEExU2lnbmVkQ2VydGlmaWNhdGVzQXNJ
bnNlY3VyZSA9IFtfY29uZmlndXJhdGlvbiBfdHJlYXRzU0hBMVNpZ25lZENlcnRpZmljYXRlc0Fz
SW5zZWN1cmVdOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRVc2VyQ29udGVudENvbnRyb2xs
ZXIoW19jb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0tPl91c2VyQ29udGVudENv
bnRyb2xsZXJQcm94eS5nZXQoKSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFZpc2l0ZWRM
aW5rUHJvdmlkZXIoW19jb25maWd1cmF0aW9uIF92aXNpdGVkTGlua1Byb3ZpZGVyXS0+X3Zpc2l0
ZWRMaW5rUHJvdmlkZXIuZ2V0KCkpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRXZWJzaXRl
RGF0YVN0b3JlKFtfY29uZmlndXJhdGlvbiB3ZWJzaXRlRGF0YVN0b3JlXS0+X3dlYnNpdGVEYXRh
U3RvcmUuZ2V0KCkpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRTZXNzaW9uSUQocGFnZUNv
bmZpZ3VyYXRpb24tPndlYnNpdGVEYXRhU3RvcmUoKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Np
b25JRCgpKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0VHJlYXRzU0hBMVNpZ25lZENlcnRp
ZmljYXRlc0FzSW5zZWN1cmUoW19jb25maWd1cmF0aW9uIF90cmVhdHNTSEExU2lnbmVkQ2VydGlm
aWNhdGVzQXNJbnNlY3VyZV0pOwogCiAgICAgUmVmUHRyPFdlYktpdDo6V2ViUGFnZUdyb3VwPiBw
YWdlR3JvdXA7CiAgICAgTlNTdHJpbmcgKmdyb3VwSWRlbnRpZmllciA9IGNvbmZpZ3VyYXRpb24u
X2dyb3VwSWRlbnRpZmllcjsKICAgICBpZiAoZ3JvdXBJZGVudGlmaWVyLmxlbmd0aCkgewogICAg
ICAgICBwYWdlR3JvdXAgPSBXZWJLaXQ6OldlYlBhZ2VHcm91cDo6Y3JlYXRlKGNvbmZpZ3VyYXRp
b24uX2dyb3VwSWRlbnRpZmllcik7Ci0gICAgICAgIHdlYlBhZ2VDb25maWd1cmF0aW9uLnBhZ2VH
cm91cCA9IHBhZ2VHcm91cC5nZXQoKTsKKyAgICAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFBh
Z2VHcm91cChwYWdlR3JvdXAuZ2V0KCkpOwogICAgIH0KIAotICAgIHdlYlBhZ2VDb25maWd1cmF0
aW9uLnByZWZlcmVuY2VWYWx1ZXMuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OnN1cHBy
ZXNzZXNJbmNyZW1lbnRhbFJlbmRlcmluZ0tleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3Rv
cmU6OlZhbHVlKCEhW19jb25maWd1cmF0aW9uIHN1cHByZXNzZXNJbmNyZW1lbnRhbFJlbmRlcmlu
Z10pKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJL
aXQ6OldlYlByZWZlcmVuY2VzS2V5OjpzdXBwcmVzc2VzSW5jcmVtZW50YWxSZW5kZXJpbmdLZXko
KSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZSghIVtfY29uZmlndXJhdGlvbiBz
dXBwcmVzc2VzSW5jcmVtZW50YWxSZW5kZXJpbmddKSk7CiAKICNpZiBQTEFURk9STShJT1MpCi0g
ICAgd2ViUGFnZUNvbmZpZ3VyYXRpb24uYWx3YXlzUnVuc0F0Rm9yZWdyb3VuZFByaW9yaXR5ID0g
W19jb25maWd1cmF0aW9uIF9hbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHldOworICAgIHBh
Z2VDb25maWd1cmF0aW9uLT5zZXRBbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHkoW19jb25m
aWd1cmF0aW9uIF9hbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHldKTsKIAotICAgIHdlYlBh
Z2VDb25maWd1cmF0aW9uLnByZWZlcmVuY2VWYWx1ZXMuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5j
ZXNLZXk6OmFsbG93c0lubGluZU1lZGlhUGxheWJhY2tLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJl
bmNlc1N0b3JlOjpWYWx1ZSghIVtfY29uZmlndXJhdGlvbiBhbGxvd3NJbmxpbmVNZWRpYVBsYXli
YWNrXSkpOwotICAgIHdlYlBhZ2VDb25maWd1cmF0aW9uLnByZWZlcmVuY2VWYWx1ZXMuc2V0KFdl
YktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OmFsbG93c1BpY3R1cmVJblBpY3R1cmVNZWRpYVBsYXli
YWNrS2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoISFbX2NvbmZpZ3Vy
YXRpb24gYWxsb3dzUGljdHVyZUluUGljdHVyZU1lZGlhUGxheWJhY2tdICYmIHNob3VsZEFsbG93
UGljdHVyZUluUGljdHVyZU1lZGlhUGxheWJhY2soKSkpOwotICAgIHdlYlBhZ2VDb25maWd1cmF0
aW9uLnByZWZlcmVuY2VWYWx1ZXMuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OnJlcXVp
cmVzVXNlckdlc3R1cmVGb3JNZWRpYVBsYXliYWNrS2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5j
ZXNTdG9yZTo6VmFsdWUoISFbX2NvbmZpZ3VyYXRpb24gcmVxdWlyZXNVc2VyQWN0aW9uRm9yTWVk
aWFQbGF5YmFja10pKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygp
LnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5OjphbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNr
S2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWUoISFbX2NvbmZpZ3VyYXRp
b24gYWxsb3dzSW5saW5lTWVkaWFQbGF5YmFja10pKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+
cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlByZWZlcmVuY2VzS2V5OjphbGxvd3NQ
aWN0dXJlSW5QaWN0dXJlTWVkaWFQbGF5YmFja0tleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2Vz
U3RvcmU6OlZhbHVlKCEhW19jb25maWd1cmF0aW9uIGFsbG93c1BpY3R1cmVJblBpY3R1cmVNZWRp
YVBsYXliYWNrXSAmJiBzaG91bGRBbGxvd1BpY3R1cmVJblBpY3R1cmVNZWRpYVBsYXliYWNrKCkp
KTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6
OldlYlByZWZlcmVuY2VzS2V5OjpyZXF1aXJlc1VzZXJHZXN0dXJlRm9yTWVkaWFQbGF5YmFja0tl
eSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKCEhW19jb25maWd1cmF0aW9u
IHJlcXVpcmVzVXNlckFjdGlvbkZvck1lZGlhUGxheWJhY2tdKSk7CiAjZW5kaWYKICNpZiBFTkFC
TEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQotICAgIHdlYlBhZ2VDb25maWd1cmF0aW9uLnBy
ZWZlcmVuY2VWYWx1ZXMuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OmFsbG93c0FpclBs
YXlGb3JNZWRpYVBsYXliYWNrS2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFs
dWUoISFbX2NvbmZpZ3VyYXRpb24gYWxsb3dzQWlyUGxheUZvck1lZGlhUGxheWJhY2tdKSk7Cisg
ICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQ
cmVmZXJlbmNlc0tleTo6YWxsb3dzQWlyUGxheUZvck1lZGlhUGxheWJhY2tLZXkoKSwgV2ViS2l0
OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZSghIVtfY29uZmlndXJhdGlvbiBhbGxvd3NBaXJQ
bGF5Rm9yTWVkaWFQbGF5YmFja10pKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAt
MzM5LDcgKzM0Miw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihDR1JlY3QpZnIK
IAogICAgIFtzZWxmIGFkZFN1YnZpZXc6X3Njcm9sbFZpZXcuZ2V0KCldOwogCi0gICAgX2NvbnRl
bnRWaWV3ID0gYWRvcHROUyhbW1dLQ29udGVudFZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Ym91
bmRzIHByb2Nlc3NQb29sOnByb2Nlc3NQb29sIGNvbmZpZ3VyYXRpb246V1RGOjptb3ZlKHdlYlBh
Z2VDb25maWd1cmF0aW9uKSB3ZWJWaWV3OnNlbGZdKTsKKyAgICBfY29udGVudFZpZXcgPSBhZG9w
dE5TKFtbV0tDb250ZW50VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpib3VuZHMgcHJvY2Vzc1Bv
b2w6cHJvY2Vzc1Bvb2wgY29uZmlndXJhdGlvbjpXVEY6Om1vdmUocGFnZUNvbmZpZ3VyYXRpb24p
IHdlYlZpZXc6c2VsZl0pOwogCiAgICAgX3BhZ2UgPSBbX2NvbnRlbnRWaWV3IHBhZ2VdOwogICAg
IF9wYWdlLT5zZXREZXZpY2VPcmllbnRhdGlvbihkZXZpY2VPcmllbnRhdGlvbigpKTsKQEAgLTM2
Nyw3ICszNzAsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyCiAj
ZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBfd2tWaWV3ID0gYWRvcHROUyhbW1dLVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpib3VuZHMgcHJvY2Vzc1Bvb2w6cHJvY2Vzc1Bvb2wgY29u
ZmlndXJhdGlvbjpXVEY6Om1vdmUod2ViUGFnZUNvbmZpZ3VyYXRpb24pIHdlYlZpZXc6c2VsZl0p
OworICAgIF93a1ZpZXcgPSBhZG9wdE5TKFtbV0tWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOmJv
dW5kcyBwcm9jZXNzUG9vbDpwcm9jZXNzUG9vbCBjb25maWd1cmF0aW9uOldURjo6bW92ZShwYWdl
Q29uZmlndXJhdGlvbikgd2ViVmlldzpzZWxmXSk7CiAgICAgW3NlbGYgYWRkU3Vidmlldzpfd2tW
aWV3LmdldCgpXTsKICAgICBfcGFnZSA9IFdlYktpdDo6dG9JbXBsKFtfd2tWaWV3IHBhZ2VSZWZd
KTsKIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29u
dGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViQ29udGV4dC5jcHAJKHJldmlzaW9uIDE4ODE5MikKKysrIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMSw2ICsyMSw3IEBACiAjaW5jbHVkZSAiV2ViS2l0V2ViQ29udGV4dC5oIgogCiAjaW5jbHVk
ZSAiQVBJRG93bmxvYWRDbGllbnQuaCIKKyNpbmNsdWRlICJBUElQYWdlQ29uZmlndXJhdGlvbi5o
IgogI2luY2x1ZGUgIkFQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIkFQ
SVN0cmluZy5oIgogI2luY2x1ZGUgIlRleHRDaGVja2VyLmgiCkBAIC0xMzE1LDEzICsxMzE2LDE0
IEBAIHZvaWQgd2Via2l0V2ViQ29udGV4dERpZEZpbmlzaExvYWRpbmdDdXMKIHZvaWQgd2Via2l0
V2ViQ29udGV4dENyZWF0ZVBhZ2VGb3JXZWJWaWV3KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQs
IFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdFVzZXJDb250ZW50TWFuYWdlciogdXNlckNv
bnRlbnRNYW5hZ2VyLCBXZWJLaXRXZWJWaWV3KiByZWxhdGVkVmlldykKIHsKICAgICBXZWJLaXRX
ZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3ZWJWaWV3KTsK
LSAgICBXZWJQYWdlQ29uZmlndXJhdGlvbiB3ZWJQYWdlQ29uZmlndXJhdGlvbjsKLSAgICB3ZWJQ
YWdlQ29uZmlndXJhdGlvbi5wcmVmZXJlbmNlcyA9IHdlYmtpdFNldHRpbmdzR2V0UHJlZmVyZW5j
ZXMod2Via2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncyh3ZWJWaWV3KSk7Ci0gICAgd2ViUGFnZUNv
bmZpZ3VyYXRpb24ucmVsYXRlZFBhZ2UgPSByZWxhdGVkVmlldyA/IHdlYmtpdFdlYlZpZXdCYXNl
R2V0UGFnZShXRUJLSVRfV0VCX1ZJRVdfQkFTRShyZWxhdGVkVmlldykpIDogbnVsbHB0cjsKLSAg
ICB3ZWJQYWdlQ29uZmlndXJhdGlvbi51c2VyQ29udGVudENvbnRyb2xsZXIgPSB1c2VyQ29udGVu
dE1hbmFnZXIgPyB3ZWJraXRVc2VyQ29udGVudE1hbmFnZXJHZXRVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eSh1c2VyQ29udGVudE1hbmFnZXIpIDogbnVsbHB0cjsKLSAgICB3ZWJQYWdlQ29uZmln
dXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlID0gJndlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckdldERh
dGFTdG9yZShjb250ZXh0LT5wcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpOwotICAgIHdl
YlBhZ2VDb25maWd1cmF0aW9uLnNlc3Npb25JRCA9IHdlYlBhZ2VDb25maWd1cmF0aW9uLndlYnNp
dGVEYXRhU3RvcmUtPnNlc3Npb25JRCgpOwotICAgIHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlV2Vi
UGFnZSh3ZWJWaWV3QmFzZSwgY29udGV4dC0+cHJpdi0+Y29udGV4dC5nZXQoKSwgV1RGOjptb3Zl
KHdlYlBhZ2VDb25maWd1cmF0aW9uKSk7CisKKyAgICBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlv
bj4gcGFnZUNvbmZpZ3VyYXRpb24gPSBBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsK
KyAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UHJlZmVyZW5jZXMod2Via2l0U2V0dGluZ3NHZXRQ
cmVmZXJlbmNlcyh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKHdlYlZpZXcpKSk7CisgICAg
cGFnZUNvbmZpZ3VyYXRpb24tPnNldFJlbGF0ZWRQYWdlKHJlbGF0ZWRWaWV3ID8gd2Via2l0V2Vi
Vmlld0Jhc2VHZXRQYWdlKFdFQktJVF9XRUJfVklFV19CQVNFKHJlbGF0ZWRWaWV3KSkgOiBudWxs
cHRyKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0VXNlckNvbnRlbnRDb250cm9sbGVyKHVz
ZXJDb250ZW50TWFuYWdlciA/IHdlYmtpdFVzZXJDb250ZW50TWFuYWdlckdldFVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5KHVzZXJDb250ZW50TWFuYWdlcikgOiBudWxscHRyKTsKKyAgICBwYWdl
Q29uZmlndXJhdGlvbi0+c2V0V2Vic2l0ZURhdGFTdG9yZSgmd2Via2l0V2Vic2l0ZURhdGFNYW5h
Z2VyR2V0RGF0YVN0b3JlKGNvbnRleHQtPnByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkp
OworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRTZXNzaW9uSUQocGFnZUNvbmZpZ3VyYXRpb24t
PndlYnNpdGVEYXRhU3RvcmUoKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Npb25JRCgpKTsKKyAg
ICB3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZVdlYlBhZ2Uod2ViVmlld0Jhc2UsIGNvbnRleHQtPnBy
aXYtPmNvbnRleHQuZ2V0KCksIFdURjo6bW92ZShwYWdlQ29uZmlndXJhdGlvbikpOwogCiAgICAg
V2ViUGFnZVByb3h5KiBwYWdlID0gd2Via2l0V2ViVmlld0Jhc2VHZXRQYWdlKHdlYlZpZXdCYXNl
KTsKICAgICBjb250ZXh0LT5wcml2LT53ZWJWaWV3cy5zZXQocGFnZS0+cGFnZUlEKCksIHdlYlZp
ZXcpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
d0Jhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXdCYXNlLmNwcAkocmV2aXNpb24gMTg4MTkyKQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViS2l0
V2ViVmlld0Jhc2UuaCIKIAorI2luY2x1ZGUgIkFQSVBhZ2VDb25maWd1cmF0aW9uLmgiCiAjaW5j
bHVkZSAiRHJhd2luZ0FyZWFQcm94eUltcGwuaCIKICNpbmNsdWRlICJJbnB1dE1ldGhvZEZpbHRl
ci5oIgogI2luY2x1ZGUgIktleUJpbmRpbmdUcmFuc2xhdG9yLmgiCkBAIC0xMDQ0LDEyICsxMDQ1
LDEzIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19iYXNlX2NsYXNzX2kKIFdlYktpdFdl
YlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZShXZWJQcm9jZXNzUG9vbCogY29udGV4
dCwgV2ViUHJlZmVyZW5jZXMqIHByZWZlcmVuY2VzLCBXZWJQYWdlR3JvdXAqIHBhZ2VHcm91cCwg
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkqIHVzZXJDb250ZW50Q29udHJvbGxlciwgV2Vi
UGFnZVByb3h5KiByZWxhdGVkUGFnZSkKIHsKICAgICBXZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0
V2ViVmlld0Jhc2UgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRShnX29iamVjdF9uZXcoV0VCS0lUX1RZ
UEVfV0VCX1ZJRVdfQkFTRSwgbnVsbHB0cikpOwotICAgIFdlYlBhZ2VDb25maWd1cmF0aW9uIHdl
YlBhZ2VDb25maWd1cmF0aW9uOwotICAgIHdlYlBhZ2VDb25maWd1cmF0aW9uLnByZWZlcmVuY2Vz
ID0gcHJlZmVyZW5jZXM7Ci0gICAgd2ViUGFnZUNvbmZpZ3VyYXRpb24ucGFnZUdyb3VwID0gcGFn
ZUdyb3VwOwotICAgIHdlYlBhZ2VDb25maWd1cmF0aW9uLnJlbGF0ZWRQYWdlID0gcmVsYXRlZFBh
Z2U7Ci0gICAgd2ViUGFnZUNvbmZpZ3VyYXRpb24udXNlckNvbnRlbnRDb250cm9sbGVyID0gdXNl
ckNvbnRlbnRDb250cm9sbGVyOwotICAgIHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlV2ViUGFnZSh3
ZWJraXRXZWJWaWV3QmFzZSwgY29udGV4dCwgV1RGOjptb3ZlKHdlYlBhZ2VDb25maWd1cmF0aW9u
KSk7CisKKyAgICBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4gcGFnZUNvbmZpZ3VyYXRpb24g
PSBBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKKyAgICBwYWdlQ29uZmlndXJhdGlv
bi0+c2V0UHJlZmVyZW5jZXMocHJlZmVyZW5jZXMpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5z
ZXRQYWdlR3JvdXAocGFnZUdyb3VwKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0UmVsYXRl
ZFBhZ2UocmVsYXRlZFBhZ2UpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRVc2VyQ29udGVu
dENvbnRyb2xsZXIodXNlckNvbnRlbnRDb250cm9sbGVyKTsKKyAgICB3ZWJraXRXZWJWaWV3QmFz
ZUNyZWF0ZVdlYlBhZ2Uod2Via2l0V2ViVmlld0Jhc2UsIGNvbnRleHQsIFdURjo6bW92ZShwYWdl
Q29uZmlndXJhdGlvbikpOwogICAgIHJldHVybiB3ZWJraXRXZWJWaWV3QmFzZTsKIH0KIApAQCAt
MTA3MCw3ICsxMDcyLDcgQEAgc3RhdGljIHZvaWQgZGV2aWNlU2NhbGVGYWN0b3JDaGFuZ2VkKFdl
YgogfQogI2VuZGlmIC8vIEhBVkUoR1RLX1NDQUxFX0ZBQ1RPUikKIAotdm9pZCB3ZWJraXRXZWJW
aWV3QmFzZUNyZWF0ZVdlYlBhZ2UoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNl
LCBXZWJQcm9jZXNzUG9vbCogY29udGV4dCwgV2ViUGFnZUNvbmZpZ3VyYXRpb24mJiBjb25maWd1
cmF0aW9uKQordm9pZCB3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZVdlYlBhZ2UoV2ViS2l0V2ViVmll
d0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlLCBXZWJQcm9jZXNzUG9vbCogY29udGV4dCwgUmVmPEFQ
STo6UGFnZUNvbmZpZ3VyYXRpb24+JiYgY29uZmlndXJhdGlvbikKIHsKICAgICBXZWJLaXRXZWJW
aWV3QmFzZVByaXZhdGUqIHByaXYgPSB3ZWJraXRXZWJWaWV3QmFzZS0+cHJpdjsKICAgICBwcml2
LT5wYWdlUHJveHkgPSBjb250ZXh0LT5jcmVhdGVXZWJQYWdlKCpwcml2LT5wYWdlQ2xpZW50LCBX
VEY6Om1vdmUoY29uZmlndXJhdGlvbikpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmgJKHJl
dmlzaW9uIDE4ODE5MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYlZpZXdCYXNlUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBACiBX
ZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2VDcmVhdGUoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbCosIFdlYktpdDo6V2ViUHJlZmVyZW5jZXMqLCBXZWJLaXQ6OldlYlBhZ2VHcm91cCos
IFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkqLCBXZWJLaXQ6OldlYlBhZ2VQ
cm94eSopOwogR3RrSU1Db250ZXh0KiB3ZWJraXRXZWJWaWV3QmFzZUdldElNQ29udGV4dChXZWJL
aXRXZWJWaWV3QmFzZSopOwogV2ViS2l0OjpXZWJQYWdlUHJveHkqIHdlYmtpdFdlYlZpZXdCYXNl
R2V0UGFnZShXZWJLaXRXZWJWaWV3QmFzZSopOwotdm9pZCB3ZWJraXRXZWJWaWV3QmFzZUNyZWF0
ZVdlYlBhZ2UoV2ViS2l0V2ViVmlld0Jhc2UqLCBXZWJLaXQ6OldlYlByb2Nlc3NQb29sKiwgV2Vi
S2l0OjpXZWJQYWdlQ29uZmlndXJhdGlvbiYmKTsKK3ZvaWQgd2Via2l0V2ViVmlld0Jhc2VDcmVh
dGVXZWJQYWdlKFdlYktpdFdlYlZpZXdCYXNlKiwgV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCosIFJl
ZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsKIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VTZXRU
b29sdGlwVGV4dChXZWJLaXRXZWJWaWV3QmFzZSosIGNvbnN0IGNoYXIqKTsKIHZvaWQgd2Via2l0
V2ViVmlld0Jhc2VTZXRUb29sdGlwQXJlYShXZWJLaXRXZWJWaWV3QmFzZSosIGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmKTsKIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VGb3J3YXJkTmV4dEtleUV2ZW50
KFdlYktpdFdlYlZpZXdCYXNlKik7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5jcHAJKHJl
dmlzaW9uIDE4ODE5MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYnNpdGVEYXRhTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAg
ZW51bSB7CiB9OwogCiBzdHJ1Y3QgX1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlclByaXZhdGUgewot
ICAgIFJlZlB0cjxXZWJzaXRlRGF0YVN0b3JlPiB3ZWJzaXRlRGF0YVN0b3JlOworICAgIFJlZlB0
cjxBUEk6OldlYnNpdGVEYXRhU3RvcmU+IHdlYnNpdGVEYXRhU3RvcmU7CiAgICAgR1VuaXF1ZVB0
cjxjaGFyPiBiYXNlRGF0YURpcmVjdG9yeTsKICAgICBHVW5pcXVlUHRyPGNoYXI+IGJhc2VDYWNo
ZURpcmVjdG9yeTsKICAgICBHVW5pcXVlUHRyPGNoYXI+IGxvY2FsU3RvcmFnZURpcmVjdG9yeTsK
QEAgLTI5OSwxMiArMjk5LDEyIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFu
YWdlcl8KIFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciogd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2Vy
Q3JlYXRlKFdlYnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uKQog
ewogICAgIFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciogbWFuYWdlciA9IFdFQktJVF9XRUJTSVRF
X0RBVEFfTUFOQUdFUihnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCU0lURV9EQVRBX01BTkFH
RVIsIG51bGxwdHIpKTsKLSAgICBtYW5hZ2VyLT5wcml2LT53ZWJzaXRlRGF0YVN0b3JlID0gV2Vi
c2l0ZURhdGFTdG9yZTo6Y3JlYXRlKFdURjo6bW92ZShjb25maWd1cmF0aW9uKSk7CisgICAgbWFu
YWdlci0+cHJpdi0+d2Vic2l0ZURhdGFTdG9yZSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6Y3Jl
YXRlKFdURjo6bW92ZShjb25maWd1cmF0aW9uKSk7CiAKICAgICByZXR1cm4gbWFuYWdlcjsKIH0K
IAotV2Vic2l0ZURhdGFTdG9yZSYgd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyR2V0RGF0YVN0b3Jl
KFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciogbWFuYWdlcikKK0FQSTo6V2Vic2l0ZURhdGFTdG9y
ZSYgd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyR2V0RGF0YVN0b3JlKFdlYktpdFdlYnNpdGVEYXRh
TWFuYWdlciogbWFuYWdlcikKIHsKICAgICBXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJQcml2YXRl
KiBwcml2ID0gbWFuYWdlci0+cHJpdjsKICAgICBpZiAoIXByaXYtPndlYnNpdGVEYXRhU3RvcmUp
IHsKQEAgLTMxOCw3ICszMTgsNyBAQCBXZWJzaXRlRGF0YVN0b3JlJiB3ZWJraXRXZWJzaXRlRGF0
YU1hbmFnCiAgICAgICAgIGNvbmZpZ3VyYXRpb24ud2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkgPSAh
cHJpdi0+d2ViU1FMRGlyZWN0b3J5ID8KICAgICAgICAgICAgIEFQSTo6V2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkgOiBXZWJDb3JlOjpmaWxlbmFtZVRv
U3RyaW5nKHByaXYtPndlYlNRTERpcmVjdG9yeS5nZXQoKSk7CiAgICAgICAgIGNvbmZpZ3VyYXRp
b24ubWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICAgICAgcHJpdi0+d2Vic2l0ZURh
dGFTdG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZShXVEY6Om1vdmUoY29uZmlndXJhdGlv
bikpOworICAgICAgICBwcml2LT53ZWJzaXRlRGF0YVN0b3JlID0gQVBJOjpXZWJzaXRlRGF0YVN0
b3JlOjpjcmVhdGUoV1RGOjptb3ZlKGNvbmZpZ3VyYXRpb24pKTsKICAgICB9CiAKICAgICByZXR1
cm4gKnByaXYtPndlYnNpdGVEYXRhU3RvcmU7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJQcml2YXRlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vic2l0ZURhdGFNYW5h
Z2VyUHJpdmF0ZS5oCShyZXZpc2lvbiAxODgxOTIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJQcml2YXRlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIwLDEwICsyMCwxMSBAQAogI2lmbmRlZiBXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJQ
cml2YXRlX2gKICNkZWZpbmUgV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyUHJpdmF0ZV9oCiAKKyNp
bmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAiV2ViS2l0UHJpdmF0ZS5o
IgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKIAogV2ViS2l0V2Vic2l0ZURhdGFNYW5h
Z2VyKiB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJDcmVhdGUoV2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlOjpDb25maWd1cmF0aW9uJiYpOwotV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlJiB3ZWJraXRX
ZWJzaXRlRGF0YU1hbmFnZXJHZXREYXRhU3RvcmUoV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKik7
CitBUEk6OldlYnNpdGVEYXRhU3RvcmUmIHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckdldERhdGFT
dG9yZShXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIqKTsKIAogI2VuZGlmIC8vIFdlYktpdFdlYnNp
dGVEYXRhTWFuYWdlclByaXZhdGVfaApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9pb3MvV0tWaWV3SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvaW9zL1dLVmlld0lPUy5tbQkocmV2aXNpb24gMTg4MTkyKQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9pb3MvV0tWaWV3SU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2
ICsyOCw3IEBACiAKICNpZiBQTEFURk9STShJT1MpCiAKKyNpbXBvcnQgIkFQSVBhZ2VDb25maWd1
cmF0aW9uLmgiCiAjaW1wb3J0ICJSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5oIgogI2ltcG9y
dCAiVUlLaXRTUEkuaCIKICNpbXBvcnQgIlZpZXdHZXN0dXJlQ29udHJvbGxlci5oIgpAQCAtMjI1
LDExICsyMjYsMTIgQEAgLSAodm9pZClfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoQ29udGV4dAog
CiAgICAgW3NlbGYgYWRkU3Vidmlldzpfc2Nyb2xsVmlldy5nZXQoKV07CiAKLSAgICBXZWJLaXQ6
OldlYlBhZ2VDb25maWd1cmF0aW9uIHdlYlBhZ2VDb25maWd1cmF0aW9uOwotICAgIHdlYlBhZ2VD
b25maWd1cmF0aW9uLnBhZ2VHcm91cCA9IHRvSW1wbChwYWdlR3JvdXBSZWYpOwotICAgIHdlYlBh
Z2VDb25maWd1cmF0aW9uLnJlbGF0ZWRQYWdlID0gdG9JbXBsKHJlbGF0ZWRQYWdlKTsKKyAgICBS
ZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IEFQSTo6UGFnZUNvbmZp
Z3VyYXRpb246OmNyZWF0ZSgpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldFByb2Nlc3NQb29sKHRv
SW1wbChjb250ZXh0UmVmKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0UGFnZUdyb3VwKHRvSW1w
bChwYWdlR3JvdXBSZWYpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRSZWxhdGVkUGFnZSh0b0lt
cGwocmVsYXRlZFBhZ2UpKTsKIAotICAgIF9jb250ZW50VmlldyA9IGFkb3B0TlMoW1tXS0NvbnRl
bnRWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOmJvdW5kcyBwcm9jZXNzUG9vbDoqdG9JbXBsKGNv
bnRleHRSZWYpIGNvbmZpZ3VyYXRpb246V1RGOjptb3ZlKHdlYlBhZ2VDb25maWd1cmF0aW9uKSB3
a1ZpZXc6c2VsZl0pOworICAgIF9jb250ZW50VmlldyA9IGFkb3B0TlMoW1tXS0NvbnRlbnRWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOmJvdW5kcyBwcm9jZXNzUG9vbDoqdG9JbXBsKGNvbnRleHRS
ZWYpIGNvbmZpZ3VyYXRpb246V1RGOjptb3ZlKGNvbmZpZ3VyYXRpb24pIHdrVmlldzpzZWxmXSk7
CiAKICAgICBbW19jb250ZW50VmlldyBsYXllcl0gc2V0QW5jaG9yUG9pbnQ6Q0dQb2ludFplcm9d
OwogICAgIFtfY29udGVudFZpZXcgc2V0RnJhbWU6Ym91bmRzXTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0JKHJldmlzaW9uIDE4ODE5MikKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQkod29ya2luZyBjb3B5KQpA
QCAtMzc0NCw3ICszNzQ0LDcgQEAgLSAodm9pZClfc2V0UHJpbWFyeVRyYWNraW5nQXJlYTooTlNU
cmFjawogICAgIFtzZWxmIGFkZFRyYWNraW5nQXJlYTp0cmFja2luZ0FyZWFdOwogfQogCi0tIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lIHByb2Nlc3NQb29sOihXZWJQ
cm9jZXNzUG9vbCYpcHJvY2Vzc1Bvb2wgY29uZmlndXJhdGlvbjooV2ViUGFnZUNvbmZpZ3VyYXRp
b24pd2ViUGFnZUNvbmZpZ3VyYXRpb24gd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldworLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSBwcm9jZXNzUG9vbDooV2Vi
UHJvY2Vzc1Bvb2wmKXByb2Nlc3NQb29sIGNvbmZpZ3VyYXRpb246KFJlZjxBUEk6OlBhZ2VDb25m
aWd1cmF0aW9uPiYmKWNvbmZpZ3VyYXRpb24gd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldwog
ewogICAgIHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhGcmFtZTpmcmFtZV07CiAgICAgaWYgKCFzZWxm
KQpAQCAtMzc2Niw3ICszNzY2LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KE5T
UmVjdClmcgogICAgIFtzZWxmIGFkZFRyYWNraW5nQXJlYTpfZGF0YS0+X3ByaW1hcnlUcmFja2lu
Z0FyZWEuZ2V0KCldOwogCiAgICAgX2RhdGEtPl9wYWdlQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1
ZTxQYWdlQ2xpZW50SW1wbD4oc2VsZiwgd2ViVmlldyk7Ci0gICAgX2RhdGEtPl9wYWdlID0gcHJv
Y2Vzc1Bvb2wuY3JlYXRlV2ViUGFnZSgqX2RhdGEtPl9wYWdlQ2xpZW50LCBXVEY6Om1vdmUod2Vi
UGFnZUNvbmZpZ3VyYXRpb24pKTsKKyAgICBfZGF0YS0+X3BhZ2UgPSBwcm9jZXNzUG9vbC5jcmVh
dGVXZWJQYWdlKCpfZGF0YS0+X3BhZ2VDbGllbnQsIFdURjo6bW92ZShjb25maWd1cmF0aW9uKSk7
CiAgICAgX2RhdGEtPl9wYWdlLT5zZXRBZGRzVmlzaXRlZExpbmtzKHByb2Nlc3NQb29sLmhpc3Rv
cnlDbGllbnQoKS5hZGRzVmlzaXRlZExpbmtzKCkpOwogCiAgICAgX2RhdGEtPl9wYWdlLT5zZXRJ
bnRyaW5zaWNEZXZpY2VTY2FsZUZhY3Rvcihbc2VsZiBfaW50cmluc2ljRGV2aWNlU2NhbGVGYWN0
b3JdKTsKQEAgLTM5OTQsMTkgKzM5OTQsMjAgQEAgLSAoaWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0
KWZyYW1lIGNvbnRleAogCiAtIChpZClpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUgY29udGV4
dFJlZjooV0tDb250ZXh0UmVmKWNvbnRleHRSZWYgcGFnZUdyb3VwUmVmOihXS1BhZ2VHcm91cFJl
ZilwYWdlR3JvdXBSZWYgcmVsYXRlZFRvUGFnZTooV0tQYWdlUmVmKXJlbGF0ZWRQYWdlCiB7Ci0g
ICAgV2ViUGFnZUNvbmZpZ3VyYXRpb24gd2ViUGFnZUNvbmZpZ3VyYXRpb247Ci0gICAgd2ViUGFn
ZUNvbmZpZ3VyYXRpb24ucGFnZUdyb3VwID0gdG9JbXBsKHBhZ2VHcm91cFJlZik7Ci0gICAgd2Vi
UGFnZUNvbmZpZ3VyYXRpb24ucmVsYXRlZFBhZ2UgPSB0b0ltcGwocmVsYXRlZFBhZ2UpOworICAg
IFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gQVBJOjpQYWdlQ29u
ZmlndXJhdGlvbjo6Y3JlYXRlKCk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0UHJvY2Vzc1Bvb2wo
dG9JbXBsKGNvbnRleHRSZWYpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRQYWdlR3JvdXAodG9J
bXBsKHBhZ2VHcm91cFJlZikpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldFJlbGF0ZWRQYWdlKHRv
SW1wbChyZWxhdGVkUGFnZSkpOwogCi0gICAgcmV0dXJuIFtzZWxmIGluaXRXaXRoRnJhbWU6ZnJh
bWUgcHJvY2Vzc1Bvb2w6KnRvSW1wbChjb250ZXh0UmVmKSBjb25maWd1cmF0aW9uOndlYlBhZ2VD
b25maWd1cmF0aW9uIHdlYlZpZXc6bmlsXTsKKyAgICByZXR1cm4gW3NlbGYgaW5pdFdpdGhGcmFt
ZTpmcmFtZSBwcm9jZXNzUG9vbDoqdG9JbXBsKGNvbnRleHRSZWYpIGNvbmZpZ3VyYXRpb246V1RG
Ojptb3ZlKGNvbmZpZ3VyYXRpb24pIHdlYlZpZXc6bmlsXTsKIH0KIAotLSAoaWQpaW5pdFdpdGhG
cmFtZTooTlNSZWN0KWZyYW1lIGNvbmZpZ3VyYXRpb25SZWY6KFdLUGFnZUNvbmZpZ3VyYXRpb25S
ZWYpY29uZmlndXJhdGlvbgorLSAoaWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lIGNvbmZp
Z3VyYXRpb25SZWY6KFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYpY29uZmlndXJhdGlvblJlZgogewot
ICAgIGF1dG8mIHByb2Nlc3NQb29sID0gKnRvSW1wbChjb25maWd1cmF0aW9uKS0+cHJvY2Vzc1Bv
b2woKTsKLSAgICBhdXRvIHdlYlBhZ2VDb25maWd1cmF0aW9uID0gdG9JbXBsKGNvbmZpZ3VyYXRp
b24pLT53ZWJQYWdlQ29uZmlndXJhdGlvbigpOworICAgIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0
aW9uPiBjb25maWd1cmF0aW9uID0gKnRvSW1wbChjb25maWd1cmF0aW9uUmVmKTsKKyAgICBhdXRv
JiBwcm9jZXNzUG9vbCA9ICpjb25maWd1cmF0aW9uLT5wcm9jZXNzUG9vbCgpOwogCi0gICAgcmV0
dXJuIFtzZWxmIGluaXRXaXRoRnJhbWU6ZnJhbWUgcHJvY2Vzc1Bvb2w6cHJvY2Vzc1Bvb2wgY29u
ZmlndXJhdGlvbjp3ZWJQYWdlQ29uZmlndXJhdGlvbiB3ZWJWaWV3Om5pbF07CisgICAgcmV0dXJu
IFtzZWxmIGluaXRXaXRoRnJhbWU6ZnJhbWUgcHJvY2Vzc1Bvb2w6cHJvY2Vzc1Bvb2wgY29uZmln
dXJhdGlvbjpXVEY6Om1vdmUoY29uZmlndXJhdGlvbikgd2ViVmlldzpuaWxdOwogfQogCiAtIChC
T09MKXdhbnRzVXBkYXRlTGF5ZXIKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
bWFjL1dLVmlld0ludGVybmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9tYWMvV0tWaWV3SW50ZXJuYWwuaAkocmV2aXNpb24gMTg4MTkyKQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50ZXJuYWwuaAkod29ya2luZyBjb3B5
KQpAQCAtMzgsNiArMzgsNyBAQAogCiBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIE9iamVjdDsKK2Ns
YXNzIFBhZ2VDb25maWd1cmF0aW9uOwogfQogCiBuYW1lc3BhY2UgSVBDIHsKQEAgLTU4LDcgKzU5
LDYgQEAgY2xhc3MgVmlld1NuYXBzaG90OwogY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7CiBzdHJ1Y3Qg
Q29sb3JTcGFjZURhdGE7CiBzdHJ1Y3QgRWRpdG9yU3RhdGU7Ci1zdHJ1Y3QgV2ViUGFnZUNvbmZp
Z3VyYXRpb247CiB9CiAKIEBjbGFzcyBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyOwpAQCAt
NjgsOSArNjgsNyBAQCBzdHJ1Y3QgV2ViUGFnZUNvbmZpZ3VyYXRpb247CiAjZW5kaWYKIAogQGlu
dGVyZmFjZSBXS1ZpZXcgKCkKLSNpZiBXS19BUElfRU5BQkxFRAotLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoRnJhbWU6KENHUmVjdClmcmFtZSBwcm9jZXNzUG9vbDooV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbCYpcHJvY2Vzc1Bvb2wgY29uZmlndXJhdGlvbjooV2ViS2l0OjpXZWJQYWdlQ29uZmlndXJh
dGlvbil3ZWJQYWdlQ29uZmlndXJhdGlvbiB3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3Owot
I2VuZGlmCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lIHByb2Nl
c3NQb29sOihXZWJLaXQ6OldlYlByb2Nlc3NQb29sJilwcm9jZXNzUG9vbCBjb25maWd1cmF0aW9u
OihSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJiljb25maWd1cmF0aW9uIHdlYlZpZXc6KFdL
V2ViVmlldyAqKXdlYlZpZXc7CiAKIC0gKHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXQ6OkRyYXdpbmdB
cmVhUHJveHk+KV9jcmVhdGVEcmF3aW5nQXJlYVByb3h5OwogLSAoQk9PTClfaXNGb2N1c2VkOwpJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViVmll
dy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvV2ViVmlldy5jcHAJKHJldmlzaW9uIDE4ODE5MikKKysrIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJXZWJWaWV3LmgiCiAKKyNpbmNsdWRlICJB
UElQYWdlQ29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIkNvb3JkaW5hdGVkRHJhd2luZ0FyZWFQ
cm94eS5oIgogI2luY2x1ZGUgIkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oIgogI2luY2x1ZGUg
IkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmgiCkBAIC01MiwxMSArNTMsMTEgQEAgV2Vi
Vmlldzo6V2ViVmlldyhXZWJQcm9jZXNzUG9vbCogY29udGV4dAogICAgICwgbV92aXNpYmxlKGZh
bHNlKQogICAgICwgbV9vcGFjaXR5KDEuMCkKIHsKLSAgICBXZWJQYWdlQ29uZmlndXJhdGlvbiB3
ZWJQYWdlQ29uZmlndXJhdGlvbjsKLSAgICB3ZWJQYWdlQ29uZmlndXJhdGlvbi5wYWdlR3JvdXAg
PSBwYWdlR3JvdXA7CisgICAgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+IHBhZ2VDb25maWd1
cmF0aW9uID0gQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7CisgICAgcGFnZUNvbmZp
Z3VyYXRpb24tPnNldFBhZ2VHcm91cChwYWdlR3JvdXApOwogCiAgICAgLy8gTmVlZCB0byBjYWxs
IGNyZWF0ZVdlYlBhZ2UgYWZ0ZXIgb3RoZXIgZGF0YSBtZW1iZXJzLCBzcGVjaWZpY2FsbHkgbV92
aXNpYmxlLCBhcmUgaW5pdGlhbGl6ZWQuCi0gICAgbV9wYWdlID0gY29udGV4dC0+Y3JlYXRlV2Vi
UGFnZSgqdGhpcywgV1RGOjptb3ZlKHdlYlBhZ2VDb25maWd1cmF0aW9uKSk7CisgICAgbV9wYWdl
ID0gY29udGV4dC0+Y3JlYXRlV2ViUGFnZSgqdGhpcywgV1RGOjptb3ZlKHBhZ2VDb25maWd1cmF0
aW9uKSk7CiAKICAgICBtX3BhZ2UtPnBhZ2VHcm91cCgpLnByZWZlcmVuY2VzKCkuc2V0QWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQodHJ1ZSk7CiAgICAgbV9wYWdlLT5wYWdlR3JvdXAoKS5w
cmVmZXJlbmNlcygpLnNldEZvcmNlQ29tcG9zaXRpbmdNb2RlKHRydWUpOwpJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3LmgJKHJldmlzaW9uIDE4ODE5
MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNCw2ICszNCwxMCBAQAogQGNsYXNzIFdLVmlldzsKIEBjbGFzcyBXS1dl
YlZpZXc7CiAKK25hbWVzcGFjZSBBUEkgeworY2xhc3MgUGFnZUNvbmZpZ3VyYXRpb247Cit9CisK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBIaWdobGlnaHQ7CiB9CkBAIC00NSw3ICs0OSw2
IEBAIGNsYXNzIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOwogY2xhc3MgV2ViRnJhbWVQcm94
eTsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIGNsYXNzIFdlYlByb2Nlc3NQb29sOwotc3RydWN0IFdl
YlBhZ2VDb25maWd1cmF0aW9uOwogfQogCiBAaW50ZXJmYWNlIFdLQ29udGVudFZpZXcgOiBVSVZp
ZXcgewpAQCAtNjEsOCArNjQsOCBAQCBzdHJ1Y3QgV2ViUGFnZUNvbmZpZ3VyYXRpb247CiBAcHJv
cGVydHkgKG5vbmF0b21pYywgZ2V0dGVyPWlzU2hvd2luZ0luc3BlY3RvckluZGljYXRpb24pIEJP
T0wgc2hvd2luZ0luc3BlY3RvckluZGljYXRpb247CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVh
ZG9ubHkpIEJPT0wgaXNCYWNrZ3JvdW5kOwogCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFt
ZTooQ0dSZWN0KWZyYW1lIHByb2Nlc3NQb29sOihXZWJLaXQ6OldlYlByb2Nlc3NQb29sJilwcm9j
ZXNzUG9vbCBjb25maWd1cmF0aW9uOihXZWJLaXQ6OldlYlBhZ2VDb25maWd1cmF0aW9uKXdlYlBh
Z2VDb25maWd1cmF0aW9uIHdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXc7Ci0tIChpbnN0YW5j
ZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lIHByb2Nlc3NQb29sOihXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sJilwcm9jZXNzUG9vbCBjb25maWd1cmF0aW9uOihXZWJLaXQ6OldlYlBhZ2VD
b25maWd1cmF0aW9uKXdlYlBhZ2VDb25maWd1cmF0aW9uIHdrVmlldzooV0tWaWV3ICopd2ViVmll
dzsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihDR1JlY3QpZnJhbWUgcHJvY2Vzc1Bv
b2w6KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmKXByb2Nlc3NQb29sIGNvbmZpZ3VyYXRpb246KFJl
ZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKWNvbmZpZ3VyYXRpb24gd2ViVmlldzooV0tXZWJW
aWV3ICopd2ViVmlldzsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihDR1JlY3QpZnJh
bWUgcHJvY2Vzc1Bvb2w6KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmKXByb2Nlc3NQb29sIGNvbmZp
Z3VyYXRpb246KFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKWNvbmZpZ3VyYXRpb24gd2tW
aWV3OihXS1ZpZXcgKil3ZWJWaWV3OwogCiAtICh2b2lkKWRpZFVwZGF0ZVZpc2libGVSZWN0OihD
R1JlY3QpdmlzaWJsZVJlY3QgdW5vYnNjdXJlZFJlY3Q6KENHUmVjdCl1bm9ic2N1cmVkUmVjdAog
ICAgIHVub2JzY3VyZWRSZWN0SW5TY3JvbGxWaWV3Q29vcmRpbmF0ZXM6KENHUmVjdCl1bm9ic2N1
cmVkUmVjdEluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCShyZXZpc2lvbiAxODgxOTIpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0JKHdvcmtpbmcgY29weSkK
QEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIFBMQVRGT1JNKElPUykKIAorI2ltcG9ydCAiQVBJUGFn
ZUNvbmZpZ3VyYXRpb24uaCIKICNpbXBvcnQgIkFwcGxpY2F0aW9uU3RhdGVUcmFja2VyLmgiCiAj
aW1wb3J0ICJQYWdlQ2xpZW50SW1wbElPUy5oIgogI2ltcG9ydCAiUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWFQcm94eS5oIgpAQCAtMTgxLDExICsxODIsMTEgQEAgLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoRnJhbWU6KENHUmVjdClmcgogICAgIHN0ZDo6dW5pcXVlX3B0cjxBcHBsaWNhdGlvblN0
YXRlVHJhY2tlcj4gX2FwcGxpY2F0aW9uU3RhdGVUcmFja2VyOwogfQogCi0tIChpbnN0YW5jZXR5
cGUpX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aFByb2Nlc3NQb29sOihXZWJLaXQ6OldlYlByb2Nl
c3NQb29sJilwcm9jZXNzUG9vbCBjb25maWd1cmF0aW9uOihXZWJLaXQ6OldlYlBhZ2VDb25maWd1
cmF0aW9uKXdlYlBhZ2VDb25maWd1cmF0aW9uCistIChpbnN0YW5jZXR5cGUpX2NvbW1vbkluaXRp
YWxpemF0aW9uV2l0aFByb2Nlc3NQb29sOihXZWJLaXQ6OldlYlByb2Nlc3NQb29sJilwcm9jZXNz
UG9vbCBjb25maWd1cmF0aW9uOihSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJiljb25maWd1
cmF0aW9uCiB7CiAgICAgQVNTRVJUKF9wYWdlQ2xpZW50KTsKIAotICAgIF9wYWdlID0gcHJvY2Vz
c1Bvb2wuY3JlYXRlV2ViUGFnZSgqX3BhZ2VDbGllbnQsIFdURjo6bW92ZSh3ZWJQYWdlQ29uZmln
dXJhdGlvbikpOworICAgIF9wYWdlID0gcHJvY2Vzc1Bvb2wuY3JlYXRlV2ViUGFnZSgqX3BhZ2VD
bGllbnQsIFdURjo6bW92ZShjb25maWd1cmF0aW9uKSk7CiAgICAgX3BhZ2UtPmluaXRpYWxpemVX
ZWJQYWdlKCk7CiAgICAgX3BhZ2UtPnNldEludHJpbnNpY0RldmljZVNjYWxlRmFjdG9yKFdLR2V0
U2NhbGVGYWN0b3JGb3JTY3JlZW4oW1VJU2NyZWVuIG1haW5TY3JlZW5dKSk7CiAgICAgX3BhZ2Ut
PnNldFVzZUZpeGVkTGF5b3V0KHRydWUpOwpAQCAtMjE4LDcgKzIxOSw3IEBAIC0gKGluc3RhbmNl
dHlwZSlfY29tbW9uSW5pdGlhbGl6YXRpb25XaXQKICAgICByZXR1cm4gc2VsZjsKIH0KIAotLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KENHUmVjdClmcmFtZSBwcm9jZXNzUG9vbDooV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbCYpcHJvY2Vzc1Bvb2wgY29uZmlndXJhdGlvbjooV2ViS2l0OjpX
ZWJQYWdlQ29uZmlndXJhdGlvbil3ZWJQYWdlQ29uZmlndXJhdGlvbiB3ZWJWaWV3OihXS1dlYlZp
ZXcgKil3ZWJWaWV3CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1l
IHByb2Nlc3NQb29sOihXZWJLaXQ6OldlYlByb2Nlc3NQb29sJilwcm9jZXNzUG9vbCBjb25maWd1
cmF0aW9uOihSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJiljb25maWd1cmF0aW9uIHdlYlZp
ZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcKIHsKICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRX
aXRoRnJhbWU6ZnJhbWVdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTIyOCwxMCArMjI5LDEw
IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihDR1JlY3QpZnIKICAgICBfcGFnZUNs
aWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZUNsaWVudEltcGw+KHNlbGYsIHdlYlZpZXcpOwog
ICAgIF93ZWJWaWV3ID0gd2ViVmlldzsKIAotICAgIHJldHVybiBbc2VsZiBfY29tbW9uSW5pdGlh
bGl6YXRpb25XaXRoUHJvY2Vzc1Bvb2w6cHJvY2Vzc1Bvb2wgY29uZmlndXJhdGlvbjp3ZWJQYWdl
Q29uZmlndXJhdGlvbl07CisgICAgcmV0dXJuIFtzZWxmIF9jb21tb25Jbml0aWFsaXphdGlvbldp
dGhQcm9jZXNzUG9vbDpwcm9jZXNzUG9vbCBjb25maWd1cmF0aW9uOldURjo6bW92ZShjb25maWd1
cmF0aW9uKV07CiB9CiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihDR1JlY3QpZnJh
bWUgcHJvY2Vzc1Bvb2w6KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmKXByb2Nlc3NQb29sIGNvbmZp
Z3VyYXRpb246KFdlYktpdDo6V2ViUGFnZUNvbmZpZ3VyYXRpb24pd2ViUGFnZUNvbmZpZ3VyYXRp
b24gd2tWaWV3OihXS1ZpZXcgKil3a1ZpZXcKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1l
OihDR1JlY3QpZnJhbWUgcHJvY2Vzc1Bvb2w6KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmKXByb2Nl
c3NQb29sIGNvbmZpZ3VyYXRpb246KFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKWNvbmZp
Z3VyYXRpb24gd2tWaWV3OihXS1ZpZXcgKil3a1ZpZXcKIHsKICAgICBpZiAoIShzZWxmID0gW3N1
cGVyIGluaXRXaXRoRnJhbWU6ZnJhbWVdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTI0MCw3
ICsyNDEsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyCiAKICAg
ICBfcGFnZUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZUNsaWVudEltcGw+KHNlbGYsIHdr
Vmlldyk7CiAKLSAgICByZXR1cm4gW3NlbGYgX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aFByb2Nl
c3NQb29sOnByb2Nlc3NQb29sIGNvbmZpZ3VyYXRpb246d2ViUGFnZUNvbmZpZ3VyYXRpb25dOwor
ICAgIHJldHVybiBbc2VsZiBfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoUHJvY2Vzc1Bvb2w6cHJv
Y2Vzc1Bvb2wgY29uZmlndXJhdGlvbjpXVEY6Om1vdmUoY29uZmlndXJhdGlvbildOwogfQogCiAt
ICh2b2lkKWRlYWxsb2MK
</data>
<flag name="review"
          id="283758"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>