<?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>228875</bug_id>
          
          <creation_ts>2021-08-06 14:29:42 -0700</creation_ts>
          <short_desc>SandboxExtension::Handle creation should return std::optional instead of bool</short_desc>
          <delta_ts>2022-01-20 21:00:06 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=229233</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>234975</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1782567</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-08-06 14:29:42 -0700</bug_when>
    <thetext>SandboxExtension::Handle creation should return std::optional instead of bool</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782569</commentid>
    <comment_count>1</comment_count>
      <attachid>435089</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-08-06 14:31:07 -0700</bug_when>
    <thetext>Created attachment 435089
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782714</commentid>
    <comment_count>2</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-08-07 11:28:56 -0700</bug_when>
    <thetext>Nice!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782892</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-08-09 08:49:35 -0700</bug_when>
    <thetext>EWS is all red.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1783960</commentid>
    <comment_count>4</comment_count>
      <attachid>435452</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-08-12 15:21:35 -0700</bug_when>
    <thetext>Created attachment 435452
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1784004</commentid>
    <comment_count>5</comment_count>
      <attachid>435460</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-08-12 17:52:48 -0700</bug_when>
    <thetext>Created attachment 435460
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1784049</commentid>
    <comment_count>6</comment_count>
      <attachid>435460</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-08-13 00:01:04 -0700</bug_when>
    <thetext>Comment on attachment 435460
Patch

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

&gt; Source/WebKit/Shared/Cocoa/SandboxExtensionCocoa.mm:298
&gt; +static SandboxExtension::HandleArray createHandlesForResources(const Vector&lt;T&gt;&amp; resources, Function&lt;std::optional&lt;SandboxExtension::Handle&gt;(const T&amp;)&gt;&amp;&amp; createFunction)

Does not seem we need a Function&lt;&gt;&amp;&amp; here.

&gt; Source/WebKit/Shared/Cocoa/SandboxExtensionCocoa.mm:319
&gt; +    return createHandlesForResources(paths, Function&lt;std::optional&lt;Handle&gt;(const String&amp;)&gt;([&amp;logLabel] (const String&amp; path) {

Would it work with:
return createHandlesForResources&lt;String&gt;(paths, [&amp;logLabel](auto&amp; path) { ... });

&gt; Source/WebKit/Shared/Cocoa/SandboxExtensionCocoa.mm:399
&gt; +    return createHandlesForResources(services, Function&lt;std::optional&lt;Handle&gt;(const ASCIILiteral&amp;)&gt;([auditToken, flags] (const ASCIILiteral&amp; service) -&gt; std::optional&lt;Handle&gt; {

Ditto here, createHandlesForResources&lt;ASCIILiteral&gt;(...) ?
Maybe below as well</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1784197</commentid>
    <comment_count>7</comment_count>
      <attachid>435502</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-08-13 13:08:10 -0700</bug_when>
    <thetext>Created attachment 435502
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1784204</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-08-13 13:53:10 -0700</bug_when>
    <thetext>Committed r281032 (240512@main): &lt;https://commits.webkit.org/240512@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 435502.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1784205</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-08-13 13:54:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/81914833&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1784288</commentid>
    <comment_count>10</comment_count>
      <attachid>435502</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-08-13 17:34:16 -0700</bug_when>
    <thetext>Comment on attachment 435502
Patch

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

&gt; Source/WebKit/Shared/SandboxExtension.h:169
&gt; +inline auto SandboxExtension::createHandleForTemporaryFile(const String&amp; /*prefix*/, Type) -&gt; std::optional&lt;std::pair&lt;Handle, String&gt;&gt; { return std::optional&lt;std::pair&lt;Handle, String&gt;&gt; { std::pair&lt;Handle, String&gt; { Handle { }, String { } } }; }

Pretty sure we can omit &quot;Handle { }, String { }&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1784563</commentid>
    <comment_count>11</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-08-16 09:54:12 -0700</bug_when>
    <thetext>Perhaps.  The compilers were unable to infer the meaning of {{{ }, { }}} so I was just completely explicit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1784860</commentid>
    <comment_count>12</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-08-17 09:43:29 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #11)
&gt; Perhaps.  The compilers were unable to infer the meaning of {{{ }, { }}} so
&gt; I was just completely explicit.

I’m really puzzled by this. I can’t reproduce this problem with a test program.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785092</commentid>
    <comment_count>13</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2021-08-18 04:50:26 -0700</bug_when>
    <thetext>Just leaving #229233 as a reference here, the std::optional&lt;Handle&gt; retval construction triggered compilation errors on older GCC setups due to ambiguity between the desired constructor and the in-place constructor of std::optional.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435089</attachid>
            <date>2021-08-06 14:31:07 -0700</date>
            <delta_ts>2021-08-12 15:21:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228875-20210806143106.patch</filename>
            <type>text/plain</type>
            <size>84009</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMzkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQ4YWQ4Y2Y4NGMxZTY2Y2Fm
OTRjMTY5MjZiYTRlZWM2OGMzMjZjZmQuLmExYzgyMGJkOTQ4NDI5YjVjODlhMTBiODk5YTNiNmNl
NzYxMjYyMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTc0IEBACisyMDIxLTA4LTA2ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlIGNyZWF0aW9uIHNob3VsZCByZXR1cm4gc3RkOjpvcHRpb25hbCBpbnN0
ZWFkIG9mIGJvb2wKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyODg3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoaXMgbW9kZXJuaXplcyB0aGUgY29kZSBzb21ld2hhdC4KKyAgICAgICAgVGhpcyBtYWtl
cyBpdCBlYXNpZXIgdG8gd3JpdGUgY29kZSB0aGF0IHJlYWxpemVzIHRoYXQgaGFuZGxlIGNyZWF0
aW9uIGNhbiBmYWlsLgorICAgICAgICBUaGlzIGlzIGEgc3RlcCB0b3dhcmRzIHJlbW92aW5nIHRo
ZSB1bm5lY2Vzc2FyeSBhYnN0cmFjdGlvbiBIYW5kbGVBcnJheS4KKworICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAg
ICAgICogUGxhdGZvcm0vSVBDL0Zvcm1EYXRhUmVmZXJlbmNlLmg6CisgICAgICAgIChJUEM6OkZv
cm1EYXRhUmVmZXJlbmNlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9T
YW5kYm94RXh0ZW5zaW9uQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKToKKyAgICAgICAgKFdlYktpdDo6
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6Y3JlYXRl
SGFuZGxlc0ZvclJlc291cmNlcyk6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246
OmNyZWF0ZVJlYWRPbmx5SGFuZGxlc0ZvckZpbGVzKToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KToKKyAgICAgICAg
KFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yVGVtcG9yYXJ5RmlsZSk6
CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvckdlbmVy
aWNFeHRlbnNpb24pOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVI
YW5kbGVGb3JNYWNoTG9va3VwKToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6
Y3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXApOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0
ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkQnlBdWRpdFRva2VuKToKKyAgICAgICAgKFdlYktp
dDo6U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9ySU9LaXRDbGFzc0V4dGVuc2lvbik6
CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JJT0tp
dENsYXNzRXh0ZW5zaW9ucyk6CisgICAgICAgICogU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaDoK
KyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKToKKyAgICAg
ICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmlu
Z1BhdGgpOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVG
b3JSZWFkV3JpdGVEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGVGb3JUZW1wb3JhcnlGaWxlKToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yR2VuZXJpY0V4dGVuc2lvbik6CisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmFkZFBsYXRmb3JtTG9hZFBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmNyZWF0ZVNhbmRib3hFeHRlbnNpb25zSWZOZWVkZWQpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNjcm9sbGluZ1VwZGF0ZXNEaXNhYmxl
ZEZvclRlc3RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnN0
YXJ0RHJhZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0UHJv
bWlzZWREYXRhRm9ySW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnNldERyYWdDYXJldFJlY3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnBsYXRmb3JtUmVnaXN0ZXJBdHRhY2htZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpwbGF0Zm9ybUNsb25lQXR0YWNobWVudCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdExv
Y2F0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwZXJmb3Jt
RGljdGlvbmFyeUxvb2t1cE9mQ3VycmVudFNlbGVjdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmMpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnBsYXRmb3JtRGljdGF0aW9uQWx0ZXJuYXRp
dmVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjplcnJvckZvclVu
cGVybWl0dGVkQXBwQm91bmREb21haW5OYXZpZ2F0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0b3JDb25uZWN0aW9uKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0b3JCb3Vu
ZEludGVyZmFjZUlkZW50aWZpZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnBheW1lbnRDb29yZGluYXRvclNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmll
cik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cGF5bWVudENvb3Jk
aW5hdG9yU291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0b3JBZGRNZXNzYWdl
UmVjZWl2ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnBheW1l
bnRDb29yZGluYXRvclJlbW92ZU1lc3NhZ2VSZWNlaXZlcik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkU3RhcnRTcGVha2luZyk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkRmluaXNoU3BlYWtpbmcpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFBhdXNlU3BlYWtpbmcpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFJlc3VtZVNwZWFraW5nKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzcGVha2luZ0Vycm9yT2NjdXJyZWQp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmJvdW5kYXJ5RXZlbnRP
Y2N1cnJlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dm9pY2Vz
RGlkQ2hhbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRD
cmVhdGVDb250ZXh0SW5XZWJQcm9jZXNzRm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRDcmVhdGVDb250ZXh0SW5HUFVQ
cm9jZXNzRm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpncmFudEFjY2Vzc1RvUHJlZmVyZW5jZVNlcnZpY2UpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Om1lZGlhVXNhZ2VNYW5hZ2VyKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjphZGRNZWRpYVVzYWdlTWFuYWdl
clNlc3Npb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnVwZGF0
ZU1lZGlhVXNhZ2VNYW5hZ2VyU2Vzc2lvblN0YXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpyZW1vdmVNZWRpYVVzYWdlTWFuYWdlclNlc3Npb24pOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0Ojpjb252ZXJ0UGxhdGZvcm1JbWFnZVRvQml0bWFwKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0VGh1bWJuYWlsV2l0aE9w
ZXJhdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVxdWVz
dFRodW1ibmFpbFdpdGhGaWxlV3JhcHBlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6cmVxdWVzdFRodW1ibmFpbFdpdGhQYXRoKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpzY2hlZHVsZUFjdGl2aXR5U3RhdGVVcGRhdGUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmFkZEFjdGl2aXR5U3RhdGVVcGRh
dGVDb21wbGV0aW9uSGFuZGxlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6Y3JlYXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXN0b3JlQXBwSGlnaGxpZ2h0c0FuZFNjcm9sbFRv
SW5kZXgpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldEFwcEhp
Z2hsaWdodHNWaXNpYmlsaXR5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjphcHBIaWdobGlnaHRzVmlzaWJpbGl0eSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6YXBwSGlnaGxpZ2h0c092ZXJsYXlSZWN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRVcEhpZ2hsaWdodHNPYnNlcnZlcik6IERlbGV0
ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y3JlYXRlTmV0d29ya0V4dGVuc2lv
bnNTYW5kYm94RXh0ZW5zaW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6Y2FuSGFuZGxlQ29udGV4dE1lbnVUcmFuc2xhdGlvbiBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aGFuZGxlQ29udGV4dE1lbnVUcmFuc2xhdGlv
bik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVxdWVzdEFjdGl2
ZU5vd1BsYXlpbmdTZXNzaW9uSW5mbyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6c2V0TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVk
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpncmFudEFjY2Vzc1Rv
QXNzZXRTZXJ2aWNlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
cmV2b2tlQWNjZXNzVG9Bc3NldFNlcnZpY2VzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5Ojpzd2l0Y2hGcm9tU3RhdGljRm9udFJlZ2lzdHJ5VG9Vc2VyRm9udFJlZ2lz
dHJ5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpmb250ZE1hY2hF
eHRlbnNpb25IYW5kbGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmNvbnRlbnRzT2ZVc2VySW50ZXJmYWNlSXRlbSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRQYXRobmFtZXNGb3JUeXBlKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1By
b2Nlc3MpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZv
cm1JbnZhbGlkYXRlQ29udGV4dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQb29sOjpwYXJlbnRCdW5kbGVEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbDo6bmV0d29ya2luZ0NhY2hlc0RpcmVjdG9yeSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjp3ZWJDb250ZW50Q2FjaGVzRGlyZWN0b3J5
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNvbnRhaW5lclRl
bXBvcmFyeURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sOjpzZXRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkZpbGVFbmFibGVkRnJvbURlZmF1bHRzKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6Om9taXRQREZTdXBwb3J0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NTdXBw
cmVzc2lvbkVuYWJsZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbDo6ZGlzcGxheUJyaWdodG5lc3MpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbDo6YmFja2xpZ2h0TGV2ZWxEaWRDaGFuZ2VDYWxsYmFjayk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjphY2Nlc3NpYmlsaXR5UHJlZmVyZW5j
ZXNDaGFuZ2VkQ2FsbGJhY2spOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbDo6bWVkaWFBY2Nlc3NpYmlsaXR5UHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2spOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6Y29sb3JQcmVmZXJlbmNlc0Rp
ZENoYW5nZUNhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bv
b2w6OnJlbW90ZVdlYkluc3BlY3RvckVuYWJsZWRDYWxsYmFjayk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzdGFydE9ic2VydmluZ1ByZWZlcmVuY2VDaGFuZ2Vz
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlZ2lzdGVyTm90
aWZpY2F0aW9uT2JzZXJ2ZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6OnVucmVnaXN0ZXJOb3RpZmljYXRpb25PYnNlcnZlcnMpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6aXNVUkxLbm93bkhTVFNIb3N0IGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6Om5vbWluYWxGcmFtZXNQZXJT
ZWNvbmRGb3JEaXNwbGF5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bv
b2w6OnN0YXJ0RGlzcGxheUxpbmspOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbDo6c3RvcERpc3BsYXlMaW5rKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc1Bvb2w6OnN0b3BEaXNwbGF5TGlua3MpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbDo6c2V0RGlzcGxheUxpbmtQcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2V0RGlzcGxheUxp
bmtGb3JEaXNwbGF5V2FudHNGdWxsU3BlZWRVcGRhdGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldENvb2tpZVN0b3JhZ2VQYXJ0aXRpb25pbmdFbmFibGVk
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNsZWFyUGVybWFu
ZW50Q3JlZGVudGlhbHNGb3JQcm90ZWN0aW9uU3BhY2UpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
S2l0OjpuZXR3b3JrUHJvY2Vzc0xhdGVuY3lRT1MpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpuZXR3b3JrUHJvY2Vzc1Rocm91Z2hwdXRRT1MpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
Ojp3ZWJQcm9jZXNzTGF0ZW5jeVFPUyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OndlYlBy
b2Nlc3NUaHJvdWdocHV0UU9TKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6OmFwcGxpY2F0aW9uSXNBYm91dFRvU3VzcGVuZCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpub3RpZnlQcm9jZXNzUG9vbHNBcHBsaWNhdGlvbklzQWJv
dXRUb1N1c3BlbmQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6
aW5pdGlhbGl6ZUNsYXNzZXNGb3JQYXJhbWV0ZXJDb2RpbmcpOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6YWxsb3dlZENsYXNzZXNGb3JQYXJhbWV0ZXJDb2Rpbmcg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6bm90aWZ5
UHJlZmVyZW5jZXNDaGFuZ2VkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6d2ViUHJvY2Vz
c1Bvb2xIaWdoRHluYW1pY1JhbmdlRGlkQ2hhbmdlQ2FsbGJhY2spOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cmVnaXN0ZXJIaWdoRHluYW1pY1JhbmdlQ2hhbmdl
Q2FsbGJhY2spOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c3lz
dGVtV2lsbFNsZWVwKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6
OnN5c3RlbURpZFdha2UpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMv
RG93bmxvYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OnB1Ymxp
c2hQcm9ncmVzcyk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OmRlY2lkZURlc3Rp
bmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvR1BVL0dQ
VVByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NQcm94eTo6R1BV
UHJvY2Vzc1Byb3h5KToKKyAgICAgICAgKFdlYktpdDo6YWRkQ2FtZXJhU2FuZGJveEV4dGVuc2lv
bnMpOgorICAgICAgICAoV2ViS2l0OjphZGRNaWNyb3Bob25lU2FuZGJveEV4dGVuc2lvbik6Cisg
ICAgICAgIChXZWJLaXQ6OmFkZFRDQ0RTYW5kYm94RXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYktp
dDo6Z3B1UHJvY2Vzc1Nlc3Npb25QYXJhbWV0ZXJzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3NQcm94eTo6c2VuZENyZWF0aW9uUGFyYW1ldGVyc1RvTmV3UHJvY2Vzcyk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnJldHJpZXZlQ2FjaGVTdG9yYWdlUGFyYW1l
dGVycyk6CisgICAgICAgICogVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRp
bWVNZWRpYVNvdXJjZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25p
dGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyOjphZGRTb3VyY2UpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5
OjpmaW5pc2hHcmFudGluZ1JlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyTWVkaWFQ
cm9jZXNzTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVByb2Nlc3NNYW5h
Z2VyOjp3aWxsQ3JlYXRlTWVkaWFTdHJlYW0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Om1heWJlSW5pdGlhbGl6
ZVNhbmRib3hFeHRlbnNpb25IYW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsV2l0aERpc3BsYXlTdHJpbmdBbmRJY29uKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbDo6d2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6aW5pdGlhbGl6ZU5ld1dlYlByb2Nlc3MpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0RpZEZpbmlzaExhdW5jaGluZyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpyZXN1bWVEb3dubG9hZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzdGFydE1lbW9yeVNhbXBsZXIpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW06Cisg
ICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnBsYXRmb3JtU2V0TmV0d29ya1BhcmFt
ZXRlcnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cGFyYW1ldGVycyk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6QmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bG9hZCk6CisKIDIw
MjEtMDctMjggIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAog
ICAgICAgICBXZWJTb2NrZXQ6IFNhZmFyaSBvbiBpT1MgMTUgYmV0YSAzIGlzIHNlbmRpbmcgaW52
YWxpZCBjbG9zZSBmcmFtZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAppbmRleCAwMGVmYzVm
MDUwMGJiYmI3MzIxODFkZmI5NjYzMWY3MDJjOGFlZTY4Li5mYzg0MWQ1MjNkOTZhNzY2ODhiNDFk
NGIyZTkzMjdkYjdhN2Q0NmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcApAQCAtNTgs
NyArNTgsOCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjplbmNvZGUoSVBD
OjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgICAgICAgICAgY29uc3QgRm9ybURhdGFFbGVt
ZW50JiBlbGVtZW50ID0gZWxlbWVudHNbaV07CiAgICAgICAgICAgICBpZiAoYXV0byogZmlsZURh
dGEgPSBXVEY6OmdldF9pZjxGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRGaWxlRGF0YT4oZWxlbWVu
dC5kYXRhKSkgewogICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgcGF0aCA9IGZpbGVEYXRh
LT5maWxlbmFtZTsKLSAgICAgICAgICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5k
bGUocGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHksIHJlcXVlc3RCb2R5U2Fu
ZGJveEV4dGVuc2lvbnNbZXh0ZW5zaW9uSW5kZXgrK10pOworICAgICAgICAgICAgICAgIGlmIChh
dXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShwYXRoLCBTYW5kYm94
RXh0ZW5zaW9uOjpUeXBlOjpSZWFkT25seSkpCisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RC
b2R5U2FuZGJveEV4dGVuc2lvbnNbZXh0ZW5zaW9uSW5kZXgrK10gPSBXVEZNb3ZlKCpoYW5kbGUp
OwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGVuY29kZXIgPDwgcmVxdWVzdEJv
ZHlTYW5kYm94RXh0ZW5zaW9uczsKQEAgLTY3LDExICs2OCwxNSBAQCB2b2lkIE5ldHdvcmtSZXNv
dXJjZUxvYWRQYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAog
ICAgIGlmIChyZXF1ZXN0LnVybCgpLmlzTG9jYWxGaWxlKCkpIHsKICAgICAgICAgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlIHJlcXVlc3RTYW5kYm94RXh0ZW5zaW9uOwogI2lmIEhBVkUoQVVESVRf
VE9LRU4pCi0gICAgICAgIGlmIChuZXR3b3JrUHJvY2Vzc0F1ZGl0VG9rZW4pCi0gICAgICAgICAg
ICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkQnlBdWRpdFRva2VuKHJlcXVl
c3QudXJsKCkuZmlsZVN5c3RlbVBhdGgoKSwgKm5ldHdvcmtQcm9jZXNzQXVkaXRUb2tlbiwgcmVx
dWVzdFNhbmRib3hFeHRlbnNpb24pOwotICAgICAgICBlbHNlCisgICAgICAgIGlmIChuZXR3b3Jr
UHJvY2Vzc0F1ZGl0VG9rZW4pIHsKKyAgICAgICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRCeUF1ZGl0VG9rZW4ocmVxdWVzdC51cmwo
KS5maWxlU3lzdGVtUGF0aCgpLCAqbmV0d29ya1Byb2Nlc3NBdWRpdFRva2VuKSkKKyAgICAgICAg
ICAgICAgICByZXF1ZXN0U2FuZGJveEV4dGVuc2lvbiA9IFdURk1vdmUoKmhhbmRsZSk7CisgICAg
ICAgIH0gZWxzZQogI2VuZGlmCi0gICAgICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVI
YW5kbGUocmVxdWVzdC51cmwoKS5maWxlU3lzdGVtUGF0aCgpLCBTYW5kYm94RXh0ZW5zaW9uOjpU
eXBlOjpSZWFkT25seSwgcmVxdWVzdFNhbmRib3hFeHRlbnNpb24pOworICAgICAgICB7CisgICAg
ICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUo
cmVxdWVzdC51cmwoKS5maWxlU3lzdGVtUGF0aCgpLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpS
ZWFkT25seSkpCisgICAgICAgICAgICAgICAgcmVxdWVzdFNhbmRib3hFeHRlbnNpb24gPSBXVEZN
b3ZlKCpoYW5kbGUpOworICAgICAgICB9CiAKICAgICAgICAgZW5jb2RlciA8PCByZXF1ZXN0U2Fu
ZGJveEV4dGVuc2lvbjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9Gb3JtRGF0YVJlZmVyZW5jZS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRm9y
bURhdGFSZWZlcmVuY2UuaAppbmRleCBjMGQ0MzdhZTcxN2FiOTJjZGQzNGNhOWVlY2FmMDdiZWRi
Y2JhN2VjLi44M2MyNDdmYTYxOWQ1NzE5MzQ4YTU1MTJjMTRjNmY3NjE2YjU3MWNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Gb3JtRGF0YVJlZmVyZW5jZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Zvcm1EYXRhUmVmZXJlbmNlLmgKQEAgLTYxLDcg
KzYxLDggQEAgcHVibGljOgogICAgICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBlbGVtZW50cykg
ewogICAgICAgICAgICAgaWYgKGF1dG8qIGZpbGVEYXRhID0gV1RGOjpnZXRfaWY8V2ViQ29yZTo6
Rm9ybURhdGFFbGVtZW50OjpFbmNvZGVkRmlsZURhdGE+KGVsZW1lbnQuZGF0YSkpIHsKICAgICAg
ICAgICAgICAgICBjb25zdCBTdHJpbmcmIHBhdGggPSBmaWxlRGF0YS0+ZmlsZW5hbWU7Ci0gICAg
ICAgICAgICAgICAgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUocGF0aCwg
V2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkT25seSwgc2FuZGJveEV4dGVuc2lv
bkhhbmRsZXNbZXh0ZW5zaW9uSW5kZXgrK10pOworICAgICAgICAgICAgICAgIGlmIChhdXRvIGhh
bmRsZSA9IFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKHBhdGgsIFdlYktp
dDo6U2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHkpKQorICAgICAgICAgICAgICAgICAg
ICBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlc1tleHRlbnNpb25JbmRleCsrXSA9IFdURk1vdmUoKmhh
bmRsZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZW5jb2RlciA8PCBzYW5k
Ym94RXh0ZW5zaW9uSGFuZGxlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
Y29hL1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29h
L1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbQppbmRleCBjYTM3ODBiYzg2ZjljMGQ2MjA4ODI3MjJh
ZDkzMmMzZmQzMzMyNTRmLi4zZWRjNTQxNDFmNDU3YjA1OWUwOTFhZjkyZTdjZTNlYTZlNjMwMDY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9TYW5kYm94RXh0ZW5zaW9u
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lv
bkNvY29hLm1tCkBAIC0yNzYsMjcgKzI3NiwyNiBAQCBTdHJpbmcgcmVzb2x2ZVBhdGhGb3JTYW5k
Ym94RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICByZXR1cm4gcmVzb2x2ZWRQYXRo
OwogfQogCi1ib29sIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZp
bmdQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCwgVHlwZSB0eXBlLCBIYW5kbGUmIGhhbmRsZSkKK2F1
dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgoY29u
c3QgU3RyaW5nJiBwYXRoLCBUeXBlIHR5cGUpIC0+IHN0ZDo6b3B0aW9uYWw8SGFuZGxlPgogewor
ICAgIEhhbmRsZSBoYW5kbGU7CiAgICAgQVNTRVJUKCFoYW5kbGUubV9zYW5kYm94RXh0ZW5zaW9u
KTsKIAogICAgIGhhbmRsZS5tX3NhbmRib3hFeHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uSW1w
bDo6Y3JlYXRlKHBhdGgudXRmOCgpLmRhdGEoKSwgdHlwZSwgc3RkOjpudWxsb3B0LCBTYW5kYm94
RXh0ZW5zaW9uOjpGbGFnczo6RG9Ob3RDYW5vbmljYWxpemUpOwogICAgIGlmICghaGFuZGxlLm1f
c2FuZGJveEV4dGVuc2lvbikgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBjcmVhdGUg
YSBzYW5kYm94IGV4dGVuc2lvbiBmb3IgJyVzJyIsIHBhdGgudXRmOCgpLmRhdGEoKSk7Ci0gICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9Ci0g
ICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIFdURk1vdmUoaGFuZGxlKTsKIH0KIAotYm9vbCBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBUeXBlIHR5
cGUsIEhhbmRsZSYgaGFuZGxlKQorYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUo
Y29uc3QgU3RyaW5nJiBwYXRoLCBUeXBlIHR5cGUpIC0+IHN0ZDo6b3B0aW9uYWw8SGFuZGxlPgog
ewotICAgIEFTU0VSVCghaGFuZGxlLm1fc2FuZGJveEV4dGVuc2lvbik7Ci0KLSAgICByZXR1cm4g
Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgocmVzb2x2ZVBhdGhGb3JTYW5kYm94RXh0
ZW5zaW9uKHBhdGgpLCB0eXBlLCBoYW5kbGUpOworICAgIHJldHVybiBjcmVhdGVIYW5kbGVXaXRo
b3V0UmVzb2x2aW5nUGF0aChyZXNvbHZlUGF0aEZvclNhbmRib3hFeHRlbnNpb24ocGF0aCksIHR5
cGUpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0YXRpYyBTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGVBcnJheSBjcmVhdGVIYW5kbGVzRm9yUmVzb3VyY2VzKGNvbnN0IFZlY3RvcjxUPiYg
cmVzb3VyY2VzLCBGdW5jdGlvbjxib29sKGNvbnN0IFQmLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUmIGhhbmRsZSk+JiYgY3JlYXRlRnVuY3Rpb24pCitzdGF0aWMgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlQXJyYXkgY3JlYXRlSGFuZGxlc0ZvclJlc291cmNlcyhjb25zdCBWZWN0b3I8VD4mIHJl
c291cmNlcywgRnVuY3Rpb248c3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+
KGNvbnN0IFQmKT4mJiBjcmVhdGVGdW5jdGlvbikKIHsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGVBcnJheSBoYW5kbGVBcnJheTsKIApAQCAtMzA1LDggKzMwNCwxMCBAQCBzdGF0aWMgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkgY3JlYXRlSGFuZGxlc0ZvclJlc291cmNlcyhjb25z
dCBWZWN0b3I8VD4mCiAKICAgICBzaXplX3QgY3VycmVudEhhbmRsZSA9IDA7CiAgICAgZm9yIChj
b25zdCBhdXRvJiByZXNvdXJjZSA6IHJlc291cmNlcykgewotICAgICAgICBpZiAoIWNyZWF0ZUZ1
bmN0aW9uKHJlc291cmNlLCBoYW5kbGVBcnJheVtjdXJyZW50SGFuZGxlXSkpCisgICAgICAgIGF1
dG8gaGFuZGxlID0gY3JlYXRlRnVuY3Rpb24ocmVzb3VyY2UpOworICAgICAgICBpZiAoIWhhbmRs
ZSkKICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBoYW5kbGVBcnJheVtjdXJyZW50SGFu
ZGxlXSA9IFdURk1vdmUoKmhhbmRsZSk7CiAgICAgICAgICsrY3VycmVudEhhbmRsZTsKICAgICB9
CiAgICAgCkBAIC0zMTUsMzQgKzMxNiwzNCBAQCBzdGF0aWMgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlQXJyYXkgY3JlYXRlSGFuZGxlc0ZvclJlc291cmNlcyhjb25zdCBWZWN0b3I8VD4mCiAKIFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZVJlYWRP
bmx5SGFuZGxlc0ZvckZpbGVzKEFTQ0lJTGl0ZXJhbCBsb2dMYWJlbCwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIHBhdGhzKQogewotICAgIHJldHVybiBjcmVhdGVIYW5kbGVzRm9yUmVzb3VyY2VzKHBh
dGhzLCBGdW5jdGlvbjxib29sKGNvbnN0IFN0cmluZyYsIEhhbmRsZSYpPihbJmxvZ0xhYmVsXSAo
Y29uc3QgU3RyaW5nJiBwYXRoLCBIYW5kbGUmIGhhbmRsZSkgewotICAgICAgICBpZiAoIVNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpS
ZWFkT25seSwgaGFuZGxlKSkgeworICAgIHJldHVybiBjcmVhdGVIYW5kbGVzRm9yUmVzb3VyY2Vz
KHBhdGhzLCBGdW5jdGlvbjxzdGQ6Om9wdGlvbmFsPEhhbmRsZT4oY29uc3QgU3RyaW5nJik+KFsm
bG9nTGFiZWxdIChjb25zdCBTdHJpbmcmIHBhdGgpIHsKKyAgICAgICAgYXV0byBoYW5kbGUgPSBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUocGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6VHlw
ZTo6UmVhZE9ubHkpOworICAgICAgICBpZiAoIWhhbmRsZSkgewogICAgICAgICAgICAgLy8gVGhp
cyBjYW4gbGVnaXRpbWF0ZWx5IGZhaWwgaWYgYSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgZmls
ZSBpcyBkZWxldGVkIGFmdGVyIHRoZSBmaWxlIHdhcyBjaG9zZW4uCiAgICAgICAgICAgICAvLyBX
ZSBhbHNvIGhhdmUgcmVwb3J0cyBvZiBjYXNlcyB3aGVyZSB0aGlzIGxpa2VseSBmYWlscyBmb3Ig
c29tZSB1bmtub3duIHJlYXNvbiwgPHJkYXI6Ly9wcm9ibGVtLzEwMTU2NzEwPi4KICAgICAgICAg
ICAgIFdURkxvZ0Fsd2F5cygiJXM6IGNvdWxkIG5vdCBjcmVhdGUgYSBzYW5kYm94IGV4dGVuc2lv
biBmb3IgJyVzJ1xuIiwgbG9nTGFiZWwuY2hhcmFjdGVycygpLCBwYXRoLnV0ZjgoKS5kYXRhKCkp
OwogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBo
YW5kbGU7CiAgICAgfSkpOwogfQogCi1ib29sIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRs
ZUZvclJlYWRXcml0ZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZSYgaGFuZGxlKQorYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVG
b3JSZWFkV3JpdGVEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKSAtPiBzdGQ6Om9wdGlvbmFs
PEhhbmRsZT4KIHsKICAgICBTdHJpbmcgcmVzb2x2ZWRQYXRoID0gcmVzb2x2ZUFuZENyZWF0ZVJl
YWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24ocGF0aCk7CiAgICAgaWYgKHJlc29s
dmVkUGF0aC5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKHJlc29sdmVk
UGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRlLCBoYW5kbGUpOworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHJldHVybiBTYW5kYm94RXh0ZW5zaW9uOjpjcmVh
dGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChyZXNvbHZlZFBhdGgsIFNhbmRib3hFeHRlbnNp
b246OlR5cGU6OlJlYWRXcml0ZSk7CiB9CiAKLVN0cmluZyBTYW5kYm94RXh0ZW5zaW9uOjpjcmVh
dGVIYW5kbGVGb3JUZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBUeXBlIHR5cGUs
IEhhbmRsZSYgaGFuZGxlKQorYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JU
ZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBUeXBlIHR5cGUpIC0+IHN0ZDo6b3B0
aW9uYWw8c3RkOjpwYWlyPEhhbmRsZSwgU3RyaW5nPj4KIHsKKyAgICBIYW5kbGUgaGFuZGxlOwog
ICAgIEFTU0VSVCghaGFuZGxlLm1fc2FuZGJveEV4dGVuc2lvbik7CiAgICAgCiAgICAgVmVjdG9y
PGNoYXI+IHBhdGgoUEFUSF9NQVgpOwogICAgIGlmICghY29uZnN0cihfQ1NfREFSV0lOX1VTRVJf
VEVNUF9ESVIsIHBhdGguZGF0YSgpLCBwYXRoLnNpemUoKSkpCi0gICAgICAgIHJldHVybiBTdHJp
bmcoKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICAvLyBTaHJpbmsg
dGhlIHZlY3Rvci4gICAKICAgICBwYXRoLnNocmluayhzdHJsZW4ocGF0aC5kYXRhKCkpKTsKQEAg
LTM2MCw4MiArMzYxLDgyIEBAIFN0cmluZyBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVG
b3JUZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBUeXBlCiAKICAgICBpZiAoIWhh
bmRsZS5tX3NhbmRib3hFeHRlbnNpb24pIHsKICAgICAgICAgV1RGTG9nQWx3YXlzKCJDb3VsZCBu
b3QgY3JlYXRlIGEgc2FuZGJveCBleHRlbnNpb24gZm9yIHRlbXBvcmFyeSBmaWxlICclcyciLCBw
YXRoLmRhdGEoKSk7Ci0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICB9Ci0gICAgcmV0dXJuIFN0cmluZyhwYXRoLmRhdGEoKSk7CisgICAg
cmV0dXJuIHt7IFdURk1vdmUoaGFuZGxlKSwgU3RyaW5nKHBhdGguZGF0YSgpKSB9fTsKIH0KIAot
Ym9vbCBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JHZW5lcmljRXh0ZW5zaW9uKEFT
Q0lJTGl0ZXJhbCBleHRlbnNpb25DbGFzcywgSGFuZGxlJiBoYW5kbGUpCithdXRvIFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvckdlbmVyaWNFeHRlbnNpb24oQVNDSUlMaXRlcmFsIGV4
dGVuc2lvbkNsYXNzKSAtPiBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4KIHsKKyAgICBIYW5kbGUgaGFu
ZGxlOwogICAgIEFTU0VSVCghaGFuZGxlLm1fc2FuZGJveEV4dGVuc2lvbik7CiAKICAgICBoYW5k
bGUubV9zYW5kYm94RXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbkltcGw6OmNyZWF0ZShleHRl
bnNpb25DbGFzcy5jaGFyYWN0ZXJzKCksIFR5cGU6OkdlbmVyaWMpOwogICAgIGlmICghaGFuZGxl
Lm1fc2FuZGJveEV4dGVuc2lvbikgewogICAgICAgICBXVEZMb2dBbHdheXMoIkNvdWxkIG5vdCBj
cmVhdGUgYSAnJXMnIHNhbmRib3ggZXh0ZW5zaW9uIiwgZXh0ZW5zaW9uQ2xhc3MuY2hhcmFjdGVy
cygpKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIH0KICAgICAKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gV1RGTW92ZShoYW5k
bGUpOwogfQogCi1ib29sIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29r
dXAoQVNDSUlMaXRlcmFsIHNlcnZpY2UsIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gYXVk
aXRUb2tlbiwgSGFuZGxlJiBoYW5kbGUsIE9wdGlvblNldDxGbGFncz4gZmxhZ3MpCithdXRvIFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoQVNDSUlMaXRlcmFsIHNl
cnZpY2UsIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gYXVkaXRUb2tlbiwgT3B0aW9uU2V0
PEZsYWdzPiBmbGFncykgLT4gc3RkOjpvcHRpb25hbDxIYW5kbGU+CiB7CisgICAgSGFuZGxlIGhh
bmRsZTsKICAgICBBU1NFUlQoIWhhbmRsZS5tX3NhbmRib3hFeHRlbnNpb24pOwogICAgIAogICAg
IGhhbmRsZS5tX3NhbmRib3hFeHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uSW1wbDo6Y3JlYXRl
KHNlcnZpY2UuY2hhcmFjdGVycygpLCBUeXBlOjpNYWNoLCBhdWRpdFRva2VuLCBmbGFncyk7CiAg
ICAgaWYgKCFoYW5kbGUubV9zYW5kYm94RXh0ZW5zaW9uKSB7CiAgICAgICAgIFdURkxvZ0Fsd2F5
cygiQ291bGQgbm90IGNyZWF0ZSBhICclcycgc2FuZGJveCBleHRlbnNpb24iLCBzZXJ2aWNlLmNo
YXJhY3RlcnMoKSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICB9CiAgICAgCi0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIFdURk1v
dmUoaGFuZGxlKTsKIH0KIAogU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkgU2FuZGJveEV4
dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAoY29uc3QgVmVjdG9yPEFTQ0lJTGl0
ZXJhbD4mIHNlcnZpY2VzLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IGF1ZGl0VG9rZW4s
IE9wdGlvblNldDxGbGFncz4gZmxhZ3MpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZUhhbmRsZXNGb3JS
ZXNvdXJjZXMoc2VydmljZXMsIEZ1bmN0aW9uPGJvb2woY29uc3QgQVNDSUlMaXRlcmFsJiwgSGFu
ZGxlJik+KFthdWRpdFRva2VuLCBmbGFnc10gKGNvbnN0IEFTQ0lJTGl0ZXJhbCYgc2VydmljZSwg
SGFuZGxlJiBoYW5kbGUpIHsKLSAgICAgICAgaWYgKCFTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVI
YW5kbGVGb3JNYWNoTG9va3VwKHNlcnZpY2UsIGF1ZGl0VG9rZW4sIGhhbmRsZSwgZmxhZ3MpKSB7
Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gY3JlYXRl
SGFuZGxlc0ZvclJlc291cmNlcyhzZXJ2aWNlcywgRnVuY3Rpb248c3RkOjpvcHRpb25hbDxIYW5k
bGU+KGNvbnN0IEFTQ0lJTGl0ZXJhbCYpPihbYXVkaXRUb2tlbiwgZmxhZ3NdIChjb25zdCBBU0NJ
SUxpdGVyYWwmIHNlcnZpY2UpIC0+IHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiB7CisgICAgICAgIGF1
dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cChz
ZXJ2aWNlLCBhdWRpdFRva2VuLCBmbGFncyk7CisgICAgICAgIEFTU0VSVChoYW5kbGUpOworICAg
ICAgICByZXR1cm4gaGFuZGxlOwogICAgIH0pKTsKIH0KIAotYm9vbCBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGVGb3JSZWFkQnlBdWRpdFRva2VuKGNvbnN0IFN0cmluZyYgcGF0aCwgYXVk
aXRfdG9rZW5fdCBhdWRpdFRva2VuLCBIYW5kbGUmIGhhbmRsZSkKK2F1dG8gU2FuZGJveEV4dGVu
c2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZEJ5QXVkaXRUb2tlbihjb25zdCBTdHJpbmcmIHBhdGgs
IGF1ZGl0X3Rva2VuX3QgYXVkaXRUb2tlbikgLT4gc3RkOjpvcHRpb25hbDxIYW5kbGU+CiB7Cisg
ICAgSGFuZGxlIGhhbmRsZTsKICAgICBBU1NFUlQoIWhhbmRsZS5tX3NhbmRib3hFeHRlbnNpb24p
OwogCiAgICAgaGFuZGxlLm1fc2FuZGJveEV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb25JbXBs
OjpjcmVhdGUocGF0aC51dGY4KCkuZGF0YSgpLCBUeXBlOjpSZWFkQnlQcm9jZXNzLCBhdWRpdFRv
a2VuKTsKICAgICBpZiAoIWhhbmRsZS5tX3NhbmRib3hFeHRlbnNpb24pIHsKICAgICAgICAgTE9H
X0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIGEgc2FuZGJveCBleHRlbnNpb24gZm9yICclcyciLCBw
YXRoLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgfQogICAgIAotICAgIHJldHVybiB0cnVlOworICAgIHJldHVy
biBXVEZNb3ZlKGhhbmRsZSk7CiB9CiAKLWJvb2wgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFu
ZGxlRm9ySU9LaXRDbGFzc0V4dGVuc2lvbihBU0NJSUxpdGVyYWwgaW9LaXRDbGFzcywgc3RkOjpv
cHRpb25hbDxhdWRpdF90b2tlbl90PiBhdWRpdFRva2VuLCBIYW5kbGUmIGhhbmRsZSwgT3B0aW9u
U2V0PEZsYWdzPiBmbGFncykKK2F1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9y
SU9LaXRDbGFzc0V4dGVuc2lvbihBU0NJSUxpdGVyYWwgaW9LaXRDbGFzcywgc3RkOjpvcHRpb25h
bDxhdWRpdF90b2tlbl90PiBhdWRpdFRva2VuLCBPcHRpb25TZXQ8RmxhZ3M+IGZsYWdzKSAtPiBz
dGQ6Om9wdGlvbmFsPEhhbmRsZT4KIHsKKyAgICBIYW5kbGUgaGFuZGxlOwogICAgIEFTU0VSVCgh
aGFuZGxlLm1fc2FuZGJveEV4dGVuc2lvbik7CiAKICAgICBoYW5kbGUubV9zYW5kYm94RXh0ZW5z
aW9uID0gU2FuZGJveEV4dGVuc2lvbkltcGw6OmNyZWF0ZShpb0tpdENsYXNzLmNoYXJhY3RlcnMo
KSwgVHlwZTo6SU9LaXQsIGF1ZGl0VG9rZW4pOwogICAgIGlmICghaGFuZGxlLm1fc2FuZGJveEV4
dGVuc2lvbikgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBjcmVhdGUgYSBzYW5kYm94
IGV4dGVuc2lvbiBmb3IgJyVzJyIsIGlvS2l0Q2xhc3MuY2hhcmFjdGVycygpKTsKLSAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAotICAg
IHJldHVybiB0cnVlOworICAgIHJldHVybiBXVEZNb3ZlKGhhbmRsZSk7CiB9CiAKIFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZUFycmF5IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JJ
T0tpdENsYXNzRXh0ZW5zaW9ucyhjb25zdCBWZWN0b3I8QVNDSUlMaXRlcmFsPiYgaW9raXRDbGFz
c2VzLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IGF1ZGl0VG9rZW4sIE9wdGlvblNldDxG
bGFncz4gZmxhZ3MpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZUhhbmRsZXNGb3JSZXNvdXJjZXMoaW9r
aXRDbGFzc2VzLCBGdW5jdGlvbjxib29sKGNvbnN0IEFTQ0lJTGl0ZXJhbCYsIEhhbmRsZSYpPihb
YXVkaXRUb2tlbiwgZmxhZ3NdIChjb25zdCBBU0NJSUxpdGVyYWwmIGlva2l0Q2xhc3MsIEhhbmRs
ZSYgaGFuZGxlKSB7Ci0gICAgICAgIGlmICghU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
Rm9ySU9LaXRDbGFzc0V4dGVuc2lvbihpb2tpdENsYXNzLCBhdWRpdFRva2VuLCBoYW5kbGUsIGZs
YWdzKSkgewotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJu
IGNyZWF0ZUhhbmRsZXNGb3JSZXNvdXJjZXMoaW9raXRDbGFzc2VzLCBGdW5jdGlvbjxzdGQ6Om9w
dGlvbmFsPEhhbmRsZT4oY29uc3QgQVNDSUlMaXRlcmFsJik+KFthdWRpdFRva2VuLCBmbGFnc10g
KGNvbnN0IEFTQ0lJTGl0ZXJhbCYgaW9raXRDbGFzcykgeworICAgICAgICBhdXRvIGhhbmRsZSA9
IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvcklPS2l0Q2xhc3NFeHRlbnNpb24oaW9r
aXRDbGFzcywgYXVkaXRUb2tlbiwgZmxhZ3MpOworICAgICAgICBBU1NFUlQoaGFuZGxlKTsKKyAg
ICAgICAgcmV0dXJuIGhhbmRsZTsKICAgICB9KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Nh
bmRib3hFeHRlbnNpb24uaAppbmRleCA2NGVhZDgyMzI5YzZhMWMzYzEyZGZiYjY1ZTJhMTUxZDg1
NTBjNjI1Li43MzE3NWM0MzI3YTJlZGI1MjQ4MmI3Yzc1OTYyZDk1OTRkNWMyZDg0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TYW5kYm94RXh0ZW5zaW9uLmgKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvU2FuZGJveEV4dGVuc2lvbi5oCkBAIC0xMTIsMTcgKzExMiwxNyBAQCBw
dWJsaWM6CiAgICAgfTsKICAgICAKICAgICBzdGF0aWMgUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+
IGNyZWF0ZShIYW5kbGUmJik7Ci0gICAgc3RhdGljIGJvb2wgY3JlYXRlSGFuZGxlKGNvbnN0IFN0
cmluZyYgcGF0aCwgVHlwZSwgSGFuZGxlJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SGFu
ZGxlPiBjcmVhdGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBUeXBlKTsKICAgICBzdGF0aWMg
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkgY3JlYXRlUmVhZE9ubHlIYW5kbGVzRm9yRmls
ZXMoQVNDSUlMaXRlcmFsIGxvZ0xhYmVsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0aHMpOwot
ICAgIHN0YXRpYyBib29sIGNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKGNvbnN0IFN0
cmluZyYgcGF0aCwgVHlwZSwgSGFuZGxlJik7Ci0gICAgc3RhdGljIGJvb2wgY3JlYXRlSGFuZGxl
Rm9yUmVhZFdyaXRlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgSGFuZGxlJik7IC8vIFdp
bGwgYXR0ZW1wdCB0byBjcmVhdGUgdGhlIGRpcmVjdG9yeS4KLSAgICBzdGF0aWMgU3RyaW5nIGNy
ZWF0ZUhhbmRsZUZvclRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFR5cGUsIEhh
bmRsZSYpOwotICAgIHN0YXRpYyBib29sIGNyZWF0ZUhhbmRsZUZvckdlbmVyaWNFeHRlbnNpb24o
QVNDSUlMaXRlcmFsIGV4dGVuc2lvbkNsYXNzLCBIYW5kbGUmKTsKKyAgICBzdGF0aWMgc3RkOjpv
cHRpb25hbDxIYW5kbGU+IGNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKGNvbnN0IFN0
cmluZyYgcGF0aCwgVHlwZSk7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiBjcmVh
dGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKTsgLy8gV2ls
bCBhdHRlbXB0IHRvIGNyZWF0ZSB0aGUgZGlyZWN0b3J5LgorICAgIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPHN0ZDo6cGFpcjxIYW5kbGUsIFN0cmluZz4+IGNyZWF0ZUhhbmRsZUZvclRlbXBvcmFyeUZp
bGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFR5cGUpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PEhhbmRsZT4gY3JlYXRlSGFuZGxlRm9yR2VuZXJpY0V4dGVuc2lvbihBU0NJSUxpdGVyYWwgZXh0
ZW5zaW9uQ2xhc3MpOwogI2lmIEhBVkUoQVVESVRfVE9LRU4pCi0gICAgc3RhdGljIGJvb2wgY3Jl
YXRlSGFuZGxlRm9yTWFjaExvb2t1cChBU0NJSUxpdGVyYWwgc2VydmljZSwgc3RkOjpvcHRpb25h
bDxhdWRpdF90b2tlbl90PiwgSGFuZGxlJiwgT3B0aW9uU2V0PEZsYWdzPiA9IEZsYWdzOjpEZWZh
dWx0KTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxIYW5kbGU+IGNyZWF0ZUhhbmRsZUZvck1h
Y2hMb29rdXAoQVNDSUlMaXRlcmFsIHNlcnZpY2UsIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5f
dD4sIE9wdGlvblNldDxGbGFncz4gPSBGbGFnczo6RGVmYXVsdCk7CiAgICAgc3RhdGljIEhhbmRs
ZUFycmF5IGNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKGNvbnN0IFZlY3RvcjxBU0NJSUxpdGVy
YWw+JiBzZXJ2aWNlcywgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiwgT3B0aW9uU2V0PEZs
YWdzPiA9IEZsYWdzOjpEZWZhdWx0KTsKLSAgICBzdGF0aWMgYm9vbCBjcmVhdGVIYW5kbGVGb3JS
ZWFkQnlBdWRpdFRva2VuKGNvbnN0IFN0cmluZyYgcGF0aCwgYXVkaXRfdG9rZW5fdCwgSGFuZGxl
Jik7Ci0gICAgc3RhdGljIGJvb2wgY3JlYXRlSGFuZGxlRm9ySU9LaXRDbGFzc0V4dGVuc2lvbihB
U0NJSUxpdGVyYWwgaW9raXRDbGFzcywgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiwgSGFu
ZGxlJiwgT3B0aW9uU2V0PEZsYWdzPiA9IEZsYWdzOjpEZWZhdWx0KTsKKyAgICBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxIYW5kbGU+IGNyZWF0ZUhhbmRsZUZvclJlYWRCeUF1ZGl0VG9rZW4oY29uc3Qg
U3RyaW5nJiBwYXRoLCBhdWRpdF90b2tlbl90KTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxI
YW5kbGU+IGNyZWF0ZUhhbmRsZUZvcklPS2l0Q2xhc3NFeHRlbnNpb24oQVNDSUlMaXRlcmFsIGlv
a2l0Q2xhc3MsIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4sIE9wdGlvblNldDxGbGFncz4g
PSBGbGFnczo6RGVmYXVsdCk7CiAgICAgc3RhdGljIEhhbmRsZUFycmF5IGNyZWF0ZUhhbmRsZXNG
b3JJT0tpdENsYXNzRXh0ZW5zaW9ucyhjb25zdCBWZWN0b3I8QVNDSUlMaXRlcmFsPiYgaW9raXRD
bGFzc2VzLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+LCBPcHRpb25TZXQ8RmxhZ3M+ID0g
RmxhZ3M6OkRlZmF1bHQpOwogI2VuZGlmCiAgICAgflNhbmRib3hFeHRlbnNpb24oKTsKQEAgLTE2
MiwxMiArMTYyLDEyIEBAIGlubGluZSBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUqIFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjplbmQoKSBjb25zCiBpbmxpbmUgdm9pZCBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6ZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0IHsg
fQogaW5saW5lIGF1dG8gU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6OmRlY29kZShJUEM6
OkRlY29kZXImKSAtPiBzdGQ6Om9wdGlvbmFsPEhhbmRsZUFycmF5PiB7IHJldHVybiB7IEhhbmRs
ZUFycmF5KCkgfTsgfQogaW5saW5lIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiBTYW5kYm94RXh0
ZW5zaW9uOjpjcmVhdGUoSGFuZGxlJiYpIHsgcmV0dXJuIG51bGxwdHI7IH0KLWlubGluZSBib29s
IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShjb25zdCBTdHJpbmcmLCBUeXBlLCBIYW5k
bGUmKSB7IHJldHVybiB0cnVlOyB9CitpbmxpbmUgYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVh
dGVIYW5kbGUoY29uc3QgU3RyaW5nJiwgVHlwZSkgLT4gc3RkOjpvcHRpb25hbDxIYW5kbGU+IHsg
cmV0dXJuIHt7IH19OyB9CiBpbmxpbmUgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkgU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlUmVhZE9ubHlIYW5kbGVzRm9yRmlsZXMoQVNDSUlMaXRlcmFs
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpIHsgcmV0dXJuIHsgfTsgfQotaW5saW5lIGJvb2wgU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgoY29uc3QgU3Ry
aW5nJiwgVHlwZSwgSGFuZGxlJikgeyByZXR1cm4gdHJ1ZTsgfQotaW5saW5lIGJvb2wgU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KGNvbnN0IFN0cmlu
ZyYsIEhhbmRsZSYpIHsgcmV0dXJuIHRydWU7IH0KLWlubGluZSBTdHJpbmcgU2FuZGJveEV4dGVu
c2lvbjo6Y3JlYXRlSGFuZGxlRm9yVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIC8qcHJlZml4
Ki8sIFR5cGUsIEhhbmRsZSYpIHtyZXR1cm4gU3RyaW5nKCk7fQotaW5saW5lIGJvb2wgU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yR2VuZXJpY0V4dGVuc2lvbihBU0NJSUxpdGVyYWwg
LypleHRlbnNpb25DbGFzcyovLCBIYW5kbGUmKSB7IHJldHVybiB0cnVlOyB9CitpbmxpbmUgYXV0
byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChjb25z
dCBTdHJpbmcmLCBUeXBlKSAtPiBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4geyByZXR1cm4ge3sgfX07
IH0KK2lubGluZSBhdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0
ZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKSAtPiBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4geyByZXR1
cm4ge3sgfX07IH0KK2lubGluZSBhdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZv
clRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiAvKnByZWZpeCovLCBUeXBlKSAtPiBzdGQ6Om9w
dGlvbmFsPHN0ZDo6cGFpcjxIYW5kbGUsIFN0cmluZz4+IHsgcmV0dXJuIHt7eyB9LCB7IH19fTsg
fQoraW5saW5lIGF1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yR2VuZXJpY0V4
dGVuc2lvbihBU0NJSUxpdGVyYWwgLypleHRlbnNpb25DbGFzcyovKSAtPiBzdGQ6Om9wdGlvbmFs
PEhhbmRsZT4geyByZXR1cm4ge3sgfX07IH0KIGlubGluZSBTYW5kYm94RXh0ZW5zaW9uOjp+U2Fu
ZGJveEV4dGVuc2lvbigpIHsgfQogaW5saW5lIGJvb2wgU2FuZGJveEV4dGVuc2lvbjo6cmV2b2tl
KCkgeyByZXR1cm4gdHJ1ZTsgfQogaW5saW5lIGJvb2wgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3Vt
ZSgpIHsgcmV0dXJuIHRydWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViUGFnZVByb3h5Q29jb2EubW0KaW5kZXggZDg5ZWJhMmIxMzQ3MWM0YTNjZTk3OTgyZmZi
ZjdhN2ViYmZmYzljZS4uYWU2MjlhOThkYTcwMDJlOGY0M2EzZDUzZDFkOTlhZjlhNzFmNWI0NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29j
b2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29j
b2EubW0KQEAgLTE3NywxMyArMTc3LDExIEBAIHZvaWQgV2ViUGFnZVByb3h5OjphZGRQbGF0Zm9y
bUxvYWRQYXJhbWV0ZXJzKFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgTG9hZFBhcmFtCiAgICAg
CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIGlmICghcHJvY2Vzcy5oYXNNYW5hZ2VkU2Vzc2lvblNh
bmRib3hBY2Nlc3MoKSAmJiBbZ2V0V2ViRmlsdGVyRXZhbHVhdG9yQ2xhc3MoKSBpc01hbmFnZWRT
ZXNzaW9uXSkgewotICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgaGFuZGxlOwotICAg
ICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBw
bGUudWlraXQudmlld3NlcnZpY2UuY29tLmFwcGxlLldlYkNvbnRlbnRGaWx0ZXIucmVtb3RlVUki
X3MsIHN0ZDo6bnVsbG9wdCwgaGFuZGxlKTsKLSAgICAgICAgbG9hZFBhcmFtZXRlcnMuY29udGVu
dEZpbHRlckV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoaGFuZGxlKTsKKyAgICAgICAgaWYgKGF1
dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgi
Y29tLmFwcGxlLnVpa2l0LnZpZXdzZXJ2aWNlLmNvbS5hcHBsZS5XZWJDb250ZW50RmlsdGVyLnJl
bW90ZVVJIl9zLCBzdGQ6Om51bGxvcHQpOworICAgICAgICAgICAgbG9hZFBhcmFtZXRlcnMuY29u
dGVudEZpbHRlckV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoKmhhbmRsZSk7CiAKLSAgICAgICAg
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGZyb250Ym9hcmRTZXJ2aWNlRXh0ZW5zaW9uSGFuZGxl
OwotICAgICAgICBpZiAoU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1
cCgiY29tLmFwcGxlLmZyb250Ym9hcmQuc3lzdGVtYXBwc2VydmljZXMiX3MsIHN0ZDo6bnVsbG9w
dCwgZnJvbnRib2FyZFNlcnZpY2VFeHRlbnNpb25IYW5kbGUpKQotICAgICAgICAgICAgbG9hZFBh
cmFtZXRlcnMuZnJvbnRib2FyZFNlcnZpY2VFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKGZyb250
Ym9hcmRTZXJ2aWNlRXh0ZW5zaW9uSGFuZGxlKTsKKyAgICAgICAgaWYgKGF1dG8gaGFuZGxlID0g
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLmZy
b250Ym9hcmQuc3lzdGVtYXBwc2VydmljZXMiX3MsIHN0ZDo6bnVsbG9wdCwgZnJvbnRib2FyZFNl
cnZpY2VFeHRlbnNpb25IYW5kbGUpKQorICAgICAgICAgICAgbG9hZFBhcmFtZXRlcnMuZnJvbnRi
b2FyZFNlcnZpY2VFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKCpoYW5kbGUpOwogCiAgICAgICAg
IHByb2Nlc3MubWFya0hhc01hbmFnZWRTZXNzaW9uU2FuZGJveEFjY2VzcygpOwogICAgIH0KQEAg
LTE5OSwxMCArMTk3LDExIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjcmVhdGVTYW5kYm94RXh0ZW5z
aW9uc0lmTmVlZGVkKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlcywKICAgICAgICAgQk9PTCBp
c0RpcmVjdG9yeTsKICAgICAgICAgaWYgKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0g
ZmlsZUV4aXN0c0F0UGF0aDpmaWxlc1swXSBpc0RpcmVjdG9yeTomaXNEaXJlY3RvcnldICYmICFp
c0RpcmVjdG9yeSkgewogICAgICAgICAgICAgQVNTRVJUKHByb2Nlc3MoKS5jb25uZWN0aW9uKCkg
JiYgcHJvY2VzcygpLmNvbm5lY3Rpb24oKS0+Z2V0QXVkaXRUb2tlbigpKTsKLSAgICAgICAgICAg
IGlmIChwcm9jZXNzKCkuY29ubmVjdGlvbigpICYmIHByb2Nlc3MoKS5jb25uZWN0aW9uKCktPmdl
dEF1ZGl0VG9rZW4oKSkKLSAgICAgICAgICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVI
YW5kbGVGb3JSZWFkQnlBdWRpdFRva2VuKCIvIiwgKihwcm9jZXNzKCkuY29ubmVjdGlvbigpLT5n
ZXRBdWRpdFRva2VuKCkpLCBmaWxlUmVhZEhhbmRsZSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKCIvIiwgU2FuZGJveEV4
dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHksIGZpbGVSZWFkSGFuZGxlKTsKKyAgICAgICAgICAgIGlm
IChwcm9jZXNzKCkuY29ubmVjdGlvbigpICYmIHByb2Nlc3MoKS5jb25uZWN0aW9uKCktPmdldEF1
ZGl0VG9rZW4oKSkgeworICAgICAgICAgICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRCeUF1ZGl0VG9rZW4oIi8iLCAqKHByb2Nlc3Mo
KS5jb25uZWN0aW9uKCktPmdldEF1ZGl0VG9rZW4oKSkpKQorICAgICAgICAgICAgICAgICAgICBm
aWxlUmVhZEhhbmRsZSA9IFdURk1vdmUoKmhhbmRsZSk7CisgICAgICAgICAgICB9IGVsc2UgaWYg
KGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKCIvIiwgU2FuZGJv
eEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHkpKQorICAgICAgICAgICAgICAgIGZpbGVSZWFkSGFu
ZGxlID0gV1RGTW92ZSgqaGFuZGxlKTsKICAgICAgICAgICAgIHdpbGxBY3F1aXJlVW5pdmVyc2Fs
RmlsZVJlYWRTYW5kYm94RXh0ZW5zaW9uKG1fcHJvY2Vzcyk7CiAgICAgICAgIH0KICAgICB9CkBA
IC0yMTIsNyArMjExLDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNyZWF0ZVNhbmRib3hFeHRlbnNp
b25zSWZOZWVkZWQoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVzLAogICAgICAgICBOU1N0cmlu
ZyAqZmlsZSA9IGZpbGVzW2ldOwogICAgICAgICBpZiAoIVtbTlNGaWxlTWFuYWdlciBkZWZhdWx0
TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpmaWxlXSkKICAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUoZmlsZSwgU2FuZGJveEV4dGVu
c2lvbjo6VHlwZTo6UmVhZE9ubHksIGZpbGVVcGxvYWRIYW5kbGVzW2ldKTsKKyAgICAgICAgaWYg
KGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGZpbGUsIFNhbmRi
b3hFeHRlbnNpb246OlR5cGU6OlJlYWRPbmx5KSkKKyAgICAgICAgICAgIGZpbGVVcGxvYWRIYW5k
bGVzW2ldID0gV1RGTW92ZSgqaGFuZGxlKTsKICAgICB9CiB9CiAKQEAgLTY4Nyw3ICs2ODcsOCBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6bGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJgogdm9pZCBXZWJQYWdlUHJveHk6OmdyYW50QWNjZXNz
VG9Bc3NldFNlcnZpY2VzKCkKIHsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgbW9iaWxl
QXNzZXRIYW5kbGVWMjsKLSAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNo
TG9va3VwKCJjb20uYXBwbGUubW9iaWxlYXNzZXRkLnYyIl9zLCBzdGQ6Om51bGxvcHQsIG1vYmls
ZUFzc2V0SGFuZGxlVjIpOworICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246
OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5tb2JpbGVhc3NldGQudjIiX3Ms
IHN0ZDo6bnVsbG9wdCkpCisgICAgICAgIG1vYmlsZUFzc2V0SGFuZGxlVjIgPSBXVEZNb3ZlKCpo
YW5kbGUpOwogICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpHcmFudEFj
Y2Vzc1RvQXNzZXRTZXJ2aWNlcyhtb2JpbGVBc3NldEhhbmRsZVYyKSwgMCk7CiB9CiAKQEAgLTcw
NCw3ICs3MDUsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c3dpdGNoRnJvbVN0YXRpY0ZvbnRSZWdp
c3RyeVRvVXNlckZvbnRSZWdpc3RyeSgpCiBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgV2ViUGFn
ZVByb3h5Ojpmb250ZE1hY2hFeHRlbnNpb25IYW5kbGUoKQogewogICAgIFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZSBmb250TWFjaEV4dGVuc2lvbkhhbmRsZTsKLSAgICBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUuZm9udHMiX3MsIHN0ZDo6bnVs
bG9wdCwgZm9udE1hY2hFeHRlbnNpb25IYW5kbGUpOworICAgIGlmIChhdXRvIGhhbmRsZSA9IFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5mb250
cyJfcywgc3RkOjpudWxsb3B0KSkKKyAgICAgICAgZm9udE1hY2hFeHRlbnNpb25IYW5kbGUgPSBX
VEZNb3ZlKCpoYW5kbGUpOwogICAgIHJldHVybiBmb250TWFjaEV4dGVuc2lvbkhhbmRsZTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2Fy
ZFByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJv
YXJkUHJveHlDb2NvYS5tbQppbmRleCBjZWFmN2YyODY3ODhmM2Y0ODliYjgzNTJlMDIyZTg2NDE2
Zjg3YzMxLi5kYzgxYjA5NzhkOTJhNzliOGYxODllYjc3YjBjMjAzNTk5ZjUwODdhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJv
eHlDb2NvYS5tbQpAQCAtMTc4LDcgKzE3OCw4IEBAIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojpn
ZXRQYXN0ZWJvYXJkUGF0aG5hbWVzRm9yVHlwZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3RpCiAg
ICAgICAgICAgICAgICAgYXV0byYgZmlsZW5hbWUgPSBwYXRobmFtZXNbaV07CiAgICAgICAgICAg
ICAgICAgaWYgKCFbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBh
dGg6ZmlsZW5hbWVdKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAg
ICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUoZmlsZW5hbWUsIFNhbmRib3hFeHRl
bnNpb246OlR5cGU6OlJlYWRPbmx5LCBzYW5kYm94RXh0ZW5zaW9uc1tpXSk7CisgICAgICAgICAg
ICAgICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGZp
bGVuYW1lLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkT25seSkpCisgICAgICAgICAgICAg
ICAgICAgIHNhbmRib3hFeHRlbnNpb25zW2ldID0gV1RGTW92ZSgqaGFuZGxlKTsKICAgICAgICAg
ICAgIH0KICNlbmRpZgogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQppbmRleCAyZTZiNGMxMzc2MTkyYWE2MTA5
YzRhOTE4ZjM0M2Y0NDMzYTJiMWMzLi45MTU4NjNlNmVjNDZkMzgwN2FkMDRmZjM0NWU2YzQ2MGE5
YzY3ZWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9j
ZXNzUG9vbENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBy
b2Nlc3NQb29sQ29jb2EubW0KQEAgLTMyOCw3ICszMjgsOCBAQCB2b2lkIFdlYlByb2Nlc3NQb29s
OjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKGNvbnN0IFdlYlByb2Nlc3NQcm94eSYgcHJv
Y2VzcwogCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHJlYWxseSBiZSBjb25maWd1cmFibGU7
IHdlIHNob3VsZG4ndCBqdXN0IGJsaW5kbHkgYWxsb3cgcmVhZCBhY2Nlc3MgdG8gdGhlIFVJIHBy
b2Nlc3MgYnVuZGxlLgogICAgIHBhcmFtZXRlcnMudWlQcm9jZXNzQnVuZGxlUmVzb3VyY2VQYXRo
ID0gbV9yZXNvbHZlZFBhdGhzLnVpUHJvY2Vzc0J1bmRsZVJlc291cmNlUGF0aDsKLSAgICBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChwYXJhbWV0ZXJz
LnVpUHJvY2Vzc0J1bmRsZVJlc291cmNlUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVh
ZE9ubHksIHBhcmFtZXRlcnMudWlQcm9jZXNzQnVuZGxlUmVzb3VyY2VQYXRoRXh0ZW5zaW9uSGFu
ZGxlKTsKKyAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5k
bGVXaXRob3V0UmVzb2x2aW5nUGF0aChwYXJhbWV0ZXJzLnVpUHJvY2Vzc0J1bmRsZVJlc291cmNl
UGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHkpKQorICAgICAgICBwYXJhbWV0
ZXJzLnVpUHJvY2Vzc0J1bmRsZVJlc291cmNlUGF0aEV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUo
KmhhbmRsZSk7CiAKICAgICBwYXJhbWV0ZXJzLnVpUHJvY2Vzc0J1bmRsZUlkZW50aWZpZXIgPSBh
cHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKTsKIApAQCAtMzM2LDIwICszMzcsMjUgQEAgdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyhjb25zdCBXZWJQ
cm9jZXNzUHJveHkmIHByb2Nlc3MKICAgICBwYXJhbWV0ZXJzLnRocm91Z2hwdXRRT1MgPSB3ZWJQ
cm9jZXNzVGhyb3VnaHB1dFFPUygpOwogICAgIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0g
ICAgaWYgKCFtX3Jlc29sdmVkUGF0aHMuY29va2llU3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkp
Ci0gICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQ
YXRoKG1fcmVzb2x2ZWRQYXRocy5jb29raWVTdG9yYWdlRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5z
aW9uOjpUeXBlOjpSZWFkV3JpdGUsIHBhcmFtZXRlcnMuY29va2llU3RvcmFnZURpcmVjdG9yeUV4
dGVuc2lvbkhhbmRsZSk7CisgICAgaWYgKCFtX3Jlc29sdmVkUGF0aHMuY29va2llU3RvcmFnZURp
cmVjdG9yeS5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4
dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgobV9yZXNvbHZlZFBhdGhz
LmNvb2tpZVN0b3JhZ2VEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0
ZSkpCisgICAgICAgICAgICBwYXJhbWV0ZXJzLmNvb2tpZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNp
b25IYW5kbGUgPSBXVEZNb3ZlKCpoYW5kbGUpOworICAgIH0KIAotICAgIGlmICghbV9yZXNvbHZl
ZFBhdGhzLmNvbnRhaW5lckNhY2hlc0RpcmVjdG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKG1fcmVzb2x2ZWRQ
YXRocy5jb250YWluZXJDYWNoZXNEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJl
YWRXcml0ZSwgcGFyYW1ldGVycy5jb250YWluZXJDYWNoZXNEaXJlY3RvcnlFeHRlbnNpb25IYW5k
bGUpOworICAgIGlmICghbV9yZXNvbHZlZFBhdGhzLmNvbnRhaW5lckNhY2hlc0RpcmVjdG9yeS5p
c0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6
Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgobV9yZXNvbHZlZFBhdGhzLmNvbnRhaW5l
ckNhY2hlc0RpcmVjdG9yeSwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRlKSkKKyAg
ICAgICAgICAgIHBhcmFtZXRlcnMuY29udGFpbmVyQ2FjaGVzRGlyZWN0b3J5RXh0ZW5zaW9uSGFu
ZGxlID0gV1RGTW92ZSgqaGFuZGxlKTsKKyAgICB9CiAKLSAgICBpZiAoIW1fcmVzb2x2ZWRQYXRo
cy5jb250YWluZXJUZW1wb3JhcnlEaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBTYW5kYm94
RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChtX3Jlc29sdmVkUGF0
aHMuY29udGFpbmVyVGVtcG9yYXJ5RGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpS
ZWFkV3JpdGUsIHBhcmFtZXRlcnMuY29udGFpbmVyVGVtcG9yYXJ5RGlyZWN0b3J5RXh0ZW5zaW9u
SGFuZGxlKTsKKyAgICBpZiAoIW1fcmVzb2x2ZWRQYXRocy5jb250YWluZXJUZW1wb3JhcnlEaXJl
Y3RvcnkuaXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRl
bnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKG1fcmVzb2x2ZWRQYXRocy5j
b250YWluZXJUZW1wb3JhcnlEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRX
cml0ZSkpCisgICAgICAgICAgICBwYXJhbWV0ZXJzLmNvbnRhaW5lclRlbXBvcmFyeURpcmVjdG9y
eUV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoKmhhbmRsZSk7CisgICAgfQogI2VuZGlmCiAjaWYg
UExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQogICAgIGlmIChXZWJQ
cm9jZXNzUHJveHk6OnNob3VsZEVuYWJsZVJlbW90ZUluc3BlY3RvcigpKSB7Ci0gICAgICAgIFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZSBlbmFibGVSZW1vdGVXZWJJbnNwZWN0b3JFeHRlbnNpb25I
YW5kbGU7Ci0gICAgICAgIGlmIChTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNo
TG9va3VwKCJjb20uYXBwbGUud2ViaW5zcGVjdG9yIl9zLCBzdGQ6Om51bGxvcHQsIGVuYWJsZVJl
bW90ZVdlYkluc3BlY3RvckV4dGVuc2lvbkhhbmRsZSkpCi0gICAgICAgICAgICBwYXJhbWV0ZXJz
LmVuYWJsZVJlbW90ZVdlYkluc3BlY3RvckV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoZW5hYmxl
UmVtb3RlV2ViSW5zcGVjdG9yRXh0ZW5zaW9uSGFuZGxlKTsKKyAgICAgICAgaWYgKGF1dG8gaGFu
ZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFw
cGxlLndlYmluc3BlY3RvciJfcywgc3RkOjpudWxsb3B0KSkKKyAgICAgICAgICAgIHBhcmFtZXRl
cnMuZW5hYmxlUmVtb3RlV2ViSW5zcGVjdG9yRXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqaGFu
ZGxlKTsKICAgICB9CiAjZW5kaWYKIApAQCAtMzk0LDggKzQwMCwxMCBAQCB2b2lkIFdlYlByb2Nl
c3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKGNvbnN0IFdlYlByb2Nlc3NQcm94
eSYgcHJvY2VzcwogCiAjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkK
ICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgYW5kIHJlbGF0ZWQgcGFyYW1ldGVyIHdoZW4gPHJk
YXI6Ly9wcm9ibGVtLzI5NDQ4MzY4PiBpcyBmaXhlZC4KLSAgICBpZiAoaXNTYWZhcmkgJiYgbWVk
aWFEZXZpY2VzRW5hYmxlZCAmJiAhbV9kZWZhdWx0UGFnZUdyb3VwLT5wcmVmZXJlbmNlcygpLmNh
cHR1cmVBdWRpb0luVUlQcm9jZXNzRW5hYmxlZCgpICYmICFtX2RlZmF1bHRQYWdlR3JvdXAtPnBy
ZWZlcmVuY2VzKCkuY2FwdHVyZUF1ZGlvSW5HUFVQcm9jZXNzRW5hYmxlZCgpKQotICAgICAgICBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JHZW5lcmljRXh0ZW5zaW9uKCJjb20uYXBw
bGUud2Via2l0Lm1pY3JvcGhvbmUiX3MsIHBhcmFtZXRlcnMuYXVkaW9DYXB0dXJlRXh0ZW5zaW9u
SGFuZGxlKTsKKyAgICBpZiAoaXNTYWZhcmkgJiYgbWVkaWFEZXZpY2VzRW5hYmxlZCAmJiAhbV9k
ZWZhdWx0UGFnZUdyb3VwLT5wcmVmZXJlbmNlcygpLmNhcHR1cmVBdWRpb0luVUlQcm9jZXNzRW5h
YmxlZCgpICYmICFtX2RlZmF1bHRQYWdlR3JvdXAtPnByZWZlcmVuY2VzKCkuY2FwdHVyZUF1ZGlv
SW5HUFVQcm9jZXNzRW5hYmxlZCgpKSB7CisgICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvckdlbmVyaWNFeHRlbnNpb24oImNvbS5hcHBsZS53
ZWJraXQubWljcm9waG9uZSJfcykpCisgICAgICAgICAgICBwYXJhbWV0ZXJzLmF1ZGlvQ2FwdHVy
ZUV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoKmhhbmRsZSk7CisgICAgfQogI2Vsc2UKICAgICBV
TlVTRURfUEFSQU0obWVkaWFEZXZpY2VzRW5hYmxlZCk7CiAjZW5kaWYKQEAgLTQzMSw5ICs0Mzks
OCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKGNv
bnN0IFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcwogICAgIHBhcmFtZXRlcnMuc3lzdGVtSGFzQUMg
PSBjYWNoZWRTeXN0ZW1IYXNBQygpLnZhbHVlX29yKHRydWUpOwogCiAgICAgaWYgKHJlcXVpcmVz
Q29udGFpbmVyTWFuYWdlckFjY2VzcygpKSB7Ci0gICAgICAgIFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZSBoYW5kbGU7Ci0gICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1h
Y2hMb29rdXAoImNvbS5hcHBsZS5jb250YWluZXJtYW5hZ2VyZCJfcywgc3RkOjpudWxsb3B0LCBo
YW5kbGUpOwotICAgICAgICBwYXJhbWV0ZXJzLmNvbnRhaW5lck1hbmFnZXJFeHRlbnNpb25IYW5k
bGUgPSBXVEZNb3ZlKGhhbmRsZSk7CisgICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5jb250YWluZXJt
YW5hZ2VyZCJfcywgc3RkOjpudWxsb3B0KSkKKyAgICAgICAgICAgIHBhcmFtZXRlcnMuY29udGFp
bmVyTWFuYWdlckV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoKmhhbmRsZSk7CiAgICAgfQogCiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTQ1MiwyMiArNDU5LDE5IEBAIHZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoY29uc3QgV2ViUHJvY2Vzc1By
b3h5JiBwcm9jZXNzCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhUExBVEZPUk0oTUFD
Q0FUQUxZU1QpCiAgICAgaWYgKCFfTUdDYWNoZVZhbGlkKCkpIHsKLSAgICAgICAgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlIGhhbmRsZTsKLSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRl
SGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLm1vYmlsZWdlc3RhbHQueHBjIl9zLCBzdGQ6
Om51bGxvcHQsIGhhbmRsZSk7Ci0gICAgICAgIHBhcmFtZXRlcnMubW9iaWxlR2VzdGFsdEV4dGVu
c2lvbkhhbmRsZSA9IFdURk1vdmUoaGFuZGxlKTsKKyAgICAgICAgaWYgKGF1dG8gaGFuZGxlID0g
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLm1v
YmlsZWdlc3RhbHQueHBjIl9zLCBzdGQ6Om51bGxvcHQpCisgICAgICAgICAgICBwYXJhbWV0ZXJz
Lm1vYmlsZUdlc3RhbHRFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKCpoYW5kbGUpOwogICAgIH0K
ICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZSBsYXVuY2hTZXJ2aWNlc0V4dGVuc2lvbkhhbmRsZTsKLSAgICBTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUuY29yZXNlcnZpY2VzLmxhdW5jaHNl
cnZpY2VzZCJfcywgc3RkOjpudWxsb3B0LCBsYXVuY2hTZXJ2aWNlc0V4dGVuc2lvbkhhbmRsZSk7
Ci0gICAgcGFyYW1ldGVycy5sYXVuY2hTZXJ2aWNlc0V4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUo
bGF1bmNoU2VydmljZXNFeHRlbnNpb25IYW5kbGUpOworICAgIGlmIChhdXRvIGhhbmRsZSA9IFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5jb3Jl
c2VydmljZXMubGF1bmNoc2VydmljZXNkIl9zLCBzdGQ6Om51bGxvcHQpKQorICAgICAgICBwYXJh
bWV0ZXJzLmxhdW5jaFNlcnZpY2VzRXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqaGFuZGxlKTsK
ICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBIQVZFKFZJREVPX1JFU1RSSUNURURfREVD
T0RJTkcpCi0gICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHRydXN0ZEFnZW50RXh0ZW5zaW9u
SGFuZGxlOwotICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAo
ImNvbS5hcHBsZS50cnVzdGQuYWdlbnQiX3MsIHN0ZDo6bnVsbG9wdCwgdHJ1c3RkQWdlbnRFeHRl
bnNpb25IYW5kbGUpOwotICAgIHBhcmFtZXRlcnMudHJ1c3RkQWdlbnRFeHRlbnNpb25IYW5kbGUg
PSBXVEZNb3ZlKHRydXN0ZEFnZW50RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBpZiAoYXV0byBoYW5k
bGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBw
bGUudHJ1c3RkLmFnZW50Il9zLCBzdGQ6Om51bGxvcHQpKQorICAgICAgICBwYXJhbWV0ZXJzLnRy
dXN0ZEFnZW50RXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqaGFuZGxlKTsKICNlbmRpZgogCiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKENGUFJFRlNfRElSRUNUX01PREUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5j
cHAKaW5kZXggYzYxYmIzZmQyZWUwNDZmMzgyNGM0MGFiOTkxODFjMGZjZWUyYTE5Ny4uY2ZiZTc2
MjhjMjhjOWY4ZjQyNTgzYWQ5NzE5NzY5NWUwNTY2NDU5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcApAQCAtMTA3LDggKzEw
NywxMSBAQCB2b2lkIERvd25sb2FkUHJveHk6OnB1Ymxpc2hQcm9ncmVzcyhjb25zdCBVUkwmIFVS
TCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGhhbmRs
ZTsKLSAgICBib29sIGNyZWF0ZWRTYW5kYm94RXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6
Y3JlYXRlSGFuZGxlKFVSTC5maWxlU3lzdGVtUGF0aCgpLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBl
OjpSZWFkV3JpdGUsIGhhbmRsZSk7Ci0gICAgQVNTRVJUX1VOVVNFRChjcmVhdGVkU2FuZGJveEV4
dGVuc2lvbiwgY3JlYXRlZFNhbmRib3hFeHRlbnNpb24pOworICAgIGlmIChhdXRvIGNyZWF0ZWRI
YW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUoVVJMLmZpbGVTeXN0ZW1QYXRo
KCksIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0ZSkpCisgICAgICAgIGhhbmRsZSA9
IFdURk1vdmUoKmNyZWF0ZWRIYW5kbGUpOworICAgIGVsc2UKKyAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisKICAgICBtX2RhdGFTdG9yZS0+bmV0d29ya1Byb2Nlc3MoKS5zZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrUHJvY2Vzczo6UHVibGlzaERvd25sb2FkUHJvZ3Jlc3MobV9kb3dubG9hZElE
LCBVUkwsIGhhbmRsZSksIDApOwogfQogI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQpAQCAtMTYz
LDggKzE2NiwxMCBAQCB2b2lkIERvd25sb2FkUHJveHk6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1
Z2dlc3RlZEZpbGVuYW1lKGNvbnN0IFdlYkNvcmU6OlJlc291cgogCiAgICAgbV9jbGllbnQtPmRl
Y2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKCp0aGlzLCByZXNwb25zZSwgUmVz
b3VyY2VSZXNwb25zZUJhc2U6OnNhbml0aXplU3VnZ2VzdGVkRmlsZW5hbWUoc3VnZ2VzdGVkRmls
ZW5hbWUpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoQWxsb3dPdmVyd3JpdGUgYWxs
b3dPdmVyd3JpdGUsIFN0cmluZyBkZXN0aW5hdGlvbikgbXV0YWJsZSB7CiAgICAgICAgIFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlOwotICAgICAgICBpZiAo
IWRlc3RpbmF0aW9uLmlzTnVsbCgpKQotICAgICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlSGFuZGxlKGRlc3RpbmF0aW9uLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUs
IHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOworICAgICAgICBpZiAoIWRlc3RpbmF0aW9uLmlzTnVs
bCgpKSB7CisgICAgICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGVIYW5kbGUoZGVzdGluYXRpb24sIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0
ZSkpCisgICAgICAgICAgICAgICAgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoKmhh
bmRsZSk7CisgICAgICAgIH0KIAogICAgICAgICBzZXREZXN0aW5hdGlvbkZpbGVuYW1lKGRlc3Rp
bmF0aW9uKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZGVzdGluYXRpb24sIFdURk1vdmUo
c2FuZGJveEV4dGVuc2lvbkhhbmRsZSksIGFsbG93T3ZlcndyaXRlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5jcHAKaW5kZXggMzEzNTQ5MmY1ZTU0
YmUwYmRiM2EyY2VmNGU0MWVhYWQ5M2VjN2ZmMi4uNWExMzNkOGI0MWFiYTA2ZGM4MTE4OWY2NWY4
YmNiZDYzYzAwNTczMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQ
VVByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVBy
b2Nlc3NQcm94eS5jcHAKQEAgLTE0Miw3ICsxNDIsOCBAQCBHUFVQcm9jZXNzUHJveHk6OkdQVVBy
b2Nlc3NQcm94eSgpCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhp
cyBhbmQgcmVsYXRlZCBwYXJhbWV0ZXIgd2hlbiA8cmRhcjovL3Byb2JsZW0vMjk0NDgzNjg+IGlz
IGZpeGVkLgogICAgIGlmIChNYWNBcHBsaWNhdGlvbjo6aXNTYWZhcmkoKSkgewotICAgICAgICBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JHZW5lcmljRXh0ZW5zaW9uKCJjb20uYXBw
bGUud2Via2l0Lm1pY3JvcGhvbmUiX3MsIHBhcmFtZXRlcnMubWljcm9waG9uZVNhbmRib3hFeHRl
bnNpb25IYW5kbGUpOworICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGVGb3JHZW5lcmljRXh0ZW5zaW9uKCJjb20uYXBwbGUud2Via2l0Lm1pY3Jv
cGhvbmUiX3MpKQorICAgICAgICAgICAgcGFyYW1ldGVycy5taWNyb3Bob25lU2FuZGJveEV4dGVu
c2lvbkhhbmRsZSA9IFdURk1vdmUoKmhhbmRsZSk7CiAgICAgICAgIG1faGFzU2VudE1pY3JvcGhv
bmVTYW5kYm94RXh0ZW5zaW9uID0gdHJ1ZTsKICAgICB9CiAjZW5kaWYKQEAgLTE1NCwxMSArMTU1
LDE1IEBAIEdQVVByb2Nlc3NQcm94eTo6R1BVUHJvY2Vzc1Byb3h5KCkKICAgICBhdXRvIGNvbnRh
aW5lckNhY2hlc0RpcmVjdG9yeSA9IHJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3RvcnlG
b3JTYW5kYm94RXh0ZW5zaW9uKGdwdVByb2Nlc3NDYWNoZXNEaXJlY3RvcnkoKSk7CiAgICAgYXV0
byBjb250YWluZXJUZW1wb3JhcnlEaXJlY3RvcnkgPSByZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRl
RGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihXZWJQcm9jZXNzUG9vbDo6Y29udGFpbmVyVGVt
cG9yYXJ5RGlyZWN0b3J5KCkpOwogCi0gICAgaWYgKCFjb250YWluZXJDYWNoZXNEaXJlY3Rvcnku
aXNFbXB0eSgpKQotICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0
UmVzb2x2aW5nUGF0aChjb250YWluZXJDYWNoZXNEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246
OlR5cGU6OlJlYWRXcml0ZSwgcGFyYW1ldGVycy5jb250YWluZXJDYWNoZXNEaXJlY3RvcnlFeHRl
bnNpb25IYW5kbGUpOworICAgIGlmICghY29udGFpbmVyQ2FjaGVzRGlyZWN0b3J5LmlzRW1wdHko
KSkgeworICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVI
YW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChjb250YWluZXJDYWNoZXNEaXJlY3RvcnksIFNhbmRi
b3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0ZSkpCisgICAgICAgICAgICBwYXJhbWV0ZXJzLmNv
bnRhaW5lckNhY2hlc0RpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoKmhhbmRsZSk7
CisgICAgfQogCi0gICAgaWYgKCFjb250YWluZXJUZW1wb3JhcnlEaXJlY3RvcnkuaXNFbXB0eSgp
KQotICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5n
UGF0aChjb250YWluZXJUZW1wb3JhcnlEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246OlR5cGU6
OlJlYWRXcml0ZSwgcGFyYW1ldGVycy5jb250YWluZXJUZW1wb3JhcnlEaXJlY3RvcnlFeHRlbnNp
b25IYW5kbGUpOworICAgIGlmICghY29udGFpbmVyVGVtcG9yYXJ5RGlyZWN0b3J5LmlzRW1wdHko
KSkgeworICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVI
YW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChjb250YWluZXJUZW1wb3JhcnlEaXJlY3RvcnksIFNh
bmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0ZSkpCisgICAgICAgICAgICBwYXJhbWV0ZXJz
LmNvbnRhaW5lclRlbXBvcmFyeURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoKmhh
bmRsZSk7CisgICAgfQogI2VuZGlmCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAo
V2ViQ29yZTo6ZGV2aWNlSGFzQUdYQ29tcGlsZXJTZXJ2aWNlKCkpIHsKQEAgLTE5OCw1NCArMjAz
LDU0IEBAIHZvaWQgR1BVUHJvY2Vzc1Byb3h5OjpzZXRPcmllbnRhdGlvbkZvck1lZGlhQ2FwdHVy
ZSh1aW50NjRfdCBvcmllbnRhdGlvbikKIAogc3RhdGljIGlubGluZSBib29sIGFkZENhbWVyYVNh
bmRib3hFeHRlbnNpb25zKFZlY3RvcjxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+JiBleHRlbnNp
b25zKQogewotICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFu
ZGxlOwotICAgIGlmICghU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yR2VuZXJpY0V4
dGVuc2lvbigiY29tLmFwcGxlLndlYmtpdC5jYW1lcmEiX3MsIHNhbmRib3hFeHRlbnNpb25IYW5k
bGUpKSB7CisgICAgYXV0byBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlID0gU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlSGFuZGxlRm9yR2VuZXJpY0V4dGVuc2lvbigiY29tLmFwcGxlLndlYmtpdC5jYW1l
cmEiX3MpOworICAgIGlmICghc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkgewogICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUihXZWJSVEMsICJVbmFibGUgdG8gY3JlYXRlIGNvbS5hcHBsZS53ZWJraXQu
Y2FtZXJhIHNhbmRib3ggZXh0ZW5zaW9uIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAjaWYgSEFWRShBVURJVF9UT0tFTikKICAgICAgICAgaWYgKHNob3VsZENyZWF0ZUFwcGxlQ2Ft
ZXJhU2VydmljZVNhbmRib3hFeHRlbnNpb24oKSkgewotICAgICAgICAgICAgU2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlIGFwcGxlQ2FtZXJhU2VydmljZVBhdGhTYW5kYm94RXh0ZW5zaW9uSGFuZGxl
OwotICAgICAgICAgICAgaWYgKCFTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNo
TG9va3VwKCJjb20uYXBwbGUuYXBwbGVjYW1lcmFkIl9zLCBzdGQ6Om51bGxvcHQsIGFwcGxlQ2Ft
ZXJhU2VydmljZVBhdGhTYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSkgeworICAgICAgICAgICAgaWYg
KGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1
cCgiY29tLmFwcGxlLmFwcGxlY2FtZXJhZCJfcywgc3RkOjpudWxsb3B0KSkKKyAgICAgICAgICAg
ICAgICBleHRlbnNpb25zLmFwcGVuZChXVEZNb3ZlKCpoYW5kbGUpKTsKKyAgICAgICAgICAgIGVs
c2UgewogICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFdlYlJUQywgIlVuYWJsZSB0
byBjcmVhdGUgY29tLmFwcGxlLmFwcGxlY2FtZXJhZCBzYW5kYm94IGV4dGVuc2lvbiIpOwogICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICNpZiBIQVZFKEFERElU
SU9OQUxfQVBQTEVfQ0FNRVJBX1NFUlZJQ0UpCi0gICAgICAgICAgICBTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGUgYWRkaXRpb25hbEFwcGxlQ2FtZXJhU2VydmljZVBhdGhTYW5kYm94RXh0ZW5zaW9u
SGFuZGxlOwotICAgICAgICAgICAgaWYgKCFTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVG
b3JNYWNoTG9va3VwKCJjb20uYXBwbGUuYXBwbGVoMTNjYW1lcmFkIl9zLCBzdGQ6Om51bGxvcHQs
IGFkZGl0aW9uYWxBcHBsZUNhbWVyYVNlcnZpY2VQYXRoU2FuZGJveEV4dGVuc2lvbkhhbmRsZSkp
IHsKKyAgICAgICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0
ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5hcHBsZWgxM2NhbWVyYWQiX3MsIHN0ZDo6
bnVsbG9wdCkpCisgICAgICAgICAgICAgICAgZXh0ZW5zaW9ucy5hcHBlbmQoV1RGTW92ZSgqaGFu
ZGxlKSk7CisgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19F
UlJPUihXZWJSVEMsICJVbmFibGUgdG8gY3JlYXRlIGNvbS5hcHBsZS5hcHBsZWgxM2NhbWVyYWQg
c2FuZGJveCBleHRlbnNpb24iKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBleHRlbnNpb25zLmFwcGVuZChXVEZNb3ZlKGFkZGl0aW9u
YWxBcHBsZUNhbWVyYVNlcnZpY2VQYXRoU2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOwogI2VuZGlm
Ci0gICAgICAgICAgICBleHRlbnNpb25zLmFwcGVuZChXVEZNb3ZlKGFwcGxlQ2FtZXJhU2Vydmlj
ZVBhdGhTYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSk7CiAgICAgICAgIH0KICNlbmRpZiAvLyBIQVZF
KEFVRElUX1RPS0VOKQogCi0gICAgZXh0ZW5zaW9ucy5hcHBlbmQoV1RGTW92ZShzYW5kYm94RXh0
ZW5zaW9uSGFuZGxlKSk7CisgICAgZXh0ZW5zaW9ucy5hcHBlbmQoV1RGTW92ZSgqc2FuZGJveEV4
dGVuc2lvbkhhbmRsZSkpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgaW5saW5lIGJv
b2wgYWRkTWljcm9waG9uZVNhbmRib3hFeHRlbnNpb24oVmVjdG9yPFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZT4mIGV4dGVuc2lvbnMpCiB7Ci0gICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNh
bmRib3hFeHRlbnNpb25IYW5kbGU7Ci0gICAgaWYgKCFTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVI
YW5kbGVGb3JHZW5lcmljRXh0ZW5zaW9uKCJjb20uYXBwbGUud2Via2l0Lm1pY3JvcGhvbmUiX3Ms
IHNhbmRib3hFeHRlbnNpb25IYW5kbGUpKSB7CisgICAgYXV0byBzYW5kYm94RXh0ZW5zaW9uSGFu
ZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yR2VuZXJpY0V4dGVuc2lvbigi
Y29tLmFwcGxlLndlYmtpdC5taWNyb3Bob25lIl9zKTsKKyAgICBpZiAoIXNhbmRib3hFeHRlbnNp
b25IYW5kbGUpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoV2ViUlRDLCAiVW5hYmxlIHRv
IGNyZWF0ZSBjb20uYXBwbGUud2Via2l0Lm1pY3JvcGhvbmUgc2FuZGJveCBleHRlbnNpb24iKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICBleHRlbnNpb25zLmFwcGVuZChXVEZN
b3ZlKHNhbmRib3hFeHRlbnNpb25IYW5kbGUpKTsKKyAgICBleHRlbnNpb25zLmFwcGVuZChXVEZN
b3ZlKCpzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKICNp
ZiBQTEFURk9STShJT1MpCiBzdGF0aWMgaW5saW5lIGJvb2wgYWRkVENDRFNhbmRib3hFeHRlbnNp
b24oVmVjdG9yPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4mIGV4dGVuc2lvbnMpCiB7Ci0gICAg
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGU7Ci0gICAgaWYg
KCFTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JHZW5lcmljRXh0ZW5zaW9uKCJjb20u
YXBwbGUudGNjZCJfcywgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpIHsKKyAgICBhdXRvIHNhbmRi
b3hFeHRlbnNpb25IYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JHZW5l
cmljRXh0ZW5zaW9uKCJjb20uYXBwbGUudGNjZCJfcywgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7
CisgICAgaWYgKCFzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSB7CiAgICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SKFdlYlJUQywgIlVuYWJsZSB0byBjcmVhdGUgY29tLmFwcGxlLnRjY2Qgc2FuZGJveCBl
eHRlbnNpb24iKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICBleHRlbnNpb25z
LmFwcGVuZChXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25IYW5kbGUpKTsKKyAgICBleHRlbnNpb25z
LmFwcGVuZChXVEZNb3ZlKCpzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSk7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAjZW5kaWYKQEAgLTQ1NSwxNCArNDYwLDE4IEBAIHN0YXRpYyBpbmxpbmUgR1BVUHJv
Y2Vzc1Nlc3Npb25QYXJhbWV0ZXJzIGdwdVByb2Nlc3NTZXNzaW9uUGFyYW1ldGVycyhjb25zdCBX
ZWJzCiAKICAgICBwYXJhbWV0ZXJzLm1lZGlhQ2FjaGVEaXJlY3RvcnkgPSBzdG9yZS5yZXNvbHZl
ZE1lZGlhQ2FjaGVEaXJlY3RvcnkoKTsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgbWVk
aWFDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKLSAgICBpZiAoIXBhcmFtZXRlcnMubWVk
aWFDYWNoZURpcmVjdG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKHBhcmFtZXRlcnMubWVkaWFDYWNoZURpcmVj
dG9yeSwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRlLCBwYXJhbWV0ZXJzLm1lZGlh
Q2FjaGVEaXJlY3RvcnlTYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBpZiAoIXBhcmFtZXRl
cnMubWVkaWFDYWNoZURpcmVjdG9yeS5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKGF1dG8gaGFu
ZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgo
cGFyYW1ldGVycy5tZWRpYUNhY2hlRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpS
ZWFkV3JpdGUpKQorICAgICAgICAgICAgcGFyYW1ldGVycy5tZWRpYUNhY2hlRGlyZWN0b3J5U2Fu
ZGJveEV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoKmhhbmRsZSk7CisgICAgfQogCiAjaWYgRU5B
QkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAgICAgcGFyYW1ldGVycy5tZWRpYUtleXNTdG9y
YWdlRGlyZWN0b3J5ID0gc3RvcmUucmVzb2x2ZWRNZWRpYUtleXNEaXJlY3RvcnkoKTsKICAgICBT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeVNhbmRib3hF
eHRlbnNpb25IYW5kbGU7Ci0gICAgaWYgKCFwYXJhbWV0ZXJzLm1lZGlhS2V5c1N0b3JhZ2VEaXJl
Y3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVX
aXRob3V0UmVzb2x2aW5nUGF0aChwYXJhbWV0ZXJzLm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnks
IFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0ZSwgcGFyYW1ldGVycy5tZWRpYUtleXNT
dG9yYWdlRGlyZWN0b3J5U2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7CisgICAgaWYgKCFwYXJhbWV0
ZXJzLm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChh
dXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZp
bmdQYXRoKHBhcmFtZXRlcnMubWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSwgU2FuZGJveEV4dGVu
c2lvbjo6VHlwZTo6UmVhZFdyaXRlKSkKKyAgICAgICAgICAgIHBhcmFtZXRlcnMubWVkaWFLZXlz
U3RvcmFnZURpcmVjdG9yeVNhbmRib3hFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKCpoYW5kbGUp
OworICAgIH0KICNlbmRpZgogCiAgICAgcmV0dXJuIHBhcmFtZXRlcnM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApp
bmRleCAyOWRiZDljMzJlNjY4ZDkyYjlkMzZhZGFkZjczZTBjNjgzNTFlMDM0Li5iZGE0NWVmMjll
MGNkNWYyMDhiZTUzZmE4ODU0OWY5NmQzNjkyZDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTE1MCwx
MyArMTUwLDIwIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2VuZENyZWF0aW9uUGFyYW1l
dGVyc1RvTmV3UHJvY2VzcygpCiAgICAgZm9yIChhdXRvJiBzY2hlbWUgOiBXZWJQcm9jZXNzUG9v
bDo6dXJsU2NoZW1lc1dpdGhDdXN0b21Qcm90b2NvbEhhbmRsZXJzKCkpCiAgICAgICAgIHBhcmFt
ZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHMuYXBwZW5kKHNjaGVt
ZSk7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBpZiAoU3RyaW5nIGNvb2tpZVN0b3Jh
Z2VEaXJlY3RvcnkgPSBXZWJQcm9jZXNzUG9vbDo6Y29va2llU3RvcmFnZURpcmVjdG9yeSgpOyAh
Y29va2llU3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIFNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShjb29raWVTdG9yYWdlRGlyZWN0
b3J5LCBwYXJhbWV0ZXJzLmNvb2tpZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwot
ICAgIGlmIChTdHJpbmcgY29udGFpbmVyQ2FjaGVzRGlyZWN0b3J5ID0gV2ViUHJvY2Vzc1Bvb2w6
Om5ldHdvcmtpbmdDYWNoZXNEaXJlY3RvcnkoKTsgIWNvbnRhaW5lckNhY2hlc0RpcmVjdG9yeS5p
c0VtcHR5KCkpCi0gICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRX
cml0ZURpcmVjdG9yeShjb250YWluZXJDYWNoZXNEaXJlY3RvcnksIHBhcmFtZXRlcnMuY29udGFp
bmVyQ2FjaGVzRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKLSAgICBpZiAoU3RyaW5nIHBhcmVu
dEJ1bmRsZURpcmVjdG9yeSA9IFdlYlByb2Nlc3NQb29sOjpwYXJlbnRCdW5kbGVEaXJlY3Rvcnko
KTsgIXBhcmVudEJ1bmRsZURpcmVjdG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIFNhbmRib3hFeHRl
bnNpb246OmNyZWF0ZUhhbmRsZShwYXJlbnRCdW5kbGVEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNp
b246OlR5cGU6OlJlYWRPbmx5LCBwYXJhbWV0ZXJzLnBhcmVudEJ1bmRsZURpcmVjdG9yeUV4dGVu
c2lvbkhhbmRsZSk7Ci0gICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yVGVtcG9y
YXJ5RmlsZShlbXB0eVN0cmluZygpLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUs
IHBhcmFtZXRlcnMudGVtcERpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CisgICAgaWYgKFN0cmlu
ZyBjb29raWVTdG9yYWdlRGlyZWN0b3J5ID0gV2ViUHJvY2Vzc1Bvb2w6OmNvb2tpZVN0b3JhZ2VE
aXJlY3RvcnkoKTsgIWNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKSB7CisgICAgICAg
IGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRX
cml0ZURpcmVjdG9yeShjb29raWVTdG9yYWdlRGlyZWN0b3J5KSkKKyAgICAgICAgICAgIHBhcmFt
ZXRlcnMuY29va2llU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoKmhh
bmRsZSk7CisgICAgfQorICAgIGlmIChTdHJpbmcgY29udGFpbmVyQ2FjaGVzRGlyZWN0b3J5ID0g
V2ViUHJvY2Vzc1Bvb2w6Om5ldHdvcmtpbmdDYWNoZXNEaXJlY3RvcnkoKTsgIWNvbnRhaW5lckNh
Y2hlc0RpcmVjdG9yeS5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKGF1dG8gaGFuZGxlID0gU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KGNvbnRhaW5l
ckNhY2hlc0RpcmVjdG9yeSkpCisgICAgICAgICAgICBwYXJhbWV0ZXJzLmNvbnRhaW5lckNhY2hl
c0RpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoKmhhbmRsZSk7CisgICAgfQorICAg
IGlmIChTdHJpbmcgcGFyZW50QnVuZGxlRGlyZWN0b3J5ID0gV2ViUHJvY2Vzc1Bvb2w6OnBhcmVu
dEJ1bmRsZURpcmVjdG9yeSgpOyAhcGFyZW50QnVuZGxlRGlyZWN0b3J5LmlzRW1wdHkoKSkgewor
ICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUo
cGFyZW50QnVuZGxlRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkT25seSkp
CisgICAgICAgICAgICBwYXJhbWV0ZXJzLnBhcmVudEJ1bmRsZURpcmVjdG9yeUV4dGVuc2lvbkhh
bmRsZSA9IFdURk1vdmUoKmhhbmRsZSk7CisgICAgfQorICAgIGlmIChhdXRvIGhhbmRsZUFuZEZp
bGVQYXRoID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yVGVtcG9yYXJ5RmlsZShl
bXB0eVN0cmluZygpLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUpKQorICAgICAg
ICBwYXJhbWV0ZXJzLnRlbXBEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKGhhbmRs
ZUFuZEZpbGVQYXRoLT5maXJzdCk7CiAjZW5kaWYKIAogI2lmICFQTEFURk9STShHVEspICYmICFQ
TEFURk9STShXUEUpIC8vIEdUSyBhbmQgV1BFIGRvbid0IHVzZSBkZWZhdWx0TmV0d29ya1Byb2Nl
c3MKQEAgLTEzMDEsOCArMTMwOCwxMCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJldHJp
ZXZlQ2FjaGVTdG9yYWdlUGFyYW1ldGVycyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSQogCiAgICAg
YXV0byYgY2FjaGVTdG9yYWdlRGlyZWN0b3J5ID0gc3RvcmUtPmNvbmZpZ3VyYXRpb24oKS5jYWNo
ZVN0b3JhZ2VEaXJlY3RvcnkoKTsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgY2FjaGVT
dG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwotICAgIGlmICghY2FjaGVTdG9yYWdlRGly
ZWN0b3J5LmlzRW1wdHkoKSkKLSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
Rm9yUmVhZFdyaXRlRGlyZWN0b3J5KGNhY2hlU3RvcmFnZURpcmVjdG9yeSwgY2FjaGVTdG9yYWdl
RGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBpZiAoIWNhY2hlU3RvcmFnZURpcmVjdG9y
eS5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KGNhY2hlU3RvcmFnZURpcmVjdG9y
eSkpCisgICAgICAgICAgICBjYWNoZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUgPSBX
VEZNb3ZlKCpoYW5kbGUpOworICAgIH0KIAogICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9j
ZXNzOjpTZXRDYWNoZVN0b3JhZ2VQYXJhbWV0ZXJzIHsgc2Vzc2lvbklELCBjYWNoZVN0b3JhZ2VE
aXJlY3RvcnksIGNhY2hlU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSB9LCAwKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUmVt
b3RlUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlTWFuYWdlci5jcHAK
aW5kZXggY2Y2ZmU0MjNkNzhiNzYyOWI3Zjk5ZDVjMWZiZWRiYzE1Y2FiY2IxZC4uYmMwYzcwOGE4
NjQ3YjNiNmViMDVjMDFhYzEyYTA3Y2Y4YzgyMDdmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlTWFu
YWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25S
ZW1vdGVSZWFsdGltZU1lZGlhU291cmNlTWFuYWdlci5jcHAKQEAgLTQ5LDkgKzQ5LDExIEBAIHZv
aWQgU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlTWFuYWdlcjo6YWRk
U291cmNlKFNwZWVjaFJlY29nbml0CiAgICAgICAgIG1fc291cmNlc05lZWRpbmdTYW5kYm94RXh0
ZW5zaW9uLmFkZChpZGVudGlmaWVyKTsKICAgICAgICAgaWYgKG1fc291cmNlc05lZWRpbmdTYW5k
Ym94RXh0ZW5zaW9uLnNpemUoKSA9PSAxKSB7CiAgICAgICAgICAgICBTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGUgaGFuZGxlRm9yVENDRDsKLSAgICAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS50Y2NkIl9zLCBtX2Nvbm5lY3Rpb24t
PmdldEF1ZGl0VG9rZW4oKSwgaGFuZGxlRm9yVENDRCk7CisgICAgICAgICAgICBpZiAoYXV0byBo
YW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20u
YXBwbGUudGNjZCJfcywgbV9jb25uZWN0aW9uLT5nZXRBdWRpdFRva2VuKCkpKQorICAgICAgICAg
ICAgICAgIGhhbmRsZUZvclRDQ0QgPSBXVEZNb3ZlKCpoYW5kbGUpOwogICAgICAgICAgICAgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlIGhhbmRsZUZvck1pY3JvcGhvbmU7Ci0gICAgICAgICAgICBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JHZW5lcmljRXh0ZW5zaW9uKCJjb20uYXBw
bGUud2Via2l0Lm1pY3JvcGhvbmUiX3MsIGhhbmRsZUZvck1pY3JvcGhvbmUpOworICAgICAgICAg
ICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yR2Vu
ZXJpY0V4dGVuc2lvbigiY29tLmFwcGxlLndlYmtpdC5taWNyb3Bob25lIl9zKSkKKyAgICAgICAg
ICAgICAgICBoYW5kbGVGb3JNaWNyb3Bob25lID0gV1RGTW92ZSgqaGFuZGxlKTsKICAgICAgICAg
ICAgIHNlbmQoTWVzc2FnZXM6OlNwZWVjaFJlY29nbml0aW9uUmVhbHRpbWVNZWRpYVNvdXJjZU1h
bmFnZXI6OkdyYW50U2FuZGJveEV4dGVuc2lvbnMoaGFuZGxlRm9yVENDRCwgaGFuZGxlRm9yTWlj
cm9waG9uZSkpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJv
eHkuY3BwCmluZGV4IGJmNjVkMzY0NjQyYjU2ZmY4ZTNmNGI3YmU5ZTI5MzRkOTQ0MDQ1NDEuLjkw
ZDhhZTY5ZDUyNjlmZTQ5NTI3MjBhYTc3NTJlZTQwM2MxOTU1MDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXJQcm94eS5jcHAKQEAgLTI5Miw3ICsyOTIsOCBAQCB2b2lkIFVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpmaW5pc2hHcmFudGluZ1JlcXVlc3QoVXNlck1l
ZGlhUGVybQogICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgaGFuZGxlOwogI2lmIFBM
QVRGT1JNKENPQ09BKQogICAgICAgICBpZiAoIW1faGFzQ3JlYXRlZFNhbmRib3hFeHRlbnNpb25G
b3JUQ0NEICYmIGRvZXNQYWdlTmVlZFRDQ0QobV9wYWdlKSkgewotICAgICAgICAgICAgU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLnRjY2QiX3Ms
IG1fcGFnZS5wcm9jZXNzKCkuY29ubmVjdGlvbigpLT5nZXRBdWRpdFRva2VuKCksIGhhbmRsZSk7
CisgICAgICAgICAgICBpZiAoYXV0byBjcmVhdGVkSGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6
Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLnRjY2QiX3MsIG1fcGFnZS5wcm9j
ZXNzKCkuY29ubmVjdGlvbigpLT5nZXRBdWRpdFRva2VuKCkpKQorICAgICAgICAgICAgICAgIGhh
bmRsZSA9IFdURk1vdmUoKmNyZWF0ZWRIYW5kbGUpOwogICAgICAgICAgICAgbV9oYXNDcmVhdGVk
U2FuZGJveEV4dGVuc2lvbkZvclRDQ0QgPSB0cnVlOwogICAgICAgICB9CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmNwcApp
bmRleCA5NDYwMmJjNDVjNTE5ZWQ5ZTIwYzdjNGIzNWVmZDcyYTJkNWVkYTAxLi5hODEwZjU1NjI2
Y2JjNjQxZGUwNGQxMDFhZDQ5NDk0Mjk3ZTE5N2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuY3BwCkBAIC0xMDAsMTggKzEwMCwz
MCBAQCBib29sIFVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyOjp3aWxsQ3JlYXRlTWVkaWFTdHJlYW0o
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYQogICAgICAgICAgICAgaGFuZGxlcy5hbGxvY2F0
ZShleHRlbnNpb25Db3VudCk7CiAgICAgICAgICAgICBpZHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eShleHRlbnNpb25Db3VudCk7CiAKLSAgICAgICAgICAgIGlmIChuZWVkc0F1ZGlvU2FuZGJveEV4
dGVuc2lvbiAmJiBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JHZW5lcmljRXh0ZW5z
aW9uKGF1ZGlvRXh0ZW5zaW9uUGF0aCwgaGFuZGxlc1stLWV4dGVuc2lvbkNvdW50XSkpCi0gICAg
ICAgICAgICAgICAgaWRzLnVuY2hlY2tlZEFwcGVuZChhdWRpb0V4dGVuc2lvblBhdGgpOworICAg
ICAgICAgICAgaWYgKG5lZWRzQXVkaW9TYW5kYm94RXh0ZW5zaW9uKSB7CisgICAgICAgICAgICAg
ICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yR2Vu
ZXJpY0V4dGVuc2lvbihhdWRpb0V4dGVuc2lvblBhdGgpKSB7CisgICAgICAgICAgICAgICAgICAg
IGhhbmRsZXNbLS1leHRlbnNpb25Db3VudF0gPSBXVEZNb3ZlKCpoYW5kbGUpOworICAgICAgICAg
ICAgICAgICAgICBpZHMudW5jaGVja2VkQXBwZW5kKGF1ZGlvRXh0ZW5zaW9uUGF0aCk7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAobmVlZHNWaWRl
b1NhbmRib3hFeHRlbnNpb24gJiYgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yR2Vu
ZXJpY0V4dGVuc2lvbih2aWRlb0V4dGVuc2lvblBhdGgsIGhhbmRsZXNbLS1leHRlbnNpb25Db3Vu
dF0pKQotICAgICAgICAgICAgICAgIGlkcy51bmNoZWNrZWRBcHBlbmQodmlkZW9FeHRlbnNpb25Q
YXRoKTsKKyAgICAgICAgICAgIGlmIChuZWVkc1ZpZGVvU2FuZGJveEV4dGVuc2lvbikgeworICAg
ICAgICAgICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhh
bmRsZUZvckdlbmVyaWNFeHRlbnNpb24odmlkZW9FeHRlbnNpb25QYXRoKSkgeworICAgICAgICAg
ICAgICAgICAgICBoYW5kbGVzWy0tZXh0ZW5zaW9uQ291bnRdID0gV1RGTW92ZSgqaGFuZGxlKTsK
KyAgICAgICAgICAgICAgICAgICAgaWRzLnVuY2hlY2tlZEFwcGVuZCh2aWRlb0V4dGVuc2lvblBh
dGgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYg
KG5lZWRzQXBwbGVDYW1lcmFTYW5kYm94RXh0ZW5zaW9uKSB7Ci0gICAgICAgICAgICAgICAgaWYg
KFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoYXBwbGVDYW1lcmFT
ZXJ2aWNlUGF0aCwgc3RkOjpudWxsb3B0LCBoYW5kbGVzWy0tZXh0ZW5zaW9uQ291bnRdKSkKKyAg
ICAgICAgICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVI
YW5kbGVGb3JNYWNoTG9va3VwKGFwcGxlQ2FtZXJhU2VydmljZVBhdGgsIHN0ZDo6bnVsbG9wdCkp
IHsKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlc1stLWV4dGVuc2lvbkNvdW50XSA9IFdURk1v
dmUoKmhhbmRsZSk7CiAgICAgICAgICAgICAgICAgICAgIGlkcy51bmNoZWNrZWRBcHBlbmQoYXBw
bGVDYW1lcmFTZXJ2aWNlUGF0aCk7CisgICAgICAgICAgICAgICAgfQogI2lmIEhBVkUoQURESVRJ
T05BTF9BUFBMRV9DQU1FUkFfU0VSVklDRSkKLSAgICAgICAgICAgICAgICBpZiAoU2FuZGJveEV4
dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cChhZGRpdGlvbmFsQXBwbGVDYW1lcmFT
ZXJ2aWNlUGF0aCwgc3RkOjpudWxsb3B0LCBoYW5kbGVzWy0tZXh0ZW5zaW9uQ291bnRdKSkKKyAg
ICAgICAgICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVI
YW5kbGVGb3JNYWNoTG9va3VwKGFkZGl0aW9uYWxBcHBsZUNhbWVyYVNlcnZpY2VQYXRoLCBzdGQ6
Om51bGxvcHQpKSB7CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZXNbLS1leHRlbnNpb25Db3Vu
dF0gPSBXVEZNb3ZlKCpoYW5kbGUpOwogICAgICAgICAgICAgICAgICAgICBpZHMudW5jaGVja2Vk
QXBwZW5kKGFkZGl0aW9uYWxBcHBsZUNhbWVyYVNlcnZpY2VQYXRoKTsKKyAgICAgICAgICAgICAg
ICB9CiAjZW5kaWYKICAgICAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKaW5kZXggOGQ0MWU0NTIzZjQ3ZjkyMTA1MjU5YzYzMDYwNTE1ZWY0ZmM5OGMz
My4uNzU0ZGUwZWI5NjU3YmQ4OWQzMTQ2NDA3ZjBhYTI3ZmM4OTQ2NTFiMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xMjY0LDExICsxMjY0LDE5IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjptYXliZUluaXRpYWxpemVTYW5kYm94RXh0ZW5zaW9uSGFuZGxlKFdl
YlByb2Nlc3NQcm94eSYgcHJvY2VzCiAgICAgICAgIGJvb2wgY3JlYXRlZEV4dGVuc2lvbiA9IGZh
bHNlOwogI2lmIEhBVkUoQVVESVRfVE9LRU4pCiAgICAgICAgIEFTU0VSVChwcm9jZXNzLmNvbm5l
Y3Rpb24oKSAmJiBwcm9jZXNzLmNvbm5lY3Rpb24oKS0+Z2V0QXVkaXRUb2tlbigpKTsKLSAgICAg
ICAgaWYgKHByb2Nlc3MuY29ubmVjdGlvbigpICYmIHByb2Nlc3MuY29ubmVjdGlvbigpLT5nZXRB
dWRpdFRva2VuKCkpCi0gICAgICAgICAgICBjcmVhdGVkRXh0ZW5zaW9uID0gU2FuZGJveEV4dGVu
c2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZEJ5QXVkaXRUb2tlbihyZXNvdXJjZURpcmVjdG9yeVVS
TC5maWxlU3lzdGVtUGF0aCgpLCAqKHByb2Nlc3MuY29ubmVjdGlvbigpLT5nZXRBdWRpdFRva2Vu
KCkpLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKLSAgICAgICAgZWxzZQorICAgICAgICBpZiAo
cHJvY2Vzcy5jb25uZWN0aW9uKCkgJiYgcHJvY2Vzcy5jb25uZWN0aW9uKCktPmdldEF1ZGl0VG9r
ZW4oKSkgeworICAgICAgICAgICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6
Y3JlYXRlSGFuZGxlRm9yUmVhZEJ5QXVkaXRUb2tlbihyZXNvdXJjZURpcmVjdG9yeVVSTC5maWxl
U3lzdGVtUGF0aCgpLCAqKHByb2Nlc3MuY29ubmVjdGlvbigpLT5nZXRBdWRpdFRva2VuKCkpKSkg
eworICAgICAgICAgICAgICAgIHNhbmRib3hFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKCpoYW5k
bGUpOworICAgICAgICAgICAgICAgIGNyZWF0ZWRFeHRlbnNpb24gPSB0cnVlOworICAgICAgICAg
ICAgfQorICAgICAgICB9IGVsc2UKICNlbmRpZgotICAgICAgICAgICAgY3JlYXRlZEV4dGVuc2lv
biA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShyZXNvdXJjZURpcmVjdG9yeVVSTC5m
aWxlU3lzdGVtUGF0aCgpLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkT25seSwgc2FuZGJv
eEV4dGVuc2lvbkhhbmRsZSk7CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChhdXRvIGhhbmRs
ZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShyZXNvdXJjZURpcmVjdG9yeVVSTC5m
aWxlU3lzdGVtUGF0aCgpLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkT25seSkpIHsKKyAg
ICAgICAgICAgICAgICBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqaGFuZGxlKTsK
KyAgICAgICAgICAgICAgICBjcmVhdGVkRXh0ZW5zaW9uID0gdHJ1ZTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQogCiAgICAgICAgIGlmIChjcmVhdGVkRXh0ZW5zaW9uKSB7CiAgICAgICAgICAg
ICBwcm9jZXNzLmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoKnRoaXMsIHJlc291cmNlRGlyZWN0
b3J5VVJMLnN0cmluZygpKTsKQEAgLTEyODUsMTEgKzEyOTMsMTkgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6Om1heWJlSW5pdGlhbGl6ZVNhbmRib3hFeHRlbnNpb25IYW5kbGUoV2ViUHJvY2Vzc1Byb3h5
JiBwcm9jZXMKICAgICBib29sIGNyZWF0ZWRFeHRlbnNpb24gPSBmYWxzZTsKICNpZiBIQVZFKEFV
RElUX1RPS0VOKQogICAgIEFTU0VSVChwcm9jZXNzLmNvbm5lY3Rpb24oKSAmJiBwcm9jZXNzLmNv
bm5lY3Rpb24oKS0+Z2V0QXVkaXRUb2tlbigpKTsKLSAgICBpZiAocHJvY2Vzcy5jb25uZWN0aW9u
KCkgJiYgcHJvY2Vzcy5jb25uZWN0aW9uKCktPmdldEF1ZGl0VG9rZW4oKSkKLSAgICAgICAgY3Jl
YXRlZEV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRCeUF1
ZGl0VG9rZW4oIi8iLCAqKHByb2Nlc3MuY29ubmVjdGlvbigpLT5nZXRBdWRpdFRva2VuKCkpLCBz
YW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKLSAgICBlbHNlCisgICAgaWYgKHByb2Nlc3MuY29ubmVj
dGlvbigpICYmIHByb2Nlc3MuY29ubmVjdGlvbigpLT5nZXRBdWRpdFRva2VuKCkpIHsKKyAgICAg
ICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVh
ZEJ5QXVkaXRUb2tlbigiLyIsICoocHJvY2Vzcy5jb25uZWN0aW9uKCktPmdldEF1ZGl0VG9rZW4o
KSkpKSB7CisgICAgICAgICAgICBjcmVhdGVkRXh0ZW5zaW9uID0gdHJ1ZTsKKyAgICAgICAgICAg
IHNhbmRib3hFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKCpoYW5kbGUpOworICAgICAgICB9Cisg
ICAgfSBlbHNlCiAjZW5kaWYKLSAgICAgICAgY3JlYXRlZEV4dGVuc2lvbiA9IFNhbmRib3hFeHRl
bnNpb246OmNyZWF0ZUhhbmRsZSgiLyIsIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRPbmx5
LCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICB7CisgICAgICAgIGlmIChhdXRvIGhhbmRs
ZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZSgiLyIsIFNhbmRib3hFeHRlbnNpb246
OlR5cGU6OlJlYWRPbmx5KSkgeworICAgICAgICAgICAgY3JlYXRlZEV4dGVuc2lvbiA9IHRydWU7
CisgICAgICAgICAgICBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqaGFuZGxlKTsK
KyAgICAgICAgfQorICAgIH0KIAogICAgIGlmIChjcmVhdGVkRXh0ZW5zaW9uKSB7CiAgICAgICAg
IHdpbGxBY3F1aXJlVW5pdmVyc2FsRmlsZVJlYWRTYW5kYm94RXh0ZW5zaW9uKHByb2Nlc3MpOwpA
QCAtMTMwNywxMSArMTMyMywxOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bWF5YmVJbml0aWFsaXpl
U2FuZGJveEV4dGVuc2lvbkhhbmRsZShXZWJQcm9jZXNzUHJveHkmIHByb2NlcwogICAgIGlmIChi
YXNlUGF0aC5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogI2lmIEhBVkUoQVVESVRfVE9LRU4p
Ci0gICAgaWYgKHByb2Nlc3MuY29ubmVjdGlvbigpICYmIHByb2Nlc3MuY29ubmVjdGlvbigpLT5n
ZXRBdWRpdFRva2VuKCkpCi0gICAgICAgIGNyZWF0ZWRFeHRlbnNpb24gPSBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkQnlBdWRpdFRva2VuKGJhc2VQYXRoLCAqKHByb2Nlc3Mu
Y29ubmVjdGlvbigpLT5nZXRBdWRpdFRva2VuKCkpLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsK
LSAgICBlbHNlCisgICAgaWYgKHByb2Nlc3MuY29ubmVjdGlvbigpICYmIHByb2Nlc3MuY29ubmVj
dGlvbigpLT5nZXRBdWRpdFRva2VuKCkpIHsKKyAgICAgICAgaWYgKGF1dG8gaGFuZGxlID0gU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZEJ5QXVkaXRUb2tlbihiYXNlUGF0aCwg
Kihwcm9jZXNzLmNvbm5lY3Rpb24oKS0+Z2V0QXVkaXRUb2tlbigpKSkpIHsKKyAgICAgICAgICAg
IHNhbmRib3hFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKCpoYW5kbGUpOworICAgICAgICAgICAg
Y3JlYXRlZEV4dGVuc2lvbiA9IHRydWU7CisgICAgICAgIH0KKyAgICB9IGVsc2UKICNlbmRpZgot
ICAgICAgICBjcmVhdGVkRXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
KGJhc2VQYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkT25seSwgc2FuZGJveEV4dGVu
c2lvbkhhbmRsZSk7CisgICAgeworICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0
ZW5zaW9uOjpjcmVhdGVIYW5kbGUoYmFzZVBhdGgsIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJl
YWRPbmx5KSkgeworICAgICAgICAgICAgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUo
KmhhbmRsZSk7CisgICAgICAgICAgICBjcmVhdGVkRXh0ZW5zaW9uID0gdHJ1ZTsKKyAgICAgICAg
fQorICAgIH0KIAogICAgIGlmIChjcmVhdGVkRXh0ZW5zaW9uKQogICAgICAgICBwcm9jZXNzLmFz
c3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoKnRoaXMsIGJhc2VVUkwuc3RyaW5nKCkpOwpAQCAtNzAw
MCw5ICs3MDI0LDExIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5Q
YW5lbFdpdGhEaXNwbGF5U3RyaW5nQW5kSWNvbihjb25zdCBWZWN0CiAKICAgICBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGUgZnJvbnRib2FyZFNlcnZpY2VzU2FuZGJveEV4dGVuc2lvbiwgaWNvblNl
cnZpY2VzU2FuZGJveEV4dGVuc2lvbjsKICNpZiBIQVZFKEZST05UQk9BUkRfU1lTVEVNX0FQUF9T
RVJWSUNFUykKLSAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3Vw
KCJjb20uYXBwbGUuZnJvbnRib2FyZC5zeXN0ZW1hcHBzZXJ2aWNlcyJfcywgc3RkOjpudWxsb3B0
LCBmcm9udGJvYXJkU2VydmljZXNTYW5kYm94RXh0ZW5zaW9uKTsKKyAgICBpZiAoYXV0byBoYW5k
bGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBw
bGUuZnJvbnRib2FyZC5zeXN0ZW1hcHBzZXJ2aWNlcyJfcywgc3RkOjpudWxsb3B0KSkKKyAgICAg
ICAgZnJvbnRib2FyZFNlcnZpY2VzU2FuZGJveEV4dGVuc2lvbiA9IFdURk1vdmUoKmhhbmRsZSk7
CiAjZW5kaWYKLSAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3Vw
KCJjb20uYXBwbGUuaWNvbnNlcnZpY2VzIl9zLCBzdGQ6Om51bGxvcHQsIGljb25TZXJ2aWNlc1Nh
bmRib3hFeHRlbnNpb24pOworICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246
OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5pY29uc2VydmljZXMiX3MsIHN0
ZDo6bnVsbG9wdCkpCisgICAgICAgIGljb25TZXJ2aWNlc1NhbmRib3hFeHRlbnNpb24gPSBXVEZN
b3ZlKCpoYW5kbGUpOwogCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ2hvb3NlRmls
ZXNGb3JPcGVuUGFuZWxXaXRoRGlzcGxheVN0cmluZ0FuZEljb24oZmlsZVVSTHMsIGRpc3BsYXlT
dHJpbmcsIGljb25EYXRhID8gaWNvbkRhdGEtPmRhdGFSZWZlcmVuY2UoKSA6IElQQzo6RGF0YVJl
ZmVyZW5jZSgpLCBmcm9udGJvYXJkU2VydmljZXNTYW5kYm94RXh0ZW5zaW9uLCBpY29uU2Vydmlj
ZXNTYW5kYm94RXh0ZW5zaW9uKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcAppbmRleCAyZWFiNmJjYjg5YjhiNzlhN2RjZjNjZGNkNDljMDZkNWFjZDIxMmIz
Li41YmI2Yzk4YmQ0Nzc3YTZlM2MxNzIwZDA0MDk2OWQ4MzIyMDY5Mjc4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC02NzAsMjAgKzY3MCwyNiBAQCBX
ZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJQcm9jZXNzUG9vbDo6d2ViUHJvY2Vzc0Rh
dGFTdG9yZVBhcmFtZXRlcnMoV2ViUAogCiAgICAgU3RyaW5nIGFwcGxpY2F0aW9uQ2FjaGVEaXJl
Y3RvcnkgPSB3ZWJzaXRlRGF0YVN0b3JlLnJlc29sdmVkQXBwbGljYXRpb25DYWNoZURpcmVjdG9y
eSgpOwogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0
b3J5RXh0ZW5zaW9uSGFuZGxlOwotICAgIGlmICghYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeS5p
c0VtcHR5KCkpCi0gICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRS
ZXNvbHZpbmdQYXRoKGFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246
OlR5cGU6OlJlYWRXcml0ZSwgYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRs
ZSk7CisgICAgaWYgKCFhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSkgeworICAg
ICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRo
b3V0UmVzb2x2aW5nUGF0aChhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5z
aW9uOjpUeXBlOjpSZWFkV3JpdGUpKQorICAgICAgICAgICAgYXBwbGljYXRpb25DYWNoZURpcmVj
dG9yeUV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoKmhhbmRsZSk7CisgICAgfQogCiAgICAgU3Ry
aW5nIGFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUgPSB3ZWJzaXRlRGF0
YVN0b3JlLmFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUoKTsKIAogICAg
IFN0cmluZyBtZWRpYUNhY2hlRGlyZWN0b3J5ID0gd2Vic2l0ZURhdGFTdG9yZS5yZXNvbHZlZE1l
ZGlhQ2FjaGVEaXJlY3RvcnkoKTsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgbWVkaWFD
YWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKLSAgICBpZiAoIW1lZGlhQ2FjaGVEaXJlY3Rv
cnkuaXNFbXB0eSgpKQotICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRo
b3V0UmVzb2x2aW5nUGF0aChtZWRpYUNhY2hlRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpU
eXBlOjpSZWFkV3JpdGUsIG1lZGlhQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOworICAg
IGlmICghbWVkaWFDYWNoZURpcmVjdG9yeS5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKGF1dG8g
aGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1Bh
dGgobWVkaWFDYWNoZURpcmVjdG9yeSwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRl
KSkKKyAgICAgICAgICAgIG1lZGlhQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUgPSBXVEZN
b3ZlKCpoYW5kbGUpOworICAgIH0KIAogICAgIFN0cmluZyBtZWRpYUtleVN0b3JhZ2VEaXJlY3Rv
cnkgPSB3ZWJzaXRlRGF0YVN0b3JlLnJlc29sdmVkTWVkaWFLZXlzRGlyZWN0b3J5KCk7CiAgICAg
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIG1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeUV4dGVuc2lv
bkhhbmRsZTsKLSAgICBpZiAoIW1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpCi0g
ICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRo
KG1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeSwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdy
aXRlLCBtZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOworICAgIGlmICgh
bWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5LmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoYXV0byBo
YW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0
aChtZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRX
cml0ZSkpCisgICAgICAgICAgICBtZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5k
bGUgPSBXVEZNb3ZlKCpoYW5kbGUpOworICAgIH0KIAogICAgIFN0cmluZyBqYXZhU2NyaXB0Q29u
ZmlndXJhdGlvbkRpcmVjdG9yeTsKICAgICBpZiAoIW1famF2YVNjcmlwdENvbmZpZ3VyYXRpb25E
aXJlY3RvcnkuaXNFbXB0eSgpKQpAQCAtNjkyLDE0ICs2OTgsMTggQEAgV2ViUHJvY2Vzc0RhdGFT
dG9yZVBhcmFtZXRlcnMgV2ViUHJvY2Vzc1Bvb2w6OndlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0
ZXJzKFdlYlAKICAgICAgICAgamF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkgPSB3ZWJz
aXRlRGF0YVN0b3JlLnJlc29sdmVkSmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKTsK
IAogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBqYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRp
cmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKLSAgICBpZiAoIWphdmFTY3JpcHRDb25maWd1cmF0aW9u
RGlyZWN0b3J5LmlzRW1wdHkoKSkKLSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFu
ZGxlV2l0aG91dFJlc29sdmluZ1BhdGgoamF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3Rvcnks
IFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0ZSwgamF2YVNjcmlwdENvbmZpZ3VyYXRp
b25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOworICAgIGlmICghamF2YVNjcmlwdENvbmZpZ3Vy
YXRpb25EaXJlY3RvcnkuaXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKGphdmFTY3Jp
cHRDb25maWd1cmF0aW9uRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3Jp
dGUpKQorICAgICAgICAgICAgamF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnlFeHRlbnNp
b25IYW5kbGUgPSBXVEZNb3ZlKCpoYW5kbGUpOworICAgIH0KIAogI2lmIEhBVkUoQVJLSVRfSU5M
SU5FX1BSRVZJRVcpCiAgICAgYXV0byBtb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSA9IHdlYnNp
dGVEYXRhU3RvcmUucmVzb2x2ZWRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSgpOwogICAgIFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZSBtb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeUV4dGVuc2lv
bkhhbmRsZTsKLSAgICBpZiAoIW1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSkK
LSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1Bh
dGgobW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJl
YWRXcml0ZSwgbW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOworICAg
IGlmICghbW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkuaXNFbXB0eSgpKSB7CisgICAgICAgIGlm
IChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNv
bHZpbmdQYXRoKG1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpU
eXBlOjpSZWFkV3JpdGUpKQorICAgICAgICAgICAgbW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnlF
eHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKCpoYW5kbGUpOworICAgIH0KICNlbmRpZgogCiAgICAg
cmV0dXJuIFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzIHsKQEAgLTczOSwxMiArNzQ5LDE2
IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmluaXRpYWxpemVOZXdXZWJQcm9jZXNzKFdlYlByb2Nl
c3NQcm94eSYgcHJvY2VzcywgV2Vic2l0ZURhCiAgICAgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycyBwYXJhbWV0ZXJzOwogCiAgICAgcGFyYW1ldGVycy5pbmplY3RlZEJ1bmRsZVBhdGggPSBt
X3Jlc29sdmVkUGF0aHMuaW5qZWN0ZWRCdW5kbGVQYXRoOwotICAgIGlmICghcGFyYW1ldGVycy5p
bmplY3RlZEJ1bmRsZVBhdGguaXNFbXB0eSgpKQotICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChwYXJhbWV0ZXJzLmluamVjdGVkQnVuZGxl
UGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHksIHBhcmFtZXRlcnMuaW5qZWN0
ZWRCdW5kbGVQYXRoRXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBpZiAoIXBhcmFtZXRlcnMuaW5qZWN0
ZWRCdW5kbGVQYXRoLmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChwYXJhbWV0ZXJz
LmluamVjdGVkQnVuZGxlUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHkpKQor
ICAgICAgICAgICAgcGFyYW1ldGVycy5pbmplY3RlZEJ1bmRsZVBhdGhFeHRlbnNpb25IYW5kbGUg
PSBXVEZNb3ZlKCpoYW5kbGUpOworICAgIH0KIAogICAgIHBhcmFtZXRlcnMuYWRkaXRpb25hbFNh
bmRib3hFeHRlbnNpb25IYW5kbGVzLmFsbG9jYXRlKG1fcmVzb2x2ZWRQYXRocy5hZGRpdGlvbmFs
V2ViUHJvY2Vzc1NhbmRib3hFeHRlbnNpb25QYXRocy5zaXplKCkpOwotICAgIGZvciAoc2l6ZV90
IGkgPSAwLCBzaXplID0gbV9yZXNvbHZlZFBhdGhzLmFkZGl0aW9uYWxXZWJQcm9jZXNzU2FuZGJv
eEV4dGVuc2lvblBhdGhzLnNpemUoKTsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgU2FuZGJveEV4
dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgobV9yZXNvbHZlZFBhdGhz
LmFkZGl0aW9uYWxXZWJQcm9jZXNzU2FuZGJveEV4dGVuc2lvblBhdGhzW2ldLCBTYW5kYm94RXh0
ZW5zaW9uOjpUeXBlOjpSZWFkT25seSwgcGFyYW1ldGVycy5hZGRpdGlvbmFsU2FuZGJveEV4dGVu
c2lvbkhhbmRsZXNbaV0pOworICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gbV9yZXNvbHZl
ZFBhdGhzLmFkZGl0aW9uYWxXZWJQcm9jZXNzU2FuZGJveEV4dGVuc2lvblBhdGhzLnNpemUoKTsg
aSA8IHNpemU7ICsraSkgeworICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSAgU2FuZGJveEV4dGVu
c2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgobV9yZXNvbHZlZFBhdGhzLmFk
ZGl0aW9uYWxXZWJQcm9jZXNzU2FuZGJveEV4dGVuc2lvblBhdGhzW2ldLCBTYW5kYm94RXh0ZW5z
aW9uOjpUeXBlOjpSZWFkT25seSkpCisgICAgICAgICAgICBwYXJhbWV0ZXJzLmFkZGl0aW9uYWxT
YW5kYm94RXh0ZW5zaW9uSGFuZGxlc1tpXSA9IFdURk1vdmUoKmhhbmRsZSk7CisgICAgfQogCiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBzZXRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkZp
bGVFbmFibGVkRnJvbURlZmF1bHRzKCk7CkBAIC04OTcsNyArOTExLDEwIEBAIHZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OnByb2Nlc3NEaWRGaW5pc2hMYXVuY2hpbmcoV2ViUHJvY2Vzc1Byb3h5JiBwcm9j
ZXNzKQogICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FtcGxlTG9nU2FuZGJveEhh
bmRsZTsgICAgICAgIAogICAgICAgICBXYWxsVGltZSBub3cgPSBXYWxsVGltZTo6bm93KCk7CiAg
ICAgICAgIGF1dG8gc2FtcGxlTG9nRmlsZVBhdGggPSBtYWtlU3RyaW5nKCJXZWJQcm9jZXNzIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihub3cuc2Vjb25kc1NpbmNlRXBvY2goKS5z
ZWNvbmRzKCkpLCAicGlkIiwgcHJvY2Vzcy5wcm9jZXNzSWRlbnRpZmllcigpKTsKLSAgICAgICAg
c2FtcGxlTG9nRmlsZVBhdGggPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JUZW1w
b3JhcnlGaWxlKHNhbXBsZUxvZ0ZpbGVQYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFk
V3JpdGUsIHNhbXBsZUxvZ1NhbmRib3hIYW5kbGUpOworICAgICAgICBpZiAoYXV0byBoYW5kbGVB
bmRGaWxlUGF0aCA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclRlbXBvcmFyeUZp
bGUoc2FtcGxlTG9nRmlsZVBhdGgsIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0ZSkp
IHsKKyAgICAgICAgICAgIHNhbXBsZUxvZ1NhbmRib3hIYW5kbGUgPSBXVEZNb3ZlKGhhbmRsZUFu
ZEZpbGVQYXRoLT5maXJzdCk7CisgICAgICAgICAgICBzYW1wbGVMb2dGaWxlUGF0aCA9IFdURk1v
dmUoaGFuZGxlQW5kRmlsZVBhdGgtPnNlY29uZCk7CisgICAgICAgIH0KICAgICAgICAgCiAgICAg
ICAgIHByb2Nlc3Muc2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6U3RhcnRNZW1vcnlTYW1wbGVy
KHNhbXBsZUxvZ1NhbmRib3hIYW5kbGUsIHNhbXBsZUxvZ0ZpbGVQYXRoLCBtX21lbW9yeVNhbXBs
ZXJJbnRlcnZhbCksIDApOwogICAgIH0KQEAgLTExNTYsOCArMTE3MywxMCBAQCBEb3dubG9hZFBy
b3h5JiBXZWJQcm9jZXNzUG9vbDo6cmVzdW1lRG93bmxvYWQoV2Vic2l0ZURhdGFTdG9yZSYgZGF0
YVN0b3JlLCBXZWJQYQogICAgIGF1dG8mIGRvd25sb2FkUHJveHkgPSBjcmVhdGVEb3dubG9hZFBy
b3h5KGRhdGFTdG9yZSwgUmVzb3VyY2VSZXF1ZXN0KCksIGluaXRpYXRpbmdQYWdlLCB7IH0pOwog
CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGU7Ci0g
ICAgaWYgKCFwYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRl
SGFuZGxlKHBhdGgsIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0ZSwgc2FuZGJveEV4
dGVuc2lvbkhhbmRsZSk7CisgICAgaWYgKCFwYXRoLmlzRW1wdHkoKSkgeworICAgICAgICBpZiAo
YXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUocGF0aCwgU2FuZGJv
eEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRlKSkKKyAgICAgICAgICAgIHNhbmRib3hFeHRlbnNp
b25IYW5kbGUgPSBXVEZNb3ZlKCpoYW5kbGUpOworICAgIH0KIAogICAgIGRhdGFTdG9yZS5uZXR3
b3JrUHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpSZXN1bWVEb3dubG9h
ZChkYXRhU3RvcmUuc2Vzc2lvbklEKCksIGRvd25sb2FkUHJveHkuZG93bmxvYWRJRCgpLCByZXN1
bWVEYXRhLmRhdGFSZWZlcmVuY2UoKSwgcGF0aCwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgY2Fs
bERvd25sb2FkRGlkU3RhcnQpLCAwKTsKICAgICByZXR1cm4gZG93bmxvYWRQcm94eTsKQEAgLTE0
NDMsNyArMTQ2MiwxMCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzdGFydE1lbW9yeVNhbXBsZXIo
Y29uc3QgZG91YmxlIGludGVydmFsKQogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW1w
bGVMb2dTYW5kYm94SGFuZGxlOyAgICAKICAgICBXYWxsVGltZSBub3cgPSBXYWxsVGltZTo6bm93
KCk7CiAgICAgYXV0byBzYW1wbGVMb2dGaWxlUGF0aCA9IG1ha2VTdHJpbmcoIldlYlByb2Nlc3Mi
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KG5vdy5zZWNvbmRzU2luY2VFcG9jaCgp
LnNlY29uZHMoKSkpOwotICAgIHNhbXBsZUxvZ0ZpbGVQYXRoID0gU2FuZGJveEV4dGVuc2lvbjo6
Y3JlYXRlSGFuZGxlRm9yVGVtcG9yYXJ5RmlsZShzYW1wbGVMb2dGaWxlUGF0aCwgU2FuZGJveEV4
dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRlLCBzYW1wbGVMb2dTYW5kYm94SGFuZGxlKTsKKyAgICBp
ZiAoYXV0byBoYW5kbGVBbmRGaWxlUGF0aCA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRs
ZUZvclRlbXBvcmFyeUZpbGUoc2FtcGxlTG9nRmlsZVBhdGgsIFNhbmRib3hFeHRlbnNpb246OlR5
cGU6OlJlYWRXcml0ZSkpIHsKKyAgICAgICAgc2FtcGxlTG9nU2FuZGJveEhhbmRsZSA9IFdURk1v
dmUoaGFuZGxlQW5kRmlsZVBhdGgtPmZpcnN0KTsKKyAgICAgICAgc2FtcGxlTG9nRmlsZVBhdGgg
PSBXVEZNb3ZlKGhhbmRsZUFuZEZpbGVQYXRoLT5zZWNvbmQpOworICAgIH0KICAgICAKICAgICBz
ZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlN0YXJ0TWVtb3J5U2FtcGxl
cihzYW1wbGVMb2dTYW5kYm94SGFuZGxlLCBzYW1wbGVMb2dGaWxlUGF0aCwgaW50ZXJ2YWwpKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29h
L1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQppbmRleCAyODE0ODRhYWY5YTE5
NmYwZWZhZTg3MmQ5MGM2MDhiNzg0YTNhZTc4Li4xZDBlNDUyMTVmZWYxYjY5YWU3MDZhN2QxY2Jj
OGY4YjI2NTg2NzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCkBAIC0x
NTAsOCArMTUwLDExIEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cGxhdGZvcm1TZXROZXR3b3Jr
UGFyYW1ldGVycyhXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYKICAgICBib29sIGh0dHAzRW5h
YmxlZCA9IFdlYnNpdGVEYXRhU3RvcmU6Omh0dHAzRW5hYmxlZCgpOwogICAgIFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZSBhbHRlcm5hdGl2ZVNlcnZpY2VTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9u
SGFuZGxlOwogICAgIFN0cmluZyBhbHRlcm5hdGl2ZVNlcnZpY2VTdG9yYWdlRGlyZWN0b3J5ID0g
cmVzb2x2ZWRBbHRlcm5hdGl2ZVNlcnZpY2VzU3RvcmFnZURpcmVjdG9yeSgpOwotICAgIGlmICgh
YWx0ZXJuYXRpdmVTZXJ2aWNlU3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShhbHRlcm5h
dGl2ZVNlcnZpY2VTdG9yYWdlRGlyZWN0b3J5LCBhbHRlcm5hdGl2ZVNlcnZpY2VTdG9yYWdlRGly
ZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBpZiAoIWFsdGVybmF0aXZlU2VydmljZVN0b3Jh
Z2VEaXJlY3RvcnkuaXNFbXB0eSgpKSB7CisgICAgICAgIC8vIEZJWE1FOiBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkgcmVzb2x2ZXMgdGhlIGRpcmVj
dG9yeSwgYnV0IHRoYXQgaGFzIGFscmVhZHkgYmVlbiBkb25lLiBSZW1vdmUgdGhpcyBkdXBsaWNh
dGUgd29yay4KKyAgICAgICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KGFsdGVybmF0aXZlU2VydmljZVN0b3JhZ2VE
aXJlY3RvcnkpKQorICAgICAgICAgICAgYWx0ZXJuYXRpdmVTZXJ2aWNlU3RvcmFnZURpcmVjdG9y
eUV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoKmhhbmRsZSk7CisgICAgfQogI2VuZGlmCiAKICAg
ICBib29sIHNob3VsZEluY2x1ZGVMb2NhbGhvc3RJblJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBp
c1NhZmFyaTsKQEAgLTE4NSw4ICsxODgsMTAgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpwbGF0
Zm9ybVNldE5ldHdvcmtQYXJhbWV0ZXJzKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJgogCiAg
ICAgcGFyYW1ldGVycy51aVByb2Nlc3NDb29raWVTdG9yYWdlSWRlbnRpZmllciA9IG1fdWlQcm9j
ZXNzQ29va2llU3RvcmFnZUlkZW50aWZpZXI7CiAKLSAgICBpZiAoIWNvb2tpZUZpbGUuaXNFbXB0
eSgpKQotICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVE
aXJlY3RvcnkoRmlsZVN5c3RlbTo6cGFyZW50UGF0aChjb29raWVGaWxlKSwgcGFyYW1ldGVycy5j
b29raWVTdG9yYWdlUGF0aEV4dGVuc2lvbkhhbmRsZSk7CisgICAgaWYgKCFjb29raWVGaWxlLmlz
RW1wdHkoKSkgeworICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkoRmlsZVN5c3RlbTo6cGFyZW50UGF0aChj
b29raWVGaWxlKSkpCisgICAgICAgICAgICBwYXJhbWV0ZXJzLmNvb2tpZVN0b3JhZ2VQYXRoRXh0
ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqaGFuZGxlKTsKKyAgICB9CiB9CiAKICNpZiBIQVZFKENG
TkVUV09SS19BTFRFUk5BVElWRV9TRVJWSUNFKSB8fCBIQVZFKE5FVFdPUktfTE9BREVSKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlLmNwcAppbmRleCAwYTBmMjMyMDc0NDMyODllOGRkZjBmNDFkMTMzMzYyMDA2MjM0Zjkz
Li45NmQyODc5Y2VmNjJlMjQ3ODRiZGRiZTdiYmQ3Nzc3NWMxMjlhOTllIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
LmNwcApAQCAtMTkzMiwxOCArMTkzMiwyNiBAQCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBX
ZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0ZXJzKCkKIAogICAgIGF1dG8gcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RpcmVjdG9yeSA9IG1fY29uZmlndXJhdGlvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RpcmVjdG9yeSgpOwogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGlyZWN0b3J5SGFuZGxlOwotICAgIGlmICghcmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RpcmVjdG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhh
bmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5
LCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5SGFuZGxlKTsKKyAgICBpZiAoIXJlc291
cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkuaXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChhdXRv
IGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVj
dG9yeShyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KSkKKyAgICAgICAgICAgIHJlc291
cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnlIYW5kbGUgPSBXVEZNb3ZlKCpoYW5kbGUpOworICAg
IH0KIAogICAgIGF1dG8gbmV0d29ya0NhY2hlRGlyZWN0b3J5ID0gcmVzb2x2ZWROZXR3b3JrQ2Fj
aGVEaXJlY3RvcnkoKTsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgbmV0d29ya0NhY2hl
RGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwotICAgIGlmICghbmV0d29ya0NhY2hlRGlyZWN0b3J5
LmlzRW1wdHkoKSkKLSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVh
ZFdyaXRlRGlyZWN0b3J5KG5ldHdvcmtDYWNoZURpcmVjdG9yeSwgbmV0d29ya0NhY2hlRGlyZWN0
b3J5RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBpZiAoIW5ldHdvcmtDYWNoZURpcmVjdG9yeS5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgLy8gRklYTUU6IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRs
ZUZvclJlYWRXcml0ZURpcmVjdG9yeSByZXNvbHZlcyB0aGUgZGlyZWN0b3J5LCBidXQgdGhhdCBo
YXMgYWxyZWFkeSBiZWVuIGRvbmUuIFJlbW92ZSB0aGlzIGR1cGxpY2F0ZSB3b3JrLgorICAgICAg
ICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFk
V3JpdGVEaXJlY3RvcnkobmV0d29ya0NhY2hlRGlyZWN0b3J5KSkKKyAgICAgICAgICAgIG5ldHdv
cmtDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoKmhhbmRsZSk7CisgICAg
fQogCiAgICAgYXV0byBoc3RzU3RvcmFnZURpcmVjdG9yeSA9IHJlc29sdmVkSFNUU1N0b3JhZ2VE
aXJlY3RvcnkoKTsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgaHN0c1N0b3JhZ2VEaXJl
Y3RvcnlFeHRlbnNpb25IYW5kbGU7Ci0gICAgaWYgKCFoc3RzU3RvcmFnZURpcmVjdG9yeS5pc0Vt
cHR5KCkpCi0gICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0
ZURpcmVjdG9yeShoc3RzU3RvcmFnZURpcmVjdG9yeSwgaHN0c1N0b3JhZ2VEaXJlY3RvcnlFeHRl
bnNpb25IYW5kbGUpOworICAgIGlmICghaHN0c1N0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKSB7
CisgICAgICAgIC8vIEZJWE1FOiBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFk
V3JpdGVEaXJlY3RvcnkgcmVzb2x2ZXMgdGhlIGRpcmVjdG9yeSwgYnV0IHRoYXQgaGFzIGFscmVh
ZHkgYmVlbiBkb25lLiBSZW1vdmUgdGhpcyBkdXBsaWNhdGUgd29yay4KKyAgICAgICAgaWYgKGF1
dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGly
ZWN0b3J5KGhzdHNTdG9yYWdlRGlyZWN0b3J5KSkKKyAgICAgICAgICAgIGhzdHNTdG9yYWdlRGly
ZWN0b3J5RXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqaGFuZGxlKTsKKyAgICB9CiAKICAgICBi
b29sIHNob3VsZEluY2x1ZGVMb2NhbGhvc3RJblJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBmYWxz
ZTsKICAgICBib29sIGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUgPSBmYWxz
ZTsKQEAgLTIwMDQsMjYgKzIwMTIsMzUgQEAgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgV2Vi
c2l0ZURhdGFTdG9yZTo6cGFyYW1ldGVycygpCiAgICAgcGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lv
blBhcmFtZXRlcnMgPSBXVEZNb3ZlKG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycyk7CiAKICAgICBw
YXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSA9IHJlc29sdmVkSW5kZXhlZERhdGFi
YXNlRGlyZWN0b3J5KCk7Ci0gICAgaWYgKCFwYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVj
dG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZv
clJlYWRXcml0ZURpcmVjdG9yeShwYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSwg
cGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOworICAg
IGlmICghcGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkuaXNFbXB0eSgpKSB7Cisg
ICAgICAgIC8vIEZJWE1FOiBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3Jp
dGVEaXJlY3RvcnkgcmVzb2x2ZXMgdGhlIGRpcmVjdG9yeSwgYnV0IHRoYXQgaGFzIGFscmVhZHkg
YmVlbiBkb25lLiBSZW1vdmUgdGhpcyBkdXBsaWNhdGUgd29yay4KKyAgICAgICAgaWYgKGF1dG8g
aGFuZGxlID0gIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVj
dG9yeShwYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSkpCisgICAgICAgICAgICBw
YXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSA9IFdURk1v
dmUoKmhhbmRsZSk7CisgICAgfQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHBh
cmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSA9IHJlc29sdmVkU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpOwotICAgIGlmICghcGFyYW1ldGVycy5z
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5LmlzRW1wdHkoKSkKLSAgICAgICAgU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KHBhcmFtZXRl
cnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSwgcGFyYW1ldGVycy5zZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBpZiAoIXBh
cmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeS5pc0VtcHR5KCkpIHsK
KyAgICAgICAgLy8gRklYTUU6IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRX
cml0ZURpcmVjdG9yeSByZXNvbHZlcyB0aGUgZGlyZWN0b3J5LCBidXQgdGhhdCBoYXMgYWxyZWFk
eSBiZWVuIGRvbmUuIFJlbW92ZSB0aGlzIGR1cGxpY2F0ZSB3b3JrLgorICAgICAgICBpZiAoYXV0
byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJl
Y3RvcnkocGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KSkKKyAg
ICAgICAgICAgIHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeUV4
dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoKmhhbmRsZSk7CisgICAgfQogICAgIHBhcmFtZXRlcnMu
c2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCA9IG1fY29uZmlndXJh
dGlvbi0+c2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCgpOwogI2Vu
ZGlmCiAKICAgICBhdXRvIGxvY2FsU3RvcmFnZURpcmVjdG9yeSA9IHJlc29sdmVkTG9jYWxTdG9y
YWdlRGlyZWN0b3J5KCk7CiAgICAgaWYgKCFsb2NhbFN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgp
KSB7CiAgICAgICAgIHBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gbG9jYWxTdG9y
YWdlRGlyZWN0b3J5OwotICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JS
ZWFkV3JpdGVEaXJlY3RvcnkobG9jYWxTdG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmxvY2Fs
U3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CisgICAgICAgIC8vIEZJWE1FOiBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkgcmVzb2x2ZXMg
dGhlIGRpcmVjdG9yeSwgYnV0IHRoYXQgaGFzIGFscmVhZHkgYmVlbiBkb25lLiBSZW1vdmUgdGhp
cyBkdXBsaWNhdGUgd29yay4KKyAgICAgICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVu
c2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KGxvY2FsU3RvcmFnZURpcmVj
dG9yeSkpCisgICAgICAgICAgICBwYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVu
c2lvbkhhbmRsZSA9IFdURk1vdmUoKmhhbmRsZSk7CiAgICAgfQogCiAgICAgYXV0byBjYWNoZVN0
b3JhZ2VEaXJlY3RvcnkgPSB0aGlzLT5jYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKTsKICAgICBpZiAo
IWNhY2hlU3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpIHsKICAgICAgICAgcGFyYW1ldGVycy5j
YWNoZVN0b3JhZ2VEaXJlY3RvcnkgPSBjYWNoZVN0b3JhZ2VEaXJlY3Rvcnk7Ci0gICAgICAgIFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShjYWNoZVN0
b3JhZ2VEaXJlY3RvcnksIHBhcmFtZXRlcnMuY2FjaGVTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9u
SGFuZGxlKTsKKyAgICAgICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KGNhY2hlU3RvcmFnZURpcmVjdG9yeSkpCisg
ICAgICAgICAgICBwYXJhbWV0ZXJzLmNhY2hlU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRs
ZSA9IFdURk1vdmUoKmhhbmRsZSk7CiAgICAgfQogCiAgICAgcGFyYW1ldGVycy5wZXJPcmlnaW5T
dG9yYWdlUXVvdGEgPSBwZXJPcmlnaW5TdG9yYWdlUXVvdGEoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNwcAppbmRleCAy
OGY2OGExNGQ1MWViOTVlNmY5NGJkYTNlZjQzNWY0Nzg5MDJmMTIwLi5lNzkyZjEwYTAzMTk5ZWU5
YTEwNzQyZTdmZjAzOWRkNWM4NGM1NGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwCkBAIC00MSw4ICs0MSwxMCBA
QCB2b2lkIEJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYg
dXJsLCBSZWY8QmxvYkRhdGFGaWxlUmVmZQogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBl
eHRlbnNpb25IYW5kbGU7CiAKICAgICAvLyBGaWxlIHBhdGggY2FuIGJlIGVtcHR5IHdoZW4gc3Vi
bWl0dGluZyBhIGZvcm0gZmlsZSBpbnB1dCB3aXRob3V0IGEgZmlsZSwgc2VlIGJ1ZyAxMTE3Nzgu
Ci0gICAgaWYgKCFmaWxlLT5wYXRoKCkuaXNFbXB0eSgpKQotICAgICAgICBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGVIYW5kbGUoZmlsZS0+cGF0aCgpLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpS
ZWFkT25seSwgZXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBpZiAoIWZpbGUtPnBhdGgoKS5pc0VtcHR5
KCkpIHsKKyAgICAgICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRl
SGFuZGxlKGZpbGUtPnBhdGgoKSwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHkpKQor
ICAgICAgICAgICAgZXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqaGFuZGxlKTsKKyAgICB9CiAK
ICAgICBTdHJpbmcgcmVwbGFjZW1lbnRQYXRoID0gcGF0aCA9PSBmaWxlLT5wYXRoKCkgPyBudWxs
U3RyaW5nKCkgOiBmaWxlLT5wYXRoKCk7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5z
dXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWdpc3RlckZpbGVCbG9iVVJMKHVybCwg
cGF0aCwgcmVwbGFjZW1lbnRQYXRoLCBleHRlbnNpb25IYW5kbGUsIGNvbnRlbnRUeXBlKSwgMCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKaW5kZXggZDljNThkZThmNTdiMDRhOWJlNDYx
NjNjNWQ2NTM5OGU5YjQ3NWU2My4uMmZhNTM0YTI3ZWMxMzcwYTU0M2ZiMGZkOTEwOWYwZWJmNjJm
NDg1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRp
YVBsYXllclByaXZhdGVSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcApAQCAtMTY3LDExICsxNjcsMTkg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmxvYWQoY29uc3QgVVJMJiB1cmwsIGNv
bnN0IENvbnRlbnRUeXBlJiBjb250ZW50VHkKIAogICAgICAgICBhdXRvIGNyZWF0ZUV4dGVuc2lv
biA9IFsmXSB7CiAjaWYgSEFWRShBVURJVF9UT0tFTikKLSAgICAgICAgICAgIGlmIChhdXRvIGF1
ZGl0VG9rZW4gPSBtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5hdWRpdFRva2VuKCkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZv
clJlYWRCeUF1ZGl0VG9rZW4oZmlsZVN5c3RlbVBhdGgsIGF1ZGl0VG9rZW4udmFsdWUoKSwgaGFu
ZGxlKTsKKyAgICAgICAgICAgIGlmIChhdXRvIGF1ZGl0VG9rZW4gPSBtX21hbmFnZXIuZ3B1UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS5hdWRpdFRva2VuKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoYXV0
byBjcmVhdGVkSGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZEJ5
QXVkaXRUb2tlbihmaWxlU3lzdGVtUGF0aCwgYXVkaXRUb2tlbi52YWx1ZSgpKSkgeworICAgICAg
ICAgICAgICAgICAgICBoYW5kbGUgPSBXVEZNb3ZlKCpjcmVhdGVkSGFuZGxlKTsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KICNlbmRpZgotCi0gICAgICAgICAgICBy
ZXR1cm4gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGZpbGVTeXN0ZW1QYXRoLCBTYW5k
Ym94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkT25seSwgaGFuZGxlKTsKKyAgICAgICAgICAgIGlmIChh
dXRvIGNyZWF0ZWRIYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUoZmlsZVN5
c3RlbVBhdGgsIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRPbmx5KSkgeworICAgICAgICAg
ICAgICAgIGhhbmRsZSA9IFdURk1vdmUoKmNyZWF0ZWRIYW5kbGUpOworICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICB9OwogCiAgICAgICAgIGlmICghY3JlYXRlRXh0ZW5zaW9uKCkpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435452</attachid>
            <date>2021-08-12 15:21:35 -0700</date>
            <delta_ts>2021-08-12 17:52:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228875-20210812152135.patch</filename>
            <type>text/plain</type>
            <size>83705</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwOTIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGJjNWViNmUyZTE5NWU1NDc2
MGZhZTdjOWQ4Y2NhMmI2NWYyZDgzMzMuLjVjMjAwOGE0MDA2ZTBjNmE1NmMwMzY5MGUyOWE4MDUz
YjA1NDc2ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTc0IEBACisyMDIxLTA4LTEyICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlIGNyZWF0aW9uIHNob3VsZCByZXR1cm4gc3RkOjpvcHRpb25hbCBpbnN0
ZWFkIG9mIGJvb2wKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyODg3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoaXMgbW9kZXJuaXplcyB0aGUgY29kZSBzb21ld2hhdC4KKyAgICAgICAgVGhpcyBtYWtl
cyBpdCBlYXNpZXIgdG8gd3JpdGUgY29kZSB0aGF0IHJlYWxpemVzIHRoYXQgaGFuZGxlIGNyZWF0
aW9uIGNhbiBmYWlsLgorICAgICAgICBUaGlzIGlzIGEgc3RlcCB0b3dhcmRzIHJlbW92aW5nIHRo
ZSB1bm5lY2Vzc2FyeSBhYnN0cmFjdGlvbiBIYW5kbGVBcnJheS4KKworICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAg
ICAgICogUGxhdGZvcm0vSVBDL0Zvcm1EYXRhUmVmZXJlbmNlLmg6CisgICAgICAgIChJUEM6OkZv
cm1EYXRhUmVmZXJlbmNlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9T
YW5kYm94RXh0ZW5zaW9uQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKToKKyAgICAgICAgKFdlYktpdDo6
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6Y3JlYXRl
SGFuZGxlc0ZvclJlc291cmNlcyk6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246
OmNyZWF0ZVJlYWRPbmx5SGFuZGxlc0ZvckZpbGVzKToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KToKKyAgICAgICAg
KFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yVGVtcG9yYXJ5RmlsZSk6
CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvckdlbmVy
aWNFeHRlbnNpb24pOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVI
YW5kbGVGb3JNYWNoTG9va3VwKToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6
Y3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXApOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0
ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkQnlBdWRpdFRva2VuKToKKyAgICAgICAgKFdlYktp
dDo6U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9ySU9LaXRDbGFzc0V4dGVuc2lvbik6
CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JJT0tp
dENsYXNzRXh0ZW5zaW9ucyk6CisgICAgICAgICogU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaDoK
KyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKToKKyAgICAg
ICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmlu
Z1BhdGgpOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVG
b3JSZWFkV3JpdGVEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGVGb3JUZW1wb3JhcnlGaWxlKToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yR2VuZXJpY0V4dGVuc2lvbik6CisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmFkZFBsYXRmb3JtTG9hZFBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmNyZWF0ZVNhbmRib3hFeHRlbnNpb25zSWZOZWVkZWQpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNjcm9sbGluZ1VwZGF0ZXNEaXNhYmxl
ZEZvclRlc3RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnN0
YXJ0RHJhZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0UHJv
bWlzZWREYXRhRm9ySW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnNldERyYWdDYXJldFJlY3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnBsYXRmb3JtUmVnaXN0ZXJBdHRhY2htZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpwbGF0Zm9ybUNsb25lQXR0YWNobWVudCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdExv
Y2F0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwZXJmb3Jt
RGljdGlvbmFyeUxvb2t1cE9mQ3VycmVudFNlbGVjdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmMpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnBsYXRmb3JtRGljdGF0aW9uQWx0ZXJuYXRp
dmVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjplcnJvckZvclVu
cGVybWl0dGVkQXBwQm91bmREb21haW5OYXZpZ2F0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0b3JDb25uZWN0aW9uKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0b3JCb3Vu
ZEludGVyZmFjZUlkZW50aWZpZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnBheW1lbnRDb29yZGluYXRvclNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmll
cik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cGF5bWVudENvb3Jk
aW5hdG9yU291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0b3JBZGRNZXNzYWdl
UmVjZWl2ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnBheW1l
bnRDb29yZGluYXRvclJlbW92ZU1lc3NhZ2VSZWNlaXZlcik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkU3RhcnRTcGVha2luZyk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkRmluaXNoU3BlYWtpbmcpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFBhdXNlU3BlYWtpbmcpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFJlc3VtZVNwZWFraW5nKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzcGVha2luZ0Vycm9yT2NjdXJyZWQp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmJvdW5kYXJ5RXZlbnRP
Y2N1cnJlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dm9pY2Vz
RGlkQ2hhbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRD
cmVhdGVDb250ZXh0SW5XZWJQcm9jZXNzRm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRDcmVhdGVDb250ZXh0SW5HUFVQ
cm9jZXNzRm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpncmFudEFjY2Vzc1RvUHJlZmVyZW5jZVNlcnZpY2UpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Om1lZGlhVXNhZ2VNYW5hZ2VyKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjphZGRNZWRpYVVzYWdlTWFuYWdl
clNlc3Npb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnVwZGF0
ZU1lZGlhVXNhZ2VNYW5hZ2VyU2Vzc2lvblN0YXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpyZW1vdmVNZWRpYVVzYWdlTWFuYWdlclNlc3Npb24pOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0Ojpjb252ZXJ0UGxhdGZvcm1JbWFnZVRvQml0bWFwKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0VGh1bWJuYWlsV2l0aE9w
ZXJhdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVxdWVz
dFRodW1ibmFpbFdpdGhGaWxlV3JhcHBlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6cmVxdWVzdFRodW1ibmFpbFdpdGhQYXRoKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpzY2hlZHVsZUFjdGl2aXR5U3RhdGVVcGRhdGUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmFkZEFjdGl2aXR5U3RhdGVVcGRh
dGVDb21wbGV0aW9uSGFuZGxlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6Y3JlYXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXN0b3JlQXBwSGlnaGxpZ2h0c0FuZFNjcm9sbFRv
SW5kZXgpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldEFwcEhp
Z2hsaWdodHNWaXNpYmlsaXR5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjphcHBIaWdobGlnaHRzVmlzaWJpbGl0eSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6YXBwSGlnaGxpZ2h0c092ZXJsYXlSZWN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRVcEhpZ2hsaWdodHNPYnNlcnZlcik6IERlbGV0
ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y3JlYXRlTmV0d29ya0V4dGVuc2lv
bnNTYW5kYm94RXh0ZW5zaW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6Y2FuSGFuZGxlQ29udGV4dE1lbnVUcmFuc2xhdGlvbiBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aGFuZGxlQ29udGV4dE1lbnVUcmFuc2xhdGlv
bik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVxdWVzdEFjdGl2
ZU5vd1BsYXlpbmdTZXNzaW9uSW5mbyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6c2V0TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVk
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpncmFudEFjY2Vzc1Rv
QXNzZXRTZXJ2aWNlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
cmV2b2tlQWNjZXNzVG9Bc3NldFNlcnZpY2VzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5Ojpzd2l0Y2hGcm9tU3RhdGljRm9udFJlZ2lzdHJ5VG9Vc2VyRm9udFJlZ2lz
dHJ5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpmb250ZE1hY2hF
eHRlbnNpb25IYW5kbGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmNvbnRlbnRzT2ZVc2VySW50ZXJmYWNlSXRlbSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRQYXRobmFtZXNGb3JUeXBlKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1By
b2Nlc3MpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZv
cm1JbnZhbGlkYXRlQ29udGV4dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQb29sOjpwYXJlbnRCdW5kbGVEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbDo6bmV0d29ya2luZ0NhY2hlc0RpcmVjdG9yeSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjp3ZWJDb250ZW50Q2FjaGVzRGlyZWN0b3J5
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNvbnRhaW5lclRl
bXBvcmFyeURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sOjpzZXRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkZpbGVFbmFibGVkRnJvbURlZmF1bHRzKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6Om9taXRQREZTdXBwb3J0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NTdXBw
cmVzc2lvbkVuYWJsZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbDo6ZGlzcGxheUJyaWdodG5lc3MpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbDo6YmFja2xpZ2h0TGV2ZWxEaWRDaGFuZ2VDYWxsYmFjayk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjphY2Nlc3NpYmlsaXR5UHJlZmVyZW5j
ZXNDaGFuZ2VkQ2FsbGJhY2spOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbDo6bWVkaWFBY2Nlc3NpYmlsaXR5UHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2spOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6Y29sb3JQcmVmZXJlbmNlc0Rp
ZENoYW5nZUNhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bv
b2w6OnJlbW90ZVdlYkluc3BlY3RvckVuYWJsZWRDYWxsYmFjayk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzdGFydE9ic2VydmluZ1ByZWZlcmVuY2VDaGFuZ2Vz
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlZ2lzdGVyTm90
aWZpY2F0aW9uT2JzZXJ2ZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6OnVucmVnaXN0ZXJOb3RpZmljYXRpb25PYnNlcnZlcnMpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6aXNVUkxLbm93bkhTVFNIb3N0IGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6Om5vbWluYWxGcmFtZXNQZXJT
ZWNvbmRGb3JEaXNwbGF5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bv
b2w6OnN0YXJ0RGlzcGxheUxpbmspOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbDo6c3RvcERpc3BsYXlMaW5rKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc1Bvb2w6OnN0b3BEaXNwbGF5TGlua3MpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbDo6c2V0RGlzcGxheUxpbmtQcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2V0RGlzcGxheUxp
bmtGb3JEaXNwbGF5V2FudHNGdWxsU3BlZWRVcGRhdGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldENvb2tpZVN0b3JhZ2VQYXJ0aXRpb25pbmdFbmFibGVk
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNsZWFyUGVybWFu
ZW50Q3JlZGVudGlhbHNGb3JQcm90ZWN0aW9uU3BhY2UpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
S2l0OjpuZXR3b3JrUHJvY2Vzc0xhdGVuY3lRT1MpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpuZXR3b3JrUHJvY2Vzc1Rocm91Z2hwdXRRT1MpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
Ojp3ZWJQcm9jZXNzTGF0ZW5jeVFPUyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OndlYlBy
b2Nlc3NUaHJvdWdocHV0UU9TKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6OmFwcGxpY2F0aW9uSXNBYm91dFRvU3VzcGVuZCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpub3RpZnlQcm9jZXNzUG9vbHNBcHBsaWNhdGlvbklzQWJv
dXRUb1N1c3BlbmQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6
aW5pdGlhbGl6ZUNsYXNzZXNGb3JQYXJhbWV0ZXJDb2RpbmcpOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6YWxsb3dlZENsYXNzZXNGb3JQYXJhbWV0ZXJDb2Rpbmcg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6bm90aWZ5
UHJlZmVyZW5jZXNDaGFuZ2VkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6d2ViUHJvY2Vz
c1Bvb2xIaWdoRHluYW1pY1JhbmdlRGlkQ2hhbmdlQ2FsbGJhY2spOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cmVnaXN0ZXJIaWdoRHluYW1pY1JhbmdlQ2hhbmdl
Q2FsbGJhY2spOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c3lz
dGVtV2lsbFNsZWVwKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6
OnN5c3RlbURpZFdha2UpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMv
RG93bmxvYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OnB1Ymxp
c2hQcm9ncmVzcyk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OmRlY2lkZURlc3Rp
bmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvR1BVL0dQ
VVByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NQcm94eTo6R1BV
UHJvY2Vzc1Byb3h5KToKKyAgICAgICAgKFdlYktpdDo6YWRkQ2FtZXJhU2FuZGJveEV4dGVuc2lv
bnMpOgorICAgICAgICAoV2ViS2l0OjphZGRNaWNyb3Bob25lU2FuZGJveEV4dGVuc2lvbik6Cisg
ICAgICAgIChXZWJLaXQ6OmFkZFRDQ0RTYW5kYm94RXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYktp
dDo6Z3B1UHJvY2Vzc1Nlc3Npb25QYXJhbWV0ZXJzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3NQcm94eTo6c2VuZENyZWF0aW9uUGFyYW1ldGVyc1RvTmV3UHJvY2Vzcyk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnJldHJpZXZlQ2FjaGVTdG9yYWdlUGFyYW1l
dGVycyk6CisgICAgICAgICogVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRp
bWVNZWRpYVNvdXJjZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25p
dGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyOjphZGRTb3VyY2UpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5
OjpmaW5pc2hHcmFudGluZ1JlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyTWVkaWFQ
cm9jZXNzTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVByb2Nlc3NNYW5h
Z2VyOjp3aWxsQ3JlYXRlTWVkaWFTdHJlYW0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Om1heWJlSW5pdGlhbGl6
ZVNhbmRib3hFeHRlbnNpb25IYW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsV2l0aERpc3BsYXlTdHJpbmdBbmRJY29uKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbDo6d2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6aW5pdGlhbGl6ZU5ld1dlYlByb2Nlc3MpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0RpZEZpbmlzaExhdW5jaGluZyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpyZXN1bWVEb3dubG9hZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzdGFydE1lbW9yeVNhbXBsZXIpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW06Cisg
ICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnBsYXRmb3JtU2V0TmV0d29ya1BhcmFt
ZXRlcnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cGFyYW1ldGVycyk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6QmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bG9hZCk6CisKIDIw
MjEtMDgtMTEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAog
ICAgICAgICBGaXggaU9TIGRlYnVnIGJ1aWxkIGFmdGVyIHIyODA4NzUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFy
YW1ldGVycy5jcHAKaW5kZXggMDBlZmM1ZjA1MDBiYmJiNzMyMTgxZGZiOTY2MzFmNzAyYzhhZWU2
OC4uZmM4NDFkNTIzZDk2YTc2Njg4YjQxZDRiMmU5MzI3ZGI3YTdkNDZiMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVy
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkUGFyYW1ldGVycy5jcHAKQEAgLTU4LDcgKzU4LDggQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VM
b2FkUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICAg
ICAgICAgIGNvbnN0IEZvcm1EYXRhRWxlbWVudCYgZWxlbWVudCA9IGVsZW1lbnRzW2ldOwogICAg
ICAgICAgICAgaWYgKGF1dG8qIGZpbGVEYXRhID0gV1RGOjpnZXRfaWY8Rm9ybURhdGFFbGVtZW50
OjpFbmNvZGVkRmlsZURhdGE+KGVsZW1lbnQuZGF0YSkpIHsKICAgICAgICAgICAgICAgICBjb25z
dCBTdHJpbmcmIHBhdGggPSBmaWxlRGF0YS0+ZmlsZW5hbWU7Ci0gICAgICAgICAgICAgICAgU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKHBhdGgsIFNhbmRib3hFeHRlbnNpb246OlR5cGU6
OlJlYWRPbmx5LCByZXF1ZXN0Qm9keVNhbmRib3hFeHRlbnNpb25zW2V4dGVuc2lvbkluZGV4Kytd
KTsKKyAgICAgICAgICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGVIYW5kbGUocGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHkpKQorICAg
ICAgICAgICAgICAgICAgICByZXF1ZXN0Qm9keVNhbmRib3hFeHRlbnNpb25zW2V4dGVuc2lvbklu
ZGV4KytdID0gV1RGTW92ZSgqaGFuZGxlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAg
ICAgICBlbmNvZGVyIDw8IHJlcXVlc3RCb2R5U2FuZGJveEV4dGVuc2lvbnM7CkBAIC02NywxMSAr
NjgsMTUgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBpZiAocmVxdWVzdC51cmwoKS5pc0xvY2FsRmls
ZSgpKSB7CiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSByZXF1ZXN0U2FuZGJveEV4
dGVuc2lvbjsKICNpZiBIQVZFKEFVRElUX1RPS0VOKQotICAgICAgICBpZiAobmV0d29ya1Byb2Nl
c3NBdWRpdFRva2VuKQotICAgICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
Rm9yUmVhZEJ5QXVkaXRUb2tlbihyZXF1ZXN0LnVybCgpLmZpbGVTeXN0ZW1QYXRoKCksICpuZXR3
b3JrUHJvY2Vzc0F1ZGl0VG9rZW4sIHJlcXVlc3RTYW5kYm94RXh0ZW5zaW9uKTsKLSAgICAgICAg
ZWxzZQorICAgICAgICBpZiAobmV0d29ya1Byb2Nlc3NBdWRpdFRva2VuKSB7CisgICAgICAgICAg
ICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFk
QnlBdWRpdFRva2VuKHJlcXVlc3QudXJsKCkuZmlsZVN5c3RlbVBhdGgoKSwgKm5ldHdvcmtQcm9j
ZXNzQXVkaXRUb2tlbikpCisgICAgICAgICAgICAgICAgcmVxdWVzdFNhbmRib3hFeHRlbnNpb24g
PSBXVEZNb3ZlKCpoYW5kbGUpOworICAgICAgICB9IGVsc2UKICNlbmRpZgotICAgICAgICAgICAg
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKHJlcXVlc3QudXJsKCkuZmlsZVN5c3RlbVBh
dGgoKSwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHksIHJlcXVlc3RTYW5kYm94RXh0
ZW5zaW9uKTsKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKHJlcXVlc3QudXJsKCkuZmlsZVN5c3RlbVBhdGgoKSwg
U2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHkpKQorICAgICAgICAgICAgICAgIHJlcXVl
c3RTYW5kYm94RXh0ZW5zaW9uID0gV1RGTW92ZSgqaGFuZGxlKTsKKyAgICAgICAgfQogCiAgICAg
ICAgIGVuY29kZXIgPDwgcmVxdWVzdFNhbmRib3hFeHRlbnNpb247CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRm9ybURhdGFSZWZlcmVuY2UuaCBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Zvcm1EYXRhUmVmZXJlbmNlLmgKaW5kZXggYzBkNDM3YWU3
MTdhYjkyY2RkMzRjYTllZWNhZjA3YmVkYmNiYTdlYy4uODNjMjQ3ZmE2MTlkNTcxOTM0OGE1NTEy
YzE0YzZmNzYxNmI1NzFjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
Rm9ybURhdGFSZWZlcmVuY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Gb3Jt
RGF0YVJlZmVyZW5jZS5oCkBAIC02MSw3ICs2MSw4IEBAIHB1YmxpYzoKICAgICAgICAgZm9yIChh
dXRvJiBlbGVtZW50IDogZWxlbWVudHMpIHsKICAgICAgICAgICAgIGlmIChhdXRvKiBmaWxlRGF0
YSA9IFdURjo6Z2V0X2lmPFdlYkNvcmU6OkZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEZpbGVEYXRh
PihlbGVtZW50LmRhdGEpKSB7CiAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBwYXRoID0g
ZmlsZURhdGEtPmZpbGVuYW1lOwotICAgICAgICAgICAgICAgIFdlYktpdDo6U2FuZGJveEV4dGVu
c2lvbjo6Y3JlYXRlSGFuZGxlKHBhdGgsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6
UmVhZE9ubHksIHNhbmRib3hFeHRlbnNpb25IYW5kbGVzW2V4dGVuc2lvbkluZGV4KytdKTsKKyAg
ICAgICAgICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246
OmNyZWF0ZUhhbmRsZShwYXRoLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRP
bmx5KSkKKyAgICAgICAgICAgICAgICAgICAgc2FuZGJveEV4dGVuc2lvbkhhbmRsZXNbZXh0ZW5z
aW9uSW5kZXgrK10gPSBXVEZNb3ZlKCpoYW5kbGUpOwogICAgICAgICAgICAgfQogICAgICAgICB9
CiAgICAgICAgIGVuY29kZXIgPDwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZXM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9TYW5kYm94RXh0ZW5zaW9uQ29jb2EubW0gYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9TYW5kYm94RXh0ZW5zaW9uQ29jb2EubW0KaW5kZXgg
Y2EzNzgwYmM4NmY5YzBkNjIwODgyNzIyYWQ5MzJjM2ZkMzMzMjU0Zi4uM2VkYzU0MTQxZjQ1N2Iw
NTllMDkxYWY5MmU3Y2UzZWE2ZTYzMDA2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0NvY29hL1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbQpAQCAtMjc2LDI3ICsyNzYsMjYgQEAg
U3RyaW5nIHJlc29sdmVQYXRoRm9yU2FuZGJveEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIHBhdGgp
CiAgICAgcmV0dXJuIHJlc29sdmVkUGF0aDsKIH0KIAotYm9vbCBTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChjb25zdCBTdHJpbmcmIHBhdGgsIFR5cGUg
dHlwZSwgSGFuZGxlJiBoYW5kbGUpCithdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRs
ZVdpdGhvdXRSZXNvbHZpbmdQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCwgVHlwZSB0eXBlKSAtPiBz
dGQ6Om9wdGlvbmFsPEhhbmRsZT4KIHsKKyAgICBIYW5kbGUgaGFuZGxlOwogICAgIEFTU0VSVCgh
aGFuZGxlLm1fc2FuZGJveEV4dGVuc2lvbik7CiAKICAgICBoYW5kbGUubV9zYW5kYm94RXh0ZW5z
aW9uID0gU2FuZGJveEV4dGVuc2lvbkltcGw6OmNyZWF0ZShwYXRoLnV0ZjgoKS5kYXRhKCksIHR5
cGUsIHN0ZDo6bnVsbG9wdCwgU2FuZGJveEV4dGVuc2lvbjo6RmxhZ3M6OkRvTm90Q2Fub25pY2Fs
aXplKTsKICAgICBpZiAoIWhhbmRsZS5tX3NhbmRib3hFeHRlbnNpb24pIHsKICAgICAgICAgTE9H
X0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIGEgc2FuZGJveCBleHRlbnNpb24gZm9yICclcyciLCBw
YXRoLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgfQotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBXVEZN
b3ZlKGhhbmRsZSk7CiB9CiAKLWJvb2wgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGNv
bnN0IFN0cmluZyYgcGF0aCwgVHlwZSB0eXBlLCBIYW5kbGUmIGhhbmRsZSkKK2F1dG8gU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGNvbnN0IFN0cmluZyYgcGF0aCwgVHlwZSB0eXBlKSAt
PiBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4KIHsKLSAgICBBU1NFUlQoIWhhbmRsZS5tX3NhbmRib3hF
eHRlbnNpb24pOwotCi0gICAgcmV0dXJuIGNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRo
KHJlc29sdmVQYXRoRm9yU2FuZGJveEV4dGVuc2lvbihwYXRoKSwgdHlwZSwgaGFuZGxlKTsKKyAg
ICByZXR1cm4gY3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgocmVzb2x2ZVBhdGhGb3JT
YW5kYm94RXh0ZW5zaW9uKHBhdGgpLCB0eXBlKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
Ci1zdGF0aWMgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkgY3JlYXRlSGFuZGxlc0ZvclJl
c291cmNlcyhjb25zdCBWZWN0b3I8VD4mIHJlc291cmNlcywgRnVuY3Rpb248Ym9vbChjb25zdCBU
JiwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBoYW5kbGUpPiYmIGNyZWF0ZUZ1bmN0aW9uKQor
c3RhdGljIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IGNyZWF0ZUhhbmRsZXNGb3JSZXNv
dXJjZXMoY29uc3QgVmVjdG9yPFQ+JiByZXNvdXJjZXMsIEZ1bmN0aW9uPHN0ZDo6b3B0aW9uYWw8
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPihjb25zdCBUJik+JiYgY3JlYXRlRnVuY3Rpb24pCiB7
CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkgaGFuZGxlQXJyYXk7CiAKQEAgLTMw
NSw4ICszMDQsMTAgQEAgc3RhdGljIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IGNyZWF0
ZUhhbmRsZXNGb3JSZXNvdXJjZXMoY29uc3QgVmVjdG9yPFQ+JgogCiAgICAgc2l6ZV90IGN1cnJl
bnRIYW5kbGUgPSAwOwogICAgIGZvciAoY29uc3QgYXV0byYgcmVzb3VyY2UgOiByZXNvdXJjZXMp
IHsKLSAgICAgICAgaWYgKCFjcmVhdGVGdW5jdGlvbihyZXNvdXJjZSwgaGFuZGxlQXJyYXlbY3Vy
cmVudEhhbmRsZV0pKQorICAgICAgICBhdXRvIGhhbmRsZSA9IGNyZWF0ZUZ1bmN0aW9uKHJlc291
cmNlKTsKKyAgICAgICAgaWYgKCFoYW5kbGUpCiAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgaGFuZGxlQXJyYXlbY3VycmVudEhhbmRsZV0gPSBXVEZNb3ZlKCpoYW5kbGUpOwogICAgICAg
ICArK2N1cnJlbnRIYW5kbGU7CiAgICAgfQogICAgIApAQCAtMzE1LDM0ICszMTYsMzQgQEAgc3Rh
dGljIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IGNyZWF0ZUhhbmRsZXNGb3JSZXNvdXJj
ZXMoY29uc3QgVmVjdG9yPFQ+JgogCiBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGVSZWFkT25seUhhbmRsZXNGb3JGaWxlcyhBU0NJSUxpdGVyYWwg
bG9nTGFiZWwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRocykKIHsKLSAgICByZXR1cm4gY3Jl
YXRlSGFuZGxlc0ZvclJlc291cmNlcyhwYXRocywgRnVuY3Rpb248Ym9vbChjb25zdCBTdHJpbmcm
LCBIYW5kbGUmKT4oWyZsb2dMYWJlbF0gKGNvbnN0IFN0cmluZyYgcGF0aCwgSGFuZGxlJiBoYW5k
bGUpIHsKLSAgICAgICAgaWYgKCFTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUocGF0aCwg
U2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHksIGhhbmRsZSkpIHsKKyAgICByZXR1cm4g
Y3JlYXRlSGFuZGxlc0ZvclJlc291cmNlcyhwYXRocywgRnVuY3Rpb248c3RkOjpvcHRpb25hbDxI
YW5kbGU+KGNvbnN0IFN0cmluZyYpPihbJmxvZ0xhYmVsXSAoY29uc3QgU3RyaW5nJiBwYXRoKSB7
CisgICAgICAgIGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKHBh
dGgsIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRPbmx5KTsKKyAgICAgICAgaWYgKCFoYW5k
bGUpIHsKICAgICAgICAgICAgIC8vIFRoaXMgY2FuIGxlZ2l0aW1hdGVseSBmYWlsIGlmIGEgZGly
ZWN0b3J5IGNvbnRhaW5pbmcgdGhlIGZpbGUgaXMgZGVsZXRlZCBhZnRlciB0aGUgZmlsZSB3YXMg
Y2hvc2VuLgogICAgICAgICAgICAgLy8gV2UgYWxzbyBoYXZlIHJlcG9ydHMgb2YgY2FzZXMgd2hl
cmUgdGhpcyBsaWtlbHkgZmFpbHMgZm9yIHNvbWUgdW5rbm93biByZWFzb24sIDxyZGFyOi8vcHJv
YmxlbS8xMDE1NjcxMD4uCiAgICAgICAgICAgICBXVEZMb2dBbHdheXMoIiVzOiBjb3VsZCBub3Qg
Y3JlYXRlIGEgc2FuZGJveCBleHRlbnNpb24gZm9yICclcydcbiIsIGxvZ0xhYmVsLmNoYXJhY3Rl
cnMoKSwgcGF0aC51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9Ci0gICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICByZXR1cm4gaGFuZGxlOwogICAgIH0pKTsKIH0KIAotYm9vbCBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkoY29uc3QgU3Ry
aW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIGhhbmRsZSkKK2F1dG8gU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KGNvbnN0IFN0cmlu
ZyYgcGF0aCkgLT4gc3RkOjpvcHRpb25hbDxIYW5kbGU+CiB7CiAgICAgU3RyaW5nIHJlc29sdmVk
UGF0aCA9IHJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5z
aW9uKHBhdGgpOwogICAgIGlmIChyZXNvbHZlZFBhdGguaXNOdWxsKCkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIHJldHVybiBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRo
b3V0UmVzb2x2aW5nUGF0aChyZXNvbHZlZFBhdGgsIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJl
YWRXcml0ZSwgaGFuZGxlKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICByZXR1
cm4gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgocmVz
b2x2ZWRQYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUpOwogfQogCi1TdHJp
bmcgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yVGVtcG9yYXJ5RmlsZShjb25zdCBT
dHJpbmcmIHByZWZpeCwgVHlwZSB0eXBlLCBIYW5kbGUmIGhhbmRsZSkKK2F1dG8gU2FuZGJveEV4
dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZp
eCwgVHlwZSB0eXBlKSAtPiBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxIYW5kbGUsIFN0cmluZz4+
CiB7CisgICAgSGFuZGxlIGhhbmRsZTsKICAgICBBU1NFUlQoIWhhbmRsZS5tX3NhbmRib3hFeHRl
bnNpb24pOwogICAgIAogICAgIFZlY3RvcjxjaGFyPiBwYXRoKFBBVEhfTUFYKTsKICAgICBpZiAo
IWNvbmZzdHIoX0NTX0RBUldJTl9VU0VSX1RFTVBfRElSLCBwYXRoLmRhdGEoKSwgcGF0aC5zaXpl
KCkpKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgCiAgICAgLy8gU2hyaW5rIHRoZSB2ZWN0b3IuICAgCiAgICAgcGF0aC5zaHJpbmso
c3RybGVuKHBhdGguZGF0YSgpKSk7CkBAIC0zNjAsODIgKzM2MSw4MiBAQCBTdHJpbmcgU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHBy
ZWZpeCwgVHlwZQogCiAgICAgaWYgKCFoYW5kbGUubV9zYW5kYm94RXh0ZW5zaW9uKSB7CiAgICAg
ICAgIFdURkxvZ0Fsd2F5cygiQ291bGQgbm90IGNyZWF0ZSBhIHNhbmRib3ggZXh0ZW5zaW9uIGZv
ciB0ZW1wb3JhcnkgZmlsZSAnJXMnIiwgcGF0aC5kYXRhKCkpOwotICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQotICAgIHJldHVybiBT
dHJpbmcocGF0aC5kYXRhKCkpOworICAgIHJldHVybiB7eyBXVEZNb3ZlKGhhbmRsZSksIFN0cmlu
ZyhwYXRoLmRhdGEoKSkgfX07CiB9CiAKLWJvb2wgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFu
ZGxlRm9yR2VuZXJpY0V4dGVuc2lvbihBU0NJSUxpdGVyYWwgZXh0ZW5zaW9uQ2xhc3MsIEhhbmRs
ZSYgaGFuZGxlKQorYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JHZW5lcmlj
RXh0ZW5zaW9uKEFTQ0lJTGl0ZXJhbCBleHRlbnNpb25DbGFzcykgLT4gc3RkOjpvcHRpb25hbDxI
YW5kbGU+CiB7CisgICAgSGFuZGxlIGhhbmRsZTsKICAgICBBU1NFUlQoIWhhbmRsZS5tX3NhbmRi
b3hFeHRlbnNpb24pOwogCiAgICAgaGFuZGxlLm1fc2FuZGJveEV4dGVuc2lvbiA9IFNhbmRib3hF
eHRlbnNpb25JbXBsOjpjcmVhdGUoZXh0ZW5zaW9uQ2xhc3MuY2hhcmFjdGVycygpLCBUeXBlOjpH
ZW5lcmljKTsKICAgICBpZiAoIWhhbmRsZS5tX3NhbmRib3hFeHRlbnNpb24pIHsKICAgICAgICAg
V1RGTG9nQWx3YXlzKCJDb3VsZCBub3QgY3JlYXRlIGEgJyVzJyBzYW5kYm94IGV4dGVuc2lvbiIs
IGV4dGVuc2lvbkNsYXNzLmNoYXJhY3RlcnMoKSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAgICAgCi0gICAgcmV0dXJuIHRydWU7
CisgICAgcmV0dXJuIFdURk1vdmUoaGFuZGxlKTsKIH0KIAotYm9vbCBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKEFTQ0lJTGl0ZXJhbCBzZXJ2aWNlLCBzdGQ6Om9w
dGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IGF1ZGl0VG9rZW4sIEhhbmRsZSYgaGFuZGxlLCBPcHRpb25T
ZXQ8RmxhZ3M+IGZsYWdzKQorYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JN
YWNoTG9va3VwKEFTQ0lJTGl0ZXJhbCBzZXJ2aWNlLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2Vu
X3Q+IGF1ZGl0VG9rZW4sIE9wdGlvblNldDxGbGFncz4gZmxhZ3MpIC0+IHN0ZDo6b3B0aW9uYWw8
SGFuZGxlPgogeworICAgIEhhbmRsZSBoYW5kbGU7CiAgICAgQVNTRVJUKCFoYW5kbGUubV9zYW5k
Ym94RXh0ZW5zaW9uKTsKICAgICAKICAgICBoYW5kbGUubV9zYW5kYm94RXh0ZW5zaW9uID0gU2Fu
ZGJveEV4dGVuc2lvbkltcGw6OmNyZWF0ZShzZXJ2aWNlLmNoYXJhY3RlcnMoKSwgVHlwZTo6TWFj
aCwgYXVkaXRUb2tlbiwgZmxhZ3MpOwogICAgIGlmICghaGFuZGxlLm1fc2FuZGJveEV4dGVuc2lv
bikgewogICAgICAgICBXVEZMb2dBbHdheXMoIkNvdWxkIG5vdCBjcmVhdGUgYSAnJXMnIHNhbmRi
b3ggZXh0ZW5zaW9uIiwgc2VydmljZS5jaGFyYWN0ZXJzKCkpOwotICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogICAgIAotICAgIHJldHVy
biB0cnVlOworICAgIHJldHVybiBXVEZNb3ZlKGhhbmRsZSk7CiB9CiAKIFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZUFycmF5IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9v
a3VwKGNvbnN0IFZlY3RvcjxBU0NJSUxpdGVyYWw+JiBzZXJ2aWNlcywgc3RkOjpvcHRpb25hbDxh
dWRpdF90b2tlbl90PiBhdWRpdFRva2VuLCBPcHRpb25TZXQ8RmxhZ3M+IGZsYWdzKQogewotICAg
IHJldHVybiBjcmVhdGVIYW5kbGVzRm9yUmVzb3VyY2VzKHNlcnZpY2VzLCBGdW5jdGlvbjxib29s
KGNvbnN0IEFTQ0lJTGl0ZXJhbCYsIEhhbmRsZSYpPihbYXVkaXRUb2tlbiwgZmxhZ3NdIChjb25z
dCBBU0NJSUxpdGVyYWwmIHNlcnZpY2UsIEhhbmRsZSYgaGFuZGxlKSB7Ci0gICAgICAgIGlmICgh
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cChzZXJ2aWNlLCBhdWRp
dFRva2VuLCBoYW5kbGUsIGZsYWdzKSkgewotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgcmV0dXJuIGNyZWF0ZUhhbmRsZXNGb3JSZXNvdXJjZXMoc2VydmljZXMsIEZ1
bmN0aW9uPHN0ZDo6b3B0aW9uYWw8SGFuZGxlPihjb25zdCBBU0NJSUxpdGVyYWwmKT4oW2F1ZGl0
VG9rZW4sIGZsYWdzXSAoY29uc3QgQVNDSUlMaXRlcmFsJiBzZXJ2aWNlKSAtPiBzdGQ6Om9wdGlv
bmFsPEhhbmRsZT4geworICAgICAgICBhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoc2VydmljZSwgYXVkaXRUb2tlbiwgZmxhZ3MpOworICAg
ICAgICBBU1NFUlQoaGFuZGxlKTsKKyAgICAgICAgcmV0dXJuIGhhbmRsZTsKICAgICB9KSk7CiB9
CiAKLWJvb2wgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZEJ5QXVkaXRUb2tl
bihjb25zdCBTdHJpbmcmIHBhdGgsIGF1ZGl0X3Rva2VuX3QgYXVkaXRUb2tlbiwgSGFuZGxlJiBo
YW5kbGUpCithdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRCeUF1ZGl0
VG9rZW4oY29uc3QgU3RyaW5nJiBwYXRoLCBhdWRpdF90b2tlbl90IGF1ZGl0VG9rZW4pIC0+IHN0
ZDo6b3B0aW9uYWw8SGFuZGxlPgogeworICAgIEhhbmRsZSBoYW5kbGU7CiAgICAgQVNTRVJUKCFo
YW5kbGUubV9zYW5kYm94RXh0ZW5zaW9uKTsKIAogICAgIGhhbmRsZS5tX3NhbmRib3hFeHRlbnNp
b24gPSBTYW5kYm94RXh0ZW5zaW9uSW1wbDo6Y3JlYXRlKHBhdGgudXRmOCgpLmRhdGEoKSwgVHlw
ZTo6UmVhZEJ5UHJvY2VzcywgYXVkaXRUb2tlbik7CiAgICAgaWYgKCFoYW5kbGUubV9zYW5kYm94
RXh0ZW5zaW9uKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGNyZWF0ZSBhIHNhbmRi
b3ggZXh0ZW5zaW9uIGZvciAnJXMnIiwgcGF0aC51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KICAgICAKLSAg
ICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gV1RGTW92ZShoYW5kbGUpOwogfQogCi1ib29sIFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvcklPS2l0Q2xhc3NFeHRlbnNpb24oQVNDSUlM
aXRlcmFsIGlvS2l0Q2xhc3MsIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gYXVkaXRUb2tl
biwgSGFuZGxlJiBoYW5kbGUsIE9wdGlvblNldDxGbGFncz4gZmxhZ3MpCithdXRvIFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvcklPS2l0Q2xhc3NFeHRlbnNpb24oQVNDSUlMaXRlcmFs
IGlvS2l0Q2xhc3MsIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gYXVkaXRUb2tlbiwgT3B0
aW9uU2V0PEZsYWdzPiBmbGFncykgLT4gc3RkOjpvcHRpb25hbDxIYW5kbGU+CiB7CisgICAgSGFu
ZGxlIGhhbmRsZTsKICAgICBBU1NFUlQoIWhhbmRsZS5tX3NhbmRib3hFeHRlbnNpb24pOwogCiAg
ICAgaGFuZGxlLm1fc2FuZGJveEV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb25JbXBsOjpjcmVh
dGUoaW9LaXRDbGFzcy5jaGFyYWN0ZXJzKCksIFR5cGU6OklPS2l0LCBhdWRpdFRva2VuKTsKICAg
ICBpZiAoIWhhbmRsZS5tX3NhbmRib3hFeHRlbnNpb24pIHsKICAgICAgICAgTE9HX0VSUk9SKCJD
b3VsZCBub3QgY3JlYXRlIGEgc2FuZGJveCBleHRlbnNpb24gZm9yICclcyciLCBpb0tpdENsYXNz
LmNoYXJhY3RlcnMoKSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICB9CiAKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gV1RGTW92
ZShoYW5kbGUpOwogfQogCiBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSBTYW5kYm94RXh0
ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9ySU9LaXRDbGFzc0V4dGVuc2lvbnMoY29uc3QgVmVjdG9y
PEFTQ0lJTGl0ZXJhbD4mIGlva2l0Q2xhc3Nlcywgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90
PiBhdWRpdFRva2VuLCBPcHRpb25TZXQ8RmxhZ3M+IGZsYWdzKQogewotICAgIHJldHVybiBjcmVh
dGVIYW5kbGVzRm9yUmVzb3VyY2VzKGlva2l0Q2xhc3NlcywgRnVuY3Rpb248Ym9vbChjb25zdCBB
U0NJSUxpdGVyYWwmLCBIYW5kbGUmKT4oW2F1ZGl0VG9rZW4sIGZsYWdzXSAoY29uc3QgQVNDSUlM
aXRlcmFsJiBpb2tpdENsYXNzLCBIYW5kbGUmIGhhbmRsZSkgewotICAgICAgICBpZiAoIVNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvcklPS2l0Q2xhc3NFeHRlbnNpb24oaW9raXRDbGFz
cywgYXVkaXRUb2tlbiwgaGFuZGxlLCBmbGFncykpIHsKLSAgICAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAg
IHJldHVybiB0cnVlOworICAgIHJldHVybiBjcmVhdGVIYW5kbGVzRm9yUmVzb3VyY2VzKGlva2l0
Q2xhc3NlcywgRnVuY3Rpb248c3RkOjpvcHRpb25hbDxIYW5kbGU+KGNvbnN0IEFTQ0lJTGl0ZXJh
bCYpPihbYXVkaXRUb2tlbiwgZmxhZ3NdIChjb25zdCBBU0NJSUxpdGVyYWwmIGlva2l0Q2xhc3Mp
IHsKKyAgICAgICAgYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVG
b3JJT0tpdENsYXNzRXh0ZW5zaW9uKGlva2l0Q2xhc3MsIGF1ZGl0VG9rZW4sIGZsYWdzKTsKKyAg
ICAgICAgQVNTRVJUKGhhbmRsZSk7CisgICAgICAgIHJldHVybiBoYW5kbGU7CiAgICAgfSkpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TYW5kYm94RXh0ZW5zaW9uLmgg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TYW5kYm94RXh0ZW5zaW9uLmgKaW5kZXggNjRlYWQ4MjMy
OWM2YTFjM2MxMmRmYmI2NWUyYTE1MWQ4NTUwYzYyNS4uNzMxNzVjNDMyN2EyZWRiNTI0ODJiN2M3
NTk2MmQ5NTk0ZDVjMmQ4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2FuZGJv
eEV4dGVuc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NhbmRib3hFeHRlbnNpb24u
aApAQCAtMTEyLDE3ICsxMTIsMTcgQEAgcHVibGljOgogICAgIH07CiAgICAgCiAgICAgc3RhdGlj
IFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiBjcmVhdGUoSGFuZGxlJiYpOwotICAgIHN0YXRpYyBi
b29sIGNyZWF0ZUhhbmRsZShjb25zdCBTdHJpbmcmIHBhdGgsIFR5cGUsIEhhbmRsZSYpOworICAg
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4gY3JlYXRlSGFuZGxlKGNvbnN0IFN0cmluZyYg
cGF0aCwgVHlwZSk7CiAgICAgc3RhdGljIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IGNy
ZWF0ZVJlYWRPbmx5SGFuZGxlc0ZvckZpbGVzKEFTQ0lJTGl0ZXJhbCBsb2dMYWJlbCwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHBhdGhzKTsKLSAgICBzdGF0aWMgYm9vbCBjcmVhdGVIYW5kbGVXaXRo
b3V0UmVzb2x2aW5nUGF0aChjb25zdCBTdHJpbmcmIHBhdGgsIFR5cGUsIEhhbmRsZSYpOwotICAg
IHN0YXRpYyBib29sIGNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShjb25zdCBTdHJp
bmcmIHBhdGgsIEhhbmRsZSYpOyAvLyBXaWxsIGF0dGVtcHQgdG8gY3JlYXRlIHRoZSBkaXJlY3Rv
cnkuCi0gICAgc3RhdGljIFN0cmluZyBjcmVhdGVIYW5kbGVGb3JUZW1wb3JhcnlGaWxlKGNvbnN0
IFN0cmluZyYgcHJlZml4LCBUeXBlLCBIYW5kbGUmKTsKLSAgICBzdGF0aWMgYm9vbCBjcmVhdGVI
YW5kbGVGb3JHZW5lcmljRXh0ZW5zaW9uKEFTQ0lJTGl0ZXJhbCBleHRlbnNpb25DbGFzcywgSGFu
ZGxlJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiBjcmVhdGVIYW5kbGVXaXRo
b3V0UmVzb2x2aW5nUGF0aChjb25zdCBTdHJpbmcmIHBhdGgsIFR5cGUpOworICAgIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPEhhbmRsZT4gY3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KGNv
bnN0IFN0cmluZyYgcGF0aCk7IC8vIFdpbGwgYXR0ZW1wdCB0byBjcmVhdGUgdGhlIGRpcmVjdG9y
eS4KKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8SGFuZGxlLCBTdHJpbmc+PiBj
cmVhdGVIYW5kbGVGb3JUZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBUeXBlKTsK
KyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxIYW5kbGU+IGNyZWF0ZUhhbmRsZUZvckdlbmVyaWNF
eHRlbnNpb24oQVNDSUlMaXRlcmFsIGV4dGVuc2lvbkNsYXNzKTsKICNpZiBIQVZFKEFVRElUX1RP
S0VOKQotICAgIHN0YXRpYyBib29sIGNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoQVNDSUlMaXRl
cmFsIHNlcnZpY2UsIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4sIEhhbmRsZSYsIE9wdGlv
blNldDxGbGFncz4gPSBGbGFnczo6RGVmYXVsdCk7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
SGFuZGxlPiBjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKEFTQ0lJTGl0ZXJhbCBzZXJ2aWNlLCBz
dGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+LCBPcHRpb25TZXQ8RmxhZ3M+ID0gRmxhZ3M6OkRl
ZmF1bHQpOwogICAgIHN0YXRpYyBIYW5kbGVBcnJheSBjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1
cChjb25zdCBWZWN0b3I8QVNDSUlMaXRlcmFsPiYgc2VydmljZXMsIHN0ZDo6b3B0aW9uYWw8YXVk
aXRfdG9rZW5fdD4sIE9wdGlvblNldDxGbGFncz4gPSBGbGFnczo6RGVmYXVsdCk7Ci0gICAgc3Rh
dGljIGJvb2wgY3JlYXRlSGFuZGxlRm9yUmVhZEJ5QXVkaXRUb2tlbihjb25zdCBTdHJpbmcmIHBh
dGgsIGF1ZGl0X3Rva2VuX3QsIEhhbmRsZSYpOwotICAgIHN0YXRpYyBib29sIGNyZWF0ZUhhbmRs
ZUZvcklPS2l0Q2xhc3NFeHRlbnNpb24oQVNDSUlMaXRlcmFsIGlva2l0Q2xhc3MsIHN0ZDo6b3B0
aW9uYWw8YXVkaXRfdG9rZW5fdD4sIEhhbmRsZSYsIE9wdGlvblNldDxGbGFncz4gPSBGbGFnczo6
RGVmYXVsdCk7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiBjcmVhdGVIYW5kbGVG
b3JSZWFkQnlBdWRpdFRva2VuKGNvbnN0IFN0cmluZyYgcGF0aCwgYXVkaXRfdG9rZW5fdCk7Cisg
ICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiBjcmVhdGVIYW5kbGVGb3JJT0tpdENsYXNz
RXh0ZW5zaW9uKEFTQ0lJTGl0ZXJhbCBpb2tpdENsYXNzLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rv
a2VuX3Q+LCBPcHRpb25TZXQ8RmxhZ3M+ID0gRmxhZ3M6OkRlZmF1bHQpOwogICAgIHN0YXRpYyBI
YW5kbGVBcnJheSBjcmVhdGVIYW5kbGVzRm9ySU9LaXRDbGFzc0V4dGVuc2lvbnMoY29uc3QgVmVj
dG9yPEFTQ0lJTGl0ZXJhbD4mIGlva2l0Q2xhc3Nlcywgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tl
bl90PiwgT3B0aW9uU2V0PEZsYWdzPiA9IEZsYWdzOjpEZWZhdWx0KTsKICNlbmRpZgogICAgIH5T
YW5kYm94RXh0ZW5zaW9uKCk7CkBAIC0xNjIsMTIgKzE2MiwxMiBAQCBpbmxpbmUgY29uc3QgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlKiBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6ZW5k
KCkgY29ucwogaW5saW5lIHZvaWQgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6OmVuY29k
ZShJUEM6OkVuY29kZXImKSBjb25zdCB7IH0KIGlubGluZSBhdXRvIFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZUFycmF5OjpkZWNvZGUoSVBDOjpEZWNvZGVyJikgLT4gc3RkOjpvcHRpb25hbDxIYW5k
bGVBcnJheT4geyByZXR1cm4geyBIYW5kbGVBcnJheSgpIH07IH0KIGlubGluZSBSZWZQdHI8U2Fu
ZGJveEV4dGVuc2lvbj4gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKEhhbmRsZSYmKSB7IHJldHVy
biBudWxscHRyOyB9Ci1pbmxpbmUgYm9vbCBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUo
Y29uc3QgU3RyaW5nJiwgVHlwZSwgSGFuZGxlJikgeyByZXR1cm4gdHJ1ZTsgfQoraW5saW5lIGF1
dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGNvbnN0IFN0cmluZyYsIFR5cGUpIC0+
IHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiB7IHJldHVybiB7eyB9fTsgfQogaW5saW5lIFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZUFycmF5IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZVJlYWRPbmx5SGFu
ZGxlc0ZvckZpbGVzKEFTQ0lJTGl0ZXJhbCwgY29uc3QgVmVjdG9yPFN0cmluZz4mKSB7IHJldHVy
biB7IH07IH0KLWlubGluZSBib29sIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhv
dXRSZXNvbHZpbmdQYXRoKGNvbnN0IFN0cmluZyYsIFR5cGUsIEhhbmRsZSYpIHsgcmV0dXJuIHRy
dWU7IH0KLWlubGluZSBib29sIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRX
cml0ZURpcmVjdG9yeShjb25zdCBTdHJpbmcmLCBIYW5kbGUmKSB7IHJldHVybiB0cnVlOyB9Ci1p
bmxpbmUgU3RyaW5nIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclRlbXBvcmFyeUZp
bGUoY29uc3QgU3RyaW5nJiAvKnByZWZpeCovLCBUeXBlLCBIYW5kbGUmKSB7cmV0dXJuIFN0cmlu
ZygpO30KLWlubGluZSBib29sIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvckdlbmVy
aWNFeHRlbnNpb24oQVNDSUlMaXRlcmFsIC8qZXh0ZW5zaW9uQ2xhc3MqLywgSGFuZGxlJikgeyBy
ZXR1cm4gdHJ1ZTsgfQoraW5saW5lIGF1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
V2l0aG91dFJlc29sdmluZ1BhdGgoY29uc3QgU3RyaW5nJiwgVHlwZSkgLT4gc3RkOjpvcHRpb25h
bDxIYW5kbGU+IHsgcmV0dXJuIHt7IH19OyB9CitpbmxpbmUgYXV0byBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkoY29uc3QgU3RyaW5nJikgLT4gc3Rk
OjpvcHRpb25hbDxIYW5kbGU+IHsgcmV0dXJuIHt7IH19OyB9CitpbmxpbmUgYXV0byBTYW5kYm94
RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JUZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgLypw
cmVmaXgqLywgVHlwZSkgLT4gc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8SGFuZGxlLCBTdHJpbmc+
PiB7IHJldHVybiB7e3sgfSwgeyB9fX07IH0KK2lubGluZSBhdXRvIFNhbmRib3hFeHRlbnNpb246
OmNyZWF0ZUhhbmRsZUZvckdlbmVyaWNFeHRlbnNpb24oQVNDSUlMaXRlcmFsIC8qZXh0ZW5zaW9u
Q2xhc3MqLykgLT4gc3RkOjpvcHRpb25hbDxIYW5kbGU+IHsgcmV0dXJuIHt7IH19OyB9CiBpbmxp
bmUgU2FuZGJveEV4dGVuc2lvbjo6flNhbmRib3hFeHRlbnNpb24oKSB7IH0KIGlubGluZSBib29s
IFNhbmRib3hFeHRlbnNpb246OnJldm9rZSgpIHsgcmV0dXJuIHRydWU7IH0KIGlubGluZSBib29s
IFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWUoKSB7IHJldHVybiB0cnVlOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCmluZGV4IGM3
MTkwZjhmZjY4YWFmYzBkMWNmYzI3MDE2ZDQwZjE3NTE5NDI0OGQuLjUzZGRjZTgxN2Q1ZTE3MTI1
OGU2NDFkMzk1MmY5ZjMwYWRiNmUyNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCkBAIC0xNzcsMTMgKzE3NywxMSBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6YWRkUGxhdGZvcm1Mb2FkUGFyYW1ldGVycyhXZWJQcm9jZXNzUHJveHkm
IHByb2Nlc3MsIExvYWRQYXJhbQogICAgIAogI2lmIFBMQVRGT1JNKElPUykKICAgICBpZiAoIXBy
b2Nlc3MuaGFzTWFuYWdlZFNlc3Npb25TYW5kYm94QWNjZXNzKCkgJiYgW2dldFdlYkZpbHRlckV2
YWx1YXRvckNsYXNzKCkgaXNNYW5hZ2VkU2Vzc2lvbl0pIHsKLSAgICAgICAgU2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlIGhhbmRsZTsKLSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFu
ZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLnVpa2l0LnZpZXdzZXJ2aWNlLmNvbS5hcHBsZS5X
ZWJDb250ZW50RmlsdGVyLnJlbW90ZVVJIl9zLCBzdGQ6Om51bGxvcHQsIGhhbmRsZSk7Ci0gICAg
ICAgIGxvYWRQYXJhbWV0ZXJzLmNvbnRlbnRGaWx0ZXJFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3Zl
KGhhbmRsZSk7CisgICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS51aWtpdC52aWV3c2VydmljZS5jb20u
YXBwbGUuV2ViQ29udGVudEZpbHRlci5yZW1vdGVVSSJfcywgc3RkOjpudWxsb3B0KTsKKyAgICAg
ICAgICAgIGxvYWRQYXJhbWV0ZXJzLmNvbnRlbnRGaWx0ZXJFeHRlbnNpb25IYW5kbGUgPSBXVEZN
b3ZlKCpoYW5kbGUpOwogCi0gICAgICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBmcm9udGJv
YXJkU2VydmljZUV4dGVuc2lvbkhhbmRsZTsKLSAgICAgICAgaWYgKFNhbmRib3hFeHRlbnNpb246
OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5mcm9udGJvYXJkLnN5c3RlbWFw
cHNlcnZpY2VzIl9zLCBzdGQ6Om51bGxvcHQsIGZyb250Ym9hcmRTZXJ2aWNlRXh0ZW5zaW9uSGFu
ZGxlKSkKLSAgICAgICAgICAgIGxvYWRQYXJhbWV0ZXJzLmZyb250Ym9hcmRTZXJ2aWNlRXh0ZW5z
aW9uSGFuZGxlID0gV1RGTW92ZShmcm9udGJvYXJkU2VydmljZUV4dGVuc2lvbkhhbmRsZSk7Cisg
ICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZv
ck1hY2hMb29rdXAoImNvbS5hcHBsZS5mcm9udGJvYXJkLnN5c3RlbWFwcHNlcnZpY2VzIl9zLCBz
dGQ6Om51bGxvcHQsIGZyb250Ym9hcmRTZXJ2aWNlRXh0ZW5zaW9uSGFuZGxlKSkKKyAgICAgICAg
ICAgIGxvYWRQYXJhbWV0ZXJzLmZyb250Ym9hcmRTZXJ2aWNlRXh0ZW5zaW9uSGFuZGxlID0gV1RG
TW92ZSgqaGFuZGxlKTsKIAogICAgICAgICBwcm9jZXNzLm1hcmtIYXNNYW5hZ2VkU2Vzc2lvblNh
bmRib3hBY2Nlc3MoKTsKICAgICB9CkBAIC0xOTksMTAgKzE5NywxMSBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6Y3JlYXRlU2FuZGJveEV4dGVuc2lvbnNJZk5lZWRlZChjb25zdCBWZWN0b3I8U3RyaW5n
PiYgZmlsZXMsCiAgICAgICAgIEJPT0wgaXNEaXJlY3Rvcnk7CiAgICAgICAgIGlmIChbW05TRmls
ZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6ZmlsZXNbMF0gaXNEaXJl
Y3Rvcnk6JmlzRGlyZWN0b3J5XSAmJiAhaXNEaXJlY3RvcnkpIHsKICAgICAgICAgICAgIEFTU0VS
VChwcm9jZXNzKCkuY29ubmVjdGlvbigpICYmIHByb2Nlc3MoKS5jb25uZWN0aW9uKCktPmdldEF1
ZGl0VG9rZW4oKSk7Ci0gICAgICAgICAgICBpZiAocHJvY2VzcygpLmNvbm5lY3Rpb24oKSAmJiBw
cm9jZXNzKCkuY29ubmVjdGlvbigpLT5nZXRBdWRpdFRva2VuKCkpCi0gICAgICAgICAgICAgICAg
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZEJ5QXVkaXRUb2tlbigiLyIsICoo
cHJvY2VzcygpLmNvbm5lY3Rpb24oKS0+Z2V0QXVkaXRUb2tlbigpKSwgZmlsZVJlYWRIYW5kbGUp
OwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZUhhbmRsZSgiLyIsIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRPbmx5LCBmaWxlUmVh
ZEhhbmRsZSk7CisgICAgICAgICAgICBpZiAocHJvY2VzcygpLmNvbm5lY3Rpb24oKSAmJiBwcm9j
ZXNzKCkuY29ubmVjdGlvbigpLT5nZXRBdWRpdFRva2VuKCkpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkQnlB
dWRpdFRva2VuKCIvIiwgKihwcm9jZXNzKCkuY29ubmVjdGlvbigpLT5nZXRBdWRpdFRva2VuKCkp
KSkKKyAgICAgICAgICAgICAgICAgICAgZmlsZVJlYWRIYW5kbGUgPSBXVEZNb3ZlKCpoYW5kbGUp
OworICAgICAgICAgICAgfSBlbHNlIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246
OmNyZWF0ZUhhbmRsZSgiLyIsIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRPbmx5KSkKKyAg
ICAgICAgICAgICAgICBmaWxlUmVhZEhhbmRsZSA9IFdURk1vdmUoKmhhbmRsZSk7CiAgICAgICAg
ICAgICB3aWxsQWNxdWlyZVVuaXZlcnNhbEZpbGVSZWFkU2FuZGJveEV4dGVuc2lvbihtX3Byb2Nl
c3MpOwogICAgICAgICB9CiAgICAgfQpAQCAtMjEyLDcgKzIxMSw4IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpjcmVhdGVTYW5kYm94RXh0ZW5zaW9uc0lmTmVlZGVkKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBmaWxlcywKICAgICAgICAgTlNTdHJpbmcgKmZpbGUgPSBmaWxlc1tpXTsKICAgICAgICAgaWYg
KCFbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6ZmlsZV0p
CiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRl
SGFuZGxlKGZpbGUsIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRPbmx5LCBmaWxlVXBsb2Fk
SGFuZGxlc1tpXSk7CisgICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246
OmNyZWF0ZUhhbmRsZShmaWxlLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkT25seSkpCisg
ICAgICAgICAgICBmaWxlVXBsb2FkSGFuZGxlc1tpXSA9IFdURk1vdmUoKmhhbmRsZSk7CiAgICAg
fQogfQogCkBAIC02ODUsNyArNjg1LDggQEAgdm9pZCBXZWJQYWdlUHJveHk6Omxhc3ROYXZpZ2F0
aW9uV2FzQXBwSW5pdGlhdGVkKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYKIHZvaWQg
V2ViUGFnZVByb3h5OjpncmFudEFjY2Vzc1RvQXNzZXRTZXJ2aWNlcygpCiB7CiAgICAgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlIG1vYmlsZUFzc2V0SGFuZGxlVjI7Ci0gICAgU2FuZGJveEV4dGVu
c2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLm1vYmlsZWFzc2V0ZC52
MiJfcywgc3RkOjpudWxsb3B0LCBtb2JpbGVBc3NldEhhbmRsZVYyKTsKKyAgICBpZiAoYXV0byBo
YW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20u
YXBwbGUubW9iaWxlYXNzZXRkLnYyIl9zLCBzdGQ6Om51bGxvcHQpKQorICAgICAgICBtb2JpbGVB
c3NldEhhbmRsZVYyID0gV1RGTW92ZSgqaGFuZGxlKTsKICAgICBwcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6V2ViUHJvY2Vzczo6R3JhbnRBY2Nlc3NUb0Fzc2V0U2VydmljZXMobW9iaWxlQXNzZXRI
YW5kbGVWMiksIDApOwogfQogCkBAIC03MDIsNyArNzAzLDggQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnN3aXRjaEZyb21TdGF0aWNGb250UmVnaXN0cnlUb1VzZXJGb250UmVnaXN0cnkoKQogU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlIFdlYlBhZ2VQcm94eTo6Zm9udGRNYWNoRXh0ZW5zaW9uSGFuZGxl
KCkKIHsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgZm9udE1hY2hFeHRlbnNpb25IYW5k
bGU7Ci0gICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29t
LmFwcGxlLmZvbnRzIl9zLCBzdGQ6Om51bGxvcHQsIGZvbnRNYWNoRXh0ZW5zaW9uSGFuZGxlKTsK
KyAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JN
YWNoTG9va3VwKCJjb20uYXBwbGUuZm9udHMiX3MsIHN0ZDo6bnVsbG9wdCkpCisgICAgICAgIGZv
bnRNYWNoRXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqaGFuZGxlKTsKICAgICByZXR1cm4gZm9u
dE1hY2hFeHRlbnNpb25IYW5kbGU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0KaW5kZXggY2VhZjdmMjg2
Nzg4ZjNmNDg5YmI4MzUyZTAyMmU4NjQxNmY4N2MzMS4uZGM4MWIwOTc4ZDkyYTc5YjhmMTg5ZWI3
N2IwYzIwMzU5OWY1MDg3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0KQEAgLTE3OCw3ICsxNzgsOCBAQCB2
b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZFBhdGhuYW1lc0ZvclR5cGUoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aQogICAgICAgICAgICAgICAgIGF1dG8mIGZpbGVuYW1lID0g
cGF0aG5hbWVzW2ldOwogICAgICAgICAgICAgICAgIGlmICghW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1
bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmZpbGVuYW1lXSkKICAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFu
ZGxlKGZpbGVuYW1lLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkT25seSwgc2FuZGJveEV4
dGVuc2lvbnNbaV0pOworICAgICAgICAgICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZUhhbmRsZShmaWxlbmFtZSwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6
UmVhZE9ubHkpKQorICAgICAgICAgICAgICAgICAgICBzYW5kYm94RXh0ZW5zaW9uc1tpXSA9IFdU
Rk1vdmUoKmhhbmRsZSk7CiAgICAgICAgICAgICB9CiAjZW5kaWYKICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0K
aW5kZXggZWE2Zjc1NGIxZDcxMzA2YTI1ODZkZDQ2OTFjNjc2YTQwOWNkMjQ0ZS4uMWViMjdhOWJl
NWU2MGI5YTQ5MmViNDc3MWJkZTk3YzVhZjc5ZTMzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCkBAIC0zMjgsNyArMzI4
LDggQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyhj
b25zdCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MKIAogICAgIC8vIEZJWE1FOiBUaGlzIHNob3Vs
ZCByZWFsbHkgYmUgY29uZmlndXJhYmxlOyB3ZSBzaG91bGRuJ3QganVzdCBibGluZGx5IGFsbG93
IHJlYWQgYWNjZXNzIHRvIHRoZSBVSSBwcm9jZXNzIGJ1bmRsZS4KICAgICBwYXJhbWV0ZXJzLnVp
UHJvY2Vzc0J1bmRsZVJlc291cmNlUGF0aCA9IG1fcmVzb2x2ZWRQYXRocy51aVByb2Nlc3NCdW5k
bGVSZXNvdXJjZVBhdGg7Ci0gICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91
dFJlc29sdmluZ1BhdGgocGFyYW1ldGVycy51aVByb2Nlc3NCdW5kbGVSZXNvdXJjZVBhdGgsIFNh
bmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRPbmx5LCBwYXJhbWV0ZXJzLnVpUHJvY2Vzc0J1bmRs
ZVJlc291cmNlUGF0aEV4dGVuc2lvbkhhbmRsZSk7CisgICAgaWYgKGF1dG8gaGFuZGxlID0gU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgocGFyYW1ldGVy
cy51aVByb2Nlc3NCdW5kbGVSZXNvdXJjZVBhdGgsIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJl
YWRPbmx5KSkKKyAgICAgICAgcGFyYW1ldGVycy51aVByb2Nlc3NCdW5kbGVSZXNvdXJjZVBhdGhF
eHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKCpoYW5kbGUpOwogCiAgICAgcGFyYW1ldGVycy51aVBy
b2Nlc3NCdW5kbGVJZGVudGlmaWVyID0gYXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCk7CiAK
QEAgLTMzNiwyMCArMzM3LDI1IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlh
bGl6ZVdlYlByb2Nlc3MoY29uc3QgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzCiAgICAgcGFyYW1l
dGVycy50aHJvdWdocHV0UU9TID0gd2ViUHJvY2Vzc1Rocm91Z2hwdXRRT1MoKTsKICAgICAKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGlmICghbV9yZXNvbHZlZFBhdGhzLmNvb2tpZVN0
b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVh
dGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChtX3Jlc29sdmVkUGF0aHMuY29va2llU3RvcmFn
ZURpcmVjdG9yeSwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRlLCBwYXJhbWV0ZXJz
LmNvb2tpZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOworICAgIGlmICghbV9yZXNv
bHZlZFBhdGhzLmNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKSB7CisgICAgICAgIGlm
IChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNv
bHZpbmdQYXRoKG1fcmVzb2x2ZWRQYXRocy5jb29raWVTdG9yYWdlRGlyZWN0b3J5LCBTYW5kYm94
RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUpKQorICAgICAgICAgICAgcGFyYW1ldGVycy5jb29r
aWVTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqaGFuZGxlKTsKKyAg
ICB9CiAKLSAgICBpZiAoIW1fcmVzb2x2ZWRQYXRocy5jb250YWluZXJDYWNoZXNEaXJlY3Rvcnku
aXNFbXB0eSgpKQotICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0
UmVzb2x2aW5nUGF0aChtX3Jlc29sdmVkUGF0aHMuY29udGFpbmVyQ2FjaGVzRGlyZWN0b3J5LCBT
YW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUsIHBhcmFtZXRlcnMuY29udGFpbmVyQ2Fj
aGVzRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBpZiAoIW1fcmVzb2x2ZWRQYXRocy5j
b250YWluZXJDYWNoZXNEaXJlY3RvcnkuaXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChhdXRvIGhh
bmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRo
KG1fcmVzb2x2ZWRQYXRocy5jb250YWluZXJDYWNoZXNEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNp
b246OlR5cGU6OlJlYWRXcml0ZSkpCisgICAgICAgICAgICBwYXJhbWV0ZXJzLmNvbnRhaW5lckNh
Y2hlc0RpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoKmhhbmRsZSk7CisgICAgfQog
Ci0gICAgaWYgKCFtX3Jlc29sdmVkUGF0aHMuY29udGFpbmVyVGVtcG9yYXJ5RGlyZWN0b3J5Lmlz
RW1wdHkoKSkKLSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJl
c29sdmluZ1BhdGgobV9yZXNvbHZlZFBhdGhzLmNvbnRhaW5lclRlbXBvcmFyeURpcmVjdG9yeSwg
U2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRlLCBwYXJhbWV0ZXJzLmNvbnRhaW5lclRl
bXBvcmFyeURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CisgICAgaWYgKCFtX3Jlc29sdmVkUGF0
aHMuY29udGFpbmVyVGVtcG9yYXJ5RGlyZWN0b3J5LmlzRW1wdHkoKSkgeworICAgICAgICBpZiAo
YXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2
aW5nUGF0aChtX3Jlc29sdmVkUGF0aHMuY29udGFpbmVyVGVtcG9yYXJ5RGlyZWN0b3J5LCBTYW5k
Ym94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUpKQorICAgICAgICAgICAgcGFyYW1ldGVycy5j
b250YWluZXJUZW1wb3JhcnlEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKCpoYW5k
bGUpOworICAgIH0KICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoUkVNT1RF
X0lOU1BFQ1RPUikKICAgICBpZiAoV2ViUHJvY2Vzc1Byb3h5OjpzaG91bGRFbmFibGVSZW1vdGVJ
bnNwZWN0b3IoKSkgewotICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgZW5hYmxlUmVt
b3RlV2ViSW5zcGVjdG9yRXh0ZW5zaW9uSGFuZGxlOwotICAgICAgICBpZiAoU2FuZGJveEV4dGVu
c2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLndlYmluc3BlY3RvciJf
cywgc3RkOjpudWxsb3B0LCBlbmFibGVSZW1vdGVXZWJJbnNwZWN0b3JFeHRlbnNpb25IYW5kbGUp
KQotICAgICAgICAgICAgcGFyYW1ldGVycy5lbmFibGVSZW1vdGVXZWJJbnNwZWN0b3JFeHRlbnNp
b25IYW5kbGUgPSBXVEZNb3ZlKGVuYWJsZVJlbW90ZVdlYkluc3BlY3RvckV4dGVuc2lvbkhhbmRs
ZSk7CisgICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhh
bmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS53ZWJpbnNwZWN0b3IiX3MsIHN0ZDo6bnVsbG9w
dCkpCisgICAgICAgICAgICBwYXJhbWV0ZXJzLmVuYWJsZVJlbW90ZVdlYkluc3BlY3RvckV4dGVu
c2lvbkhhbmRsZSA9IFdURk1vdmUoKmhhbmRsZSk7CiAgICAgfQogI2VuZGlmCiAKQEAgLTM5NSw4
ICs0MDEsMTAgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJv
Y2Vzcyhjb25zdCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MKIAogI2lmIFBMQVRGT1JNKE1BQykg
fHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIGFuZCBy
ZWxhdGVkIHBhcmFtZXRlciB3aGVuIDxyZGFyOi8vcHJvYmxlbS8yOTQ0ODM2OD4gaXMgZml4ZWQu
Ci0gICAgaWYgKGlzU2FmYXJpICYmIG1lZGlhRGV2aWNlc0VuYWJsZWQgJiYgIW1fZGVmYXVsdFBh
Z2VHcm91cC0+cHJlZmVyZW5jZXMoKS5jYXB0dXJlQXVkaW9JblVJUHJvY2Vzc0VuYWJsZWQoKSAm
JiAhbV9kZWZhdWx0UGFnZUdyb3VwLT5wcmVmZXJlbmNlcygpLmNhcHR1cmVBdWRpb0luR1BVUHJv
Y2Vzc0VuYWJsZWQoKSkKLSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9y
R2VuZXJpY0V4dGVuc2lvbigiY29tLmFwcGxlLndlYmtpdC5taWNyb3Bob25lIl9zLCBwYXJhbWV0
ZXJzLmF1ZGlvQ2FwdHVyZUV4dGVuc2lvbkhhbmRsZSk7CisgICAgaWYgKGlzU2FmYXJpICYmIG1l
ZGlhRGV2aWNlc0VuYWJsZWQgJiYgIW1fZGVmYXVsdFBhZ2VHcm91cC0+cHJlZmVyZW5jZXMoKS5j
YXB0dXJlQXVkaW9JblVJUHJvY2Vzc0VuYWJsZWQoKSAmJiAhbV9kZWZhdWx0UGFnZUdyb3VwLT5w
cmVmZXJlbmNlcygpLmNhcHR1cmVBdWRpb0luR1BVUHJvY2Vzc0VuYWJsZWQoKSkgeworICAgICAg
ICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JHZW5l
cmljRXh0ZW5zaW9uKCJjb20uYXBwbGUud2Via2l0Lm1pY3JvcGhvbmUiX3MpKQorICAgICAgICAg
ICAgcGFyYW1ldGVycy5hdWRpb0NhcHR1cmVFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKCpoYW5k
bGUpOworICAgIH0KICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKG1lZGlhRGV2aWNlc0VuYWJsZWQp
OwogI2VuZGlmCkBAIC00MzIsOSArNDQwLDggQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZv
cm1Jbml0aWFsaXplV2ViUHJvY2Vzcyhjb25zdCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MKICAg
ICBwYXJhbWV0ZXJzLnN5c3RlbUhhc0FDID0gY2FjaGVkU3lzdGVtSGFzQUMoKS52YWx1ZV9vcih0
cnVlKTsKIAogICAgIGlmIChyZXF1aXJlc0NvbnRhaW5lck1hbmFnZXJBY2Nlc3MoKSkgewotICAg
ICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgaGFuZGxlOwotICAgICAgICBTYW5kYm94RXh0
ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUuY29udGFpbmVybWFu
YWdlcmQiX3MsIHN0ZDo6bnVsbG9wdCwgaGFuZGxlKTsKLSAgICAgICAgcGFyYW1ldGVycy5jb250
YWluZXJNYW5hZ2VyRXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZShoYW5kbGUpOworICAgICAgICBp
ZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9v
a3VwKCJjb20uYXBwbGUuY29udGFpbmVybWFuYWdlcmQiX3MsIHN0ZDo6bnVsbG9wdCkpCisgICAg
ICAgICAgICBwYXJhbWV0ZXJzLmNvbnRhaW5lck1hbmFnZXJFeHRlbnNpb25IYW5kbGUgPSBXVEZN
b3ZlKCpoYW5kbGUpOwogICAgIH0KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC00NTMs
MTYgKzQ2MCwxNCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQ
cm9jZXNzKGNvbnN0IFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcwogCiAjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkgJiYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgIGlmICghX01HQ2FjaGVWYWxp
ZCgpKSB7Ci0gICAgICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBoYW5kbGU7Ci0gICAgICAg
IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5t
b2JpbGVnZXN0YWx0LnhwYyJfcywgc3RkOjpudWxsb3B0LCBoYW5kbGUpOwotICAgICAgICBwYXJh
bWV0ZXJzLm1vYmlsZUdlc3RhbHRFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKGhhbmRsZSk7Cisg
ICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZv
ck1hY2hMb29rdXAoImNvbS5hcHBsZS5tb2JpbGVnZXN0YWx0LnhwYyJfcywgc3RkOjpudWxsb3B0
KSkKKyAgICAgICAgICAgIHBhcmFtZXRlcnMubW9iaWxlR2VzdGFsdEV4dGVuc2lvbkhhbmRsZSA9
IFdURk1vdmUoKmhhbmRsZSk7CiAgICAgfQogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCi0g
ICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGxhdW5jaFNlcnZpY2VzRXh0ZW5zaW9uSGFuZGxl
OwotICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5h
cHBsZS5jb3Jlc2VydmljZXMubGF1bmNoc2VydmljZXNkIl9zLCBzdGQ6Om51bGxvcHQsIGxhdW5j
aFNlcnZpY2VzRXh0ZW5zaW9uSGFuZGxlKTsKLSAgICBwYXJhbWV0ZXJzLmxhdW5jaFNlcnZpY2Vz
RXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZShsYXVuY2hTZXJ2aWNlc0V4dGVuc2lvbkhhbmRsZSk7
CisgICAgaWYgKGF1dG8gbGF1bmNoU2VydmljZXNFeHRlbnNpb25IYW5kbGUgPSBTYW5kYm94RXh0
ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUuY29yZXNlcnZpY2Vz
LmxhdW5jaHNlcnZpY2VzZCJfcywgc3RkOjpudWxsb3B0KSkKKyAgICAgICAgcGFyYW1ldGVycy5s
YXVuY2hTZXJ2aWNlc0V4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoKmxhdW5jaFNlcnZpY2VzRXh0
ZW5zaW9uSGFuZGxlKTsKICNlbmRpZgogCiAjaWYgSEFWRShWSURFT19SRVNUUklDVEVEX0RFQ09E
SU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
UHJveHkuY3BwCmluZGV4IGM2MWJiM2ZkMmVlMDQ2ZjM4MjRjNDBhYjk5MTgxYzBmY2VlMmExOTcu
LmNmYmU3NjI4YzI4YzlmOGY0MjU4M2FkOTcxOTc2OTVlMDU2NjQ1OTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHAKQEAgLTEw
Nyw4ICsxMDcsMTEgQEAgdm9pZCBEb3dubG9hZFByb3h5OjpwdWJsaXNoUHJvZ3Jlc3MoY29uc3Qg
VVJMJiBVUkwpCiAgICAgICAgIHJldHVybjsKIAogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZSBoYW5kbGU7Ci0gICAgYm9vbCBjcmVhdGVkU2FuZGJveEV4dGVuc2lvbiA9IFNhbmRib3hFeHRl
bnNpb246OmNyZWF0ZUhhbmRsZShVUkwuZmlsZVN5c3RlbVBhdGgoKSwgU2FuZGJveEV4dGVuc2lv
bjo6VHlwZTo6UmVhZFdyaXRlLCBoYW5kbGUpOwotICAgIEFTU0VSVF9VTlVTRUQoY3JlYXRlZFNh
bmRib3hFeHRlbnNpb24sIGNyZWF0ZWRTYW5kYm94RXh0ZW5zaW9uKTsKKyAgICBpZiAoYXV0byBj
cmVhdGVkSGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKFVSTC5maWxlU3lz
dGVtUGF0aCgpLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUpKQorICAgICAgICBo
YW5kbGUgPSBXVEZNb3ZlKCpjcmVhdGVkSGFuZGxlKTsKKyAgICBlbHNlCisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworCiAgICAgbV9kYXRhU3RvcmUtPm5ldHdvcmtQcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlB1Ymxpc2hEb3dubG9hZFByb2dyZXNzKG1fZG93
bmxvYWRJRCwgVVJMLCBoYW5kbGUpLCAwKTsKIH0KICNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkK
QEAgLTE2Myw4ICsxNjYsMTAgQEAgdm9pZCBEb3dubG9hZFByb3h5OjpkZWNpZGVEZXN0aW5hdGlv
bldpdGhTdWdnZXN0ZWRGaWxlbmFtZShjb25zdCBXZWJDb3JlOjpSZXNvdXIKIAogICAgIG1fY2xp
ZW50LT5kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSgqdGhpcywgcmVzcG9u
c2UsIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzYW5pdGl6ZVN1Z2dlc3RlZEZpbGVuYW1lKHN1Z2dl
c3RlZEZpbGVuYW1lKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKEFsbG93T3Zlcndy
aXRlIGFsbG93T3ZlcndyaXRlLCBTdHJpbmcgZGVzdGluYXRpb24pIG11dGFibGUgewogICAgICAg
ICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZTsKLSAgICAg
ICAgaWYgKCFkZXN0aW5hdGlvbi5pc051bGwoKSkKLSAgICAgICAgICAgIFNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZUhhbmRsZShkZXN0aW5hdGlvbiwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVh
ZFdyaXRlLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICAgICAgaWYgKCFkZXN0aW5hdGlv
bi5pc051bGwoKSkgeworICAgICAgICAgICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVu
c2lvbjo6Y3JlYXRlSGFuZGxlKGRlc3RpbmF0aW9uLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpS
ZWFkV3JpdGUpKQorICAgICAgICAgICAgICAgIHNhbmRib3hFeHRlbnNpb25IYW5kbGUgPSBXVEZN
b3ZlKCpoYW5kbGUpOworICAgICAgICB9CiAKICAgICAgICAgc2V0RGVzdGluYXRpb25GaWxlbmFt
ZShkZXN0aW5hdGlvbik7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGRlc3RpbmF0aW9uLCBX
VEZNb3ZlKHNhbmRib3hFeHRlbnNpb25IYW5kbGUpLCBhbGxvd092ZXJ3cml0ZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuY3BwCmluZGV4IGU3YWE1
OGIyZmM1ZmEyZDZjMTIzOWJiOGJjZTUyMmYwMDA1M2Y5ODUuLjcxNWU3ZjAzMDJhZTE5ZjQxYzA1
YWZlMDJhMzZmOWQxNGQ5NDVkNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0dQVS9HUFVQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQ
VS9HUFVQcm9jZXNzUHJveHkuY3BwCkBAIC0xNDMsNyArMTQzLDggQEAgR1BVUHJvY2Vzc1Byb3h5
OjpHUFVQcm9jZXNzUHJveHkoKQogI2lmIFBMQVRGT1JNKE1BQykKICAgICAvLyBGSVhNRTogUmVt
b3ZlIHRoaXMgYW5kIHJlbGF0ZWQgcGFyYW1ldGVyIHdoZW4gPHJkYXI6Ly9wcm9ibGVtLzI5NDQ4
MzY4PiBpcyBmaXhlZC4KICAgICBpZiAoTWFjQXBwbGljYXRpb246OmlzU2FmYXJpKCkpIHsKLSAg
ICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yR2VuZXJpY0V4dGVuc2lvbigi
Y29tLmFwcGxlLndlYmtpdC5taWNyb3Bob25lIl9zLCBwYXJhbWV0ZXJzLm1pY3JvcGhvbmVTYW5k
Ym94RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICAgICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4
dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yR2VuZXJpY0V4dGVuc2lvbigiY29tLmFwcGxlLndlYmtp
dC5taWNyb3Bob25lIl9zKSkKKyAgICAgICAgICAgIHBhcmFtZXRlcnMubWljcm9waG9uZVNhbmRi
b3hFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKCpoYW5kbGUpOwogICAgICAgICBtX2hhc1NlbnRN
aWNyb3Bob25lU2FuZGJveEV4dGVuc2lvbiA9IHRydWU7CiAgICAgfQogI2VuZGlmCkBAIC0xNTUs
MTEgKzE1NiwxNSBAQCBHUFVQcm9jZXNzUHJveHk6OkdQVVByb2Nlc3NQcm94eSgpCiAgICAgYXV0
byBjb250YWluZXJDYWNoZXNEaXJlY3RvcnkgPSByZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGly
ZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihncHVQcm9jZXNzQ2FjaGVzRGlyZWN0b3J5KCkpOwog
ICAgIGF1dG8gY29udGFpbmVyVGVtcG9yYXJ5RGlyZWN0b3J5ID0gcmVzb2x2ZUFuZENyZWF0ZVJl
YWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24oV2ViUHJvY2Vzc1Bvb2w6OmNvbnRh
aW5lclRlbXBvcmFyeURpcmVjdG9yeSgpKTsKIAotICAgIGlmICghY29udGFpbmVyQ2FjaGVzRGly
ZWN0b3J5LmlzRW1wdHkoKSkKLSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
V2l0aG91dFJlc29sdmluZ1BhdGgoY29udGFpbmVyQ2FjaGVzRGlyZWN0b3J5LCBTYW5kYm94RXh0
ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUsIHBhcmFtZXRlcnMuY29udGFpbmVyQ2FjaGVzRGlyZWN0
b3J5RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBpZiAoIWNvbnRhaW5lckNhY2hlc0RpcmVjdG9yeS5p
c0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6
Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgoY29udGFpbmVyQ2FjaGVzRGlyZWN0b3J5
LCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUpKQorICAgICAgICAgICAgcGFyYW1l
dGVycy5jb250YWluZXJDYWNoZXNEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKCpo
YW5kbGUpOworICAgIH0KIAotICAgIGlmICghY29udGFpbmVyVGVtcG9yYXJ5RGlyZWN0b3J5Lmlz
RW1wdHkoKSkKLSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJl
c29sdmluZ1BhdGgoY29udGFpbmVyVGVtcG9yYXJ5RGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9u
OjpUeXBlOjpSZWFkV3JpdGUsIHBhcmFtZXRlcnMuY29udGFpbmVyVGVtcG9yYXJ5RGlyZWN0b3J5
RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBpZiAoIWNvbnRhaW5lclRlbXBvcmFyeURpcmVjdG9yeS5p
c0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6
Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgoY29udGFpbmVyVGVtcG9yYXJ5RGlyZWN0
b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUpKQorICAgICAgICAgICAgcGFy
YW1ldGVycy5jb250YWluZXJUZW1wb3JhcnlEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUgPSBXVEZN
b3ZlKCpoYW5kbGUpOworICAgIH0KICNlbmRpZgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgaWYgKFdlYkNvcmU6OmRldmljZUhhc0FHWENvbXBpbGVyU2VydmljZSgpKSB7CkBAIC0xOTks
NTQgKzIwNCw1NCBAQCB2b2lkIEdQVVByb2Nlc3NQcm94eTo6c2V0T3JpZW50YXRpb25Gb3JNZWRp
YUNhcHR1cmUodWludDY0X3Qgb3JpZW50YXRpb24pCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBhZGRD
YW1lcmFTYW5kYm94RXh0ZW5zaW9ucyhWZWN0b3I8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiYg
ZXh0ZW5zaW9ucykKIHsKLSAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVu
c2lvbkhhbmRsZTsKLSAgICBpZiAoIVNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvckdl
bmVyaWNFeHRlbnNpb24oImNvbS5hcHBsZS53ZWJraXQuY2FtZXJhIl9zLCBzYW5kYm94RXh0ZW5z
aW9uSGFuZGxlKSkgeworICAgIGF1dG8gc2FuZGJveEV4dGVuc2lvbkhhbmRsZSA9IFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvckdlbmVyaWNFeHRlbnNpb24oImNvbS5hcHBsZS53ZWJr
aXQuY2FtZXJhIl9zKTsKKyAgICBpZiAoIXNhbmRib3hFeHRlbnNpb25IYW5kbGUpIHsKICAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoV2ViUlRDLCAiVW5hYmxlIHRvIGNyZWF0ZSBjb20uYXBwbGUu
d2Via2l0LmNhbWVyYSBzYW5kYm94IGV4dGVuc2lvbiIpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogI2lmIEhBVkUoQVVESVRfVE9LRU4pCiAgICAgICAgIGlmIChzaG91bGRDcmVhdGVB
cHBsZUNhbWVyYVNlcnZpY2VTYW5kYm94RXh0ZW5zaW9uKCkpIHsKLSAgICAgICAgICAgIFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSBhcHBsZUNhbWVyYVNlcnZpY2VQYXRoU2FuZGJveEV4dGVuc2lv
bkhhbmRsZTsKLSAgICAgICAgICAgIGlmICghU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
Rm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLmFwcGxlY2FtZXJhZCJfcywgc3RkOjpudWxsb3B0LCBh
cHBsZUNhbWVyYVNlcnZpY2VQYXRoU2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpIHsKKyAgICAgICAg
ICAgIGF1dG8gYXBwbGVDYW1lcmFTZXJ2aWNlUGF0aFNhbmRib3hFeHRlbnNpb25IYW5kbGUgPSBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUuYXBw
bGVjYW1lcmFkIl9zLCBzdGQ6Om51bGxvcHQpOworICAgICAgICAgICAgaWYgKCFhcHBsZUNhbWVy
YVNlcnZpY2VQYXRoU2FuZGJveEV4dGVuc2lvbkhhbmRsZSkgewogICAgICAgICAgICAgICAgIFJF
TEVBU0VfTE9HX0VSUk9SKFdlYlJUQywgIlVuYWJsZSB0byBjcmVhdGUgY29tLmFwcGxlLmFwcGxl
Y2FtZXJhZCBzYW5kYm94IGV4dGVuc2lvbiIpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgICAgIH0KICNpZiBIQVZFKEFERElUSU9OQUxfQVBQTEVfQ0FNRVJBX1NFUlZJ
Q0UpCi0gICAgICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgYWRkaXRpb25hbEFwcGxl
Q2FtZXJhU2VydmljZVBhdGhTYW5kYm94RXh0ZW5zaW9uSGFuZGxlOwotICAgICAgICAgICAgaWYg
KCFTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUu
YXBwbGVoMTNjYW1lcmFkIl9zLCBzdGQ6Om51bGxvcHQsIGFkZGl0aW9uYWxBcHBsZUNhbWVyYVNl
cnZpY2VQYXRoU2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpIHsKKyAgICAgICAgICAgIGF1dG8gYWRk
aXRpb25hbEFwcGxlQ2FtZXJhU2VydmljZVBhdGhTYW5kYm94RXh0ZW5zaW9uSGFuZGxlID0gU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLmFwcGxl
aDEzY2FtZXJhZCJfcywgc3RkOjpudWxsb3B0KTsKKyAgICAgICAgICAgIGlmICghYWRkaXRpb25h
bEFwcGxlQ2FtZXJhU2VydmljZVBhdGhTYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSB7CiAgICAgICAg
ICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoV2ViUlRDLCAiVW5hYmxlIHRvIGNyZWF0ZSBjb20u
YXBwbGUuYXBwbGVoMTNjYW1lcmFkIHNhbmRib3ggZXh0ZW5zaW9uIik7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZXh0ZW5zaW9ucy5h
cHBlbmQoV1RGTW92ZShhZGRpdGlvbmFsQXBwbGVDYW1lcmFTZXJ2aWNlUGF0aFNhbmRib3hFeHRl
bnNpb25IYW5kbGUpKTsKKyAgICAgICAgICAgIGV4dGVuc2lvbnMuYXBwZW5kKFdURk1vdmUoKmFk
ZGl0aW9uYWxBcHBsZUNhbWVyYVNlcnZpY2VQYXRoU2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOwog
I2VuZGlmCi0gICAgICAgICAgICBleHRlbnNpb25zLmFwcGVuZChXVEZNb3ZlKGFwcGxlQ2FtZXJh
U2VydmljZVBhdGhTYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSk7CisgICAgICAgICAgICBleHRlbnNp
b25zLmFwcGVuZChXVEZNb3ZlKCphcHBsZUNhbWVyYVNlcnZpY2VQYXRoU2FuZGJveEV4dGVuc2lv
bkhhbmRsZSkpOwogICAgICAgICB9CiAjZW5kaWYgLy8gSEFWRShBVURJVF9UT0tFTikKIAotICAg
IGV4dGVuc2lvbnMuYXBwZW5kKFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOworICAg
IGV4dGVuc2lvbnMuYXBwZW5kKFdURk1vdmUoKnNhbmRib3hFeHRlbnNpb25IYW5kbGUpKTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIGFkZE1pY3JvcGhvbmVTYW5k
Ym94RXh0ZW5zaW9uKFZlY3RvcjxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+JiBleHRlbnNpb25z
KQogewotICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxl
OwotICAgIGlmICghU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yR2VuZXJpY0V4dGVu
c2lvbigiY29tLmFwcGxlLndlYmtpdC5taWNyb3Bob25lIl9zLCBzYW5kYm94RXh0ZW5zaW9uSGFu
ZGxlKSkgeworICAgIGF1dG8gc2FuZGJveEV4dGVuc2lvbkhhbmRsZSA9IFNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZUhhbmRsZUZvckdlbmVyaWNFeHRlbnNpb24oImNvbS5hcHBsZS53ZWJraXQubWlj
cm9waG9uZSJfcyk7CisgICAgaWYgKCFzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSB7CiAgICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SKFdlYlJUQywgIlVuYWJsZSB0byBjcmVhdGUgY29tLmFwcGxlLndl
YmtpdC5taWNyb3Bob25lIHNhbmRib3ggZXh0ZW5zaW9uIik7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9Ci0gICAgZXh0ZW5zaW9ucy5hcHBlbmQoV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9u
SGFuZGxlKSk7CisgICAgZXh0ZW5zaW9ucy5hcHBlbmQoV1RGTW92ZSgqc2FuZGJveEV4dGVuc2lv
bkhhbmRsZSkpOwogICAgIHJldHVybiB0cnVlOwogfQogCiAjaWYgUExBVEZPUk0oSU9TKQogc3Rh
dGljIGlubGluZSBib29sIGFkZFRDQ0RTYW5kYm94RXh0ZW5zaW9uKFZlY3RvcjxTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGU+JiBleHRlbnNpb25zKQogewotICAgIFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlOwotICAgIGlmICghU2FuZGJveEV4dGVuc2lvbjo6
Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLnRjY2QiX3MsIHN0ZDo6bnVsbG9w
dCwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpIHsKKyAgICBhdXRvIGhhbmRsZSA9IFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS50Y2NkIl9zLCBz
dGQ6Om51bGxvcHQpOworICAgIGlmICghaGFuZGxlKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SKFdlYlJUQywgIlVuYWJsZSB0byBjcmVhdGUgY29tLmFwcGxlLnRjY2Qgc2FuZGJveCBleHRl
bnNpb24iKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICBleHRlbnNpb25zLmFw
cGVuZChXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25IYW5kbGUpKTsKKyAgICBleHRlbnNpb25zLmFw
cGVuZChXVEZNb3ZlKCpoYW5kbGUpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KICNlbmRpZgpAQCAt
NDU0LDE0ICs0NTksMTggQEAgc3RhdGljIGlubGluZSBHUFVQcm9jZXNzU2Vzc2lvblBhcmFtZXRl
cnMgZ3B1UHJvY2Vzc1Nlc3Npb25QYXJhbWV0ZXJzKGNvbnN0IFdlYnMKIAogICAgIHBhcmFtZXRl
cnMubWVkaWFDYWNoZURpcmVjdG9yeSA9IHN0b3JlLnJlc29sdmVkTWVkaWFDYWNoZURpcmVjdG9y
eSgpOwogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBtZWRpYUNhY2hlRGlyZWN0b3J5RXh0
ZW5zaW9uSGFuZGxlOwotICAgIGlmICghcGFyYW1ldGVycy5tZWRpYUNhY2hlRGlyZWN0b3J5Lmlz
RW1wdHkoKSkKLSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJl
c29sdmluZ1BhdGgocGFyYW1ldGVycy5tZWRpYUNhY2hlRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5z
aW9uOjpUeXBlOjpSZWFkV3JpdGUsIHBhcmFtZXRlcnMubWVkaWFDYWNoZURpcmVjdG9yeVNhbmRi
b3hFeHRlbnNpb25IYW5kbGUpOworICAgIGlmICghcGFyYW1ldGVycy5tZWRpYUNhY2hlRGlyZWN0
b3J5LmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChwYXJhbWV0ZXJzLm1lZGlhQ2Fj
aGVEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0ZSkpCisgICAgICAg
ICAgICBwYXJhbWV0ZXJzLm1lZGlhQ2FjaGVEaXJlY3RvcnlTYW5kYm94RXh0ZW5zaW9uSGFuZGxl
ID0gV1RGTW92ZSgqaGFuZGxlKTsKKyAgICB9CiAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRF
RF9NRURJQSkKICAgICBwYXJhbWV0ZXJzLm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkgPSBzdG9y
ZS5yZXNvbHZlZE1lZGlhS2V5c0RpcmVjdG9yeSgpOwogICAgIFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZSBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5U2FuZGJveEV4dGVuc2lvbkhhbmRsZTsKLSAg
ICBpZiAoIXBhcmFtZXRlcnMubWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpCi0g
ICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRo
KHBhcmFtZXRlcnMubWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSwgU2FuZGJveEV4dGVuc2lvbjo6
VHlwZTo6UmVhZFdyaXRlLCBwYXJhbWV0ZXJzLm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnlTYW5k
Ym94RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBpZiAoIXBhcmFtZXRlcnMubWVkaWFLZXlzU3RvcmFn
ZURpcmVjdG9yeS5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgocGFyYW1ldGVycy5t
ZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3Jp
dGUpKQorICAgICAgICAgICAgcGFyYW1ldGVycy5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5U2Fu
ZGJveEV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoKmhhbmRsZSk7CisgICAgfQogI2VuZGlmCiAK
ICAgICByZXR1cm4gcGFyYW1ldGVyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IDM3MWJiZGEwZTZiNDY2
YzBlNjYyNmU1ZDUwNmZhY2M3YjI3ZWZkNGMuLjdlNzBjNjNhMjM4NjkzMzQzMWUwYmY3M2IzYzdm
YzgyMmZhN2I4OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTUwLDEzICsxNTAsMjAgQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZW5kQ3JlYXRpb25QYXJhbWV0ZXJzVG9OZXdQcm9jZXNzKCkK
ICAgICBmb3IgKGF1dG8mIHNjaGVtZSA6IFdlYlByb2Nlc3NQb29sOjp1cmxTY2hlbWVzV2l0aEN1
c3RvbVByb3RvY29sSGFuZGxlcnMoKSkKICAgICAgICAgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVn
aXN0ZXJlZEZvckN1c3RvbVByb3RvY29scy5hcHBlbmQoc2NoZW1lKTsKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQotICAgIGlmIChTdHJpbmcgY29va2llU3RvcmFnZURpcmVjdG9yeSA9IFdlYlBy
b2Nlc3NQb29sOjpjb29raWVTdG9yYWdlRGlyZWN0b3J5KCk7ICFjb29raWVTdG9yYWdlRGlyZWN0
b3J5LmlzRW1wdHkoKSkKLSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9y
UmVhZFdyaXRlRGlyZWN0b3J5KGNvb2tpZVN0b3JhZ2VEaXJlY3RvcnksIHBhcmFtZXRlcnMuY29v
a2llU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7Ci0gICAgaWYgKFN0cmluZyBjb250
YWluZXJDYWNoZXNEaXJlY3RvcnkgPSBXZWJQcm9jZXNzUG9vbDo6bmV0d29ya2luZ0NhY2hlc0Rp
cmVjdG9yeSgpOyAhY29udGFpbmVyQ2FjaGVzRGlyZWN0b3J5LmlzRW1wdHkoKSkKLSAgICAgICAg
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KGNvbnRh
aW5lckNhY2hlc0RpcmVjdG9yeSwgcGFyYW1ldGVycy5jb250YWluZXJDYWNoZXNEaXJlY3RvcnlF
eHRlbnNpb25IYW5kbGUpOwotICAgIGlmIChTdHJpbmcgcGFyZW50QnVuZGxlRGlyZWN0b3J5ID0g
V2ViUHJvY2Vzc1Bvb2w6OnBhcmVudEJ1bmRsZURpcmVjdG9yeSgpOyAhcGFyZW50QnVuZGxlRGly
ZWN0b3J5LmlzRW1wdHkoKSkKLSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
KHBhcmVudEJ1bmRsZURpcmVjdG9yeSwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHks
IHBhcmFtZXRlcnMucGFyZW50QnVuZGxlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKLSAgICBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JUZW1wb3JhcnlGaWxlKGVtcHR5U3RyaW5n
KCksIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0ZSwgcGFyYW1ldGVycy50ZW1wRGly
ZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBpZiAoU3RyaW5nIGNvb2tpZVN0b3JhZ2VEaXJl
Y3RvcnkgPSBXZWJQcm9jZXNzUG9vbDo6Y29va2llU3RvcmFnZURpcmVjdG9yeSgpOyAhY29va2ll
U3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKGF1dG8gaGFuZGxlID0g
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KGNvb2tp
ZVN0b3JhZ2VEaXJlY3RvcnkpKQorICAgICAgICAgICAgcGFyYW1ldGVycy5jb29raWVTdG9yYWdl
RGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqaGFuZGxlKTsKKyAgICB9CisgICAg
aWYgKFN0cmluZyBjb250YWluZXJDYWNoZXNEaXJlY3RvcnkgPSBXZWJQcm9jZXNzUG9vbDo6bmV0
d29ya2luZ0NhY2hlc0RpcmVjdG9yeSgpOyAhY29udGFpbmVyQ2FjaGVzRGlyZWN0b3J5LmlzRW1w
dHkoKSkgeworICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVh
dGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkoY29udGFpbmVyQ2FjaGVzRGlyZWN0b3J5KSkK
KyAgICAgICAgICAgIHBhcmFtZXRlcnMuY29udGFpbmVyQ2FjaGVzRGlyZWN0b3J5RXh0ZW5zaW9u
SGFuZGxlID0gV1RGTW92ZSgqaGFuZGxlKTsKKyAgICB9CisgICAgaWYgKFN0cmluZyBwYXJlbnRC
dW5kbGVEaXJlY3RvcnkgPSBXZWJQcm9jZXNzUG9vbDo6cGFyZW50QnVuZGxlRGlyZWN0b3J5KCk7
ICFwYXJlbnRCdW5kbGVEaXJlY3RvcnkuaXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChhdXRvIGhh
bmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShwYXJlbnRCdW5kbGVEaXJlY3Rv
cnksIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRPbmx5KSkKKyAgICAgICAgICAgIHBhcmFt
ZXRlcnMucGFyZW50QnVuZGxlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqaGFu
ZGxlKTsKKyAgICB9CisgICAgaWYgKGF1dG8gaGFuZGxlQW5kRmlsZVBhdGggPSBTYW5kYm94RXh0
ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JUZW1wb3JhcnlGaWxlKGVtcHR5U3RyaW5nKCksIFNhbmRi
b3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0ZSkpCisgICAgICAgIHBhcmFtZXRlcnMudGVtcERp
cmVjdG9yeUV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoaGFuZGxlQW5kRmlsZVBhdGgtPmZpcnN0
KTsKICNlbmRpZgogCiAjaWYgIVBMQVRGT1JNKEdUSykgJiYgIVBMQVRGT1JNKFdQRSkgLy8gR1RL
IGFuZCBXUEUgZG9uJ3QgdXNlIGRlZmF1bHROZXR3b3JrUHJvY2VzcwpAQCAtMTMwMSw4ICsxMzA4
LDEwIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmV0cmlldmVDYWNoZVN0b3JhZ2VQYXJh
bWV0ZXJzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JCiAKICAgICBhdXRvJiBjYWNoZVN0b3JhZ2VE
aXJlY3RvcnkgPSBzdG9yZS0+Y29uZmlndXJhdGlvbigpLmNhY2hlU3RvcmFnZURpcmVjdG9yeSgp
OwogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBjYWNoZVN0b3JhZ2VEaXJlY3RvcnlFeHRl
bnNpb25IYW5kbGU7Ci0gICAgaWYgKCFjYWNoZVN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKQot
ICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3Rv
cnkoY2FjaGVTdG9yYWdlRGlyZWN0b3J5LCBjYWNoZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25I
YW5kbGUpOworICAgIGlmICghY2FjaGVTdG9yYWdlRGlyZWN0b3J5LmlzRW1wdHkoKSkgeworICAg
ICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JS
ZWFkV3JpdGVEaXJlY3RvcnkoY2FjaGVTdG9yYWdlRGlyZWN0b3J5KSkKKyAgICAgICAgICAgIGNh
Y2hlU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoKmhhbmRsZSk7Cisg
ICAgfQogCiAgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldENhY2hlU3RvcmFn
ZVBhcmFtZXRlcnMgeyBzZXNzaW9uSUQsIGNhY2hlU3RvcmFnZURpcmVjdG9yeSwgY2FjaGVTdG9y
YWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlIH0sIDApOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291
cmNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlv
blJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyLmNwcAppbmRleCBjZjZmZTQyM2Q3OGI3
NjI5YjdmOTlkNWMxZmJlZGJjMTVjYWJjYjFkLi5iYzBjNzA4YTg2NDdiM2I2ZWIwNWMwMWFjMTJh
MDdjZjhjODIwN2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hS
ZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFT
b3VyY2VNYW5hZ2VyLmNwcApAQCAtNDksOSArNDksMTEgQEAgdm9pZCBTcGVlY2hSZWNvZ25pdGlv
blJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyOjphZGRTb3VyY2UoU3BlZWNoUmVjb2du
aXQKICAgICAgICAgbV9zb3VyY2VzTmVlZGluZ1NhbmRib3hFeHRlbnNpb24uYWRkKGlkZW50aWZp
ZXIpOwogICAgICAgICBpZiAobV9zb3VyY2VzTmVlZGluZ1NhbmRib3hFeHRlbnNpb24uc2l6ZSgp
ID09IDEpIHsKICAgICAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBoYW5kbGVGb3JU
Q0NEOwotICAgICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExv
b2t1cCgiY29tLmFwcGxlLnRjY2QiX3MsIG1fY29ubmVjdGlvbi0+Z2V0QXVkaXRUb2tlbigpLCBo
YW5kbGVGb3JUQ0NEKTsKKyAgICAgICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRl
bnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS50Y2NkIl9zLCBtX2Nv
bm5lY3Rpb24tPmdldEF1ZGl0VG9rZW4oKSkpCisgICAgICAgICAgICAgICAgaGFuZGxlRm9yVEND
RCA9IFdURk1vdmUoKmhhbmRsZSk7CiAgICAgICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUgaGFuZGxlRm9yTWljcm9waG9uZTsKLSAgICAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZUhhbmRsZUZvckdlbmVyaWNFeHRlbnNpb24oImNvbS5hcHBsZS53ZWJraXQubWljcm9waG9u
ZSJfcywgaGFuZGxlRm9yTWljcm9waG9uZSk7CisgICAgICAgICAgICBpZiAoYXV0byBoYW5kbGUg
PSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JHZW5lcmljRXh0ZW5zaW9uKCJjb20u
YXBwbGUud2Via2l0Lm1pY3JvcGhvbmUiX3MpKQorICAgICAgICAgICAgICAgIGhhbmRsZUZvck1p
Y3JvcGhvbmUgPSBXVEZNb3ZlKCpoYW5kbGUpOwogICAgICAgICAgICAgc2VuZChNZXNzYWdlczo6
U3BlZWNoUmVjb2duaXRpb25SZWFsdGltZU1lZGlhU291cmNlTWFuYWdlcjo6R3JhbnRTYW5kYm94
RXh0ZW5zaW9ucyhoYW5kbGVGb3JUQ0NELCBoYW5kbGVGb3JNaWNyb3Bob25lKSk7CiAgICAgICAg
IH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKaW5kZXggYmY2NWQz
NjQ2NDJiNTZmZjhlM2Y0YjdiZTllMjkzNGQ5NDQwNDU0MS4uOTBkOGFlNjlkNTI2OWZlNDk1Mjcy
MGFhNzc1MmVlNDAzYzE5NTUwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNw
cApAQCAtMjkyLDcgKzI5Miw4IEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyUHJveHk6OmZpbmlzaEdyYW50aW5nUmVxdWVzdChVc2VyTWVkaWFQZXJtCiAgICAgICAgIFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZSBoYW5kbGU7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
ICAgIGlmICghbV9oYXNDcmVhdGVkU2FuZGJveEV4dGVuc2lvbkZvclRDQ0QgJiYgZG9lc1BhZ2VO
ZWVkVENDRChtX3BhZ2UpKSB7Ci0gICAgICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVI
YW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUudGNjZCJfcywgbV9wYWdlLnByb2Nlc3MoKS5j
b25uZWN0aW9uKCktPmdldEF1ZGl0VG9rZW4oKSwgaGFuZGxlKTsKKyAgICAgICAgICAgIGlmIChh
dXRvIGNyZWF0ZWRIYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNo
TG9va3VwKCJjb20uYXBwbGUudGNjZCJfcywgbV9wYWdlLnByb2Nlc3MoKS5jb25uZWN0aW9uKCkt
PmdldEF1ZGl0VG9rZW4oKSkpCisgICAgICAgICAgICAgICAgaGFuZGxlID0gV1RGTW92ZSgqY3Jl
YXRlZEhhbmRsZSk7CiAgICAgICAgICAgICBtX2hhc0NyZWF0ZWRTYW5kYm94RXh0ZW5zaW9uRm9y
VENDRCA9IHRydWU7CiAgICAgICAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuY3BwCmluZGV4IDk0NjAyYmM0NWM1MTll
ZDllMjBjN2M0YjM1ZWZkNzJhMmQ1ZWRhMDEuLmE4MTBmNTU2MjZjYmM2NDFkZTA0ZDEwMWFkNDk0
OTQyOTdlMTk3ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRp
YVByb2Nlc3NNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVk
aWFQcm9jZXNzTWFuYWdlci5jcHAKQEAgLTEwMCwxOCArMTAwLDMwIEBAIGJvb2wgVXNlck1lZGlh
UHJvY2Vzc01hbmFnZXI6OndpbGxDcmVhdGVNZWRpYVN0cmVhbShVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hCiAgICAgICAgICAgICBoYW5kbGVzLmFsbG9jYXRlKGV4dGVuc2lvbkNvdW50KTsK
ICAgICAgICAgICAgIGlkcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGV4dGVuc2lvbkNvdW50KTsK
IAotICAgICAgICAgICAgaWYgKG5lZWRzQXVkaW9TYW5kYm94RXh0ZW5zaW9uICYmIFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvckdlbmVyaWNFeHRlbnNpb24oYXVkaW9FeHRlbnNpb25Q
YXRoLCBoYW5kbGVzWy0tZXh0ZW5zaW9uQ291bnRdKSkKLSAgICAgICAgICAgICAgICBpZHMudW5j
aGVja2VkQXBwZW5kKGF1ZGlvRXh0ZW5zaW9uUGF0aCk7CisgICAgICAgICAgICBpZiAobmVlZHNB
dWRpb1NhbmRib3hFeHRlbnNpb24pIHsKKyAgICAgICAgICAgICAgICBpZiAoYXV0byBoYW5kbGUg
PSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JHZW5lcmljRXh0ZW5zaW9uKGF1ZGlv
RXh0ZW5zaW9uUGF0aCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlc1stLWV4dGVuc2lv
bkNvdW50XSA9IFdURk1vdmUoKmhhbmRsZSk7CisgICAgICAgICAgICAgICAgICAgIGlkcy51bmNo
ZWNrZWRBcHBlbmQoYXVkaW9FeHRlbnNpb25QYXRoKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmIChuZWVkc1ZpZGVvU2FuZGJveEV4dGVuc2lvbiAm
JiBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JHZW5lcmljRXh0ZW5zaW9uKHZpZGVv
RXh0ZW5zaW9uUGF0aCwgaGFuZGxlc1stLWV4dGVuc2lvbkNvdW50XSkpCi0gICAgICAgICAgICAg
ICAgaWRzLnVuY2hlY2tlZEFwcGVuZCh2aWRlb0V4dGVuc2lvblBhdGgpOworICAgICAgICAgICAg
aWYgKG5lZWRzVmlkZW9TYW5kYm94RXh0ZW5zaW9uKSB7CisgICAgICAgICAgICAgICAgaWYgKGF1
dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yR2VuZXJpY0V4dGVu
c2lvbih2aWRlb0V4dGVuc2lvblBhdGgpKSB7CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZXNb
LS1leHRlbnNpb25Db3VudF0gPSBXVEZNb3ZlKCpoYW5kbGUpOworICAgICAgICAgICAgICAgICAg
ICBpZHMudW5jaGVja2VkQXBwZW5kKHZpZGVvRXh0ZW5zaW9uUGF0aCk7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAobmVlZHNBcHBsZUNhbWVyYVNh
bmRib3hFeHRlbnNpb24pIHsKLSAgICAgICAgICAgICAgICBpZiAoU2FuZGJveEV4dGVuc2lvbjo6
Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cChhcHBsZUNhbWVyYVNlcnZpY2VQYXRoLCBzdGQ6Om51
bGxvcHQsIGhhbmRsZXNbLS1leHRlbnNpb25Db3VudF0pKQorICAgICAgICAgICAgICAgIGlmIChh
dXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAo
YXBwbGVDYW1lcmFTZXJ2aWNlUGF0aCwgc3RkOjpudWxsb3B0KSkgeworICAgICAgICAgICAgICAg
ICAgICBoYW5kbGVzWy0tZXh0ZW5zaW9uQ291bnRdID0gV1RGTW92ZSgqaGFuZGxlKTsKICAgICAg
ICAgICAgICAgICAgICAgaWRzLnVuY2hlY2tlZEFwcGVuZChhcHBsZUNhbWVyYVNlcnZpY2VQYXRo
KTsKKyAgICAgICAgICAgICAgICB9CiAjaWYgSEFWRShBRERJVElPTkFMX0FQUExFX0NBTUVSQV9T
RVJWSUNFKQotICAgICAgICAgICAgICAgIGlmIChTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5k
bGVGb3JNYWNoTG9va3VwKGFkZGl0aW9uYWxBcHBsZUNhbWVyYVNlcnZpY2VQYXRoLCBzdGQ6Om51
bGxvcHQsIGhhbmRsZXNbLS1leHRlbnNpb25Db3VudF0pKQorICAgICAgICAgICAgICAgIGlmIChh
dXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAo
YWRkaXRpb25hbEFwcGxlQ2FtZXJhU2VydmljZVBhdGgsIHN0ZDo6bnVsbG9wdCkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgaGFuZGxlc1stLWV4dGVuc2lvbkNvdW50XSA9IFdURk1vdmUoKmhhbmRs
ZSk7CiAgICAgICAgICAgICAgICAgICAgIGlkcy51bmNoZWNrZWRBcHBlbmQoYWRkaXRpb25hbEFw
cGxlQ2FtZXJhU2VydmljZVBhdGgpOworICAgICAgICAgICAgICAgIH0KICNlbmRpZgogICAgICAg
ICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBi
YWY1NjJjNTE5ODNhNGU0N2ZkZGQyOTI4NGM5ODkwZjc1N2Q2M2NjLi40ODhiM2IyZDg4OTE2OGQy
NjQyN2I5NGUwZTNlNzI2YWY1M2JmODg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKQEAgLTEyNjUsMTEgKzEyNjUsMTkgQEAgdm9pZCBXZWJQYWdlUHJveHk6Om1h
eWJlSW5pdGlhbGl6ZVNhbmRib3hFeHRlbnNpb25IYW5kbGUoV2ViUHJvY2Vzc1Byb3h5JiBwcm9j
ZXMKICAgICAgICAgYm9vbCBjcmVhdGVkRXh0ZW5zaW9uID0gZmFsc2U7CiAjaWYgSEFWRShBVURJ
VF9UT0tFTikKICAgICAgICAgQVNTRVJUKHByb2Nlc3MuY29ubmVjdGlvbigpICYmIHByb2Nlc3Mu
Y29ubmVjdGlvbigpLT5nZXRBdWRpdFRva2VuKCkpOwotICAgICAgICBpZiAocHJvY2Vzcy5jb25u
ZWN0aW9uKCkgJiYgcHJvY2Vzcy5jb25uZWN0aW9uKCktPmdldEF1ZGl0VG9rZW4oKSkKLSAgICAg
ICAgICAgIGNyZWF0ZWRFeHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVG
b3JSZWFkQnlBdWRpdFRva2VuKHJlc291cmNlRGlyZWN0b3J5VVJMLmZpbGVTeXN0ZW1QYXRoKCks
ICoocHJvY2Vzcy5jb25uZWN0aW9uKCktPmdldEF1ZGl0VG9rZW4oKSksIHNhbmRib3hFeHRlbnNp
b25IYW5kbGUpOwotICAgICAgICBlbHNlCisgICAgICAgIGlmIChwcm9jZXNzLmNvbm5lY3Rpb24o
KSAmJiBwcm9jZXNzLmNvbm5lY3Rpb24oKS0+Z2V0QXVkaXRUb2tlbigpKSB7CisgICAgICAgICAg
ICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFk
QnlBdWRpdFRva2VuKHJlc291cmNlRGlyZWN0b3J5VVJMLmZpbGVTeXN0ZW1QYXRoKCksICoocHJv
Y2Vzcy5jb25uZWN0aW9uKCktPmdldEF1ZGl0VG9rZW4oKSkpKSB7CisgICAgICAgICAgICAgICAg
c2FuZGJveEV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoKmhhbmRsZSk7CisgICAgICAgICAgICAg
ICAgY3JlYXRlZEV4dGVuc2lvbiA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxz
ZQogI2VuZGlmCi0gICAgICAgICAgICBjcmVhdGVkRXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlSGFuZGxlKHJlc291cmNlRGlyZWN0b3J5VVJMLmZpbGVTeXN0ZW1QYXRoKCksIFNh
bmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRPbmx5LCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsK
KyAgICAgICAgeworICAgICAgICAgICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlSGFuZGxlKHJlc291cmNlRGlyZWN0b3J5VVJMLmZpbGVTeXN0ZW1QYXRoKCksIFNh
bmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRPbmx5KSkgeworICAgICAgICAgICAgICAgIHNhbmRi
b3hFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKCpoYW5kbGUpOworICAgICAgICAgICAgICAgIGNy
ZWF0ZWRFeHRlbnNpb24gPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CiAKICAgICAg
ICAgaWYgKGNyZWF0ZWRFeHRlbnNpb24pIHsKICAgICAgICAgICAgIHByb2Nlc3MuYXNzdW1lUmVh
ZEFjY2Vzc1RvQmFzZVVSTCgqdGhpcywgcmVzb3VyY2VEaXJlY3RvcnlVUkwuc3RyaW5nKCkpOwpA
QCAtMTI4NiwxMSArMTI5NCwxOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bWF5YmVJbml0aWFsaXpl
U2FuZGJveEV4dGVuc2lvbkhhbmRsZShXZWJQcm9jZXNzUHJveHkmIHByb2NlcwogICAgIGJvb2wg
Y3JlYXRlZEV4dGVuc2lvbiA9IGZhbHNlOwogI2lmIEhBVkUoQVVESVRfVE9LRU4pCiAgICAgQVNT
RVJUKHByb2Nlc3MuY29ubmVjdGlvbigpICYmIHByb2Nlc3MuY29ubmVjdGlvbigpLT5nZXRBdWRp
dFRva2VuKCkpOwotICAgIGlmIChwcm9jZXNzLmNvbm5lY3Rpb24oKSAmJiBwcm9jZXNzLmNvbm5l
Y3Rpb24oKS0+Z2V0QXVkaXRUb2tlbigpKQotICAgICAgICBjcmVhdGVkRXh0ZW5zaW9uID0gU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZEJ5QXVkaXRUb2tlbigiLyIsICoocHJv
Y2Vzcy5jb25uZWN0aW9uKCktPmdldEF1ZGl0VG9rZW4oKSksIHNhbmRib3hFeHRlbnNpb25IYW5k
bGUpOwotICAgIGVsc2UKKyAgICBpZiAocHJvY2Vzcy5jb25uZWN0aW9uKCkgJiYgcHJvY2Vzcy5j
b25uZWN0aW9uKCktPmdldEF1ZGl0VG9rZW4oKSkgeworICAgICAgICBpZiAoYXV0byBoYW5kbGUg
PSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkQnlBdWRpdFRva2VuKCIvIiwg
Kihwcm9jZXNzLmNvbm5lY3Rpb24oKS0+Z2V0QXVkaXRUb2tlbigpKSkpIHsKKyAgICAgICAgICAg
IGNyZWF0ZWRFeHRlbnNpb24gPSB0cnVlOworICAgICAgICAgICAgc2FuZGJveEV4dGVuc2lvbkhh
bmRsZSA9IFdURk1vdmUoKmhhbmRsZSk7CisgICAgICAgIH0KKyAgICB9IGVsc2UKICNlbmRpZgot
ICAgICAgICBjcmVhdGVkRXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
KCIvIiwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHksIHNhbmRib3hFeHRlbnNpb25I
YW5kbGUpOworICAgIHsKKyAgICAgICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlSGFuZGxlKCIvIiwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHkpKSB7
CisgICAgICAgICAgICBjcmVhdGVkRXh0ZW5zaW9uID0gdHJ1ZTsKKyAgICAgICAgICAgIHNhbmRi
b3hFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKCpoYW5kbGUpOworICAgICAgICB9CisgICAgfQog
CiAgICAgaWYgKGNyZWF0ZWRFeHRlbnNpb24pIHsKICAgICAgICAgd2lsbEFjcXVpcmVVbml2ZXJz
YWxGaWxlUmVhZFNhbmRib3hFeHRlbnNpb24ocHJvY2Vzcyk7CkBAIC0xMzA4LDExICsxMzI0LDE5
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjptYXliZUluaXRpYWxpemVTYW5kYm94RXh0ZW5zaW9uSGFu
ZGxlKFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzCiAgICAgaWYgKGJhc2VQYXRoLmlzTnVsbCgpKQog
ICAgICAgICByZXR1cm47CiAjaWYgSEFWRShBVURJVF9UT0tFTikKLSAgICBpZiAocHJvY2Vzcy5j
b25uZWN0aW9uKCkgJiYgcHJvY2Vzcy5jb25uZWN0aW9uKCktPmdldEF1ZGl0VG9rZW4oKSkKLSAg
ICAgICAgY3JlYXRlZEV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZv
clJlYWRCeUF1ZGl0VG9rZW4oYmFzZVBhdGgsICoocHJvY2Vzcy5jb25uZWN0aW9uKCktPmdldEF1
ZGl0VG9rZW4oKSksIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOwotICAgIGVsc2UKKyAgICBpZiAo
cHJvY2Vzcy5jb25uZWN0aW9uKCkgJiYgcHJvY2Vzcy5jb25uZWN0aW9uKCktPmdldEF1ZGl0VG9r
ZW4oKSkgeworICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVh
dGVIYW5kbGVGb3JSZWFkQnlBdWRpdFRva2VuKGJhc2VQYXRoLCAqKHByb2Nlc3MuY29ubmVjdGlv
bigpLT5nZXRBdWRpdFRva2VuKCkpKSkgeworICAgICAgICAgICAgc2FuZGJveEV4dGVuc2lvbkhh
bmRsZSA9IFdURk1vdmUoKmhhbmRsZSk7CisgICAgICAgICAgICBjcmVhdGVkRXh0ZW5zaW9uID0g
dHJ1ZTsKKyAgICAgICAgfQorICAgIH0gZWxzZQogI2VuZGlmCi0gICAgICAgIGNyZWF0ZWRFeHRl
bnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUoYmFzZVBhdGgsIFNhbmRib3hF
eHRlbnNpb246OlR5cGU6OlJlYWRPbmx5LCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICB7
CisgICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRs
ZShiYXNlUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHkpKSB7CisgICAgICAg
ICAgICBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqaGFuZGxlKTsKKyAgICAgICAg
ICAgIGNyZWF0ZWRFeHRlbnNpb24gPSB0cnVlOworICAgICAgICB9CisgICAgfQogCiAgICAgaWYg
KGNyZWF0ZWRFeHRlbnNpb24pCiAgICAgICAgIHByb2Nlc3MuYXNzdW1lUmVhZEFjY2Vzc1RvQmFz
ZVVSTCgqdGhpcywgYmFzZVVSTC5zdHJpbmcoKSk7CkBAIC03MDAxLDkgKzcwMjUsMTEgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsV2l0aERpc3BsYXlTdHJp
bmdBbmRJY29uKGNvbnN0IFZlY3QKIAogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBmcm9u
dGJvYXJkU2VydmljZXNTYW5kYm94RXh0ZW5zaW9uLCBpY29uU2VydmljZXNTYW5kYm94RXh0ZW5z
aW9uOwogI2lmIEhBVkUoRlJPTlRCT0FSRF9TWVNURU1fQVBQX1NFUlZJQ0VTKQotICAgIFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5mcm9udGJv
YXJkLnN5c3RlbWFwcHNlcnZpY2VzIl9zLCBzdGQ6Om51bGxvcHQsIGZyb250Ym9hcmRTZXJ2aWNl
c1NhbmRib3hFeHRlbnNpb24pOworICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5mcm9udGJvYXJkLnN5c3Rl
bWFwcHNlcnZpY2VzIl9zLCBzdGQ6Om51bGxvcHQpKQorICAgICAgICBmcm9udGJvYXJkU2Vydmlj
ZXNTYW5kYm94RXh0ZW5zaW9uID0gV1RGTW92ZSgqaGFuZGxlKTsKICNlbmRpZgotICAgIFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5pY29uc2Vy
dmljZXMiX3MsIHN0ZDo6bnVsbG9wdCwgaWNvblNlcnZpY2VzU2FuZGJveEV4dGVuc2lvbik7Cisg
ICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFj
aExvb2t1cCgiY29tLmFwcGxlLmljb25zZXJ2aWNlcyJfcywgc3RkOjpudWxsb3B0KSkKKyAgICAg
ICAgaWNvblNlcnZpY2VzU2FuZGJveEV4dGVuc2lvbiA9IFdURk1vdmUoKmhhbmRsZSk7CiAKICAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbFdpdGhE
aXNwbGF5U3RyaW5nQW5kSWNvbihmaWxlVVJMcywgZGlzcGxheVN0cmluZywgaWNvbkRhdGEgPyBp
Y29uRGF0YS0+ZGF0YVJlZmVyZW5jZSgpIDogSVBDOjpEYXRhUmVmZXJlbmNlKCksIGZyb250Ym9h
cmRTZXJ2aWNlc1NhbmRib3hFeHRlbnNpb24sIGljb25TZXJ2aWNlc1NhbmRib3hFeHRlbnNpb24p
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDY5
M2NhNjU1MTVjYTcyZDQxMDMzYzRjZTZjMzA5OWQyYjg3YWU4MmEuLjg2MTA2ZDExZWQ0YmJmODlj
NjM1NzQ5OGJjOTliYzNlZjdiYTU1YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5jcHAKQEAgLTY3MywyMCArNjczLDI2IEBAIFdlYlByb2Nlc3NEYXRhU3RvcmVQ
YXJhbWV0ZXJzIFdlYlByb2Nlc3NQb29sOjp3ZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycyhX
ZWJQCiAKICAgICBTdHJpbmcgYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA9IHdlYnNpdGVEYXRh
U3RvcmUucmVzb2x2ZWRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCk7CiAgICAgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlIGFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7
Ci0gICAgaWYgKCFhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSkKLSAgICAgICAg
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgoYXBwbGlj
YXRpb25DYWNoZURpcmVjdG9yeSwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRlLCBh
cHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBpZiAoIWFwcGxp
Y2F0aW9uQ2FjaGVEaXJlY3RvcnkuaXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChhdXRvIGhhbmRs
ZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKGFw
cGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0
ZSkpCisgICAgICAgICAgICBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxl
ID0gV1RGTW92ZSgqaGFuZGxlKTsKKyAgICB9CiAKICAgICBTdHJpbmcgYXBwbGljYXRpb25DYWNo
ZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSA9IHdlYnNpdGVEYXRhU3RvcmUuYXBwbGljYXRpb25D
YWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSgpOwogCiAgICAgU3RyaW5nIG1lZGlhQ2FjaGVE
aXJlY3RvcnkgPSB3ZWJzaXRlRGF0YVN0b3JlLnJlc29sdmVkTWVkaWFDYWNoZURpcmVjdG9yeSgp
OwogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBtZWRpYUNhY2hlRGlyZWN0b3J5RXh0ZW5z
aW9uSGFuZGxlOwotICAgIGlmICghbWVkaWFDYWNoZURpcmVjdG9yeS5pc0VtcHR5KCkpCi0gICAg
ICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKG1l
ZGlhQ2FjaGVEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0ZSwgbWVk
aWFDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CisgICAgaWYgKCFtZWRpYUNhY2hlRGly
ZWN0b3J5LmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0
ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChtZWRpYUNhY2hlRGlyZWN0
b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUpKQorICAgICAgICAgICAgbWVk
aWFDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoKmhhbmRsZSk7CisgICAg
fQogCiAgICAgU3RyaW5nIG1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeSA9IHdlYnNpdGVEYXRhU3Rv
cmUucmVzb2x2ZWRNZWRpYUtleXNEaXJlY3RvcnkoKTsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGUgbWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwotICAgIGlmICgh
bWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5LmlzRW1wdHkoKSkKLSAgICAgICAgU2FuZGJveEV4dGVu
c2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgobWVkaWFLZXlTdG9yYWdlRGly
ZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUsIG1lZGlhS2V5U3RvcmFn
ZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CisgICAgaWYgKCFtZWRpYUtleVN0b3JhZ2VEaXJl
Y3RvcnkuaXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRl
bnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKG1lZGlhS2V5U3RvcmFnZURp
cmVjdG9yeSwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRlKSkKKyAgICAgICAgICAg
IG1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoKmhhbmRs
ZSk7CisgICAgfQogCiAgICAgU3RyaW5nIGphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5
OwogICAgIGlmICghbV9qYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeS5pc0VtcHR5KCkp
CkBAIC02OTUsMTQgKzcwMSwxOCBAQCBXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJQ
cm9jZXNzUG9vbDo6d2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMoV2ViUAogICAgICAgICBq
YXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSA9IHdlYnNpdGVEYXRhU3RvcmUucmVzb2x2
ZWRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpOwogCiAgICAgU2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlIGphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFu
ZGxlOwotICAgIGlmICghamF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkuaXNFbXB0eSgp
KQotICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5n
UGF0aChqYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSwgU2FuZGJveEV4dGVuc2lvbjo6
VHlwZTo6UmVhZFdyaXRlLCBqYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeUV4dGVuc2lv
bkhhbmRsZSk7CisgICAgaWYgKCFqYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeS5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgoamF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJl
Y3RvcnksIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0ZSkpCisgICAgICAgICAgICBq
YXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUo
KmhhbmRsZSk7CisgICAgfQogCiAjaWYgSEFWRShBUktJVF9JTkxJTkVfUFJFVklFVykKICAgICBh
dXRvIG1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5ID0gd2Vic2l0ZURhdGFTdG9yZS5yZXNvbHZl
ZE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KCk7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlIG1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwotICAgIGlmICgh
bW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBTYW5kYm94RXh0
ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChtb2RlbEVsZW1lbnRDYWNo
ZURpcmVjdG9yeSwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRlLCBtb2RlbEVsZW1l
bnRDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CisgICAgaWYgKCFtb2RlbEVsZW1lbnRD
YWNoZURpcmVjdG9yeS5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKGF1dG8gaGFuZGxlID0gU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgobW9kZWxFbGVt
ZW50Q2FjaGVEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0ZSkpCisg
ICAgICAgICAgICBtb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSA9IFdU
Rk1vdmUoKmhhbmRsZSk7CisgICAgfQogI2VuZGlmCiAKICAgICByZXR1cm4gV2ViUHJvY2Vzc0Rh
dGFTdG9yZVBhcmFtZXRlcnMgewpAQCAtNzQyLDEyICs3NTIsMTYgQEAgdm9pZCBXZWJQcm9jZXNz
UG9vbDo6aW5pdGlhbGl6ZU5ld1dlYlByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBX
ZWJzaXRlRGEKICAgICBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CiAK
ICAgICBwYXJhbWV0ZXJzLmluamVjdGVkQnVuZGxlUGF0aCA9IG1fcmVzb2x2ZWRQYXRocy5pbmpl
Y3RlZEJ1bmRsZVBhdGg7Ci0gICAgaWYgKCFwYXJhbWV0ZXJzLmluamVjdGVkQnVuZGxlUGF0aC5p
c0VtcHR5KCkpCi0gICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRS
ZXNvbHZpbmdQYXRoKHBhcmFtZXRlcnMuaW5qZWN0ZWRCdW5kbGVQYXRoLCBTYW5kYm94RXh0ZW5z
aW9uOjpUeXBlOjpSZWFkT25seSwgcGFyYW1ldGVycy5pbmplY3RlZEJ1bmRsZVBhdGhFeHRlbnNp
b25IYW5kbGUpOworICAgIGlmICghcGFyYW1ldGVycy5pbmplY3RlZEJ1bmRsZVBhdGguaXNFbXB0
eSgpKSB7CisgICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0
ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKHBhcmFtZXRlcnMuaW5qZWN0ZWRCdW5kbGVQYXRo
LCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkT25seSkpCisgICAgICAgICAgICBwYXJhbWV0
ZXJzLmluamVjdGVkQnVuZGxlUGF0aEV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoKmhhbmRsZSk7
CisgICAgfQogCiAgICAgcGFyYW1ldGVycy5hZGRpdGlvbmFsU2FuZGJveEV4dGVuc2lvbkhhbmRs
ZXMuYWxsb2NhdGUobV9yZXNvbHZlZFBhdGhzLmFkZGl0aW9uYWxXZWJQcm9jZXNzU2FuZGJveEV4
dGVuc2lvblBhdGhzLnNpemUoKSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSBtX3Jl
c29sdmVkUGF0aHMuYWRkaXRpb25hbFdlYlByb2Nlc3NTYW5kYm94RXh0ZW5zaW9uUGF0aHMuc2l6
ZSgpOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5k
bGVXaXRob3V0UmVzb2x2aW5nUGF0aChtX3Jlc29sdmVkUGF0aHMuYWRkaXRpb25hbFdlYlByb2Nl
c3NTYW5kYm94RXh0ZW5zaW9uUGF0aHNbaV0sIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRP
bmx5LCBwYXJhbWV0ZXJzLmFkZGl0aW9uYWxTYW5kYm94RXh0ZW5zaW9uSGFuZGxlc1tpXSk7Cisg
ICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSBtX3Jlc29sdmVkUGF0aHMuYWRkaXRpb25hbFdl
YlByb2Nlc3NTYW5kYm94RXh0ZW5zaW9uUGF0aHMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKSB7Cisg
ICAgICAgIGlmIChhdXRvIGhhbmRsZSA9ICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVX
aXRob3V0UmVzb2x2aW5nUGF0aChtX3Jlc29sdmVkUGF0aHMuYWRkaXRpb25hbFdlYlByb2Nlc3NT
YW5kYm94RXh0ZW5zaW9uUGF0aHNbaV0sIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRPbmx5
KSkKKyAgICAgICAgICAgIHBhcmFtZXRlcnMuYWRkaXRpb25hbFNhbmRib3hFeHRlbnNpb25IYW5k
bGVzW2ldID0gV1RGTW92ZSgqaGFuZGxlKTsKKyAgICB9CiAKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIHNldEphdmFTY3JpcHRDb25maWd1cmF0aW9uRmlsZUVuYWJsZWRGcm9tRGVmYXVs
dHMoKTsKQEAgLTkwMSw3ICs5MTUsMTAgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0Rp
ZEZpbmlzaExhdW5jaGluZyhXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCiAgICAgICAgIFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSBzYW1wbGVMb2dTYW5kYm94SGFuZGxlOyAgICAgICAgCiAgICAg
ICAgIFdhbGxUaW1lIG5vdyA9IFdhbGxUaW1lOjpub3coKTsKICAgICAgICAgYXV0byBzYW1wbGVM
b2dGaWxlUGF0aCA9IG1ha2VTdHJpbmcoIldlYlByb2Nlc3MiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBsb25nIGxvbmc+KG5vdy5zZWNvbmRzU2luY2VFcG9jaCgpLnNlY29uZHMoKSksICJwaWQiLCBw
cm9jZXNzLnByb2Nlc3NJZGVudGlmaWVyKCkpOwotICAgICAgICBzYW1wbGVMb2dGaWxlUGF0aCA9
IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclRlbXBvcmFyeUZpbGUoc2FtcGxlTG9n
RmlsZVBhdGgsIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0ZSwgc2FtcGxlTG9nU2Fu
ZGJveEhhbmRsZSk7CisgICAgICAgIGlmIChhdXRvIGhhbmRsZUFuZEZpbGVQYXRoID0gU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yVGVtcG9yYXJ5RmlsZShzYW1wbGVMb2dGaWxlUGF0
aCwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRlKSkgeworICAgICAgICAgICAgc2Ft
cGxlTG9nU2FuZGJveEhhbmRsZSA9IFdURk1vdmUoaGFuZGxlQW5kRmlsZVBhdGgtPmZpcnN0KTsK
KyAgICAgICAgICAgIHNhbXBsZUxvZ0ZpbGVQYXRoID0gV1RGTW92ZShoYW5kbGVBbmRGaWxlUGF0
aC0+c2Vjb25kKTsKKyAgICAgICAgfQogICAgICAgICAKICAgICAgICAgcHJvY2Vzcy5zZW5kKE1l
c3NhZ2VzOjpXZWJQcm9jZXNzOjpTdGFydE1lbW9yeVNhbXBsZXIoc2FtcGxlTG9nU2FuZGJveEhh
bmRsZSwgc2FtcGxlTG9nRmlsZVBhdGgsIG1fbWVtb3J5U2FtcGxlckludGVydmFsKSwgMCk7CiAg
ICAgfQpAQCAtMTE2MCw4ICsxMTc3LDEwIEBAIERvd25sb2FkUHJveHkmIFdlYlByb2Nlc3NQb29s
OjpyZXN1bWVEb3dubG9hZChXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUsIFdlYlBhCiAgICAg
YXV0byYgZG93bmxvYWRQcm94eSA9IGNyZWF0ZURvd25sb2FkUHJveHkoZGF0YVN0b3JlLCBSZXNv
dXJjZVJlcXVlc3QoKSwgaW5pdGlhdGluZ1BhZ2UsIHsgfSk7CiAKICAgICBTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZTsKLSAgICBpZiAoIXBhdGguaXNFbXB0
eSgpKQotICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUocGF0aCwgU2FuZGJv
eEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRlLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKKyAg
ICBpZiAoIXBhdGguaXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpS
ZWFkV3JpdGUpKQorICAgICAgICAgICAgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUo
KmhhbmRsZSk7CisgICAgfQogCiAgICAgZGF0YVN0b3JlLm5ldHdvcmtQcm9jZXNzKCkuc2VuZChN
ZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlJlc3VtZURvd25sb2FkKGRhdGFTdG9yZS5zZXNzaW9u
SUQoKSwgZG93bmxvYWRQcm94eS5kb3dubG9hZElEKCksIHJlc3VtZURhdGEuZGF0YVJlZmVyZW5j
ZSgpLCBwYXRoLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBjYWxsRG93bmxvYWREaWRTdGFydCks
IDApOwogICAgIHJldHVybiBkb3dubG9hZFByb3h5OwpAQCAtMTQ0Nyw3ICsxNDY2LDEwIEBAIHZv
aWQgV2ViUHJvY2Vzc1Bvb2w6OnN0YXJ0TWVtb3J5U2FtcGxlcihjb25zdCBkb3VibGUgaW50ZXJ2
YWwpCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbXBsZUxvZ1NhbmRib3hIYW5kbGU7
ICAgIAogICAgIFdhbGxUaW1lIG5vdyA9IFdhbGxUaW1lOjpub3coKTsKICAgICBhdXRvIHNhbXBs
ZUxvZ0ZpbGVQYXRoID0gbWFrZVN0cmluZygiV2ViUHJvY2VzcyIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkIGxvbmcgbG9uZz4obm93LnNlY29uZHNTaW5jZUVwb2NoKCkuc2Vjb25kcygpKSk7Ci0gICAg
c2FtcGxlTG9nRmlsZVBhdGggPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JUZW1w
b3JhcnlGaWxlKHNhbXBsZUxvZ0ZpbGVQYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFk
V3JpdGUsIHNhbXBsZUxvZ1NhbmRib3hIYW5kbGUpOworICAgIGlmIChhdXRvIGhhbmRsZUFuZEZp
bGVQYXRoID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yVGVtcG9yYXJ5RmlsZShz
YW1wbGVMb2dGaWxlUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRlKSkgewor
ICAgICAgICBzYW1wbGVMb2dTYW5kYm94SGFuZGxlID0gV1RGTW92ZShoYW5kbGVBbmRGaWxlUGF0
aC0+Zmlyc3QpOworICAgICAgICBzYW1wbGVMb2dGaWxlUGF0aCA9IFdURk1vdmUoaGFuZGxlQW5k
RmlsZVBhdGgtPnNlY29uZCk7CisgICAgfQogICAgIAogICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhN
ZXNzYWdlczo6V2ViUHJvY2Vzczo6U3RhcnRNZW1vcnlTYW1wbGVyKHNhbXBsZUxvZ1NhbmRib3hI
YW5kbGUsIHNhbXBsZUxvZ0ZpbGVQYXRoLCBpbnRlcnZhbCkpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNv
Y29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0
ZURhdGFTdG9yZUNvY29hLm1tCmluZGV4IDI4MTQ4NGFhZjlhMTk2ZjBlZmFlODcyZDkwYzYwOGI3
ODRhM2FlNzguLjFkMGU0NTIxNWZlZjFiNjlhZTcwNmE3ZDFjYmM4ZjhiMjY1ODY3OTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVE
YXRhU3RvcmVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KQEAgLTE1MCw4ICsxNTAsMTEgQEAgdm9p
ZCBXZWJzaXRlRGF0YVN0b3JlOjpwbGF0Zm9ybVNldE5ldHdvcmtQYXJhbWV0ZXJzKFdlYnNpdGVE
YXRhU3RvcmVQYXJhbWV0ZXJzJgogICAgIGJvb2wgaHR0cDNFbmFibGVkID0gV2Vic2l0ZURhdGFT
dG9yZTo6aHR0cDNFbmFibGVkKCk7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGFsdGVy
bmF0aXZlU2VydmljZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgU3RyaW5n
IGFsdGVybmF0aXZlU2VydmljZVN0b3JhZ2VEaXJlY3RvcnkgPSByZXNvbHZlZEFsdGVybmF0aXZl
U2VydmljZXNTdG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAgaWYgKCFhbHRlcm5hdGl2ZVNlcnZpY2VT
dG9yYWdlRGlyZWN0b3J5LmlzRW1wdHkoKSkKLSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KGFsdGVybmF0aXZlU2VydmljZVN0b3JhZ2VE
aXJlY3RvcnksIGFsdGVybmF0aXZlU2VydmljZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5k
bGUpOworICAgIGlmICghYWx0ZXJuYXRpdmVTZXJ2aWNlU3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5
KCkpIHsKKyAgICAgICAgLy8gRklYTUU6IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZv
clJlYWRXcml0ZURpcmVjdG9yeSByZXNvbHZlcyB0aGUgZGlyZWN0b3J5LCBidXQgdGhhdCBoYXMg
YWxyZWFkeSBiZWVuIGRvbmUuIFJlbW92ZSB0aGlzIGR1cGxpY2F0ZSB3b3JrLgorICAgICAgICBp
ZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3Jp
dGVEaXJlY3RvcnkoYWx0ZXJuYXRpdmVTZXJ2aWNlU3RvcmFnZURpcmVjdG9yeSkpCisgICAgICAg
ICAgICBhbHRlcm5hdGl2ZVNlcnZpY2VTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlID0g
V1RGTW92ZSgqaGFuZGxlKTsKKyAgICB9CiAjZW5kaWYKIAogICAgIGJvb2wgc2hvdWxkSW5jbHVk
ZUxvY2FsaG9zdEluUmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IGlzU2FmYXJpOwpAQCAtMTg1LDgg
KzE4OCwxMCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnBsYXRmb3JtU2V0TmV0d29ya1BhcmFt
ZXRlcnMoV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmCiAKICAgICBwYXJhbWV0ZXJzLnVpUHJv
Y2Vzc0Nvb2tpZVN0b3JhZ2VJZGVudGlmaWVyID0gbV91aVByb2Nlc3NDb29raWVTdG9yYWdlSWRl
bnRpZmllcjsKIAotICAgIGlmICghY29va2llRmlsZS5pc0VtcHR5KCkpCi0gICAgICAgIFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShGaWxlU3lzdGVt
OjpwYXJlbnRQYXRoKGNvb2tpZUZpbGUpLCBwYXJhbWV0ZXJzLmNvb2tpZVN0b3JhZ2VQYXRoRXh0
ZW5zaW9uSGFuZGxlKTsKKyAgICBpZiAoIWNvb2tpZUZpbGUuaXNFbXB0eSgpKSB7CisgICAgICAg
IGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRX
cml0ZURpcmVjdG9yeShGaWxlU3lzdGVtOjpwYXJlbnRQYXRoKGNvb2tpZUZpbGUpKSkKKyAgICAg
ICAgICAgIHBhcmFtZXRlcnMuY29va2llU3RvcmFnZVBhdGhFeHRlbnNpb25IYW5kbGUgPSBXVEZN
b3ZlKCpoYW5kbGUpOworICAgIH0KIH0KIAogI2lmIEhBVkUoQ0ZORVRXT1JLX0FMVEVSTkFUSVZF
X1NFUlZJQ0UpIHx8IEhBVkUoTkVUV09SS19MT0FERVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IDBh
MGYyMzIwNzQ0MzI4OWU4ZGRmMGY0MWQxMzMzNjIwMDYyMzRmOTMuLjk2ZDI4NzljZWY2MmUyNDc4
NGJkZGJlN2JiZDc3Nzc1YzEyOWE5OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC0xOTMyLDE4ICsx
OTMyLDI2IEBAIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3RvcmU6OnBh
cmFtZXRlcnMoKQogCiAgICAgYXV0byByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5ID0g
bV9jb25maWd1cmF0aW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCk7CiAgICAg
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnlI
YW5kbGU7Ci0gICAgaWYgKCFyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LmlzRW1wdHko
KSkKLSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGly
ZWN0b3J5KHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIHJlc291cmNlTG9hZFN0YXRp
c3RpY3NEaXJlY3RvcnlIYW5kbGUpOworICAgIGlmICghcmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rp
cmVjdG9yeS5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4
dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KHJlc291cmNlTG9hZFN0
YXRpc3RpY3NEaXJlY3RvcnkpKQorICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rp
cmVjdG9yeUhhbmRsZSA9IFdURk1vdmUoKmhhbmRsZSk7CisgICAgfQogCiAgICAgYXV0byBuZXR3
b3JrQ2FjaGVEaXJlY3RvcnkgPSByZXNvbHZlZE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpOwogICAg
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBuZXR3b3JrQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25I
YW5kbGU7Ci0gICAgaWYgKCFuZXR3b3JrQ2FjaGVEaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAg
ICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkobmV0
d29ya0NhY2hlRGlyZWN0b3J5LCBuZXR3b3JrQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUp
OworICAgIGlmICghbmV0d29ya0NhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSkgeworICAgICAgICAv
LyBGSVhNRTogU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0
b3J5IHJlc29sdmVzIHRoZSBkaXJlY3RvcnksIGJ1dCB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gZG9u
ZS4gUmVtb3ZlIHRoaXMgZHVwbGljYXRlIHdvcmsuCisgICAgICAgIGlmIChhdXRvIGhhbmRsZSA9
IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShuZXR3
b3JrQ2FjaGVEaXJlY3RvcnkpKQorICAgICAgICAgICAgbmV0d29ya0NhY2hlRGlyZWN0b3J5RXh0
ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqaGFuZGxlKTsKKyAgICB9CiAKICAgICBhdXRvIGhzdHNT
dG9yYWdlRGlyZWN0b3J5ID0gcmVzb2x2ZWRIU1RTU3RvcmFnZURpcmVjdG9yeSgpOwogICAgIFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZSBoc3RzU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRs
ZTsKLSAgICBpZiAoIWhzdHNTdG9yYWdlRGlyZWN0b3J5LmlzRW1wdHkoKSkKLSAgICAgICAgU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KGhzdHNTdG9y
YWdlRGlyZWN0b3J5LCBoc3RzU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CisgICAg
aWYgKCFoc3RzU3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpIHsKKyAgICAgICAgLy8gRklYTUU6
IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeSByZXNv
bHZlcyB0aGUgZGlyZWN0b3J5LCBidXQgdGhhdCBoYXMgYWxyZWFkeSBiZWVuIGRvbmUuIFJlbW92
ZSB0aGlzIGR1cGxpY2F0ZSB3b3JrLgorICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94
RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkoaHN0c1N0b3JhZ2VE
aXJlY3RvcnkpKQorICAgICAgICAgICAgaHN0c1N0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5k
bGUgPSBXVEZNb3ZlKCpoYW5kbGUpOworICAgIH0KIAogICAgIGJvb2wgc2hvdWxkSW5jbHVkZUxv
Y2FsaG9zdEluUmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IGZhbHNlOwogICAgIGJvb2wgZW5hYmxl
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSA9IGZhbHNlOwpAQCAtMjAwNCwyNiArMjAx
MiwzNSBAQCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0b3JlOjpwYXJh
bWV0ZXJzKCkKICAgICBwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycyA9IFdURk1v
dmUobmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzKTsKIAogICAgIHBhcmFtZXRlcnMuaW5kZXhlZERh
dGFiYXNlRGlyZWN0b3J5ID0gcmVzb2x2ZWRJbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkoKTsKLSAg
ICBpZiAoIXBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5LmlzRW1wdHkoKSkKLSAg
ICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5
KHBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmluZGV4ZWRE
YXRhYmFzZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CisgICAgaWYgKCFwYXJhbWV0ZXJzLmlu
ZGV4ZWREYXRhYmFzZURpcmVjdG9yeS5pc0VtcHR5KCkpIHsKKyAgICAgICAgLy8gRklYTUU6IFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeSByZXNvbHZl
cyB0aGUgZGlyZWN0b3J5LCBidXQgdGhhdCBoYXMgYWxyZWFkeSBiZWVuIGRvbmUuIFJlbW92ZSB0
aGlzIGR1cGxpY2F0ZSB3b3JrLgorICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSAgU2FuZGJveEV4
dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KHBhcmFtZXRlcnMuaW5k
ZXhlZERhdGFiYXNlRGlyZWN0b3J5KSkKKyAgICAgICAgICAgIHBhcmFtZXRlcnMuaW5kZXhlZERh
dGFiYXNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqaGFuZGxlKTsKKyAgICB9
CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgcGFyYW1ldGVycy5zZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5ID0gcmVzb2x2ZWRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uRGlyZWN0b3J5KCk7Ci0gICAgaWYgKCFwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25EaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVh
dGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkocGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25E
aXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOworICAgIGlmICghcGFyYW1ldGVycy5zZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5LmlzRW1wdHkoKSkgeworICAgICAgICAvLyBGSVhNRTog
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5IHJlc29s
dmVzIHRoZSBkaXJlY3RvcnksIGJ1dCB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gZG9uZS4gUmVtb3Zl
IHRoaXMgZHVwbGljYXRlIHdvcmsuCisgICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShwYXJhbWV0ZXJzLnNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkpKQorICAgICAgICAgICAgcGFyYW1ldGVy
cy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlID0gV1RG
TW92ZSgqaGFuZGxlKTsKKyAgICB9CiAgICAgcGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUHJvY2Vz
c1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkID0gbV9jb25maWd1cmF0aW9uLT5zZXJ2aWNlV29ya2Vy
UHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkKCk7CiAjZW5kaWYKIAogICAgIGF1dG8gbG9j
YWxTdG9yYWdlRGlyZWN0b3J5ID0gcmVzb2x2ZWRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKTsKICAg
ICBpZiAoIWxvY2FsU3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpIHsKICAgICAgICAgcGFyYW1l
dGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBsb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7Ci0gICAg
ICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShs
b2NhbFN0b3JhZ2VEaXJlY3RvcnksIHBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0
ZW5zaW9uSGFuZGxlKTsKKyAgICAgICAgLy8gRklYTUU6IFNhbmRib3hFeHRlbnNpb246OmNyZWF0
ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeSByZXNvbHZlcyB0aGUgZGlyZWN0b3J5LCBidXQg
dGhhdCBoYXMgYWxyZWFkeSBiZWVuIGRvbmUuIFJlbW92ZSB0aGlzIGR1cGxpY2F0ZSB3b3JrLgor
ICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVG
b3JSZWFkV3JpdGVEaXJlY3RvcnkobG9jYWxTdG9yYWdlRGlyZWN0b3J5KSkKKyAgICAgICAgICAg
IHBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92
ZSgqaGFuZGxlKTsKICAgICB9CiAKICAgICBhdXRvIGNhY2hlU3RvcmFnZURpcmVjdG9yeSA9IHRo
aXMtPmNhY2hlU3RvcmFnZURpcmVjdG9yeSgpOwogICAgIGlmICghY2FjaGVTdG9yYWdlRGlyZWN0
b3J5LmlzRW1wdHkoKSkgewogICAgICAgICBwYXJhbWV0ZXJzLmNhY2hlU3RvcmFnZURpcmVjdG9y
eSA9IGNhY2hlU3RvcmFnZURpcmVjdG9yeTsKLSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KGNhY2hlU3RvcmFnZURpcmVjdG9yeSwgcGFy
YW1ldGVycy5jYWNoZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOworICAgICAgICBp
ZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3Jp
dGVEaXJlY3RvcnkoY2FjaGVTdG9yYWdlRGlyZWN0b3J5KSkKKyAgICAgICAgICAgIHBhcmFtZXRl
cnMuY2FjaGVTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqaGFuZGxl
KTsKICAgICB9CiAKICAgICBwYXJhbWV0ZXJzLnBlck9yaWdpblN0b3JhZ2VRdW90YSA9IHBlck9y
aWdpblN0b3JhZ2VRdW90YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwCmluZGV4IDNhZjQ5YjQzNzJlODY3N2E1N2Qy
ZWZjOGU4OGM4NjczMzk0NTVkYzEuLjRmZTQ1ZmYxMDk0ODgzMGY4NzQ4YWQxOGQ3NjA4MTMwMzkz
YWU5NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JS
ZWdpc3RyeVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9C
bG9iUmVnaXN0cnlQcm94eS5jcHAKQEAgLTQyLDggKzQyLDEwIEBAIHZvaWQgQmxvYlJlZ2lzdHJ5
UHJveHk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIFJlZjxCbG9iRGF0YUZp
bGVSZWZlCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGV4dGVuc2lvbkhhbmRsZTsKIAog
ICAgIC8vIEZpbGUgcGF0aCBjYW4gYmUgZW1wdHkgd2hlbiBzdWJtaXR0aW5nIGEgZm9ybSBmaWxl
IGlucHV0IHdpdGhvdXQgYSBmaWxlLCBzZWUgYnVnIDExMTc3OC4KLSAgICBpZiAoIWZpbGUtPnBh
dGgoKS5pc0VtcHR5KCkpCi0gICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShm
aWxlLT5wYXRoKCksIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRPbmx5LCBleHRlbnNpb25I
YW5kbGUpOworICAgIGlmICghZmlsZS0+cGF0aCgpLmlzRW1wdHkoKSkgeworICAgICAgICBpZiAo
YXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUoZmlsZS0+cGF0aCgp
LCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkT25seSkpCisgICAgICAgICAgICBleHRlbnNp
b25IYW5kbGUgPSBXVEZNb3ZlKCpoYW5kbGUpOworICAgIH0KIAogICAgIFN0cmluZyByZXBsYWNl
bWVudFBhdGggPSBwYXRoID09IGZpbGUtPnBhdGgoKSA/IG51bGxTdHJpbmcoKSA6IGZpbGUtPnBh
dGgoKTsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OlJlZ2lzdGVyRmlsZUJsb2JVUkwodXJsLCBwYXRoLCByZXBsYWNlbWVudFBh
dGgsIGV4dGVuc2lvbkhhbmRsZSwgY29udGVudFR5cGUpLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlLmNwcAppbmRleCBlMWNjOThjZWRhOWI3MGNkMjJmY2NhZGMzNGNiZDgzOTBmNzc0MmEz
Li5lOWE2M2FmM2Q1Yjk1MjFiMmVjN2M4MDE5MzdkMTc3ZGY5Y2JlMDEyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXll
clByaXZhdGVSZW1vdGUuY3BwCkBAIC0xNjksMTEgKzE2OSwxOSBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6bG9hZChjb25zdCBVUkwmIHVybCwgY29uc3QgQ29udGVudFR5cGUmIGNv
bnRlbnRUeQogCiAgICAgICAgIGF1dG8gY3JlYXRlRXh0ZW5zaW9uID0gWyZdIHsKICNpZiBIQVZF
KEFVRElUX1RPS0VOKQotICAgICAgICAgICAgaWYgKGF1dG8gYXVkaXRUb2tlbiA9IG1fbWFuYWdl
ci5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmF1ZGl0VG9rZW4oKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZEJ5QXVkaXRUb2tlbihm
aWxlU3lzdGVtUGF0aCwgYXVkaXRUb2tlbi52YWx1ZSgpLCBoYW5kbGUpOworICAgICAgICAgICAg
aWYgKGF1dG8gYXVkaXRUb2tlbiA9IG1fbWFuYWdlci5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmF1
ZGl0VG9rZW4oKSkgeworICAgICAgICAgICAgICAgIGlmIChhdXRvIGNyZWF0ZWRIYW5kbGUgPSBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkQnlBdWRpdFRva2VuKGZpbGVTeXN0
ZW1QYXRoLCBhdWRpdFRva2VuLnZhbHVlKCkpKSB7CisgICAgICAgICAgICAgICAgICAgIGhhbmRs
ZSA9IFdURk1vdmUoKmNyZWF0ZWRIYW5kbGUpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgfQogI2VuZGlmCi0KLSAgICAgICAgICAgIHJldHVybiBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGVIYW5kbGUoZmlsZVN5c3RlbVBhdGgsIFNhbmRib3hFeHRlbnNpb246OlR5cGU6
OlJlYWRPbmx5LCBoYW5kbGUpOworICAgICAgICAgICAgaWYgKGF1dG8gY3JlYXRlZEhhbmRsZSA9
IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShmaWxlU3lzdGVtUGF0aCwgU2FuZGJveEV4
dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHkpKSB7CisgICAgICAgICAgICAgICAgaGFuZGxlID0gV1RG
TW92ZSgqY3JlYXRlZEhhbmRsZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH07CiAKICAgICAg
ICAgaWYgKCFjcmVhdGVFeHRlbnNpb24oKSkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435460</attachid>
            <date>2021-08-12 17:52:48 -0700</date>
            <delta_ts>2021-08-13 13:08:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228875-20210812175247.patch</filename>
            <type>text/plain</type>
            <size>83797</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwOTk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGI3ZTNhYjcxNGFiN2YxMzFm
YTk3Y2VmYmY4MGRmZDQyNDRhZDJiOGIuLjA3YTJhNTU5ZjVmNjc0MTBlZjFmY2Q3MmI0YzJjYzIz
OGU3MjZkNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTc0IEBACisyMDIxLTA4LTEyICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlIGNyZWF0aW9uIHNob3VsZCByZXR1cm4gc3RkOjpvcHRpb25hbCBpbnN0
ZWFkIG9mIGJvb2wKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyODg3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoaXMgbW9kZXJuaXplcyB0aGUgY29kZSBzb21ld2hhdC4KKyAgICAgICAgVGhpcyBtYWtl
cyBpdCBlYXNpZXIgdG8gd3JpdGUgY29kZSB0aGF0IHJlYWxpemVzIHRoYXQgaGFuZGxlIGNyZWF0
aW9uIGNhbiBmYWlsLgorICAgICAgICBUaGlzIGlzIGEgc3RlcCB0b3dhcmRzIHJlbW92aW5nIHRo
ZSB1bm5lY2Vzc2FyeSBhYnN0cmFjdGlvbiBIYW5kbGVBcnJheS4KKworICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAg
ICAgICogUGxhdGZvcm0vSVBDL0Zvcm1EYXRhUmVmZXJlbmNlLmg6CisgICAgICAgIChJUEM6OkZv
cm1EYXRhUmVmZXJlbmNlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9T
YW5kYm94RXh0ZW5zaW9uQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKToKKyAgICAgICAgKFdlYktpdDo6
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6Y3JlYXRl
SGFuZGxlc0ZvclJlc291cmNlcyk6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246
OmNyZWF0ZVJlYWRPbmx5SGFuZGxlc0ZvckZpbGVzKToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KToKKyAgICAgICAg
KFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yVGVtcG9yYXJ5RmlsZSk6
CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvckdlbmVy
aWNFeHRlbnNpb24pOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVI
YW5kbGVGb3JNYWNoTG9va3VwKToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6
Y3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXApOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0
ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkQnlBdWRpdFRva2VuKToKKyAgICAgICAgKFdlYktp
dDo6U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9ySU9LaXRDbGFzc0V4dGVuc2lvbik6
CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JJT0tp
dENsYXNzRXh0ZW5zaW9ucyk6CisgICAgICAgICogU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaDoK
KyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKToKKyAgICAg
ICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmlu
Z1BhdGgpOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVG
b3JSZWFkV3JpdGVEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGVGb3JUZW1wb3JhcnlGaWxlKToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yR2VuZXJpY0V4dGVuc2lvbik6CisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmFkZFBsYXRmb3JtTG9hZFBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmNyZWF0ZVNhbmRib3hFeHRlbnNpb25zSWZOZWVkZWQpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNjcm9sbGluZ1VwZGF0ZXNEaXNhYmxl
ZEZvclRlc3RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnN0
YXJ0RHJhZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0UHJv
bWlzZWREYXRhRm9ySW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnNldERyYWdDYXJldFJlY3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnBsYXRmb3JtUmVnaXN0ZXJBdHRhY2htZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpwbGF0Zm9ybUNsb25lQXR0YWNobWVudCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdExv
Y2F0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwZXJmb3Jt
RGljdGlvbmFyeUxvb2t1cE9mQ3VycmVudFNlbGVjdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmMpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnBsYXRmb3JtRGljdGF0aW9uQWx0ZXJuYXRp
dmVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjplcnJvckZvclVu
cGVybWl0dGVkQXBwQm91bmREb21haW5OYXZpZ2F0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0b3JDb25uZWN0aW9uKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0b3JCb3Vu
ZEludGVyZmFjZUlkZW50aWZpZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnBheW1lbnRDb29yZGluYXRvclNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmll
cik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cGF5bWVudENvb3Jk
aW5hdG9yU291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0b3JBZGRNZXNzYWdl
UmVjZWl2ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnBheW1l
bnRDb29yZGluYXRvclJlbW92ZU1lc3NhZ2VSZWNlaXZlcik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkU3RhcnRTcGVha2luZyk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkRmluaXNoU3BlYWtpbmcpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFBhdXNlU3BlYWtpbmcpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFJlc3VtZVNwZWFraW5nKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzcGVha2luZ0Vycm9yT2NjdXJyZWQp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmJvdW5kYXJ5RXZlbnRP
Y2N1cnJlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dm9pY2Vz
RGlkQ2hhbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRD
cmVhdGVDb250ZXh0SW5XZWJQcm9jZXNzRm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRDcmVhdGVDb250ZXh0SW5HUFVQ
cm9jZXNzRm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpncmFudEFjY2Vzc1RvUHJlZmVyZW5jZVNlcnZpY2UpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Om1lZGlhVXNhZ2VNYW5hZ2VyKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjphZGRNZWRpYVVzYWdlTWFuYWdl
clNlc3Npb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnVwZGF0
ZU1lZGlhVXNhZ2VNYW5hZ2VyU2Vzc2lvblN0YXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpyZW1vdmVNZWRpYVVzYWdlTWFuYWdlclNlc3Npb24pOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0Ojpjb252ZXJ0UGxhdGZvcm1JbWFnZVRvQml0bWFwKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0VGh1bWJuYWlsV2l0aE9w
ZXJhdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVxdWVz
dFRodW1ibmFpbFdpdGhGaWxlV3JhcHBlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6cmVxdWVzdFRodW1ibmFpbFdpdGhQYXRoKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpzY2hlZHVsZUFjdGl2aXR5U3RhdGVVcGRhdGUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmFkZEFjdGl2aXR5U3RhdGVVcGRh
dGVDb21wbGV0aW9uSGFuZGxlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6Y3JlYXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXN0b3JlQXBwSGlnaGxpZ2h0c0FuZFNjcm9sbFRv
SW5kZXgpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldEFwcEhp
Z2hsaWdodHNWaXNpYmlsaXR5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjphcHBIaWdobGlnaHRzVmlzaWJpbGl0eSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6YXBwSGlnaGxpZ2h0c092ZXJsYXlSZWN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRVcEhpZ2hsaWdodHNPYnNlcnZlcik6IERlbGV0
ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y3JlYXRlTmV0d29ya0V4dGVuc2lv
bnNTYW5kYm94RXh0ZW5zaW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6Y2FuSGFuZGxlQ29udGV4dE1lbnVUcmFuc2xhdGlvbiBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aGFuZGxlQ29udGV4dE1lbnVUcmFuc2xhdGlv
bik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVxdWVzdEFjdGl2
ZU5vd1BsYXlpbmdTZXNzaW9uSW5mbyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6c2V0TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVk
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpncmFudEFjY2Vzc1Rv
QXNzZXRTZXJ2aWNlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
cmV2b2tlQWNjZXNzVG9Bc3NldFNlcnZpY2VzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5Ojpzd2l0Y2hGcm9tU3RhdGljRm9udFJlZ2lzdHJ5VG9Vc2VyRm9udFJlZ2lz
dHJ5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpmb250ZE1hY2hF
eHRlbnNpb25IYW5kbGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmNvbnRlbnRzT2ZVc2VySW50ZXJmYWNlSXRlbSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRQYXRobmFtZXNGb3JUeXBlKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1By
b2Nlc3MpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZv
cm1JbnZhbGlkYXRlQ29udGV4dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQb29sOjpwYXJlbnRCdW5kbGVEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbDo6bmV0d29ya2luZ0NhY2hlc0RpcmVjdG9yeSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjp3ZWJDb250ZW50Q2FjaGVzRGlyZWN0b3J5
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNvbnRhaW5lclRl
bXBvcmFyeURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sOjpzZXRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkZpbGVFbmFibGVkRnJvbURlZmF1bHRzKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6Om9taXRQREZTdXBwb3J0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NTdXBw
cmVzc2lvbkVuYWJsZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbDo6ZGlzcGxheUJyaWdodG5lc3MpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbDo6YmFja2xpZ2h0TGV2ZWxEaWRDaGFuZ2VDYWxsYmFjayk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjphY2Nlc3NpYmlsaXR5UHJlZmVyZW5j
ZXNDaGFuZ2VkQ2FsbGJhY2spOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbDo6bWVkaWFBY2Nlc3NpYmlsaXR5UHJlZmVyZW5jZXNDaGFuZ2VkQ2FsbGJhY2spOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6Y29sb3JQcmVmZXJlbmNlc0Rp
ZENoYW5nZUNhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bv
b2w6OnJlbW90ZVdlYkluc3BlY3RvckVuYWJsZWRDYWxsYmFjayk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzdGFydE9ic2VydmluZ1ByZWZlcmVuY2VDaGFuZ2Vz
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlZ2lzdGVyTm90
aWZpY2F0aW9uT2JzZXJ2ZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6OnVucmVnaXN0ZXJOb3RpZmljYXRpb25PYnNlcnZlcnMpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6aXNVUkxLbm93bkhTVFNIb3N0IGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6Om5vbWluYWxGcmFtZXNQZXJT
ZWNvbmRGb3JEaXNwbGF5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bv
b2w6OnN0YXJ0RGlzcGxheUxpbmspOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbDo6c3RvcERpc3BsYXlMaW5rKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc1Bvb2w6OnN0b3BEaXNwbGF5TGlua3MpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbDo6c2V0RGlzcGxheUxpbmtQcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2V0RGlzcGxheUxp
bmtGb3JEaXNwbGF5V2FudHNGdWxsU3BlZWRVcGRhdGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldENvb2tpZVN0b3JhZ2VQYXJ0aXRpb25pbmdFbmFibGVk
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNsZWFyUGVybWFu
ZW50Q3JlZGVudGlhbHNGb3JQcm90ZWN0aW9uU3BhY2UpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
S2l0OjpuZXR3b3JrUHJvY2Vzc0xhdGVuY3lRT1MpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpuZXR3b3JrUHJvY2Vzc1Rocm91Z2hwdXRRT1MpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
Ojp3ZWJQcm9jZXNzTGF0ZW5jeVFPUyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OndlYlBy
b2Nlc3NUaHJvdWdocHV0UU9TKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6OmFwcGxpY2F0aW9uSXNBYm91dFRvU3VzcGVuZCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpub3RpZnlQcm9jZXNzUG9vbHNBcHBsaWNhdGlvbklzQWJv
dXRUb1N1c3BlbmQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6
aW5pdGlhbGl6ZUNsYXNzZXNGb3JQYXJhbWV0ZXJDb2RpbmcpOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6YWxsb3dlZENsYXNzZXNGb3JQYXJhbWV0ZXJDb2Rpbmcg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6bm90aWZ5
UHJlZmVyZW5jZXNDaGFuZ2VkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6d2ViUHJvY2Vz
c1Bvb2xIaWdoRHluYW1pY1JhbmdlRGlkQ2hhbmdlQ2FsbGJhY2spOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cmVnaXN0ZXJIaWdoRHluYW1pY1JhbmdlQ2hhbmdl
Q2FsbGJhY2spOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c3lz
dGVtV2lsbFNsZWVwKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6
OnN5c3RlbURpZFdha2UpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMv
RG93bmxvYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OnB1Ymxp
c2hQcm9ncmVzcyk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OmRlY2lkZURlc3Rp
bmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvR1BVL0dQ
VVByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NQcm94eTo6R1BV
UHJvY2Vzc1Byb3h5KToKKyAgICAgICAgKFdlYktpdDo6YWRkQ2FtZXJhU2FuZGJveEV4dGVuc2lv
bnMpOgorICAgICAgICAoV2ViS2l0OjphZGRNaWNyb3Bob25lU2FuZGJveEV4dGVuc2lvbik6Cisg
ICAgICAgIChXZWJLaXQ6OmFkZFRDQ0RTYW5kYm94RXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYktp
dDo6Z3B1UHJvY2Vzc1Nlc3Npb25QYXJhbWV0ZXJzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3NQcm94eTo6c2VuZENyZWF0aW9uUGFyYW1ldGVyc1RvTmV3UHJvY2Vzcyk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnJldHJpZXZlQ2FjaGVTdG9yYWdlUGFyYW1l
dGVycyk6CisgICAgICAgICogVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRp
bWVNZWRpYVNvdXJjZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25p
dGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyOjphZGRTb3VyY2UpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5
OjpmaW5pc2hHcmFudGluZ1JlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyTWVkaWFQ
cm9jZXNzTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVByb2Nlc3NNYW5h
Z2VyOjp3aWxsQ3JlYXRlTWVkaWFTdHJlYW0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Om1heWJlSW5pdGlhbGl6
ZVNhbmRib3hFeHRlbnNpb25IYW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsV2l0aERpc3BsYXlTdHJpbmdBbmRJY29uKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbDo6d2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6aW5pdGlhbGl6ZU5ld1dlYlByb2Nlc3MpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0RpZEZpbmlzaExhdW5jaGluZyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpyZXN1bWVEb3dubG9hZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzdGFydE1lbW9yeVNhbXBsZXIpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW06Cisg
ICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnBsYXRmb3JtU2V0TmV0d29ya1BhcmFt
ZXRlcnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cGFyYW1ldGVycyk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6QmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bG9hZCk6CisKIDIw
MjEtMDgtMTIgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAg
ICAgWyBpT1MgRGVidWddIDMgZWRpdGluZy9wYXN0ZWJvYXJkL3NtYXJ0LXBhc3RlLXBhcmFncmFw
aCB0ZXN0cyBhcmUgZmxha3kgZmFpbGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAppbmRl
eCBiZDExM2QxZTViYzQzM2JkZDU3NDY0MzMxMzRkOGRlZjE2OWMyM2VjLi5mZDMyM2FjMTRlZWEx
YmQ5Y2NmMTA2NDc5MjZmMzAxYjI1YzRiYjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNw
cApAQCAtNjUsNyArNjUsOCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpl
bmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgICAgICAgICAgY29uc3QgRm9y
bURhdGFFbGVtZW50JiBlbGVtZW50ID0gZWxlbWVudHNbaV07CiAgICAgICAgICAgICBpZiAoYXV0
byogZmlsZURhdGEgPSBXVEY6OmdldF9pZjxGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRGaWxlRGF0
YT4oZWxlbWVudC5kYXRhKSkgewogICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgcGF0aCA9
IGZpbGVEYXRhLT5maWxlbmFtZTsKLSAgICAgICAgICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGVIYW5kbGUocGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHksIHJlcXVl
c3RCb2R5U2FuZGJveEV4dGVuc2lvbnNbZXh0ZW5zaW9uSW5kZXgrK10pOworICAgICAgICAgICAg
ICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShwYXRo
LCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkT25seSkpCisgICAgICAgICAgICAgICAgICAg
IHJlcXVlc3RCb2R5U2FuZGJveEV4dGVuc2lvbnNbZXh0ZW5zaW9uSW5kZXgrK10gPSBXVEZNb3Zl
KCpoYW5kbGUpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGVuY29kZXIgPDwg
cmVxdWVzdEJvZHlTYW5kYm94RXh0ZW5zaW9uczsKQEAgLTc0LDExICs3NSwxNSBAQCB2b2lkIE5l
dHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAogICAgIGlmIChyZXF1ZXN0LnVybCgpLmlzTG9jYWxGaWxlKCkpIHsKICAgICAgICAg
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHJlcXVlc3RTYW5kYm94RXh0ZW5zaW9uOwogI2lmIEhB
VkUoQVVESVRfVE9LRU4pCi0gICAgICAgIGlmIChuZXR3b3JrUHJvY2Vzc0F1ZGl0VG9rZW4pCi0g
ICAgICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkQnlBdWRpdFRv
a2VuKHJlcXVlc3QudXJsKCkuZmlsZVN5c3RlbVBhdGgoKSwgKm5ldHdvcmtQcm9jZXNzQXVkaXRU
b2tlbiwgcmVxdWVzdFNhbmRib3hFeHRlbnNpb24pOwotICAgICAgICBlbHNlCisgICAgICAgIGlm
IChuZXR3b3JrUHJvY2Vzc0F1ZGl0VG9rZW4pIHsKKyAgICAgICAgICAgIGlmIChhdXRvIGhhbmRs
ZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRCeUF1ZGl0VG9rZW4ocmVx
dWVzdC51cmwoKS5maWxlU3lzdGVtUGF0aCgpLCAqbmV0d29ya1Byb2Nlc3NBdWRpdFRva2VuKSkK
KyAgICAgICAgICAgICAgICByZXF1ZXN0U2FuZGJveEV4dGVuc2lvbiA9IFdURk1vdmUoKmhhbmRs
ZSk7CisgICAgICAgIH0gZWxzZQogI2VuZGlmCi0gICAgICAgICAgICBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGUocmVxdWVzdC51cmwoKS5maWxlU3lzdGVtUGF0aCgpLCBTYW5kYm94RXh0
ZW5zaW9uOjpUeXBlOjpSZWFkT25seSwgcmVxdWVzdFNhbmRib3hFeHRlbnNpb24pOworICAgICAg
ICB7CisgICAgICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVh
dGVIYW5kbGUocmVxdWVzdC51cmwoKS5maWxlU3lzdGVtUGF0aCgpLCBTYW5kYm94RXh0ZW5zaW9u
OjpUeXBlOjpSZWFkT25seSkpCisgICAgICAgICAgICAgICAgcmVxdWVzdFNhbmRib3hFeHRlbnNp
b24gPSBXVEZNb3ZlKCpoYW5kbGUpOworICAgICAgICB9CiAKICAgICAgICAgZW5jb2RlciA8PCBy
ZXF1ZXN0U2FuZGJveEV4dGVuc2lvbjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9Gb3JtRGF0YVJlZmVyZW5jZS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvRm9ybURhdGFSZWZlcmVuY2UuaAppbmRleCBjMGQ0MzdhZTcxN2FiOTJjZGQzNGNhOWVl
Y2FmMDdiZWRiY2JhN2VjLi44M2MyNDdmYTYxOWQ1NzE5MzQ4YTU1MTJjMTRjNmY3NjE2YjU3MWNi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Gb3JtRGF0YVJlZmVyZW5j
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Zvcm1EYXRhUmVmZXJlbmNlLmgK
QEAgLTYxLDcgKzYxLDggQEAgcHVibGljOgogICAgICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBl
bGVtZW50cykgewogICAgICAgICAgICAgaWYgKGF1dG8qIGZpbGVEYXRhID0gV1RGOjpnZXRfaWY8
V2ViQ29yZTo6Rm9ybURhdGFFbGVtZW50OjpFbmNvZGVkRmlsZURhdGE+KGVsZW1lbnQuZGF0YSkp
IHsKICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHBhdGggPSBmaWxlRGF0YS0+ZmlsZW5h
bWU7Ci0gICAgICAgICAgICAgICAgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5k
bGUocGF0aCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkT25seSwgc2FuZGJv
eEV4dGVuc2lvbkhhbmRsZXNbZXh0ZW5zaW9uSW5kZXgrK10pOworICAgICAgICAgICAgICAgIGlm
IChhdXRvIGhhbmRsZSA9IFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKHBh
dGgsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHkpKQorICAgICAgICAg
ICAgICAgICAgICBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlc1tleHRlbnNpb25JbmRleCsrXSA9IFdU
Rk1vdmUoKmhhbmRsZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZW5jb2Rl
ciA8PCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0NvY29hL1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0NvY29hL1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbQppbmRleCBjYTM3ODBiYzg2ZjljMGQ2
MjA4ODI3MjJhZDkzMmMzZmQzMzMyNTRmLi4zZWRjNTQxNDFmNDU3YjA1OWUwOTFhZjkyZTdjZTNl
YTZlNjMwMDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9TYW5kYm94
RXh0ZW5zaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvU2FuZGJv
eEV4dGVuc2lvbkNvY29hLm1tCkBAIC0yNzYsMjcgKzI3NiwyNiBAQCBTdHJpbmcgcmVzb2x2ZVBh
dGhGb3JTYW5kYm94RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICByZXR1cm4gcmVz
b2x2ZWRQYXRoOwogfQogCi1ib29sIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhv
dXRSZXNvbHZpbmdQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCwgVHlwZSB0eXBlLCBIYW5kbGUmIGhh
bmRsZSkKK2F1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmlu
Z1BhdGgoY29uc3QgU3RyaW5nJiBwYXRoLCBUeXBlIHR5cGUpIC0+IHN0ZDo6b3B0aW9uYWw8SGFu
ZGxlPgogeworICAgIEhhbmRsZSBoYW5kbGU7CiAgICAgQVNTRVJUKCFoYW5kbGUubV9zYW5kYm94
RXh0ZW5zaW9uKTsKIAogICAgIGhhbmRsZS5tX3NhbmRib3hFeHRlbnNpb24gPSBTYW5kYm94RXh0
ZW5zaW9uSW1wbDo6Y3JlYXRlKHBhdGgudXRmOCgpLmRhdGEoKSwgdHlwZSwgc3RkOjpudWxsb3B0
LCBTYW5kYm94RXh0ZW5zaW9uOjpGbGFnczo6RG9Ob3RDYW5vbmljYWxpemUpOwogICAgIGlmICgh
aGFuZGxlLm1fc2FuZGJveEV4dGVuc2lvbikgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5v
dCBjcmVhdGUgYSBzYW5kYm94IGV4dGVuc2lvbiBmb3IgJyVzJyIsIHBhdGgudXRmOCgpLmRhdGEo
KSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICB9Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIFdURk1vdmUoaGFuZGxlKTsKIH0K
IAotYm9vbCBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRo
LCBUeXBlIHR5cGUsIEhhbmRsZSYgaGFuZGxlKQorYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVh
dGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBUeXBlIHR5cGUpIC0+IHN0ZDo6b3B0aW9uYWw8
SGFuZGxlPgogewotICAgIEFTU0VSVCghaGFuZGxlLm1fc2FuZGJveEV4dGVuc2lvbik7Ci0KLSAg
ICByZXR1cm4gY3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgocmVzb2x2ZVBhdGhGb3JT
YW5kYm94RXh0ZW5zaW9uKHBhdGgpLCB0eXBlLCBoYW5kbGUpOworICAgIHJldHVybiBjcmVhdGVI
YW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChyZXNvbHZlUGF0aEZvclNhbmRib3hFeHRlbnNpb24o
cGF0aCksIHR5cGUpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0YXRpYyBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSBjcmVhdGVIYW5kbGVzRm9yUmVzb3VyY2VzKGNvbnN0IFZl
Y3RvcjxUPiYgcmVzb3VyY2VzLCBGdW5jdGlvbjxib29sKGNvbnN0IFQmLCBTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGUmIGhhbmRsZSk+JiYgY3JlYXRlRnVuY3Rpb24pCitzdGF0aWMgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlQXJyYXkgY3JlYXRlSGFuZGxlc0ZvclJlc291cmNlcyhjb25zdCBWZWN0
b3I8VD4mIHJlc291cmNlcywgRnVuY3Rpb248c3RkOjpvcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGU+KGNvbnN0IFQmKT4mJiBjcmVhdGVGdW5jdGlvbikKIHsKICAgICBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGVBcnJheSBoYW5kbGVBcnJheTsKIApAQCAtMzA1LDggKzMwNCwxMCBAQCBz
dGF0aWMgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkgY3JlYXRlSGFuZGxlc0ZvclJlc291
cmNlcyhjb25zdCBWZWN0b3I8VD4mCiAKICAgICBzaXplX3QgY3VycmVudEhhbmRsZSA9IDA7CiAg
ICAgZm9yIChjb25zdCBhdXRvJiByZXNvdXJjZSA6IHJlc291cmNlcykgewotICAgICAgICBpZiAo
IWNyZWF0ZUZ1bmN0aW9uKHJlc291cmNlLCBoYW5kbGVBcnJheVtjdXJyZW50SGFuZGxlXSkpCisg
ICAgICAgIGF1dG8gaGFuZGxlID0gY3JlYXRlRnVuY3Rpb24ocmVzb3VyY2UpOworICAgICAgICBp
ZiAoIWhhbmRsZSkKICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBoYW5kbGVBcnJheVtj
dXJyZW50SGFuZGxlXSA9IFdURk1vdmUoKmhhbmRsZSk7CiAgICAgICAgICsrY3VycmVudEhhbmRs
ZTsKICAgICB9CiAgICAgCkBAIC0zMTUsMzQgKzMxNiwzNCBAQCBzdGF0aWMgU2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlQXJyYXkgY3JlYXRlSGFuZGxlc0ZvclJlc291cmNlcyhjb25zdCBWZWN0b3I8
VD4mCiAKIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZVJlYWRPbmx5SGFuZGxlc0ZvckZpbGVzKEFTQ0lJTGl0ZXJhbCBsb2dMYWJlbCwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHBhdGhzKQogewotICAgIHJldHVybiBjcmVhdGVIYW5kbGVzRm9yUmVz
b3VyY2VzKHBhdGhzLCBGdW5jdGlvbjxib29sKGNvbnN0IFN0cmluZyYsIEhhbmRsZSYpPihbJmxv
Z0xhYmVsXSAoY29uc3QgU3RyaW5nJiBwYXRoLCBIYW5kbGUmIGhhbmRsZSkgewotICAgICAgICBp
ZiAoIVNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShwYXRoLCBTYW5kYm94RXh0ZW5zaW9u
OjpUeXBlOjpSZWFkT25seSwgaGFuZGxlKSkgeworICAgIHJldHVybiBjcmVhdGVIYW5kbGVzRm9y
UmVzb3VyY2VzKHBhdGhzLCBGdW5jdGlvbjxzdGQ6Om9wdGlvbmFsPEhhbmRsZT4oY29uc3QgU3Ry
aW5nJik+KFsmbG9nTGFiZWxdIChjb25zdCBTdHJpbmcmIHBhdGgpIHsKKyAgICAgICAgYXV0byBo
YW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUocGF0aCwgU2FuZGJveEV4dGVu
c2lvbjo6VHlwZTo6UmVhZE9ubHkpOworICAgICAgICBpZiAoIWhhbmRsZSkgewogICAgICAgICAg
ICAgLy8gVGhpcyBjYW4gbGVnaXRpbWF0ZWx5IGZhaWwgaWYgYSBkaXJlY3RvcnkgY29udGFpbmlu
ZyB0aGUgZmlsZSBpcyBkZWxldGVkIGFmdGVyIHRoZSBmaWxlIHdhcyBjaG9zZW4uCiAgICAgICAg
ICAgICAvLyBXZSBhbHNvIGhhdmUgcmVwb3J0cyBvZiBjYXNlcyB3aGVyZSB0aGlzIGxpa2VseSBm
YWlscyBmb3Igc29tZSB1bmtub3duIHJlYXNvbiwgPHJkYXI6Ly9wcm9ibGVtLzEwMTU2NzEwPi4K
ICAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiJXM6IGNvdWxkIG5vdCBjcmVhdGUgYSBzYW5kYm94
IGV4dGVuc2lvbiBmb3IgJyVzJ1xuIiwgbG9nTGFiZWwuY2hhcmFjdGVycygpLCBwYXRoLnV0Zjgo
KS5kYXRhKCkpOwogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IHJldHVybiBoYW5kbGU7CiAgICAgfSkpOwogfQogCi1ib29sIFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSYgaGFuZGxlKQorYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVh
dGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKSAtPiBzdGQ6
Om9wdGlvbmFsPEhhbmRsZT4KIHsKICAgICBTdHJpbmcgcmVzb2x2ZWRQYXRoID0gcmVzb2x2ZUFu
ZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24ocGF0aCk7CiAgICAg
aWYgKHJlc29sdmVkUGF0aC5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
cmV0dXJuIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRo
KHJlc29sdmVkUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRlLCBoYW5kbGUp
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHJldHVybiBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChyZXNvbHZlZFBhdGgsIFNhbmRi
b3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0ZSk7CiB9CiAKLVN0cmluZyBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGVIYW5kbGVGb3JUZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBU
eXBlIHR5cGUsIEhhbmRsZSYgaGFuZGxlKQorYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVI
YW5kbGVGb3JUZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBUeXBlIHR5cGUpIC0+
IHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPEhhbmRsZSwgU3RyaW5nPj4KIHsKKyAgICBIYW5kbGUg
aGFuZGxlOwogICAgIEFTU0VSVCghaGFuZGxlLm1fc2FuZGJveEV4dGVuc2lvbik7CiAgICAgCiAg
ICAgVmVjdG9yPGNoYXI+IHBhdGgoUEFUSF9NQVgpOwogICAgIGlmICghY29uZnN0cihfQ1NfREFS
V0lOX1VTRVJfVEVNUF9ESVIsIHBhdGguZGF0YSgpLCBwYXRoLnNpemUoKSkpCi0gICAgICAgIHJl
dHVybiBTdHJpbmcoKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICAv
LyBTaHJpbmsgdGhlIHZlY3Rvci4gICAKICAgICBwYXRoLnNocmluayhzdHJsZW4ocGF0aC5kYXRh
KCkpKTsKQEAgLTM2MCw4MiArMzYxLDgyIEBAIFN0cmluZyBTYW5kYm94RXh0ZW5zaW9uOjpjcmVh
dGVIYW5kbGVGb3JUZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBUeXBlCiAKICAg
ICBpZiAoIWhhbmRsZS5tX3NhbmRib3hFeHRlbnNpb24pIHsKICAgICAgICAgV1RGTG9nQWx3YXlz
KCJDb3VsZCBub3QgY3JlYXRlIGEgc2FuZGJveCBleHRlbnNpb24gZm9yIHRlbXBvcmFyeSBmaWxl
ICclcyciLCBwYXRoLmRhdGEoKSk7Ci0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9Ci0gICAgcmV0dXJuIFN0cmluZyhwYXRoLmRhdGEo
KSk7CisgICAgcmV0dXJuIHt7IFdURk1vdmUoaGFuZGxlKSwgU3RyaW5nKHBhdGguZGF0YSgpKSB9
fTsKIH0KIAotYm9vbCBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JHZW5lcmljRXh0
ZW5zaW9uKEFTQ0lJTGl0ZXJhbCBleHRlbnNpb25DbGFzcywgSGFuZGxlJiBoYW5kbGUpCithdXRv
IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvckdlbmVyaWNFeHRlbnNpb24oQVNDSUlM
aXRlcmFsIGV4dGVuc2lvbkNsYXNzKSAtPiBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4KIHsKKyAgICBI
YW5kbGUgaGFuZGxlOwogICAgIEFTU0VSVCghaGFuZGxlLm1fc2FuZGJveEV4dGVuc2lvbik7CiAK
ICAgICBoYW5kbGUubV9zYW5kYm94RXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbkltcGw6OmNy
ZWF0ZShleHRlbnNpb25DbGFzcy5jaGFyYWN0ZXJzKCksIFR5cGU6OkdlbmVyaWMpOwogICAgIGlm
ICghaGFuZGxlLm1fc2FuZGJveEV4dGVuc2lvbikgewogICAgICAgICBXVEZMb2dBbHdheXMoIkNv
dWxkIG5vdCBjcmVhdGUgYSAnJXMnIHNhbmRib3ggZXh0ZW5zaW9uIiwgZXh0ZW5zaW9uQ2xhc3Mu
Y2hhcmFjdGVycygpKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIH0KICAgICAKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gV1RG
TW92ZShoYW5kbGUpOwogfQogCi1ib29sIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZv
ck1hY2hMb29rdXAoQVNDSUlMaXRlcmFsIHNlcnZpY2UsIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9r
ZW5fdD4gYXVkaXRUb2tlbiwgSGFuZGxlJiBoYW5kbGUsIE9wdGlvblNldDxGbGFncz4gZmxhZ3Mp
CithdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoQVNDSUlM
aXRlcmFsIHNlcnZpY2UsIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gYXVkaXRUb2tlbiwg
T3B0aW9uU2V0PEZsYWdzPiBmbGFncykgLT4gc3RkOjpvcHRpb25hbDxIYW5kbGU+CiB7CisgICAg
SGFuZGxlIGhhbmRsZTsKICAgICBBU1NFUlQoIWhhbmRsZS5tX3NhbmRib3hFeHRlbnNpb24pOwog
ICAgIAogICAgIGhhbmRsZS5tX3NhbmRib3hFeHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uSW1w
bDo6Y3JlYXRlKHNlcnZpY2UuY2hhcmFjdGVycygpLCBUeXBlOjpNYWNoLCBhdWRpdFRva2VuLCBm
bGFncyk7CiAgICAgaWYgKCFoYW5kbGUubV9zYW5kYm94RXh0ZW5zaW9uKSB7CiAgICAgICAgIFdU
RkxvZ0Fsd2F5cygiQ291bGQgbm90IGNyZWF0ZSBhICclcycgc2FuZGJveCBleHRlbnNpb24iLCBz
ZXJ2aWNlLmNoYXJhY3RlcnMoKSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAgICAgCi0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0
dXJuIFdURk1vdmUoaGFuZGxlKTsKIH0KIAogU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkg
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAoY29uc3QgVmVjdG9y
PEFTQ0lJTGl0ZXJhbD4mIHNlcnZpY2VzLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IGF1
ZGl0VG9rZW4sIE9wdGlvblNldDxGbGFncz4gZmxhZ3MpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZUhh
bmRsZXNGb3JSZXNvdXJjZXMoc2VydmljZXMsIEZ1bmN0aW9uPGJvb2woY29uc3QgQVNDSUlMaXRl
cmFsJiwgSGFuZGxlJik+KFthdWRpdFRva2VuLCBmbGFnc10gKGNvbnN0IEFTQ0lJTGl0ZXJhbCYg
c2VydmljZSwgSGFuZGxlJiBoYW5kbGUpIHsKLSAgICAgICAgaWYgKCFTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKHNlcnZpY2UsIGF1ZGl0VG9rZW4sIGhhbmRsZSwg
ZmxhZ3MpKSB7Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1
cm4gY3JlYXRlSGFuZGxlc0ZvclJlc291cmNlcyhzZXJ2aWNlcywgRnVuY3Rpb248c3RkOjpvcHRp
b25hbDxIYW5kbGU+KGNvbnN0IEFTQ0lJTGl0ZXJhbCYpPihbYXVkaXRUb2tlbiwgZmxhZ3NdIChj
b25zdCBBU0NJSUxpdGVyYWwmIHNlcnZpY2UpIC0+IHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiB7Cisg
ICAgICAgIGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFj
aExvb2t1cChzZXJ2aWNlLCBhdWRpdFRva2VuLCBmbGFncyk7CisgICAgICAgIEFTU0VSVChoYW5k
bGUpOworICAgICAgICByZXR1cm4gaGFuZGxlOwogICAgIH0pKTsKIH0KIAotYm9vbCBTYW5kYm94
RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkQnlBdWRpdFRva2VuKGNvbnN0IFN0cmluZyYg
cGF0aCwgYXVkaXRfdG9rZW5fdCBhdWRpdFRva2VuLCBIYW5kbGUmIGhhbmRsZSkKK2F1dG8gU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZEJ5QXVkaXRUb2tlbihjb25zdCBTdHJp
bmcmIHBhdGgsIGF1ZGl0X3Rva2VuX3QgYXVkaXRUb2tlbikgLT4gc3RkOjpvcHRpb25hbDxIYW5k
bGU+CiB7CisgICAgSGFuZGxlIGhhbmRsZTsKICAgICBBU1NFUlQoIWhhbmRsZS5tX3NhbmRib3hF
eHRlbnNpb24pOwogCiAgICAgaGFuZGxlLm1fc2FuZGJveEV4dGVuc2lvbiA9IFNhbmRib3hFeHRl
bnNpb25JbXBsOjpjcmVhdGUocGF0aC51dGY4KCkuZGF0YSgpLCBUeXBlOjpSZWFkQnlQcm9jZXNz
LCBhdWRpdFRva2VuKTsKICAgICBpZiAoIWhhbmRsZS5tX3NhbmRib3hFeHRlbnNpb24pIHsKICAg
ICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIGEgc2FuZGJveCBleHRlbnNpb24gZm9y
ICclcyciLCBwYXRoLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogICAgIAotICAgIHJldHVybiB0cnVlOwor
ICAgIHJldHVybiBXVEZNb3ZlKGhhbmRsZSk7CiB9CiAKLWJvb2wgU2FuZGJveEV4dGVuc2lvbjo6
Y3JlYXRlSGFuZGxlRm9ySU9LaXRDbGFzc0V4dGVuc2lvbihBU0NJSUxpdGVyYWwgaW9LaXRDbGFz
cywgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBhdWRpdFRva2VuLCBIYW5kbGUmIGhhbmRs
ZSwgT3B0aW9uU2V0PEZsYWdzPiBmbGFncykKK2F1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRl
SGFuZGxlRm9ySU9LaXRDbGFzc0V4dGVuc2lvbihBU0NJSUxpdGVyYWwgaW9LaXRDbGFzcywgc3Rk
OjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBhdWRpdFRva2VuLCBPcHRpb25TZXQ8RmxhZ3M+IGZs
YWdzKSAtPiBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4KIHsKKyAgICBIYW5kbGUgaGFuZGxlOwogICAg
IEFTU0VSVCghaGFuZGxlLm1fc2FuZGJveEV4dGVuc2lvbik7CiAKICAgICBoYW5kbGUubV9zYW5k
Ym94RXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbkltcGw6OmNyZWF0ZShpb0tpdENsYXNzLmNo
YXJhY3RlcnMoKSwgVHlwZTo6SU9LaXQsIGF1ZGl0VG9rZW4pOwogICAgIGlmICghaGFuZGxlLm1f
c2FuZGJveEV4dGVuc2lvbikgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBjcmVhdGUg
YSBzYW5kYm94IGV4dGVuc2lvbiBmb3IgJyVzJyIsIGlvS2l0Q2xhc3MuY2hhcmFjdGVycygpKTsK
LSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IH0KIAotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBXVEZNb3ZlKGhhbmRsZSk7CiB9CiAK
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhh
bmRsZXNGb3JJT0tpdENsYXNzRXh0ZW5zaW9ucyhjb25zdCBWZWN0b3I8QVNDSUlMaXRlcmFsPiYg
aW9raXRDbGFzc2VzLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IGF1ZGl0VG9rZW4sIE9w
dGlvblNldDxGbGFncz4gZmxhZ3MpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZUhhbmRsZXNGb3JSZXNv
dXJjZXMoaW9raXRDbGFzc2VzLCBGdW5jdGlvbjxib29sKGNvbnN0IEFTQ0lJTGl0ZXJhbCYsIEhh
bmRsZSYpPihbYXVkaXRUb2tlbiwgZmxhZ3NdIChjb25zdCBBU0NJSUxpdGVyYWwmIGlva2l0Q2xh
c3MsIEhhbmRsZSYgaGFuZGxlKSB7Ci0gICAgICAgIGlmICghU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlSGFuZGxlRm9ySU9LaXRDbGFzc0V4dGVuc2lvbihpb2tpdENsYXNzLCBhdWRpdFRva2VuLCBo
YW5kbGUsIGZsYWdzKSkgewotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgcmV0dXJuIGNyZWF0ZUhhbmRsZXNGb3JSZXNvdXJjZXMoaW9raXRDbGFzc2VzLCBGdW5jdGlv
bjxzdGQ6Om9wdGlvbmFsPEhhbmRsZT4oY29uc3QgQVNDSUlMaXRlcmFsJik+KFthdWRpdFRva2Vu
LCBmbGFnc10gKGNvbnN0IEFTQ0lJTGl0ZXJhbCYgaW9raXRDbGFzcykgeworICAgICAgICBhdXRv
IGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvcklPS2l0Q2xhc3NFeHRl
bnNpb24oaW9raXRDbGFzcywgYXVkaXRUb2tlbiwgZmxhZ3MpOworICAgICAgICBBU1NFUlQoaGFu
ZGxlKTsKKyAgICAgICAgcmV0dXJuIGhhbmRsZTsKICAgICB9KSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaAppbmRleCA2NGVhZDgyMzI5YzZhMWMzYzEyZGZiYjY1
ZTJhMTUxZDg1NTBjNjI1Li5jMzU5ZWVhYTQ0MDU4NmZhNjFkM2JjMzFkZWYwNjlmZmNmYTZlNzcx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TYW5kYm94RXh0ZW5zaW9uLmgKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2FuZGJveEV4dGVuc2lvbi5oCkBAIC0xMTIsMTcgKzEx
MiwxNyBAQCBwdWJsaWM6CiAgICAgfTsKICAgICAKICAgICBzdGF0aWMgUmVmUHRyPFNhbmRib3hF
eHRlbnNpb24+IGNyZWF0ZShIYW5kbGUmJik7Ci0gICAgc3RhdGljIGJvb2wgY3JlYXRlSGFuZGxl
KGNvbnN0IFN0cmluZyYgcGF0aCwgVHlwZSwgSGFuZGxlJik7CisgICAgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8SGFuZGxlPiBjcmVhdGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBUeXBlKTsKICAg
ICBzdGF0aWMgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkgY3JlYXRlUmVhZE9ubHlIYW5k
bGVzRm9yRmlsZXMoQVNDSUlMaXRlcmFsIGxvZ0xhYmVsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
cGF0aHMpOwotICAgIHN0YXRpYyBib29sIGNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRo
KGNvbnN0IFN0cmluZyYgcGF0aCwgVHlwZSwgSGFuZGxlJik7Ci0gICAgc3RhdGljIGJvb2wgY3Jl
YXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgSGFuZGxl
Jik7IC8vIFdpbGwgYXR0ZW1wdCB0byBjcmVhdGUgdGhlIGRpcmVjdG9yeS4KLSAgICBzdGF0aWMg
U3RyaW5nIGNyZWF0ZUhhbmRsZUZvclRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgs
IFR5cGUsIEhhbmRsZSYpOwotICAgIHN0YXRpYyBib29sIGNyZWF0ZUhhbmRsZUZvckdlbmVyaWNF
eHRlbnNpb24oQVNDSUlMaXRlcmFsIGV4dGVuc2lvbkNsYXNzLCBIYW5kbGUmKTsKKyAgICBzdGF0
aWMgc3RkOjpvcHRpb25hbDxIYW5kbGU+IGNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRo
KGNvbnN0IFN0cmluZyYgcGF0aCwgVHlwZSk7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SGFu
ZGxlPiBjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRo
KTsgLy8gV2lsbCBhdHRlbXB0IHRvIGNyZWF0ZSB0aGUgZGlyZWN0b3J5LgorICAgIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxIYW5kbGUsIFN0cmluZz4+IGNyZWF0ZUhhbmRsZUZvclRl
bXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFR5cGUpOworICAgIHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPEhhbmRsZT4gY3JlYXRlSGFuZGxlRm9yR2VuZXJpY0V4dGVuc2lvbihBU0NJSUxp
dGVyYWwgZXh0ZW5zaW9uQ2xhc3MpOwogI2lmIEhBVkUoQVVESVRfVE9LRU4pCi0gICAgc3RhdGlj
IGJvb2wgY3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cChBU0NJSUxpdGVyYWwgc2VydmljZSwgc3Rk
OjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiwgSGFuZGxlJiwgT3B0aW9uU2V0PEZsYWdzPiA9IEZs
YWdzOjpEZWZhdWx0KTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxIYW5kbGU+IGNyZWF0ZUhh
bmRsZUZvck1hY2hMb29rdXAoQVNDSUlMaXRlcmFsIHNlcnZpY2UsIHN0ZDo6b3B0aW9uYWw8YXVk
aXRfdG9rZW5fdD4sIE9wdGlvblNldDxGbGFncz4gPSBGbGFnczo6RGVmYXVsdCk7CiAgICAgc3Rh
dGljIEhhbmRsZUFycmF5IGNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKGNvbnN0IFZlY3RvcjxB
U0NJSUxpdGVyYWw+JiBzZXJ2aWNlcywgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiwgT3B0
aW9uU2V0PEZsYWdzPiA9IEZsYWdzOjpEZWZhdWx0KTsKLSAgICBzdGF0aWMgYm9vbCBjcmVhdGVI
YW5kbGVGb3JSZWFkQnlBdWRpdFRva2VuKGNvbnN0IFN0cmluZyYgcGF0aCwgYXVkaXRfdG9rZW5f
dCwgSGFuZGxlJik7Ci0gICAgc3RhdGljIGJvb2wgY3JlYXRlSGFuZGxlRm9ySU9LaXRDbGFzc0V4
dGVuc2lvbihBU0NJSUxpdGVyYWwgaW9raXRDbGFzcywgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tl
bl90PiwgSGFuZGxlJiwgT3B0aW9uU2V0PEZsYWdzPiA9IEZsYWdzOjpEZWZhdWx0KTsKKyAgICBz
dGF0aWMgc3RkOjpvcHRpb25hbDxIYW5kbGU+IGNyZWF0ZUhhbmRsZUZvclJlYWRCeUF1ZGl0VG9r
ZW4oY29uc3QgU3RyaW5nJiBwYXRoLCBhdWRpdF90b2tlbl90KTsKKyAgICBzdGF0aWMgc3RkOjpv
cHRpb25hbDxIYW5kbGU+IGNyZWF0ZUhhbmRsZUZvcklPS2l0Q2xhc3NFeHRlbnNpb24oQVNDSUlM
aXRlcmFsIGlva2l0Q2xhc3MsIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4sIE9wdGlvblNl
dDxGbGFncz4gPSBGbGFnczo6RGVmYXVsdCk7CiAgICAgc3RhdGljIEhhbmRsZUFycmF5IGNyZWF0
ZUhhbmRsZXNGb3JJT0tpdENsYXNzRXh0ZW5zaW9ucyhjb25zdCBWZWN0b3I8QVNDSUlMaXRlcmFs
PiYgaW9raXRDbGFzc2VzLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+LCBPcHRpb25TZXQ8
RmxhZ3M+ID0gRmxhZ3M6OkRlZmF1bHQpOwogI2VuZGlmCiAgICAgflNhbmRib3hFeHRlbnNpb24o
KTsKQEAgLTE2MiwxMiArMTYyLDEyIEBAIGlubGluZSBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGUqIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjplbmQoKSBjb25zCiBpbmxpbmUg
dm9pZCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6ZW5jb2RlKElQQzo6RW5jb2RlciYp
IGNvbnN0IHsgfQogaW5saW5lIGF1dG8gU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6OmRl
Y29kZShJUEM6OkRlY29kZXImKSAtPiBzdGQ6Om9wdGlvbmFsPEhhbmRsZUFycmF5PiB7IHJldHVy
biB7IEhhbmRsZUFycmF5KCkgfTsgfQogaW5saW5lIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoSGFuZGxlJiYpIHsgcmV0dXJuIG51bGxwdHI7IH0KLWlu
bGluZSBib29sIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShjb25zdCBTdHJpbmcmLCBU
eXBlLCBIYW5kbGUmKSB7IHJldHVybiB0cnVlOyB9CitpbmxpbmUgYXV0byBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGVIYW5kbGUoY29uc3QgU3RyaW5nJiwgVHlwZSkgLT4gc3RkOjpvcHRpb25hbDxI
YW5kbGU+IHsgcmV0dXJuIHt7IH19OyB9CiBpbmxpbmUgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
QXJyYXkgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlUmVhZE9ubHlIYW5kbGVzRm9yRmlsZXMoQVND
SUlMaXRlcmFsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpIHsgcmV0dXJuIHsgfTsgfQotaW5saW5l
IGJvb2wgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgo
Y29uc3QgU3RyaW5nJiwgVHlwZSwgSGFuZGxlJikgeyByZXR1cm4gdHJ1ZTsgfQotaW5saW5lIGJv
b2wgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KGNv
bnN0IFN0cmluZyYsIEhhbmRsZSYpIHsgcmV0dXJuIHRydWU7IH0KLWlubGluZSBTdHJpbmcgU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcm
IC8qcHJlZml4Ki8sIFR5cGUsIEhhbmRsZSYpIHtyZXR1cm4gU3RyaW5nKCk7fQotaW5saW5lIGJv
b2wgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yR2VuZXJpY0V4dGVuc2lvbihBU0NJ
SUxpdGVyYWwgLypleHRlbnNpb25DbGFzcyovLCBIYW5kbGUmKSB7IHJldHVybiB0cnVlOyB9Citp
bmxpbmUgYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5n
UGF0aChjb25zdCBTdHJpbmcmLCBUeXBlKSAtPiBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4geyByZXR1
cm4ge3sgfX07IH0KK2lubGluZSBhdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZv
clJlYWRXcml0ZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKSAtPiBzdGQ6Om9wdGlvbmFsPEhhbmRs
ZT4geyByZXR1cm4ge3sgfX07IH0KK2lubGluZSBhdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0
ZUhhbmRsZUZvclRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiAvKnByZWZpeCovLCBUeXBlKSAt
PiBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxIYW5kbGUsIFN0cmluZz4+IHsgcmV0dXJuIHN0ZDo6
b3B0aW9uYWw8c3RkOjpwYWlyPEhhbmRsZSwgU3RyaW5nPj4geyBzdGQ6OnBhaXI8SGFuZGxlLCBT
dHJpbmc+IHsgSGFuZGxlIHsgfSwgU3RyaW5nIHsgfSB9IH07IH0KK2lubGluZSBhdXRvIFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvckdlbmVyaWNFeHRlbnNpb24oQVNDSUlMaXRlcmFs
IC8qZXh0ZW5zaW9uQ2xhc3MqLykgLT4gc3RkOjpvcHRpb25hbDxIYW5kbGU+IHsgcmV0dXJuIHt7
IH19OyB9CiBpbmxpbmUgU2FuZGJveEV4dGVuc2lvbjo6flNhbmRib3hFeHRlbnNpb24oKSB7IH0K
IGlubGluZSBib29sIFNhbmRib3hFeHRlbnNpb246OnJldm9rZSgpIHsgcmV0dXJuIHRydWU7IH0K
IGlubGluZSBib29sIFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWUoKSB7IHJldHVybiB0cnVlOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlD
b2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29h
Lm1tCmluZGV4IGM3MTkwZjhmZjY4YWFmYzBkMWNmYzI3MDE2ZDQwZjE3NTE5NDI0OGQuLjMwZjcy
NzJiY2RlZTZmMTdlZGZkYzhjNDYxYmY3NjFhYTRkZGI1ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCkBAIC0xNzcsMTMgKzE3
NywxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YWRkUGxhdGZvcm1Mb2FkUGFyYW1ldGVycyhXZWJQ
cm9jZXNzUHJveHkmIHByb2Nlc3MsIExvYWRQYXJhbQogICAgIAogI2lmIFBMQVRGT1JNKElPUykK
ICAgICBpZiAoIXByb2Nlc3MuaGFzTWFuYWdlZFNlc3Npb25TYW5kYm94QWNjZXNzKCkgJiYgW2dl
dFdlYkZpbHRlckV2YWx1YXRvckNsYXNzKCkgaXNNYW5hZ2VkU2Vzc2lvbl0pIHsKLSAgICAgICAg
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGhhbmRsZTsKLSAgICAgICAgU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLnVpa2l0LnZpZXdzZXJ2aWNl
LmNvbS5hcHBsZS5XZWJDb250ZW50RmlsdGVyLnJlbW90ZVVJIl9zLCBzdGQ6Om51bGxvcHQsIGhh
bmRsZSk7Ci0gICAgICAgIGxvYWRQYXJhbWV0ZXJzLmNvbnRlbnRGaWx0ZXJFeHRlbnNpb25IYW5k
bGUgPSBXVEZNb3ZlKGhhbmRsZSk7CisgICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS51aWtpdC52aWV3
c2VydmljZS5jb20uYXBwbGUuV2ViQ29udGVudEZpbHRlci5yZW1vdGVVSSJfcywgc3RkOjpudWxs
b3B0KSkKKyAgICAgICAgICAgIGxvYWRQYXJhbWV0ZXJzLmNvbnRlbnRGaWx0ZXJFeHRlbnNpb25I
YW5kbGUgPSBXVEZNb3ZlKCpoYW5kbGUpOwogCi0gICAgICAgIFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZSBmcm9udGJvYXJkU2VydmljZUV4dGVuc2lvbkhhbmRsZTsKLSAgICAgICAgaWYgKFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5mcm9udGJv
YXJkLnN5c3RlbWFwcHNlcnZpY2VzIl9zLCBzdGQ6Om51bGxvcHQsIGZyb250Ym9hcmRTZXJ2aWNl
RXh0ZW5zaW9uSGFuZGxlKSkKLSAgICAgICAgICAgIGxvYWRQYXJhbWV0ZXJzLmZyb250Ym9hcmRT
ZXJ2aWNlRXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZShmcm9udGJvYXJkU2VydmljZUV4dGVuc2lv
bkhhbmRsZSk7CisgICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5mcm9udGJvYXJkLnN5c3RlbWFwcHNl
cnZpY2VzIl9zLCBzdGQ6Om51bGxvcHQpKQorICAgICAgICAgICAgbG9hZFBhcmFtZXRlcnMuZnJv
bnRib2FyZFNlcnZpY2VFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKCpoYW5kbGUpOwogCiAgICAg
ICAgIHByb2Nlc3MubWFya0hhc01hbmFnZWRTZXNzaW9uU2FuZGJveEFjY2VzcygpOwogICAgIH0K
QEAgLTE5OSwxMCArMTk3LDExIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjcmVhdGVTYW5kYm94RXh0
ZW5zaW9uc0lmTmVlZGVkKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlcywKICAgICAgICAgQk9P
TCBpc0RpcmVjdG9yeTsKICAgICAgICAgaWYgKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdl
cl0gZmlsZUV4aXN0c0F0UGF0aDpmaWxlc1swXSBpc0RpcmVjdG9yeTomaXNEaXJlY3RvcnldICYm
ICFpc0RpcmVjdG9yeSkgewogICAgICAgICAgICAgQVNTRVJUKHByb2Nlc3MoKS5jb25uZWN0aW9u
KCkgJiYgcHJvY2VzcygpLmNvbm5lY3Rpb24oKS0+Z2V0QXVkaXRUb2tlbigpKTsKLSAgICAgICAg
ICAgIGlmIChwcm9jZXNzKCkuY29ubmVjdGlvbigpICYmIHByb2Nlc3MoKS5jb25uZWN0aW9uKCkt
PmdldEF1ZGl0VG9rZW4oKSkKLSAgICAgICAgICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVh
dGVIYW5kbGVGb3JSZWFkQnlBdWRpdFRva2VuKCIvIiwgKihwcm9jZXNzKCkuY29ubmVjdGlvbigp
LT5nZXRBdWRpdFRva2VuKCkpLCBmaWxlUmVhZEhhbmRsZSk7Ci0gICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKCIvIiwgU2FuZGJv
eEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHksIGZpbGVSZWFkSGFuZGxlKTsKKyAgICAgICAgICAg
IGlmIChwcm9jZXNzKCkuY29ubmVjdGlvbigpICYmIHByb2Nlc3MoKS5jb25uZWN0aW9uKCktPmdl
dEF1ZGl0VG9rZW4oKSkgeworICAgICAgICAgICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRCeUF1ZGl0VG9rZW4oIi8iLCAqKHByb2Nl
c3MoKS5jb25uZWN0aW9uKCktPmdldEF1ZGl0VG9rZW4oKSkpKQorICAgICAgICAgICAgICAgICAg
ICBmaWxlUmVhZEhhbmRsZSA9IFdURk1vdmUoKmhhbmRsZSk7CisgICAgICAgICAgICB9IGVsc2Ug
aWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKCIvIiwgU2Fu
ZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHkpKQorICAgICAgICAgICAgICAgIGZpbGVSZWFk
SGFuZGxlID0gV1RGTW92ZSgqaGFuZGxlKTsKICAgICAgICAgICAgIHdpbGxBY3F1aXJlVW5pdmVy
c2FsRmlsZVJlYWRTYW5kYm94RXh0ZW5zaW9uKG1fcHJvY2Vzcyk7CiAgICAgICAgIH0KICAgICB9
CkBAIC0yMTIsNyArMjExLDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNyZWF0ZVNhbmRib3hFeHRl
bnNpb25zSWZOZWVkZWQoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVzLAogICAgICAgICBOU1N0
cmluZyAqZmlsZSA9IGZpbGVzW2ldOwogICAgICAgICBpZiAoIVtbTlNGaWxlTWFuYWdlciBkZWZh
dWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpmaWxlXSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUoZmlsZSwgU2FuZGJveEV4
dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHksIGZpbGVVcGxvYWRIYW5kbGVzW2ldKTsKKyAgICAgICAg
aWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGZpbGUsIFNh
bmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRPbmx5KSkKKyAgICAgICAgICAgIGZpbGVVcGxvYWRI
YW5kbGVzW2ldID0gV1RGTW92ZSgqaGFuZGxlKTsKICAgICB9CiB9CiAKQEAgLTY4NSw3ICs2ODUs
OCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJgogdm9pZCBXZWJQYWdlUHJveHk6OmdyYW50QWNj
ZXNzVG9Bc3NldFNlcnZpY2VzKCkKIHsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgbW9i
aWxlQXNzZXRIYW5kbGVWMjsKLSAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JN
YWNoTG9va3VwKCJjb20uYXBwbGUubW9iaWxlYXNzZXRkLnYyIl9zLCBzdGQ6Om51bGxvcHQsIG1v
YmlsZUFzc2V0SGFuZGxlVjIpOworICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5tb2JpbGVhc3NldGQudjIi
X3MsIHN0ZDo6bnVsbG9wdCkpCisgICAgICAgIG1vYmlsZUFzc2V0SGFuZGxlVjIgPSBXVEZNb3Zl
KCpoYW5kbGUpOwogICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpHcmFu
dEFjY2Vzc1RvQXNzZXRTZXJ2aWNlcyhtb2JpbGVBc3NldEhhbmRsZVYyKSwgMCk7CiB9CiAKQEAg
LTcwMiw3ICs3MDMsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c3dpdGNoRnJvbVN0YXRpY0ZvbnRS
ZWdpc3RyeVRvVXNlckZvbnRSZWdpc3RyeSgpCiBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgV2Vi
UGFnZVByb3h5Ojpmb250ZE1hY2hFeHRlbnNpb25IYW5kbGUoKQogewogICAgIFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZSBmb250TWFjaEV4dGVuc2lvbkhhbmRsZTsKLSAgICBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUuZm9udHMiX3MsIHN0ZDo6
bnVsbG9wdCwgZm9udE1hY2hFeHRlbnNpb25IYW5kbGUpOworICAgIGlmIChhdXRvIGhhbmRsZSA9
IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5m
b250cyJfcywgc3RkOjpudWxsb3B0KSkKKyAgICAgICAgZm9udE1hY2hFeHRlbnNpb25IYW5kbGUg
PSBXVEZNb3ZlKCpoYW5kbGUpOwogICAgIHJldHVybiBmb250TWFjaEV4dGVuc2lvbkhhbmRsZTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVi
b2FyZFByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0
ZWJvYXJkUHJveHlDb2NvYS5tbQppbmRleCBjZWFmN2YyODY3ODhmM2Y0ODliYjgzNTJlMDIyZTg2
NDE2Zjg3YzMxLi5kYzgxYjA5NzhkOTJhNzliOGYxODllYjc3YjBjMjAzNTk5ZjUwODdhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJk
UHJveHlDb2NvYS5tbQpAQCAtMTc4LDcgKzE3OCw4IEBAIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5
OjpnZXRQYXN0ZWJvYXJkUGF0aG5hbWVzRm9yVHlwZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
CiAgICAgICAgICAgICAgICAgYXV0byYgZmlsZW5hbWUgPSBwYXRobmFtZXNbaV07CiAgICAgICAg
ICAgICAgICAgaWYgKCFbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNB
dFBhdGg6ZmlsZW5hbWVdKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
ICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUoZmlsZW5hbWUsIFNhbmRib3hF
eHRlbnNpb246OlR5cGU6OlJlYWRPbmx5LCBzYW5kYm94RXh0ZW5zaW9uc1tpXSk7CisgICAgICAg
ICAgICAgICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
KGZpbGVuYW1lLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkT25seSkpCisgICAgICAgICAg
ICAgICAgICAgIHNhbmRib3hFeHRlbnNpb25zW2ldID0gV1RGTW92ZSgqaGFuZGxlKTsKICAgICAg
ICAgICAgIH0KICNlbmRpZgogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQppbmRleCBlYTZmNzU0YjFkNzEzMDZh
MjU4NmRkNDY5MWM2NzZhNDA5Y2QyNDRlLi4xZWIyN2E5YmU1ZTYwYjlhNDkyZWI0NzcxYmRlOTdj
NWFmNzllMzM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQ
cm9jZXNzUG9vbENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlByb2Nlc3NQb29sQ29jb2EubW0KQEAgLTMyOCw3ICszMjgsOCBAQCB2b2lkIFdlYlByb2Nlc3NQ
b29sOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKGNvbnN0IFdlYlByb2Nlc3NQcm94eSYg
cHJvY2VzcwogCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHJlYWxseSBiZSBjb25maWd1cmFi
bGU7IHdlIHNob3VsZG4ndCBqdXN0IGJsaW5kbHkgYWxsb3cgcmVhZCBhY2Nlc3MgdG8gdGhlIFVJ
IHByb2Nlc3MgYnVuZGxlLgogICAgIHBhcmFtZXRlcnMudWlQcm9jZXNzQnVuZGxlUmVzb3VyY2VQ
YXRoID0gbV9yZXNvbHZlZFBhdGhzLnVpUHJvY2Vzc0J1bmRsZVJlc291cmNlUGF0aDsKLSAgICBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChwYXJhbWV0
ZXJzLnVpUHJvY2Vzc0J1bmRsZVJlc291cmNlUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6
UmVhZE9ubHksIHBhcmFtZXRlcnMudWlQcm9jZXNzQnVuZGxlUmVzb3VyY2VQYXRoRXh0ZW5zaW9u
SGFuZGxlKTsKKyAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVI
YW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChwYXJhbWV0ZXJzLnVpUHJvY2Vzc0J1bmRsZVJlc291
cmNlUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHkpKQorICAgICAgICBwYXJh
bWV0ZXJzLnVpUHJvY2Vzc0J1bmRsZVJlc291cmNlUGF0aEV4dGVuc2lvbkhhbmRsZSA9IFdURk1v
dmUoKmhhbmRsZSk7CiAKICAgICBwYXJhbWV0ZXJzLnVpUHJvY2Vzc0J1bmRsZUlkZW50aWZpZXIg
PSBhcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKTsKIApAQCAtMzM2LDIwICszMzcsMjUgQEAg
dm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyhjb25zdCBX
ZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MKICAgICBwYXJhbWV0ZXJzLnRocm91Z2hwdXRRT1MgPSB3
ZWJQcm9jZXNzVGhyb3VnaHB1dFFPUygpOwogICAgIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
Ci0gICAgaWYgKCFtX3Jlc29sdmVkUGF0aHMuY29va2llU3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5
KCkpCi0gICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZp
bmdQYXRoKG1fcmVzb2x2ZWRQYXRocy5jb29raWVTdG9yYWdlRGlyZWN0b3J5LCBTYW5kYm94RXh0
ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUsIHBhcmFtZXRlcnMuY29va2llU3RvcmFnZURpcmVjdG9y
eUV4dGVuc2lvbkhhbmRsZSk7CisgICAgaWYgKCFtX3Jlc29sdmVkUGF0aHMuY29va2llU3RvcmFn
ZURpcmVjdG9yeS5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgobV9yZXNvbHZlZFBh
dGhzLmNvb2tpZVN0b3JhZ2VEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRX
cml0ZSkpCisgICAgICAgICAgICBwYXJhbWV0ZXJzLmNvb2tpZVN0b3JhZ2VEaXJlY3RvcnlFeHRl
bnNpb25IYW5kbGUgPSBXVEZNb3ZlKCpoYW5kbGUpOworICAgIH0KIAotICAgIGlmICghbV9yZXNv
bHZlZFBhdGhzLmNvbnRhaW5lckNhY2hlc0RpcmVjdG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKG1fcmVzb2x2
ZWRQYXRocy5jb250YWluZXJDYWNoZXNEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246OlR5cGU6
OlJlYWRXcml0ZSwgcGFyYW1ldGVycy5jb250YWluZXJDYWNoZXNEaXJlY3RvcnlFeHRlbnNpb25I
YW5kbGUpOworICAgIGlmICghbV9yZXNvbHZlZFBhdGhzLmNvbnRhaW5lckNhY2hlc0RpcmVjdG9y
eS5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgobV9yZXNvbHZlZFBhdGhzLmNvbnRh
aW5lckNhY2hlc0RpcmVjdG9yeSwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRlKSkK
KyAgICAgICAgICAgIHBhcmFtZXRlcnMuY29udGFpbmVyQ2FjaGVzRGlyZWN0b3J5RXh0ZW5zaW9u
SGFuZGxlID0gV1RGTW92ZSgqaGFuZGxlKTsKKyAgICB9CiAKLSAgICBpZiAoIW1fcmVzb2x2ZWRQ
YXRocy5jb250YWluZXJUZW1wb3JhcnlEaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChtX3Jlc29sdmVk
UGF0aHMuY29udGFpbmVyVGVtcG9yYXJ5RGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBl
OjpSZWFkV3JpdGUsIHBhcmFtZXRlcnMuY29udGFpbmVyVGVtcG9yYXJ5RGlyZWN0b3J5RXh0ZW5z
aW9uSGFuZGxlKTsKKyAgICBpZiAoIW1fcmVzb2x2ZWRQYXRocy5jb250YWluZXJUZW1wb3JhcnlE
aXJlY3RvcnkuaXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKG1fcmVzb2x2ZWRQYXRo
cy5jb250YWluZXJUZW1wb3JhcnlEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJl
YWRXcml0ZSkpCisgICAgICAgICAgICBwYXJhbWV0ZXJzLmNvbnRhaW5lclRlbXBvcmFyeURpcmVj
dG9yeUV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoKmhhbmRsZSk7CisgICAgfQogI2VuZGlmCiAj
aWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQogICAgIGlmIChX
ZWJQcm9jZXNzUHJveHk6OnNob3VsZEVuYWJsZVJlbW90ZUluc3BlY3RvcigpKSB7Ci0gICAgICAg
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBlbmFibGVSZW1vdGVXZWJJbnNwZWN0b3JFeHRlbnNp
b25IYW5kbGU7Ci0gICAgICAgIGlmIChTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JN
YWNoTG9va3VwKCJjb20uYXBwbGUud2ViaW5zcGVjdG9yIl9zLCBzdGQ6Om51bGxvcHQsIGVuYWJs
ZVJlbW90ZVdlYkluc3BlY3RvckV4dGVuc2lvbkhhbmRsZSkpCi0gICAgICAgICAgICBwYXJhbWV0
ZXJzLmVuYWJsZVJlbW90ZVdlYkluc3BlY3RvckV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoZW5h
YmxlUmVtb3RlV2ViSW5zcGVjdG9yRXh0ZW5zaW9uSGFuZGxlKTsKKyAgICAgICAgaWYgKGF1dG8g
aGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29t
LmFwcGxlLndlYmluc3BlY3RvciJfcywgc3RkOjpudWxsb3B0KSkKKyAgICAgICAgICAgIHBhcmFt
ZXRlcnMuZW5hYmxlUmVtb3RlV2ViSW5zcGVjdG9yRXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgq
aGFuZGxlKTsKICAgICB9CiAjZW5kaWYKIApAQCAtMzk1LDggKzQwMSwxMCBAQCB2b2lkIFdlYlBy
b2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKGNvbnN0IFdlYlByb2Nlc3NQ
cm94eSYgcHJvY2VzcwogCiAjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShNQUNDQVRBTFlT
VCkKICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgYW5kIHJlbGF0ZWQgcGFyYW1ldGVyIHdoZW4g
PHJkYXI6Ly9wcm9ibGVtLzI5NDQ4MzY4PiBpcyBmaXhlZC4KLSAgICBpZiAoaXNTYWZhcmkgJiYg
bWVkaWFEZXZpY2VzRW5hYmxlZCAmJiAhbV9kZWZhdWx0UGFnZUdyb3VwLT5wcmVmZXJlbmNlcygp
LmNhcHR1cmVBdWRpb0luVUlQcm9jZXNzRW5hYmxlZCgpICYmICFtX2RlZmF1bHRQYWdlR3JvdXAt
PnByZWZlcmVuY2VzKCkuY2FwdHVyZUF1ZGlvSW5HUFVQcm9jZXNzRW5hYmxlZCgpKQotICAgICAg
ICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JHZW5lcmljRXh0ZW5zaW9uKCJjb20u
YXBwbGUud2Via2l0Lm1pY3JvcGhvbmUiX3MsIHBhcmFtZXRlcnMuYXVkaW9DYXB0dXJlRXh0ZW5z
aW9uSGFuZGxlKTsKKyAgICBpZiAoaXNTYWZhcmkgJiYgbWVkaWFEZXZpY2VzRW5hYmxlZCAmJiAh
bV9kZWZhdWx0UGFnZUdyb3VwLT5wcmVmZXJlbmNlcygpLmNhcHR1cmVBdWRpb0luVUlQcm9jZXNz
RW5hYmxlZCgpICYmICFtX2RlZmF1bHRQYWdlR3JvdXAtPnByZWZlcmVuY2VzKCkuY2FwdHVyZUF1
ZGlvSW5HUFVQcm9jZXNzRW5hYmxlZCgpKSB7CisgICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvckdlbmVyaWNFeHRlbnNpb24oImNvbS5hcHBs
ZS53ZWJraXQubWljcm9waG9uZSJfcykpCisgICAgICAgICAgICBwYXJhbWV0ZXJzLmF1ZGlvQ2Fw
dHVyZUV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoKmhhbmRsZSk7CisgICAgfQogI2Vsc2UKICAg
ICBVTlVTRURfUEFSQU0obWVkaWFEZXZpY2VzRW5hYmxlZCk7CiAjZW5kaWYKQEAgLTQzMiw5ICs0
NDAsOCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNz
KGNvbnN0IFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcwogICAgIHBhcmFtZXRlcnMuc3lzdGVtSGFz
QUMgPSBjYWNoZWRTeXN0ZW1IYXNBQygpLnZhbHVlX29yKHRydWUpOwogCiAgICAgaWYgKHJlcXVp
cmVzQ29udGFpbmVyTWFuYWdlckFjY2VzcygpKSB7Ci0gICAgICAgIFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSBoYW5kbGU7Ci0gICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZv
ck1hY2hMb29rdXAoImNvbS5hcHBsZS5jb250YWluZXJtYW5hZ2VyZCJfcywgc3RkOjpudWxsb3B0
LCBoYW5kbGUpOwotICAgICAgICBwYXJhbWV0ZXJzLmNvbnRhaW5lck1hbmFnZXJFeHRlbnNpb25I
YW5kbGUgPSBXVEZNb3ZlKGhhbmRsZSk7CisgICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5jb250YWlu
ZXJtYW5hZ2VyZCJfcywgc3RkOjpudWxsb3B0KSkKKyAgICAgICAgICAgIHBhcmFtZXRlcnMuY29u
dGFpbmVyTWFuYWdlckV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoKmhhbmRsZSk7CiAgICAgfQog
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTQ1MywxNiArNDYwLDE0IEBAIHZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoY29uc3QgV2ViUHJvY2Vz
c1Byb3h5JiBwcm9jZXNzCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhUExBVEZPUk0o
TUFDQ0FUQUxZU1QpCiAgICAgaWYgKCFfTUdDYWNoZVZhbGlkKCkpIHsKLSAgICAgICAgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlIGhhbmRsZTsKLSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLm1vYmlsZWdlc3RhbHQueHBjIl9zLCBz
dGQ6Om51bGxvcHQsIGhhbmRsZSk7Ci0gICAgICAgIHBhcmFtZXRlcnMubW9iaWxlR2VzdGFsdEV4
dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoaGFuZGxlKTsKKyAgICAgICAgaWYgKGF1dG8gaGFuZGxl
ID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxl
Lm1vYmlsZWdlc3RhbHQueHBjIl9zLCBzdGQ6Om51bGxvcHQpKQorICAgICAgICAgICAgcGFyYW1l
dGVycy5tb2JpbGVHZXN0YWx0RXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqaGFuZGxlKTsKICAg
ICB9CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGUgbGF1bmNoU2VydmljZXNFeHRlbnNpb25IYW5kbGU7Ci0gICAgU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLmNvcmVzZXJ2aWNlcy5sYXVu
Y2hzZXJ2aWNlc2QiX3MsIHN0ZDo6bnVsbG9wdCwgbGF1bmNoU2VydmljZXNFeHRlbnNpb25IYW5k
bGUpOwotICAgIHBhcmFtZXRlcnMubGF1bmNoU2VydmljZXNFeHRlbnNpb25IYW5kbGUgPSBXVEZN
b3ZlKGxhdW5jaFNlcnZpY2VzRXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBpZiAoYXV0byBsYXVuY2hT
ZXJ2aWNlc0V4dGVuc2lvbkhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZv
ck1hY2hMb29rdXAoImNvbS5hcHBsZS5jb3Jlc2VydmljZXMubGF1bmNoc2VydmljZXNkIl9zLCBz
dGQ6Om51bGxvcHQpKQorICAgICAgICBwYXJhbWV0ZXJzLmxhdW5jaFNlcnZpY2VzRXh0ZW5zaW9u
SGFuZGxlID0gV1RGTW92ZSgqbGF1bmNoU2VydmljZXNFeHRlbnNpb25IYW5kbGUpOwogI2VuZGlm
CiAKICNpZiBIQVZFKFZJREVPX1JFU1RSSUNURURfREVDT0RJTkcpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHAKaW5kZXggYzYxYmIz
ZmQyZWUwNDZmMzgyNGM0MGFiOTkxODFjMGZjZWUyYTE5Ny4uY2ZiZTc2MjhjMjhjOWY4ZjQyNTgz
YWQ5NzE5NzY5NWUwNTY2NDU5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
RG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcApAQCAtMTA3LDggKzEwNywxMSBAQCB2b2lkIERv
d25sb2FkUHJveHk6OnB1Ymxpc2hQcm9ncmVzcyhjb25zdCBVUkwmIFVSTCkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGhhbmRsZTsKLSAgICBib29sIGNy
ZWF0ZWRTYW5kYm94RXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKFVS
TC5maWxlU3lzdGVtUGF0aCgpLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUsIGhh
bmRsZSk7Ci0gICAgQVNTRVJUX1VOVVNFRChjcmVhdGVkU2FuZGJveEV4dGVuc2lvbiwgY3JlYXRl
ZFNhbmRib3hFeHRlbnNpb24pOworICAgIGlmIChhdXRvIGNyZWF0ZWRIYW5kbGUgPSBTYW5kYm94
RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUoVVJMLmZpbGVTeXN0ZW1QYXRoKCksIFNhbmRib3hFeHRl
bnNpb246OlR5cGU6OlJlYWRXcml0ZSkpCisgICAgICAgIGhhbmRsZSA9IFdURk1vdmUoKmNyZWF0
ZWRIYW5kbGUpOworICAgIGVsc2UKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisKICAg
ICBtX2RhdGFTdG9yZS0+bmV0d29ya1Byb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJv
Y2Vzczo6UHVibGlzaERvd25sb2FkUHJvZ3Jlc3MobV9kb3dubG9hZElELCBVUkwsIGhhbmRsZSks
IDApOwogfQogI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQpAQCAtMTYzLDggKzE2NiwxMCBAQCB2
b2lkIERvd25sb2FkUHJveHk6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1l
KGNvbnN0IFdlYkNvcmU6OlJlc291cgogCiAgICAgbV9jbGllbnQtPmRlY2lkZURlc3RpbmF0aW9u
V2l0aFN1Z2dlc3RlZEZpbGVuYW1lKCp0aGlzLCByZXNwb25zZSwgUmVzb3VyY2VSZXNwb25zZUJh
c2U6OnNhbml0aXplU3VnZ2VzdGVkRmlsZW5hbWUoc3VnZ2VzdGVkRmlsZW5hbWUpLCBbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXSAoQWxsb3dPdmVyd3JpdGUgYWxsb3dPdmVyd3JpdGUsIFN0
cmluZyBkZXN0aW5hdGlvbikgbXV0YWJsZSB7CiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlOwotICAgICAgICBpZiAoIWRlc3RpbmF0aW9uLmlz
TnVsbCgpKQotICAgICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGRlc3Rp
bmF0aW9uLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUsIHNhbmRib3hFeHRlbnNp
b25IYW5kbGUpOworICAgICAgICBpZiAoIWRlc3RpbmF0aW9uLmlzTnVsbCgpKSB7CisgICAgICAg
ICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUoZGVz
dGluYXRpb24sIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0ZSkpCisgICAgICAgICAg
ICAgICAgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoKmhhbmRsZSk7CisgICAgICAg
IH0KIAogICAgICAgICBzZXREZXN0aW5hdGlvbkZpbGVuYW1lKGRlc3RpbmF0aW9uKTsKICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoZGVzdGluYXRpb24sIFdURk1vdmUoc2FuZGJveEV4dGVuc2lv
bkhhbmRsZSksIGFsbG93T3ZlcndyaXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
R1BVL0dQVVByb2Nlc3NQcm94eS5jcHAKaW5kZXggZTdhYTU4YjJmYzVmYTJkNmMxMjM5YmI4YmNl
NTIyZjAwMDUzZjk4NS4uNzE1ZTdmMDMwMmFlMTlmNDFjMDVhZmUwMmEzNmY5ZDE0ZDk0NWQ2MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5jcHAK
QEAgLTE0Myw3ICsxNDMsOCBAQCBHUFVQcm9jZXNzUHJveHk6OkdQVVByb2Nlc3NQcm94eSgpCiAj
aWYgUExBVEZPUk0oTUFDKQogICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBhbmQgcmVsYXRlZCBw
YXJhbWV0ZXIgd2hlbiA8cmRhcjovL3Byb2JsZW0vMjk0NDgzNjg+IGlzIGZpeGVkLgogICAgIGlm
IChNYWNBcHBsaWNhdGlvbjo6aXNTYWZhcmkoKSkgewotICAgICAgICBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGVGb3JHZW5lcmljRXh0ZW5zaW9uKCJjb20uYXBwbGUud2Via2l0Lm1pY3Jv
cGhvbmUiX3MsIHBhcmFtZXRlcnMubWljcm9waG9uZVNhbmRib3hFeHRlbnNpb25IYW5kbGUpOwor
ICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVG
b3JHZW5lcmljRXh0ZW5zaW9uKCJjb20uYXBwbGUud2Via2l0Lm1pY3JvcGhvbmUiX3MpKQorICAg
ICAgICAgICAgcGFyYW1ldGVycy5taWNyb3Bob25lU2FuZGJveEV4dGVuc2lvbkhhbmRsZSA9IFdU
Rk1vdmUoKmhhbmRsZSk7CiAgICAgICAgIG1faGFzU2VudE1pY3JvcGhvbmVTYW5kYm94RXh0ZW5z
aW9uID0gdHJ1ZTsKICAgICB9CiAjZW5kaWYKQEAgLTE1NSwxMSArMTU2LDE1IEBAIEdQVVByb2Nl
c3NQcm94eTo6R1BVUHJvY2Vzc1Byb3h5KCkKICAgICBhdXRvIGNvbnRhaW5lckNhY2hlc0RpcmVj
dG9yeSA9IHJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5z
aW9uKGdwdVByb2Nlc3NDYWNoZXNEaXJlY3RvcnkoKSk7CiAgICAgYXV0byBjb250YWluZXJUZW1w
b3JhcnlEaXJlY3RvcnkgPSByZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2Fu
ZGJveEV4dGVuc2lvbihXZWJQcm9jZXNzUG9vbDo6Y29udGFpbmVyVGVtcG9yYXJ5RGlyZWN0b3J5
KCkpOwogCi0gICAgaWYgKCFjb250YWluZXJDYWNoZXNEaXJlY3RvcnkuaXNFbXB0eSgpKQotICAg
ICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChj
b250YWluZXJDYWNoZXNEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0
ZSwgcGFyYW1ldGVycy5jb250YWluZXJDYWNoZXNEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwor
ICAgIGlmICghY29udGFpbmVyQ2FjaGVzRGlyZWN0b3J5LmlzRW1wdHkoKSkgeworICAgICAgICBp
ZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVz
b2x2aW5nUGF0aChjb250YWluZXJDYWNoZXNEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246OlR5
cGU6OlJlYWRXcml0ZSkpCisgICAgICAgICAgICBwYXJhbWV0ZXJzLmNvbnRhaW5lckNhY2hlc0Rp
cmVjdG9yeUV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoKmhhbmRsZSk7CisgICAgfQogCi0gICAg
aWYgKCFjb250YWluZXJUZW1wb3JhcnlEaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChjb250YWluZXJU
ZW1wb3JhcnlEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0ZSwgcGFy
YW1ldGVycy5jb250YWluZXJUZW1wb3JhcnlEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOworICAg
IGlmICghY29udGFpbmVyVGVtcG9yYXJ5RGlyZWN0b3J5LmlzRW1wdHkoKSkgeworICAgICAgICBp
ZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVz
b2x2aW5nUGF0aChjb250YWluZXJUZW1wb3JhcnlEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246
OlR5cGU6OlJlYWRXcml0ZSkpCisgICAgICAgICAgICBwYXJhbWV0ZXJzLmNvbnRhaW5lclRlbXBv
cmFyeURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoKmhhbmRsZSk7CisgICAgfQog
I2VuZGlmCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoV2ViQ29yZTo6ZGV2aWNl
SGFzQUdYQ29tcGlsZXJTZXJ2aWNlKCkpIHsKQEAgLTE5OSw1NCArMjA0LDU0IEBAIHZvaWQgR1BV
UHJvY2Vzc1Byb3h5OjpzZXRPcmllbnRhdGlvbkZvck1lZGlhQ2FwdHVyZSh1aW50NjRfdCBvcmll
bnRhdGlvbikKIAogc3RhdGljIGlubGluZSBib29sIGFkZENhbWVyYVNhbmRib3hFeHRlbnNpb25z
KFZlY3RvcjxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+JiBleHRlbnNpb25zKQogewotICAgIFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlOwotICAgIGlmICgh
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yR2VuZXJpY0V4dGVuc2lvbigiY29tLmFw
cGxlLndlYmtpdC5jYW1lcmEiX3MsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpKSB7CisgICAgYXV0
byBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
Rm9yR2VuZXJpY0V4dGVuc2lvbigiY29tLmFwcGxlLndlYmtpdC5jYW1lcmEiX3MpOworICAgIGlm
ICghc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihX
ZWJSVEMsICJVbmFibGUgdG8gY3JlYXRlIGNvbS5hcHBsZS53ZWJraXQuY2FtZXJhIHNhbmRib3gg
ZXh0ZW5zaW9uIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAjaWYgSEFWRShBVURJ
VF9UT0tFTikKICAgICAgICAgaWYgKHNob3VsZENyZWF0ZUFwcGxlQ2FtZXJhU2VydmljZVNhbmRi
b3hFeHRlbnNpb24oKSkgewotICAgICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGFw
cGxlQ2FtZXJhU2VydmljZVBhdGhTYW5kYm94RXh0ZW5zaW9uSGFuZGxlOwotICAgICAgICAgICAg
aWYgKCFTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBw
bGUuYXBwbGVjYW1lcmFkIl9zLCBzdGQ6Om51bGxvcHQsIGFwcGxlQ2FtZXJhU2VydmljZVBhdGhT
YW5kYm94RXh0ZW5zaW9uSGFuZGxlKSkgeworICAgICAgICAgICAgYXV0byBhcHBsZUNhbWVyYVNl
cnZpY2VQYXRoU2FuZGJveEV4dGVuc2lvbkhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0
ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5hcHBsZWNhbWVyYWQiX3MsIHN0ZDo6bnVs
bG9wdCk7CisgICAgICAgICAgICBpZiAoIWFwcGxlQ2FtZXJhU2VydmljZVBhdGhTYW5kYm94RXh0
ZW5zaW9uSGFuZGxlKSB7CiAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoV2ViUlRD
LCAiVW5hYmxlIHRvIGNyZWF0ZSBjb20uYXBwbGUuYXBwbGVjYW1lcmFkIHNhbmRib3ggZXh0ZW5z
aW9uIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogI2lm
IEhBVkUoQURESVRJT05BTF9BUFBMRV9DQU1FUkFfU0VSVklDRSkKLSAgICAgICAgICAgIFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSBhZGRpdGlvbmFsQXBwbGVDYW1lcmFTZXJ2aWNlUGF0aFNhbmRi
b3hFeHRlbnNpb25IYW5kbGU7Ci0gICAgICAgICAgICBpZiAoIVNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5hcHBsZWgxM2NhbWVyYWQiX3MsIHN0
ZDo6bnVsbG9wdCwgYWRkaXRpb25hbEFwcGxlQ2FtZXJhU2VydmljZVBhdGhTYW5kYm94RXh0ZW5z
aW9uSGFuZGxlKSkgeworICAgICAgICAgICAgYXV0byBhZGRpdGlvbmFsQXBwbGVDYW1lcmFTZXJ2
aWNlUGF0aFNhbmRib3hFeHRlbnNpb25IYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVI
YW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUuYXBwbGVoMTNjYW1lcmFkIl9zLCBzdGQ6Om51
bGxvcHQpOworICAgICAgICAgICAgaWYgKCFhZGRpdGlvbmFsQXBwbGVDYW1lcmFTZXJ2aWNlUGF0
aFNhbmRib3hFeHRlbnNpb25IYW5kbGUpIHsKICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19F
UlJPUihXZWJSVEMsICJVbmFibGUgdG8gY3JlYXRlIGNvbS5hcHBsZS5hcHBsZWgxM2NhbWVyYWQg
c2FuZGJveCBleHRlbnNpb24iKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBleHRlbnNpb25zLmFwcGVuZChXVEZNb3ZlKGFkZGl0aW9u
YWxBcHBsZUNhbWVyYVNlcnZpY2VQYXRoU2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOworICAgICAg
ICAgICAgZXh0ZW5zaW9ucy5hcHBlbmQoV1RGTW92ZSgqYWRkaXRpb25hbEFwcGxlQ2FtZXJhU2Vy
dmljZVBhdGhTYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSk7CiAjZW5kaWYKLSAgICAgICAgICAgIGV4
dGVuc2lvbnMuYXBwZW5kKFdURk1vdmUoYXBwbGVDYW1lcmFTZXJ2aWNlUGF0aFNhbmRib3hFeHRl
bnNpb25IYW5kbGUpKTsKKyAgICAgICAgICAgIGV4dGVuc2lvbnMuYXBwZW5kKFdURk1vdmUoKmFw
cGxlQ2FtZXJhU2VydmljZVBhdGhTYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSk7CiAgICAgICAgIH0K
ICNlbmRpZiAvLyBIQVZFKEFVRElUX1RPS0VOKQogCi0gICAgZXh0ZW5zaW9ucy5hcHBlbmQoV1RG
TW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSk7CisgICAgZXh0ZW5zaW9ucy5hcHBlbmQoV1RG
TW92ZSgqc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBz
dGF0aWMgaW5saW5lIGJvb2wgYWRkTWljcm9waG9uZVNhbmRib3hFeHRlbnNpb24oVmVjdG9yPFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZT4mIGV4dGVuc2lvbnMpCiB7Ci0gICAgU2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGU7Ci0gICAgaWYgKCFTYW5kYm94RXh0
ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JHZW5lcmljRXh0ZW5zaW9uKCJjb20uYXBwbGUud2Via2l0
Lm1pY3JvcGhvbmUiX3MsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpKSB7CisgICAgYXV0byBzYW5k
Ym94RXh0ZW5zaW9uSGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yR2Vu
ZXJpY0V4dGVuc2lvbigiY29tLmFwcGxlLndlYmtpdC5taWNyb3Bob25lIl9zKTsKKyAgICBpZiAo
IXNhbmRib3hFeHRlbnNpb25IYW5kbGUpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoV2Vi
UlRDLCAiVW5hYmxlIHRvIGNyZWF0ZSBjb20uYXBwbGUud2Via2l0Lm1pY3JvcGhvbmUgc2FuZGJv
eCBleHRlbnNpb24iKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICBleHRlbnNp
b25zLmFwcGVuZChXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25IYW5kbGUpKTsKKyAgICBleHRlbnNp
b25zLmFwcGVuZChXVEZNb3ZlKCpzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSk7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKICNpZiBQTEFURk9STShJT1MpCiBzdGF0aWMgaW5saW5lIGJvb2wgYWRkVEND
RFNhbmRib3hFeHRlbnNpb24oVmVjdG9yPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4mIGV4dGVu
c2lvbnMpCiB7Ci0gICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25I
YW5kbGU7Ci0gICAgaWYgKCFTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9v
a3VwKCJjb20uYXBwbGUudGNjZCJfcywgc3RkOjpudWxsb3B0LCBzYW5kYm94RXh0ZW5zaW9uSGFu
ZGxlKSkgeworICAgIGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
Rm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLnRjY2QiX3MsIHN0ZDo6bnVsbG9wdCk7CisgICAgaWYg
KCFoYW5kbGUpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoV2ViUlRDLCAiVW5hYmxlIHRv
IGNyZWF0ZSBjb20uYXBwbGUudGNjZCBzYW5kYm94IGV4dGVuc2lvbiIpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQotICAgIGV4dGVuc2lvbnMuYXBwZW5kKFdURk1vdmUoc2FuZGJveEV4
dGVuc2lvbkhhbmRsZSkpOworICAgIGV4dGVuc2lvbnMuYXBwZW5kKFdURk1vdmUoKmhhbmRsZSkp
OwogICAgIHJldHVybiB0cnVlOwogfQogI2VuZGlmCkBAIC00NTQsMTQgKzQ1OSwxOCBAQCBzdGF0
aWMgaW5saW5lIEdQVVByb2Nlc3NTZXNzaW9uUGFyYW1ldGVycyBncHVQcm9jZXNzU2Vzc2lvblBh
cmFtZXRlcnMoY29uc3QgV2VicwogCiAgICAgcGFyYW1ldGVycy5tZWRpYUNhY2hlRGlyZWN0b3J5
ID0gc3RvcmUucmVzb2x2ZWRNZWRpYUNhY2hlRGlyZWN0b3J5KCk7CiAgICAgU2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlIG1lZGlhQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7Ci0gICAgaWYg
KCFwYXJhbWV0ZXJzLm1lZGlhQ2FjaGVEaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChwYXJhbWV0ZXJz
Lm1lZGlhQ2FjaGVEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0ZSwg
cGFyYW1ldGVycy5tZWRpYUNhY2hlRGlyZWN0b3J5U2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7Cisg
ICAgaWYgKCFwYXJhbWV0ZXJzLm1lZGlhQ2FjaGVEaXJlY3RvcnkuaXNFbXB0eSgpKSB7CisgICAg
ICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhv
dXRSZXNvbHZpbmdQYXRoKHBhcmFtZXRlcnMubWVkaWFDYWNoZURpcmVjdG9yeSwgU2FuZGJveEV4
dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRlKSkKKyAgICAgICAgICAgIHBhcmFtZXRlcnMubWVkaWFD
YWNoZURpcmVjdG9yeVNhbmRib3hFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKCpoYW5kbGUpOwor
ICAgIH0KIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogICAgIHBhcmFtZXRl
cnMubWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSA9IHN0b3JlLnJlc29sdmVkTWVkaWFLZXlzRGly
ZWN0b3J5KCk7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIG1lZGlhS2V5c1N0b3JhZ2VE
aXJlY3RvcnlTYW5kYm94RXh0ZW5zaW9uSGFuZGxlOwotICAgIGlmICghcGFyYW1ldGVycy5tZWRp
YUtleXNTdG9yYWdlRGlyZWN0b3J5LmlzRW1wdHkoKSkKLSAgICAgICAgU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgocGFyYW1ldGVycy5tZWRpYUtleXNT
dG9yYWdlRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUsIHBhcmFt
ZXRlcnMubWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeVNhbmRib3hFeHRlbnNpb25IYW5kbGUpOwor
ICAgIGlmICghcGFyYW1ldGVycy5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5LmlzRW1wdHkoKSkg
eworICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5k
bGVXaXRob3V0UmVzb2x2aW5nUGF0aChwYXJhbWV0ZXJzLm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rv
cnksIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0ZSkpCisgICAgICAgICAgICBwYXJh
bWV0ZXJzLm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnlTYW5kYm94RXh0ZW5zaW9uSGFuZGxlID0g
V1RGTW92ZSgqaGFuZGxlKTsKKyAgICB9CiAjZW5kaWYKIAogICAgIHJldHVybiBwYXJhbWV0ZXJz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5jcHAKaW5kZXggMzcxYmJkYTBlNmI0NjZjMGU2NjI2ZTVkNTA2ZmFjYzdiMjdl
ZmQ0Yy4uN2U3MGM2M2EyMzg2OTMzNDMxZTBiZjczYjNjN2ZjODIyZmE3Yjg4ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuY3BwCkBAIC0xNTAsMTMgKzE1MCwyMCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNl
bmRDcmVhdGlvblBhcmFtZXRlcnNUb05ld1Byb2Nlc3MoKQogICAgIGZvciAoYXV0byYgc2NoZW1l
IDogV2ViUHJvY2Vzc1Bvb2w6OnVybFNjaGVtZXNXaXRoQ3VzdG9tUHJvdG9jb2xIYW5kbGVycygp
KQogICAgICAgICBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9j
b2xzLmFwcGVuZChzY2hlbWUpOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgaWYgKFN0
cmluZyBjb29raWVTdG9yYWdlRGlyZWN0b3J5ID0gV2ViUHJvY2Vzc1Bvb2w6OmNvb2tpZVN0b3Jh
Z2VEaXJlY3RvcnkoKTsgIWNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAg
ICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkoY29v
a2llU3RvcmFnZURpcmVjdG9yeSwgcGFyYW1ldGVycy5jb29raWVTdG9yYWdlRGlyZWN0b3J5RXh0
ZW5zaW9uSGFuZGxlKTsKLSAgICBpZiAoU3RyaW5nIGNvbnRhaW5lckNhY2hlc0RpcmVjdG9yeSA9
IFdlYlByb2Nlc3NQb29sOjpuZXR3b3JraW5nQ2FjaGVzRGlyZWN0b3J5KCk7ICFjb250YWluZXJD
YWNoZXNEaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVh
dGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkoY29udGFpbmVyQ2FjaGVzRGlyZWN0b3J5LCBw
YXJhbWV0ZXJzLmNvbnRhaW5lckNhY2hlc0RpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7Ci0gICAg
aWYgKFN0cmluZyBwYXJlbnRCdW5kbGVEaXJlY3RvcnkgPSBXZWJQcm9jZXNzUG9vbDo6cGFyZW50
QnVuZGxlRGlyZWN0b3J5KCk7ICFwYXJlbnRCdW5kbGVEaXJlY3RvcnkuaXNFbXB0eSgpKQotICAg
ICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUocGFyZW50QnVuZGxlRGlyZWN0b3J5
LCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkT25seSwgcGFyYW1ldGVycy5wYXJlbnRCdW5k
bGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwotICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0
ZUhhbmRsZUZvclRlbXBvcmFyeUZpbGUoZW1wdHlTdHJpbmcoKSwgU2FuZGJveEV4dGVuc2lvbjo6
VHlwZTo6UmVhZFdyaXRlLCBwYXJhbWV0ZXJzLnRlbXBEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUp
OworICAgIGlmIChTdHJpbmcgY29va2llU3RvcmFnZURpcmVjdG9yeSA9IFdlYlByb2Nlc3NQb29s
Ojpjb29raWVTdG9yYWdlRGlyZWN0b3J5KCk7ICFjb29raWVTdG9yYWdlRGlyZWN0b3J5LmlzRW1w
dHkoKSkgeworICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVh
dGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkoY29va2llU3RvcmFnZURpcmVjdG9yeSkpCisg
ICAgICAgICAgICBwYXJhbWV0ZXJzLmNvb2tpZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5k
bGUgPSBXVEZNb3ZlKCpoYW5kbGUpOworICAgIH0KKyAgICBpZiAoU3RyaW5nIGNvbnRhaW5lckNh
Y2hlc0RpcmVjdG9yeSA9IFdlYlByb2Nlc3NQb29sOjpuZXR3b3JraW5nQ2FjaGVzRGlyZWN0b3J5
KCk7ICFjb250YWluZXJDYWNoZXNEaXJlY3RvcnkuaXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChh
dXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURp
cmVjdG9yeShjb250YWluZXJDYWNoZXNEaXJlY3RvcnkpKQorICAgICAgICAgICAgcGFyYW1ldGVy
cy5jb250YWluZXJDYWNoZXNEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKCpoYW5k
bGUpOworICAgIH0KKyAgICBpZiAoU3RyaW5nIHBhcmVudEJ1bmRsZURpcmVjdG9yeSA9IFdlYlBy
b2Nlc3NQb29sOjpwYXJlbnRCdW5kbGVEaXJlY3RvcnkoKTsgIXBhcmVudEJ1bmRsZURpcmVjdG9y
eS5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlSGFuZGxlKHBhcmVudEJ1bmRsZURpcmVjdG9yeSwgU2FuZGJveEV4dGVuc2lvbjo6
VHlwZTo6UmVhZE9ubHkpKQorICAgICAgICAgICAgcGFyYW1ldGVycy5wYXJlbnRCdW5kbGVEaXJl
Y3RvcnlFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKCpoYW5kbGUpOworICAgIH0KKyAgICBpZiAo
YXV0byBoYW5kbGVBbmRGaWxlUGF0aCA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZv
clRlbXBvcmFyeUZpbGUoZW1wdHlTdHJpbmcoKSwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVh
ZFdyaXRlKSkKKyAgICAgICAgcGFyYW1ldGVycy50ZW1wRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxl
ID0gV1RGTW92ZShoYW5kbGVBbmRGaWxlUGF0aC0+Zmlyc3QpOwogI2VuZGlmCiAKICNpZiAhUExB
VEZPUk0oR1RLKSAmJiAhUExBVEZPUk0oV1BFKSAvLyBHVEsgYW5kIFdQRSBkb24ndCB1c2UgZGVm
YXVsdE5ldHdvcmtQcm9jZXNzCkBAIC0xMzAxLDggKzEzMDgsMTAgQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpyZXRyaWV2ZUNhY2hlU3RvcmFnZVBhcmFtZXRlcnMoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbkkKIAogICAgIGF1dG8mIGNhY2hlU3RvcmFnZURpcmVjdG9yeSA9IHN0b3JlLT5jb25m
aWd1cmF0aW9uKCkuY2FjaGVTdG9yYWdlRGlyZWN0b3J5KCk7CiAgICAgU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlIGNhY2hlU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKLSAgICBpZiAo
IWNhY2hlU3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIFNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShjYWNoZVN0b3JhZ2VEaXJlY3Rv
cnksIGNhY2hlU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CisgICAgaWYgKCFjYWNo
ZVN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChhdXRvIGhhbmRsZSA9
IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShjYWNo
ZVN0b3JhZ2VEaXJlY3RvcnkpKQorICAgICAgICAgICAgY2FjaGVTdG9yYWdlRGlyZWN0b3J5RXh0
ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqaGFuZGxlKTsKKyAgICB9CiAKICAgICBzZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0Q2FjaGVTdG9yYWdlUGFyYW1ldGVycyB7IHNlc3Npb25J
RCwgY2FjaGVTdG9yYWdlRGlyZWN0b3J5LCBjYWNoZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25I
YW5kbGUgfSwgMCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVl
Y2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNv
dXJjZU1hbmFnZXIuY3BwCmluZGV4IGNmNmZlNDIzZDc4Yjc2MjliN2Y5OWQ1YzFmYmVkYmMxNWNh
YmNiMWQuLmJjMGM3MDhhODY0N2IzYjZlYjA1YzAxYWMxMmEwN2NmOGM4MjA3ZmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRp
bWVNZWRpYVNvdXJjZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Nw
ZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXIuY3BwCkBAIC00
OSw5ICs0OSwxMSBAQCB2b2lkIFNwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNv
dXJjZU1hbmFnZXI6OmFkZFNvdXJjZShTcGVlY2hSZWNvZ25pdAogICAgICAgICBtX3NvdXJjZXNO
ZWVkaW5nU2FuZGJveEV4dGVuc2lvbi5hZGQoaWRlbnRpZmllcik7CiAgICAgICAgIGlmIChtX3Nv
dXJjZXNOZWVkaW5nU2FuZGJveEV4dGVuc2lvbi5zaXplKCkgPT0gMSkgewogICAgICAgICAgICAg
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGhhbmRsZUZvclRDQ0Q7Ci0gICAgICAgICAgICBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUudGNjZCJf
cywgbV9jb25uZWN0aW9uLT5nZXRBdWRpdFRva2VuKCksIGhhbmRsZUZvclRDQ0QpOworICAgICAg
ICAgICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9y
TWFjaExvb2t1cCgiY29tLmFwcGxlLnRjY2QiX3MsIG1fY29ubmVjdGlvbi0+Z2V0QXVkaXRUb2tl
bigpKSkKKyAgICAgICAgICAgICAgICBoYW5kbGVGb3JUQ0NEID0gV1RGTW92ZSgqaGFuZGxlKTsK
ICAgICAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBoYW5kbGVGb3JNaWNyb3Bob25l
OwotICAgICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yR2VuZXJpY0V4
dGVuc2lvbigiY29tLmFwcGxlLndlYmtpdC5taWNyb3Bob25lIl9zLCBoYW5kbGVGb3JNaWNyb3Bo
b25lKTsKKyAgICAgICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZUhhbmRsZUZvckdlbmVyaWNFeHRlbnNpb24oImNvbS5hcHBsZS53ZWJraXQubWljcm9waG9u
ZSJfcykpCisgICAgICAgICAgICAgICAgaGFuZGxlRm9yTWljcm9waG9uZSA9IFdURk1vdmUoKmhh
bmRsZSk7CiAgICAgICAgICAgICBzZW5kKE1lc3NhZ2VzOjpTcGVlY2hSZWNvZ25pdGlvblJlYWx0
aW1lTWVkaWFTb3VyY2VNYW5hZ2VyOjpHcmFudFNhbmRib3hFeHRlbnNpb25zKGhhbmRsZUZvclRD
Q0QsIGhhbmRsZUZvck1pY3JvcGhvbmUpKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
clByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlclByb3h5LmNwcAppbmRleCBiZjY1ZDM2NDY0MmI1NmZmOGUzZjRiN2JlOWUy
OTM0ZDk0NDA0NTQxLi45MGQ4YWU2OWQ1MjY5ZmU0OTUyNzIwYWE3NzUyZWU0MDNjMTk1NTA2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCkBAIC0yOTIsNyArMjkyLDggQEAg
dm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6ZmluaXNoR3JhbnRp
bmdSZXF1ZXN0KFVzZXJNZWRpYVBlcm0KICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
IGhhbmRsZTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgaWYgKCFtX2hhc0NyZWF0ZWRT
YW5kYm94RXh0ZW5zaW9uRm9yVENDRCAmJiBkb2VzUGFnZU5lZWRUQ0NEKG1fcGFnZSkpIHsKLSAg
ICAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNv
bS5hcHBsZS50Y2NkIl9zLCBtX3BhZ2UucHJvY2VzcygpLmNvbm5lY3Rpb24oKS0+Z2V0QXVkaXRU
b2tlbigpLCBoYW5kbGUpOworICAgICAgICAgICAgaWYgKGF1dG8gY3JlYXRlZEhhbmRsZSA9IFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS50Y2Nk
Il9zLCBtX3BhZ2UucHJvY2VzcygpLmNvbm5lY3Rpb24oKS0+Z2V0QXVkaXRUb2tlbigpKSkKKyAg
ICAgICAgICAgICAgICBoYW5kbGUgPSBXVEZNb3ZlKCpjcmVhdGVkSGFuZGxlKTsKICAgICAgICAg
ICAgIG1faGFzQ3JlYXRlZFNhbmRib3hFeHRlbnNpb25Gb3JUQ0NEID0gdHJ1ZTsKICAgICAgICAg
fQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQ
cm9jZXNzTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQcm9j
ZXNzTWFuYWdlci5jcHAKaW5kZXggOTQ2MDJiYzQ1YzUxOWVkOWUyMGM3YzRiMzVlZmQ3MmEyZDVl
ZGEwMS4uYTgxMGY1NTYyNmNiYzY0MWRlMDRkMTAxYWQ0OTQ5NDI5N2UxOTdlNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmNwcApA
QCAtMTAwLDE4ICsxMDAsMzAgQEAgYm9vbCBVc2VyTWVkaWFQcm9jZXNzTWFuYWdlcjo6d2lsbENy
ZWF0ZU1lZGlhU3RyZWFtKFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWEKICAgICAgICAgICAg
IGhhbmRsZXMuYWxsb2NhdGUoZXh0ZW5zaW9uQ291bnQpOwogICAgICAgICAgICAgaWRzLnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkoZXh0ZW5zaW9uQ291bnQpOwogCi0gICAgICAgICAgICBpZiAobmVl
ZHNBdWRpb1NhbmRib3hFeHRlbnNpb24gJiYgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
Rm9yR2VuZXJpY0V4dGVuc2lvbihhdWRpb0V4dGVuc2lvblBhdGgsIGhhbmRsZXNbLS1leHRlbnNp
b25Db3VudF0pKQotICAgICAgICAgICAgICAgIGlkcy51bmNoZWNrZWRBcHBlbmQoYXVkaW9FeHRl
bnNpb25QYXRoKTsKKyAgICAgICAgICAgIGlmIChuZWVkc0F1ZGlvU2FuZGJveEV4dGVuc2lvbikg
eworICAgICAgICAgICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZUhhbmRsZUZvckdlbmVyaWNFeHRlbnNpb24oYXVkaW9FeHRlbnNpb25QYXRoKSkgeworICAg
ICAgICAgICAgICAgICAgICBoYW5kbGVzWy0tZXh0ZW5zaW9uQ291bnRdID0gV1RGTW92ZSgqaGFu
ZGxlKTsKKyAgICAgICAgICAgICAgICAgICAgaWRzLnVuY2hlY2tlZEFwcGVuZChhdWRpb0V4dGVu
c2lvblBhdGgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KIAotICAgICAgICAg
ICAgaWYgKG5lZWRzVmlkZW9TYW5kYm94RXh0ZW5zaW9uICYmIFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZUhhbmRsZUZvckdlbmVyaWNFeHRlbnNpb24odmlkZW9FeHRlbnNpb25QYXRoLCBoYW5kbGVz
Wy0tZXh0ZW5zaW9uQ291bnRdKSkKLSAgICAgICAgICAgICAgICBpZHMudW5jaGVja2VkQXBwZW5k
KHZpZGVvRXh0ZW5zaW9uUGF0aCk7CisgICAgICAgICAgICBpZiAobmVlZHNWaWRlb1NhbmRib3hF
eHRlbnNpb24pIHsKKyAgICAgICAgICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0
ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JHZW5lcmljRXh0ZW5zaW9uKHZpZGVvRXh0ZW5zaW9uUGF0
aCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlc1stLWV4dGVuc2lvbkNvdW50XSA9IFdU
Rk1vdmUoKmhhbmRsZSk7CisgICAgICAgICAgICAgICAgICAgIGlkcy51bmNoZWNrZWRBcHBlbmQo
dmlkZW9FeHRlbnNpb25QYXRoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgIGlmIChuZWVkc0FwcGxlQ2FtZXJhU2FuZGJveEV4dGVuc2lvbikgewotICAg
ICAgICAgICAgICAgIGlmIChTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9v
a3VwKGFwcGxlQ2FtZXJhU2VydmljZVBhdGgsIHN0ZDo6bnVsbG9wdCwgaGFuZGxlc1stLWV4dGVu
c2lvbkNvdW50XSkpCisgICAgICAgICAgICAgICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4
dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cChhcHBsZUNhbWVyYVNlcnZpY2VQYXRo
LCBzdGQ6Om51bGxvcHQpKSB7CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZXNbLS1leHRlbnNp
b25Db3VudF0gPSBXVEZNb3ZlKCpoYW5kbGUpOwogICAgICAgICAgICAgICAgICAgICBpZHMudW5j
aGVja2VkQXBwZW5kKGFwcGxlQ2FtZXJhU2VydmljZVBhdGgpOworICAgICAgICAgICAgICAgIH0K
ICNpZiBIQVZFKEFERElUSU9OQUxfQVBQTEVfQ0FNRVJBX1NFUlZJQ0UpCi0gICAgICAgICAgICAg
ICAgaWYgKFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoYWRkaXRp
b25hbEFwcGxlQ2FtZXJhU2VydmljZVBhdGgsIHN0ZDo6bnVsbG9wdCwgaGFuZGxlc1stLWV4dGVu
c2lvbkNvdW50XSkpCisgICAgICAgICAgICAgICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4
dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cChhZGRpdGlvbmFsQXBwbGVDYW1lcmFT
ZXJ2aWNlUGF0aCwgc3RkOjpudWxsb3B0KSkgeworICAgICAgICAgICAgICAgICAgICBoYW5kbGVz
Wy0tZXh0ZW5zaW9uQ291bnRdID0gV1RGTW92ZSgqaGFuZGxlKTsKICAgICAgICAgICAgICAgICAg
ICAgaWRzLnVuY2hlY2tlZEFwcGVuZChhZGRpdGlvbmFsQXBwbGVDYW1lcmFTZXJ2aWNlUGF0aCk7
CisgICAgICAgICAgICAgICAgfQogI2VuZGlmCiAgICAgICAgICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGJhZjU2MmM1MTk4M2E0ZTQ3ZmRkZDI5
Mjg0Yzk4OTBmNzU3ZDYzY2MuLjQ4OGIzYjJkODg5MTY4ZDI2NDI3Yjk0ZTBlM2U3MjZhZjUzYmY4
ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMTI2NSwx
MSArMTI2NSwxOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bWF5YmVJbml0aWFsaXplU2FuZGJveEV4
dGVuc2lvbkhhbmRsZShXZWJQcm9jZXNzUHJveHkmIHByb2NlcwogICAgICAgICBib29sIGNyZWF0
ZWRFeHRlbnNpb24gPSBmYWxzZTsKICNpZiBIQVZFKEFVRElUX1RPS0VOKQogICAgICAgICBBU1NF
UlQocHJvY2Vzcy5jb25uZWN0aW9uKCkgJiYgcHJvY2Vzcy5jb25uZWN0aW9uKCktPmdldEF1ZGl0
VG9rZW4oKSk7Ci0gICAgICAgIGlmIChwcm9jZXNzLmNvbm5lY3Rpb24oKSAmJiBwcm9jZXNzLmNv
bm5lY3Rpb24oKS0+Z2V0QXVkaXRUb2tlbigpKQotICAgICAgICAgICAgY3JlYXRlZEV4dGVuc2lv
biA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRCeUF1ZGl0VG9rZW4ocmVz
b3VyY2VEaXJlY3RvcnlVUkwuZmlsZVN5c3RlbVBhdGgoKSwgKihwcm9jZXNzLmNvbm5lY3Rpb24o
KS0+Z2V0QXVkaXRUb2tlbigpKSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7Ci0gICAgICAgIGVs
c2UKKyAgICAgICAgaWYgKHByb2Nlc3MuY29ubmVjdGlvbigpICYmIHByb2Nlc3MuY29ubmVjdGlv
bigpLT5nZXRBdWRpdFRva2VuKCkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRCeUF1ZGl0VG9rZW4ocmVzb3VyY2VE
aXJlY3RvcnlVUkwuZmlsZVN5c3RlbVBhdGgoKSwgKihwcm9jZXNzLmNvbm5lY3Rpb24oKS0+Z2V0
QXVkaXRUb2tlbigpKSkpIHsKKyAgICAgICAgICAgICAgICBzYW5kYm94RXh0ZW5zaW9uSGFuZGxl
ID0gV1RGTW92ZSgqaGFuZGxlKTsKKyAgICAgICAgICAgICAgICBjcmVhdGVkRXh0ZW5zaW9uID0g
dHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlCiAjZW5kaWYKLSAgICAgICAgICAg
IGNyZWF0ZWRFeHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUocmVzb3Vy
Y2VEaXJlY3RvcnlVUkwuZmlsZVN5c3RlbVBhdGgoKSwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6
UmVhZE9ubHksIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOworICAgICAgICB7CisgICAgICAgICAg
ICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUocmVzb3Vy
Y2VEaXJlY3RvcnlVUkwuZmlsZVN5c3RlbVBhdGgoKSwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6
UmVhZE9ubHkpKSB7CisgICAgICAgICAgICAgICAgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSA9IFdU
Rk1vdmUoKmhhbmRsZSk7CisgICAgICAgICAgICAgICAgY3JlYXRlZEV4dGVuc2lvbiA9IHRydWU7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KIAogICAgICAgICBpZiAoY3JlYXRlZEV4dGVuc2lv
bikgewogICAgICAgICAgICAgcHJvY2Vzcy5hc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJMKCp0aGlz
LCByZXNvdXJjZURpcmVjdG9yeVVSTC5zdHJpbmcoKSk7CkBAIC0xMjg2LDExICsxMjk0LDE5IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjptYXliZUluaXRpYWxpemVTYW5kYm94RXh0ZW5zaW9uSGFuZGxl
KFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzCiAgICAgYm9vbCBjcmVhdGVkRXh0ZW5zaW9uID0gZmFs
c2U7CiAjaWYgSEFWRShBVURJVF9UT0tFTikKICAgICBBU1NFUlQocHJvY2Vzcy5jb25uZWN0aW9u
KCkgJiYgcHJvY2Vzcy5jb25uZWN0aW9uKCktPmdldEF1ZGl0VG9rZW4oKSk7Ci0gICAgaWYgKHBy
b2Nlc3MuY29ubmVjdGlvbigpICYmIHByb2Nlc3MuY29ubmVjdGlvbigpLT5nZXRBdWRpdFRva2Vu
KCkpCi0gICAgICAgIGNyZWF0ZWRFeHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVI
YW5kbGVGb3JSZWFkQnlBdWRpdFRva2VuKCIvIiwgKihwcm9jZXNzLmNvbm5lY3Rpb24oKS0+Z2V0
QXVkaXRUb2tlbigpKSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7Ci0gICAgZWxzZQorICAgIGlm
IChwcm9jZXNzLmNvbm5lY3Rpb24oKSAmJiBwcm9jZXNzLmNvbm5lY3Rpb24oKS0+Z2V0QXVkaXRU
b2tlbigpKSB7CisgICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZUhhbmRsZUZvclJlYWRCeUF1ZGl0VG9rZW4oIi8iLCAqKHByb2Nlc3MuY29ubmVjdGlvbigp
LT5nZXRBdWRpdFRva2VuKCkpKSkgeworICAgICAgICAgICAgY3JlYXRlZEV4dGVuc2lvbiA9IHRy
dWU7CisgICAgICAgICAgICBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqaGFuZGxl
KTsKKyAgICAgICAgfQorICAgIH0gZWxzZQogI2VuZGlmCi0gICAgICAgIGNyZWF0ZWRFeHRlbnNp
b24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUoIi8iLCBTYW5kYm94RXh0ZW5zaW9u
OjpUeXBlOjpSZWFkT25seSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7CisgICAgeworICAgICAg
ICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUoIi8iLCBT
YW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkT25seSkpIHsKKyAgICAgICAgICAgIGNyZWF0ZWRF
eHRlbnNpb24gPSB0cnVlOworICAgICAgICAgICAgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSA9IFdU
Rk1vdmUoKmhhbmRsZSk7CisgICAgICAgIH0KKyAgICB9CiAKICAgICBpZiAoY3JlYXRlZEV4dGVu
c2lvbikgewogICAgICAgICB3aWxsQWNxdWlyZVVuaXZlcnNhbEZpbGVSZWFkU2FuZGJveEV4dGVu
c2lvbihwcm9jZXNzKTsKQEAgLTEzMDgsMTEgKzEzMjQsMTkgQEAgdm9pZCBXZWJQYWdlUHJveHk6
Om1heWJlSW5pdGlhbGl6ZVNhbmRib3hFeHRlbnNpb25IYW5kbGUoV2ViUHJvY2Vzc1Byb3h5JiBw
cm9jZXMKICAgICBpZiAoYmFzZVBhdGguaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKICNpZiBI
QVZFKEFVRElUX1RPS0VOKQotICAgIGlmIChwcm9jZXNzLmNvbm5lY3Rpb24oKSAmJiBwcm9jZXNz
LmNvbm5lY3Rpb24oKS0+Z2V0QXVkaXRUb2tlbigpKQotICAgICAgICBjcmVhdGVkRXh0ZW5zaW9u
ID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZEJ5QXVkaXRUb2tlbihiYXNl
UGF0aCwgKihwcm9jZXNzLmNvbm5lY3Rpb24oKS0+Z2V0QXVkaXRUb2tlbigpKSwgc2FuZGJveEV4
dGVuc2lvbkhhbmRsZSk7Ci0gICAgZWxzZQorICAgIGlmIChwcm9jZXNzLmNvbm5lY3Rpb24oKSAm
JiBwcm9jZXNzLmNvbm5lY3Rpb24oKS0+Z2V0QXVkaXRUb2tlbigpKSB7CisgICAgICAgIGlmIChh
dXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRCeUF1ZGl0
VG9rZW4oYmFzZVBhdGgsICoocHJvY2Vzcy5jb25uZWN0aW9uKCktPmdldEF1ZGl0VG9rZW4oKSkp
KSB7CisgICAgICAgICAgICBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqaGFuZGxl
KTsKKyAgICAgICAgICAgIGNyZWF0ZWRFeHRlbnNpb24gPSB0cnVlOworICAgICAgICB9CisgICAg
fSBlbHNlCiAjZW5kaWYKLSAgICAgICAgY3JlYXRlZEV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZUhhbmRsZShiYXNlUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9u
bHksIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOworICAgIHsKKyAgICAgICAgaWYgKGF1dG8gaGFu
ZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGJhc2VQYXRoLCBTYW5kYm94RXh0
ZW5zaW9uOjpUeXBlOjpSZWFkT25seSkpIHsKKyAgICAgICAgICAgIHNhbmRib3hFeHRlbnNpb25I
YW5kbGUgPSBXVEZNb3ZlKCpoYW5kbGUpOworICAgICAgICAgICAgY3JlYXRlZEV4dGVuc2lvbiA9
IHRydWU7CisgICAgICAgIH0KKyAgICB9CiAKICAgICBpZiAoY3JlYXRlZEV4dGVuc2lvbikKICAg
ICAgICAgcHJvY2Vzcy5hc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJMKCp0aGlzLCBiYXNlVVJMLnN0
cmluZygpKTsKQEAgLTcwMDEsOSArNzAyNSwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hv
b3NlRmlsZXNGb3JPcGVuUGFuZWxXaXRoRGlzcGxheVN0cmluZ0FuZEljb24oY29uc3QgVmVjdAog
CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGZyb250Ym9hcmRTZXJ2aWNlc1NhbmRib3hF
eHRlbnNpb24sIGljb25TZXJ2aWNlc1NhbmRib3hFeHRlbnNpb247CiAjaWYgSEFWRShGUk9OVEJP
QVJEX1NZU1RFTV9BUFBfU0VSVklDRVMpCi0gICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFu
ZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLmZyb250Ym9hcmQuc3lzdGVtYXBwc2VydmljZXMi
X3MsIHN0ZDo6bnVsbG9wdCwgZnJvbnRib2FyZFNlcnZpY2VzU2FuZGJveEV4dGVuc2lvbik7Cisg
ICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFj
aExvb2t1cCgiY29tLmFwcGxlLmZyb250Ym9hcmQuc3lzdGVtYXBwc2VydmljZXMiX3MsIHN0ZDo6
bnVsbG9wdCkpCisgICAgICAgIGZyb250Ym9hcmRTZXJ2aWNlc1NhbmRib3hFeHRlbnNpb24gPSBX
VEZNb3ZlKCpoYW5kbGUpOwogI2VuZGlmCi0gICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFu
ZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLmljb25zZXJ2aWNlcyJfcywgc3RkOjpudWxsb3B0
LCBpY29uU2VydmljZXNTYW5kYm94RXh0ZW5zaW9uKTsKKyAgICBpZiAoYXV0byBoYW5kbGUgPSBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUuaWNv
bnNlcnZpY2VzIl9zLCBzdGQ6Om51bGxvcHQpKQorICAgICAgICBpY29uU2VydmljZXNTYW5kYm94
RXh0ZW5zaW9uID0gV1RGTW92ZSgqaGFuZGxlKTsKIAogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsV2l0aERpc3BsYXlTdHJpbmdBbmRJY29uKGZp
bGVVUkxzLCBkaXNwbGF5U3RyaW5nLCBpY29uRGF0YSA/IGljb25EYXRhLT5kYXRhUmVmZXJlbmNl
KCkgOiBJUEM6OkRhdGFSZWZlcmVuY2UoKSwgZnJvbnRib2FyZFNlcnZpY2VzU2FuZGJveEV4dGVu
c2lvbiwgaWNvblNlcnZpY2VzU2FuZGJveEV4dGVuc2lvbikpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggNjkzY2E2NTUxNWNhNzJkNDEwMzNjNGNl
NmMzMDk5ZDJiODdhZTgyYS4uODYxMDZkMTFlZDRiYmY4OWM2MzU3NDk4YmM5OWJjM2VmN2JhNTVi
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtNjcz
LDIwICs2NzMsMjYgQEAgV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMgV2ViUHJvY2Vzc1Bv
b2w6OndlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzKFdlYlAKIAogICAgIFN0cmluZyBhcHBs
aWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gd2Vic2l0ZURhdGFTdG9yZS5yZXNvbHZlZEFwcGxpY2F0
aW9uQ2FjaGVEaXJlY3RvcnkoKTsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgYXBwbGlj
YXRpb25DYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKLSAgICBpZiAoIWFwcGxpY2F0aW9u
Q2FjaGVEaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVh
dGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5LCBT
YW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUsIGFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rv
cnlFeHRlbnNpb25IYW5kbGUpOworICAgIGlmICghYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeS5p
c0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6
Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgoYXBwbGljYXRpb25DYWNoZURpcmVjdG9y
eSwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRlKSkKKyAgICAgICAgICAgIGFwcGxp
Y2F0aW9uQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKCpoYW5kbGUpOwor
ICAgIH0KIAogICAgIFN0cmluZyBhcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlO
YW1lID0gd2Vic2l0ZURhdGFTdG9yZS5hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3Rv
cnlOYW1lKCk7CiAKICAgICBTdHJpbmcgbWVkaWFDYWNoZURpcmVjdG9yeSA9IHdlYnNpdGVEYXRh
U3RvcmUucmVzb2x2ZWRNZWRpYUNhY2hlRGlyZWN0b3J5KCk7CiAgICAgU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlIG1lZGlhQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7Ci0gICAgaWYgKCFt
ZWRpYUNhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSkKLSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6
Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgobWVkaWFDYWNoZURpcmVjdG9yeSwgU2Fu
ZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRlLCBtZWRpYUNhY2hlRGlyZWN0b3J5RXh0ZW5z
aW9uSGFuZGxlKTsKKyAgICBpZiAoIW1lZGlhQ2FjaGVEaXJlY3RvcnkuaXNFbXB0eSgpKSB7Cisg
ICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdp
dGhvdXRSZXNvbHZpbmdQYXRoKG1lZGlhQ2FjaGVEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246
OlR5cGU6OlJlYWRXcml0ZSkpCisgICAgICAgICAgICBtZWRpYUNhY2hlRGlyZWN0b3J5RXh0ZW5z
aW9uSGFuZGxlID0gV1RGTW92ZSgqaGFuZGxlKTsKKyAgICB9CiAKICAgICBTdHJpbmcgbWVkaWFL
ZXlTdG9yYWdlRGlyZWN0b3J5ID0gd2Vic2l0ZURhdGFTdG9yZS5yZXNvbHZlZE1lZGlhS2V5c0Rp
cmVjdG9yeSgpOwogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBtZWRpYUtleVN0b3JhZ2VE
aXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7Ci0gICAgaWYgKCFtZWRpYUtleVN0b3JhZ2VEaXJlY3Rv
cnkuaXNFbXB0eSgpKQotICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRo
b3V0UmVzb2x2aW5nUGF0aChtZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNp
b246OlR5cGU6OlJlYWRXcml0ZSwgbWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFu
ZGxlKTsKKyAgICBpZiAoIW1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0
aG91dFJlc29sdmluZ1BhdGgobWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5z
aW9uOjpUeXBlOjpSZWFkV3JpdGUpKQorICAgICAgICAgICAgbWVkaWFLZXlTdG9yYWdlRGlyZWN0
b3J5RXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqaGFuZGxlKTsKKyAgICB9CiAKICAgICBTdHJp
bmcgamF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3Rvcnk7CiAgICAgaWYgKCFtX2phdmFTY3Jp
cHRDb25maWd1cmF0aW9uRGlyZWN0b3J5LmlzRW1wdHkoKSkKQEAgLTY5NSwxNCArNzAxLDE4IEBA
IFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYlByb2Nlc3NQb29sOjp3ZWJQcm9jZXNz
RGF0YVN0b3JlUGFyYW1ldGVycyhXZWJQCiAgICAgICAgIGphdmFTY3JpcHRDb25maWd1cmF0aW9u
RGlyZWN0b3J5ID0gd2Vic2l0ZURhdGFTdG9yZS5yZXNvbHZlZEphdmFTY3JpcHRDb25maWd1cmF0
aW9uRGlyZWN0b3J5KCk7CiAKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgamF2YVNjcmlw
dENvbmZpZ3VyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7Ci0gICAgaWYgKCFqYXZhU2Ny
aXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIFNhbmRib3hFeHRl
bnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKGphdmFTY3JpcHRDb25maWd1
cmF0aW9uRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUsIGphdmFT
Y3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBpZiAoIWph
dmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5LmlzRW1wdHkoKSkgeworICAgICAgICBpZiAo
YXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2
aW5nUGF0aChqYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSwgU2FuZGJveEV4dGVuc2lv
bjo6VHlwZTo6UmVhZFdyaXRlKSkKKyAgICAgICAgICAgIGphdmFTY3JpcHRDb25maWd1cmF0aW9u
RGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqaGFuZGxlKTsKKyAgICB9CiAKICNp
ZiBIQVZFKEFSS0lUX0lOTElORV9QUkVWSUVXKQogICAgIGF1dG8gbW9kZWxFbGVtZW50Q2FjaGVE
aXJlY3RvcnkgPSB3ZWJzaXRlRGF0YVN0b3JlLnJlc29sdmVkTW9kZWxFbGVtZW50Q2FjaGVEaXJl
Y3RvcnkoKTsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgbW9kZWxFbGVtZW50Q2FjaGVE
aXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7Ci0gICAgaWYgKCFtb2RlbEVsZW1lbnRDYWNoZURpcmVj
dG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdp
dGhvdXRSZXNvbHZpbmdQYXRoKG1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5LCBTYW5kYm94RXh0
ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUsIG1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5RXh0ZW5z
aW9uSGFuZGxlKTsKKyAgICBpZiAoIW1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5LmlzRW1wdHko
KSkgeworICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVI
YW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChtb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSwgU2Fu
ZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRlKSkKKyAgICAgICAgICAgIG1vZGVsRWxlbWVu
dENhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqaGFuZGxlKTsKKyAgICB9
CiAjZW5kaWYKIAogICAgIHJldHVybiBXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycyB7CkBA
IC03NDIsMTIgKzc1MiwxNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjppbml0aWFsaXplTmV3V2Vi
UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFdlYnNpdGVEYQogICAgIFdlYlByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMgcGFyYW1ldGVyczsKIAogICAgIHBhcmFtZXRlcnMuaW5qZWN0
ZWRCdW5kbGVQYXRoID0gbV9yZXNvbHZlZFBhdGhzLmluamVjdGVkQnVuZGxlUGF0aDsKLSAgICBp
ZiAoIXBhcmFtZXRlcnMuaW5qZWN0ZWRCdW5kbGVQYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgocGFyYW1ldGVy
cy5pbmplY3RlZEJ1bmRsZVBhdGgsIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRPbmx5LCBw
YXJhbWV0ZXJzLmluamVjdGVkQnVuZGxlUGF0aEV4dGVuc2lvbkhhbmRsZSk7CisgICAgaWYgKCFw
YXJhbWV0ZXJzLmluamVjdGVkQnVuZGxlUGF0aC5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKGF1
dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmlu
Z1BhdGgocGFyYW1ldGVycy5pbmplY3RlZEJ1bmRsZVBhdGgsIFNhbmRib3hFeHRlbnNpb246OlR5
cGU6OlJlYWRPbmx5KSkKKyAgICAgICAgICAgIHBhcmFtZXRlcnMuaW5qZWN0ZWRCdW5kbGVQYXRo
RXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqaGFuZGxlKTsKKyAgICB9CiAKICAgICBwYXJhbWV0
ZXJzLmFkZGl0aW9uYWxTYW5kYm94RXh0ZW5zaW9uSGFuZGxlcy5hbGxvY2F0ZShtX3Jlc29sdmVk
UGF0aHMuYWRkaXRpb25hbFdlYlByb2Nlc3NTYW5kYm94RXh0ZW5zaW9uUGF0aHMuc2l6ZSgpKTsK
LSAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IG1fcmVzb2x2ZWRQYXRocy5hZGRpdGlvbmFs
V2ViUHJvY2Vzc1NhbmRib3hFeHRlbnNpb25QYXRocy5zaXplKCk7IGkgPCBzaXplOyArK2kpCi0g
ICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRo
KG1fcmVzb2x2ZWRQYXRocy5hZGRpdGlvbmFsV2ViUHJvY2Vzc1NhbmRib3hFeHRlbnNpb25QYXRo
c1tpXSwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHksIHBhcmFtZXRlcnMuYWRkaXRp
b25hbFNhbmRib3hFeHRlbnNpb25IYW5kbGVzW2ldKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMCwg
c2l6ZSA9IG1fcmVzb2x2ZWRQYXRocy5hZGRpdGlvbmFsV2ViUHJvY2Vzc1NhbmRib3hFeHRlbnNp
b25QYXRocy5zaXplKCk7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgaWYgKGF1dG8gaGFuZGxl
ID0gIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKG1f
cmVzb2x2ZWRQYXRocy5hZGRpdGlvbmFsV2ViUHJvY2Vzc1NhbmRib3hFeHRlbnNpb25QYXRoc1tp
XSwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHkpKQorICAgICAgICAgICAgcGFyYW1l
dGVycy5hZGRpdGlvbmFsU2FuZGJveEV4dGVuc2lvbkhhbmRsZXNbaV0gPSBXVEZNb3ZlKCpoYW5k
bGUpOworICAgIH0KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgc2V0SmF2YVNjcmlw
dENvbmZpZ3VyYXRpb25GaWxlRW5hYmxlZEZyb21EZWZhdWx0cygpOwpAQCAtOTAxLDcgKzkxNSwx
MCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzRGlkRmluaXNoTGF1bmNoaW5nKFdlYlBy
b2Nlc3NQcm94eSYgcHJvY2VzcykKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNh
bXBsZUxvZ1NhbmRib3hIYW5kbGU7ICAgICAgICAKICAgICAgICAgV2FsbFRpbWUgbm93ID0gV2Fs
bFRpbWU6Om5vdygpOwogICAgICAgICBhdXRvIHNhbXBsZUxvZ0ZpbGVQYXRoID0gbWFrZVN0cmlu
ZygiV2ViUHJvY2VzcyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4obm93LnNlY29u
ZHNTaW5jZUVwb2NoKCkuc2Vjb25kcygpKSwgInBpZCIsIHByb2Nlc3MucHJvY2Vzc0lkZW50aWZp
ZXIoKSk7Ci0gICAgICAgIHNhbXBsZUxvZ0ZpbGVQYXRoID0gU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlSGFuZGxlRm9yVGVtcG9yYXJ5RmlsZShzYW1wbGVMb2dGaWxlUGF0aCwgU2FuZGJveEV4dGVu
c2lvbjo6VHlwZTo6UmVhZFdyaXRlLCBzYW1wbGVMb2dTYW5kYm94SGFuZGxlKTsKKyAgICAgICAg
aWYgKGF1dG8gaGFuZGxlQW5kRmlsZVBhdGggPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5k
bGVGb3JUZW1wb3JhcnlGaWxlKHNhbXBsZUxvZ0ZpbGVQYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpU
eXBlOjpSZWFkV3JpdGUpKSB7CisgICAgICAgICAgICBzYW1wbGVMb2dTYW5kYm94SGFuZGxlID0g
V1RGTW92ZShoYW5kbGVBbmRGaWxlUGF0aC0+Zmlyc3QpOworICAgICAgICAgICAgc2FtcGxlTG9n
RmlsZVBhdGggPSBXVEZNb3ZlKGhhbmRsZUFuZEZpbGVQYXRoLT5zZWNvbmQpOworICAgICAgICB9
CiAgICAgICAgIAogICAgICAgICBwcm9jZXNzLnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlN0
YXJ0TWVtb3J5U2FtcGxlcihzYW1wbGVMb2dTYW5kYm94SGFuZGxlLCBzYW1wbGVMb2dGaWxlUGF0
aCwgbV9tZW1vcnlTYW1wbGVySW50ZXJ2YWwpLCAwKTsKICAgICB9CkBAIC0xMTYwLDggKzExNzcs
MTAgQEAgRG93bmxvYWRQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OnJlc3VtZURvd25sb2FkKFdlYnNp
dGVEYXRhU3RvcmUmIGRhdGFTdG9yZSwgV2ViUGEKICAgICBhdXRvJiBkb3dubG9hZFByb3h5ID0g
Y3JlYXRlRG93bmxvYWRQcm94eShkYXRhU3RvcmUsIFJlc291cmNlUmVxdWVzdCgpLCBpbml0aWF0
aW5nUGFnZSwgeyB9KTsKIAogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0
ZW5zaW9uSGFuZGxlOwotICAgIGlmICghcGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZUhhbmRsZShwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFk
V3JpdGUsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOworICAgIGlmICghcGF0aC5pc0VtcHR5KCkp
IHsKKyAgICAgICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFu
ZGxlKHBhdGgsIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0ZSkpCisgICAgICAgICAg
ICBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqaGFuZGxlKTsKKyAgICB9CiAKICAg
ICBkYXRhU3RvcmUubmV0d29ya1Byb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vz
czo6UmVzdW1lRG93bmxvYWQoZGF0YVN0b3JlLnNlc3Npb25JRCgpLCBkb3dubG9hZFByb3h5LmRv
d25sb2FkSUQoKSwgcmVzdW1lRGF0YS5kYXRhUmVmZXJlbmNlKCksIHBhdGgsIHNhbmRib3hFeHRl
bnNpb25IYW5kbGUsIGNhbGxEb3dubG9hZERpZFN0YXJ0KSwgMCk7CiAgICAgcmV0dXJuIGRvd25s
b2FkUHJveHk7CkBAIC0xNDQ3LDcgKzE0NjYsMTAgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c3Rh
cnRNZW1vcnlTYW1wbGVyKGNvbnN0IGRvdWJsZSBpbnRlcnZhbCkKICAgICBTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGUgc2FtcGxlTG9nU2FuZGJveEhhbmRsZTsgICAgCiAgICAgV2FsbFRpbWUgbm93
ID0gV2FsbFRpbWU6Om5vdygpOwogICAgIGF1dG8gc2FtcGxlTG9nRmlsZVBhdGggPSBtYWtlU3Ry
aW5nKCJXZWJQcm9jZXNzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihub3cuc2Vj
b25kc1NpbmNlRXBvY2goKS5zZWNvbmRzKCkpKTsKLSAgICBzYW1wbGVMb2dGaWxlUGF0aCA9IFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclRlbXBvcmFyeUZpbGUoc2FtcGxlTG9nRmls
ZVBhdGgsIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0ZSwgc2FtcGxlTG9nU2FuZGJv
eEhhbmRsZSk7CisgICAgaWYgKGF1dG8gaGFuZGxlQW5kRmlsZVBhdGggPSBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGVIYW5kbGVGb3JUZW1wb3JhcnlGaWxlKHNhbXBsZUxvZ0ZpbGVQYXRoLCBTYW5k
Ym94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUpKSB7CisgICAgICAgIHNhbXBsZUxvZ1NhbmRi
b3hIYW5kbGUgPSBXVEZNb3ZlKGhhbmRsZUFuZEZpbGVQYXRoLT5maXJzdCk7CisgICAgICAgIHNh
bXBsZUxvZ0ZpbGVQYXRoID0gV1RGTW92ZShoYW5kbGVBbmRGaWxlUGF0aC0+c2Vjb25kKTsKKyAg
ICB9CiAgICAgCiAgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpT
dGFydE1lbW9yeVNhbXBsZXIoc2FtcGxlTG9nU2FuZGJveEhhbmRsZSwgc2FtcGxlTG9nRmlsZVBh
dGgsIGludGVydmFsKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KaW5k
ZXggMjgxNDg0YWFmOWExOTZmMGVmYWU4NzJkOTBjNjA4Yjc4NGEzYWU3OC4uMWQwZTQ1MjE1ZmVm
MWI2OWFlNzA2YTdkMWNiYzhmOGIyNjU4Njc5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3Rv
cmVDb2NvYS5tbQpAQCAtMTUwLDggKzE1MCwxMSBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnBs
YXRmb3JtU2V0TmV0d29ya1BhcmFtZXRlcnMoV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmCiAg
ICAgYm9vbCBodHRwM0VuYWJsZWQgPSBXZWJzaXRlRGF0YVN0b3JlOjpodHRwM0VuYWJsZWQoKTsK
ICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgYWx0ZXJuYXRpdmVTZXJ2aWNlU3RvcmFnZURp
cmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBTdHJpbmcgYWx0ZXJuYXRpdmVTZXJ2aWNlU3Rv
cmFnZURpcmVjdG9yeSA9IHJlc29sdmVkQWx0ZXJuYXRpdmVTZXJ2aWNlc1N0b3JhZ2VEaXJlY3Rv
cnkoKTsKLSAgICBpZiAoIWFsdGVybmF0aXZlU2VydmljZVN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0
eSgpKQotICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVE
aXJlY3RvcnkoYWx0ZXJuYXRpdmVTZXJ2aWNlU3RvcmFnZURpcmVjdG9yeSwgYWx0ZXJuYXRpdmVT
ZXJ2aWNlU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CisgICAgaWYgKCFhbHRlcm5h
dGl2ZVNlcnZpY2VTdG9yYWdlRGlyZWN0b3J5LmlzRW1wdHkoKSkgeworICAgICAgICAvLyBGSVhN
RTogU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5IHJl
c29sdmVzIHRoZSBkaXJlY3RvcnksIGJ1dCB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gZG9uZS4gUmVt
b3ZlIHRoaXMgZHVwbGljYXRlIHdvcmsuCisgICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShhbHRlcm5hdGl2
ZVNlcnZpY2VTdG9yYWdlRGlyZWN0b3J5KSkKKyAgICAgICAgICAgIGFsdGVybmF0aXZlU2Vydmlj
ZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKCpoYW5kbGUpOworICAg
IH0KICNlbmRpZgogCiAgICAgYm9vbCBzaG91bGRJbmNsdWRlTG9jYWxob3N0SW5SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzID0gaXNTYWZhcmk7CkBAIC0xODUsOCArMTg4LDEwIEBAIHZvaWQgV2Vic2l0
ZURhdGFTdG9yZTo6cGxhdGZvcm1TZXROZXR3b3JrUGFyYW1ldGVycyhXZWJzaXRlRGF0YVN0b3Jl
UGFyYW1ldGVycyYKIAogICAgIHBhcmFtZXRlcnMudWlQcm9jZXNzQ29va2llU3RvcmFnZUlkZW50
aWZpZXIgPSBtX3VpUHJvY2Vzc0Nvb2tpZVN0b3JhZ2VJZGVudGlmaWVyOwogCi0gICAgaWYgKCFj
b29raWVGaWxlLmlzRW1wdHkoKSkKLSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFu
ZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KEZpbGVTeXN0ZW06OnBhcmVudFBhdGgoY29va2llRmls
ZSksIHBhcmFtZXRlcnMuY29va2llU3RvcmFnZVBhdGhFeHRlbnNpb25IYW5kbGUpOworICAgIGlm
ICghY29va2llRmlsZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKGF1dG8gaGFuZGxlID0gU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KEZpbGVTeXN0
ZW06OnBhcmVudFBhdGgoY29va2llRmlsZSkpKQorICAgICAgICAgICAgcGFyYW1ldGVycy5jb29r
aWVTdG9yYWdlUGF0aEV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoKmhhbmRsZSk7CisgICAgfQog
fQogCiAjaWYgSEFWRShDRk5FVFdPUktfQUxURVJOQVRJVkVfU0VSVklDRSkgfHwgSEFWRShORVRX
T1JLX0xPQURFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggMGEwZjIzMjA3NDQzMjg5ZThkZGYwZjQx
ZDEzMzM2MjAwNjIzNGY5My4uOTZkMjg3OWNlZjYyZTI0Nzg0YmRkYmU3YmJkNzc3NzVjMTI5YTk5
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTE5MzIsMTggKzE5MzIsMjYgQEAgV2Vic2l0ZURhdGFT
dG9yZVBhcmFtZXRlcnMgV2Vic2l0ZURhdGFTdG9yZTo6cGFyYW1ldGVycygpCiAKICAgICBhdXRv
IHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24tPnJlc291
cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKTsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeUhhbmRsZTsKLSAgICBpZiAoIXJlc291
cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBTYW5kYm94RXh0
ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkocmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RpcmVjdG9yeSwgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeUhhbmRsZSk7
CisgICAgaWYgKCFyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LmlzRW1wdHkoKSkgewor
ICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVG
b3JSZWFkV3JpdGVEaXJlY3RvcnkocmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSkpCisg
ICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5SGFuZGxlID0gV1RGTW92
ZSgqaGFuZGxlKTsKKyAgICB9CiAKICAgICBhdXRvIG5ldHdvcmtDYWNoZURpcmVjdG9yeSA9IHJl
c29sdmVkTmV0d29ya0NhY2hlRGlyZWN0b3J5KCk7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlIG5ldHdvcmtDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKLSAgICBpZiAoIW5ldHdv
cmtDYWNoZURpcmVjdG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShuZXR3b3JrQ2FjaGVEaXJlY3RvcnksIG5l
dHdvcmtDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CisgICAgaWYgKCFuZXR3b3JrQ2Fj
aGVEaXJlY3RvcnkuaXNFbXB0eSgpKSB7CisgICAgICAgIC8vIEZJWE1FOiBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkgcmVzb2x2ZXMgdGhlIGRpcmVj
dG9yeSwgYnV0IHRoYXQgaGFzIGFscmVhZHkgYmVlbiBkb25lLiBSZW1vdmUgdGhpcyBkdXBsaWNh
dGUgd29yay4KKyAgICAgICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KG5ldHdvcmtDYWNoZURpcmVjdG9yeSkpCisg
ICAgICAgICAgICBuZXR3b3JrQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3Zl
KCpoYW5kbGUpOworICAgIH0KIAogICAgIGF1dG8gaHN0c1N0b3JhZ2VEaXJlY3RvcnkgPSByZXNv
bHZlZEhTVFNTdG9yYWdlRGlyZWN0b3J5KCk7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
IGhzdHNTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwotICAgIGlmICghaHN0c1N0b3Jh
Z2VEaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVI
YW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkoaHN0c1N0b3JhZ2VEaXJlY3RvcnksIGhzdHNTdG9y
YWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBpZiAoIWhzdHNTdG9yYWdlRGlyZWN0
b3J5LmlzRW1wdHkoKSkgeworICAgICAgICAvLyBGSVhNRTogU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5IHJlc29sdmVzIHRoZSBkaXJlY3RvcnksIGJ1
dCB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gZG9uZS4gUmVtb3ZlIHRoaXMgZHVwbGljYXRlIHdvcmsu
CisgICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRs
ZUZvclJlYWRXcml0ZURpcmVjdG9yeShoc3RzU3RvcmFnZURpcmVjdG9yeSkpCisgICAgICAgICAg
ICBoc3RzU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoKmhhbmRsZSk7
CisgICAgfQogCiAgICAgYm9vbCBzaG91bGRJbmNsdWRlTG9jYWxob3N0SW5SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzID0gZmFsc2U7CiAgICAgYm9vbCBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGVidWdNb2RlID0gZmFsc2U7CkBAIC0yMDA0LDI2ICsyMDEyLDM1IEBAIFdlYnNpdGVEYXRhU3Rv
cmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMoKQogICAgIHBhcmFtZXRl
cnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzID0gV1RGTW92ZShuZXR3b3JrU2Vzc2lvblBhcmFt
ZXRlcnMpOwogCiAgICAgcGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkgPSByZXNv
bHZlZEluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSgpOwotICAgIGlmICghcGFyYW1ldGVycy5pbmRl
eGVkRGF0YWJhc2VEaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkocGFyYW1ldGVycy5pbmRleGVkRGF0
YWJhc2VEaXJlY3RvcnksIHBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5RXh0ZW5z
aW9uSGFuZGxlKTsKKyAgICBpZiAoIXBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5
LmlzRW1wdHkoKSkgeworICAgICAgICAvLyBGSVhNRTogU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRl
SGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5IHJlc29sdmVzIHRoZSBkaXJlY3RvcnksIGJ1dCB0
aGF0IGhhcyBhbHJlYWR5IGJlZW4gZG9uZS4gUmVtb3ZlIHRoaXMgZHVwbGljYXRlIHdvcmsuCisg
ICAgICAgIGlmIChhdXRvIGhhbmRsZSA9ICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVG
b3JSZWFkV3JpdGVEaXJlY3RvcnkocGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJlY3Rvcnkp
KQorICAgICAgICAgICAgcGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnlFeHRlbnNp
b25IYW5kbGUgPSBXVEZNb3ZlKCpoYW5kbGUpOworICAgIH0KIAogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKICAgICBwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rv
cnkgPSByZXNvbHZlZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKTsKLSAgICBp
ZiAoIXBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeS5pc0VtcHR5
KCkpCi0gICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURp
cmVjdG9yeShwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnksIHBh
cmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRs
ZSk7CisgICAgaWYgKCFwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rv
cnkuaXNFbXB0eSgpKSB7CisgICAgICAgIC8vIEZJWE1FOiBTYW5kYm94RXh0ZW5zaW9uOjpjcmVh
dGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkgcmVzb2x2ZXMgdGhlIGRpcmVjdG9yeSwgYnV0
IHRoYXQgaGFzIGFscmVhZHkgYmVlbiBkb25lLiBSZW1vdmUgdGhpcyBkdXBsaWNhdGUgd29yay4K
KyAgICAgICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
Rm9yUmVhZFdyaXRlRGlyZWN0b3J5KHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bkRpcmVjdG9yeSkpCisgICAgICAgICAgICBwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKCpoYW5kbGUpOworICAgIH0K
ICAgICBwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJs
ZWQgPSBtX2NvbmZpZ3VyYXRpb24tPnNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxh
eUVuYWJsZWQoKTsKICNlbmRpZgogCiAgICAgYXV0byBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBy
ZXNvbHZlZExvY2FsU3RvcmFnZURpcmVjdG9yeSgpOwogICAgIGlmICghbG9jYWxTdG9yYWdlRGly
ZWN0b3J5LmlzRW1wdHkoKSkgewogICAgICAgICBwYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVj
dG9yeSA9IGxvY2FsU3RvcmFnZURpcmVjdG9yeTsKLSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6
Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KGxvY2FsU3RvcmFnZURpcmVjdG9yeSwg
cGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOworICAgICAg
ICAvLyBGSVhNRTogU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGly
ZWN0b3J5IHJlc29sdmVzIHRoZSBkaXJlY3RvcnksIGJ1dCB0aGF0IGhhcyBhbHJlYWR5IGJlZW4g
ZG9uZS4gUmVtb3ZlIHRoaXMgZHVwbGljYXRlIHdvcmsuCisgICAgICAgIGlmIChhdXRvIGhhbmRs
ZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShs
b2NhbFN0b3JhZ2VEaXJlY3RvcnkpKQorICAgICAgICAgICAgcGFyYW1ldGVycy5sb2NhbFN0b3Jh
Z2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKCpoYW5kbGUpOwogICAgIH0KIAog
ICAgIGF1dG8gY2FjaGVTdG9yYWdlRGlyZWN0b3J5ID0gdGhpcy0+Y2FjaGVTdG9yYWdlRGlyZWN0
b3J5KCk7CiAgICAgaWYgKCFjYWNoZVN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKSB7CiAgICAg
ICAgIHBhcmFtZXRlcnMuY2FjaGVTdG9yYWdlRGlyZWN0b3J5ID0gY2FjaGVTdG9yYWdlRGlyZWN0
b3J5OwotICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVE
aXJlY3RvcnkoY2FjaGVTdG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmNhY2hlU3RvcmFnZURp
cmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CisgICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShjYWNoZVN0b3Jh
Z2VEaXJlY3RvcnkpKQorICAgICAgICAgICAgcGFyYW1ldGVycy5jYWNoZVN0b3JhZ2VEaXJlY3Rv
cnlFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKCpoYW5kbGUpOwogICAgIH0KIAogICAgIHBhcmFt
ZXRlcnMucGVyT3JpZ2luU3RvcmFnZVF1b3RhID0gcGVyT3JpZ2luU3RvcmFnZVF1b3RhKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQ
cm94eS5jcHAKaW5kZXggM2FmNDliNDM3MmU4Njc3YTU3ZDJlZmM4ZTg4Yzg2NzMzOTQ1NWRjMS4u
NGZlNDVmZjEwOTQ4ODMwZjg3NDhhZDE4ZDc2MDgxMzAzOTNhZTk0OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNwcApA
QCAtNDIsOCArNDIsMTAgQEAgdm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJGaWxlQmxv
YlVSTChjb25zdCBVUkwmIHVybCwgUmVmPEJsb2JEYXRhRmlsZVJlZmUKICAgICBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGUgZXh0ZW5zaW9uSGFuZGxlOwogCiAgICAgLy8gRmlsZSBwYXRoIGNhbiBi
ZSBlbXB0eSB3aGVuIHN1Ym1pdHRpbmcgYSBmb3JtIGZpbGUgaW5wdXQgd2l0aG91dCBhIGZpbGUs
IHNlZSBidWcgMTExNzc4LgotICAgIGlmICghZmlsZS0+cGF0aCgpLmlzRW1wdHkoKSkKLSAgICAg
ICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGZpbGUtPnBhdGgoKSwgU2FuZGJveEV4
dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHksIGV4dGVuc2lvbkhhbmRsZSk7CisgICAgaWYgKCFmaWxl
LT5wYXRoKCkuaXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZUhhbmRsZShmaWxlLT5wYXRoKCksIFNhbmRib3hFeHRlbnNpb246OlR5
cGU6OlJlYWRPbmx5KSkKKyAgICAgICAgICAgIGV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoKmhh
bmRsZSk7CisgICAgfQogCiAgICAgU3RyaW5nIHJlcGxhY2VtZW50UGF0aCA9IHBhdGggPT0gZmls
ZS0+cGF0aCgpID8gbnVsbFN0cmluZygpIDogZmlsZS0+cGF0aCgpOwogICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24o
KS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVnaXN0ZXJG
aWxlQmxvYlVSTCh1cmwsIHBhdGgsIHJlcGxhY2VtZW50UGF0aCwgZXh0ZW5zaW9uSGFuZGxlLCBj
b250ZW50VHlwZSksIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCmluZGV4IGUxY2M5
OGNlZGE5YjcwY2QyMmZjY2FkYzM0Y2JkODM5MGY3NzQyYTMuLmU5YTYzYWYzZDViOTUyMWIyZWM3
YzgwMTkzN2QxNzdkZjljYmUwMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKQEAg
LTE2OSwxMSArMTY5LDE5IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpsb2FkKGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBDb250ZW50VHlwZSYgY29udGVudFR5CiAKICAgICAgICAgYXV0
byBjcmVhdGVFeHRlbnNpb24gPSBbJl0gewogI2lmIEhBVkUoQVVESVRfVE9LRU4pCi0gICAgICAg
ICAgICBpZiAoYXV0byBhdWRpdFRva2VuID0gbV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9u
KCkuYXVkaXRUb2tlbigpKQotICAgICAgICAgICAgICAgIHJldHVybiBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGVGb3JSZWFkQnlBdWRpdFRva2VuKGZpbGVTeXN0ZW1QYXRoLCBhdWRpdFRv
a2VuLnZhbHVlKCksIGhhbmRsZSk7CisgICAgICAgICAgICBpZiAoYXV0byBhdWRpdFRva2VuID0g
bV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuYXVkaXRUb2tlbigpKSB7CisgICAgICAg
ICAgICAgICAgaWYgKGF1dG8gY3JlYXRlZEhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0
ZUhhbmRsZUZvclJlYWRCeUF1ZGl0VG9rZW4oZmlsZVN5c3RlbVBhdGgsIGF1ZGl0VG9rZW4udmFs
dWUoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlID0gV1RGTW92ZSgqY3JlYXRlZEhh
bmRsZSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CiAjZW5kaWYK
LQotICAgICAgICAgICAgcmV0dXJuIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShmaWxl
U3lzdGVtUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHksIGhhbmRsZSk7Cisg
ICAgICAgICAgICBpZiAoYXV0byBjcmVhdGVkSGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlSGFuZGxlKGZpbGVTeXN0ZW1QYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkT25s
eSkpIHsKKyAgICAgICAgICAgICAgICBoYW5kbGUgPSBXVEZNb3ZlKCpjcmVhdGVkSGFuZGxlKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgfTsKIAogICAgICAgICBpZiAoIWNyZWF0ZUV4dGVuc2lv
bigpKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435502</attachid>
            <date>2021-08-13 13:08:10 -0700</date>
            <delta_ts>2021-08-13 13:53:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228875-20210813130809.patch</filename>
            <type>text/plain</type>
            <size>83723</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwOTIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGJjNWViNmUyZTE5NWU1NDc2
MGZhZTdjOWQ4Y2NhMmI2NWYyZDgzMzMuLjdhODdiYmI0YmNiZGJkYjEzNTU3NzQyZTJkNzQ1YmEz
ODQ5MzIwM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTc0IEBACisyMDIxLTA4LTEzICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlIGNyZWF0aW9uIHNob3VsZCByZXR1cm4gc3RkOjpvcHRpb25hbCBpbnN0
ZWFkIG9mIGJvb2wKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyODg3NQorCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQuCisKKyAgICAg
ICAgVGhpcyBtb2Rlcm5pemVzIHRoZSBjb2RlIHNvbWV3aGF0LgorICAgICAgICBUaGlzIG1ha2Vz
IGl0IGVhc2llciB0byB3cml0ZSBjb2RlIHRoYXQgcmVhbGl6ZXMgdGhhdCBoYW5kbGUgY3JlYXRp
b24gY2FuIGZhaWwuCisgICAgICAgIFRoaXMgaXMgYSBzdGVwIHRvd2FyZHMgcmVtb3ZpbmcgdGhl
IHVubmVjZXNzYXJ5IGFic3RyYWN0aW9uIEhhbmRsZUFycmF5LgorCisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAg
ICAgKiBQbGF0Zm9ybS9JUEMvRm9ybURhdGFSZWZlcmVuY2UuaDoKKyAgICAgICAgKElQQzo6Rm9y
bURhdGFSZWZlcmVuY2U6OmVuY29kZSBjb25zdCk6CisgICAgICAgICogU2hhcmVkL0NvY29hL1Nh
bmRib3hFeHRlbnNpb25Db2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgpOgorICAgICAgICAoV2ViS2l0OjpT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpjcmVhdGVI
YW5kbGVzRm9yUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6
Y3JlYXRlUmVhZE9ubHlIYW5kbGVzRm9yRmlsZXMpOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94
RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkpOgorICAgICAgICAo
V2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JUZW1wb3JhcnlGaWxlKToK
KyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yR2VuZXJp
Y0V4dGVuc2lvbik6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhh
bmRsZUZvck1hY2hMb29rdXApOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cCk6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRl
bnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRCeUF1ZGl0VG9rZW4pOgorICAgICAgICAoV2ViS2l0
OjpTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JJT0tpdENsYXNzRXh0ZW5zaW9uKToK
KyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0ZvcklPS2l0
Q2xhc3NFeHRlbnNpb25zKToKKyAgICAgICAgKiBTaGFyZWQvU2FuZGJveEV4dGVuc2lvbi5oOgor
ICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUpOgorICAgICAg
ICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5n
UGF0aCk6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZv
clJlYWRXcml0ZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246
OmNyZWF0ZUhhbmRsZUZvclRlbXBvcmFyeUZpbGUpOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94
RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JHZW5lcmljRXh0ZW5zaW9uKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6YWRkUGxhdGZvcm1Mb2FkUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6Y3JlYXRlU2FuZGJveEV4dGVuc2lvbnNJZk5lZWRlZCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2Nyb2xsaW5nVXBkYXRlc0Rpc2FibGVk
Rm9yVGVzdGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c3Rh
cnREcmFnKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRQcm9t
aXNlZERhdGFGb3JJbWFnZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6c2V0RHJhZ0NhcmV0UmVjdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6cGxhdGZvcm1SZWdpc3RlckF0dGFjaG1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnBsYXRmb3JtQ2xvbmVBdHRhY2htZW50KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0TG9j
YXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnBlcmZvcm1E
aWN0aW9uYXJ5TG9va3VwT2ZDdXJyZW50U2VsZWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjppbnNlcnREaWN0YXRlZFRleHRBc3luYyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cGxhdGZvcm1EaWN0YXRpb25BbHRlcm5hdGl2
ZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmVycm9yRm9yVW5w
ZXJtaXR0ZWRBcHBCb3VuZERvbWFpbk5hdmlnYXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnBheW1lbnRDb29yZGluYXRvckNvbm5lY3Rpb24pOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnBheW1lbnRDb29yZGluYXRvckJvdW5k
SW50ZXJmYWNlSWRlbnRpZmllcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6cGF5bWVudENvb3JkaW5hdG9yU291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVy
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRp
bmF0b3JTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnBheW1lbnRDb29yZGluYXRvckFkZE1lc3NhZ2VS
ZWNlaXZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cGF5bWVu
dENvb3JkaW5hdG9yUmVtb3ZlTWVzc2FnZVJlY2VpdmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpkaWRTdGFydFNwZWFraW5nKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRGaW5pc2hTcGVha2luZyk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUGF1c2VTcGVha2luZyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUmVzdW1lU3BlYWtpbmcpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNwZWFraW5nRXJyb3JPY2N1cnJlZCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Ym91bmRhcnlFdmVudE9j
Y3VycmVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp2b2ljZXNE
aWRDaGFuZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZENy
ZWF0ZUNvbnRleHRJbldlYlByb2Nlc3NGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb24pOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZENyZWF0ZUNvbnRleHRJbkdQVVBy
b2Nlc3NGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmdyYW50QWNjZXNzVG9QcmVmZXJlbmNlU2VydmljZSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bWVkaWFVc2FnZU1hbmFnZXIpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmFkZE1lZGlhVXNhZ2VNYW5hZ2Vy
U2Vzc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dXBkYXRl
TWVkaWFVc2FnZU1hbmFnZXJTZXNzaW9uU3RhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnJlbW92ZU1lZGlhVXNhZ2VNYW5hZ2VyU2Vzc2lvbik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6OmNvbnZlcnRQbGF0Zm9ybUltYWdlVG9CaXRtYXApOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RUaHVtYm5haWxXaXRoT3Bl
cmF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0
VGh1bWJuYWlsV2l0aEZpbGVXcmFwcGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpyZXF1ZXN0VGh1bWJuYWlsV2l0aFBhdGgpOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnNjaGVkdWxlQWN0aXZpdHlTdGF0ZVVwZGF0ZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YWRkQWN0aXZpdHlTdGF0ZVVwZGF0
ZUNvbXBsZXRpb25IYW5kbGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpjcmVhdGVBcHBIaWdobGlnaHRJblNlbGVjdGVkUmFuZ2UpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlc3RvcmVBcHBIaWdobGlnaHRzQW5kU2Nyb2xsVG9J
bmRleCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0QXBwSGln
aGxpZ2h0c1Zpc2liaWxpdHkpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmFwcEhpZ2hsaWdodHNWaXNpYmlsaXR5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjphcHBIaWdobGlnaHRzT3ZlcmxheVJlY3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFVwSGlnaGxpZ2h0c09ic2VydmVyKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGVOZXR3b3JrRXh0ZW5zaW9u
c1NhbmRib3hFeHRlbnNpb25zKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpjYW5IYW5kbGVDb250ZXh0TWVudVRyYW5zbGF0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpoYW5kbGVDb250ZXh0TWVudVRyYW5zbGF0aW9u
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0QWN0aXZl
Tm93UGxheWluZ1Nlc3Npb25JbmZvKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpzZXRMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdyYW50QWNjZXNzVG9B
c3NldFNlcnZpY2VzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpy
ZXZva2VBY2Nlc3NUb0Fzc2V0U2VydmljZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnN3aXRjaEZyb21TdGF0aWNGb250UmVnaXN0cnlUb1VzZXJGb250UmVnaXN0
cnkpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmZvbnRkTWFjaEV4
dGVuc2lvbkhhbmRsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
Y29udGVudHNPZlVzZXJJbnRlcmZhY2VJdGVtKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZFBhdGhuYW1lc0ZvclR5cGUpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJv
Y2Vzcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9y
bUludmFsaWRhdGVDb250ZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6OnBhcmVudEJ1bmRsZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQb29sOjpuZXR3b3JraW5nQ2FjaGVzRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OndlYkNvbnRlbnRDYWNoZXNEaXJlY3Rvcnkp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6Y29udGFpbmVyVGVt
cG9yYXJ5RGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bv
b2w6OnNldEphdmFTY3JpcHRDb25maWd1cmF0aW9uRmlsZUVuYWJsZWRGcm9tRGVmYXVsdHMpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6b21pdFBERlN1cHBvcnQp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc1N1cHBy
ZXNzaW9uRW5hYmxlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQb29sOjpkaXNwbGF5QnJpZ2h0bmVzcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjpiYWNrbGlnaHRMZXZlbERpZENoYW5nZUNhbGxiYWNrKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmFjY2Vzc2liaWxpdHlQcmVmZXJlbmNl
c0NoYW5nZWRDYWxsYmFjayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sOjptZWRpYUFjY2Vzc2liaWxpdHlQcmVmZXJlbmNlc0NoYW5nZWRDYWxsYmFjayk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpjb2xvclByZWZlcmVuY2VzRGlk
Q2hhbmdlQ2FsbGJhY2spOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6cmVtb3RlV2ViSW5zcGVjdG9yRW5hYmxlZENhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnN0YXJ0T2JzZXJ2aW5nUHJlZmVyZW5jZUNoYW5nZXMp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cmVnaXN0ZXJOb3Rp
ZmljYXRpb25PYnNlcnZlcnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbDo6dW5yZWdpc3Rlck5vdGlmaWNhdGlvbk9ic2VydmVycyk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjppc1VSTEtub3duSFNUU0hvc3QgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6bm9taW5hbEZyYW1lc1BlclNl
Y29uZEZvckRpc3BsYXkpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6c3RhcnREaXNwbGF5TGluayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQb29sOjpzdG9wRGlzcGxheUxpbmspOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6c3RvcERpc3BsYXlMaW5rcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQb29sOjpzZXREaXNwbGF5TGlua1ByZWZlcnJlZEZyYW1lc1BlclNlY29uZCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXREaXNwbGF5TGlu
a0ZvckRpc3BsYXlXYW50c0Z1bGxTcGVlZFVwZGF0ZXMpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbDo6c2V0Q29va2llU3RvcmFnZVBhcnRpdGlvbmluZ0VuYWJsZWQp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6Y2xlYXJQZXJtYW5l
bnRDcmVkZW50aWFsc0ZvclByb3RlY3Rpb25TcGFjZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6Om5ldHdvcmtQcm9jZXNzTGF0ZW5jeVFPUyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
Om5ldHdvcmtQcm9jZXNzVGhyb3VnaHB1dFFPUyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
OndlYlByb2Nlc3NMYXRlbmN5UU9TKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6d2ViUHJv
Y2Vzc1Rocm91Z2hwdXRRT1MpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbDo6YXBwbGljYXRpb25Jc0Fib3V0VG9TdXNwZW5kKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2w6Om5vdGlmeVByb2Nlc3NQb29sc0FwcGxpY2F0aW9uSXNBYm91
dFRvU3VzcGVuZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpp
bml0aWFsaXplQ2xhc3Nlc0ZvclBhcmFtZXRlckNvZGluZyk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQb29sOjphbGxvd2VkQ2xhc3Nlc0ZvclBhcmFtZXRlckNvZGluZyBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpub3RpZnlQ
cmVmZXJlbmNlc0NoYW5nZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0Ojp3ZWJQcm9jZXNz
UG9vbEhpZ2hEeW5hbWljUmFuZ2VEaWRDaGFuZ2VDYWxsYmFjayk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpyZWdpc3RlckhpZ2hEeW5hbWljUmFuZ2VDaGFuZ2VD
YWxsYmFjayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzeXN0
ZW1XaWxsU2xlZXApOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6
c3lzdGVtRGlkV2FrZSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0Rvd25sb2Fkcy9E
b3dubG9hZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6cHVibGlz
aFByb2dyZXNzKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6ZGVjaWRlRGVzdGlu
YXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9HUFUvR1BV
UHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vzc1Byb3h5OjpHUFVQ
cm9jZXNzUHJveHkpOgorICAgICAgICAoV2ViS2l0OjphZGRDYW1lcmFTYW5kYm94RXh0ZW5zaW9u
cyk6CisgICAgICAgIChXZWJLaXQ6OmFkZE1pY3JvcGhvbmVTYW5kYm94RXh0ZW5zaW9uKToKKyAg
ICAgICAgKFdlYktpdDo6YWRkVENDRFNhbmRib3hFeHRlbnNpb24pOgorICAgICAgICAoV2ViS2l0
OjpncHVQcm9jZXNzU2Vzc2lvblBhcmFtZXRlcnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpzZW5kQ3JlYXRpb25QYXJhbWV0ZXJzVG9OZXdQcm9jZXNzKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6cmV0cmlldmVDYWNoZVN0b3JhZ2VQYXJhbWV0
ZXJzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGlt
ZU1lZGlhU291cmNlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0
aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXI6OmFkZFNvdXJjZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6
OmZpbmlzaEdyYW50aW5nUmVxdWVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL1VzZXJNZWRpYVBy
b2Nlc3NNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUHJvY2Vzc01hbmFn
ZXI6OndpbGxDcmVhdGVNZWRpYVN0cmVhbSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bWF5YmVJbml0aWFsaXpl
U2FuZGJveEV4dGVuc2lvbkhhbmRsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWxXaXRoRGlzcGxheVN0cmluZ0FuZEljb24pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjp3ZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQb29sOjppbml0aWFsaXplTmV3V2ViUHJvY2Vzcyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwcm9jZXNzRGlkRmluaXNoTGF1bmNoaW5nKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlc3VtZURvd25sb2FkKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnN0YXJ0TWVtb3J5U2FtcGxlcik6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbToKKyAg
ICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cGxhdGZvcm1TZXROZXR3b3JrUGFyYW1l
dGVycyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0ZXJzKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJGaWxlQmxvYlVSTCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpsb2FkKToKKwogMjAy
MS0wOC0xMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAg
ICAgICAgIEZpeCBpT1MgZGVidWcgYnVpbGQgYWZ0ZXIgcjI4MDg3NQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJh
bWV0ZXJzLmNwcAppbmRleCAwMGVmYzVmMDUwMGJiYmI3MzIxODFkZmI5NjYzMWY3MDJjOGFlZTY4
Li5mYzg0MWQ1MjNkOTZhNzY2ODhiNDFkNGIyZTkzMjdkYjdhN2Q0NmIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRQYXJhbWV0ZXJzLmNwcApAQCAtNTgsNyArNTgsOCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxv
YWRQYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgICAg
ICAgICAgY29uc3QgRm9ybURhdGFFbGVtZW50JiBlbGVtZW50ID0gZWxlbWVudHNbaV07CiAgICAg
ICAgICAgICBpZiAoYXV0byogZmlsZURhdGEgPSBXVEY6OmdldF9pZjxGb3JtRGF0YUVsZW1lbnQ6
OkVuY29kZWRGaWxlRGF0YT4oZWxlbWVudC5kYXRhKSkgewogICAgICAgICAgICAgICAgIGNvbnN0
IFN0cmluZyYgcGF0aCA9IGZpbGVEYXRhLT5maWxlbmFtZTsKLSAgICAgICAgICAgICAgICBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUocGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6
UmVhZE9ubHksIHJlcXVlc3RCb2R5U2FuZGJveEV4dGVuc2lvbnNbZXh0ZW5zaW9uSW5kZXgrK10p
OworICAgICAgICAgICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZUhhbmRsZShwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkT25seSkpCisgICAg
ICAgICAgICAgICAgICAgIHJlcXVlc3RCb2R5U2FuZGJveEV4dGVuc2lvbnNbZXh0ZW5zaW9uSW5k
ZXgrK10gPSBXVEZNb3ZlKCpoYW5kbGUpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAg
ICAgIGVuY29kZXIgPDwgcmVxdWVzdEJvZHlTYW5kYm94RXh0ZW5zaW9uczsKQEAgLTY3LDExICs2
OCwxNSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGlmIChyZXF1ZXN0LnVybCgpLmlzTG9jYWxGaWxl
KCkpIHsKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHJlcXVlc3RTYW5kYm94RXh0
ZW5zaW9uOwogI2lmIEhBVkUoQVVESVRfVE9LRU4pCi0gICAgICAgIGlmIChuZXR3b3JrUHJvY2Vz
c0F1ZGl0VG9rZW4pCi0gICAgICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVG
b3JSZWFkQnlBdWRpdFRva2VuKHJlcXVlc3QudXJsKCkuZmlsZVN5c3RlbVBhdGgoKSwgKm5ldHdv
cmtQcm9jZXNzQXVkaXRUb2tlbiwgcmVxdWVzdFNhbmRib3hFeHRlbnNpb24pOwotICAgICAgICBl
bHNlCisgICAgICAgIGlmIChuZXR3b3JrUHJvY2Vzc0F1ZGl0VG9rZW4pIHsKKyAgICAgICAgICAg
IGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRC
eUF1ZGl0VG9rZW4ocmVxdWVzdC51cmwoKS5maWxlU3lzdGVtUGF0aCgpLCAqbmV0d29ya1Byb2Nl
c3NBdWRpdFRva2VuKSkKKyAgICAgICAgICAgICAgICByZXF1ZXN0U2FuZGJveEV4dGVuc2lvbiA9
IFdURk1vdmUoKmhhbmRsZSk7CisgICAgICAgIH0gZWxzZQogI2VuZGlmCi0gICAgICAgICAgICBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUocmVxdWVzdC51cmwoKS5maWxlU3lzdGVtUGF0
aCgpLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkT25seSwgcmVxdWVzdFNhbmRib3hFeHRl
bnNpb24pOworICAgICAgICB7CisgICAgICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94
RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUocmVxdWVzdC51cmwoKS5maWxlU3lzdGVtUGF0aCgpLCBT
YW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkT25seSkpCisgICAgICAgICAgICAgICAgcmVxdWVz
dFNhbmRib3hFeHRlbnNpb24gPSBXVEZNb3ZlKCpoYW5kbGUpOworICAgICAgICB9CiAKICAgICAg
ICAgZW5jb2RlciA8PCByZXF1ZXN0U2FuZGJveEV4dGVuc2lvbjsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Gb3JtRGF0YVJlZmVyZW5jZS5oIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvRm9ybURhdGFSZWZlcmVuY2UuaAppbmRleCBjMGQ0MzdhZTcx
N2FiOTJjZGQzNGNhOWVlY2FmMDdiZWRiY2JhN2VjLi44M2MyNDdmYTYxOWQ1NzE5MzQ4YTU1MTJj
MTRjNmY3NjE2YjU3MWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9G
b3JtRGF0YVJlZmVyZW5jZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Zvcm1E
YXRhUmVmZXJlbmNlLmgKQEAgLTYxLDcgKzYxLDggQEAgcHVibGljOgogICAgICAgICBmb3IgKGF1
dG8mIGVsZW1lbnQgOiBlbGVtZW50cykgewogICAgICAgICAgICAgaWYgKGF1dG8qIGZpbGVEYXRh
ID0gV1RGOjpnZXRfaWY8V2ViQ29yZTo6Rm9ybURhdGFFbGVtZW50OjpFbmNvZGVkRmlsZURhdGE+
KGVsZW1lbnQuZGF0YSkpIHsKICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHBhdGggPSBm
aWxlRGF0YS0+ZmlsZW5hbWU7Ci0gICAgICAgICAgICAgICAgV2ViS2l0OjpTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGVIYW5kbGUocGF0aCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpS
ZWFkT25seSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZXNbZXh0ZW5zaW9uSW5kZXgrK10pOworICAg
ICAgICAgICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6
Y3JlYXRlSGFuZGxlKHBhdGgsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9u
bHkpKQorICAgICAgICAgICAgICAgICAgICBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlc1tleHRlbnNp
b25JbmRleCsrXSA9IFdURk1vdmUoKmhhbmRsZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
ICAgICAgICAgZW5jb2RlciA8PCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlczsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbSBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbQppbmRleCBj
YTM3ODBiYzg2ZjljMGQ2MjA4ODI3MjJhZDkzMmMzZmQzMzMyNTRmLi5mYTgxZGFmYWY0NjIyNWZk
YWRlZTRjYzkyYmZlNWU4MGM0ODExY2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db2NvYS9TYW5kYm94RXh0ZW5zaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1tCkBAIC0yNzYsMjcgKzI3NiwyNiBAQCBT
dHJpbmcgcmVzb2x2ZVBhdGhGb3JTYW5kYm94RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgcGF0aCkK
ICAgICByZXR1cm4gcmVzb2x2ZWRQYXRoOwogfQogCi1ib29sIFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCwgVHlwZSB0
eXBlLCBIYW5kbGUmIGhhbmRsZSkKK2F1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
V2l0aG91dFJlc29sdmluZ1BhdGgoY29uc3QgU3RyaW5nJiBwYXRoLCBUeXBlIHR5cGUpIC0+IHN0
ZDo6b3B0aW9uYWw8SGFuZGxlPgogeworICAgIEhhbmRsZSBoYW5kbGU7CiAgICAgQVNTRVJUKCFo
YW5kbGUubV9zYW5kYm94RXh0ZW5zaW9uKTsKIAogICAgIGhhbmRsZS5tX3NhbmRib3hFeHRlbnNp
b24gPSBTYW5kYm94RXh0ZW5zaW9uSW1wbDo6Y3JlYXRlKHBhdGgudXRmOCgpLmRhdGEoKSwgdHlw
ZSwgc3RkOjpudWxsb3B0LCBTYW5kYm94RXh0ZW5zaW9uOjpGbGFnczo6RG9Ob3RDYW5vbmljYWxp
emUpOwogICAgIGlmICghaGFuZGxlLm1fc2FuZGJveEV4dGVuc2lvbikgewogICAgICAgICBMT0df
RVJST1IoIkNvdWxkIG5vdCBjcmVhdGUgYSBzYW5kYm94IGV4dGVuc2lvbiBmb3IgJyVzJyIsIHBh
dGgudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICB9Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIFdURk1v
dmUoaGFuZGxlKTsKIH0KIAotYm9vbCBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUoY29u
c3QgU3RyaW5nJiBwYXRoLCBUeXBlIHR5cGUsIEhhbmRsZSYgaGFuZGxlKQorYXV0byBTYW5kYm94
RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBUeXBlIHR5cGUpIC0+
IHN0ZDo6b3B0aW9uYWw8SGFuZGxlPgogewotICAgIEFTU0VSVCghaGFuZGxlLm1fc2FuZGJveEV4
dGVuc2lvbik7Ci0KLSAgICByZXR1cm4gY3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgo
cmVzb2x2ZVBhdGhGb3JTYW5kYm94RXh0ZW5zaW9uKHBhdGgpLCB0eXBlLCBoYW5kbGUpOworICAg
IHJldHVybiBjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChyZXNvbHZlUGF0aEZvclNh
bmRib3hFeHRlbnNpb24ocGF0aCksIHR5cGUpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
LXN0YXRpYyBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSBjcmVhdGVIYW5kbGVzRm9yUmVz
b3VyY2VzKGNvbnN0IFZlY3RvcjxUPiYgcmVzb3VyY2VzLCBGdW5jdGlvbjxib29sKGNvbnN0IFQm
LCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIGhhbmRsZSk+JiYgY3JlYXRlRnVuY3Rpb24pCitz
dGF0aWMgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkgY3JlYXRlSGFuZGxlc0ZvclJlc291
cmNlcyhjb25zdCBWZWN0b3I8VD4mIHJlc291cmNlcywgRnVuY3Rpb248c3RkOjpvcHRpb25hbDxT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+KGNvbnN0IFQmKT4mJiBjcmVhdGVGdW5jdGlvbikKIHsK
ICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSBoYW5kbGVBcnJheTsKIApAQCAtMzA1
LDggKzMwNCwxMCBAQCBzdGF0aWMgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkgY3JlYXRl
SGFuZGxlc0ZvclJlc291cmNlcyhjb25zdCBWZWN0b3I8VD4mCiAKICAgICBzaXplX3QgY3VycmVu
dEhhbmRsZSA9IDA7CiAgICAgZm9yIChjb25zdCBhdXRvJiByZXNvdXJjZSA6IHJlc291cmNlcykg
ewotICAgICAgICBpZiAoIWNyZWF0ZUZ1bmN0aW9uKHJlc291cmNlLCBoYW5kbGVBcnJheVtjdXJy
ZW50SGFuZGxlXSkpCisgICAgICAgIGF1dG8gaGFuZGxlID0gY3JlYXRlRnVuY3Rpb24ocmVzb3Vy
Y2UpOworICAgICAgICBpZiAoIWhhbmRsZSkKICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICBoYW5kbGVBcnJheVtjdXJyZW50SGFuZGxlXSA9IFdURk1vdmUoKmhhbmRsZSk7CiAgICAgICAg
ICsrY3VycmVudEhhbmRsZTsKICAgICB9CiAgICAgCkBAIC0zMTUsMzQgKzMxNiwzNCBAQCBzdGF0
aWMgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkgY3JlYXRlSGFuZGxlc0ZvclJlc291cmNl
cyhjb25zdCBWZWN0b3I8VD4mCiAKIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZVJlYWRPbmx5SGFuZGxlc0ZvckZpbGVzKEFTQ0lJTGl0ZXJhbCBs
b2dMYWJlbCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdGhzKQogewotICAgIHJldHVybiBjcmVh
dGVIYW5kbGVzRm9yUmVzb3VyY2VzKHBhdGhzLCBGdW5jdGlvbjxib29sKGNvbnN0IFN0cmluZyYs
IEhhbmRsZSYpPihbJmxvZ0xhYmVsXSAoY29uc3QgU3RyaW5nJiBwYXRoLCBIYW5kbGUmIGhhbmRs
ZSkgewotICAgICAgICBpZiAoIVNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShwYXRoLCBT
YW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkT25seSwgaGFuZGxlKSkgeworICAgIHJldHVybiBj
cmVhdGVIYW5kbGVzRm9yUmVzb3VyY2VzPFN0cmluZz4ocGF0aHMsIFsmbG9nTGFiZWxdIChjb25z
dCBTdHJpbmcmIHBhdGgpIHsKKyAgICAgICAgYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGUocGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHkpOwor
ICAgICAgICBpZiAoIWhhbmRsZSkgewogICAgICAgICAgICAgLy8gVGhpcyBjYW4gbGVnaXRpbWF0
ZWx5IGZhaWwgaWYgYSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgZmlsZSBpcyBkZWxldGVkIGFm
dGVyIHRoZSBmaWxlIHdhcyBjaG9zZW4uCiAgICAgICAgICAgICAvLyBXZSBhbHNvIGhhdmUgcmVw
b3J0cyBvZiBjYXNlcyB3aGVyZSB0aGlzIGxpa2VseSBmYWlscyBmb3Igc29tZSB1bmtub3duIHJl
YXNvbiwgPHJkYXI6Ly9wcm9ibGVtLzEwMTU2NzEwPi4KICAgICAgICAgICAgIFdURkxvZ0Fsd2F5
cygiJXM6IGNvdWxkIG5vdCBjcmVhdGUgYSBzYW5kYm94IGV4dGVuc2lvbiBmb3IgJyVzJ1xuIiwg
bG9nTGFiZWwuY2hhcmFjdGVycygpLCBwYXRoLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IH0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSkpOworICAgICAgICByZXR1cm4gaGFuZGxl
OworICAgIH0pOwogfQogCi1ib29sIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJl
YWRXcml0ZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZSYgaGFuZGxlKQorYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFk
V3JpdGVEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKSAtPiBzdGQ6Om9wdGlvbmFsPEhhbmRs
ZT4KIHsKICAgICBTdHJpbmcgcmVzb2x2ZWRQYXRoID0gcmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0
ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24ocGF0aCk7CiAgICAgaWYgKHJlc29sdmVkUGF0
aC5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKHJlc29sdmVkUGF0aCwg
U2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRlLCBoYW5kbGUpOworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworICAgIHJldHVybiBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5k
bGVXaXRob3V0UmVzb2x2aW5nUGF0aChyZXNvbHZlZFBhdGgsIFNhbmRib3hFeHRlbnNpb246OlR5
cGU6OlJlYWRXcml0ZSk7CiB9CiAKLVN0cmluZyBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5k
bGVGb3JUZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBUeXBlIHR5cGUsIEhhbmRs
ZSYgaGFuZGxlKQorYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JUZW1wb3Jh
cnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBUeXBlIHR5cGUpIC0+IHN0ZDo6b3B0aW9uYWw8
c3RkOjpwYWlyPEhhbmRsZSwgU3RyaW5nPj4KIHsKKyAgICBIYW5kbGUgaGFuZGxlOwogICAgIEFT
U0VSVCghaGFuZGxlLm1fc2FuZGJveEV4dGVuc2lvbik7CiAgICAgCiAgICAgVmVjdG9yPGNoYXI+
IHBhdGgoUEFUSF9NQVgpOwogICAgIGlmICghY29uZnN0cihfQ1NfREFSV0lOX1VTRVJfVEVNUF9E
SVIsIHBhdGguZGF0YSgpLCBwYXRoLnNpemUoKSkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICAvLyBTaHJpbmsgdGhlIHZl
Y3Rvci4gICAKICAgICBwYXRoLnNocmluayhzdHJsZW4ocGF0aC5kYXRhKCkpKTsKQEAgLTM2MCw4
MyArMzYxLDgzIEBAIFN0cmluZyBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JUZW1w
b3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBUeXBlCiAKICAgICBpZiAoIWhhbmRsZS5t
X3NhbmRib3hFeHRlbnNpb24pIHsKICAgICAgICAgV1RGTG9nQWx3YXlzKCJDb3VsZCBub3QgY3Jl
YXRlIGEgc2FuZGJveCBleHRlbnNpb24gZm9yIHRlbXBvcmFyeSBmaWxlICclcyciLCBwYXRoLmRh
dGEoKSk7Ci0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICB9Ci0gICAgcmV0dXJuIFN0cmluZyhwYXRoLmRhdGEoKSk7CisgICAgcmV0dXJu
IHt7IFdURk1vdmUoaGFuZGxlKSwgU3RyaW5nKHBhdGguZGF0YSgpKSB9fTsKIH0KIAotYm9vbCBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JHZW5lcmljRXh0ZW5zaW9uKEFTQ0lJTGl0
ZXJhbCBleHRlbnNpb25DbGFzcywgSGFuZGxlJiBoYW5kbGUpCithdXRvIFNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZUhhbmRsZUZvckdlbmVyaWNFeHRlbnNpb24oQVNDSUlMaXRlcmFsIGV4dGVuc2lv
bkNsYXNzKSAtPiBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4KIHsKKyAgICBIYW5kbGUgaGFuZGxlOwog
ICAgIEFTU0VSVCghaGFuZGxlLm1fc2FuZGJveEV4dGVuc2lvbik7CiAKICAgICBoYW5kbGUubV9z
YW5kYm94RXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbkltcGw6OmNyZWF0ZShleHRlbnNpb25D
bGFzcy5jaGFyYWN0ZXJzKCksIFR5cGU6OkdlbmVyaWMpOwogICAgIGlmICghaGFuZGxlLm1fc2Fu
ZGJveEV4dGVuc2lvbikgewogICAgICAgICBXVEZMb2dBbHdheXMoIkNvdWxkIG5vdCBjcmVhdGUg
YSAnJXMnIHNhbmRib3ggZXh0ZW5zaW9uIiwgZXh0ZW5zaW9uQ2xhc3MuY2hhcmFjdGVycygpKTsK
LSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IH0KICAgICAKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gV1RGTW92ZShoYW5kbGUpOwog
fQogCi1ib29sIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoQVND
SUlMaXRlcmFsIHNlcnZpY2UsIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gYXVkaXRUb2tl
biwgSGFuZGxlJiBoYW5kbGUsIE9wdGlvblNldDxGbGFncz4gZmxhZ3MpCithdXRvIFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoQVNDSUlMaXRlcmFsIHNlcnZpY2Us
IHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gYXVkaXRUb2tlbiwgT3B0aW9uU2V0PEZsYWdz
PiBmbGFncykgLT4gc3RkOjpvcHRpb25hbDxIYW5kbGU+CiB7CisgICAgSGFuZGxlIGhhbmRsZTsK
ICAgICBBU1NFUlQoIWhhbmRsZS5tX3NhbmRib3hFeHRlbnNpb24pOwogICAgIAogICAgIGhhbmRs
ZS5tX3NhbmRib3hFeHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uSW1wbDo6Y3JlYXRlKHNlcnZp
Y2UuY2hhcmFjdGVycygpLCBUeXBlOjpNYWNoLCBhdWRpdFRva2VuLCBmbGFncyk7CiAgICAgaWYg
KCFoYW5kbGUubV9zYW5kYm94RXh0ZW5zaW9uKSB7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiQ291
bGQgbm90IGNyZWF0ZSBhICclcycgc2FuZGJveCBleHRlbnNpb24iLCBzZXJ2aWNlLmNoYXJhY3Rl
cnMoKSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICB9CiAgICAgCi0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIFdURk1vdmUoaGFu
ZGxlKTsKIH0KIAogU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkgU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAoY29uc3QgVmVjdG9yPEFTQ0lJTGl0ZXJhbD4m
IHNlcnZpY2VzLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IGF1ZGl0VG9rZW4sIE9wdGlv
blNldDxGbGFncz4gZmxhZ3MpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZUhhbmRsZXNGb3JSZXNvdXJj
ZXMoc2VydmljZXMsIEZ1bmN0aW9uPGJvb2woY29uc3QgQVNDSUlMaXRlcmFsJiwgSGFuZGxlJik+
KFthdWRpdFRva2VuLCBmbGFnc10gKGNvbnN0IEFTQ0lJTGl0ZXJhbCYgc2VydmljZSwgSGFuZGxl
JiBoYW5kbGUpIHsKLSAgICAgICAgaWYgKCFTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVG
b3JNYWNoTG9va3VwKHNlcnZpY2UsIGF1ZGl0VG9rZW4sIGhhbmRsZSwgZmxhZ3MpKSB7Ci0gICAg
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgfQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9KSk7CisgICAgcmV0dXJuIGNy
ZWF0ZUhhbmRsZXNGb3JSZXNvdXJjZXM8QVNDSUlMaXRlcmFsPihzZXJ2aWNlcywgW2F1ZGl0VG9r
ZW4sIGZsYWdzXSAoY29uc3QgQVNDSUlMaXRlcmFsJiBzZXJ2aWNlKSAtPiBzdGQ6Om9wdGlvbmFs
PEhhbmRsZT4geworICAgICAgICBhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0
ZUhhbmRsZUZvck1hY2hMb29rdXAoc2VydmljZSwgYXVkaXRUb2tlbiwgZmxhZ3MpOworICAgICAg
ICBBU1NFUlQoaGFuZGxlKTsKKyAgICAgICAgcmV0dXJuIGhhbmRsZTsKKyAgICB9KTsKIH0KIAot
Ym9vbCBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkQnlBdWRpdFRva2VuKGNv
bnN0IFN0cmluZyYgcGF0aCwgYXVkaXRfdG9rZW5fdCBhdWRpdFRva2VuLCBIYW5kbGUmIGhhbmRs
ZSkKK2F1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZEJ5QXVkaXRUb2tl
bihjb25zdCBTdHJpbmcmIHBhdGgsIGF1ZGl0X3Rva2VuX3QgYXVkaXRUb2tlbikgLT4gc3RkOjpv
cHRpb25hbDxIYW5kbGU+CiB7CisgICAgSGFuZGxlIGhhbmRsZTsKICAgICBBU1NFUlQoIWhhbmRs
ZS5tX3NhbmRib3hFeHRlbnNpb24pOwogCiAgICAgaGFuZGxlLm1fc2FuZGJveEV4dGVuc2lvbiA9
IFNhbmRib3hFeHRlbnNpb25JbXBsOjpjcmVhdGUocGF0aC51dGY4KCkuZGF0YSgpLCBUeXBlOjpS
ZWFkQnlQcm9jZXNzLCBhdWRpdFRva2VuKTsKICAgICBpZiAoIWhhbmRsZS5tX3NhbmRib3hFeHRl
bnNpb24pIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIGEgc2FuZGJveCBl
eHRlbnNpb24gZm9yICclcyciLCBwYXRoLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogICAgIAotICAgIHJl
dHVybiB0cnVlOworICAgIHJldHVybiBXVEZNb3ZlKGhhbmRsZSk7CiB9CiAKLWJvb2wgU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9ySU9LaXRDbGFzc0V4dGVuc2lvbihBU0NJSUxpdGVy
YWwgaW9LaXRDbGFzcywgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBhdWRpdFRva2VuLCBI
YW5kbGUmIGhhbmRsZSwgT3B0aW9uU2V0PEZsYWdzPiBmbGFncykKK2F1dG8gU2FuZGJveEV4dGVu
c2lvbjo6Y3JlYXRlSGFuZGxlRm9ySU9LaXRDbGFzc0V4dGVuc2lvbihBU0NJSUxpdGVyYWwgaW9L
aXRDbGFzcywgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBhdWRpdFRva2VuLCBPcHRpb25T
ZXQ8RmxhZ3M+IGZsYWdzKSAtPiBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4KIHsKKyAgICBIYW5kbGUg
aGFuZGxlOwogICAgIEFTU0VSVCghaGFuZGxlLm1fc2FuZGJveEV4dGVuc2lvbik7CiAKICAgICBo
YW5kbGUubV9zYW5kYm94RXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbkltcGw6OmNyZWF0ZShp
b0tpdENsYXNzLmNoYXJhY3RlcnMoKSwgVHlwZTo6SU9LaXQsIGF1ZGl0VG9rZW4pOwogICAgIGlm
ICghaGFuZGxlLm1fc2FuZGJveEV4dGVuc2lvbikgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxk
IG5vdCBjcmVhdGUgYSBzYW5kYm94IGV4dGVuc2lvbiBmb3IgJyVzJyIsIGlvS2l0Q2xhc3MuY2hh
cmFjdGVycygpKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIH0KIAotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBXVEZNb3ZlKGhh
bmRsZSk7CiB9CiAKIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IFNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZUhhbmRsZXNGb3JJT0tpdENsYXNzRXh0ZW5zaW9ucyhjb25zdCBWZWN0b3I8QVND
SUlMaXRlcmFsPiYgaW9raXRDbGFzc2VzLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IGF1
ZGl0VG9rZW4sIE9wdGlvblNldDxGbGFncz4gZmxhZ3MpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZUhh
bmRsZXNGb3JSZXNvdXJjZXMoaW9raXRDbGFzc2VzLCBGdW5jdGlvbjxib29sKGNvbnN0IEFTQ0lJ
TGl0ZXJhbCYsIEhhbmRsZSYpPihbYXVkaXRUb2tlbiwgZmxhZ3NdIChjb25zdCBBU0NJSUxpdGVy
YWwmIGlva2l0Q2xhc3MsIEhhbmRsZSYgaGFuZGxlKSB7Ci0gICAgICAgIGlmICghU2FuZGJveEV4
dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9ySU9LaXRDbGFzc0V4dGVuc2lvbihpb2tpdENsYXNzLCBh
dWRpdFRva2VuLCBoYW5kbGUsIGZsYWdzKSkgewotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgfSkpOworICAgIHJldHVybiBjcmVhdGVIYW5kbGVzRm9yUmVzb3VyY2Vz
PEFTQ0lJTGl0ZXJhbD4oaW9raXRDbGFzc2VzLCBbYXVkaXRUb2tlbiwgZmxhZ3NdIChjb25zdCBB
U0NJSUxpdGVyYWwmIGlva2l0Q2xhc3MpIHsKKyAgICAgICAgYXV0byBoYW5kbGUgPSBTYW5kYm94
RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JJT0tpdENsYXNzRXh0ZW5zaW9uKGlva2l0Q2xhc3Ms
IGF1ZGl0VG9rZW4sIGZsYWdzKTsKKyAgICAgICAgQVNTRVJUKGhhbmRsZSk7CisgICAgICAgIHJl
dHVybiBoYW5kbGU7CisgICAgfSk7CiB9CiAKIFNhbmRib3hFeHRlbnNpb246OlNhbmRib3hFeHRl
bnNpb24oY29uc3QgSGFuZGxlJiBoYW5kbGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9TYW5kYm94RXh0ZW5zaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TYW5kYm94RXh0
ZW5zaW9uLmgKaW5kZXggNjRlYWQ4MjMyOWM2YTFjM2MxMmRmYmI2NWUyYTE1MWQ4NTUwYzYyNS4u
YzM1OWVlYWE0NDA1ODZmYTYxZDNiYzMxZGVmMDY5ZmZjZmE2ZTc3MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvU2FuZGJveEV4dGVuc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaApAQCAtMTEyLDE3ICsxMTIsMTcgQEAgcHVibGljOgog
ICAgIH07CiAgICAgCiAgICAgc3RhdGljIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiBjcmVhdGUo
SGFuZGxlJiYpOwotICAgIHN0YXRpYyBib29sIGNyZWF0ZUhhbmRsZShjb25zdCBTdHJpbmcmIHBh
dGgsIFR5cGUsIEhhbmRsZSYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4gY3Jl
YXRlSGFuZGxlKGNvbnN0IFN0cmluZyYgcGF0aCwgVHlwZSk7CiAgICAgc3RhdGljIFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZUFycmF5IGNyZWF0ZVJlYWRPbmx5SGFuZGxlc0ZvckZpbGVzKEFTQ0lJ
TGl0ZXJhbCBsb2dMYWJlbCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdGhzKTsKLSAgICBzdGF0
aWMgYm9vbCBjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChjb25zdCBTdHJpbmcmIHBh
dGgsIFR5cGUsIEhhbmRsZSYpOwotICAgIHN0YXRpYyBib29sIGNyZWF0ZUhhbmRsZUZvclJlYWRX
cml0ZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIEhhbmRsZSYpOyAvLyBXaWxsIGF0dGVt
cHQgdG8gY3JlYXRlIHRoZSBkaXJlY3RvcnkuCi0gICAgc3RhdGljIFN0cmluZyBjcmVhdGVIYW5k
bGVGb3JUZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBUeXBlLCBIYW5kbGUmKTsK
LSAgICBzdGF0aWMgYm9vbCBjcmVhdGVIYW5kbGVGb3JHZW5lcmljRXh0ZW5zaW9uKEFTQ0lJTGl0
ZXJhbCBleHRlbnNpb25DbGFzcywgSGFuZGxlJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
SGFuZGxlPiBjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChjb25zdCBTdHJpbmcmIHBh
dGgsIFR5cGUpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4gY3JlYXRlSGFuZGxl
Rm9yUmVhZFdyaXRlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCk7IC8vIFdpbGwgYXR0ZW1w
dCB0byBjcmVhdGUgdGhlIGRpcmVjdG9yeS4KKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxzdGQ6
OnBhaXI8SGFuZGxlLCBTdHJpbmc+PiBjcmVhdGVIYW5kbGVGb3JUZW1wb3JhcnlGaWxlKGNvbnN0
IFN0cmluZyYgcHJlZml4LCBUeXBlKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxIYW5kbGU+
IGNyZWF0ZUhhbmRsZUZvckdlbmVyaWNFeHRlbnNpb24oQVNDSUlMaXRlcmFsIGV4dGVuc2lvbkNs
YXNzKTsKICNpZiBIQVZFKEFVRElUX1RPS0VOKQotICAgIHN0YXRpYyBib29sIGNyZWF0ZUhhbmRs
ZUZvck1hY2hMb29rdXAoQVNDSUlMaXRlcmFsIHNlcnZpY2UsIHN0ZDo6b3B0aW9uYWw8YXVkaXRf
dG9rZW5fdD4sIEhhbmRsZSYsIE9wdGlvblNldDxGbGFncz4gPSBGbGFnczo6RGVmYXVsdCk7Cisg
ICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiBjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3Vw
KEFTQ0lJTGl0ZXJhbCBzZXJ2aWNlLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+LCBPcHRp
b25TZXQ8RmxhZ3M+ID0gRmxhZ3M6OkRlZmF1bHQpOwogICAgIHN0YXRpYyBIYW5kbGVBcnJheSBj
cmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cChjb25zdCBWZWN0b3I8QVNDSUlMaXRlcmFsPiYgc2Vy
dmljZXMsIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4sIE9wdGlvblNldDxGbGFncz4gPSBG
bGFnczo6RGVmYXVsdCk7Ci0gICAgc3RhdGljIGJvb2wgY3JlYXRlSGFuZGxlRm9yUmVhZEJ5QXVk
aXRUb2tlbihjb25zdCBTdHJpbmcmIHBhdGgsIGF1ZGl0X3Rva2VuX3QsIEhhbmRsZSYpOwotICAg
IHN0YXRpYyBib29sIGNyZWF0ZUhhbmRsZUZvcklPS2l0Q2xhc3NFeHRlbnNpb24oQVNDSUlMaXRl
cmFsIGlva2l0Q2xhc3MsIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4sIEhhbmRsZSYsIE9w
dGlvblNldDxGbGFncz4gPSBGbGFnczo6RGVmYXVsdCk7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8SGFuZGxlPiBjcmVhdGVIYW5kbGVGb3JSZWFkQnlBdWRpdFRva2VuKGNvbnN0IFN0cmluZyYg
cGF0aCwgYXVkaXRfdG9rZW5fdCk7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiBj
cmVhdGVIYW5kbGVGb3JJT0tpdENsYXNzRXh0ZW5zaW9uKEFTQ0lJTGl0ZXJhbCBpb2tpdENsYXNz
LCBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+LCBPcHRpb25TZXQ8RmxhZ3M+ID0gRmxhZ3M6
OkRlZmF1bHQpOwogICAgIHN0YXRpYyBIYW5kbGVBcnJheSBjcmVhdGVIYW5kbGVzRm9ySU9LaXRD
bGFzc0V4dGVuc2lvbnMoY29uc3QgVmVjdG9yPEFTQ0lJTGl0ZXJhbD4mIGlva2l0Q2xhc3Nlcywg
c3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiwgT3B0aW9uU2V0PEZsYWdzPiA9IEZsYWdzOjpE
ZWZhdWx0KTsKICNlbmRpZgogICAgIH5TYW5kYm94RXh0ZW5zaW9uKCk7CkBAIC0xNjIsMTIgKzE2
MiwxMiBAQCBpbmxpbmUgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlKiBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGVBcnJheTo6ZW5kKCkgY29ucwogaW5saW5lIHZvaWQgU2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlQXJyYXk6OmVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdCB7IH0KIGlubGlu
ZSBhdXRvIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjpkZWNvZGUoSVBDOjpEZWNvZGVy
JikgLT4gc3RkOjpvcHRpb25hbDxIYW5kbGVBcnJheT4geyByZXR1cm4geyBIYW5kbGVBcnJheSgp
IH07IH0KIGlubGluZSBSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gU2FuZGJveEV4dGVuc2lvbjo6
Y3JlYXRlKEhhbmRsZSYmKSB7IHJldHVybiBudWxscHRyOyB9Ci1pbmxpbmUgYm9vbCBTYW5kYm94
RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUoY29uc3QgU3RyaW5nJiwgVHlwZSwgSGFuZGxlJikgeyBy
ZXR1cm4gdHJ1ZTsgfQoraW5saW5lIGF1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
KGNvbnN0IFN0cmluZyYsIFR5cGUpIC0+IHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiB7IHJldHVybiB7
eyB9fTsgfQogaW5saW5lIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IFNhbmRib3hFeHRl
bnNpb246OmNyZWF0ZVJlYWRPbmx5SGFuZGxlc0ZvckZpbGVzKEFTQ0lJTGl0ZXJhbCwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mKSB7IHJldHVybiB7IH07IH0KLWlubGluZSBib29sIFNhbmRib3hFeHRl
bnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKGNvbnN0IFN0cmluZyYsIFR5
cGUsIEhhbmRsZSYpIHsgcmV0dXJuIHRydWU7IH0KLWlubGluZSBib29sIFNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShjb25zdCBTdHJpbmcmLCBIYW5k
bGUmKSB7IHJldHVybiB0cnVlOyB9Ci1pbmxpbmUgU3RyaW5nIFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZUhhbmRsZUZvclRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiAvKnByZWZpeCovLCBUeXBl
LCBIYW5kbGUmKSB7cmV0dXJuIFN0cmluZygpO30KLWlubGluZSBib29sIFNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZUhhbmRsZUZvckdlbmVyaWNFeHRlbnNpb24oQVNDSUlMaXRlcmFsIC8qZXh0ZW5z
aW9uQ2xhc3MqLywgSGFuZGxlJikgeyByZXR1cm4gdHJ1ZTsgfQoraW5saW5lIGF1dG8gU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgoY29uc3QgU3RyaW5n
JiwgVHlwZSkgLT4gc3RkOjpvcHRpb25hbDxIYW5kbGU+IHsgcmV0dXJuIHt7IH19OyB9Citpbmxp
bmUgYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3Rv
cnkoY29uc3QgU3RyaW5nJikgLT4gc3RkOjpvcHRpb25hbDxIYW5kbGU+IHsgcmV0dXJuIHt7IH19
OyB9CitpbmxpbmUgYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JUZW1wb3Jh
cnlGaWxlKGNvbnN0IFN0cmluZyYgLypwcmVmaXgqLywgVHlwZSkgLT4gc3RkOjpvcHRpb25hbDxz
dGQ6OnBhaXI8SGFuZGxlLCBTdHJpbmc+PiB7IHJldHVybiBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFp
cjxIYW5kbGUsIFN0cmluZz4+IHsgc3RkOjpwYWlyPEhhbmRsZSwgU3RyaW5nPiB7IEhhbmRsZSB7
IH0sIFN0cmluZyB7IH0gfSB9OyB9CitpbmxpbmUgYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVh
dGVIYW5kbGVGb3JHZW5lcmljRXh0ZW5zaW9uKEFTQ0lJTGl0ZXJhbCAvKmV4dGVuc2lvbkNsYXNz
Ki8pIC0+IHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiB7IHJldHVybiB7eyB9fTsgfQogaW5saW5lIFNh
bmRib3hFeHRlbnNpb246On5TYW5kYm94RXh0ZW5zaW9uKCkgeyB9CiBpbmxpbmUgYm9vbCBTYW5k
Ym94RXh0ZW5zaW9uOjpyZXZva2UoKSB7IHJldHVybiB0cnVlOyB9CiBpbmxpbmUgYm9vbCBTYW5k
Ym94RXh0ZW5zaW9uOjpjb25zdW1lKCkgeyByZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQppbmRleCBjNzE5MGY4
ZmY2OGFhZmMwZDFjZmMyNzAxNmQ0MGYxNzUxOTQyNDhkLi4zMGY3MjcyYmNkZWU2ZjE3ZWRmZGM4
YzQ2MWJmNzYxYWE0ZGRiNTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQpAQCAtMTc3LDEzICsxNzcsMTEgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmFkZFBsYXRmb3JtTG9hZFBhcmFtZXRlcnMoV2ViUHJvY2Vzc1Byb3h5JiBwcm9j
ZXNzLCBMb2FkUGFyYW0KICAgICAKICNpZiBQTEFURk9STShJT1MpCiAgICAgaWYgKCFwcm9jZXNz
Lmhhc01hbmFnZWRTZXNzaW9uU2FuZGJveEFjY2VzcygpICYmIFtnZXRXZWJGaWx0ZXJFdmFsdWF0
b3JDbGFzcygpIGlzTWFuYWdlZFNlc3Npb25dKSB7Ci0gICAgICAgIFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSBoYW5kbGU7Ci0gICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZv
ck1hY2hMb29rdXAoImNvbS5hcHBsZS51aWtpdC52aWV3c2VydmljZS5jb20uYXBwbGUuV2ViQ29u
dGVudEZpbHRlci5yZW1vdGVVSSJfcywgc3RkOjpudWxsb3B0LCBoYW5kbGUpOwotICAgICAgICBs
b2FkUGFyYW1ldGVycy5jb250ZW50RmlsdGVyRXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZShoYW5k
bGUpOworICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVI
YW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUudWlraXQudmlld3NlcnZpY2UuY29tLmFwcGxl
LldlYkNvbnRlbnRGaWx0ZXIucmVtb3RlVUkiX3MsIHN0ZDo6bnVsbG9wdCkpCisgICAgICAgICAg
ICBsb2FkUGFyYW1ldGVycy5jb250ZW50RmlsdGVyRXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgq
aGFuZGxlKTsKIAotICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgZnJvbnRib2FyZFNl
cnZpY2VFeHRlbnNpb25IYW5kbGU7Ci0gICAgICAgIGlmIChTYW5kYm94RXh0ZW5zaW9uOjpjcmVh
dGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUuZnJvbnRib2FyZC5zeXN0ZW1hcHBzZXJ2
aWNlcyJfcywgc3RkOjpudWxsb3B0LCBmcm9udGJvYXJkU2VydmljZUV4dGVuc2lvbkhhbmRsZSkp
Ci0gICAgICAgICAgICBsb2FkUGFyYW1ldGVycy5mcm9udGJvYXJkU2VydmljZUV4dGVuc2lvbkhh
bmRsZSA9IFdURk1vdmUoZnJvbnRib2FyZFNlcnZpY2VFeHRlbnNpb25IYW5kbGUpOworICAgICAg
ICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNo
TG9va3VwKCJjb20uYXBwbGUuZnJvbnRib2FyZC5zeXN0ZW1hcHBzZXJ2aWNlcyJfcywgc3RkOjpu
dWxsb3B0KSkKKyAgICAgICAgICAgIGxvYWRQYXJhbWV0ZXJzLmZyb250Ym9hcmRTZXJ2aWNlRXh0
ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqaGFuZGxlKTsKIAogICAgICAgICBwcm9jZXNzLm1hcmtI
YXNNYW5hZ2VkU2Vzc2lvblNhbmRib3hBY2Nlc3MoKTsKICAgICB9CkBAIC0xOTksMTAgKzE5Nywx
MSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlU2FuZGJveEV4dGVuc2lvbnNJZk5lZWRlZChj
b25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZXMsCiAgICAgICAgIEJPT0wgaXNEaXJlY3Rvcnk7CiAg
ICAgICAgIGlmIChbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBh
dGg6ZmlsZXNbMF0gaXNEaXJlY3Rvcnk6JmlzRGlyZWN0b3J5XSAmJiAhaXNEaXJlY3RvcnkpIHsK
ICAgICAgICAgICAgIEFTU0VSVChwcm9jZXNzKCkuY29ubmVjdGlvbigpICYmIHByb2Nlc3MoKS5j
b25uZWN0aW9uKCktPmdldEF1ZGl0VG9rZW4oKSk7Ci0gICAgICAgICAgICBpZiAocHJvY2Vzcygp
LmNvbm5lY3Rpb24oKSAmJiBwcm9jZXNzKCkuY29ubmVjdGlvbigpLT5nZXRBdWRpdFRva2VuKCkp
Ci0gICAgICAgICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZEJ5
QXVkaXRUb2tlbigiLyIsICoocHJvY2VzcygpLmNvbm5lY3Rpb24oKS0+Z2V0QXVkaXRUb2tlbigp
KSwgZmlsZVJlYWRIYW5kbGUpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZSgiLyIsIFNhbmRib3hFeHRlbnNpb246OlR5cGU6
OlJlYWRPbmx5LCBmaWxlUmVhZEhhbmRsZSk7CisgICAgICAgICAgICBpZiAocHJvY2VzcygpLmNv
bm5lY3Rpb24oKSAmJiBwcm9jZXNzKCkuY29ubmVjdGlvbigpLT5nZXRBdWRpdFRva2VuKCkpIHsK
KyAgICAgICAgICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVh
dGVIYW5kbGVGb3JSZWFkQnlBdWRpdFRva2VuKCIvIiwgKihwcm9jZXNzKCkuY29ubmVjdGlvbigp
LT5nZXRBdWRpdFRva2VuKCkpKSkKKyAgICAgICAgICAgICAgICAgICAgZmlsZVJlYWRIYW5kbGUg
PSBXVEZNb3ZlKCpoYW5kbGUpOworICAgICAgICAgICAgfSBlbHNlIGlmIChhdXRvIGhhbmRsZSA9
IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZSgiLyIsIFNhbmRib3hFeHRlbnNpb246OlR5
cGU6OlJlYWRPbmx5KSkKKyAgICAgICAgICAgICAgICBmaWxlUmVhZEhhbmRsZSA9IFdURk1vdmUo
KmhhbmRsZSk7CiAgICAgICAgICAgICB3aWxsQWNxdWlyZVVuaXZlcnNhbEZpbGVSZWFkU2FuZGJv
eEV4dGVuc2lvbihtX3Byb2Nlc3MpOwogICAgICAgICB9CiAgICAgfQpAQCAtMjEyLDcgKzIxMSw4
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjcmVhdGVTYW5kYm94RXh0ZW5zaW9uc0lmTmVlZGVkKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlcywKICAgICAgICAgTlNTdHJpbmcgKmZpbGUgPSBmaWxl
c1tpXTsKICAgICAgICAgaWYgKCFbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVF
eGlzdHNBdFBhdGg6ZmlsZV0pCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGZpbGUsIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJl
YWRPbmx5LCBmaWxlVXBsb2FkSGFuZGxlc1tpXSk7CisgICAgICAgIGlmIChhdXRvIGhhbmRsZSA9
IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShmaWxlLCBTYW5kYm94RXh0ZW5zaW9uOjpU
eXBlOjpSZWFkT25seSkpCisgICAgICAgICAgICBmaWxlVXBsb2FkSGFuZGxlc1tpXSA9IFdURk1v
dmUoKmhhbmRsZSk7CiAgICAgfQogfQogCkBAIC02ODUsNyArNjg1LDggQEAgdm9pZCBXZWJQYWdl
UHJveHk6Omxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYKIHZvaWQgV2ViUGFnZVByb3h5OjpncmFudEFjY2Vzc1RvQXNzZXRTZXJ2aWNl
cygpCiB7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIG1vYmlsZUFzc2V0SGFuZGxlVjI7
Ci0gICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFw
cGxlLm1vYmlsZWFzc2V0ZC52MiJfcywgc3RkOjpudWxsb3B0LCBtb2JpbGVBc3NldEhhbmRsZVYy
KTsKKyAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVG
b3JNYWNoTG9va3VwKCJjb20uYXBwbGUubW9iaWxlYXNzZXRkLnYyIl9zLCBzdGQ6Om51bGxvcHQp
KQorICAgICAgICBtb2JpbGVBc3NldEhhbmRsZVYyID0gV1RGTW92ZSgqaGFuZGxlKTsKICAgICBw
cm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6R3JhbnRBY2Nlc3NUb0Fzc2V0U2Vy
dmljZXMobW9iaWxlQXNzZXRIYW5kbGVWMiksIDApOwogfQogCkBAIC03MDIsNyArNzAzLDggQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnN3aXRjaEZyb21TdGF0aWNGb250UmVnaXN0cnlUb1VzZXJGb250
UmVnaXN0cnkoKQogU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIFdlYlBhZ2VQcm94eTo6Zm9udGRN
YWNoRXh0ZW5zaW9uSGFuZGxlKCkKIHsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgZm9u
dE1hY2hFeHRlbnNpb25IYW5kbGU7Ci0gICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
Rm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLmZvbnRzIl9zLCBzdGQ6Om51bGxvcHQsIGZvbnRNYWNo
RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUuZm9udHMiX3MsIHN0ZDo6bnVs
bG9wdCkpCisgICAgICAgIGZvbnRNYWNoRXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqaGFuZGxl
KTsKICAgICByZXR1cm4gZm9udE1hY2hFeHRlbnNpb25IYW5kbGU7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2Eu
bW0KaW5kZXggY2VhZjdmMjg2Nzg4ZjNmNDg5YmI4MzUyZTAyMmU4NjQxNmY4N2MzMS4uZGM4MWIw
OTc4ZDkyYTc5YjhmMTg5ZWI3N2IwYzIwMzU5OWY1MDg3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0KQEAg
LTE3OCw3ICsxNzgsOCBAQCB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZFBh
dGhuYW1lc0ZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aQogICAgICAgICAgICAgICAg
IGF1dG8mIGZpbGVuYW1lID0gcGF0aG5hbWVzW2ldOwogICAgICAgICAgICAgICAgIGlmICghW1tO
U0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmZpbGVuYW1lXSkK
ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgU2FuZGJveEV4
dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGZpbGVuYW1lLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpS
ZWFkT25seSwgc2FuZGJveEV4dGVuc2lvbnNbaV0pOworICAgICAgICAgICAgICAgIGlmIChhdXRv
IGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShmaWxlbmFtZSwgU2FuZGJv
eEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHkpKQorICAgICAgICAgICAgICAgICAgICBzYW5kYm94
RXh0ZW5zaW9uc1tpXSA9IFdURk1vdmUoKmhhbmRsZSk7CiAgICAgICAgICAgICB9CiAjZW5kaWYK
ICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2Vi
UHJvY2Vzc1Bvb2xDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBy
b2Nlc3NQb29sQ29jb2EubW0KaW5kZXggZWE2Zjc1NGIxZDcxMzA2YTI1ODZkZDQ2OTFjNjc2YTQw
OWNkMjQ0ZS4uMWViMjdhOWJlNWU2MGI5YTQ5MmViNDc3MWJkZTk3YzVhZjc5ZTMzOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29h
Lm1tCkBAIC0zMjgsNyArMzI4LDggQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0
aWFsaXplV2ViUHJvY2Vzcyhjb25zdCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MKIAogICAgIC8v
IEZJWE1FOiBUaGlzIHNob3VsZCByZWFsbHkgYmUgY29uZmlndXJhYmxlOyB3ZSBzaG91bGRuJ3Qg
anVzdCBibGluZGx5IGFsbG93IHJlYWQgYWNjZXNzIHRvIHRoZSBVSSBwcm9jZXNzIGJ1bmRsZS4K
ICAgICBwYXJhbWV0ZXJzLnVpUHJvY2Vzc0J1bmRsZVJlc291cmNlUGF0aCA9IG1fcmVzb2x2ZWRQ
YXRocy51aVByb2Nlc3NCdW5kbGVSZXNvdXJjZVBhdGg7Ci0gICAgU2FuZGJveEV4dGVuc2lvbjo6
Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgocGFyYW1ldGVycy51aVByb2Nlc3NCdW5k
bGVSZXNvdXJjZVBhdGgsIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRPbmx5LCBwYXJhbWV0
ZXJzLnVpUHJvY2Vzc0J1bmRsZVJlc291cmNlUGF0aEV4dGVuc2lvbkhhbmRsZSk7CisgICAgaWYg
KGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29s
dmluZ1BhdGgocGFyYW1ldGVycy51aVByb2Nlc3NCdW5kbGVSZXNvdXJjZVBhdGgsIFNhbmRib3hF
eHRlbnNpb246OlR5cGU6OlJlYWRPbmx5KSkKKyAgICAgICAgcGFyYW1ldGVycy51aVByb2Nlc3NC
dW5kbGVSZXNvdXJjZVBhdGhFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKCpoYW5kbGUpOwogCiAg
ICAgcGFyYW1ldGVycy51aVByb2Nlc3NCdW5kbGVJZGVudGlmaWVyID0gYXBwbGljYXRpb25CdW5k
bGVJZGVudGlmaWVyKCk7CiAKQEAgLTMzNiwyMCArMzM3LDI1IEBAIHZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoY29uc3QgV2ViUHJvY2Vzc1Byb3h5JiBw
cm9jZXNzCiAgICAgcGFyYW1ldGVycy50aHJvdWdocHV0UU9TID0gd2ViUHJvY2Vzc1Rocm91Z2hw
dXRRT1MoKTsKICAgICAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGlmICghbV9yZXNv
bHZlZFBhdGhzLmNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChtX3Jlc29sdmVk
UGF0aHMuY29va2llU3RvcmFnZURpcmVjdG9yeSwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVh
ZFdyaXRlLCBwYXJhbWV0ZXJzLmNvb2tpZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUp
OworICAgIGlmICghbV9yZXNvbHZlZFBhdGhzLmNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0
eSgpKSB7CisgICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0
ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKG1fcmVzb2x2ZWRQYXRocy5jb29raWVTdG9yYWdl
RGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUpKQorICAgICAgICAg
ICAgcGFyYW1ldGVycy5jb29raWVTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlID0gV1RG
TW92ZSgqaGFuZGxlKTsKKyAgICB9CiAKLSAgICBpZiAoIW1fcmVzb2x2ZWRQYXRocy5jb250YWlu
ZXJDYWNoZXNEaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChtX3Jlc29sdmVkUGF0aHMuY29udGFpbmVy
Q2FjaGVzRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUsIHBhcmFt
ZXRlcnMuY29udGFpbmVyQ2FjaGVzRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBpZiAo
IW1fcmVzb2x2ZWRQYXRocy5jb250YWluZXJDYWNoZXNEaXJlY3RvcnkuaXNFbXB0eSgpKSB7Cisg
ICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdp
dGhvdXRSZXNvbHZpbmdQYXRoKG1fcmVzb2x2ZWRQYXRocy5jb250YWluZXJDYWNoZXNEaXJlY3Rv
cnksIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0ZSkpCisgICAgICAgICAgICBwYXJh
bWV0ZXJzLmNvbnRhaW5lckNhY2hlc0RpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUo
KmhhbmRsZSk7CisgICAgfQogCi0gICAgaWYgKCFtX3Jlc29sdmVkUGF0aHMuY29udGFpbmVyVGVt
cG9yYXJ5RGlyZWN0b3J5LmlzRW1wdHkoKSkKLSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgobV9yZXNvbHZlZFBhdGhzLmNvbnRhaW5lclRl
bXBvcmFyeURpcmVjdG9yeSwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRlLCBwYXJh
bWV0ZXJzLmNvbnRhaW5lclRlbXBvcmFyeURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CisgICAg
aWYgKCFtX3Jlc29sdmVkUGF0aHMuY29udGFpbmVyVGVtcG9yYXJ5RGlyZWN0b3J5LmlzRW1wdHko
KSkgeworICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVI
YW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChtX3Jlc29sdmVkUGF0aHMuY29udGFpbmVyVGVtcG9y
YXJ5RGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUpKQorICAgICAg
ICAgICAgcGFyYW1ldGVycy5jb250YWluZXJUZW1wb3JhcnlEaXJlY3RvcnlFeHRlbnNpb25IYW5k
bGUgPSBXVEZNb3ZlKCpoYW5kbGUpOworICAgIH0KICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09B
KSAmJiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKICAgICBpZiAoV2ViUHJvY2Vzc1Byb3h5Ojpz
aG91bGRFbmFibGVSZW1vdGVJbnNwZWN0b3IoKSkgewotICAgICAgICBTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGUgZW5hYmxlUmVtb3RlV2ViSW5zcGVjdG9yRXh0ZW5zaW9uSGFuZGxlOwotICAgICAg
ICBpZiAoU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFw
cGxlLndlYmluc3BlY3RvciJfcywgc3RkOjpudWxsb3B0LCBlbmFibGVSZW1vdGVXZWJJbnNwZWN0
b3JFeHRlbnNpb25IYW5kbGUpKQotICAgICAgICAgICAgcGFyYW1ldGVycy5lbmFibGVSZW1vdGVX
ZWJJbnNwZWN0b3JFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKGVuYWJsZVJlbW90ZVdlYkluc3Bl
Y3RvckV4dGVuc2lvbkhhbmRsZSk7CisgICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS53ZWJpbnNwZWN0
b3IiX3MsIHN0ZDo6bnVsbG9wdCkpCisgICAgICAgICAgICBwYXJhbWV0ZXJzLmVuYWJsZVJlbW90
ZVdlYkluc3BlY3RvckV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoKmhhbmRsZSk7CiAgICAgfQog
I2VuZGlmCiAKQEAgLTM5NSw4ICs0MDEsMTAgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZv
cm1Jbml0aWFsaXplV2ViUHJvY2Vzcyhjb25zdCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MKIAog
I2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgLy8gRklYTUU6
IFJlbW92ZSB0aGlzIGFuZCByZWxhdGVkIHBhcmFtZXRlciB3aGVuIDxyZGFyOi8vcHJvYmxlbS8y
OTQ0ODM2OD4gaXMgZml4ZWQuCi0gICAgaWYgKGlzU2FmYXJpICYmIG1lZGlhRGV2aWNlc0VuYWJs
ZWQgJiYgIW1fZGVmYXVsdFBhZ2VHcm91cC0+cHJlZmVyZW5jZXMoKS5jYXB0dXJlQXVkaW9JblVJ
UHJvY2Vzc0VuYWJsZWQoKSAmJiAhbV9kZWZhdWx0UGFnZUdyb3VwLT5wcmVmZXJlbmNlcygpLmNh
cHR1cmVBdWRpb0luR1BVUHJvY2Vzc0VuYWJsZWQoKSkKLSAgICAgICAgU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlSGFuZGxlRm9yR2VuZXJpY0V4dGVuc2lvbigiY29tLmFwcGxlLndlYmtpdC5taWNy
b3Bob25lIl9zLCBwYXJhbWV0ZXJzLmF1ZGlvQ2FwdHVyZUV4dGVuc2lvbkhhbmRsZSk7CisgICAg
aWYgKGlzU2FmYXJpICYmIG1lZGlhRGV2aWNlc0VuYWJsZWQgJiYgIW1fZGVmYXVsdFBhZ2VHcm91
cC0+cHJlZmVyZW5jZXMoKS5jYXB0dXJlQXVkaW9JblVJUHJvY2Vzc0VuYWJsZWQoKSAmJiAhbV9k
ZWZhdWx0UGFnZUdyb3VwLT5wcmVmZXJlbmNlcygpLmNhcHR1cmVBdWRpb0luR1BVUHJvY2Vzc0Vu
YWJsZWQoKSkgeworICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGVIYW5kbGVGb3JHZW5lcmljRXh0ZW5zaW9uKCJjb20uYXBwbGUud2Via2l0Lm1pY3JvcGhv
bmUiX3MpKQorICAgICAgICAgICAgcGFyYW1ldGVycy5hdWRpb0NhcHR1cmVFeHRlbnNpb25IYW5k
bGUgPSBXVEZNb3ZlKCpoYW5kbGUpOworICAgIH0KICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKG1l
ZGlhRGV2aWNlc0VuYWJsZWQpOwogI2VuZGlmCkBAIC00MzIsOSArNDQwLDggQEAgdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyhjb25zdCBXZWJQcm9jZXNz
UHJveHkmIHByb2Nlc3MKICAgICBwYXJhbWV0ZXJzLnN5c3RlbUhhc0FDID0gY2FjaGVkU3lzdGVt
SGFzQUMoKS52YWx1ZV9vcih0cnVlKTsKIAogICAgIGlmIChyZXF1aXJlc0NvbnRhaW5lck1hbmFn
ZXJBY2Nlc3MoKSkgewotICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgaGFuZGxlOwot
ICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20u
YXBwbGUuY29udGFpbmVybWFuYWdlcmQiX3MsIHN0ZDo6bnVsbG9wdCwgaGFuZGxlKTsKLSAgICAg
ICAgcGFyYW1ldGVycy5jb250YWluZXJNYW5hZ2VyRXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSho
YW5kbGUpOworICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVh
dGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUuY29udGFpbmVybWFuYWdlcmQiX3MsIHN0
ZDo6bnVsbG9wdCkpCisgICAgICAgICAgICBwYXJhbWV0ZXJzLmNvbnRhaW5lck1hbmFnZXJFeHRl
bnNpb25IYW5kbGUgPSBXVEZNb3ZlKCpoYW5kbGUpOwogICAgIH0KIAogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCkBAIC00NTMsMTYgKzQ2MCwxNCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0
Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKGNvbnN0IFdlYlByb2Nlc3NQcm94eSYgcHJvY2Vzcwog
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogICAg
IGlmICghX01HQ2FjaGVWYWxpZCgpKSB7Ci0gICAgICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZSBoYW5kbGU7Ci0gICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hM
b29rdXAoImNvbS5hcHBsZS5tb2JpbGVnZXN0YWx0LnhwYyJfcywgc3RkOjpudWxsb3B0LCBoYW5k
bGUpOwotICAgICAgICBwYXJhbWV0ZXJzLm1vYmlsZUdlc3RhbHRFeHRlbnNpb25IYW5kbGUgPSBX
VEZNb3ZlKGhhbmRsZSk7CisgICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5tb2JpbGVnZXN0YWx0Lnhw
YyJfcywgc3RkOjpudWxsb3B0KSkKKyAgICAgICAgICAgIHBhcmFtZXRlcnMubW9iaWxlR2VzdGFs
dEV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoKmhhbmRsZSk7CiAgICAgfQogI2VuZGlmCiAKICNp
ZiBQTEFURk9STShNQUMpCi0gICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGxhdW5jaFNlcnZp
Y2VzRXh0ZW5zaW9uSGFuZGxlOwotICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZv
ck1hY2hMb29rdXAoImNvbS5hcHBsZS5jb3Jlc2VydmljZXMubGF1bmNoc2VydmljZXNkIl9zLCBz
dGQ6Om51bGxvcHQsIGxhdW5jaFNlcnZpY2VzRXh0ZW5zaW9uSGFuZGxlKTsKLSAgICBwYXJhbWV0
ZXJzLmxhdW5jaFNlcnZpY2VzRXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZShsYXVuY2hTZXJ2aWNl
c0V4dGVuc2lvbkhhbmRsZSk7CisgICAgaWYgKGF1dG8gbGF1bmNoU2VydmljZXNFeHRlbnNpb25I
YW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20u
YXBwbGUuY29yZXNlcnZpY2VzLmxhdW5jaHNlcnZpY2VzZCJfcywgc3RkOjpudWxsb3B0KSkKKyAg
ICAgICAgcGFyYW1ldGVycy5sYXVuY2hTZXJ2aWNlc0V4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUo
KmxhdW5jaFNlcnZpY2VzRXh0ZW5zaW9uSGFuZGxlKTsKICNlbmRpZgogCiAjaWYgSEFWRShWSURF
T19SRVNUUklDVEVEX0RFQ09ESU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
RG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwCmluZGV4IGM2MWJiM2ZkMmVlMDQ2ZjM4MjRjNDBh
Yjk5MTgxYzBmY2VlMmExOTcuLmNmYmU3NjI4YzI4YzlmOGY0MjU4M2FkOTcxOTc2OTVlMDU2NjQ1
OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWRQcm94eS5jcHAKQEAgLTEwNyw4ICsxMDcsMTEgQEAgdm9pZCBEb3dubG9hZFByb3h5OjpwdWJs
aXNoUHJvZ3Jlc3MoY29uc3QgVVJMJiBVUkwpCiAgICAgICAgIHJldHVybjsKIAogICAgIFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSBoYW5kbGU7Ci0gICAgYm9vbCBjcmVhdGVkU2FuZGJveEV4dGVu
c2lvbiA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShVUkwuZmlsZVN5c3RlbVBhdGgo
KSwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRlLCBoYW5kbGUpOwotICAgIEFTU0VS
VF9VTlVTRUQoY3JlYXRlZFNhbmRib3hFeHRlbnNpb24sIGNyZWF0ZWRTYW5kYm94RXh0ZW5zaW9u
KTsKKyAgICBpZiAoYXV0byBjcmVhdGVkSGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRl
SGFuZGxlKFVSTC5maWxlU3lzdGVtUGF0aCgpLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFk
V3JpdGUpKQorICAgICAgICBoYW5kbGUgPSBXVEZNb3ZlKCpjcmVhdGVkSGFuZGxlKTsKKyAgICBl
bHNlCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworCiAgICAgbV9kYXRhU3RvcmUtPm5l
dHdvcmtQcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlB1Ymxpc2hEb3du
bG9hZFByb2dyZXNzKG1fZG93bmxvYWRJRCwgVVJMLCBoYW5kbGUpLCAwKTsKIH0KICNlbmRpZiAv
LyBQTEFURk9STShDT0NPQSkKQEAgLTE2Myw4ICsxNjYsMTAgQEAgdm9pZCBEb3dubG9hZFByb3h5
OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShjb25zdCBXZWJDb3JlOjpS
ZXNvdXIKIAogICAgIG1fY2xpZW50LT5kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxl
bmFtZSgqdGhpcywgcmVzcG9uc2UsIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzYW5pdGl6ZVN1Z2dl
c3RlZEZpbGVuYW1lKHN1Z2dlc3RlZEZpbGVuYW1lKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0gKEFsbG93T3ZlcndyaXRlIGFsbG93T3ZlcndyaXRlLCBTdHJpbmcgZGVzdGluYXRpb24p
IG11dGFibGUgewogICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVu
c2lvbkhhbmRsZTsKLSAgICAgICAgaWYgKCFkZXN0aW5hdGlvbi5pc051bGwoKSkKLSAgICAgICAg
ICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShkZXN0aW5hdGlvbiwgU2FuZGJveEV4
dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRlLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICAg
ICAgaWYgKCFkZXN0aW5hdGlvbi5pc051bGwoKSkgeworICAgICAgICAgICAgaWYgKGF1dG8gaGFu
ZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGRlc3RpbmF0aW9uLCBTYW5kYm94
RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUpKQorICAgICAgICAgICAgICAgIHNhbmRib3hFeHRl
bnNpb25IYW5kbGUgPSBXVEZNb3ZlKCpoYW5kbGUpOworICAgICAgICB9CiAKICAgICAgICAgc2V0
RGVzdGluYXRpb25GaWxlbmFtZShkZXN0aW5hdGlvbik7CiAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKGRlc3RpbmF0aW9uLCBXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25IYW5kbGUpLCBhbGxvd092
ZXJ3cml0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJv
Y2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJv
eHkuY3BwCmluZGV4IGU3YWE1OGIyZmM1ZmEyZDZjMTIzOWJiOGJjZTUyMmYwMDA1M2Y5ODUuLjcx
NWU3ZjAzMDJhZTE5ZjQxYzA1YWZlMDJhMzZmOWQxNGQ5NDVkNjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuY3BwCkBAIC0xNDMsNyArMTQzLDgg
QEAgR1BVUHJvY2Vzc1Byb3h5OjpHUFVQcm9jZXNzUHJveHkoKQogI2lmIFBMQVRGT1JNKE1BQykK
ICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgYW5kIHJlbGF0ZWQgcGFyYW1ldGVyIHdoZW4gPHJk
YXI6Ly9wcm9ibGVtLzI5NDQ4MzY4PiBpcyBmaXhlZC4KICAgICBpZiAoTWFjQXBwbGljYXRpb246
OmlzU2FmYXJpKCkpIHsKLSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9y
R2VuZXJpY0V4dGVuc2lvbigiY29tLmFwcGxlLndlYmtpdC5taWNyb3Bob25lIl9zLCBwYXJhbWV0
ZXJzLm1pY3JvcGhvbmVTYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICAgICAgaWYgKGF1dG8g
aGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yR2VuZXJpY0V4dGVuc2lv
bigiY29tLmFwcGxlLndlYmtpdC5taWNyb3Bob25lIl9zKSkKKyAgICAgICAgICAgIHBhcmFtZXRl
cnMubWljcm9waG9uZVNhbmRib3hFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKCpoYW5kbGUpOwog
ICAgICAgICBtX2hhc1NlbnRNaWNyb3Bob25lU2FuZGJveEV4dGVuc2lvbiA9IHRydWU7CiAgICAg
fQogI2VuZGlmCkBAIC0xNTUsMTEgKzE1NiwxNSBAQCBHUFVQcm9jZXNzUHJveHk6OkdQVVByb2Nl
c3NQcm94eSgpCiAgICAgYXV0byBjb250YWluZXJDYWNoZXNEaXJlY3RvcnkgPSByZXNvbHZlQW5k
Q3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihncHVQcm9jZXNzQ2Fj
aGVzRGlyZWN0b3J5KCkpOwogICAgIGF1dG8gY29udGFpbmVyVGVtcG9yYXJ5RGlyZWN0b3J5ID0g
cmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24oV2Vi
UHJvY2Vzc1Bvb2w6OmNvbnRhaW5lclRlbXBvcmFyeURpcmVjdG9yeSgpKTsKIAotICAgIGlmICgh
Y29udGFpbmVyQ2FjaGVzRGlyZWN0b3J5LmlzRW1wdHkoKSkKLSAgICAgICAgU2FuZGJveEV4dGVu
c2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgoY29udGFpbmVyQ2FjaGVzRGly
ZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUsIHBhcmFtZXRlcnMuY29u
dGFpbmVyQ2FjaGVzRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBpZiAoIWNvbnRhaW5l
ckNhY2hlc0RpcmVjdG9yeS5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKGF1dG8gaGFuZGxlID0g
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgoY29udGFp
bmVyQ2FjaGVzRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUpKQor
ICAgICAgICAgICAgcGFyYW1ldGVycy5jb250YWluZXJDYWNoZXNEaXJlY3RvcnlFeHRlbnNpb25I
YW5kbGUgPSBXVEZNb3ZlKCpoYW5kbGUpOworICAgIH0KIAotICAgIGlmICghY29udGFpbmVyVGVt
cG9yYXJ5RGlyZWN0b3J5LmlzRW1wdHkoKSkKLSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgoY29udGFpbmVyVGVtcG9yYXJ5RGlyZWN0b3J5
LCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUsIHBhcmFtZXRlcnMuY29udGFpbmVy
VGVtcG9yYXJ5RGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBpZiAoIWNvbnRhaW5lclRl
bXBvcmFyeURpcmVjdG9yeS5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKGF1dG8gaGFuZGxlID0g
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgoY29udGFp
bmVyVGVtcG9yYXJ5RGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUp
KQorICAgICAgICAgICAgcGFyYW1ldGVycy5jb250YWluZXJUZW1wb3JhcnlEaXJlY3RvcnlFeHRl
bnNpb25IYW5kbGUgPSBXVEZNb3ZlKCpoYW5kbGUpOworICAgIH0KICNlbmRpZgogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgaWYgKFdlYkNvcmU6OmRldmljZUhhc0FHWENvbXBpbGVyU2Vy
dmljZSgpKSB7CkBAIC0xOTksNTQgKzIwNCw1NCBAQCB2b2lkIEdQVVByb2Nlc3NQcm94eTo6c2V0
T3JpZW50YXRpb25Gb3JNZWRpYUNhcHR1cmUodWludDY0X3Qgb3JpZW50YXRpb24pCiAKIHN0YXRp
YyBpbmxpbmUgYm9vbCBhZGRDYW1lcmFTYW5kYm94RXh0ZW5zaW9ucyhWZWN0b3I8U2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlPiYgZXh0ZW5zaW9ucykKIHsKLSAgICBTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZTsKLSAgICBpZiAoIVNhbmRib3hFeHRlbnNpb246
OmNyZWF0ZUhhbmRsZUZvckdlbmVyaWNFeHRlbnNpb24oImNvbS5hcHBsZS53ZWJraXQuY2FtZXJh
Il9zLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSkgeworICAgIGF1dG8gc2FuZGJveEV4dGVuc2lv
bkhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvckdlbmVyaWNFeHRlbnNp
b24oImNvbS5hcHBsZS53ZWJraXQuY2FtZXJhIl9zKTsKKyAgICBpZiAoIXNhbmRib3hFeHRlbnNp
b25IYW5kbGUpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoV2ViUlRDLCAiVW5hYmxlIHRv
IGNyZWF0ZSBjb20uYXBwbGUud2Via2l0LmNhbWVyYSBzYW5kYm94IGV4dGVuc2lvbiIpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogI2lmIEhBVkUoQVVESVRfVE9LRU4pCiAgICAgICAg
IGlmIChzaG91bGRDcmVhdGVBcHBsZUNhbWVyYVNlcnZpY2VTYW5kYm94RXh0ZW5zaW9uKCkpIHsK
LSAgICAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBhcHBsZUNhbWVyYVNlcnZpY2VQ
YXRoU2FuZGJveEV4dGVuc2lvbkhhbmRsZTsKLSAgICAgICAgICAgIGlmICghU2FuZGJveEV4dGVu
c2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLmFwcGxlY2FtZXJhZCJf
cywgc3RkOjpudWxsb3B0LCBhcHBsZUNhbWVyYVNlcnZpY2VQYXRoU2FuZGJveEV4dGVuc2lvbkhh
bmRsZSkpIHsKKyAgICAgICAgICAgIGF1dG8gYXBwbGVDYW1lcmFTZXJ2aWNlUGF0aFNhbmRib3hF
eHRlbnNpb25IYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9v
a3VwKCJjb20uYXBwbGUuYXBwbGVjYW1lcmFkIl9zLCBzdGQ6Om51bGxvcHQpOworICAgICAgICAg
ICAgaWYgKCFhcHBsZUNhbWVyYVNlcnZpY2VQYXRoU2FuZGJveEV4dGVuc2lvbkhhbmRsZSkgewog
ICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFdlYlJUQywgIlVuYWJsZSB0byBjcmVh
dGUgY29tLmFwcGxlLmFwcGxlY2FtZXJhZCBzYW5kYm94IGV4dGVuc2lvbiIpOwogICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICNpZiBIQVZFKEFERElUSU9OQUxf
QVBQTEVfQ0FNRVJBX1NFUlZJQ0UpCi0gICAgICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUgYWRkaXRpb25hbEFwcGxlQ2FtZXJhU2VydmljZVBhdGhTYW5kYm94RXh0ZW5zaW9uSGFuZGxl
OwotICAgICAgICAgICAgaWYgKCFTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNo
TG9va3VwKCJjb20uYXBwbGUuYXBwbGVoMTNjYW1lcmFkIl9zLCBzdGQ6Om51bGxvcHQsIGFkZGl0
aW9uYWxBcHBsZUNhbWVyYVNlcnZpY2VQYXRoU2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpIHsKKyAg
ICAgICAgICAgIGF1dG8gYWRkaXRpb25hbEFwcGxlQ2FtZXJhU2VydmljZVBhdGhTYW5kYm94RXh0
ZW5zaW9uSGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1
cCgiY29tLmFwcGxlLmFwcGxlaDEzY2FtZXJhZCJfcywgc3RkOjpudWxsb3B0KTsKKyAgICAgICAg
ICAgIGlmICghYWRkaXRpb25hbEFwcGxlQ2FtZXJhU2VydmljZVBhdGhTYW5kYm94RXh0ZW5zaW9u
SGFuZGxlKSB7CiAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoV2ViUlRDLCAiVW5h
YmxlIHRvIGNyZWF0ZSBjb20uYXBwbGUuYXBwbGVoMTNjYW1lcmFkIHNhbmRib3ggZXh0ZW5zaW9u
Iik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQotICAgICAg
ICAgICAgZXh0ZW5zaW9ucy5hcHBlbmQoV1RGTW92ZShhZGRpdGlvbmFsQXBwbGVDYW1lcmFTZXJ2
aWNlUGF0aFNhbmRib3hFeHRlbnNpb25IYW5kbGUpKTsKKyAgICAgICAgICAgIGV4dGVuc2lvbnMu
YXBwZW5kKFdURk1vdmUoKmFkZGl0aW9uYWxBcHBsZUNhbWVyYVNlcnZpY2VQYXRoU2FuZGJveEV4
dGVuc2lvbkhhbmRsZSkpOwogI2VuZGlmCi0gICAgICAgICAgICBleHRlbnNpb25zLmFwcGVuZChX
VEZNb3ZlKGFwcGxlQ2FtZXJhU2VydmljZVBhdGhTYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSk7Cisg
ICAgICAgICAgICBleHRlbnNpb25zLmFwcGVuZChXVEZNb3ZlKCphcHBsZUNhbWVyYVNlcnZpY2VQ
YXRoU2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOwogICAgICAgICB9CiAjZW5kaWYgLy8gSEFWRShB
VURJVF9UT0tFTikKIAotICAgIGV4dGVuc2lvbnMuYXBwZW5kKFdURk1vdmUoc2FuZGJveEV4dGVu
c2lvbkhhbmRsZSkpOworICAgIGV4dGVuc2lvbnMuYXBwZW5kKFdURk1vdmUoKnNhbmRib3hFeHRl
bnNpb25IYW5kbGUpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGlubGluZSBib29s
IGFkZE1pY3JvcGhvbmVTYW5kYm94RXh0ZW5zaW9uKFZlY3RvcjxTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGU+JiBleHRlbnNpb25zKQogewotICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5k
Ym94RXh0ZW5zaW9uSGFuZGxlOwotICAgIGlmICghU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFu
ZGxlRm9yR2VuZXJpY0V4dGVuc2lvbigiY29tLmFwcGxlLndlYmtpdC5taWNyb3Bob25lIl9zLCBz
YW5kYm94RXh0ZW5zaW9uSGFuZGxlKSkgeworICAgIGF1dG8gc2FuZGJveEV4dGVuc2lvbkhhbmRs
ZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvckdlbmVyaWNFeHRlbnNpb24oImNv
bS5hcHBsZS53ZWJraXQubWljcm9waG9uZSJfcyk7CisgICAgaWYgKCFzYW5kYm94RXh0ZW5zaW9u
SGFuZGxlKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFdlYlJUQywgIlVuYWJsZSB0byBj
cmVhdGUgY29tLmFwcGxlLndlYmtpdC5taWNyb3Bob25lIHNhbmRib3ggZXh0ZW5zaW9uIik7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgZXh0ZW5zaW9ucy5hcHBlbmQoV1RGTW92
ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSk7CisgICAgZXh0ZW5zaW9ucy5hcHBlbmQoV1RGTW92
ZSgqc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOwogICAgIHJldHVybiB0cnVlOwogfQogCiAjaWYg
UExBVEZPUk0oSU9TKQogc3RhdGljIGlubGluZSBib29sIGFkZFRDQ0RTYW5kYm94RXh0ZW5zaW9u
KFZlY3RvcjxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+JiBleHRlbnNpb25zKQogewotICAgIFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlOwotICAgIGlmICgh
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLnRj
Y2QiX3MsIHN0ZDo6bnVsbG9wdCwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpIHsKKyAgICBhdXRv
IGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNv
bS5hcHBsZS50Y2NkIl9zLCBzdGQ6Om51bGxvcHQpOworICAgIGlmICghaGFuZGxlKSB7CiAgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SKFdlYlJUQywgIlVuYWJsZSB0byBjcmVhdGUgY29tLmFwcGxl
LnRjY2Qgc2FuZGJveCBleHRlbnNpb24iKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
LSAgICBleHRlbnNpb25zLmFwcGVuZChXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25IYW5kbGUpKTsK
KyAgICBleHRlbnNpb25zLmFwcGVuZChXVEZNb3ZlKCpoYW5kbGUpKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KICNlbmRpZgpAQCAtNDU0LDE0ICs0NTksMTggQEAgc3RhdGljIGlubGluZSBHUFVQcm9j
ZXNzU2Vzc2lvblBhcmFtZXRlcnMgZ3B1UHJvY2Vzc1Nlc3Npb25QYXJhbWV0ZXJzKGNvbnN0IFdl
YnMKIAogICAgIHBhcmFtZXRlcnMubWVkaWFDYWNoZURpcmVjdG9yeSA9IHN0b3JlLnJlc29sdmVk
TWVkaWFDYWNoZURpcmVjdG9yeSgpOwogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBtZWRp
YUNhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwotICAgIGlmICghcGFyYW1ldGVycy5tZWRp
YUNhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSkKLSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgocGFyYW1ldGVycy5tZWRpYUNhY2hlRGlyZWN0
b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUsIHBhcmFtZXRlcnMubWVkaWFD
YWNoZURpcmVjdG9yeVNhbmRib3hFeHRlbnNpb25IYW5kbGUpOworICAgIGlmICghcGFyYW1ldGVy
cy5tZWRpYUNhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoYXV0byBoYW5k
bGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChw
YXJhbWV0ZXJzLm1lZGlhQ2FjaGVEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJl
YWRXcml0ZSkpCisgICAgICAgICAgICBwYXJhbWV0ZXJzLm1lZGlhQ2FjaGVEaXJlY3RvcnlTYW5k
Ym94RXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqaGFuZGxlKTsKKyAgICB9CiAKICNpZiBFTkFC
TEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKICAgICBwYXJhbWV0ZXJzLm1lZGlhS2V5c1N0b3Jh
Z2VEaXJlY3RvcnkgPSBzdG9yZS5yZXNvbHZlZE1lZGlhS2V5c0RpcmVjdG9yeSgpOwogICAgIFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZSBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5U2FuZGJveEV4
dGVuc2lvbkhhbmRsZTsKLSAgICBpZiAoIXBhcmFtZXRlcnMubWVkaWFLZXlzU3RvcmFnZURpcmVj
dG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdp
dGhvdXRSZXNvbHZpbmdQYXRoKHBhcmFtZXRlcnMubWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSwg
U2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRlLCBwYXJhbWV0ZXJzLm1lZGlhS2V5c1N0
b3JhZ2VEaXJlY3RvcnlTYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBpZiAoIXBhcmFtZXRl
cnMubWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKGF1
dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmlu
Z1BhdGgocGFyYW1ldGVycy5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5z
aW9uOjpUeXBlOjpSZWFkV3JpdGUpKQorICAgICAgICAgICAgcGFyYW1ldGVycy5tZWRpYUtleXNT
dG9yYWdlRGlyZWN0b3J5U2FuZGJveEV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoKmhhbmRsZSk7
CisgICAgfQogI2VuZGlmCiAKICAgICByZXR1cm4gcGFyYW1ldGVyczsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmlu
ZGV4IDM3MWJiZGEwZTZiNDY2YzBlNjYyNmU1ZDUwNmZhY2M3YjI3ZWZkNGMuLjdlNzBjNjNhMjM4
NjkzMzQzMWUwYmY3M2IzYzdmYzgyMmZhN2I4OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTUwLDEz
ICsxNTAsMjAgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZW5kQ3JlYXRpb25QYXJhbWV0
ZXJzVG9OZXdQcm9jZXNzKCkKICAgICBmb3IgKGF1dG8mIHNjaGVtZSA6IFdlYlByb2Nlc3NQb29s
Ojp1cmxTY2hlbWVzV2l0aEN1c3RvbVByb3RvY29sSGFuZGxlcnMoKSkKICAgICAgICAgcGFyYW1l
dGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29scy5hcHBlbmQoc2NoZW1l
KTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGlmIChTdHJpbmcgY29va2llU3RvcmFn
ZURpcmVjdG9yeSA9IFdlYlByb2Nlc3NQb29sOjpjb29raWVTdG9yYWdlRGlyZWN0b3J5KCk7ICFj
b29raWVTdG9yYWdlRGlyZWN0b3J5LmlzRW1wdHkoKSkKLSAgICAgICAgU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KGNvb2tpZVN0b3JhZ2VEaXJlY3Rv
cnksIHBhcmFtZXRlcnMuY29va2llU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7Ci0g
ICAgaWYgKFN0cmluZyBjb250YWluZXJDYWNoZXNEaXJlY3RvcnkgPSBXZWJQcm9jZXNzUG9vbDo6
bmV0d29ya2luZ0NhY2hlc0RpcmVjdG9yeSgpOyAhY29udGFpbmVyQ2FjaGVzRGlyZWN0b3J5Lmlz
RW1wdHkoKSkKLSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdy
aXRlRGlyZWN0b3J5KGNvbnRhaW5lckNhY2hlc0RpcmVjdG9yeSwgcGFyYW1ldGVycy5jb250YWlu
ZXJDYWNoZXNEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwotICAgIGlmIChTdHJpbmcgcGFyZW50
QnVuZGxlRGlyZWN0b3J5ID0gV2ViUHJvY2Vzc1Bvb2w6OnBhcmVudEJ1bmRsZURpcmVjdG9yeSgp
OyAhcGFyZW50QnVuZGxlRGlyZWN0b3J5LmlzRW1wdHkoKSkKLSAgICAgICAgU2FuZGJveEV4dGVu
c2lvbjo6Y3JlYXRlSGFuZGxlKHBhcmVudEJ1bmRsZURpcmVjdG9yeSwgU2FuZGJveEV4dGVuc2lv
bjo6VHlwZTo6UmVhZE9ubHksIHBhcmFtZXRlcnMucGFyZW50QnVuZGxlRGlyZWN0b3J5RXh0ZW5z
aW9uSGFuZGxlKTsKLSAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JUZW1wb3Jh
cnlGaWxlKGVtcHR5U3RyaW5nKCksIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0ZSwg
cGFyYW1ldGVycy50ZW1wRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBpZiAoU3RyaW5n
IGNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkgPSBXZWJQcm9jZXNzUG9vbDo6Y29va2llU3RvcmFnZURp
cmVjdG9yeSgpOyAhY29va2llU3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpIHsKKyAgICAgICAg
aWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdy
aXRlRGlyZWN0b3J5KGNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkpKQorICAgICAgICAgICAgcGFyYW1l
dGVycy5jb29raWVTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqaGFu
ZGxlKTsKKyAgICB9CisgICAgaWYgKFN0cmluZyBjb250YWluZXJDYWNoZXNEaXJlY3RvcnkgPSBX
ZWJQcm9jZXNzUG9vbDo6bmV0d29ya2luZ0NhY2hlc0RpcmVjdG9yeSgpOyAhY29udGFpbmVyQ2Fj
aGVzRGlyZWN0b3J5LmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkoY29udGFpbmVy
Q2FjaGVzRGlyZWN0b3J5KSkKKyAgICAgICAgICAgIHBhcmFtZXRlcnMuY29udGFpbmVyQ2FjaGVz
RGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqaGFuZGxlKTsKKyAgICB9CisgICAg
aWYgKFN0cmluZyBwYXJlbnRCdW5kbGVEaXJlY3RvcnkgPSBXZWJQcm9jZXNzUG9vbDo6cGFyZW50
QnVuZGxlRGlyZWN0b3J5KCk7ICFwYXJlbnRCdW5kbGVEaXJlY3RvcnkuaXNFbXB0eSgpKSB7Cisg
ICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShw
YXJlbnRCdW5kbGVEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRPbmx5KSkK
KyAgICAgICAgICAgIHBhcmFtZXRlcnMucGFyZW50QnVuZGxlRGlyZWN0b3J5RXh0ZW5zaW9uSGFu
ZGxlID0gV1RGTW92ZSgqaGFuZGxlKTsKKyAgICB9CisgICAgaWYgKGF1dG8gaGFuZGxlQW5kRmls
ZVBhdGggPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JUZW1wb3JhcnlGaWxlKGVt
cHR5U3RyaW5nKCksIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0ZSkpCisgICAgICAg
IHBhcmFtZXRlcnMudGVtcERpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoaGFuZGxl
QW5kRmlsZVBhdGgtPmZpcnN0KTsKICNlbmRpZgogCiAjaWYgIVBMQVRGT1JNKEdUSykgJiYgIVBM
QVRGT1JNKFdQRSkgLy8gR1RLIGFuZCBXUEUgZG9uJ3QgdXNlIGRlZmF1bHROZXR3b3JrUHJvY2Vz
cwpAQCAtMTMwMSw4ICsxMzA4LDEwIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmV0cmll
dmVDYWNoZVN0b3JhZ2VQYXJhbWV0ZXJzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JCiAKICAgICBh
dXRvJiBjYWNoZVN0b3JhZ2VEaXJlY3RvcnkgPSBzdG9yZS0+Y29uZmlndXJhdGlvbigpLmNhY2hl
U3RvcmFnZURpcmVjdG9yeSgpOwogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBjYWNoZVN0
b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7Ci0gICAgaWYgKCFjYWNoZVN0b3JhZ2VEaXJl
Y3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVG
b3JSZWFkV3JpdGVEaXJlY3RvcnkoY2FjaGVTdG9yYWdlRGlyZWN0b3J5LCBjYWNoZVN0b3JhZ2VE
aXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOworICAgIGlmICghY2FjaGVTdG9yYWdlRGlyZWN0b3J5
LmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkoY2FjaGVTdG9yYWdlRGlyZWN0b3J5
KSkKKyAgICAgICAgICAgIGNhY2hlU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSA9IFdU
Rk1vdmUoKmhhbmRsZSk7CisgICAgfQogCiAgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nl
c3M6OlNldENhY2hlU3RvcmFnZVBhcmFtZXRlcnMgeyBzZXNzaW9uSUQsIGNhY2hlU3RvcmFnZURp
cmVjdG9yeSwgY2FjaGVTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlIH0sIDApOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25SZW1v
dGVSZWFsdGltZU1lZGlhU291cmNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyLmNwcApp
bmRleCBjZjZmZTQyM2Q3OGI3NjI5YjdmOTlkNWMxZmJlZGJjMTVjYWJjYjFkLi5iYzBjNzA4YTg2
NDdiM2I2ZWIwNWMwMWFjMTJhMDdjZjhjODIwN2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5h
Z2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblJl
bW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyLmNwcApAQCAtNDksOSArNDksMTEgQEAgdm9p
ZCBTcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyOjphZGRT
b3VyY2UoU3BlZWNoUmVjb2duaXQKICAgICAgICAgbV9zb3VyY2VzTmVlZGluZ1NhbmRib3hFeHRl
bnNpb24uYWRkKGlkZW50aWZpZXIpOwogICAgICAgICBpZiAobV9zb3VyY2VzTmVlZGluZ1NhbmRi
b3hFeHRlbnNpb24uc2l6ZSgpID09IDEpIHsKICAgICAgICAgICAgIFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSBoYW5kbGVGb3JUQ0NEOwotICAgICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLnRjY2QiX3MsIG1fY29ubmVjdGlvbi0+
Z2V0QXVkaXRUb2tlbigpLCBoYW5kbGVGb3JUQ0NEKTsKKyAgICAgICAgICAgIGlmIChhdXRvIGhh
bmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5h
cHBsZS50Y2NkIl9zLCBtX2Nvbm5lY3Rpb24tPmdldEF1ZGl0VG9rZW4oKSkpCisgICAgICAgICAg
ICAgICAgaGFuZGxlRm9yVENDRCA9IFdURk1vdmUoKmhhbmRsZSk7CiAgICAgICAgICAgICBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUgaGFuZGxlRm9yTWljcm9waG9uZTsKLSAgICAgICAgICAgIFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvckdlbmVyaWNFeHRlbnNpb24oImNvbS5hcHBs
ZS53ZWJraXQubWljcm9waG9uZSJfcywgaGFuZGxlRm9yTWljcm9waG9uZSk7CisgICAgICAgICAg
ICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JHZW5l
cmljRXh0ZW5zaW9uKCJjb20uYXBwbGUud2Via2l0Lm1pY3JvcGhvbmUiX3MpKQorICAgICAgICAg
ICAgICAgIGhhbmRsZUZvck1pY3JvcGhvbmUgPSBXVEZNb3ZlKCpoYW5kbGUpOwogICAgICAgICAg
ICAgc2VuZChNZXNzYWdlczo6U3BlZWNoUmVjb2duaXRpb25SZWFsdGltZU1lZGlhU291cmNlTWFu
YWdlcjo6R3JhbnRTYW5kYm94RXh0ZW5zaW9ucyhoYW5kbGVGb3JUQ0NELCBoYW5kbGVGb3JNaWNy
b3Bob25lKSk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94
eS5jcHAKaW5kZXggYmY2NWQzNjQ2NDJiNTZmZjhlM2Y0YjdiZTllMjkzNGQ5NDQwNDU0MS4uOTBk
OGFlNjlkNTI2OWZlNDk1MjcyMGFhNzc1MmVlNDAzYzE5NTUwNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlclByb3h5LmNwcApAQCAtMjkyLDcgKzI5Miw4IEBAIHZvaWQgVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmZpbmlzaEdyYW50aW5nUmVxdWVzdChVc2VyTWVk
aWFQZXJtCiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBoYW5kbGU7CiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgICAgIGlmICghbV9oYXNDcmVhdGVkU2FuZGJveEV4dGVuc2lvbkZv
clRDQ0QgJiYgZG9lc1BhZ2VOZWVkVENDRChtX3BhZ2UpKSB7Ci0gICAgICAgICAgICBTYW5kYm94
RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUudGNjZCJfcywg
bV9wYWdlLnByb2Nlc3MoKS5jb25uZWN0aW9uKCktPmdldEF1ZGl0VG9rZW4oKSwgaGFuZGxlKTsK
KyAgICAgICAgICAgIGlmIChhdXRvIGNyZWF0ZWRIYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUudGNjZCJfcywgbV9wYWdlLnByb2Nl
c3MoKS5jb25uZWN0aW9uKCktPmdldEF1ZGl0VG9rZW4oKSkpCisgICAgICAgICAgICAgICAgaGFu
ZGxlID0gV1RGTW92ZSgqY3JlYXRlZEhhbmRsZSk7CiAgICAgICAgICAgICBtX2hhc0NyZWF0ZWRT
YW5kYm94RXh0ZW5zaW9uRm9yVENDRCA9IHRydWU7CiAgICAgICAgIH0KICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuY3BwCmlu
ZGV4IDk0NjAyYmM0NWM1MTllZDllMjBjN2M0YjM1ZWZkNzJhMmQ1ZWRhMDEuLmE4MTBmNTU2MjZj
YmM2NDFkZTA0ZDEwMWFkNDk0OTQyOTdlMTk3ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1VzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5jcHAKQEAgLTEwMCwxOCArMTAwLDMw
IEBAIGJvb2wgVXNlck1lZGlhUHJvY2Vzc01hbmFnZXI6OndpbGxDcmVhdGVNZWRpYVN0cmVhbShV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hCiAgICAgICAgICAgICBoYW5kbGVzLmFsbG9jYXRl
KGV4dGVuc2lvbkNvdW50KTsKICAgICAgICAgICAgIGlkcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KGV4dGVuc2lvbkNvdW50KTsKIAotICAgICAgICAgICAgaWYgKG5lZWRzQXVkaW9TYW5kYm94RXh0
ZW5zaW9uICYmIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvckdlbmVyaWNFeHRlbnNp
b24oYXVkaW9FeHRlbnNpb25QYXRoLCBoYW5kbGVzWy0tZXh0ZW5zaW9uQ291bnRdKSkKLSAgICAg
ICAgICAgICAgICBpZHMudW5jaGVja2VkQXBwZW5kKGF1ZGlvRXh0ZW5zaW9uUGF0aCk7CisgICAg
ICAgICAgICBpZiAobmVlZHNBdWRpb1NhbmRib3hFeHRlbnNpb24pIHsKKyAgICAgICAgICAgICAg
ICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JHZW5l
cmljRXh0ZW5zaW9uKGF1ZGlvRXh0ZW5zaW9uUGF0aCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
aGFuZGxlc1stLWV4dGVuc2lvbkNvdW50XSA9IFdURk1vdmUoKmhhbmRsZSk7CisgICAgICAgICAg
ICAgICAgICAgIGlkcy51bmNoZWNrZWRBcHBlbmQoYXVkaW9FeHRlbnNpb25QYXRoKTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmIChuZWVkc1ZpZGVv
U2FuZGJveEV4dGVuc2lvbiAmJiBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JHZW5l
cmljRXh0ZW5zaW9uKHZpZGVvRXh0ZW5zaW9uUGF0aCwgaGFuZGxlc1stLWV4dGVuc2lvbkNvdW50
XSkpCi0gICAgICAgICAgICAgICAgaWRzLnVuY2hlY2tlZEFwcGVuZCh2aWRlb0V4dGVuc2lvblBh
dGgpOworICAgICAgICAgICAgaWYgKG5lZWRzVmlkZW9TYW5kYm94RXh0ZW5zaW9uKSB7CisgICAg
ICAgICAgICAgICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFu
ZGxlRm9yR2VuZXJpY0V4dGVuc2lvbih2aWRlb0V4dGVuc2lvblBhdGgpKSB7CisgICAgICAgICAg
ICAgICAgICAgIGhhbmRsZXNbLS1leHRlbnNpb25Db3VudF0gPSBXVEZNb3ZlKCpoYW5kbGUpOwor
ICAgICAgICAgICAgICAgICAgICBpZHMudW5jaGVja2VkQXBwZW5kKHZpZGVvRXh0ZW5zaW9uUGF0
aCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAo
bmVlZHNBcHBsZUNhbWVyYVNhbmRib3hFeHRlbnNpb24pIHsKLSAgICAgICAgICAgICAgICBpZiAo
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cChhcHBsZUNhbWVyYVNl
cnZpY2VQYXRoLCBzdGQ6Om51bGxvcHQsIGhhbmRsZXNbLS1leHRlbnNpb25Db3VudF0pKQorICAg
ICAgICAgICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhh
bmRsZUZvck1hY2hMb29rdXAoYXBwbGVDYW1lcmFTZXJ2aWNlUGF0aCwgc3RkOjpudWxsb3B0KSkg
eworICAgICAgICAgICAgICAgICAgICBoYW5kbGVzWy0tZXh0ZW5zaW9uQ291bnRdID0gV1RGTW92
ZSgqaGFuZGxlKTsKICAgICAgICAgICAgICAgICAgICAgaWRzLnVuY2hlY2tlZEFwcGVuZChhcHBs
ZUNhbWVyYVNlcnZpY2VQYXRoKTsKKyAgICAgICAgICAgICAgICB9CiAjaWYgSEFWRShBRERJVElP
TkFMX0FQUExFX0NBTUVSQV9TRVJWSUNFKQotICAgICAgICAgICAgICAgIGlmIChTYW5kYm94RXh0
ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKGFkZGl0aW9uYWxBcHBsZUNhbWVyYVNl
cnZpY2VQYXRoLCBzdGQ6Om51bGxvcHQsIGhhbmRsZXNbLS1leHRlbnNpb25Db3VudF0pKQorICAg
ICAgICAgICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhh
bmRsZUZvck1hY2hMb29rdXAoYWRkaXRpb25hbEFwcGxlQ2FtZXJhU2VydmljZVBhdGgsIHN0ZDo6
bnVsbG9wdCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlc1stLWV4dGVuc2lvbkNvdW50
XSA9IFdURk1vdmUoKmhhbmRsZSk7CiAgICAgICAgICAgICAgICAgICAgIGlkcy51bmNoZWNrZWRB
cHBlbmQoYWRkaXRpb25hbEFwcGxlQ2FtZXJhU2VydmljZVBhdGgpOworICAgICAgICAgICAgICAg
IH0KICNlbmRpZgogICAgICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAppbmRleCBiYWY1NjJjNTE5ODNhNGU0N2ZkZGQyOTI4NGM5ODkwZjc1N2Q2M2Nj
Li40ODhiM2IyZDg4OTE2OGQyNjQyN2I5NGUwZTNlNzI2YWY1M2JmODg1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTEyNjUsMTEgKzEyNjUsMTkgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6Om1heWJlSW5pdGlhbGl6ZVNhbmRib3hFeHRlbnNpb25IYW5kbGUoV2Vi
UHJvY2Vzc1Byb3h5JiBwcm9jZXMKICAgICAgICAgYm9vbCBjcmVhdGVkRXh0ZW5zaW9uID0gZmFs
c2U7CiAjaWYgSEFWRShBVURJVF9UT0tFTikKICAgICAgICAgQVNTRVJUKHByb2Nlc3MuY29ubmVj
dGlvbigpICYmIHByb2Nlc3MuY29ubmVjdGlvbigpLT5nZXRBdWRpdFRva2VuKCkpOwotICAgICAg
ICBpZiAocHJvY2Vzcy5jb25uZWN0aW9uKCkgJiYgcHJvY2Vzcy5jb25uZWN0aW9uKCktPmdldEF1
ZGl0VG9rZW4oKSkKLSAgICAgICAgICAgIGNyZWF0ZWRFeHRlbnNpb24gPSBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkQnlBdWRpdFRva2VuKHJlc291cmNlRGlyZWN0b3J5VVJM
LmZpbGVTeXN0ZW1QYXRoKCksICoocHJvY2Vzcy5jb25uZWN0aW9uKCktPmdldEF1ZGl0VG9rZW4o
KSksIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOwotICAgICAgICBlbHNlCisgICAgICAgIGlmIChw
cm9jZXNzLmNvbm5lY3Rpb24oKSAmJiBwcm9jZXNzLmNvbm5lY3Rpb24oKS0+Z2V0QXVkaXRUb2tl
bigpKSB7CisgICAgICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGVIYW5kbGVGb3JSZWFkQnlBdWRpdFRva2VuKHJlc291cmNlRGlyZWN0b3J5VVJMLmZpbGVT
eXN0ZW1QYXRoKCksICoocHJvY2Vzcy5jb25uZWN0aW9uKCktPmdldEF1ZGl0VG9rZW4oKSkpKSB7
CisgICAgICAgICAgICAgICAgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoKmhhbmRs
ZSk7CisgICAgICAgICAgICAgICAgY3JlYXRlZEV4dGVuc2lvbiA9IHRydWU7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0gZWxzZQogI2VuZGlmCi0gICAgICAgICAgICBjcmVhdGVkRXh0ZW5zaW9u
ID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKHJlc291cmNlRGlyZWN0b3J5VVJMLmZp
bGVTeXN0ZW1QYXRoKCksIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRPbmx5LCBzYW5kYm94
RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGF1dG8gaGFuZGxl
ID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKHJlc291cmNlRGlyZWN0b3J5VVJMLmZp
bGVTeXN0ZW1QYXRoKCksIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRPbmx5KSkgeworICAg
ICAgICAgICAgICAgIHNhbmRib3hFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKCpoYW5kbGUpOwor
ICAgICAgICAgICAgICAgIGNyZWF0ZWRFeHRlbnNpb24gPSB0cnVlOworICAgICAgICAgICAgfQor
ICAgICAgICB9CiAKICAgICAgICAgaWYgKGNyZWF0ZWRFeHRlbnNpb24pIHsKICAgICAgICAgICAg
IHByb2Nlc3MuYXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTCgqdGhpcywgcmVzb3VyY2VEaXJlY3Rv
cnlVUkwuc3RyaW5nKCkpOwpAQCAtMTI4NiwxMSArMTI5NCwxOSBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6bWF5YmVJbml0aWFsaXplU2FuZGJveEV4dGVuc2lvbkhhbmRsZShXZWJQcm9jZXNzUHJveHkm
IHByb2NlcwogICAgIGJvb2wgY3JlYXRlZEV4dGVuc2lvbiA9IGZhbHNlOwogI2lmIEhBVkUoQVVE
SVRfVE9LRU4pCiAgICAgQVNTRVJUKHByb2Nlc3MuY29ubmVjdGlvbigpICYmIHByb2Nlc3MuY29u
bmVjdGlvbigpLT5nZXRBdWRpdFRva2VuKCkpOwotICAgIGlmIChwcm9jZXNzLmNvbm5lY3Rpb24o
KSAmJiBwcm9jZXNzLmNvbm5lY3Rpb24oKS0+Z2V0QXVkaXRUb2tlbigpKQotICAgICAgICBjcmVh
dGVkRXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZEJ5QXVk
aXRUb2tlbigiLyIsICoocHJvY2Vzcy5jb25uZWN0aW9uKCktPmdldEF1ZGl0VG9rZW4oKSksIHNh
bmRib3hFeHRlbnNpb25IYW5kbGUpOwotICAgIGVsc2UKKyAgICBpZiAocHJvY2Vzcy5jb25uZWN0
aW9uKCkgJiYgcHJvY2Vzcy5jb25uZWN0aW9uKCktPmdldEF1ZGl0VG9rZW4oKSkgeworICAgICAg
ICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFk
QnlBdWRpdFRva2VuKCIvIiwgKihwcm9jZXNzLmNvbm5lY3Rpb24oKS0+Z2V0QXVkaXRUb2tlbigp
KSkpIHsKKyAgICAgICAgICAgIGNyZWF0ZWRFeHRlbnNpb24gPSB0cnVlOworICAgICAgICAgICAg
c2FuZGJveEV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoKmhhbmRsZSk7CisgICAgICAgIH0KKyAg
ICB9IGVsc2UKICNlbmRpZgotICAgICAgICBjcmVhdGVkRXh0ZW5zaW9uID0gU2FuZGJveEV4dGVu
c2lvbjo6Y3JlYXRlSGFuZGxlKCIvIiwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHks
IHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOworICAgIHsKKyAgICAgICAgaWYgKGF1dG8gaGFuZGxl
ID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKCIvIiwgU2FuZGJveEV4dGVuc2lvbjo6
VHlwZTo6UmVhZE9ubHkpKSB7CisgICAgICAgICAgICBjcmVhdGVkRXh0ZW5zaW9uID0gdHJ1ZTsK
KyAgICAgICAgICAgIHNhbmRib3hFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKCpoYW5kbGUpOwor
ICAgICAgICB9CisgICAgfQogCiAgICAgaWYgKGNyZWF0ZWRFeHRlbnNpb24pIHsKICAgICAgICAg
d2lsbEFjcXVpcmVVbml2ZXJzYWxGaWxlUmVhZFNhbmRib3hFeHRlbnNpb24ocHJvY2Vzcyk7CkBA
IC0xMzA4LDExICsxMzI0LDE5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjptYXliZUluaXRpYWxpemVT
YW5kYm94RXh0ZW5zaW9uSGFuZGxlKFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzCiAgICAgaWYgKGJh
c2VQYXRoLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CiAjaWYgSEFWRShBVURJVF9UT0tFTikK
LSAgICBpZiAocHJvY2Vzcy5jb25uZWN0aW9uKCkgJiYgcHJvY2Vzcy5jb25uZWN0aW9uKCktPmdl
dEF1ZGl0VG9rZW4oKSkKLSAgICAgICAgY3JlYXRlZEV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZUhhbmRsZUZvclJlYWRCeUF1ZGl0VG9rZW4oYmFzZVBhdGgsICoocHJvY2Vzcy5j
b25uZWN0aW9uKCktPmdldEF1ZGl0VG9rZW4oKSksIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOwot
ICAgIGVsc2UKKyAgICBpZiAocHJvY2Vzcy5jb25uZWN0aW9uKCkgJiYgcHJvY2Vzcy5jb25uZWN0
aW9uKCktPmdldEF1ZGl0VG9rZW4oKSkgeworICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkQnlBdWRpdFRva2VuKGJhc2VQYXRoLCAq
KHByb2Nlc3MuY29ubmVjdGlvbigpLT5nZXRBdWRpdFRva2VuKCkpKSkgeworICAgICAgICAgICAg
c2FuZGJveEV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoKmhhbmRsZSk7CisgICAgICAgICAgICBj
cmVhdGVkRXh0ZW5zaW9uID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0gZWxzZQogI2VuZGlmCi0g
ICAgICAgIGNyZWF0ZWRFeHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUo
YmFzZVBhdGgsIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRPbmx5LCBzYW5kYm94RXh0ZW5z
aW9uSGFuZGxlKTsKKyAgICB7CisgICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRl
bnNpb246OmNyZWF0ZUhhbmRsZShiYXNlUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVh
ZE9ubHkpKSB7CisgICAgICAgICAgICBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgq
aGFuZGxlKTsKKyAgICAgICAgICAgIGNyZWF0ZWRFeHRlbnNpb24gPSB0cnVlOworICAgICAgICB9
CisgICAgfQogCiAgICAgaWYgKGNyZWF0ZWRFeHRlbnNpb24pCiAgICAgICAgIHByb2Nlc3MuYXNz
dW1lUmVhZEFjY2Vzc1RvQmFzZVVSTCgqdGhpcywgYmFzZVVSTC5zdHJpbmcoKSk7CkBAIC03MDAx
LDkgKzcwMjUsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENob29zZUZpbGVzRm9yT3BlblBh
bmVsV2l0aERpc3BsYXlTdHJpbmdBbmRJY29uKGNvbnN0IFZlY3QKIAogICAgIFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZSBmcm9udGJvYXJkU2VydmljZXNTYW5kYm94RXh0ZW5zaW9uLCBpY29uU2Vy
dmljZXNTYW5kYm94RXh0ZW5zaW9uOwogI2lmIEhBVkUoRlJPTlRCT0FSRF9TWVNURU1fQVBQX1NF
UlZJQ0VTKQotICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAo
ImNvbS5hcHBsZS5mcm9udGJvYXJkLnN5c3RlbWFwcHNlcnZpY2VzIl9zLCBzdGQ6Om51bGxvcHQs
IGZyb250Ym9hcmRTZXJ2aWNlc1NhbmRib3hFeHRlbnNpb24pOworICAgIGlmIChhdXRvIGhhbmRs
ZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBs
ZS5mcm9udGJvYXJkLnN5c3RlbWFwcHNlcnZpY2VzIl9zLCBzdGQ6Om51bGxvcHQpKQorICAgICAg
ICBmcm9udGJvYXJkU2VydmljZXNTYW5kYm94RXh0ZW5zaW9uID0gV1RGTW92ZSgqaGFuZGxlKTsK
ICNlbmRpZgotICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAo
ImNvbS5hcHBsZS5pY29uc2VydmljZXMiX3MsIHN0ZDo6bnVsbG9wdCwgaWNvblNlcnZpY2VzU2Fu
ZGJveEV4dGVuc2lvbik7CisgICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6
Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLmljb25zZXJ2aWNlcyJfcywgc3Rk
OjpudWxsb3B0KSkKKyAgICAgICAgaWNvblNlcnZpY2VzU2FuZGJveEV4dGVuc2lvbiA9IFdURk1v
dmUoKmhhbmRsZSk7CiAKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDaG9vc2VGaWxl
c0Zvck9wZW5QYW5lbFdpdGhEaXNwbGF5U3RyaW5nQW5kSWNvbihmaWxlVVJMcywgZGlzcGxheVN0
cmluZywgaWNvbkRhdGEgPyBpY29uRGF0YS0+ZGF0YVJlZmVyZW5jZSgpIDogSVBDOjpEYXRhUmVm
ZXJlbmNlKCksIGZyb250Ym9hcmRTZXJ2aWNlc1NhbmRib3hFeHRlbnNpb24sIGljb25TZXJ2aWNl
c1NhbmRib3hFeHRlbnNpb24pKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwCmluZGV4IDY5M2NhNjU1MTVjYTcyZDQxMDMzYzRjZTZjMzA5OWQyYjg3YWU4MmEu
Ljg2MTA2ZDExZWQ0YmJmODljNjM1NzQ5OGJjOTliYzNlZjdiYTU1YmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTY3MywyMCArNjczLDI2IEBAIFdl
YlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYlByb2Nlc3NQb29sOjp3ZWJQcm9jZXNzRGF0
YVN0b3JlUGFyYW1ldGVycyhXZWJQCiAKICAgICBTdHJpbmcgYXBwbGljYXRpb25DYWNoZURpcmVj
dG9yeSA9IHdlYnNpdGVEYXRhU3RvcmUucmVzb2x2ZWRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5
KCk7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rv
cnlFeHRlbnNpb25IYW5kbGU7Ci0gICAgaWYgKCFhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5Lmlz
RW1wdHkoKSkKLSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJl
c29sdmluZ1BhdGgoYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSwgU2FuZGJveEV4dGVuc2lvbjo6
VHlwZTo6UmVhZFdyaXRlLCBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxl
KTsKKyAgICBpZiAoIWFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkuaXNFbXB0eSgpKSB7CisgICAg
ICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhv
dXRSZXNvbHZpbmdQYXRoKGFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNp
b246OlR5cGU6OlJlYWRXcml0ZSkpCisgICAgICAgICAgICBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0
b3J5RXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqaGFuZGxlKTsKKyAgICB9CiAKICAgICBTdHJp
bmcgYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSA9IHdlYnNpdGVEYXRh
U3RvcmUuYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSgpOwogCiAgICAg
U3RyaW5nIG1lZGlhQ2FjaGVEaXJlY3RvcnkgPSB3ZWJzaXRlRGF0YVN0b3JlLnJlc29sdmVkTWVk
aWFDYWNoZURpcmVjdG9yeSgpOwogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBtZWRpYUNh
Y2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwotICAgIGlmICghbWVkaWFDYWNoZURpcmVjdG9y
eS5pc0VtcHR5KCkpCi0gICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhv
dXRSZXNvbHZpbmdQYXRoKG1lZGlhQ2FjaGVEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246OlR5
cGU6OlJlYWRXcml0ZSwgbWVkaWFDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CisgICAg
aWYgKCFtZWRpYUNhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoYXV0byBo
YW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0
aChtZWRpYUNhY2hlRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUp
KQorICAgICAgICAgICAgbWVkaWFDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSA9IFdURk1v
dmUoKmhhbmRsZSk7CisgICAgfQogCiAgICAgU3RyaW5nIG1lZGlhS2V5U3RvcmFnZURpcmVjdG9y
eSA9IHdlYnNpdGVEYXRhU3RvcmUucmVzb2x2ZWRNZWRpYUtleXNEaXJlY3RvcnkoKTsKICAgICBT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgbWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9u
SGFuZGxlOwotICAgIGlmICghbWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5LmlzRW1wdHkoKSkKLSAg
ICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgo
bWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3Jp
dGUsIG1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CisgICAgaWYgKCFt
ZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChhdXRvIGhh
bmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRo
KG1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeSwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdy
aXRlKSkKKyAgICAgICAgICAgIG1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRs
ZSA9IFdURk1vdmUoKmhhbmRsZSk7CisgICAgfQogCiAgICAgU3RyaW5nIGphdmFTY3JpcHRDb25m
aWd1cmF0aW9uRGlyZWN0b3J5OwogICAgIGlmICghbV9qYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRp
cmVjdG9yeS5pc0VtcHR5KCkpCkBAIC02OTUsMTQgKzcwMSwxOCBAQCBXZWJQcm9jZXNzRGF0YVN0
b3JlUGFyYW1ldGVycyBXZWJQcm9jZXNzUG9vbDo6d2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRl
cnMoV2ViUAogICAgICAgICBqYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSA9IHdlYnNp
dGVEYXRhU3RvcmUucmVzb2x2ZWRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpOwog
CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGphdmFTY3JpcHRDb25maWd1cmF0aW9uRGly
ZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwotICAgIGlmICghamF2YVNjcmlwdENvbmZpZ3VyYXRpb25E
aXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5k
bGVXaXRob3V0UmVzb2x2aW5nUGF0aChqYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSwg
U2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRlLCBqYXZhU2NyaXB0Q29uZmlndXJhdGlv
bkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CisgICAgaWYgKCFqYXZhU2NyaXB0Q29uZmlndXJh
dGlvbkRpcmVjdG9yeS5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKGF1dG8gaGFuZGxlID0gU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgoamF2YVNjcmlw
dENvbmZpZ3VyYXRpb25EaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0
ZSkpCisgICAgICAgICAgICBqYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeUV4dGVuc2lv
bkhhbmRsZSA9IFdURk1vdmUoKmhhbmRsZSk7CisgICAgfQogCiAjaWYgSEFWRShBUktJVF9JTkxJ
TkVfUFJFVklFVykKICAgICBhdXRvIG1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5ID0gd2Vic2l0
ZURhdGFTdG9yZS5yZXNvbHZlZE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KCk7CiAgICAgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlIG1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5RXh0ZW5zaW9u
SGFuZGxlOwotICAgIGlmICghbW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkuaXNFbXB0eSgpKQot
ICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0
aChtb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVh
ZFdyaXRlLCBtb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CisgICAg
aWYgKCFtb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeS5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYg
KGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29s
dmluZ1BhdGgobW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246OlR5
cGU6OlJlYWRXcml0ZSkpCisgICAgICAgICAgICBtb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeUV4
dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoKmhhbmRsZSk7CisgICAgfQogI2VuZGlmCiAKICAgICBy
ZXR1cm4gV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMgewpAQCAtNzQyLDEyICs3NTIsMTYg
QEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6aW5pdGlhbGl6ZU5ld1dlYlByb2Nlc3MoV2ViUHJvY2Vz
c1Byb3h5JiBwcm9jZXNzLCBXZWJzaXRlRGEKICAgICBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzIHBhcmFtZXRlcnM7CiAKICAgICBwYXJhbWV0ZXJzLmluamVjdGVkQnVuZGxlUGF0aCA9IG1f
cmVzb2x2ZWRQYXRocy5pbmplY3RlZEJ1bmRsZVBhdGg7Ci0gICAgaWYgKCFwYXJhbWV0ZXJzLmlu
amVjdGVkQnVuZGxlUGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKHBhcmFtZXRlcnMuaW5qZWN0ZWRCdW5kbGVQ
YXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkT25seSwgcGFyYW1ldGVycy5pbmplY3Rl
ZEJ1bmRsZVBhdGhFeHRlbnNpb25IYW5kbGUpOworICAgIGlmICghcGFyYW1ldGVycy5pbmplY3Rl
ZEJ1bmRsZVBhdGguaXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKHBhcmFtZXRlcnMu
aW5qZWN0ZWRCdW5kbGVQYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkT25seSkpCisg
ICAgICAgICAgICBwYXJhbWV0ZXJzLmluamVjdGVkQnVuZGxlUGF0aEV4dGVuc2lvbkhhbmRsZSA9
IFdURk1vdmUoKmhhbmRsZSk7CisgICAgfQogCiAgICAgcGFyYW1ldGVycy5hZGRpdGlvbmFsU2Fu
ZGJveEV4dGVuc2lvbkhhbmRsZXMuYWxsb2NhdGUobV9yZXNvbHZlZFBhdGhzLmFkZGl0aW9uYWxX
ZWJQcm9jZXNzU2FuZGJveEV4dGVuc2lvblBhdGhzLnNpemUoKSk7Ci0gICAgZm9yIChzaXplX3Qg
aSA9IDAsIHNpemUgPSBtX3Jlc29sdmVkUGF0aHMuYWRkaXRpb25hbFdlYlByb2Nlc3NTYW5kYm94
RXh0ZW5zaW9uUGF0aHMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBTYW5kYm94RXh0
ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChtX3Jlc29sdmVkUGF0aHMu
YWRkaXRpb25hbFdlYlByb2Nlc3NTYW5kYm94RXh0ZW5zaW9uUGF0aHNbaV0sIFNhbmRib3hFeHRl
bnNpb246OlR5cGU6OlJlYWRPbmx5LCBwYXJhbWV0ZXJzLmFkZGl0aW9uYWxTYW5kYm94RXh0ZW5z
aW9uSGFuZGxlc1tpXSk7CisgICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSBtX3Jlc29sdmVk
UGF0aHMuYWRkaXRpb25hbFdlYlByb2Nlc3NTYW5kYm94RXh0ZW5zaW9uUGF0aHMuc2l6ZSgpOyBp
IDwgc2l6ZTsgKytpKSB7CisgICAgICAgIGlmIChhdXRvIGhhbmRsZSA9ICBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChtX3Jlc29sdmVkUGF0aHMuYWRk
aXRpb25hbFdlYlByb2Nlc3NTYW5kYm94RXh0ZW5zaW9uUGF0aHNbaV0sIFNhbmRib3hFeHRlbnNp
b246OlR5cGU6OlJlYWRPbmx5KSkKKyAgICAgICAgICAgIHBhcmFtZXRlcnMuYWRkaXRpb25hbFNh
bmRib3hFeHRlbnNpb25IYW5kbGVzW2ldID0gV1RGTW92ZSgqaGFuZGxlKTsKKyAgICB9CiAKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHNldEphdmFTY3JpcHRDb25maWd1cmF0aW9uRmls
ZUVuYWJsZWRGcm9tRGVmYXVsdHMoKTsKQEAgLTkwMSw3ICs5MTUsMTAgQEAgdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6cHJvY2Vzc0RpZEZpbmlzaExhdW5jaGluZyhXZWJQcm9jZXNzUHJveHkmIHByb2Nl
c3MpCiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW1wbGVMb2dTYW5kYm94SGFu
ZGxlOyAgICAgICAgCiAgICAgICAgIFdhbGxUaW1lIG5vdyA9IFdhbGxUaW1lOjpub3coKTsKICAg
ICAgICAgYXV0byBzYW1wbGVMb2dGaWxlUGF0aCA9IG1ha2VTdHJpbmcoIldlYlByb2Nlc3MiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KG5vdy5zZWNvbmRzU2luY2VFcG9jaCgpLnNl
Y29uZHMoKSksICJwaWQiLCBwcm9jZXNzLnByb2Nlc3NJZGVudGlmaWVyKCkpOwotICAgICAgICBz
YW1wbGVMb2dGaWxlUGF0aCA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclRlbXBv
cmFyeUZpbGUoc2FtcGxlTG9nRmlsZVBhdGgsIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRX
cml0ZSwgc2FtcGxlTG9nU2FuZGJveEhhbmRsZSk7CisgICAgICAgIGlmIChhdXRvIGhhbmRsZUFu
ZEZpbGVQYXRoID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yVGVtcG9yYXJ5Rmls
ZShzYW1wbGVMb2dGaWxlUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRlKSkg
eworICAgICAgICAgICAgc2FtcGxlTG9nU2FuZGJveEhhbmRsZSA9IFdURk1vdmUoaGFuZGxlQW5k
RmlsZVBhdGgtPmZpcnN0KTsKKyAgICAgICAgICAgIHNhbXBsZUxvZ0ZpbGVQYXRoID0gV1RGTW92
ZShoYW5kbGVBbmRGaWxlUGF0aC0+c2Vjb25kKTsKKyAgICAgICAgfQogICAgICAgICAKICAgICAg
ICAgcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTdGFydE1lbW9yeVNhbXBsZXIo
c2FtcGxlTG9nU2FuZGJveEhhbmRsZSwgc2FtcGxlTG9nRmlsZVBhdGgsIG1fbWVtb3J5U2FtcGxl
ckludGVydmFsKSwgMCk7CiAgICAgfQpAQCAtMTE2MCw4ICsxMTc3LDEwIEBAIERvd25sb2FkUHJv
eHkmIFdlYlByb2Nlc3NQb29sOjpyZXN1bWVEb3dubG9hZChXZWJzaXRlRGF0YVN0b3JlJiBkYXRh
U3RvcmUsIFdlYlBhCiAgICAgYXV0byYgZG93bmxvYWRQcm94eSA9IGNyZWF0ZURvd25sb2FkUHJv
eHkoZGF0YVN0b3JlLCBSZXNvdXJjZVJlcXVlc3QoKSwgaW5pdGlhdGluZ1BhZ2UsIHsgfSk7CiAK
ICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZTsKLSAg
ICBpZiAoIXBhdGguaXNFbXB0eSgpKQotICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVI
YW5kbGUocGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRlLCBzYW5kYm94RXh0
ZW5zaW9uSGFuZGxlKTsKKyAgICBpZiAoIXBhdGguaXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChh
dXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShwYXRoLCBTYW5kYm94
RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUpKQorICAgICAgICAgICAgc2FuZGJveEV4dGVuc2lv
bkhhbmRsZSA9IFdURk1vdmUoKmhhbmRsZSk7CisgICAgfQogCiAgICAgZGF0YVN0b3JlLm5ldHdv
cmtQcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlJlc3VtZURvd25sb2Fk
KGRhdGFTdG9yZS5zZXNzaW9uSUQoKSwgZG93bmxvYWRQcm94eS5kb3dubG9hZElEKCksIHJlc3Vt
ZURhdGEuZGF0YVJlZmVyZW5jZSgpLCBwYXRoLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBjYWxs
RG93bmxvYWREaWRTdGFydCksIDApOwogICAgIHJldHVybiBkb3dubG9hZFByb3h5OwpAQCAtMTQ0
Nyw3ICsxNDY2LDEwIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnN0YXJ0TWVtb3J5U2FtcGxlcihj
b25zdCBkb3VibGUgaW50ZXJ2YWwpCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbXBs
ZUxvZ1NhbmRib3hIYW5kbGU7ICAgIAogICAgIFdhbGxUaW1lIG5vdyA9IFdhbGxUaW1lOjpub3co
KTsKICAgICBhdXRvIHNhbXBsZUxvZ0ZpbGVQYXRoID0gbWFrZVN0cmluZygiV2ViUHJvY2VzcyIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4obm93LnNlY29uZHNTaW5jZUVwb2NoKCku
c2Vjb25kcygpKSk7Ci0gICAgc2FtcGxlTG9nRmlsZVBhdGggPSBTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGVIYW5kbGVGb3JUZW1wb3JhcnlGaWxlKHNhbXBsZUxvZ0ZpbGVQYXRoLCBTYW5kYm94RXh0
ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUsIHNhbXBsZUxvZ1NhbmRib3hIYW5kbGUpOworICAgIGlm
IChhdXRvIGhhbmRsZUFuZEZpbGVQYXRoID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
Rm9yVGVtcG9yYXJ5RmlsZShzYW1wbGVMb2dGaWxlUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6VHlw
ZTo6UmVhZFdyaXRlKSkgeworICAgICAgICBzYW1wbGVMb2dTYW5kYm94SGFuZGxlID0gV1RGTW92
ZShoYW5kbGVBbmRGaWxlUGF0aC0+Zmlyc3QpOworICAgICAgICBzYW1wbGVMb2dGaWxlUGF0aCA9
IFdURk1vdmUoaGFuZGxlQW5kRmlsZVBhdGgtPnNlY29uZCk7CisgICAgfQogICAgIAogICAgIHNl
bmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6U3RhcnRNZW1vcnlTYW1wbGVy
KHNhbXBsZUxvZ1NhbmRib3hIYW5kbGUsIHNhbXBsZUxvZ0ZpbGVQYXRoLCBpbnRlcnZhbCkpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2Ev
V2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCmluZGV4IDI4MTQ4NGFhZjlhMTk2
ZjBlZmFlODcyZDkwYzYwOGI3ODRhM2FlNzguLjFkMGU0NTIxNWZlZjFiNjlhZTcwNmE3ZDFjYmM4
ZjhiMjY1ODY3OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KQEAgLTE1
MCw4ICsxNTAsMTEgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpwbGF0Zm9ybVNldE5ldHdvcmtQ
YXJhbWV0ZXJzKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJgogICAgIGJvb2wgaHR0cDNFbmFi
bGVkID0gV2Vic2l0ZURhdGFTdG9yZTo6aHR0cDNFbmFibGVkKCk7CiAgICAgU2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlIGFsdGVybmF0aXZlU2VydmljZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25I
YW5kbGU7CiAgICAgU3RyaW5nIGFsdGVybmF0aXZlU2VydmljZVN0b3JhZ2VEaXJlY3RvcnkgPSBy
ZXNvbHZlZEFsdGVybmF0aXZlU2VydmljZXNTdG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAgaWYgKCFh
bHRlcm5hdGl2ZVNlcnZpY2VTdG9yYWdlRGlyZWN0b3J5LmlzRW1wdHkoKSkKLSAgICAgICAgU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KGFsdGVybmF0
aXZlU2VydmljZVN0b3JhZ2VEaXJlY3RvcnksIGFsdGVybmF0aXZlU2VydmljZVN0b3JhZ2VEaXJl
Y3RvcnlFeHRlbnNpb25IYW5kbGUpOworICAgIGlmICghYWx0ZXJuYXRpdmVTZXJ2aWNlU3RvcmFn
ZURpcmVjdG9yeS5pc0VtcHR5KCkpIHsKKyAgICAgICAgLy8gRklYTUU6IFNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeSByZXNvbHZlcyB0aGUgZGlyZWN0
b3J5LCBidXQgdGhhdCBoYXMgYWxyZWFkeSBiZWVuIGRvbmUuIFJlbW92ZSB0aGlzIGR1cGxpY2F0
ZSB3b3JrLgorICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVh
dGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkoYWx0ZXJuYXRpdmVTZXJ2aWNlU3RvcmFnZURp
cmVjdG9yeSkpCisgICAgICAgICAgICBhbHRlcm5hdGl2ZVNlcnZpY2VTdG9yYWdlRGlyZWN0b3J5
RXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqaGFuZGxlKTsKKyAgICB9CiAjZW5kaWYKIAogICAg
IGJvb2wgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdEluUmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IGlz
U2FmYXJpOwpAQCAtMTg1LDggKzE4OCwxMCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnBsYXRm
b3JtU2V0TmV0d29ya1BhcmFtZXRlcnMoV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmCiAKICAg
ICBwYXJhbWV0ZXJzLnVpUHJvY2Vzc0Nvb2tpZVN0b3JhZ2VJZGVudGlmaWVyID0gbV91aVByb2Nl
c3NDb29raWVTdG9yYWdlSWRlbnRpZmllcjsKIAotICAgIGlmICghY29va2llRmlsZS5pc0VtcHR5
KCkpCi0gICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURp
cmVjdG9yeShGaWxlU3lzdGVtOjpwYXJlbnRQYXRoKGNvb2tpZUZpbGUpLCBwYXJhbWV0ZXJzLmNv
b2tpZVN0b3JhZ2VQYXRoRXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBpZiAoIWNvb2tpZUZpbGUuaXNF
bXB0eSgpKSB7CisgICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShGaWxlU3lzdGVtOjpwYXJlbnRQYXRoKGNv
b2tpZUZpbGUpKSkKKyAgICAgICAgICAgIHBhcmFtZXRlcnMuY29va2llU3RvcmFnZVBhdGhFeHRl
bnNpb25IYW5kbGUgPSBXVEZNb3ZlKCpoYW5kbGUpOworICAgIH0KIH0KIAogI2lmIEhBVkUoQ0ZO
RVRXT1JLX0FMVEVSTkFUSVZFX1NFUlZJQ0UpIHx8IEhBVkUoTkVUV09SS19MT0FERVIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmUuY3BwCmluZGV4IDBhMGYyMzIwNzQ0MzI4OWU4ZGRmMGY0MWQxMzMzNjIwMDYyMzRmOTMu
Ljk2ZDI4NzljZWY2MmUyNDc4NGJkZGJlN2JiZDc3Nzc1YzEyOWE5OWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
Y3BwCkBAIC0xOTMyLDE4ICsxOTMyLDI2IEBAIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIFdl
YnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMoKQogCiAgICAgYXV0byByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGlyZWN0b3J5ID0gbV9jb25maWd1cmF0aW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGlyZWN0b3J5KCk7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHJlc291cmNlTG9hZFN0
YXRpc3RpY3NEaXJlY3RvcnlIYW5kbGU7Ci0gICAgaWYgKCFyZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGlyZWN0b3J5LmlzRW1wdHkoKSkKLSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFu
ZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnks
IHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnlIYW5kbGUpOworICAgIGlmICghcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeS5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKGF1dG8g
aGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0
b3J5KHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpKQorICAgICAgICAgICAgcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeUhhbmRsZSA9IFdURk1vdmUoKmhhbmRsZSk7CisgICAg
fQogCiAgICAgYXV0byBuZXR3b3JrQ2FjaGVEaXJlY3RvcnkgPSByZXNvbHZlZE5ldHdvcmtDYWNo
ZURpcmVjdG9yeSgpOwogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBuZXR3b3JrQ2FjaGVE
aXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7Ci0gICAgaWYgKCFuZXR3b3JrQ2FjaGVEaXJlY3Rvcnku
aXNFbXB0eSgpKQotICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFk
V3JpdGVEaXJlY3RvcnkobmV0d29ya0NhY2hlRGlyZWN0b3J5LCBuZXR3b3JrQ2FjaGVEaXJlY3Rv
cnlFeHRlbnNpb25IYW5kbGUpOworICAgIGlmICghbmV0d29ya0NhY2hlRGlyZWN0b3J5LmlzRW1w
dHkoKSkgeworICAgICAgICAvLyBGSVhNRTogU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
Rm9yUmVhZFdyaXRlRGlyZWN0b3J5IHJlc29sdmVzIHRoZSBkaXJlY3RvcnksIGJ1dCB0aGF0IGhh
cyBhbHJlYWR5IGJlZW4gZG9uZS4gUmVtb3ZlIHRoaXMgZHVwbGljYXRlIHdvcmsuCisgICAgICAg
IGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRX
cml0ZURpcmVjdG9yeShuZXR3b3JrQ2FjaGVEaXJlY3RvcnkpKQorICAgICAgICAgICAgbmV0d29y
a0NhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqaGFuZGxlKTsKKyAgICB9
CiAKICAgICBhdXRvIGhzdHNTdG9yYWdlRGlyZWN0b3J5ID0gcmVzb2x2ZWRIU1RTU3RvcmFnZURp
cmVjdG9yeSgpOwogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBoc3RzU3RvcmFnZURpcmVj
dG9yeUV4dGVuc2lvbkhhbmRsZTsKLSAgICBpZiAoIWhzdHNTdG9yYWdlRGlyZWN0b3J5LmlzRW1w
dHkoKSkKLSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRl
RGlyZWN0b3J5KGhzdHNTdG9yYWdlRGlyZWN0b3J5LCBoc3RzU3RvcmFnZURpcmVjdG9yeUV4dGVu
c2lvbkhhbmRsZSk7CisgICAgaWYgKCFoc3RzU3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpIHsK
KyAgICAgICAgLy8gRklYTUU6IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRX
cml0ZURpcmVjdG9yeSByZXNvbHZlcyB0aGUgZGlyZWN0b3J5LCBidXQgdGhhdCBoYXMgYWxyZWFk
eSBiZWVuIGRvbmUuIFJlbW92ZSB0aGlzIGR1cGxpY2F0ZSB3b3JrLgorICAgICAgICBpZiAoYXV0
byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJl
Y3RvcnkoaHN0c1N0b3JhZ2VEaXJlY3RvcnkpKQorICAgICAgICAgICAgaHN0c1N0b3JhZ2VEaXJl
Y3RvcnlFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKCpoYW5kbGUpOworICAgIH0KIAogICAgIGJv
b2wgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdEluUmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IGZhbHNl
OwogICAgIGJvb2wgZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSA9IGZhbHNl
OwpAQCAtMjAwNCwyNiArMjAxMiwzNSBAQCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJz
aXRlRGF0YVN0b3JlOjpwYXJhbWV0ZXJzKCkKICAgICBwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9u
UGFyYW1ldGVycyA9IFdURk1vdmUobmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzKTsKIAogICAgIHBh
cmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5ID0gcmVzb2x2ZWRJbmRleGVkRGF0YWJh
c2VEaXJlY3RvcnkoKTsKLSAgICBpZiAoIXBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0
b3J5LmlzRW1wdHkoKSkKLSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9y
UmVhZFdyaXRlRGlyZWN0b3J5KHBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5LCBw
YXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CisgICAg
aWYgKCFwYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeS5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgLy8gRklYTUU6IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0
ZURpcmVjdG9yeSByZXNvbHZlcyB0aGUgZGlyZWN0b3J5LCBidXQgdGhhdCBoYXMgYWxyZWFkeSBi
ZWVuIGRvbmUuIFJlbW92ZSB0aGlzIGR1cGxpY2F0ZSB3b3JrLgorICAgICAgICBpZiAoYXV0byBo
YW5kbGUgPSAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0
b3J5KHBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5KSkKKyAgICAgICAgICAgIHBh
cmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92
ZSgqaGFuZGxlKTsKKyAgICB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgcGFy
YW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5ID0gcmVzb2x2ZWRTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCk7Ci0gICAgaWYgKCFwYXJhbWV0ZXJzLnNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkocGFyYW1ldGVy
cy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLnNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOworICAgIGlmICghcGFy
YW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5LmlzRW1wdHkoKSkgewor
ICAgICAgICAvLyBGSVhNRTogU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdy
aXRlRGlyZWN0b3J5IHJlc29sdmVzIHRoZSBkaXJlY3RvcnksIGJ1dCB0aGF0IGhhcyBhbHJlYWR5
IGJlZW4gZG9uZS4gUmVtb3ZlIHRoaXMgZHVwbGljYXRlIHdvcmsuCisgICAgICAgIGlmIChhdXRv
IGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVj
dG9yeShwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkpKQorICAg
ICAgICAgICAgcGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5RXh0
ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqaGFuZGxlKTsKKyAgICB9CiAgICAgcGFyYW1ldGVycy5z
ZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkID0gbV9jb25maWd1cmF0
aW9uLT5zZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkKCk7CiAjZW5k
aWYKIAogICAgIGF1dG8gbG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gcmVzb2x2ZWRMb2NhbFN0b3Jh
Z2VEaXJlY3RvcnkoKTsKICAgICBpZiAoIWxvY2FsU3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkp
IHsKICAgICAgICAgcGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBsb2NhbFN0b3Jh
Z2VEaXJlY3Rvcnk7Ci0gICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJl
YWRXcml0ZURpcmVjdG9yeShsb2NhbFN0b3JhZ2VEaXJlY3RvcnksIHBhcmFtZXRlcnMubG9jYWxT
dG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICAgICAgLy8gRklYTUU6IFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeSByZXNvbHZlcyB0
aGUgZGlyZWN0b3J5LCBidXQgdGhhdCBoYXMgYWxyZWFkeSBiZWVuIGRvbmUuIFJlbW92ZSB0aGlz
IGR1cGxpY2F0ZSB3b3JrLgorICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkobG9jYWxTdG9yYWdlRGlyZWN0
b3J5KSkKKyAgICAgICAgICAgIHBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5z
aW9uSGFuZGxlID0gV1RGTW92ZSgqaGFuZGxlKTsKICAgICB9CiAKICAgICBhdXRvIGNhY2hlU3Rv
cmFnZURpcmVjdG9yeSA9IHRoaXMtPmNhY2hlU3RvcmFnZURpcmVjdG9yeSgpOwogICAgIGlmICgh
Y2FjaGVTdG9yYWdlRGlyZWN0b3J5LmlzRW1wdHkoKSkgewogICAgICAgICBwYXJhbWV0ZXJzLmNh
Y2hlU3RvcmFnZURpcmVjdG9yeSA9IGNhY2hlU3RvcmFnZURpcmVjdG9yeTsKLSAgICAgICAgU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KGNhY2hlU3Rv
cmFnZURpcmVjdG9yeSwgcGFyYW1ldGVycy5jYWNoZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25I
YW5kbGUpOworICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVh
dGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkoY2FjaGVTdG9yYWdlRGlyZWN0b3J5KSkKKyAg
ICAgICAgICAgIHBhcmFtZXRlcnMuY2FjaGVTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxl
ID0gV1RGTW92ZSgqaGFuZGxlKTsKICAgICB9CiAKICAgICBwYXJhbWV0ZXJzLnBlck9yaWdpblN0
b3JhZ2VRdW90YSA9IHBlck9yaWdpblN0b3JhZ2VRdW90YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwCmluZGV4IDNh
ZjQ5YjQzNzJlODY3N2E1N2QyZWZjOGU4OGM4NjczMzk0NTVkYzEuLjRmZTQ1ZmYxMDk0ODgzMGY4
NzQ4YWQxOGQ3NjA4MTMwMzkzYWU5NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5jcHAKQEAgLTQyLDggKzQyLDEwIEBA
IHZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiB1
cmwsIFJlZjxCbG9iRGF0YUZpbGVSZWZlCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGV4
dGVuc2lvbkhhbmRsZTsKIAogICAgIC8vIEZpbGUgcGF0aCBjYW4gYmUgZW1wdHkgd2hlbiBzdWJt
aXR0aW5nIGEgZm9ybSBmaWxlIGlucHV0IHdpdGhvdXQgYSBmaWxlLCBzZWUgYnVnIDExMTc3OC4K
LSAgICBpZiAoIWZpbGUtPnBhdGgoKS5pc0VtcHR5KCkpCi0gICAgICAgIFNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZUhhbmRsZShmaWxlLT5wYXRoKCksIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJl
YWRPbmx5LCBleHRlbnNpb25IYW5kbGUpOworICAgIGlmICghZmlsZS0+cGF0aCgpLmlzRW1wdHko
KSkgeworICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVI
YW5kbGUoZmlsZS0+cGF0aCgpLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkT25seSkpCisg
ICAgICAgICAgICBleHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKCpoYW5kbGUpOworICAgIH0KIAog
ICAgIFN0cmluZyByZXBsYWNlbWVudFBhdGggPSBwYXRoID09IGZpbGUtPnBhdGgoKSA/IG51bGxT
dHJpbmcoKSA6IGZpbGUtPnBhdGgoKTsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1
cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlZ2lzdGVyRmlsZUJsb2JVUkwodXJsLCBw
YXRoLCByZXBsYWNlbWVudFBhdGgsIGV4dGVuc2lvbkhhbmRsZSwgY29udGVudFR5cGUpLCAwKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAppbmRleCBlMWNjOThjZWRhOWI3MGNkMjJmY2Nh
ZGMzNGNiZDgzOTBmNzc0MmEzLi5lOWE2M2FmM2Q1Yjk1MjFiMmVjN2M4MDE5MzdkMTc3ZGY5Y2Jl
MDEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCkBAIC0xNjksMTEgKzE2OSwxOSBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bG9hZChjb25zdCBVUkwmIHVybCwgY29u
c3QgQ29udGVudFR5cGUmIGNvbnRlbnRUeQogCiAgICAgICAgIGF1dG8gY3JlYXRlRXh0ZW5zaW9u
ID0gWyZdIHsKICNpZiBIQVZFKEFVRElUX1RPS0VOKQotICAgICAgICAgICAgaWYgKGF1dG8gYXVk
aXRUb2tlbiA9IG1fbWFuYWdlci5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmF1ZGl0VG9rZW4oKSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9y
UmVhZEJ5QXVkaXRUb2tlbihmaWxlU3lzdGVtUGF0aCwgYXVkaXRUb2tlbi52YWx1ZSgpLCBoYW5k
bGUpOworICAgICAgICAgICAgaWYgKGF1dG8gYXVkaXRUb2tlbiA9IG1fbWFuYWdlci5ncHVQcm9j
ZXNzQ29ubmVjdGlvbigpLmF1ZGl0VG9rZW4oKSkgeworICAgICAgICAgICAgICAgIGlmIChhdXRv
IGNyZWF0ZWRIYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkQnlB
dWRpdFRva2VuKGZpbGVTeXN0ZW1QYXRoLCBhdWRpdFRva2VuLnZhbHVlKCkpKSB7CisgICAgICAg
ICAgICAgICAgICAgIGhhbmRsZSA9IFdURk1vdmUoKmNyZWF0ZWRIYW5kbGUpOworICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQogI2VuZGlmCi0KLSAgICAgICAgICAgIHJl
dHVybiBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUoZmlsZVN5c3RlbVBhdGgsIFNhbmRi
b3hFeHRlbnNpb246OlR5cGU6OlJlYWRPbmx5LCBoYW5kbGUpOworICAgICAgICAgICAgaWYgKGF1
dG8gY3JlYXRlZEhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShmaWxlU3lz
dGVtUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHkpKSB7CisgICAgICAgICAg
ICAgICAgaGFuZGxlID0gV1RGTW92ZSgqY3JlYXRlZEhhbmRsZSk7CisgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIH07CiAKICAgICAgICAgaWYgKCFjcmVhdGVFeHRlbnNpb24oKSkgewo=
</data>

          </attachment>
      

    </bug>

</bugzilla>