<?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>186314</bug_id>
          
          <creation_ts>2018-06-05 12:14:52 -0700</creation_ts>
          <short_desc>[Cocoa] More preparation for ARC, focusing on WebKit and smart pointers</short_desc>
          <delta_ts>2018-06-07 09:03:47 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <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>186385</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>andersca</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>mitz</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1430169</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-06-05 12:14:52 -0700</bug_when>
    <thetext>[Cocoa] More preparation for ARC, focusing on WebKit and smart pointers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1430182</commentid>
    <comment_count>1</comment_count>
      <attachid>341984</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-06-05 12:46:17 -0700</bug_when>
    <thetext>Created attachment 341984
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1430189</commentid>
    <comment_count>2</comment_count>
      <attachid>341984</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2018-06-05 13:09:51 -0700</bug_when>
    <thetext>Comment on attachment 341984
Patch

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

&gt; Source/WTF/wtf/BlockPtr.h:100
&gt; +#if defined(__OBJC__) &amp;&amp; __has_feature(objc_arc)

__has_feature(objc_arc) always implies __OBJC__ being defined, so you don&apos;t need to check for __OBJC__ here (or anywhere else).

&gt; Source/WTF/wtf/OSObjectPtr.h:120
&gt; +        OSObjectPtr ptr = other;

I think you can use std::move(other) here - under ARC Objective-C pointers have implicit move constructors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1430213</commentid>
    <comment_count>3</comment_count>
      <attachid>341984</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-06-05 13:57:12 -0700</bug_when>
    <thetext>Comment on attachment 341984
Patch

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

&gt;&gt; Source/WTF/wtf/BlockPtr.h:100
&gt;&gt; +#if defined(__OBJC__) &amp;&amp; __has_feature(objc_arc)
&gt; 
&gt; __has_feature(objc_arc) always implies __OBJC__ being defined, so you don&apos;t need to check for __OBJC__ here (or anywhere else).

That’s great. I will fix that everywhere. I had copied the #if from RetainPtr. I think I’ll use a separate patch for that.

&gt;&gt; Source/WTF/wtf/OSObjectPtr.h:120
&gt;&gt; +        OSObjectPtr ptr = other;
&gt; 
&gt; I think you can use std::move(other) here - under ARC Objective-C pointers have implicit move constructors.

That’s great news. Given that, maybe I should do a version that takes T&amp;&amp; too? For now I won’t do either of those things, but I will come back and do it as an optimization. Maybe with a unit test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1430215</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-06-05 13:58:23 -0700</bug_when>
    <thetext>Committed r232520: &lt;https://trac.webkit.org/changeset/232520&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1430216</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-06-05 13:59:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/40822335&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1430735</commentid>
    <comment_count>6</comment_count>
      <attachid>341984</attachid>
    <who name="">mitz</who>
    <bug_when>2018-06-06 23:40:22 -0700</bug_when>
    <thetext>Comment on attachment 341984
Patch

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

&gt; Source/WebKit/Shared/mac/WebCoreArgumentCodersMac.mm:482
&gt; -    IPC::encode(encoder, reinterpret_cast&lt;CFDataRef&gt;(archiver.get().encodedData));
&gt; +    IPC::encode(encoder, (__bridge CFArrayRef)archiver.get().encodedData);

OOPS! This caused bug 186385.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1430853</commentid>
    <comment_count>7</comment_count>
      <attachid>341984</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-06-07 09:03:47 -0700</bug_when>
    <thetext>Comment on attachment 341984
Patch

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

&gt;&gt; Source/WebKit/Shared/mac/WebCoreArgumentCodersMac.mm:482
&gt;&gt; +    IPC::encode(encoder, (__bridge CFArrayRef)archiver.get().encodedData);
&gt; 
&gt; OOPS! This caused bug 186385.

Darn, why didn’t I spot that!?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341984</attachid>
            <date>2018-06-05 12:46:17 -0700</date>
            <delta_ts>2018-06-05 13:09:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186314-20180605124616.patch</filename>
            <type>text/plain</type>
            <size>98399</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyNTE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDZhNTQxZjA4ZWI5NjBiNTg5MDIyNzg5
NGRjZmQ2NTM1MDIyNzk0YTcuLmJjZmNmNTg4YWU3MGIyYzgyYzE1MWY2Y2FlMWFiMzViNmNkZmUx
MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTgtMDYtMDUgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gTW9yZSBwcmVwYXJhdGlvbiBmb3IgQVJDLCBm
b2N1c2luZyBvbiBXZWJLaXQgYW5kIHNtYXJ0IHBvaW50ZXJzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODYzMTQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9CbG9ja1B0ci5oOiBQdXQgQmxvY2tf
Y29weS9yZWxlYXNlIGNhbGxzIGludG8gI2lmIHNpbmNlIHRoZXkgYXJlCisgICAgICAgIG5vdCBu
ZWVkZWQgdW5kZXIgQVJDLgorCisgICAgICAgICogd3RmL09TT2JqZWN0UHRyLmg6IEFkZGVkIGNv
bnN0cnVjdG9yIGFuZCBhc3NpZ25tZW50IG9wZXJhdG9yIHNvIHdlIGNhbgorICAgICAgICB3b3Jr
IHdpdGggT1Mgb2JqZWN0cyB3aXRob3V0IGFkb3B0aW5nIHRoZW0uCisKIDIwMTgtMDYtMDUgIERh
cmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gSW1wcm92ZSBz
b21lIHNvZnQgbGlua2luZyBjb21wYXRpYmlsaXR5IHdpdGggQVJDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGQ2MzY2
MDk2NzJmYzgyOGY0Mjg2YmI1ODYwMDc5M2IyZmNlMGZkMDcuLmQyM2Y1NzhlZGY0NDBiM2QwMjQ3
ZWFmM2Y5N2RmMGMwNzMzZTMyMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTgzIEBACisyMDE4LTA2
LTA1ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIE1v
cmUgcHJlcGFyYXRpb24gZm9yIEFSQywgZm9jdXNpbmcgb24gV2ViS2l0IGFuZCBzbWFydCBwb2lu
dGVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg2
MzE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjpOZXR3b3JrU2Vzc2lvbkNvY29hKTogVXNlIF9fYnJp
ZGdlIGZvciBjYXN0LgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUHJvY2Vz
c01hYy5tbToKKyAgICAgICAgKFdlYktpdDo6b3ZlcnJpZGVTeXN0ZW1Qcm94aWVzKTogRGl0dG8u
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjphbGxvd1NwZWNpZmljSFRUUFNDZXJ0
aWZpY2F0ZUZvckhvc3QpOiBEaXR0by4KKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvbWFjL0Nvbm5l
Y3Rpb25NYWMubW06CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmRNZXNzYWdlKTogRGl0
dG8uCisgICAgICAgIChJUEM6OnJlYWRGcm9tTWFjaFBvcnQpOiBEaXR0by4KKworICAgICAgICAq
IFBsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRpZXMubW06CisgICAgICAgIChXZWJLaXQ6OmZvcm1h
dHRlZFBob25lTnVtYmVyU3RyaW5nKTogVXNlIF9fYnJpZGdlIGZvciBjYXN0IGFuZAorICAgICAg
ICBDRkJyaWRnaW5nUmVsZWFzZSBpbnN0ZWFkIG9mIGFuIGV4cGxpY2l0IGF1dG9yZWxlYXNlLgor
CisgICAgICAgICogU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RJbnRlcmZhY2UubW06
CisgICAgICAgIChpbml0aWFsaXplTWV0aG9kcyk6IFVzZSBhdXRvIGluc3RlYWQgb2YgYW4gZXhw
bGljaXQgdHlwZSBzbyB0aGF0IHdlIGdldAorICAgICAgICB0aGUgY29ycmVjdCB0eXBlIGZvciB0
aGUgcmVzdWx0IG9mIHByb3RvY29sX2NvcHlQcm90b2NvbExpc3QuCisKKyAgICAgICAgKiBTaGFy
ZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tOgorICAgICAgICAoLVtfV0tS
ZW1vdGVPYmplY3RSZWdpc3RyeSBfc2VuZEludm9jYXRpb246aW50ZXJmYWNlOl0pOiBBZGRlZCBh
CisgICAgICAgIGJyaWRnaW5nIGNhc3QgdG8gdm9pZCogYmVjYXVzZSB0aGF0J3MgbmVlZGVkIHRv
IGNhbGwgX0Jsb2NrX3NpZ25hdHVyZQorICAgICAgICB1bmRlciBBUkMgYW5kIGhhcm1sZXNzIG91
dHNpZGUgQVJDLgorCisgICAgICAgICogU2hhcmVkL0FQSS9jL2NmL1dLU3RyaW5nQ0YubW06Cisg
ICAgICAgIChXS1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZyk6IFVzZSBfX2JyaWRnZSBmb3IgY2Fz
dC4KKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvY2YvV0tVUkxDRi5tbToKKyAgICAgICAgKFdLVVJM
Q3JlYXRlV2l0aENGVVJMKTogRGl0dG8uCisgICAgICAgICogU2hhcmVkL0F1dGhlbnRpY2F0aW9u
L2NvY29hL0F1dGhlbnRpY2F0aW9uTWFuYWdlckNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpB
dXRoZW50aWNhdGlvbk1hbmFnZXI6OmluaXRpYWxpemVDb25uZWN0aW9uKTogRGl0dG8uCisgICAg
ICAgICogU2hhcmVkL0NvY29hL0RhdGFEZXRlY3Rpb25SZXN1bHQubW06CisgICAgICAgIChXZWJL
aXQ6OkRhdGFEZXRlY3Rpb25SZXN1bHQ6OmVuY29kZSBjb25zdCk6IERpdHRvLgorICAgICAgICAo
V2ViS2l0OjpEYXRhRGV0ZWN0aW9uUmVzdWx0OjpkZWNvZGUpOiBEaXR0by4KKyAgICAgICAgKiBT
aGFyZWQvQ29jb2EvV0tOU0Vycm9yLm1tOgorICAgICAgICAoLVtXS05TRXJyb3IgX3dlYl9jcmVh
dGVUYXJnZXRdKTogRGl0dG8uCisgICAgICAgICogU2hhcmVkL0NvY29hL1dLTlNVUkxFeHRyYXMu
bW06CisgICAgICAgICgtW05TVVJMIF93ZWJfb3JpZ2luYWxEYXRhQXNXVEZTdHJpbmddKTogRGl0
dG8uCisKKyAgICAgICAgKiBTaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9tYWMvWFBDU2Vydmlj
ZS9YUENTZXJ2aWNlRW50cnlQb2ludC5oOgorICAgICAgICAoV2ViS2l0OjpYUENTZXJ2aWNlSW5p
dGlhbGl6ZXIpOiBSZW1vdmVkIGJhbGFuY2VkIGNhbGxzIHRvIGJvdGgKKyAgICAgICAgYWRvcHRP
U09iamVjdCBhbmQgeHBjX3JldGFpbiBhbmQgaW5zdGVhZCByZWx5IG9uIHRoZSBhc3NpZ25tZW50
CisgICAgICAgIG9wZXJhdG9yIGp1c3QgYWRkZWQgdG8gT1NPYmplY3RQdHIuCisKKyAgICAgICAg
KiBTaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9tYWMvWFBDU2VydmljZS9YUENTZXJ2aWNlTWFp
bi5tbToKKyAgICAgICAgKFdlYktpdDo6WFBDU2VydmljZUV2ZW50SGFuZGxlcik6IFVzZSBfX2Jy
aWRnZSBmb3IgY2FzdC4KKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyQmFja2luZ1N0b3JlLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdT
dG9yZTo6YXBwbHlCYWNraW5nU3RvcmVUb0xheWVyKTogRGl0dG8uCisgICAgICAgICogU2hhcmVk
L2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwOgorICAgICAgICAoSVBDOjpkZWNvZGUpOiBEaXR0by4K
KyAgICAgICAgKiBTaGFyZWQvbWFjL0FyZ3VtZW50Q29kZXJzTWFjLm1tOgorICAgICAgICAoSVBD
Ojppc1NlcmlhbGl6YWJsZVZhbHVlKTogRGl0dG8uCisgICAgICAgIChJUEM6OmVuY29kZSk6IERp
dHRvLgorICAgICAgICAqIFNoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tOgor
ICAgICAgICAoSVBDOjplbmNvZGVOU0Vycm9yKTogRGl0dG8uIEFsc28gdXNlIENGU1RSKCIiKSIg
aW5zdGVhZCBvZiBAIiIKKyAgICAgICAgd2hlbiB3ZSBuZWVkIGEgQ0ZTdHJpbmcuCisgICAgICAg
IChJUEM6OmRlY29kZU5TRXJyb3IpOiBEaXR0by4KKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2Rl
cjxQcm90ZWN0aW9uU3BhY2U+OjplbmNvZGVQbGF0Zm9ybURhdGEpOiBEaXR0by4KKyAgICAgICAg
KElQQzo6QXJndW1lbnRDb2RlcjxQcm90ZWN0aW9uU3BhY2U+OjpkZWNvZGVQbGF0Zm9ybURhdGEp
OiBEaXR0by4KKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxDcmVkZW50aWFsPjo6ZW5jb2Rl
UGxhdGZvcm1EYXRhKTogRGl0dG8uCisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8Q3JlZGVu
dGlhbD46OmRlY29kZVBsYXRmb3JtRGF0YSk6IERpdHRvLgorICAgICAgICAoSVBDOjpBcmd1bWVu
dENvZGVyPENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcj46OmVuY29kZSk6IERpdHRvLgorICAg
ICAgICAoSVBDOjpBcmd1bWVudENvZGVyPENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcj46OmRl
Y29kZSk6IERpdHRvLgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPE1lZGlhUGxheWJhY2tU
YXJnZXRDb250ZXh0Pjo6ZW5jb2RlUGxhdGZvcm1EYXRhKTogRGl0dG8uCisgICAgICAgIChJUEM6
OkFyZ3VtZW50Q29kZXI8TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ+OjpkZWNvZGVQbGF0Zm9y
bURhdGEpOiBEaXR0by4KKyAgICAgICAgKiBTaGFyZWQvbWFjL1dlYkhpdFRlc3RSZXN1bHREYXRh
Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJIaXRUZXN0UmVzdWx0RGF0YTo6cGxhdGZvcm1FbmNv
ZGUgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViSGl0VGVzdFJlc3VsdERhdGE6
OnBsYXRmb3JtRGVjb2RlKTogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL21hYy9X
S0NvbnRleHRQcml2YXRlTWFjLm1tOgorICAgICAgICAoV0tDb250ZXh0SXNQbHVnSW5VcGRhdGVB
dmFpbGFibGUpOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3Np
bmdDb250ZXh0Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV0tCcm93c2luZ0NvbnRleHRDb250
cm9sbGVyIGNlcnRpZmljYXRlQ2hhaW5dKTogRGl0dG8uCisgICAgICAgIChkaWRTdGFydFByb3Zp
c2lvbmFsTG9hZEZvckZyYW1lKTogRGl0dG8uCisgICAgICAgIChkaWRSZWNlaXZlU2VydmVyUmVk
aXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSk6IERpdHRvLgorICAgICAgICAoZGlkRmFp
bFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvckZvckZyYW1lKTogRGl0dG8uCisgICAgICAgIChkaWRD
b21taXRMb2FkRm9yRnJhbWUpOiBEaXR0by4KKyAgICAgICAgKGRpZEZpbmlzaExvYWRGb3JGcmFt
ZSk6IERpdHRvLgorICAgICAgICAoZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JGcmFtZSk6IERpdHRv
LgorICAgICAgICAoY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUluRnJhbWUp
OiBEaXR0by4KKyAgICAgICAgKGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUluRnJh
bWUpOiBEaXR0by4KKyAgICAgICAgKGRpZFN0YXJ0UHJvZ3Jlc3MpOiBEaXR0by4KKyAgICAgICAg
KGRpZENoYW5nZVByb2dyZXNzKTogRGl0dG8uCisgICAgICAgIChkaWRGaW5pc2hQcm9ncmVzcyk6
IERpdHRvLgorICAgICAgICAoZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KTogRGl0dG8uCisgICAg
ICAgIChwcm9jZXNzRGlkQ3Jhc2gpOiBEaXR0by4KKyAgICAgICAgKHNldFVwUGFnZUxvYWRlckNs
aWVudCk6IERpdHRvLgorICAgICAgICAoc2V0VXBQYWdlUG9saWN5Q2xpZW50KTogRGl0dG8uCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dEdyb3VwLm1tOgor
ICAgICAgICAoY3JlYXRlV0tBcnJheSk6IERpdHRvLgorICAgICAgICAoLVtXS0Jyb3dzaW5nQ29u
dGV4dEdyb3VwIGFkZFVzZXJTdHlsZVNoZWV0OmJhc2VVUkw6d2hpdGVsaXN0ZWRVUkxQYXR0ZXJu
czpibGFja2xpc3RlZFVSTFBhdHRlcm5zOm1haW5GcmFtZU9ubHk6XSk6IERpdHRvLgorICAgICAg
ICAoLVtXS0Jyb3dzaW5nQ29udGV4dEdyb3VwIGFkZFVzZXJTY3JpcHQ6YmFzZVVSTDp3aGl0ZWxp
c3RlZFVSTFBhdHRlcm5zOmJsYWNrbGlzdGVkVVJMUGF0dGVybnM6aW5qZWN0aW9uVGltZTptYWlu
RnJhbWVPbmx5Ol0pOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29u
bmVjdGlvbi5tbToKKyAgICAgICAgKGRpZFJlY2VpdmVNZXNzYWdlKTogRGl0dG8uCisgICAgICAg
IChkaWRDbG9zZSk6IERpdHRvLgorICAgICAgICAoc2V0VXBDbGllbnQpOiBEaXR0by4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc0dyb3VwLm1tOgorICAgICAgICAoZGlk
Q3JlYXRlQ29ubmVjdGlvbik6IERpdHRvLgorICAgICAgICAoZ2V0SW5qZWN0ZWRCdW5kbGVJbml0
aWFsaXphdGlvblVzZXJEYXRhKTogRGl0dG8uCisgICAgICAgIChzZXRVcEluamVjdGVkQnVuZGxl
Q2xpZW50KTogRGl0dG8uCisgICAgICAgICgtW1dLUHJvY2Vzc0dyb3VwIF9zZXRBbGxvd3NTcGVj
aWZpY0hUVFBTQ2VydGlmaWNhdGU6Zm9ySG9zdDpdKTogRGl0dG8uCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tOgorICAgICAgICAoLVtXS1Byb2Nlc3NQb29s
IF9zZXRBbGxvd3NTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGU6Zm9ySG9zdDpdKTogRGl0dG8uCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW06CisgICAg
ICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2V0UHJveHlDb25maWd1cmF0aW9uOl0pOiBEaXR0
by4KKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9wcm94eUNvbmZpZ3VyYXRpb25dKTog
RGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tUaHVtYm5haWxWaWV3Lm1t
OgorICAgICAgICAoLVtfV0tUaHVtYm5haWxWaWV3IF9kaWRUYWtlU25hcHNob3Q6XSk6IERpdHRv
LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyQ29udGVudEZpbHRlci5t
bTogQWRkZWQgYSBtaXNzaW5nIGluY2x1ZGUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0aGVu
dGljYXRpb24vbWFjL1dlYkNyZWRlbnRpYWxNYWMubW06CisgICAgICAgIChXZWJLaXQ6OmNoYWlu
KTogVXNlIF9fYnJpZGdlIGZvciBjYXN0LgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dl
YlByb2Nlc3NQb29sQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjps
ZWdhY3lQbGF0Zm9ybURlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkpOgorICAgICAgICBVc2Ug
Q0ZCcmlkZ2luZ1JlbGVhc2UgaW5zdGVhZCBvZiBhZG9wdE5TLgorICAgICAgICAoV2ViS2l0Ojpw
cml2YXRlQnJvd3NpbmdTZXNzaW9uKTogVXNlIF9fYnJpZGdlIGZvciBjYXN0LgorCisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3SW1wbDo6cHJvdmlkZURhdGFGb3JQYXN0ZWJvYXJkKTogVXNlIF9fYnJpZGdlIGZvciBjYXN0
LgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5JbmZvU3RvcmVNYWMubW06
CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkluZm9TdG9yZTo6cGx1Z2luUGF0aHNJbkRpcmVjdG9y
eSk6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5
ZXJUcmVlSG9zdC5tbToKKyAgICAgICAgKFdlYktpdDo6cmVjdXJzaXZlbHlNYXBJT1N1cmZhY2VC
YWNraW5nU3RvcmUpOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJl
Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVy
OjpiZWdpblN3aXBlR2VzdHVyZSk6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV0tG
dWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV0tGdWxsU2NyZWVuV2lu
ZG93Q29udHJvbGxlciBlbnRlckZ1bGxTY3JlZW46XSk6IERpdHRvLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9tYWMvV2ViUG9wdXBNZW51UHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBv
cHVwTWVudVByb3h5TWFjOjpzaG93UG9wdXBNZW51KTogRGl0dG8uCisgICAgICAgICogV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbi5tbToKKyAgICAg
ICAgKGRpZENyZWF0ZVBhZ2UpOiBEaXR0by4KKyAgICAgICAgKHdpbGxEZXN0cm95UGFnZSk6IERp
dHRvLgorICAgICAgICAoc2V0VXBCdW5kbGVDbGllbnQpOiBEaXR0by4KKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNv
bnRleHRDb250cm9sbGVyLm1tOgorICAgICAgICAoZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JG
cmFtZSk6IERpdHRvLgorICAgICAgICAoZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlz
aW9uYWxMb2FkRm9yRnJhbWUpOiBEaXR0by4KKyAgICAgICAgKGRpZEZpbmlzaExvYWRGb3JGcmFt
ZSk6IERpdHRvLgorICAgICAgICAoZ2xvYmFsT2JqZWN0SXNBdmFpbGFibGVGb3JGcmFtZSk6IERp
dHRvLgorICAgICAgICAoZGlkUmVtb3ZlRnJhbWVGcm9tSGllcmFyY2h5KTogRGl0dG8uCisgICAg
ICAgIChkaWRDb21taXRMb2FkRm9yRnJhbWUpOiBEaXR0by4KKyAgICAgICAgKGRpZEZpbmlzaERv
Y3VtZW50TG9hZEZvckZyYW1lKTogRGl0dG8uCisgICAgICAgIChkaWRGYWlsUHJvdmlzaW9uYWxM
b2FkV2l0aEVycm9yRm9yRnJhbWUpOiBEaXR0by4KKyAgICAgICAgKGRpZEZhaWxMb2FkV2l0aEVy
cm9yRm9yRnJhbWUpOiBEaXR0by4KKyAgICAgICAgKGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25G
b3JGcmFtZSk6IERpdHRvLgorICAgICAgICAoZGlkTGF5b3V0Rm9yRnJhbWUpOiBEaXR0by4KKyAg
ICAgICAgKGRpZFJlYWNoTGF5b3V0TWlsZXN0b25lKTogRGl0dG8uCisgICAgICAgIChkaWRGaXJz
dFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZSk6IERpdHRvLgorICAgICAgICAoZGlkSGFu
ZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUpOiBEaXR0by4KKyAgICAgICAgKHVzZXJBZ2VudEZvclVS
TCk6IERpdHRvLgorICAgICAgICAoc2V0VXBQYWdlTG9hZGVyQ2xpZW50KTogRGl0dG8uCisgICAg
ICAgICh3aWxsU2VuZFJlcXVlc3RGb3JGcmFtZSk6IERpdHRvLgorICAgICAgICAoZGlkSW5pdGlh
dGVMb2FkRm9yUmVzb3VyY2UpOiBEaXR0by4KKyAgICAgICAgKGRpZEZpbmlzaExvYWRGb3JSZXNv
dXJjZSk6IERpdHRvLgorICAgICAgICAoZGlkRmFpbExvYWRGb3JSZXNvdXJjZSk6IERpdHRvLgor
ICAgICAgICAoc2V0VXBSZXNvdXJjZUxvYWRDbGllbnQpOiBEaXR0by4KKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL21hYy9JbmplY3RlZEJ1bmRsZU1hYy5tbToKKyAgICAgICAg
KFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OmluaXRpYWxpemUpOiBEaXR0by4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvbWFjL05ldHNjYXBlUGx1Z2luTWFjLm1tOgorICAg
ICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6cG9wVXBDb250ZXh0TWVudSk6IERpdHRvLgor
CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaDogUHV0IGZ1bmN0
aW9ucyB0aGF0IHJldHVybiBOU0RhdGEgaW5zaWRlCisgICAgICAgIGFuICNpZmRlZiBfX09CSkNf
XyBhbmQgdXNlIF9fYnJpZGdlIGZvciBjYXN0LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
RHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKTogVXNlIF9fYnJpZGdlIGZvciBj
YXN0LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0
Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20ubW06CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FM
YXllclJlbW90ZUN1c3RvbTo6Y29udGVudHMgY29uc3QpOiBBZGRlZCBhIGJyaWRnaW5nIGNhc3Qu
CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6c2V0Q29udGVu
dHMpOiBVc2UgX19icmlkZ2UgZm9yIGNhc3QuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6
VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmNvbW1pdFRyYW5zaWVudFpvb20pOiBEaXR0
by4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldFRvcE92ZXJoYW5nSW1hZ2UpOiBEaXR0by4KKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0Qm90dG9tT3ZlcmhhbmdJbWFnZSk6IERpdHRvLgorCiAy
MDE4LTA2LTA1ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBT
ZXJ2aWNlV29ya2VyIHJlZ2lzdHJhdGlvbiBzaG91bGQgc3RvcmUgYW55IHNjcmlwdCBmZXRjaGVk
IHRocm91Z2ggaW1wb3J0U2NyaXB0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQmxvY2tQ
dHIuaCBiL1NvdXJjZS9XVEYvd3RmL0Jsb2NrUHRyLmgKaW5kZXggYWU5ZTdmYmNmM2I0ZjJkNDE3
NTBhMjQ3OTgwNDA5YWNjNGEzMThmMS4uMTI1OGZkZDYzOTkwNGZjNzQ5MTgxMGNjYWNhOWZjMTZk
YmEzMjAyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQmxvY2tQdHIuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9CbG9ja1B0ci5oCkBAIC05Nyw4ICs5NywxMiBAQCBwdWJsaWM6CiAKICAgICAg
ICAgbmV3ICgmYmxvY2stPmYpIEYgeyBzdGQ6Om1vdmUoZnVuY3Rpb24pIH07CiAKKyNpZiBkZWZp
bmVkKF9fT0JKQ19fKSAmJiBfX2hhc19mZWF0dXJlKG9iamNfYXJjKQorICAgICAgICBCbG9ja1B0
ciBibG9ja1B0ciB7IChfX2JyaWRnZV90cmFuc2ZlciBCbG9ja1R5cGUpYmxvY2sgfTsKKyNlbHNl
CiAgICAgICAgIEJsb2NrUHRyIGJsb2NrUHRyOwogICAgICAgICBibG9ja1B0ci5tX2Jsb2NrID0g
cmVpbnRlcnByZXRfY2FzdDxCbG9ja1R5cGU+KGJsb2NrKTsKKyNlbmRpZgogCiAgICAgICAgIHJl
dHVybiBibG9ja1B0cjsKICAgICB9CkBAIC0xMDksMTIgKzExMywyMCBAQCBwdWJsaWM6CiAgICAg
fQogCiAgICAgQmxvY2tQdHIoQmxvY2tUeXBlIGJsb2NrKQorI2lmIGRlZmluZWQoX19PQkpDX18p
ICYmIF9faGFzX2ZlYXR1cmUob2JqY19hcmMpCisgICAgICAgIDogbV9ibG9jayhibG9jaykKKyNl
bHNlCiAgICAgICAgIDogbV9ibG9jayhCbG9ja19jb3B5KGJsb2NrKSkKKyNlbmRpZgogICAgIHsK
ICAgICB9CiAKICAgICBCbG9ja1B0cihjb25zdCBCbG9ja1B0ciYgb3RoZXIpCisjaWYgZGVmaW5l
ZChfX09CSkNfXykgJiYgX19oYXNfZmVhdHVyZShvYmpjX2FyYykKKyAgICAgICAgOiBtX2Jsb2Nr
KG90aGVyLm1fYmxvY2spCisjZWxzZQogICAgICAgICA6IG1fYmxvY2soQmxvY2tfY29weShvdGhl
ci5tX2Jsb2NrKSkKKyNlbmRpZgogICAgIHsKICAgICB9CiAgICAgCkBAIC0xMjUsMTYgKzEzNywy
MiBAQCBwdWJsaWM6CiAgICAgCiAgICAgfkJsb2NrUHRyKCkKICAgICB7CisjaWYgIWRlZmluZWQo
X19PQkpDX18pIHx8ICFfX2hhc19mZWF0dXJlKG9iamNfYXJjKQogICAgICAgICBCbG9ja19yZWxl
YXNlKG1fYmxvY2spOworI2VuZGlmCiAgICAgfQogCiAgICAgQmxvY2tQdHImIG9wZXJhdG9yPShj
b25zdCBCbG9ja1B0ciYgb3RoZXIpCiAgICAgeworI2lmIGRlZmluZWQoX19PQkpDX18pICYmIF9f
aGFzX2ZlYXR1cmUob2JqY19hcmMpCisgICAgICAgIG1fYmxvY2sgPSBvdGhlci5tX2Jsb2NrOwor
I2Vsc2UKICAgICAgICAgaWYgKHRoaXMgIT0gJm90aGVyKSB7CiAgICAgICAgICAgICBCbG9ja19y
ZWxlYXNlKG1fYmxvY2spOwogICAgICAgICAgICAgbV9ibG9jayA9IEJsb2NrX2NvcHkob3RoZXIu
bV9ibG9jayk7CiAgICAgICAgIH0KLSAgICAgICAgCisjZW5kaWYKKwogICAgICAgICByZXR1cm4g
KnRoaXM7CiAgICAgfQogCkBAIC0xNDIsNyArMTYwLDkgQEAgcHVibGljOgogICAgIHsKICAgICAg
ICAgQVNTRVJUKHRoaXMgIT0gJm90aGVyKTsKIAorI2lmICFkZWZpbmVkKF9fT0JKQ19fKSB8fCAh
X19oYXNfZmVhdHVyZShvYmpjX2FyYykKICAgICAgICAgQmxvY2tfcmVsZWFzZShtX2Jsb2NrKTsK
KyNlbmRpZgogICAgICAgICBtX2Jsb2NrID0gc3RkOjpleGNoYW5nZShvdGhlci5tX2Jsb2NrLCBu
dWxscHRyKTsKIAogICAgICAgICByZXR1cm4gKnRoaXM7CkBAIC0xNzQsNCArMTk0LDMgQEAgaW5s
aW5lIEJsb2NrUHRyPFIgKEFyZ3MuLi4pPiBtYWtlQmxvY2tQdHIoUiAoXmJsb2NrKShBcmdzLi4u
KSkKIAogdXNpbmcgV1RGOjpCbG9ja1B0cjsKIHVzaW5nIFdURjo6bWFrZUJsb2NrUHRyOwotCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9PU09iamVjdFB0ci5oIGIvU291cmNlL1dURi93dGYv
T1NPYmplY3RQdHIuaAppbmRleCA3MjE5OTQ4NzVlZDMwMDExZWEzYzRiOWYwYjZiNjM0Y2UyMmU2
YjRjLi4yMWE4ZmU5NTRjNDAxY2FjOGMyMzBjNjU4Y2VlZTY4YTBjMmEyMjkxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9PU09iamVjdFB0ci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL09TT2Jq
ZWN0UHRyLmgKQEAgLTg1LDYgKzg1LDEzIEBAIHB1YmxpYzoKICAgICAgICAgb3RoZXIubV9wdHIg
PSBudWxscHRyOwogICAgIH0KIAorICAgIE9TT2JqZWN0UHRyKFQgcHRyKQorICAgICAgICA6IG1f
cHRyKHB0cikKKyAgICB7CisgICAgICAgIGlmIChtX3B0cikKKyAgICAgICAgICAgIHJldGFpbk9T
T2JqZWN0KG1fcHRyKTsKKyAgICB9CisKICAgICBPU09iamVjdFB0ciYgb3BlcmF0b3I9KGNvbnN0
IE9TT2JqZWN0UHRyJiBvdGhlcikKICAgICB7CiAgICAgICAgIE9TT2JqZWN0UHRyIHB0ciA9IG90
aGVyOwpAQCAtMTA4LDYgKzExNSwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAqdGhpczsK
ICAgICB9CiAKKyAgICBPU09iamVjdFB0ciYgb3BlcmF0b3I9KFQgb3RoZXIpCisgICAgeworICAg
ICAgICBPU09iamVjdFB0ciBwdHIgPSBvdGhlcjsKKyAgICAgICAgc3dhcChwdHIpOworICAgICAg
ICByZXR1cm4gKnRoaXM7CisgICAgfQorCiAgICAgdm9pZCBzd2FwKE9TT2JqZWN0UHRyJiBvdGhl
cikKICAgICB7CiAgICAgICAgIHN0ZDo6c3dhcChtX3B0ciwgb3RoZXIubV9wdHIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lv
bkNvY29hLm1tCmluZGV4IDY2YjMwNmQ3NmQxZjk3YjM3MWM5NGE4ZjhmNjMzNGU0NDk3MDU5OTMu
LmQ0ZWE5YWMzNDJlY2ExZWQ2N2IyNGE5MGI0MmJjOTdjY2NkMzFhOGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29j
b2EubW0KQEAgLTY3Nyw3ICs2NzcsNyBAQCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpOZXR3b3JrU2Vz
c2lvbkNvY29hKE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYQogICAgIGNv
bmZpZ3VyYXRpb24uVVJMQ2FjaGUgPSBuaWw7CiAKICAgICBpZiAoYXV0byYgZGF0YSA9IGdsb2Jh
bFNvdXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tlbkRhdGEoKSkKLSAgICAgICAgY29uZmlndXJhdGlv
bi5fc291cmNlQXBwbGljYXRpb25BdWRpdFRva2VuRGF0YSA9IChOU0RhdGEgKilkYXRhLmdldCgp
OworICAgICAgICBjb25maWd1cmF0aW9uLl9zb3VyY2VBcHBsaWNhdGlvbkF1ZGl0VG9rZW5EYXRh
ID0gKF9fYnJpZGdlIE5TRGF0YSAqKWRhdGEuZ2V0KCk7CiAKICAgICBhdXRvJiBzb3VyY2VBcHBs
aWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIgPSBnbG9iYWxTb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlk
ZW50aWZpZXIoKTsKICAgICBpZiAoIXNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllci5p
c0VtcHR5KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvbWFj
L05ldHdvcmtQcm9jZXNzTWFjLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9tYWMv
TmV0d29ya1Byb2Nlc3NNYWMubW0KaW5kZXggNWZkNDBkYTUwODc1M2VjYWVkM2U4YWFlYjk5M2M3
ZjQyZTUyY2U1NC4uYzJlMDg2ODYyMmM4YzA1OWU5YjhhMzRjYzQwOGZiZDQ1NDRkZmU4YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nlc3NN
YWMubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nl
c3NNYWMubW0KQEAgLTk3LDcgKzk3LDcgQEAgc3RhdGljIHZvaWQgb3ZlcnJpZGVTeXN0ZW1Qcm94
aWVzKGNvbnN0IFN0cmluZyYgaHR0cFByb3h5LCBjb25zdCBTdHJpbmcmIGh0dHBzUHIKICAgICB9
CiAKICAgICBpZiAoW3Byb3h5U2V0dGluZ3MgY291bnRdID4gMCkKLSAgICAgICAgX0NGTmV0d29y
a1NldE92ZXJyaWRlU3lzdGVtUHJveHlTZXR0aW5ncygoQ0ZEaWN0aW9uYXJ5UmVmKXByb3h5U2V0
dGluZ3MpOworICAgICAgICBfQ0ZOZXR3b3JrU2V0T3ZlcnJpZGVTeXN0ZW1Qcm94eVNldHRpbmdz
KChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpcHJveHlTZXR0aW5ncyk7CiB9CiAKIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKGNvbnN0IE5ldHdv
cmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQpAQCAtMTE1LDcgKzExNSw3
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNz
KGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmFsbG93
U3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdChjb25zdCBDZXJ0aWZpY2F0ZUluZm8mIGNl
cnRpZmljYXRlSW5mbywgY29uc3QgU3RyaW5nJiBob3N0KQogewotICAgIFtOU1VSTFJlcXVlc3Qg
c2V0QWxsb3dzU3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlOihOU0FycmF5ICopY2VydGlmaWNhdGVJ
bmZvLmNlcnRpZmljYXRlQ2hhaW4oKSBmb3JIb3N0OihOU1N0cmluZyAqKWhvc3RdOworICAgIFtO
U1VSTFJlcXVlc3Qgc2V0QWxsb3dzU3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlOihfX2JyaWRnZSBO
U0FycmF5ICopY2VydGlmaWNhdGVJbmZvLmNlcnRpZmljYXRlQ2hhaW4oKSBmb3JIb3N0OihOU1N0
cmluZyAqKWhvc3RdOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplU2FuZGJv
eChjb25zdCBDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMs
IFNhbmRib3hJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmIHNhbmRib3hQYXJhbWV0ZXJzKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvbWFjL0Nvbm5lY3Rpb25NYWMubW0g
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9tYWMvQ29ubmVjdGlvbk1hYy5tbQppbmRleCAx
ZjdiN2I3OTg2NTJkNWVkYjM2MmI2NTYyZDYyZTZiMzBiZTQyNmExLi45YzdhZmNlYmZlZmJhN2E3
NGIwNTI3YjI5ZmQ2YzJhZDUxNjFiNTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9tYWMvQ29ubmVjdGlvbk1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9tYWMvQ29ubmVjdGlvbk1hYy5tbQpAQCAtMjY4LDcgKzI2OCw3IEBAIGJvb2wgQ29ubmVj
dGlvbjo6c2VuZE1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPE1hY2hNZXNzYWdlPiBtZXNzYWdlKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBkZWZhdWx0OgotICAgICAgICBXZWJLaXQ6OnNl
dENyYXNoUmVwb3J0QXBwbGljYXRpb25TcGVjaWZpY0luZm9ybWF0aW9uKChDRlN0cmluZ1JlZilb
TlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIlVuaGFuZGxlZCBlcnJvciBjb2RlICV4LCBtZXNz
YWdlICclczo6JXMnIiwga3IsIG1lc3NhZ2UtPm1lc3NhZ2VSZWNlaXZlck5hbWUoKS5kYXRhKCks
IG1lc3NhZ2UtPm1lc3NhZ2VOYW1lKCkuZGF0YSgpXSk7CisgICAgICAgIFdlYktpdDo6c2V0Q3Jh
c2hSZXBvcnRBcHBsaWNhdGlvblNwZWNpZmljSW5mb3JtYXRpb24oKF9fYnJpZGdlIENGU3RyaW5n
UmVmKVtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiVW5oYW5kbGVkIGVycm9yIGNvZGUgJXgs
IG1lc3NhZ2UgJyVzOjolcyciLCBrciwgbWVzc2FnZS0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpLmRh
dGEoKSwgbWVzc2FnZS0+bWVzc2FnZU5hbWUoKS5kYXRhKCldKTsKICAgICAgICAgQ1JBU0goKTsK
ICAgICB9CiB9CkBAIC01MDEsNyArNTAxLDcgQEAgc3RhdGljIG1hY2hfbXNnX2hlYWRlcl90KiBy
ZWFkRnJvbU1hY2hQb3J0KG1hY2hfcG9ydF90IG1hY2hQb3J0LCBSZWNlaXZlQnVmZmVyJgogCiAg
ICAgaWYgKGtyICE9IE1BQ0hfTVNHX1NVQ0NFU1MpIHsKICNpZiAhQVNTRVJUX0RJU0FCTEVECi0g
ICAgICAgIFdlYktpdDo6c2V0Q3Jhc2hSZXBvcnRBcHBsaWNhdGlvblNwZWNpZmljSW5mb3JtYXRp
b24oKENGU3RyaW5nUmVmKVtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiVW5oYW5kbGVkIGVy
cm9yIGNvZGUgJXggZnJvbSBtYWNoX21zZywgcmVjZWl2ZSBwb3J0IGlzICV4Iiwga3IsIG1hY2hQ
b3J0XSk7CisgICAgICAgIFdlYktpdDo6c2V0Q3Jhc2hSZXBvcnRBcHBsaWNhdGlvblNwZWNpZmlj
SW5mb3JtYXRpb24oKF9fYnJpZGdlIENGU3RyaW5nUmVmKVtOU1N0cmluZyBzdHJpbmdXaXRoRm9y
bWF0OkAiVW5oYW5kbGVkIGVycm9yIGNvZGUgJXggZnJvbSBtYWNoX21zZywgcmVjZWl2ZSBwb3J0
IGlzICV4Iiwga3IsIG1hY2hQb3J0XSk7CiAjZW5kaWYKICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLm1tIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9tYWMvU3RyaW5nVXRpbGl0aWVzLm1tCmluZGV4IDQ2ZGU1NjA0MjUwYzVkYTAwODBiZWEyYjY3
MTkyOTk0YWJiMTg0OGQuLjVjOTY3OTM3Y2U0ZjliMTgwZDgwMWQ5ZTIyOGI2NmM5MDc3YTZiZWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGllcy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRpZXMubW0KQEAg
LTYyLDcgKzYyLDcgQEAgTlNTdHJpbmcgKmZvcm1hdHRlZFBob25lTnVtYmVyU3RyaW5nKE5TU3Ry
aW5nICpvcmlnaW5hbFBob25lTnVtYmVyKQogewogICAgIE5TU3RyaW5nICpjb3VudHJ5Q29kZSA9
IFtbW05TTG9jYWxlIGN1cnJlbnRMb2NhbGVdIG9iamVjdEZvcktleTpOU0xvY2FsZUNvdW50cnlD
b2RlXSBsb3dlcmNhc2VTdHJpbmddOwogCi0gICAgUmV0YWluUHRyPENGUGhvbmVOdW1iZXJSZWY+
IHBob25lTnVtYmVyID0gYWRvcHRDRihDRlBob25lTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIChDRlN0cmluZ1JlZilvcmlnaW5hbFBob25lTnVtYmVyLCAoQ0ZTdHJpbmdSZWYpY291
bnRyeUNvZGUpKTsKKyAgICBSZXRhaW5QdHI8Q0ZQaG9uZU51bWJlclJlZj4gcGhvbmVOdW1iZXIg
PSBhZG9wdENGKENGUGhvbmVOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKF9fYnJp
ZGdlIENGU3RyaW5nUmVmKW9yaWdpbmFsUGhvbmVOdW1iZXIsIChfX2JyaWRnZSBDRlN0cmluZ1Jl
Ziljb3VudHJ5Q29kZSkpOwogICAgIGlmICghcGhvbmVOdW1iZXIpCiAgICAgICAgIHJldHVybiBv
cmlnaW5hbFBob25lTnVtYmVyOwogCkBAIC03MCw3ICs3MCw3IEBAIE5TU3RyaW5nICpmb3JtYXR0
ZWRQaG9uZU51bWJlclN0cmluZyhOU1N0cmluZyAqb3JpZ2luYWxQaG9uZU51bWJlcikKICAgICBp
ZiAoIXBob25lTnVtYmVyU3RyaW5nKQogICAgICAgICBwaG9uZU51bWJlclN0cmluZyA9IENGUGhv
bmVOdW1iZXJDb3B5VW5mb3JtYXR0ZWRSZXByZXNlbnRhdGlvbihwaG9uZU51bWJlci5nZXQoKSk7
CiAKLSAgICByZXR1cm4gWyhOU1N0cmluZyAqKXBob25lTnVtYmVyU3RyaW5nIGF1dG9yZWxlYXNl
XTsKKyAgICByZXR1cm4gQ0ZCcmlkZ2luZ1JlbGVhc2UocGhvbmVOdW1iZXJTdHJpbmcpOwogfQog
CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1Jl
bW90ZU9iamVjdEludGVyZmFjZS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9f
V0tSZW1vdGVPYmplY3RJbnRlcmZhY2UubW0KaW5kZXggYmMxYzRiOTBhNmJlMWIxYTU3NDE1MmQ3
YjY2MzhiMDM3ZDhjMjA2ZS4uYzEzNzE0MDg4YWMxMjc5ZGQyOThkYmIyNTZkZjliODZkY2M0NTA1
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9i
amVjdEludGVyZmFjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dL
UmVtb3RlT2JqZWN0SW50ZXJmYWNlLm1tCkBAIC0xNjIsMTQgKzE2MiwxMiBAQCBzdGF0aWMgdm9p
ZCBpbml0aWFsaXplTWV0aG9kcyhfV0tSZW1vdGVPYmplY3RJbnRlcmZhY2UgKmludGVyZmFjZSwg
UHJvdG9jb2wgKnBybwogc3RhdGljIHZvaWQgaW5pdGlhbGl6ZU1ldGhvZHMoX1dLUmVtb3RlT2Jq
ZWN0SW50ZXJmYWNlICppbnRlcmZhY2UsIFByb3RvY29sICpwcm90b2NvbCkKIHsKICAgICB1bnNp
Z25lZCBjb25mb3JtaW5nUHJvdG9jb2xDb3VudDsKLSAgICBQcm90b2NvbCoqIGNvbmZvcm1pbmdQ
cm90b2NvbHMgPSBwcm90b2NvbF9jb3B5UHJvdG9jb2xMaXN0KGludGVyZmFjZS0+X3Byb3RvY29s
LCAmY29uZm9ybWluZ1Byb3RvY29sQ291bnQpOworICAgIGF1dG8gY29uZm9ybWluZ1Byb3RvY29s
cyA9IHByb3RvY29sX2NvcHlQcm90b2NvbExpc3QoaW50ZXJmYWNlLT5fcHJvdG9jb2wsICZjb25m
b3JtaW5nUHJvdG9jb2xDb3VudCk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY29u
Zm9ybWluZ1Byb3RvY29sQ291bnQ7ICsraSkgewotICAgICAgICBQcm90b2NvbCogY29uZm9ybWlu
Z1Byb3RvY29sID0gY29uZm9ybWluZ1Byb3RvY29sc1tpXTsKLQorICAgICAgICBhdXRvIGNvbmZv
cm1pbmdQcm90b2NvbCA9IGNvbmZvcm1pbmdQcm90b2NvbHNbaV07CiAgICAgICAgIGlmIChjb25m
b3JtaW5nUHJvdG9jb2wgPT0gQHByb3RvY29sKE5TT2JqZWN0KSkKICAgICAgICAgICAgIGNvbnRp
bnVlOwotCiAgICAgICAgIGluaXRpYWxpemVNZXRob2RzKGludGVyZmFjZSwgY29uZm9ybWluZ1By
b3RvY29sKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9D
b2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQ
SS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5tbQppbmRleCAzZmM3MzE4NDYzM2I5ODZi
N2U0ZWYxM2U4YThmYTVkYTdiMWRlNDM5Li4zOTIxNmIzNzVkMjZhNTIwYjI3NjRkODY0MjIxNWY2
ODNhMGM2YTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dL
UmVtb3RlT2JqZWN0UmVnaXN0cnkubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0Nv
Y29hL19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tCkBAIC0xNDcsNyArMTQ3LDcgQEAgLSAodm9p
ZClfc2VuZEludm9jYXRpb246KE5TSW52b2NhdGlvbiAqKWludm9jYXRpb24gaW50ZXJmYWNlOihf
V0tSZW1vdGVPYmplY3RJbnQKICAgICAgICAgaWYgKCFyZXBseUJsb2NrKQogICAgICAgICAgICAg
W05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIkEg
TlVMTCByZXBseSBibG9jayB3YXMgcGFzc2VkIGludG8gYSBtZXNzYWdlLiAoJXMpIiwgc2VsX2dl
dE5hbWUoaW52b2NhdGlvbi5zZWxlY3RvcildOwogCi0gICAgICAgIGNvbnN0IGNoYXIqIHJlcGx5
QmxvY2tTaWduYXR1cmUgPSBfQmxvY2tfc2lnbmF0dXJlKHJlcGx5QmxvY2spOworICAgICAgICBj
b25zdCBjaGFyKiByZXBseUJsb2NrU2lnbmF0dXJlID0gX0Jsb2NrX3NpZ25hdHVyZSgoX19icmlk
Z2Ugdm9pZCopcmVwbHlCbG9jayk7CiAKICAgICAgICAgaWYgKHN0cmNtcChbTlNNZXRob2RTaWdu
YXR1cmUgc2lnbmF0dXJlV2l0aE9iakNUeXBlczpyZXBseUJsb2NrU2lnbmF0dXJlXS5tZXRob2RS
ZXR1cm5UeXBlLCAidiIpKQogICAgICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxp
ZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIlJldHVybiB2YWx1ZSBvZiBibG9jayBhcmd1bWVu
dCBtdXN0IGJlICd2b2lkJy4gKCVzKSIsIHNlbF9nZXROYW1lKGludm9jYXRpb24uc2VsZWN0b3Ip
XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2NmL1dLU3RyaW5nQ0Yu
bW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jZi9XS1N0cmluZ0NGLm1tCmluZGV4IDI0
YmUzODczZTY3MjRlZDMwZDhiZDE3OTU0NmJiMTdiNjg5MWFiMWYuLjYxZDFkNDdiN2ZlMzBhODA5
NDI5ZjJhZWIxZDNhOTE0ZjBhNTVkNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9jL2NmL1dLU3RyaW5nQ0YubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2Mv
Y2YvV0tTdHJpbmdDRi5tbQpAQCAtNTAsNyArNTAsNyBAQCBXS1N0cmluZ1JlZiBXS1N0cmluZ0Ny
ZWF0ZVdpdGhDRlN0cmluZyhDRlN0cmluZ1JlZiBjZlN0cmluZykKIHsKICNpZiBXS19BUElfRU5B
QkxFRAogICAgIC8vIFNpbmNlIFdLTlNTdHJpbmcgaXMgYW4gaW50ZXJuYWwgY2xhc3Mgd2l0aCBu
byBzdWJjbGFzc2VzLCB3ZSBjYW4gZG8gYSBzaW1wbGUgZXF1YWxpdHkgY2hlY2suCi0gICAgaWYg
KG9iamVjdF9nZXRDbGFzcygoTlNTdHJpbmcgKiljZlN0cmluZykgPT0gd2tOU1N0cmluZ0NsYXNz
KCkpCisgICAgaWYgKG9iamVjdF9nZXRDbGFzcygoX19icmlkZ2UgTlNTdHJpbmcgKiljZlN0cmlu
ZykgPT0gd2tOU1N0cmluZ0NsYXNzKCkpCiAgICAgICAgIHJldHVybiB0b0FQSShzdGF0aWNfY2Fz
dDxBUEk6OlN0cmluZyo+KCZbKFdLTlNTdHJpbmcgKilbKE5TU3RyaW5nICopY2ZTdHJpbmcgcmV0
YWluXSBfYXBpT2JqZWN0XSkpOwogI2VuZGlmCiAgICAgU3RyaW5nIHN0cmluZyhjZlN0cmluZyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jZi9XS1VSTENGLm1tIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvY2YvV0tVUkxDRi5tbQppbmRleCAxYTljNWZkNDhm
YWEyMTMwMDdlOGJiMWQ0MmQzYWMyOWEzNmQ5MjNmLi5lZTYyN2IzY2ExNWExN2I4ZjYyNGU0ZThm
YjJhNDU5NTNiYzM3YWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9j
Zi9XS1VSTENGLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2NmL1dLVVJMQ0Yu
bW0KQEAgLTU0LDcgKzU0LDcgQEAgV0tVUkxSZWYgV0tVUkxDcmVhdGVXaXRoQ0ZVUkwoQ0ZVUkxS
ZWYgY2ZVUkwpCiAKICNpZiBXS19BUElfRU5BQkxFRAogICAgIC8vIFNpbmNlIFdLTlNVUkwgaXMg
YW4gaW50ZXJuYWwgY2xhc3Mgd2l0aCBubyBzdWJjbGFzc2VzLCB3ZSBjYW4gZG8gYSBzaW1wbGUg
ZXF1YWxpdHkgY2hlY2suCi0gICAgaWYgKG9iamVjdF9nZXRDbGFzcygoTlNVUkwgKiljZlVSTCkg
PT0gd2tOU1VSTENsYXNzKCkpCisgICAgaWYgKG9iamVjdF9nZXRDbGFzcygoX19icmlkZ2UgTlNV
UkwgKiljZlVSTCkgPT0gd2tOU1VSTENsYXNzKCkpCiAgICAgICAgIHJldHVybiB0b0FQSShzdGF0
aWNfY2FzdDxBUEk6OlVSTCo+KCZbKFdLTlNVUkwgKilbKE5TVVJMICopY2ZVUkwgcmV0YWluXSBf
YXBpT2JqZWN0XSkpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0F1dGhlbnRpY2F0aW9uL2NvY29hL0F1dGhlbnRpY2F0aW9uTWFuYWdlckNvY29hLm1tIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vY29jb2EvQXV0aGVudGljYXRpb25NYW5h
Z2VyQ29jb2EubW0KaW5kZXggNjBjMDgwM2U1NzE5OWFlOWZhN2UyNDUwOWQ5NDU0YzUxZjYyZTM0
ZS4uYTJjZjdlYTAwNzA2M2UzYTBmNjI1YTEyNzFhMGIwZDcyMTM4YmI0MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vY29jb2EvQXV0aGVudGljYXRpb25N
YW5hZ2VyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24v
Y29jb2EvQXV0aGVudGljYXRpb25NYW5hZ2VyQ29jb2EubW0KQEAgLTgzLDcgKzgzLDcgQEAgdm9p
ZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OmluaXRpYWxpemVDb25uZWN0aW9uKElQQzo6Q29ubmVj
dGlvbiogY29ubmVjdGlvbikKICAgICAgICAgICAgICAgICBhdXRvIGNlcnRpZmljYXRlID0gYWRv
cHRDRihTZWNDZXJ0aWZpY2F0ZUNyZWF0ZVdpdGhEYXRhKG51bGxwdHIsIGNmRGF0YS5nZXQoKSkp
OwogICAgICAgICAgICAgICAgIGlmICghY2VydGlmaWNhdGUpCiAgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgICAgICBbY2VydGlmaWNhdGVzIGFkZE9iamVjdDooaWQpY2Vy
dGlmaWNhdGUuZ2V0KCldOworICAgICAgICAgICAgICAgIFtjZXJ0aWZpY2F0ZXMgYWRkT2JqZWN0
OihfX2JyaWRnZSBpZCljZXJ0aWZpY2F0ZS5nZXQoKV07CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvRGF0YURldGVjdGlv
blJlc3VsdC5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0RhdGFEZXRlY3Rpb25SZXN1
bHQubW0KaW5kZXggNDU3ZDdhMGVhOTA3ZmZlY2ExOWU4YWIwZWQ4YjY3NTgwMTgzMjZiOC4uYWY0
MjE0NjA4YzA0MjY4NmRmNWUzYmJiN2EwZTE0ZmM3YTNmYTJlMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29jb2EvRGF0YURldGVjdGlvblJlc3VsdC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db2NvYS9EYXRhRGV0ZWN0aW9uUmVzdWx0Lm1tCkBAIC00Myw3ICs0Myw3
IEBAIHZvaWQgRGF0YURldGVjdGlvblJlc3VsdDo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2Rl
cikgY29uc3QKIHsKICAgICBhdXRvIGFyY2hpdmVyID0gc2VjdXJlQXJjaGl2ZXIoKTsKICAgICBb
YXJjaGl2ZXIgZW5jb2RlT2JqZWN0OnJlc3VsdHMuZ2V0KCkgZm9yS2V5OkAiZGF0YURldGVjdG9y
UmVzdWx0cyJdOwotICAgIElQQzo6ZW5jb2RlKGVuY29kZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZE
YXRhUmVmPihhcmNoaXZlci5nZXQoKS5lbmNvZGVkRGF0YSkpOworICAgIElQQzo6ZW5jb2RlKGVu
Y29kZXIsIChfX2JyaWRnZSBDRkRhdGFSZWYpYXJjaGl2ZXIuZ2V0KCkuZW5jb2RlZERhdGEpOwog
fQogCiBib29sIERhdGFEZXRlY3Rpb25SZXN1bHQ6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29k
ZXIsIERhdGFEZXRlY3Rpb25SZXN1bHQmIHJlc3VsdCkKQEAgLTUyLDcgKzUyLDcgQEAgYm9vbCBE
YXRhRGV0ZWN0aW9uUmVzdWx0OjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBEYXRhRGV0
ZWN0aW9uUmVzdWx0JiByZXMKICAgICBpZiAoIUlQQzo6ZGVjb2RlKGRlY29kZXIsIGRhdGEpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIHVuYXJjaGl2ZXIgPSBzZWN1cmVVbmFy
Y2hpdmVyRnJvbURhdGEoKE5TRGF0YSAqKWRhdGEuZ2V0KCkpOworICAgIGF1dG8gdW5hcmNoaXZl
ciA9IHNlY3VyZVVuYXJjaGl2ZXJGcm9tRGF0YSgoX19icmlkZ2UgTlNEYXRhICopZGF0YS5nZXQo
KSk7CiAgICAgQHRyeSB7CiAgICAgICAgIHJlc3VsdC5yZXN1bHRzID0gW3VuYXJjaGl2ZXIgZGVj
b2RlT2JqZWN0T2ZDbGFzc2VzOltOU1NldCBzZXRXaXRoQXJyYXk6QFsgW05TQXJyYXkgY2xhc3Nd
LCBnZXRERFNjYW5uZXJSZXN1bHRDbGFzcygpXSBdIGZvcktleTpAImRhdGFEZXRlY3RvclJlc3Vs
dHMiXTsKICAgICB9IEBjYXRjaCAoTlNFeGNlcHRpb24gKmV4Y2VwdGlvbikgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV0tOU0Vycm9yLm1tIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQ29jb2EvV0tOU0Vycm9yLm1tCmluZGV4IDgyMDU5NGU5NGE3MjA5Nzc4YzE5Y2E3
ZjBkNmJmMDUxZDgwMGQ0YzYuLjk0MjA0ZGU4ZjQyMzFhYmZlYjQ2NTllZDQzNDg1YmViOTYxMjQ2
YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dLTlNFcnJvci5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XS05TRXJyb3IubW0KQEAgLTM0LDcgKzM0
LDcgQEAgQGltcGxlbWVudGF0aW9uIFdLTlNFcnJvcgogCiAtIChOU09iamVjdCAqKV93ZWJfY3Jl
YXRlVGFyZ2V0CiB7Ci0gICAgcmV0dXJuIFsoTlNFcnJvciAqKXN0YXRpY19jYXN0PEFQSTo6RXJy
b3IqPigmc2VsZi5fYXBpT2JqZWN0KS0+cGxhdGZvcm1FcnJvcigpLmNmRXJyb3IoKSBjb3B5XTsK
KyAgICByZXR1cm4gWyhfX2JyaWRnZSBOU0Vycm9yICopc3RhdGljX2Nhc3Q8QVBJOjpFcnJvcio+
KCZzZWxmLl9hcGlPYmplY3QpLT5wbGF0Zm9ybUVycm9yKCkuY2ZFcnJvcigpIGNvcHldOwogfQog
CiAjcHJhZ21hIG1hcmsgTlNDb3B5aW5nIHByb3RvY29sIGltcGxlbWVudGF0aW9uCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XS05TVVJMRXh0cmFzLm1tIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29jb2EvV0tOU1VSTEV4dHJhcy5tbQppbmRleCA4OTVhZmU5OTI2MzY4
M2E1ZDMyZTdmMDJiNDk1MzZkM2I2YTVhMzYzLi4xYTgzNjNlOGY4ODQ4YmQ1ZGYzZTM0MjVmMWIx
ZGI3YjIzNzI2NmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XS05T
VVJMRXh0cmFzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dLTlNVUkxFeHRy
YXMubW0KQEAgLTUwLDcgKzUwLDcgQEAgKyAoaW5zdGFuY2V0eXBlKV93ZWJfVVJMV2l0aFdURlN0
cmluZzooY29uc3QgU3RyaW5nJilzdHJpbmcgcmVsYXRpdmVUb1VSTDooTlNVUkwKIC0gKFN0cmlu
Zylfd2ViX29yaWdpbmFsRGF0YUFzV1RGU3RyaW5nCiB7CiAgICAgQ1N0cmluZyBvcmlnaW5hbERh
dGE7Ci0gICAgZ2V0VVJMQnl0ZXMoKENGVVJMUmVmKXNlbGYsIG9yaWdpbmFsRGF0YSk7CisgICAg
Z2V0VVJMQnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKXNlbGYsIG9yaWdpbmFsRGF0YSk7CiAgICAg
cmV0dXJuIFN0cmluZzo6ZnJvbVVURjgob3JpZ2luYWxEYXRhKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9tYWMvWFBDU2VydmljZS9Y
UENTZXJ2aWNlRW50cnlQb2ludC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0
aWxpdGllcy9tYWMvWFBDU2VydmljZS9YUENTZXJ2aWNlRW50cnlQb2ludC5oCmluZGV4IDc1ODI4
ZmRlNjY4MGYxZmJlMDAyNDNmOTFkODM0NjY4OTk2YWNhZTAuLjIwOWUyMGE3NTQ5MzQxMGVlOGY5
NjdiNDViZmRkNDJmNTdiMmZkZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Vu
dHJ5UG9pbnRVdGlsaXRpZXMvbWFjL1hQQ1NlcnZpY2UvWFBDU2VydmljZUVudHJ5UG9pbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL21hYy9YUENTZXJ2
aWNlL1hQQ1NlcnZpY2VFbnRyeVBvaW50LmgKQEAgLTgzLDcgKzgzLDcgQEAgdm9pZCBYUENTZXJ2
aWNlSW5pdGlhbGl6ZXIoT1NPYmplY3RQdHI8eHBjX2Nvbm5lY3Rpb25fdD4gY29ubmVjdGlvbiwg
eHBjX29iamVjdF8KIAogICAgIENoaWxkUHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyBw
YXJhbWV0ZXJzOwogICAgIGlmIChwcmlvcml0eUJvb3N0TWVzc2FnZSkKLSAgICAgICAgcGFyYW1l
dGVycy5wcmlvcml0eUJvb3N0TWVzc2FnZSA9IGFkb3B0T1NPYmplY3QoeHBjX3JldGFpbihwcmlv
cml0eUJvb3N0TWVzc2FnZSkpOworICAgICAgICBwYXJhbWV0ZXJzLnByaW9yaXR5Qm9vc3RNZXNz
YWdlID0gcHJpb3JpdHlCb29zdE1lc3NhZ2U7CiAKICAgICBpZiAoIWRlbGVnYXRlLmdldENvbm5l
Y3Rpb25JZGVudGlmaWVyKHBhcmFtZXRlcnMuY29ubmVjdGlvbklkZW50aWZpZXIpKQogICAgICAg
ICBleGl0KEVYSVRfRkFJTFVSRSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9F
bnRyeVBvaW50VXRpbGl0aWVzL21hYy9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VNYWluLm1tIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9tYWMvWFBDU2VydmljZS9YUENT
ZXJ2aWNlTWFpbi5tbQppbmRleCA0NjY4N2YxOGUzM2Q4YjY1NjlhOTQ3YzZlMWMwOTc4MDkxZjE2
MzA2Li41OTE5YTMyODM2ZWNhOTE2ZjRkYjgzMWNiNjczMTllMzkxODNkYmYzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL21hYy9YUENTZXJ2aWNl
L1hQQ1NlcnZpY2VNYWluLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRV
dGlsaXRpZXMvbWFjL1hQQ1NlcnZpY2UvWFBDU2VydmljZU1haW4ubW0KQEAgLTU5LDcgKzU5LDcg
QEAgc3RhdGljIHZvaWQgWFBDU2VydmljZUV2ZW50SGFuZGxlcih4cGNfY29ubmVjdGlvbl90IHBl
ZXIpCiAgICAgICAgICAgICAgICAgdHlwZWRlZiB2b2lkICgqSW5pdGlhbGl6ZXJGdW5jdGlvbiko
eHBjX2Nvbm5lY3Rpb25fdCwgeHBjX29iamVjdF90LCB4cGNfb2JqZWN0X3QpOwogICAgICAgICAg
ICAgICAgIEluaXRpYWxpemVyRnVuY3Rpb24gaW5pdGlhbGl6ZXJGdW5jdGlvblB0ciA9IHJlaW50
ZXJwcmV0X2Nhc3Q8SW5pdGlhbGl6ZXJGdW5jdGlvbj4oQ0ZCdW5kbGVHZXRGdW5jdGlvblBvaW50
ZXJGb3JOYW1lKHdlYktpdEJ1bmRsZSwgZW50cnlQb2ludEZ1bmN0aW9uTmFtZSkpOwogICAgICAg
ICAgICAgICAgIGlmICghaW5pdGlhbGl6ZXJGdW5jdGlvblB0cikgewotICAgICAgICAgICAgICAg
ICAgICBOU0xvZyhAIlVuYWJsZSB0byBmaW5kIGVudHJ5IHBvaW50IGluIFdlYktpdC5mcmFtZXdv
cmsgd2l0aCBuYW1lOiAlQCIsIChOU1N0cmluZyAqKWVudHJ5UG9pbnRGdW5jdGlvbk5hbWUpOwor
ICAgICAgICAgICAgICAgICAgICBOU0xvZyhAIlVuYWJsZSB0byBmaW5kIGVudHJ5IHBvaW50IGlu
IFdlYktpdC5mcmFtZXdvcmsgd2l0aCBuYW1lOiAlQCIsIChfX2JyaWRnZSBOU1N0cmluZyAqKWVu
dHJ5UG9pbnRGdW5jdGlvbk5hbWUpOwogICAgICAgICAgICAgICAgICAgICBleGl0KEVYSVRfRkFJ
TFVSRSk7CiAgICAgICAgICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0gYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0K
aW5kZXggM2RkNWFmYzczZTJkNmViNmQ0MzRlOTA1OWZmMTdiZjA4ZjBlMmZlNi4uYjlhNmFmZTM0
MjViOWU2MjkzOGQ4MTIzY2IyNWYwM2FiZTIwODQ4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdT
dG9yZS5tbQpAQCAtNDExLDcgKzQxMSw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6
OmFwcGx5QmFja2luZ1N0b3JlVG9MYXllcihDQUxheWVyICpsYXllciwgTGF5ZXJDb250CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBMYXllckNvbnRlbnRzVHlwZTo6Q0FNYWNoUG9y
dDoKICAgICAgICAgICAgIEFTU0VSVChtX2Zyb250QnVmZmVyU2VuZFJpZ2h0KTsKLSAgICAgICAg
ICAgIGxheWVyLmNvbnRlbnRzID0gKGlkKWFkb3B0Q0YoQ0FNYWNoUG9ydENyZWF0ZShtX2Zyb250
QnVmZmVyU2VuZFJpZ2h0LmxlYWtTZW5kUmlnaHQoKSkpLmdldCgpOworICAgICAgICAgICAgbGF5
ZXIuY29udGVudHMgPSAoX19icmlkZ2UgaWQpYWRvcHRDRihDQU1hY2hQb3J0Q3JlYXRlKG1fZnJv
bnRCdWZmZXJTZW5kUmlnaHQubGVha1NlbmRSaWdodCgpKSkuZ2V0KCk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CkBAIC00MTksNyArNDE5LDcgQEAgdm9p
ZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6YXBwbHlCYWNraW5nU3RvcmVUb0xheWVyKENBTGF5
ZXIgKmxheWVyLCBMYXllckNvbnQKICNlbmRpZgogCiAgICAgQVNTRVJUKCFhY2NlbGVyYXRlc0Ry
YXdpbmcoKSk7Ci0gICAgbGF5ZXIuY29udGVudHMgPSAoaWQpbV9mcm9udEJ1ZmZlci5iaXRtYXAt
Pm1ha2VDR0ltYWdlQ29weSgpLmdldCgpOworICAgIGxheWVyLmNvbnRlbnRzID0gKF9fYnJpZGdl
IGlkKW1fZnJvbnRCdWZmZXIuYml0bWFwLT5tYWtlQ0dJbWFnZUNvcHkoKS5nZXQoKTsKIH0KIAog
UmV0YWluUHRyPENHQ29udGV4dFJlZj4gUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnRha2VGcm9u
dENvbnRleHRQZW5kaW5nRmx1c2goKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
Y2YvQXJndW1lbnRDb2RlcnNDRi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVu
dENvZGVyc0NGLmNwcAppbmRleCBmNTBiMDgyNjFjMzNiODVlZGZkMGQzMDYyZThhMjA3Y2UzYjFj
N2U5Li5iNDMwZTZjZDBiNjIwNDhmODBhYTM4YWE4NDEyYzU2NzlkN2I3Mzk2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcApAQCAtNjI0LDcgKzYyNCw3
IEBAIGJvb2wgZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFJldGFpblB0cjxDRlVSTFJlZj4mIHJl
c3VsdCkKICAgICBpZiAodXJsQnl0ZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIENGVVJMIGNh
bid0IGhvbGQgYW4gZW1wdHkgVVJMLCB1bmxpa2UgTlNVUkwuCiAgICAgICAgIC8vIEZJWE1FOiBU
aGlzIGRpc2NhcmRzIGJhc2UgVVJMLCB3aGljaCBzZWVtcyBpbmNvcnJlY3QuCi0gICAgICAgIHJl
c3VsdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZVUkxSZWY+KFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAi
Il0pOworICAgICAgICByZXN1bHQgPSAoX19icmlkZ2UgQ0ZVUkxSZWYpW05TVVJMIFVSTFdpdGhT
dHJpbmc6QCIiXTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQXJndW1lbnRDb2RlcnNNYWMubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9tYWMvQXJndW1lbnRDb2RlcnNNYWMubW0KaW5kZXggMzE3MGVlZTIw
YTQ4N2QwYjFkNGNiNmJmNjE1OGQ1MjkxZDEwNGJjMi4uZDE1YzkwNGYyYjBjNzEwOWNhMDc0ZGRk
NDM0NmRkZWE1ZTNkZjcyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0Fy
Z3VtZW50Q29kZXJzTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9Bcmd1bWVu
dENvZGVyc01hYy5tbQpAQCAtMjQzLDcgKzI0Myw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1Nl
cmlhbGl6YWJsZVZhbHVlKGlkIHZhbHVlKQogI2Vsc2UKICAgICBhdXRvIGZvbnRDbGFzcyA9IFtV
SUZvbnQgY2xhc3NdOwogI2VuZGlmCi0gICAgcmV0dXJuICFbdmFsdWUgaXNLaW5kT2ZDbGFzczpm
b250Q2xhc3NdIHx8IGlzU2VyaWFsaXphYmxlRm9udChyZWludGVycHJldF9jYXN0PENURm9udFJl
Zj4odmFsdWUpKTsKKyAgICByZXR1cm4gIVt2YWx1ZSBpc0tpbmRPZkNsYXNzOmZvbnRDbGFzc10g
fHwgaXNTZXJpYWxpemFibGVGb250KChfX2JyaWRnZSBDVEZvbnRSZWYpdmFsdWUpOwogfQogCiBz
dGF0aWMgaW5saW5lIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IGZpbHRlclVuc2VyaWFsaXphYmxl
VmFsdWVzKE5TRGljdGlvbmFyeSAqZGljdGlvbmFyeSkKQEAgLTQyNSw3ICs0MjUsNyBAQCBib29s
IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBSZXRhaW5QdHI8TlNGb250PiYgcmVzdWx0KQogCiB2
b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBOU051bWJlciAqbnVtYmVyKQogewotICAgIGVu
Y29kZShlbmNvZGVyLCAoQ0ZOdW1iZXJSZWYpbnVtYmVyKTsKKyAgICBlbmNvZGUoZW5jb2Rlciwg
KF9fYnJpZGdlIENGTnVtYmVyUmVmKW51bWJlcik7CiB9CiAKIGJvb2wgZGVjb2RlKERlY29kZXIm
IGRlY29kZXIsIFJldGFpblB0cjxOU051bWJlcj4mIHJlc3VsdCkKQEAgLTQ0MCw3ICs0NDAsNyBA
QCBib29sIGRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBSZXRhaW5QdHI8TlNOdW1iZXI+JiByZXN1
bHQpCiAKIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIE5TU3RyaW5nICpzdHJpbmcpCiB7
Ci0gICAgZW5jb2RlKGVuY29kZXIsIChDRlN0cmluZ1JlZilzdHJpbmcpOworICAgIGVuY29kZShl
bmNvZGVyLCAoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpc3RyaW5nKTsKIH0KIAogYm9vbCBkZWNvZGUo
RGVjb2RlciYgZGVjb2RlciwgUmV0YWluUHRyPE5TU3RyaW5nPiYgcmVzdWx0KQpAQCAtNDkyLDcg
KzQ5Miw3IEBAIGJvb2wgZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFJldGFpblB0cjxOU0FycmF5
PiYgcmVzdWx0KQogCiB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBOU0RhdGUgKmRhdGUp
CiB7Ci0gICAgZW5jb2RlKGVuY29kZXIsIChDRkRhdGVSZWYpZGF0ZSk7CisgICAgZW5jb2RlKGVu
Y29kZXIsIChfX2JyaWRnZSBDRkRhdGVSZWYpZGF0ZSk7CiB9CiAKIGJvb2wgZGVjb2RlKERlY29k
ZXImIGRlY29kZXIsIFJldGFpblB0cjxOU0RhdGU+JiByZXN1bHQpCkBAIC01MDcsNyArNTA3LDcg
QEAgYm9vbCBkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgUmV0YWluUHRyPE5TRGF0ZT4mIHJlc3Vs
dCkKIAogdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgTlNEYXRhICpkYXRhKQogewotICAg
IGVuY29kZShlbmNvZGVyLCAoQ0ZEYXRhUmVmKWRhdGEpOworICAgIGVuY29kZShlbmNvZGVyLCAo
X19icmlkZ2UgQ0ZEYXRhUmVmKWRhdGEpOwogfQogCiBib29sIGRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyLCBSZXRhaW5QdHI8TlNEYXRhPiYgcmVzdWx0KQpAQCAtNTIyLDcgKzUyMiw3IEBAIGJvb2wg
ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFJldGFpblB0cjxOU0RhdGE+JiByZXN1bHQpCiAKIHZv
aWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIE5TVVJMICpVUkwpCiB7Ci0gICAgZW5jb2RlKGVu
Y29kZXIsIChDRlVSTFJlZilVUkwpOworICAgIGVuY29kZShlbmNvZGVyLCAoX19icmlkZ2UgQ0ZV
UkxSZWYpVVJMKTsKIH0KIAogYm9vbCBkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgUmV0YWluUHRy
PE5TVVJMPiYgcmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dl
YkNvcmVBcmd1bWVudENvZGVyc01hYy5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJD
b3JlQXJndW1lbnRDb2RlcnNNYWMubW0KaW5kZXggYTBhNDAwZjA4MDhkYzVkYWYxMmVkMDNlNTA3
ZGQyMGFkZDNmNmQ5MS4uMzk4NWNkYzZhZDY2NWVjMmFjZGQzMDAxM2M2MDY5ODc2NGNjZWI4ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVy
c01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzTWFjLm1tCkBAIC0zMjEsMTQgKzMyMSwxNCBAQCBzdGF0aWMgdm9pZCBlbmNvZGVOU0Vycm9y
KEVuY29kZXImIGVuY29kZXIsIE5TRXJyb3IgKm5zRXJyb3IpCiAKICAgICBbdXNlckluZm8gZW51
bWVyYXRlS2V5c0FuZE9iamVjdHNVc2luZ0Jsb2NrOl4oaWQga2V5LCBpZCB2YWx1ZSwgQk9PTCop
IHsKICAgICAgICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dIHx8
IFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU1VSTCBjbGFzc11dIHx8IFt2YWx1ZSBpc0tpbmRPZkNs
YXNzOltOU051bWJlciBjbGFzc11dKQotICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUo
ZmlsdGVyZWRVc2VySW5mby5nZXQoKSwga2V5LCB2YWx1ZSk7CisgICAgICAgICAgICBDRkRpY3Rp
b25hcnlTZXRWYWx1ZShmaWx0ZXJlZFVzZXJJbmZvLmdldCgpLCAoX19icmlkZ2UgQ0ZUeXBlUmVm
KWtleSwgKF9fYnJpZGdlIENGVHlwZVJlZil2YWx1ZSk7CiAgICAgfV07CiAKICAgICBpZiAoTlNB
cnJheSAqY2xpZW50SWRlbnRpdHlBbmRDZXJ0aWZpY2F0ZXMgPSBbdXNlckluZm8gb2JqZWN0Rm9y
S2V5OkAiTlNFcnJvckNsaWVudENlcnRpZmljYXRlQ2hhaW5LZXkiXSkgewogICAgICAgICBBU1NF
UlQoW2NsaWVudElkZW50aXR5QW5kQ2VydGlmaWNhdGVzIGlzS2luZE9mQ2xhc3M6W05TQXJyYXkg
Y2xhc3NdXSk7CiAgICAgICAgIEFTU0VSVCheewogICAgICAgICAgICAgZm9yIChpZCBvYmplY3Qg
aW4gY2xpZW50SWRlbnRpdHlBbmRDZXJ0aWZpY2F0ZXMpIHsKLSAgICAgICAgICAgICAgICBpZiAo
Q0ZHZXRUeXBlSUQob2JqZWN0KSAhPSBTZWNJZGVudGl0eUdldFR5cGVJRCgpICYmIENGR2V0VHlw
ZUlEKG9iamVjdCkgIT0gU2VjQ2VydGlmaWNhdGVHZXRUeXBlSUQoKSkKKyAgICAgICAgICAgICAg
ICBpZiAoQ0ZHZXRUeXBlSUQoKF9fYnJpZGdlIENGVHlwZVJlZilvYmplY3QpICE9IFNlY0lkZW50
aXR5R2V0VHlwZUlEKCkgJiYgQ0ZHZXRUeXBlSUQoKF9fYnJpZGdlIENGVHlwZVJlZilvYmplY3Qp
ICE9IFNlY0NlcnRpZmljYXRlR2V0VHlwZUlEKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMzM3
LDcgKzMzNyw3IEBAIHN0YXRpYyB2b2lkIGVuY29kZU5TRXJyb3IoRW5jb2RlciYgZW5jb2Rlciwg
TlNFcnJvciAqbnNFcnJvcikKICAgICAgICAgLy8gVHVybiBTZWNJZGVudGl0eSBtZW1iZXJzIGlu
dG8gU2VjQ2VydGlmaWNhdGUgdG8gc3RyaXAgb3V0IHByaXZhdGUga2V5IGluZm9ybWF0aW9uLgog
ICAgICAgICBpZCBjbGllbnRDZXJ0aWZpY2F0ZXMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRo
Q2FwYWNpdHk6Y2xpZW50SWRlbnRpdHlBbmRDZXJ0aWZpY2F0ZXMuY291bnRdOwogICAgICAgICBm
b3IgKGlkIG9iamVjdCBpbiBjbGllbnRJZGVudGl0eUFuZENlcnRpZmljYXRlcykgewotICAgICAg
ICAgICAgaWYgKENGR2V0VHlwZUlEKG9iamVjdCkgIT0gU2VjSWRlbnRpdHlHZXRUeXBlSUQoKSkg
eworICAgICAgICAgICAgaWYgKENGR2V0VHlwZUlEKChfX2JyaWRnZSBDRlR5cGVSZWYpb2JqZWN0
KSAhPSBTZWNJZGVudGl0eUdldFR5cGVJRCgpKSB7CiAgICAgICAgICAgICAgICAgW2NsaWVudENl
cnRpZmljYXRlcyBhZGRPYmplY3Q6b2JqZWN0XTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgICAgIH0KQEAgLTM1MSwyNyArMzUxLDI3IEBAIHN0YXRpYyB2b2lkIGVuY29kZU5T
RXJyb3IoRW5jb2RlciYgZW5jb2RlciwgTlNFcnJvciAqbnNFcnJvcikKICAgICAgICAgICAgICAg
ICBjbGllbnRDZXJ0aWZpY2F0ZXMgPSBuaWw7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBbY2xpZW50Q2VydGlmaWNhdGVzIGFkZE9iamVjdDooaWQp
Y2VydGlmaWNhdGVdOworICAgICAgICAgICAgW2NsaWVudENlcnRpZmljYXRlcyBhZGRPYmplY3Q6
KF9fYnJpZGdlIGlkKWNlcnRpZmljYXRlXTsKICAgICAgICAgfQotICAgICAgICBDRkRpY3Rpb25h
cnlTZXRWYWx1ZShmaWx0ZXJlZFVzZXJJbmZvLmdldCgpLCBAIk5TRXJyb3JDbGllbnRDZXJ0aWZp
Y2F0ZUNoYWluS2V5IiwgY2xpZW50Q2VydGlmaWNhdGVzKTsKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5
U2V0VmFsdWUoZmlsdGVyZWRVc2VySW5mby5nZXQoKSwgQ0ZTVFIoIk5TRXJyb3JDbGllbnRDZXJ0
aWZpY2F0ZUNoYWluS2V5IiksIChfX2JyaWRnZSBDRlR5cGVSZWYpY2xpZW50Q2VydGlmaWNhdGVz
KTsKICAgICB9CiAKICAgICBpZCBwZWVyQ2VydGlmaWNhdGVDaGFpbiA9IFt1c2VySW5mbyBvYmpl
Y3RGb3JLZXk6QCJOU0Vycm9yUGVlckNlcnRpZmljYXRlQ2hhaW5LZXkiXTsKICAgICBpZiAoIXBl
ZXJDZXJ0aWZpY2F0ZUNoYWluKSB7Ci0gICAgICAgIGlmIChTZWNUcnVzdFJlZiBwZWVyVHJ1c3Qg
PSAoU2VjVHJ1c3RSZWYpW3VzZXJJbmZvIG9iamVjdEZvcktleTpOU1VSTEVycm9yRmFpbGluZ1VS
TFBlZXJUcnVzdEVycm9yS2V5XSkgeworICAgICAgICBpZiAoU2VjVHJ1c3RSZWYgcGVlclRydXN0
ID0gKF9fYnJpZGdlIFNlY1RydXN0UmVmKVt1c2VySW5mbyBvYmplY3RGb3JLZXk6TlNVUkxFcnJv
ckZhaWxpbmdVUkxQZWVyVHJ1c3RFcnJvcktleV0pIHsKICAgICAgICAgICAgIENGSW5kZXggY291
bnQgPSBTZWNUcnVzdEdldENlcnRpZmljYXRlQ291bnQocGVlclRydXN0KTsKICAgICAgICAgICAg
IHBlZXJDZXJ0aWZpY2F0ZUNoYWluID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5
OmNvdW50XTsKICAgICAgICAgICAgIGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8IGNvdW50OyArK2kp
Ci0gICAgICAgICAgICAgICAgW3BlZXJDZXJ0aWZpY2F0ZUNoYWluIGFkZE9iamVjdDooaWQpU2Vj
VHJ1c3RHZXRDZXJ0aWZpY2F0ZUF0SW5kZXgocGVlclRydXN0LCBpKV07CisgICAgICAgICAgICAg
ICAgW3BlZXJDZXJ0aWZpY2F0ZUNoYWluIGFkZE9iamVjdDooX19icmlkZ2UgaWQpU2VjVHJ1c3RH
ZXRDZXJ0aWZpY2F0ZUF0SW5kZXgocGVlclRydXN0LCBpKV07CiAgICAgICAgIH0KICAgICB9CiAg
ICAgQVNTRVJUKCFwZWVyQ2VydGlmaWNhdGVDaGFpbiB8fCBbcGVlckNlcnRpZmljYXRlQ2hhaW4g
aXNLaW5kT2ZDbGFzczpbTlNBcnJheSBjbGFzc11dKTsKICAgICBpZiAocGVlckNlcnRpZmljYXRl
Q2hhaW4pCi0gICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGZpbHRlcmVkVXNlckluZm8uZ2V0
KCksIEAiTlNFcnJvclBlZXJDZXJ0aWZpY2F0ZUNoYWluS2V5IiwgcGVlckNlcnRpZmljYXRlQ2hh
aW4pOworICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShmaWx0ZXJlZFVzZXJJbmZvLmdldCgp
LCBDRlNUUigiTlNFcnJvclBlZXJDZXJ0aWZpY2F0ZUNoYWluS2V5IiksIChfX2JyaWRnZSBDRlR5
cGVSZWYpcGVlckNlcnRpZmljYXRlQ2hhaW4pOwogCiAjaWYgSEFWRShTRUNfVFJVU1RfU0VSSUFM
SVpBVElPTikKLSAgICBpZiAoU2VjVHJ1c3RSZWYgcGVlclRydXN0ID0gKFNlY1RydXN0UmVmKVt1
c2VySW5mbyBvYmplY3RGb3JLZXk6TlNVUkxFcnJvckZhaWxpbmdVUkxQZWVyVHJ1c3RFcnJvcktl
eV0pCi0gICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGZpbHRlcmVkVXNlckluZm8uZ2V0KCks
IE5TVVJMRXJyb3JGYWlsaW5nVVJMUGVlclRydXN0RXJyb3JLZXksIHBlZXJUcnVzdCk7CisgICAg
aWYgKFNlY1RydXN0UmVmIHBlZXJUcnVzdCA9IChfX2JyaWRnZSBTZWNUcnVzdFJlZilbdXNlcklu
Zm8gb2JqZWN0Rm9yS2V5Ok5TVVJMRXJyb3JGYWlsaW5nVVJMUGVlclRydXN0RXJyb3JLZXldKQor
ICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShmaWx0ZXJlZFVzZXJJbmZvLmdldCgpLCAoX19i
cmlkZ2UgQ0ZTdHJpbmdSZWYpTlNVUkxFcnJvckZhaWxpbmdVUkxQZWVyVHJ1c3RFcnJvcktleSwg
cGVlclRydXN0KTsKICNlbmRpZgogCiAgICAgSVBDOjplbmNvZGUoZW5jb2RlciwgZmlsdGVyZWRV
c2VySW5mby5nZXQoKSk7CkBAIC00MTMsMTEgKzQxMywxMSBAQCBzdGF0aWMgYm9vbCBkZWNvZGVO
U0Vycm9yKERlY29kZXImIGRlY29kZXIsIFJldGFpblB0cjxOU0Vycm9yPiYgbnNFcnJvcikKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBhdXRvIG11dGFibGVVc2VySW5mbyA9
IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZUNvcHkoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgQ0ZEaWN0aW9uYXJ5R2V0Q291bnQodXNlckluZm8uZ2V0KCkpICsgMSwgdXNlckluZm8uZ2V0
KCkpKTsKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUobXV0YWJsZVVzZXJJbmZvLmdldCgp
LCBOU1VuZGVybHlpbmdFcnJvcktleSwgdW5kZXJseWluZ05TRXJyb3IuZ2V0KCkpOworICAgICAg
ICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShtdXRhYmxlVXNlckluZm8uZ2V0KCksIChfX2JyaWRnZSBD
RlN0cmluZ1JlZilOU1VuZGVybHlpbmdFcnJvcktleSwgKF9fYnJpZGdlIENGVHlwZVJlZil1bmRl
cmx5aW5nTlNFcnJvci5nZXQoKSk7CiAgICAgICAgIHVzZXJJbmZvID0gV1RGTW92ZShtdXRhYmxl
VXNlckluZm8pOwogICAgIH0KIAotICAgIG5zRXJyb3IgPSBhZG9wdE5TKFtbTlNFcnJvciBhbGxv
Y10gaW5pdFdpdGhEb21haW46ZG9tYWluIGNvZGU6Y29kZSB1c2VySW5mbzooTlNEaWN0aW9uYXJ5
ICopdXNlckluZm8uZ2V0KCldKTsKKyAgICBuc0Vycm9yID0gYWRvcHROUyhbW05TRXJyb3IgYWxs
b2NdIGluaXRXaXRoRG9tYWluOmRvbWFpbiBjb2RlOmNvZGUgdXNlckluZm86KF9fYnJpZGdlIE5T
RGljdGlvbmFyeSAqKXVzZXJJbmZvLmdldCgpXSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAg
LTQzNSw3ICs0MzUsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UHJvdGVjdGlvblNwYWNlPjo6ZW5j
b2RlUGxhdGZvcm1EYXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0CiB7CiAgICAgYXV0byBhcmNo
aXZlciA9IHNlY3VyZUFyY2hpdmVyKCk7CiAgICAgW2FyY2hpdmVyIGVuY29kZU9iamVjdDpzcGFj
ZS5uc1NwYWNlKCkgZm9yS2V5OkAicHJvdGVjdGlvblNwYWNlIl07Ci0gICAgSVBDOjplbmNvZGUo
ZW5jb2RlciwgcmVpbnRlcnByZXRfY2FzdDxDRkRhdGFSZWY+KGFyY2hpdmVyLmdldCgpLmVuY29k
ZWREYXRhKSk7CisgICAgSVBDOjplbmNvZGUoZW5jb2RlciwgKF9fYnJpZGdlIENGRGF0YVJlZilh
cmNoaXZlci5nZXQoKS5lbmNvZGVkRGF0YSk7CiB9CiAKIGJvb2wgQXJndW1lbnRDb2RlcjxQcm90
ZWN0aW9uU3BhY2U+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVjb2RlciYgZGVjb2RlciwgUHJvdGVj
dGlvblNwYWNlJiBzcGFjZSkKQEAgLTQ0NCw3ICs0NDQsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8
UHJvdGVjdGlvblNwYWNlPjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERlY29kZXImIGRlY29kZXIsIFBy
b3RlYwogICAgIGlmICghSVBDOjpkZWNvZGUoZGVjb2RlciwgZGF0YSkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIGF1dG8gdW5hcmNoaXZlciA9IHNlY3VyZVVuYXJjaGl2ZXJGcm9tRGF0
YSgoTlNEYXRhICopZGF0YS5nZXQoKSk7CisgICAgYXV0byB1bmFyY2hpdmVyID0gc2VjdXJlVW5h
cmNoaXZlckZyb21EYXRhKChfX2JyaWRnZSBOU0RhdGEgKilkYXRhLmdldCgpKTsKICAgICBAdHJ5
IHsKICAgICAgICAgaWYgKFJldGFpblB0cjxOU1VSTFByb3RlY3Rpb25TcGFjZT4gbnNTcGFjZSA9
IFt1bmFyY2hpdmVyIGRlY29kZU9iamVjdE9mQ2xhc3M6W05TVVJMUHJvdGVjdGlvblNwYWNlIGNs
YXNzXSBmb3JLZXk6QCJwcm90ZWN0aW9uU3BhY2UiXSkKICAgICAgICAgICAgIHNwYWNlID0gUHJv
dGVjdGlvblNwYWNlKG5zU3BhY2UuZ2V0KCkpOwpAQCAtNDY3LDcgKzQ2Nyw3IEBAIHZvaWQgQXJn
dW1lbnRDb2RlcjxDcmVkZW50aWFsPjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEVuY29kZXImIGVuY29k
ZXIsIGNvbnN0IENyZWRlCiAKICAgICAgICAgaWYgKE5TQXJyYXkgKmNlcnRpZmljYXRlcyA9IG5z
Q3JlZGVudGlhbC5jZXJ0aWZpY2F0ZXMpIHsKICAgICAgICAgICAgIGVuY29kZXIgPDwgdHJ1ZTsK
LSAgICAgICAgICAgIElQQzo6ZW5jb2RlKGVuY29kZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZBcnJh
eVJlZj4oY2VydGlmaWNhdGVzKSk7CisgICAgICAgICAgICBJUEM6OmVuY29kZShlbmNvZGVyLCAo
X19icmlkZ2UgQ0ZBcnJheVJlZiljZXJ0aWZpY2F0ZXMpOwogICAgICAgICB9IGVsc2UKICAgICAg
ICAgICAgIGVuY29kZXIgPDwgZmFsc2U7CiAKQEAgLTQ3OSw3ICs0NzksNyBAQCB2b2lkIEFyZ3Vt
ZW50Q29kZXI8Q3JlZGVudGlhbD46OmVuY29kZVBsYXRmb3JtRGF0YShFbmNvZGVyJiBlbmNvZGVy
LCBjb25zdCBDcmVkZQogCiAgICAgYXV0byBhcmNoaXZlciA9IHNlY3VyZUFyY2hpdmVyKCk7CiAg
ICAgW2FyY2hpdmVyIGVuY29kZU9iamVjdDpuc0NyZWRlbnRpYWwgZm9yS2V5OkAiY3JlZGVudGlh
bCJdOwotICAgIElQQzo6ZW5jb2RlKGVuY29kZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZEYXRhUmVm
PihhcmNoaXZlci5nZXQoKS5lbmNvZGVkRGF0YSkpOworICAgIElQQzo6ZW5jb2RlKGVuY29kZXIs
IChfX2JyaWRnZSBDRkFycmF5UmVmKWFyY2hpdmVyLmdldCgpLmVuY29kZWREYXRhKTsKIH0KIAog
Ym9vbCBBcmd1bWVudENvZGVyPENyZWRlbnRpYWw+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVjb2Rl
ciYgZGVjb2RlciwgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCkKQEAgLTUwNyw3ICs1MDcsNyBAQCBi
b29sIEFyZ3VtZW50Q29kZXI8Q3JlZGVudGlhbD46OmRlY29kZVBsYXRmb3JtRGF0YShEZWNvZGVy
JiBkZWNvZGVyLCBDcmVkZW50aWFsJgogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBlcnNp
c3RlbmNlKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBjcmVkZW50aWFs
ID0gQ3JlZGVudGlhbChhZG9wdE5TKFtbTlNVUkxDcmVkZW50aWFsIGFsbG9jXSBpbml0V2l0aElk
ZW50aXR5OmlkZW50aXR5LmdldCgpIGNlcnRpZmljYXRlczooTlNBcnJheSAqKWNlcnRpZmljYXRl
cy5nZXQoKSBwZXJzaXN0ZW5jZTooTlNVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2UpcGVyc2lzdGVu
Y2VdKS5nZXQoKSk7CisgICAgICAgIGNyZWRlbnRpYWwgPSBDcmVkZW50aWFsKGFkb3B0TlMoW1tO
U1VSTENyZWRlbnRpYWwgYWxsb2NdIGluaXRXaXRoSWRlbnRpdHk6aWRlbnRpdHkuZ2V0KCkgY2Vy
dGlmaWNhdGVzOihfX2JyaWRnZSBOU0FycmF5ICopY2VydGlmaWNhdGVzLmdldCgpIHBlcnNpc3Rl
bmNlOihOU1VSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZSlwZXJzaXN0ZW5jZV0pLmdldCgpKTsKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC01MTUsNyArNTE1LDcgQEAgYm9vbCBBcmd1
bWVudENvZGVyPENyZWRlbnRpYWw+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVjb2RlciYgZGVjb2Rl
ciwgQ3JlZGVudGlhbCYKICAgICBpZiAoIUlQQzo6ZGVjb2RlKGRlY29kZXIsIGRhdGEpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIHVuYXJjaGl2ZXIgPSBzZWN1cmVVbmFyY2hp
dmVyRnJvbURhdGEoKE5TRGF0YSAqKWRhdGEuZ2V0KCkpOworICAgIGF1dG8gdW5hcmNoaXZlciA9
IHNlY3VyZVVuYXJjaGl2ZXJGcm9tRGF0YSgoX19icmlkZ2UgTlNEYXRhICopZGF0YS5nZXQoKSk7
CiAgICAgQHRyeSB7CiAgICAgICAgIGlmIChSZXRhaW5QdHI8TlNVUkxDcmVkZW50aWFsPiBuc0Ny
ZWRlbnRpYWwgPSBbdW5hcmNoaXZlciBkZWNvZGVPYmplY3RPZkNsYXNzOltOU1VSTENyZWRlbnRp
YWwgY2xhc3NdIGZvcktleTpAImNyZWRlbnRpYWwiXSkKICAgICAgICAgICAgIGNyZWRlbnRpYWwg
PSBDcmVkZW50aWFsKG5zQ3JlZGVudGlhbC5nZXQoKSk7CkBAIC01NzQsMTEgKzU3NCwxMiBAQCBz
dGQ6Om9wdGlvbmFsPEtleXByZXNzQ29tbWFuZD4gQXJndW1lbnRDb2RlcjxLZXlwcmVzc0NvbW1h
bmQ+OjpkZWNvZGUoRGVjb2RlciYgZAogfQogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
KQorCiB2b2lkIEFyZ3VtZW50Q29kZXI8Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyPjo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciYg
Y29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyKQogewogICAgIGF1dG8gYXJjaGl2ZXIgPSBzZWN1
cmVBcmNoaXZlcigpOwogICAgIGNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5lbmNvZGUoYXJj
aGl2ZXIuZ2V0KCkpOwotICAgIElQQzo6ZW5jb2RlKGVuY29kZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8
Q0ZEYXRhUmVmPihhcmNoaXZlci5nZXQoKS5lbmNvZGVkRGF0YSkpOworICAgIElQQzo6ZW5jb2Rl
KGVuY29kZXIsIChfX2JyaWRnZSBDRkRhdGFSZWYpYXJjaGl2ZXIuZ2V0KCkuZW5jb2RlZERhdGEp
OwogfQogCiBib29sIEFyZ3VtZW50Q29kZXI8Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyPjo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciYgY29u
dGVudEZpbHRlclVuYmxvY2tIYW5kbGVyKQpAQCAtNTg3LDEzICs1ODgsMTQgQEAgYm9vbCBBcmd1
bWVudENvZGVyPENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcj46OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyLCBDb250ZW4KICAgICBpZiAoIUlQQzo6ZGVjb2RlKGRlY29kZXIsIGRhdGEpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIHVuYXJjaGl2ZXIgPSBzZWN1cmVVbmFyY2hp
dmVyRnJvbURhdGEoKE5TRGF0YSAqKWRhdGEuZ2V0KCkpOworICAgIGF1dG8gdW5hcmNoaXZlciA9
IHNlY3VyZVVuYXJjaGl2ZXJGcm9tRGF0YSgoX19icmlkZ2UgTlNEYXRhICopZGF0YS5nZXQoKSk7
CiAgICAgaWYgKCFDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OmRlY29kZSh1bmFyY2hpdmVy
LmdldCgpLCBjb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICBbdW5hcmNoaXZlciBmaW5pc2hEZWNvZGluZ107CiAgICAgcmV0dXJuIHRydWU7
CiB9CisKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKQEAg
LTYxMSw3ICs2MTMsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8TWVkaWFQbGF5YmFja1RhcmdldENv
bnRleHQ+OjplbmNvZGVQbGF0Zm9ybURhdGEoRW5jb2RlciYgZW5jbwogICAgIGlmIChbZ2V0QVZP
dXRwdXRDb250ZXh0Q2xhc3MoKSBjb25mb3Jtc1RvUHJvdG9jb2w6QHByb3RvY29sKE5TU2VjdXJl
Q29kaW5nKV0pCiAgICAgICAgIFthcmNoaXZlciBlbmNvZGVPYmplY3Q6dGFyZ2V0LmF2T3V0cHV0
Q29udGV4dCgpIGZvcktleTpkZXZpY2VDb250ZXh0S2V5KCldOwogCi0gICAgSVBDOjplbmNvZGUo
ZW5jb2RlciwgcmVpbnRlcnByZXRfY2FzdDxDRkRhdGFSZWY+KGFyY2hpdmVyLmdldCgpLmVuY29k
ZWREYXRhKSk7CisgICAgSVBDOjplbmNvZGUoZW5jb2RlciwgKF9fYnJpZGdlIENGRGF0YVJlZilh
cmNoaXZlci5nZXQoKS5lbmNvZGVkRGF0YSk7CiB9CiAKIGJvb2wgQXJndW1lbnRDb2RlcjxNZWRp
YVBsYXliYWNrVGFyZ2V0Q29udGV4dD46OmRlY29kZVBsYXRmb3JtRGF0YShEZWNvZGVyJiBkZWNv
ZGVyLCBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dCYgdGFyZ2V0KQpAQCAtNjIzLDcgKzYyNSw3
IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dD46OmRlY29k
ZVBsYXRmb3JtRGF0YShEZWNvZGVyJiBkZWNvCiAgICAgaWYgKCFJUEM6OmRlY29kZShkZWNvZGVy
LCBkYXRhKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byB1bmFyY2hpdmVyID0g
c2VjdXJlVW5hcmNoaXZlckZyb21EYXRhKChOU0RhdGEgKilkYXRhLmdldCgpKTsKKyAgICBhdXRv
IHVuYXJjaGl2ZXIgPSBzZWN1cmVVbmFyY2hpdmVyRnJvbURhdGEoKF9fYnJpZGdlIE5TRGF0YSAq
KWRhdGEuZ2V0KCkpOwogCiAgICAgQVZPdXRwdXRDb250ZXh0ICpjb250ZXh0ID0gbmlsOwogICAg
IEB0cnkgewpAQCAtNjM4LDYgKzY0MCw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxNZWRpYVBsYXli
YWNrVGFyZ2V0Q29udGV4dD46OmRlY29kZVBsYXRmb3JtRGF0YShEZWNvZGVyJiBkZWNvCiAgICAg
W3VuYXJjaGl2ZXIgZmluaXNoRGVjb2RpbmddOwogICAgIHJldHVybiB0cnVlOwogfQorCiAjZW5k
aWYKIAogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9tYWMvV2ViSGl0VGVzdFJlc3VsdERhdGEubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMv
V2ViSGl0VGVzdFJlc3VsdERhdGEubW0KaW5kZXggMWRjMDA0OWIwNzMwNzNmOWY0MGI1Zjk5NmNh
ZGViYmI5NjdjMWZkOS4uNTg4YzVlNTE4YTI0OTdmMzU4ZjRiODJjYmFhYzk0MThkOWFkMTBjMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dlYkhpdFRlc3RSZXN1bHREYXRh
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJIaXRUZXN0UmVzdWx0RGF0YS5t
bQpAQCAtNDgsNyArNDgsNyBAQCB2b2lkIFdlYkhpdFRlc3RSZXN1bHREYXRhOjpwbGF0Zm9ybUVu
Y29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgYXV0byBhcmNoaXZlciA9IHNl
Y3VyZUFyY2hpdmVyKCk7CiAgICAgW2FyY2hpdmVyIGVuY29kZU9iamVjdDpkZXRlY3RlZERhdGFB
Y3Rpb25Db250ZXh0LmdldCgpIGZvcktleTpAImFjdGlvbkNvbnRleHQiXTsKIAotICAgIElQQzo6
ZW5jb2RlKGVuY29kZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZEYXRhUmVmPihhcmNoaXZlci5nZXQo
KS5lbmNvZGVkRGF0YSkpOworICAgIElQQzo6ZW5jb2RlKGVuY29kZXIsIChfX2JyaWRnZSBDRkRh
dGFSZWYpYXJjaGl2ZXIuZ2V0KCkuZW5jb2RlZERhdGEpOwogCiAgICAgZW5jb2RlciA8PCBkZXRl
Y3RlZERhdGFCb3VuZGluZ0JveDsKICAgICBlbmNvZGVyIDw8IGRldGVjdGVkRGF0YU9yaWdpbmF0
aW5nUGFnZU92ZXJsYXk7CkBAIC03Myw3ICs3Myw3IEBAIGJvb2wgV2ViSGl0VGVzdFJlc3VsdERh
dGE6OnBsYXRmb3JtRGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgV2ViSGl0VGVzdFJlc3Vs
CiAgICAgaWYgKCFJUEM6OmRlY29kZShkZWNvZGVyLCBkYXRhKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgYXV0byB1bmFyY2hpdmVyID0gc2VjdXJlVW5hcmNoaXZlckZyb21EYXRhKChO
U0RhdGEgKilkYXRhLmdldCgpKTsKKyAgICBhdXRvIHVuYXJjaGl2ZXIgPSBzZWN1cmVVbmFyY2hp
dmVyRnJvbURhdGEoKF9fYnJpZGdlIE5TRGF0YSAqKWRhdGEuZ2V0KCkpOwogICAgIEB0cnkgewog
ICAgICAgICBoaXRUZXN0UmVzdWx0RGF0YS5kZXRlY3RlZERhdGFBY3Rpb25Db250ZXh0ID0gW3Vu
YXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpnZXREREFjdGlvbkNvbnRleHRDbGFzcygpIGZv
cktleTpAImFjdGlvbkNvbnRleHQiXTsKICAgICB9IEBjYXRjaCAoTlNFeGNlcHRpb24gKmV4Y2Vw
dGlvbikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvbWFjL1dL
Q29udGV4dFByaXZhdGVNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9tYWMv
V0tDb250ZXh0UHJpdmF0ZU1hYy5tbQppbmRleCA3ZjkzYzFlMzJhYTQxNDNmNGRiMjAyMGFiYWYz
YWYwMjZhOGJiMTk4Li4xZDgxMWFjY2VhNDlkNGU4NDg5ZGRjNDJjMTVjNzJlYzRmYWIzYWY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJp
dmF0ZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250
ZXh0UHJpdmF0ZU1hYy5tbQpAQCAtNDksNyArNDksNyBAQCBib29sIFdLQ29udGV4dElzUGx1Z0lu
VXBkYXRlQXZhaWxhYmxlKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1N0cmluZ1JlZiBwbHVn
SQogI2lmIFBMQVRGT1JNKElPUykKICAgICByZXR1cm4gZmFsc2U7CiAjZWxzZQotICAgIHJldHVy
biBXZWJDb3JlOjpQbHVnaW5CbGFja2xpc3Q6OmlzUGx1Z2luVXBkYXRlQXZhaWxhYmxlKChOU1N0
cmluZyAqKWFkb3B0Q0YoV0tTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
cGx1Z0luQnVuZGxlSWRlbnRpZmllclJlZikpLmdldCgpKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6
UGx1Z2luQmxhY2tsaXN0Ojppc1BsdWdpblVwZGF0ZUF2YWlsYWJsZSgoX19icmlkZ2UgTlNTdHJp
bmcgKilhZG9wdENGKFdLU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIHBs
dWdJbkJ1bmRsZUlkZW50aWZpZXJSZWYpKS5nZXQoKSk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0Q29u
dHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5n
Q29udGV4dENvbnRyb2xsZXIubW0KaW5kZXggYmI2YmU3ZTk3MzgwNmFkZmVlMzlmYjlkZmE3ZmM4
MjA4NDlhZjdhNS4uMTBkMDExNTg3YTU3ZjgxNjliYjE1ODU5OTYwMDA5YWJhMzkwZThmOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250
ZXh0Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tCkBAIC0yOTYsNyArMjk2LDcgQEAgLSAoTlNT
dHJpbmcgKil0aXRsZQogLSAoTlNBcnJheSAqKWNlcnRpZmljYXRlQ2hhaW4KIHsKICAgICBpZiAo
V2ViRnJhbWVQcm94eSogbWFpbkZyYW1lID0gX3BhZ2UtPm1haW5GcmFtZSgpKQotICAgICAgICBy
ZXR1cm4gbWFpbkZyYW1lLT5jZXJ0aWZpY2F0ZUluZm8oKSA/IChOU0FycmF5ICopbWFpbkZyYW1l
LT5jZXJ0aWZpY2F0ZUluZm8oKS0+Y2VydGlmaWNhdGVJbmZvKCkuY2VydGlmaWNhdGVDaGFpbigp
IDogbmlsOworICAgICAgICByZXR1cm4gbWFpbkZyYW1lLT5jZXJ0aWZpY2F0ZUluZm8oKSA/IChf
X2JyaWRnZSBOU0FycmF5ICopbWFpbkZyYW1lLT5jZXJ0aWZpY2F0ZUluZm8oKS0+Y2VydGlmaWNh
dGVJbmZvKCkuY2VydGlmaWNhdGVDaGFpbigpIDogbmlsOwogCiAgICAgcmV0dXJuIG5pbDsKIH0K
QEAgLTMyOCw3ICszMjgsNyBAQCBzdGF0aWMgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZv
ckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXSwogICAgIGlmICghV0tG
cmFtZUlzTWFpbkZyYW1lKGZyYW1lKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgV0tCcm93c2lu
Z0NvbnRleHRDb250cm9sbGVyICpicm93c2luZ0NvbnRleHQgPSAoV0tCcm93c2luZ0NvbnRleHRD
b250cm9sbGVyICopY2xpZW50SW5mbzsKKyAgICBhdXRvIGJyb3dzaW5nQ29udGV4dCA9IChfX2Jy
aWRnZSBXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKiljbGllbnRJbmZvOwogICAgIGF1dG8g
bG9hZERlbGVnYXRlID0gYnJvd3NpbmdDb250ZXh0LT5fbG9hZERlbGVnYXRlLmdldCgpOwogCiAg
ICAgaWYgKFtsb2FkRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihicm93c2lu
Z0NvbnRleHRDb250cm9sbGVyRGlkU3RhcnRQcm92aXNpb25hbExvYWQ6KV0pCkBAIC0zNDAsNyAr
MzQwLDcgQEAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9u
YWxMb2FkRm9yRnJhbWUoV0tQYWdlUmVmIHBhZ2UsIFcKICAgICBpZiAoIVdLRnJhbWVJc01haW5G
cmFtZShmcmFtZSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFdLQnJvd3NpbmdDb250ZXh0Q29u
dHJvbGxlciAqYnJvd3NpbmdDb250ZXh0ID0gKFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAq
KWNsaWVudEluZm87CisgICAgYXV0byBicm93c2luZ0NvbnRleHQgPSAoX19icmlkZ2UgV0tCcm93
c2luZ0NvbnRleHRDb250cm9sbGVyICopY2xpZW50SW5mbzsKICAgICBhdXRvIGxvYWREZWxlZ2F0
ZSA9IGJyb3dzaW5nQ29udGV4dC0+X2xvYWREZWxlZ2F0ZS5nZXQoKTsKIAogICAgIGlmIChbbG9h
ZERlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoYnJvd3NpbmdDb250ZXh0Q29u
dHJvbGxlckRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZDopXSkKQEAg
LTM1Miw3ICszNTIsNyBAQCBzdGF0aWMgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVy
cm9yRm9yRnJhbWUoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZgogICAgIGlmICghV0tGcmFt
ZUlzTWFpbkZyYW1lKGZyYW1lKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgV0tCcm93c2luZ0Nv
bnRleHRDb250cm9sbGVyICpicm93c2luZ0NvbnRleHQgPSAoV0tCcm93c2luZ0NvbnRleHRDb250
cm9sbGVyICopY2xpZW50SW5mbzsKKyAgICBhdXRvIGJyb3dzaW5nQ29udGV4dCA9IChfX2JyaWRn
ZSBXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKiljbGllbnRJbmZvOwogICAgIGF1dG8gbG9h
ZERlbGVnYXRlID0gYnJvd3NpbmdDb250ZXh0LT5fbG9hZERlbGVnYXRlLmdldCgpOwogCiAgICAg
aWYgKFtsb2FkRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihicm93c2luZ0Nv
bnRleHRDb250cm9sbGVyOmRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3I6KV0pCkBAIC0z
NjQsNyArMzY0LDcgQEAgc3RhdGljIHZvaWQgZGlkQ29tbWl0TG9hZEZvckZyYW1lKFdLUGFnZVJl
ZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYgdXMKICAgICBpZiAoIVdLRnJhbWVJ
c01haW5GcmFtZShmcmFtZSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFdLQnJvd3NpbmdDb250
ZXh0Q29udHJvbGxlciAqYnJvd3NpbmdDb250ZXh0ID0gKFdLQnJvd3NpbmdDb250ZXh0Q29udHJv
bGxlciAqKWNsaWVudEluZm87CisgICAgYXV0byBicm93c2luZ0NvbnRleHQgPSAoX19icmlkZ2Ug
V0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyICopY2xpZW50SW5mbzsKICAgICBhdXRvIGxvYWRE
ZWxlZ2F0ZSA9IGJyb3dzaW5nQ29udGV4dC0+X2xvYWREZWxlZ2F0ZS5nZXQoKTsKIAogICAgIGlm
IChbbG9hZERlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoYnJvd3NpbmdDb250
ZXh0Q29udHJvbGxlckRpZENvbW1pdExvYWQ6KV0pCkBAIC0zNzYsNyArMzc2LDcgQEAgc3RhdGlj
IHZvaWQgZGlkRmluaXNoTG9hZEZvckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZy
YW1lLCBXS1R5cGVSZWYgdXMKICAgICBpZiAoIVdLRnJhbWVJc01haW5GcmFtZShmcmFtZSkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqYnJvd3Np
bmdDb250ZXh0ID0gKFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqKWNsaWVudEluZm87Cisg
ICAgYXV0byBicm93c2luZ0NvbnRleHQgPSAoX19icmlkZ2UgV0tCcm93c2luZ0NvbnRleHRDb250
cm9sbGVyICopY2xpZW50SW5mbzsKICAgICBhdXRvIGxvYWREZWxlZ2F0ZSA9IGJyb3dzaW5nQ29u
dGV4dC0+X2xvYWREZWxlZ2F0ZS5nZXQoKTsKIAogICAgIGlmIChbbG9hZERlbGVnYXRlIHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlckRpZEZpbmlz
aExvYWQ6KV0pCkBAIC0zODgsNyArMzg4LDcgQEAgc3RhdGljIHZvaWQgZGlkRmFpbExvYWRXaXRo
RXJyb3JGb3JGcmFtZShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tFcnIKICAg
ICBpZiAoIVdLRnJhbWVJc01haW5GcmFtZShmcmFtZSkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqYnJvd3NpbmdDb250ZXh0ID0gKFdLQnJvd3Np
bmdDb250ZXh0Q29udHJvbGxlciAqKWNsaWVudEluZm87CisgICAgYXV0byBicm93c2luZ0NvbnRl
eHQgPSAoX19icmlkZ2UgV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyICopY2xpZW50SW5mbzsK
ICAgICBhdXRvIGxvYWREZWxlZ2F0ZSA9IGJyb3dzaW5nQ29udGV4dC0+X2xvYWREZWxlZ2F0ZS5n
ZXQoKTsKIAogICAgIGlmIChbbG9hZERlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0
b3IoYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlcjpkaWRGYWlsTG9hZFdpdGhFcnJvcjopXSkKQEAg
LTM5Nyw3ICszOTcsNyBAQCBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1l
KFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS0VycgogCiBzdGF0aWMgYm9vbCBj
YW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlSW5GcmFtZShXS1BhZ2VSZWYgcGFn
ZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tQcm90ZWN0aW9uU3BhY2VSZWYgcHJvdGVjdGlvblNwYWNl
LCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQogewotICAgIFdLQnJvd3NpbmdDb250ZXh0Q29udHJv
bGxlciAqYnJvd3NpbmdDb250ZXh0ID0gKFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqKWNs
aWVudEluZm87CisgICAgYXV0byBicm93c2luZ0NvbnRleHQgPSAoX19icmlkZ2UgV0tCcm93c2lu
Z0NvbnRleHRDb250cm9sbGVyICopY2xpZW50SW5mbzsKICAgICBhdXRvIGxvYWREZWxlZ2F0ZSA9
IGJyb3dzaW5nQ29udGV4dC0+X2xvYWREZWxlZ2F0ZS5nZXQoKTsKIAogICAgIGlmIChbbG9hZERl
bGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoYnJvd3NpbmdDb250ZXh0Q29udHJv
bGxlcjpjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlOildKQpAQCAtNDA4LDcg
KzQwOCw3IEBAIHN0YXRpYyBib29sIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3Bh
Y2VJbkZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lCiAKIHN0YXRpYyB2b2lkIGRpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUluRnJhbWUoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVS
ZWYgZnJhbWUsIFdLQXV0aGVudGljYXRpb25DaGFsbGVuZ2VSZWYgYXV0aGVudGljYXRpb25DaGFs
bGVuZ2UsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pCiB7Ci0gICAgV0tCcm93c2luZ0NvbnRleHRD
b250cm9sbGVyICpicm93c2luZ0NvbnRleHQgPSAoV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVy
ICopY2xpZW50SW5mbzsKKyAgICBhdXRvIGJyb3dzaW5nQ29udGV4dCA9IChfX2JyaWRnZSBXS0Jy
b3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKiljbGllbnRJbmZvOwogICAgIGF1dG8gbG9hZERlbGVn
YXRlID0gYnJvd3NpbmdDb250ZXh0LT5fbG9hZERlbGVnYXRlLmdldCgpOwogCiAgICAgaWYgKFts
b2FkRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihicm93c2luZ0NvbnRleHRD
b250cm9sbGVyOmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTopXSkKQEAgLTQxNyw3
ICs0MTcsNyBAQCBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VJ
bkZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmCiAKIHN0YXRpYyB2b2lkIGRpZFN0YXJ0
UHJvZ3Jlc3MoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7Ci0gICAg
V0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyICpicm93c2luZ0NvbnRleHQgPSAoV0tCcm93c2lu
Z0NvbnRleHRDb250cm9sbGVyICopY2xpZW50SW5mbzsKKyAgICBhdXRvIGJyb3dzaW5nQ29udGV4
dCA9IChfX2JyaWRnZSBXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKiljbGllbnRJbmZvOwog
ICAgIGF1dG8gbG9hZERlbGVnYXRlID0gYnJvd3NpbmdDb250ZXh0LT5fbG9hZERlbGVnYXRlLmdl
dCgpOwogCiAgICAgaWYgKFtsb2FkRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rv
cihicm93c2luZ0NvbnRleHRDb250cm9sbGVyRGlkU3RhcnRQcm9ncmVzczopXSkKQEAgLTQyNiw3
ICs0MjYsNyBAQCBzdGF0aWMgdm9pZCBkaWRTdGFydFByb2dyZXNzKFdLUGFnZVJlZiBwYWdlLCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKQogCiBzdGF0aWMgdm9pZCBkaWRDaGFuZ2VQcm9ncmVzcyhX
S1BhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKLSAgICBXS0Jyb3dzaW5n
Q29udGV4dENvbnRyb2xsZXIgKmJyb3dzaW5nQ29udGV4dCA9IChXS0Jyb3dzaW5nQ29udGV4dENv
bnRyb2xsZXIgKiljbGllbnRJbmZvOworICAgIGF1dG8gYnJvd3NpbmdDb250ZXh0ID0gKF9fYnJp
ZGdlIFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqKWNsaWVudEluZm87CiAgICAgYXV0byBs
b2FkRGVsZWdhdGUgPSBicm93c2luZ0NvbnRleHQtPl9sb2FkRGVsZWdhdGUuZ2V0KCk7CiAKICAg
ICBpZiAoW2xvYWREZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGJyb3dzaW5n
Q29udGV4dENvbnRyb2xsZXI6ZXN0aW1hdGVkUHJvZ3Jlc3NDaGFuZ2VkVG86KV0pCkBAIC00MzUs
NyArNDM1LDcgQEAgc3RhdGljIHZvaWQgZGlkQ2hhbmdlUHJvZ3Jlc3MoV0tQYWdlUmVmIHBhZ2Us
IGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiAKIHN0YXRpYyB2b2lkIGRpZEZpbmlzaFByb2dyZXNz
KFdLUGFnZVJlZiBwYWdlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewotICAgIFdLQnJvd3Np
bmdDb250ZXh0Q29udHJvbGxlciAqYnJvd3NpbmdDb250ZXh0ID0gKFdLQnJvd3NpbmdDb250ZXh0
Q29udHJvbGxlciAqKWNsaWVudEluZm87CisgICAgYXV0byBicm93c2luZ0NvbnRleHQgPSAoX19i
cmlkZ2UgV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyICopY2xpZW50SW5mbzsKICAgICBhdXRv
IGxvYWREZWxlZ2F0ZSA9IGJyb3dzaW5nQ29udGV4dC0+X2xvYWREZWxlZ2F0ZS5nZXQoKTsKIAog
ICAgIGlmIChbbG9hZERlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoYnJvd3Np
bmdDb250ZXh0Q29udHJvbGxlckRpZEZpbmlzaFByb2dyZXNzOildKQpAQCAtNDQ0LDcgKzQ0NCw3
IEBAIHN0YXRpYyB2b2lkIGRpZEZpbmlzaFByb2dyZXNzKFdLUGFnZVJlZiBwYWdlLCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKQogCiBzdGF0aWMgdm9pZCBkaWRDaGFuZ2VCYWNrRm9yd2FyZExpc3Qo
V0tQYWdlUmVmIHBhZ2UsIFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZiBhZGRlZEl0ZW0sIFdLQXJy
YXlSZWYgcmVtb3ZlZEl0ZW1zLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQogewotICAgIFdLQnJv
d3NpbmdDb250ZXh0Q29udHJvbGxlciAqYnJvd3NpbmdDb250ZXh0ID0gKFdLQnJvd3NpbmdDb250
ZXh0Q29udHJvbGxlciAqKWNsaWVudEluZm87CisgICAgYXV0byBicm93c2luZ0NvbnRleHQgPSAo
X19icmlkZ2UgV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyICopY2xpZW50SW5mbzsKICAgICBh
dXRvIGxvYWREZWxlZ2F0ZSA9IGJyb3dzaW5nQ29udGV4dC0+X2xvYWREZWxlZ2F0ZS5nZXQoKTsK
IAogICAgIGlmICghW2xvYWREZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGJy
b3dzaW5nQ29udGV4dENvbnRyb2xsZXJEaWRDaGFuZ2VCYWNrRm9yd2FyZExpc3Q6YWRkZWRJdGVt
OnJlbW92ZWRJdGVtczopXSkKQEAgLTQ1Nyw3ICs0NTcsNyBAQCBzdGF0aWMgdm9pZCBkaWRDaGFu
Z2VCYWNrRm9yd2FyZExpc3QoV0tQYWdlUmVmIHBhZ2UsIFdLQmFja0ZvcndhcmRMaXN0SXRlbVJl
ZiBhZAogCiBzdGF0aWMgdm9pZCBwcm9jZXNzRGlkQ3Jhc2goV0tQYWdlUmVmIHBhZ2UsIGNvbnN0
IHZvaWQqIGNsaWVudEluZm8pCiB7Ci0gICAgV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyICpi
cm93c2luZ0NvbnRleHQgPSAoV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyICopY2xpZW50SW5m
bzsKKyAgICBhdXRvIGJyb3dzaW5nQ29udGV4dCA9IChfX2JyaWRnZSBXS0Jyb3dzaW5nQ29udGV4
dENvbnRyb2xsZXIgKiljbGllbnRJbmZvOwogICAgIGF1dG8gbG9hZERlbGVnYXRlID0gYnJvd3Np
bmdDb250ZXh0LT5fbG9hZERlbGVnYXRlLmdldCgpOwogCiAgICAgaWYgKFtsb2FkRGVsZWdhdGUg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihicm93c2luZ0NvbnRleHRDb250cm9sbGVyV2Vi
UHJvY2Vzc0RpZENyYXNoOildKQpAQCAtNDcwLDcgKzQ3MCw3IEBAIHN0YXRpYyB2b2lkIHNldFVw
UGFnZUxvYWRlckNsaWVudChXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKmJyb3dzaW5nQ29u
dGV4dCwKICAgICBtZW1zZXQoJmxvYWRlckNsaWVudCwgMCwgc2l6ZW9mKGxvYWRlckNsaWVudCkp
OwogCiAgICAgbG9hZGVyQ2xpZW50LmJhc2UudmVyc2lvbiA9IDQ7Ci0gICAgbG9hZGVyQ2xpZW50
LmJhc2UuY2xpZW50SW5mbyA9IGJyb3dzaW5nQ29udGV4dDsKKyAgICBsb2FkZXJDbGllbnQuYmFz
ZS5jbGllbnRJbmZvID0gKF9fYnJpZGdlIHZvaWQqKWJyb3dzaW5nQ29udGV4dDsKICAgICBsb2Fk
ZXJDbGllbnQuZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSA9IGRpZFN0YXJ0UHJvdmlz
aW9uYWxMb2FkRm9yRnJhbWU7CiAgICAgbG9hZGVyQ2xpZW50LmRpZFJlY2VpdmVTZXJ2ZXJSZWRp
cmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lID0gZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0
Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU7CiAgICAgbG9hZGVyQ2xpZW50LmRpZEZhaWxQcm92
aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZSA9IGRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRo
RXJyb3JGb3JGcmFtZTsKQEAgLTUyMCwxMSArNTIwLDExIEBAIHN0YXRpYyB2b2lkIHNldFVwUGFn
ZVBvbGljeUNsaWVudChXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKmJyb3dzaW5nQ29udGV4
dCwKICAgICBtZW1zZXQoJnBvbGljeUNsaWVudCwgMCwgc2l6ZW9mKHBvbGljeUNsaWVudCkpOwog
CiAgICAgcG9saWN5Q2xpZW50LmJhc2UudmVyc2lvbiA9IDI7Ci0gICAgcG9saWN5Q2xpZW50LmJh
c2UuY2xpZW50SW5mbyA9IGJyb3dzaW5nQ29udGV4dDsKKyAgICBwb2xpY3lDbGllbnQuYmFzZS5j
bGllbnRJbmZvID0gKF9fYnJpZGdlIHZvaWQqKWJyb3dzaW5nQ29udGV4dDsKIAogICAgIHBvbGlj
eUNsaWVudC5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uID0gW10oV0tQYWdlUmVmIHBh
Z2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLRnJhbWVOYXZpZ2F0aW9uVHlwZSBuYXZpZ2F0aW9uVHlw
ZSwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIFdLRXZlbnRNb3VzZUJ1dHRvbiBtb3VzZUJ1
dHRvbiwgV0tGcmFtZVJlZiBvcmlnaW5hdGluZ0ZyYW1lLCBXS1VSTFJlcXVlc3RSZWYgb3JpZ2lu
YWxSZXF1ZXN0LCBXS1VSTFJlcXVlc3RSZWYgcmVxdWVzdCwgV0tGcmFtZVBvbGljeUxpc3RlbmVy
UmVmIGxpc3RlbmVyLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8p
CiAgICAgewotICAgICAgICBXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKmJyb3dzaW5nQ29u
dGV4dCA9IChXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKiljbGllbnRJbmZvOworICAgICAg
ICBhdXRvIGJyb3dzaW5nQ29udGV4dCA9IChfX2JyaWRnZSBXS0Jyb3dzaW5nQ29udGV4dENvbnRy
b2xsZXIgKiljbGllbnRJbmZvOwogICAgICAgICBhdXRvIHBvbGljeURlbGVnYXRlID0gYnJvd3Np
bmdDb250ZXh0LT5fcG9saWN5RGVsZWdhdGUuZ2V0KCk7CiAKICAgICAgICAgaWYgKFtwb2xpY3lE
ZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGJyb3dzaW5nQ29udGV4dENvbnRy
b2xsZXI6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjpkZWNpc2lvbkhhbmRsZXI6KV0p
IHsKQEAgLTU0OSw3ICs1NDksNyBAQCBzdGF0aWMgdm9pZCBzZXRVcFBhZ2VQb2xpY3lDbGllbnQo
V0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyICpicm93c2luZ0NvbnRleHQsCiAKICAgICBwb2xp
Y3lDbGllbnQuZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uID0gW10oV0tQYWdlUmVmIHBh
Z2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLRnJhbWVOYXZpZ2F0aW9uVHlwZSBuYXZpZ2F0aW9uVHlw
ZSwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIFdLRXZlbnRNb3VzZUJ1dHRvbiBtb3VzZUJ1
dHRvbiwgV0tVUkxSZXF1ZXN0UmVmIHJlcXVlc3QsIFdLU3RyaW5nUmVmIGZyYW1lTmFtZSwgV0tG
cmFtZVBvbGljeUxpc3RlbmVyUmVmIGxpc3RlbmVyLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0
IHZvaWQqIGNsaWVudEluZm8pCiAgICAgewotICAgICAgICBXS0Jyb3dzaW5nQ29udGV4dENvbnRy
b2xsZXIgKmJyb3dzaW5nQ29udGV4dCA9IChXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKilj
bGllbnRJbmZvOworICAgICAgICBhdXRvIGJyb3dzaW5nQ29udGV4dCA9IChfX2JyaWRnZSBXS0Jy
b3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKiljbGllbnRJbmZvOwogICAgICAgICBhdXRvIHBvbGlj
eURlbGVnYXRlID0gYnJvd3NpbmdDb250ZXh0LT5fcG9saWN5RGVsZWdhdGUuZ2V0KCk7CiAKICAg
ICAgICAgaWYgKFtwb2xpY3lEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGJy
b3dzaW5nQ29udGV4dENvbnRyb2xsZXI6ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uOmRl
Y2lzaW9uSGFuZGxlcjopXSkgewpAQCAtNTY5LDcgKzU2OSw3IEBAIHN0YXRpYyB2b2lkIHNldFVw
UGFnZVBvbGljeUNsaWVudChXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKmJyb3dzaW5nQ29u
dGV4dCwKIAogICAgIHBvbGljeUNsaWVudC5kZWNpZGVQb2xpY3lGb3JSZXNwb25zZSA9IFtdKFdL
UGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1VSTFJlc3BvbnNlUmVmIHJlc3BvbnNl
LCBXS1VSTFJlcXVlc3RSZWYgcmVxdWVzdCwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIFdLRnJhbWVQ
b2xpY3lMaXN0ZW5lclJlZiBsaXN0ZW5lciwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lk
KiBjbGllbnRJbmZvKQogICAgIHsKLSAgICAgICAgV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVy
ICpicm93c2luZ0NvbnRleHQgPSAoV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyICopY2xpZW50
SW5mbzsKKyAgICAgICAgYXV0byBicm93c2luZ0NvbnRleHQgPSAoX19icmlkZ2UgV0tCcm93c2lu
Z0NvbnRleHRDb250cm9sbGVyICopY2xpZW50SW5mbzsKICAgICAgICAgYXV0byBwb2xpY3lEZWxl
Z2F0ZSA9IGJyb3dzaW5nQ29udGV4dC0+X3BvbGljeURlbGVnYXRlLmdldCgpOwogCiAgICAgICAg
IGlmIChbcG9saWN5RGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihicm93c2lu
Z0NvbnRleHRDb250cm9sbGVyOmRlY2lkZVBvbGljeUZvclJlc3BvbnNlQWN0aW9uOmRlY2lzaW9u
SGFuZGxlcjopXSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLQnJvd3NpbmdDb250ZXh0R3JvdXAubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRHcm91cC5tbQppbmRleCBhNzBmMWQ0NmI1MzlkYTlj
Njk1YWUwOGFkYTc5ODM3NzU2ZDcxZjNlLi45NmRmMGQ2YjFkZDM3MmRkYzIxYjUzNDI2NWQwYTNj
YzNjMGZhNzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tCcm93c2luZ0NvbnRleHRHcm91cC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRHcm91cC5tbQpAQCAtMTI0LDcgKzEyNCw3IEBAIHN0
YXRpYyBXS1JldGFpblB0cjxXS0FycmF5UmVmPiBjcmVhdGVXS0FycmF5KE5TQXJyYXkgKmFycmF5
KQogCiAgICAgZm9yIChpZCBlbnRyeSBpbiBhcnJheSkgewogICAgICAgICBpZiAoW2VudHJ5IGlz
S2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCi0gICAgICAgICAgICBzdHJpbmdzLnVuY2hl
Y2tlZEFwcGVuZChhZG9wdFJlZih0b0ltcGwoV0tTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKENG
U3RyaW5nUmVmKWVudHJ5KSkpKTsKKyAgICAgICAgICAgIHN0cmluZ3MudW5jaGVja2VkQXBwZW5k
KGFkb3B0UmVmKHRvSW1wbChXS1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoX19icmlkZ2UgQ0ZT
dHJpbmdSZWYpZW50cnkpKSkpOwogICAgIH0KIAogICAgIHJldHVybiB0b0FQSSgmQVBJOjpBcnJh
eTo6Y3JlYXRlKFdURk1vdmUoc3RyaW5ncykpLmxlYWtSZWYoKSk7CkBAIC0xMzUsOCArMTM1LDgg
QEAgLSh2b2lkKWFkZFVzZXJTdHlsZVNoZWV0OihOU1N0cmluZyAqKXNvdXJjZSBiYXNlVVJMOihO
U1VSTCAqKWJhc2VVUkwgd2hpdGVsaXN0ZWQKICAgICBpZiAoIXNvdXJjZSkKICAgICAgICAgQ1JB
U0goKTsKIAotICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB3a1NvdXJjZSA9IGFkb3B0V0so
V0tTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKENGU3RyaW5nUmVmKXNvdXJjZSkpOwotICAgIFdL
UmV0YWluUHRyPFdLVVJMUmVmPiB3a0Jhc2VVUkwgPSBhZG9wdFdLKFdLVVJMQ3JlYXRlV2l0aENG
VVJMKChDRlVSTFJlZiliYXNlVVJMKSk7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHdr
U291cmNlID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoX19icmlkZ2UgQ0ZT
dHJpbmdSZWYpc291cmNlKSk7CisgICAgV0tSZXRhaW5QdHI8V0tVUkxSZWY+IHdrQmFzZVVSTCA9
IGFkb3B0V0soV0tVUkxDcmVhdGVXaXRoQ0ZVUkwoKF9fYnJpZGdlIENGVVJMUmVmKWJhc2VVUkwp
KTsKICAgICBhdXRvIHdrV2hpdGVsaXN0ID0gY3JlYXRlV0tBcnJheSh3aGl0ZWxpc3QpOwogICAg
IGF1dG8gd2tCbGFja2xpc3QgPSBjcmVhdGVXS0FycmF5KGJsYWNrbGlzdCk7CiAgICAgV0tVc2Vy
Q29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzID0gbWFpbkZyYW1lT25seSA/IGtX
S0luamVjdEluVG9wRnJhbWVPbmx5IDoga1dLSW5qZWN0SW5BbGxGcmFtZXM7CkBAIC0xNTQsOCAr
MTU0LDggQEAgLSAodm9pZClhZGRVc2VyU2NyaXB0OihOU1N0cmluZyAqKXNvdXJjZSBiYXNlVVJM
OihOU1VSTCAqKWJhc2VVUkwgd2hpdGVsaXN0ZWRVUkwKICAgICBpZiAoIXNvdXJjZSkKICAgICAg
ICAgQ1JBU0goKTsKIAotICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB3a1NvdXJjZSA9IGFk
b3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKENGU3RyaW5nUmVmKXNvdXJjZSkpOwot
ICAgIFdLUmV0YWluUHRyPFdLVVJMUmVmPiB3a0Jhc2VVUkwgPSBhZG9wdFdLKFdLVVJMQ3JlYXRl
V2l0aENGVVJMKChDRlVSTFJlZiliYXNlVVJMKSk7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdS
ZWY+IHdrU291cmNlID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoX19icmlk
Z2UgQ0ZTdHJpbmdSZWYpc291cmNlKSk7CisgICAgV0tSZXRhaW5QdHI8V0tVUkxSZWY+IHdrQmFz
ZVVSTCA9IGFkb3B0V0soV0tVUkxDcmVhdGVXaXRoQ0ZVUkwoKF9fYnJpZGdlIENGVVJMUmVmKWJh
c2VVUkwpKTsKICAgICBhdXRvIHdrV2hpdGVsaXN0ID0gY3JlYXRlV0tBcnJheSh3aGl0ZWxpc3Qp
OwogICAgIGF1dG8gd2tCbGFja2xpc3QgPSBjcmVhdGVXS0FycmF5KGJsYWNrbGlzdCk7CiAgICAg
V0tVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzID0gbWFpbkZyYW1lT25s
eSA/IGtXS0luamVjdEluVG9wRnJhbWVPbmx5IDoga1dLSW5qZWN0SW5BbGxGcmFtZXM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb25uZWN0aW9uLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29ubmVjdGlvbi5tbQppbmRl
eCAyMWQzMTZmNzFhNTYyMDRhMTEwZmQ1YWRkMGYzYTZiODM5NzA2ZTdhLi5jZTIzZDBlYzhhMzJk
NjcxZmQzMDY2MzMxOWEzYTJjMWI2YzVmYjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tDb25uZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS0Nvbm5lY3Rpb24ubW0KQEAgLTUxLDcgKzUxLDcgQEAgLSAodm9p
ZClkZWFsbG9jCiAKIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKFdLQ29ubmVjdGlvblJl
ZiwgV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSwgY29uc3Qg
dm9pZCogY2xpZW50SW5mbykKIHsKLSAgICBXS0Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24gPSAoV0tD
b25uZWN0aW9uICopY2xpZW50SW5mbzsKKyAgICBhdXRvIGNvbm5lY3Rpb24gPSAoX19icmlkZ2Ug
V0tDb25uZWN0aW9uICopY2xpZW50SW5mbzsKICAgICBhdXRvIGRlbGVnYXRlID0gY29ubmVjdGlv
bi0+X2RlbGVnYXRlLmdldCgpOwogCiAgICAgaWYgKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKGNvbm5lY3Rpb246ZGlkUmVjZWl2ZU1lc3NhZ2VXaXRoTmFtZTpib2R5Oild
KSB7CkBAIC02Myw3ICs2Myw3IEBAIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKFdLQ29u
bmVjdGlvblJlZiwgV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlCiAKIHN0YXRpYyB2
b2lkIGRpZENsb3NlKFdLQ29ubmVjdGlvblJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsK
LSAgICBXS0Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24gPSAoV0tDb25uZWN0aW9uICopY2xpZW50SW5m
bzsKKyAgICBhdXRvIGNvbm5lY3Rpb24gPSAoX19icmlkZ2UgV0tDb25uZWN0aW9uICopY2xpZW50
SW5mbzsKICAgICBhdXRvIGRlbGVnYXRlID0gY29ubmVjdGlvbi0+X2RlbGVnYXRlLmdldCgpOwog
CiAgICAgaWYgKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGNvbm5lY3Rp
b25EaWRDbG9zZTopXSkKQEAgLTc2LDcgKzc2LDcgQEAgc3RhdGljIHZvaWQgc2V0VXBDbGllbnQo
V0tDb25uZWN0aW9uICp3cmFwcGVyLCBXZWJDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogICAgIG1l
bXNldCgmY2xpZW50LCAwLCBzaXplb2YoY2xpZW50KSk7CiAKICAgICBjbGllbnQuYmFzZS52ZXJz
aW9uID0gMDsKLSAgICBjbGllbnQuYmFzZS5jbGllbnRJbmZvID0gd3JhcHBlcjsKKyAgICBjbGll
bnQuYmFzZS5jbGllbnRJbmZvID0gKF9fYnJpZGdlIHZvaWQqKXdyYXBwZXI7CiAgICAgY2xpZW50
LmRpZFJlY2VpdmVNZXNzYWdlID0gZGlkUmVjZWl2ZU1lc3NhZ2U7CiAgICAgY2xpZW50LmRpZENs
b3NlID0gZGlkQ2xvc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1Byb2Nlc3NHcm91cC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1Byb2Nlc3NHcm91cC5tbQppbmRleCBmYjU4NTlhNzdjMGE4NjA2N2ZmZDgxZTM2NjNm
ZWUwYzRkY2NiNjcxLi41MzBjZTA4ZWY0NDU0MTdmNzFkMjZmNzMyZWQwYzg0ZmFjZmQ2M2Q5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzR3Jv
dXAubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc0dy
b3VwLm1tCkBAIC02Niw3ICs2Niw3IEBAIEBpbXBsZW1lbnRhdGlvbiBXS1Byb2Nlc3NHcm91cCB7
CiAKIHN0YXRpYyB2b2lkIGRpZENyZWF0ZUNvbm5lY3Rpb24oV0tDb250ZXh0UmVmLCBXS0Nvbm5l
Y3Rpb25SZWYgY29ubmVjdGlvblJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKLSAgICBX
S1Byb2Nlc3NHcm91cCAqcHJvY2Vzc0dyb3VwID0gKFdLUHJvY2Vzc0dyb3VwICopY2xpZW50SW5m
bzsKKyAgICBhdXRvIHByb2Nlc3NHcm91cCA9IChfX2JyaWRnZSBXS1Byb2Nlc3NHcm91cCAqKWNs
aWVudEluZm87CiAgICAgYXV0byBkZWxlZ2F0ZSA9IHByb2Nlc3NHcm91cC0+X2RlbGVnYXRlLmdl
dCgpOwogCiAgICAgaWYgKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHBy
b2Nlc3NHcm91cDpkaWRDcmVhdGVDb25uZWN0aW9uVG9XZWJQcm9jZXNzUGx1Z0luOildKQpAQCAt
ODcsNyArODcsNyBAQCBzdGF0aWMgdm9pZCBzZXRVcENvbm5lY3Rpb25DbGllbnQoV0tQcm9jZXNz
R3JvdXAgKnByb2Nlc3NHcm91cCwgV0tDb250ZXh0UmVmIGNvbgogCiBzdGF0aWMgV0tUeXBlUmVm
IGdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YShXS0NvbnRleHRSZWYsIGNv
bnN0IHZvaWQqIGNsaWVudEluZm8pCiB7Ci0gICAgV0tQcm9jZXNzR3JvdXAgKnByb2Nlc3NHcm91
cCA9IChXS1Byb2Nlc3NHcm91cCAqKWNsaWVudEluZm87CisgICAgYXV0byBwcm9jZXNzR3JvdXAg
PSAoX19icmlkZ2UgV0tQcm9jZXNzR3JvdXAgKiljbGllbnRJbmZvOwogICAgIGF1dG8gZGVsZWdh
dGUgPSBwcm9jZXNzR3JvdXAtPl9kZWxlZ2F0ZS5nZXQoKTsKIAogICAgIGlmIChbZGVsZWdhdGUg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihwcm9jZXNzR3JvdXBXaWxsQ3JlYXRlQ29ubmVj
dGlvblRvV2ViUHJvY2Vzc1BsdWdJbjopXSkgewpAQCAtMTA1LDcgKzEwNSw3IEBAIHN0YXRpYyB2
b2lkIHNldFVwSW5qZWN0ZWRCdW5kbGVDbGllbnQoV0tQcm9jZXNzR3JvdXAgKnByb2Nlc3NHcm91
cCwgV0tDb250ZXh0UmVmCiAgICAgbWVtc2V0KCZpbmplY3RlZEJ1bmRsZUNsaWVudCwgMCwgc2l6
ZW9mKGluamVjdGVkQnVuZGxlQ2xpZW50KSk7CiAKICAgICBpbmplY3RlZEJ1bmRsZUNsaWVudC5i
YXNlLnZlcnNpb24gPSAxOwotICAgIGluamVjdGVkQnVuZGxlQ2xpZW50LmJhc2UuY2xpZW50SW5m
byA9IHByb2Nlc3NHcm91cDsKKyAgICBpbmplY3RlZEJ1bmRsZUNsaWVudC5iYXNlLmNsaWVudElu
Zm8gPSAoX19icmlkZ2Ugdm9pZCopcHJvY2Vzc0dyb3VwOwogICAgIGluamVjdGVkQnVuZGxlQ2xp
ZW50LmdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YSA9IGdldEluamVjdGVk
QnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YTsKIAogICAgIFdLQ29udGV4dFNldEluamVjdGVk
QnVuZGxlQ2xpZW50KGNvbnRleHRSZWYsICZpbmplY3RlZEJ1bmRsZUNsaWVudC5iYXNlKTsKQEAg
LTIyMyw3ICsyMjMsNyBAQCAtIChXS0NvbnRleHRSZWYpX2NvbnRleHRSZWYKIAogLSAodm9pZClf
c2V0QWxsb3dzU3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlOihOU0FycmF5ICopY2VydGlmaWNhdGVD
aGFpbiBmb3JIb3N0OihOU1N0cmluZyAqKWhvc3QKIHsKLSAgICBfcHJvY2Vzc1Bvb2wtPmFsbG93
U3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdChXZWJDZXJ0aWZpY2F0ZUluZm86OmNyZWF0
ZShXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8oKENGQXJyYXlSZWYpY2VydGlmaWNhdGVDaGFpbikp
LnB0cigpLCBob3N0KTsKKyAgICBfcHJvY2Vzc1Bvb2wtPmFsbG93U3BlY2lmaWNIVFRQU0NlcnRp
ZmljYXRlRm9ySG9zdChXZWJDZXJ0aWZpY2F0ZUluZm86OmNyZWF0ZShXZWJDb3JlOjpDZXJ0aWZp
Y2F0ZUluZm8oKF9fYnJpZGdlIENGQXJyYXlSZWYpY2VydGlmaWNhdGVDaGFpbikpLnB0cigpLCBo
b3N0KTsKIH0KIAogI2lmIFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KaW5kZXggODA3YTdjNThiYmUwYTAwODA1
ZGQ4YmJkNGI0NDAyNWI4MjQzMzZhMS4uNTc2YTU4NWU2Y2Q1NTZhZGI2NDdiYzAxOWY5ODUwYWJm
ZWYzMmViOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
UHJvY2Vzc1Bvb2wubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
UHJvY2Vzc1Bvb2wubW0KQEAgLTE3OSw3ICsxNzksNyBAQCArIChOU1VSTCAqKV93ZWJzaXRlRGF0
YVVSTEZvckNvbnRhaW5lcldpdGhVUkw6KE5TVVJMICopY29udGFpbmVyVVJMIGJ1bmRsZUlkZW50
aQogCiAtICh2b2lkKV9zZXRBbGxvd3NTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGU6KE5TQXJyYXkg
KiljZXJ0aWZpY2F0ZUNoYWluIGZvckhvc3Q6KE5TU3RyaW5nICopaG9zdAogewotICAgIF9wcm9j
ZXNzUG9vbC0+YWxsb3dTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KFdlYktpdDo6V2Vi
Q2VydGlmaWNhdGVJbmZvOjpjcmVhdGUoV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvKChDRkFycmF5
UmVmKWNlcnRpZmljYXRlQ2hhaW4pKS5wdHIoKSwgaG9zdCk7CisgICAgX3Byb2Nlc3NQb29sLT5h
bGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QoV2ViS2l0OjpXZWJDZXJ0aWZpY2F0
ZUluZm86OmNyZWF0ZShXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8oKF9fYnJpZGdlIENGQXJyYXlS
ZWYpY2VydGlmaWNhdGVDaGFpbikpLnB0cigpLCBob3N0KTsKIH0KIAogLSAodm9pZClfcmVnaXN0
ZXJVUkxTY2hlbWVTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZTooTlNTdHJpbmcgKilzY2hlbWUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRh
U3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0
YVN0b3JlLm1tCmluZGV4IDVjNmYxM2Q4N2NjMDhhNDc0M2E1NTk0MTkyNjM1M2M0ZDg0MjBlM2Uu
LjU2YjhhNjFiNjQ3OTYxYWI4MDg5MGEzNDY5MzI4MzI0YWMyOTI2ZTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5t
bQpAQCAtMzAyLDEyICszMDIsMTIgQEAgLSAoQk9PTClfYWxsb3dzQ2VsbHVsYXJBY2Nlc3MKIAog
LSAodm9pZClfc2V0UHJveHlDb25maWd1cmF0aW9uOihOU0RpY3Rpb25hcnkgKiljb25maWd1cmF0
aW9uCiB7Ci0gICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRQcm94
eUNvbmZpZ3VyYXRpb24oKENGRGljdGlvbmFyeVJlZiljb25maWd1cmF0aW9uKTsKKyAgICBfd2Vi
c2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFByb3h5Q29uZmlndXJhdGlvbigo
X19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKWNvbmZpZ3VyYXRpb24pOwogfQogCiAtIChOU0RpY3Rp
b25hcnkgKilfcHJveHlDb25maWd1cmF0aW9uCiB7Ci0gICAgcmV0dXJuIChOU0RpY3Rpb25hcnkg
Kilfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnByb3h5Q29uZmlndXJhdGlv
bigpOworICAgIHJldHVybiAoX19icmlkZ2UgTlNEaWN0aW9uYXJ5ICopX3dlYnNpdGVEYXRhU3Rv
cmUtPndlYnNpdGVEYXRhU3RvcmUoKS5wcm94eUNvbmZpZ3VyYXRpb24oKTsKIH0KIAogLSAodm9p
ZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldFNob3VsZFN1Ym1pdFRlbGVtZXRyeTooQk9PTCl2
YWx1ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Ro
dW1ibmFpbFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGh1
bWJuYWlsVmlldy5tbQppbmRleCAzYzU0ZjdiNzBiOWY4MmVhMTY1MmVlNmYxNWUxZGIwOTBhNGYx
ZTViLi40ZWExYzU4MjZhNWIxZjdmNWZmODNhNzBkMmVhZDllM2ZjYzlhZTY2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGh1bWJuYWlsVmlldy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGh1bWJuYWlsVmlldy5t
bQpAQCAtMTk3LDcgKzE5Nyw3IEBAIC0gKHZvaWQpX2RpZFRha2VTbmFwc2hvdDooQ0dJbWFnZVJl
ZilpbWFnZQogICAgIF93YWl0aW5nRm9yU25hcHNob3QgPSBOTzsKICAgICBzZWxmLmxheWVyLnN1
YmxheWVycyA9IEBbXTsKICAgICBzZWxmLmxheWVyLmNvbnRlbnRzR3Jhdml0eSA9IGtDQUdyYXZp
dHlSZXNpemVBc3BlY3RGaWxsOwotICAgIHNlbGYubGF5ZXIuY29udGVudHMgPSAoaWQpaW1hZ2U7
CisgICAgc2VsZi5sYXllci5jb250ZW50cyA9IChfX2JyaWRnZSBpZClpbWFnZTsKIAogICAgIC8v
IElmIHdlIGdvdCBhIHNjYWxlIGNoYW5nZSB3aGlsZSBzbmFwc2hvdHRpbmcsIHdlJ2xsIHRha2Ug
YW5vdGhlciBzbmFwc2hvdCBvbmNlIHRoZSBmaXJzdCBvbmUgcmV0dXJucy4KICAgICBpZiAoX3Nu
YXBzaG90V2FzRGVmZXJyZWQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tVc2VyQ29udGVudEZpbHRlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tVc2VyQ29udGVudEZpbHRlci5tbQppbmRleCA5MDI4OGE4NGNlNDg1
YTliMWRkMGYxNTQ3YTZjNjBlZWIxN2JhOWQyLi4xOTNiNDJlOGRhM2FmY2VkNTE5OTE4MTNiYjMw
NjBhMmYzZmVhYjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLVXNlckNvbnRlbnRGaWx0ZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS1VzZXJDb250ZW50RmlsdGVyLm1tCkBAIC0yOCw2ICsyOCw3IEBACiAKICNp
ZiBXS19BUElfRU5BQkxFRAogCisjaW5jbHVkZSAiV0tDb250ZW50UnVsZUxpc3RJbnRlcm5hbC5o
IgogI2luY2x1ZGUgIldlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0LmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9Db250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRl
bnRFeHRlbnNpb25FcnJvci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QXV0aGVudGljYXRpb24vbWFjL1dlYkNyZWRlbnRpYWxNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9tYWMvV2ViQ3JlZGVudGlhbE1hYy5tbQppbmRleCA2OGRl
M2VjOWRiMjc4NzljOWM1ZDcxZDBkNjEwNjgyZDhlYzY0MzAwLi5iYTBmMmM5MDkyYzk1OTFlODc0
ZTQyZDM4MWQxMDk4NmY2ZTIxMzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BdXRoZW50aWNhdGlvbi9tYWMvV2ViQ3JlZGVudGlhbE1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9tYWMvV2ViQ3JlZGVudGlhbE1hYy5tbQpAQCAt
NjcsNyArNjcsNyBAQCBzdGF0aWMgTlNBcnJheSAqY2hhaW4oY29uc3QgQ2VydGlmaWNhdGVJbmZv
JiBjZXJ0aWZpY2F0ZUluZm8pCiAjZW5kaWYKICAgICBBU1NFUlQoY2VydGlmaWNhdGVJbmZvLnR5
cGUoKSA9PSBDZXJ0aWZpY2F0ZUluZm86OlR5cGU6OkNlcnRpZmljYXRlQ2hhaW4pOwogICAgIENG
SW5kZXggY2hhaW5Db3VudCA9IENGQXJyYXlHZXRDb3VudChjZXJ0aWZpY2F0ZUluZm8uY2VydGlm
aWNhdGVDaGFpbigpKTsKLSAgICByZXR1cm4gY2hhaW5Db3VudCA+IDEgPyBbKE5TQXJyYXkgKilj
ZXJ0aWZpY2F0ZUluZm8uY2VydGlmaWNhdGVDaGFpbigpIHN1YmFycmF5V2l0aFJhbmdlOk5TTWFr
ZVJhbmdlKDEsIGNoYWluQ291bnQgLSAxKV0gOiBuaWw7CisgICAgcmV0dXJuIGNoYWluQ291bnQg
PiAxID8gWyhfX2JyaWRnZSBOU0FycmF5ICopY2VydGlmaWNhdGVJbmZvLmNlcnRpZmljYXRlQ2hh
aW4oKSBzdWJhcnJheVdpdGhSYW5nZTpOU01ha2VSYW5nZSgxLCBjaGFpbkNvdW50IC0gMSldIDog
bmlsOwogfQogCiBXZWJDcmVkZW50aWFsOjpXZWJDcmVkZW50aWFsKFdlYkNlcnRpZmljYXRlSW5m
byogY2VydGlmaWNhdGVJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KaW5kZXggM2QxOGY2MmQ5NmNlNGE2Yzk2NGFkMGNh
ODYxYmVmYTQ2ZDFiNGEyNi4uNDBhYmY0ZmVhNjNiMTU4NThiZTUyMDdiNDA4Nzc3NWI4NjAyM2Uy
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bv
b2xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNz
UG9vbENvY29hLm1tCkBAIC00ODAsNyArNDgwLDcgQEAgU3RyaW5nIFdlYlByb2Nlc3NQb29sOjps
ZWdhY3lQbGF0Zm9ybURlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkKIAogU3RyaW5n
IFdlYlByb2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3Rv
cnkoKQogewotICAgIFJldGFpblB0cjxOU1N0cmluZz4gY2FjaGVQYXRoID0gYWRvcHROUygoTlNT
dHJpbmcgKilfQ0ZVUkxDYWNoZUNvcHlDYWNoZURpcmVjdG9yeShbW05TVVJMQ2FjaGUgc2hhcmVk
VVJMQ2FjaGVdIF9DRlVSTENhY2hlXSkpOworICAgIE5TU3RyaW5nICpjYWNoZVBhdGggPSBDRkJy
aWRnaW5nUmVsZWFzZShfQ0ZVUkxDYWNoZUNvcHlDYWNoZURpcmVjdG9yeShbW05TVVJMQ2FjaGUg
c2hhcmVkVVJMQ2FjaGVdIF9DRlVSTENhY2hlXSkpOwogICAgIGlmICghY2FjaGVQYXRoKQogICAg
ICAgICBjYWNoZVBhdGggPSBAIn4vTGlicmFyeS9DYWNoZXMvY29tLmFwcGxlLldlYktpdC5XZWJQ
cm9jZXNzIjsKIApAQCAtNTkwLDggKzU5MCw3IEBAIHN0YXRpYyBDRlVSTFN0b3JhZ2VTZXNzaW9u
UmVmIHByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQogICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qg
b25jZTsKICAgICBkaXNwYXRjaF9vbmNlKCZvbmNlLCBeewogICAgICAgICBOU1N0cmluZyAqaWRl
bnRpZmllciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAuUHJpdmF0ZUJyb3dzaW5n
IiwgW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlmaWVyXV07Ci0KLSAgICAgICAg
c2Vzc2lvbiA9IGNyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbigoQ0ZTdHJpbmdSZWYpaWRlbnRp
Zmllcik7CisgICAgICAgIHNlc3Npb24gPSBjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oKF9f
YnJpZGdlIENGU3RyaW5nUmVmKWlkZW50aWZpZXIpOwogICAgIH0pOwogCiAgICAgcmV0dXJuIHNl
c3Npb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3
SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmlu
ZGV4IDk2Yjg4OWIwN2QwMGE4ODU5NzFkYzA4MmY5Mzc0ZDQwMDNmMWRiZDcuLmQ2NGY0NzY3MTFm
ZjFjMjVkZTQyNDA5OTc0NzQwNWJiNTEwZDQyM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCkBAIC0zODk1LDcgKzM4OTUsNyBAQCB2b2lkIFdlYlZp
ZXdJbXBsOjpwcm92aWRlRGF0YUZvclBhc3RlYm9hcmQoTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJk
LCBOU1N0cmluZyAqdAogICAgIC8vIEZJWE1FOiBuZWVkIHRvIHN1cHBvcnQgTlNSVEZEUGJvYXJk
VHlwZQogCiAgICAgaWYgKFt0eXBlIGlzRXF1YWw6V2ViQ29yZTo6bGVnYWN5VElGRlBhc3RlYm9h
cmRUeXBlKCldICYmIG1fcHJvbWlzZWRJbWFnZSkgewotICAgICAgICBbcGFzdGVib2FyZCBzZXRE
YXRhOihOU0RhdGEgKiltX3Byb21pc2VkSW1hZ2UtPnRpZmZSZXByZXNlbnRhdGlvbigpIGZvclR5
cGU6V2ViQ29yZTo6bGVnYWN5VElGRlBhc3RlYm9hcmRUeXBlKCldOworICAgICAgICBbcGFzdGVi
b2FyZCBzZXREYXRhOihfX2JyaWRnZSBOU0RhdGEgKiltX3Byb21pc2VkSW1hZ2UtPnRpZmZSZXBy
ZXNlbnRhdGlvbigpIGZvclR5cGU6V2ViQ29yZTo6bGVnYWN5VElGRlBhc3RlYm9hcmRUeXBlKCld
OwogICAgICAgICBtX3Byb21pc2VkSW1hZ2UgPSBudWxscHRyOwogICAgIH0KIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvbWFjL1BsdWdpbkluZm9TdG9yZU1h
Yy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvbWFjL1BsdWdpbkluZm9TdG9y
ZU1hYy5tbQppbmRleCAyNTdjOTRjNTc4NGQxY2UxOTViNDQ2YzM3Y2M1ZmRiNzAyZTMwNTc2Li43
MjNkNDQ0MjNkM2YyYjczMjhkOGE3ODM0M2FkNDQyYmJjMjYwZjJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5JbmZvU3RvcmVNYWMubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2luSW5mb1N0b3JlTWFj
Lm1tCkBAIC02MCw5ICs2MCw5IEBAIFZlY3RvcjxTdHJpbmc+IFBsdWdpbkluZm9TdG9yZTo6cGx1
Z2luUGF0aHNJbkRpcmVjdG9yeShjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSkKICAgICBWZWN0b3I8
U3RyaW5nPiBwbHVnaW5QYXRoczsKIAogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gZGlyZWN0
b3J5Q0ZTdHJpbmcgPSBkaXJlY3RvcnkuY3JlYXRlQ0ZTdHJpbmcoKTsKLSAgICBOU0FycmF5ICpm
aWxlbmFtZXMgPSBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNvbnRlbnRzT2ZEaXJl
Y3RvcnlBdFBhdGg6KE5TU3RyaW5nICopZGlyZWN0b3J5Q0ZTdHJpbmcuZ2V0KCkgZXJyb3I6bmls
XTsKKyAgICBOU0FycmF5ICpmaWxlbmFtZXMgPSBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFn
ZXJdIGNvbnRlbnRzT2ZEaXJlY3RvcnlBdFBhdGg6KF9fYnJpZGdlIE5TU3RyaW5nICopZGlyZWN0
b3J5Q0ZTdHJpbmcuZ2V0KCkgZXJyb3I6bmlsXTsKICAgICBmb3IgKE5TU3RyaW5nICpmaWxlbmFt
ZSBpbiBmaWxlbmFtZXMpCi0gICAgICAgIHBsdWdpblBhdGhzLmFwcGVuZChbKE5TU3RyaW5nICop
ZGlyZWN0b3J5Q0ZTdHJpbmcuZ2V0KCkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmZp
bGVuYW1lXSk7CisgICAgICAgIHBsdWdpblBhdGhzLmFwcGVuZChbKF9fYnJpZGdlIE5TU3RyaW5n
ICopZGlyZWN0b3J5Q0ZTdHJpbmcuZ2V0KCkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50
OmZpbGVuYW1lXSk7CiAgICAgCiAgICAgcmV0dXJuIHBsdWdpblBhdGhzOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJl
ZUhvc3QubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3Rl
TGF5ZXJUcmVlSG9zdC5tbQppbmRleCA0Y2YzMmMzYzFkZWMwODEyNjBkNjFiNTg4ZTJhNGJjNTNj
ZjQ2NzI3Li4zZGUwMDYwMGIwZDZjODdlOTFjNzgxZmE0MmRhZWUyZjY2YTY4ZjAxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJU
cmVlSG9zdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUv
UmVtb3RlTGF5ZXJUcmVlSG9zdC5tbQpAQCAtMjk0LDcgKzI5NCw3IEBAIHZvaWQgUmVtb3RlTGF5
ZXJUcmVlSG9zdDo6ZGV0YWNoUm9vdExheWVyKCkKIHN0YXRpYyB2b2lkIHJlY3Vyc2l2ZWx5TWFw
SU9TdXJmYWNlQmFja2luZ1N0b3JlKENBTGF5ZXIgKmxheWVyKQogewogICAgIGlmIChsYXllci5j
b250ZW50cyAmJiBDRkdldFR5cGVJRChsYXllci5jb250ZW50cykgPT0gQ0FNYWNoUG9ydEdldFR5
cGVJRCgpKSB7Ci0gICAgICAgIE1hY2hTZW5kUmlnaHQgcG9ydCA9IE1hY2hTZW5kUmlnaHQ6OmNy
ZWF0ZShDQU1hY2hQb3J0R2V0UG9ydCgoQ0FNYWNoUG9ydFJlZilsYXllci5jb250ZW50cykpOwor
ICAgICAgICBNYWNoU2VuZFJpZ2h0IHBvcnQgPSBNYWNoU2VuZFJpZ2h0OjpjcmVhdGUoQ0FNYWNo
UG9ydEdldFBvcnQoKF9fYnJpZGdlIENBTWFjaFBvcnRSZWYpbGF5ZXIuY29udGVudHMpKTsKICAg
ICAgICAgYXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJp
Z2h0KFdURk1vdmUocG9ydCksIHNSR0JDb2xvclNwYWNlUmVmKCkpOwogICAgICAgICBsYXllci5j
b250ZW50cyA9IHN1cmZhY2UgPyBzdXJmYWNlLT5hc0xheWVyQ29udGVudHMoKSA6IG5pbDsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVD
b250cm9sbGVyTWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJl
Q29udHJvbGxlck1hYy5tbQppbmRleCBkZjljNWE4ZjcyYmRmOGYyMGY1MTQ4NjhiNGEwYmFkNmY2
MGFhODk2Li4zY2M5MzQzODM2Yjg0NDFjZTgyM2MxOWNkMDlhZGExYmE3N2I5MTRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xs
ZXJNYWMubW0KQEAgLTYxNSwyMiArNjE1LDIyIEBAIHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVy
OjpiZWdpblN3aXBlR2VzdHVyZShXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiB0YXJnZXRJdGVtCiAg
ICAgICAgIG1fc3dpcGVTaGFkb3dMYXllciA9IGFkb3B0TlMoW1tDQUdyYWRpZW50TGF5ZXIgYWxs
b2NdIGluaXRdKTsKICAgICAgICAgW21fc3dpcGVTaGFkb3dMYXllciBzZXROYW1lOkAiR2VzdHVy
ZSBTd2lwZSBTaGFkb3cgTGF5ZXIiXTsKICAgICAgICAgW21fc3dpcGVTaGFkb3dMYXllciBzZXRD
b2xvcnM6QFsKLSAgICAgICAgICAgIChpZClhZG9wdENGKENHQ29sb3JDcmVhdGVHZW5lcmljR3Jh
eSgwLCAxLikpLmdldCgpLAotICAgICAgICAgICAgKGlkKWFkb3B0Q0YoQ0dDb2xvckNyZWF0ZUdl
bmVyaWNHcmF5KDAsIDAuOTkpKS5nZXQoKSwKLSAgICAgICAgICAgIChpZClhZG9wdENGKENHQ29s
b3JDcmVhdGVHZW5lcmljR3JheSgwLCAwLjk4KSkuZ2V0KCksCi0gICAgICAgICAgICAoaWQpYWRv
cHRDRihDR0NvbG9yQ3JlYXRlR2VuZXJpY0dyYXkoMCwgMC45NSkpLmdldCgpLAotICAgICAgICAg
ICAgKGlkKWFkb3B0Q0YoQ0dDb2xvckNyZWF0ZUdlbmVyaWNHcmF5KDAsIDAuOTIpKS5nZXQoKSwK
LSAgICAgICAgICAgIChpZClhZG9wdENGKENHQ29sb3JDcmVhdGVHZW5lcmljR3JheSgwLCAwLjgy
KSkuZ2V0KCksCi0gICAgICAgICAgICAoaWQpYWRvcHRDRihDR0NvbG9yQ3JlYXRlR2VuZXJpY0dy
YXkoMCwgMC43MSkpLmdldCgpLAotICAgICAgICAgICAgKGlkKWFkb3B0Q0YoQ0dDb2xvckNyZWF0
ZUdlbmVyaWNHcmF5KDAsIDAuNDYpKS5nZXQoKSwKLSAgICAgICAgICAgIChpZClhZG9wdENGKENH
Q29sb3JDcmVhdGVHZW5lcmljR3JheSgwLCAwLjM1KSkuZ2V0KCksCi0gICAgICAgICAgICAoaWQp
YWRvcHRDRihDR0NvbG9yQ3JlYXRlR2VuZXJpY0dyYXkoMCwgMC4yNSkpLmdldCgpLAotICAgICAg
ICAgICAgKGlkKWFkb3B0Q0YoQ0dDb2xvckNyZWF0ZUdlbmVyaWNHcmF5KDAsIDAuMTcpKS5nZXQo
KSwKLSAgICAgICAgICAgIChpZClhZG9wdENGKENHQ29sb3JDcmVhdGVHZW5lcmljR3JheSgwLCAw
LjExKSkuZ2V0KCksCi0gICAgICAgICAgICAoaWQpYWRvcHRDRihDR0NvbG9yQ3JlYXRlR2VuZXJp
Y0dyYXkoMCwgMC4wNykpLmdldCgpLAotICAgICAgICAgICAgKGlkKWFkb3B0Q0YoQ0dDb2xvckNy
ZWF0ZUdlbmVyaWNHcmF5KDAsIDAuMDQpKS5nZXQoKSwKLSAgICAgICAgICAgIChpZClhZG9wdENG
KENHQ29sb3JDcmVhdGVHZW5lcmljR3JheSgwLCAwLjAxKSkuZ2V0KCksCi0gICAgICAgICAgICAo
aWQpYWRvcHRDRihDR0NvbG9yQ3JlYXRlR2VuZXJpY0dyYXkoMCwgMC4pKS5nZXQoKSwKKyAgICAg
ICAgICAgIChfX2JyaWRnZSBpZClhZG9wdENGKENHQ29sb3JDcmVhdGVHZW5lcmljR3JheSgwLCAx
LikpLmdldCgpLAorICAgICAgICAgICAgKF9fYnJpZGdlIGlkKWFkb3B0Q0YoQ0dDb2xvckNyZWF0
ZUdlbmVyaWNHcmF5KDAsIDAuOTkpKS5nZXQoKSwKKyAgICAgICAgICAgIChfX2JyaWRnZSBpZClh
ZG9wdENGKENHQ29sb3JDcmVhdGVHZW5lcmljR3JheSgwLCAwLjk4KSkuZ2V0KCksCisgICAgICAg
ICAgICAoX19icmlkZ2UgaWQpYWRvcHRDRihDR0NvbG9yQ3JlYXRlR2VuZXJpY0dyYXkoMCwgMC45
NSkpLmdldCgpLAorICAgICAgICAgICAgKF9fYnJpZGdlIGlkKWFkb3B0Q0YoQ0dDb2xvckNyZWF0
ZUdlbmVyaWNHcmF5KDAsIDAuOTIpKS5nZXQoKSwKKyAgICAgICAgICAgIChfX2JyaWRnZSBpZClh
ZG9wdENGKENHQ29sb3JDcmVhdGVHZW5lcmljR3JheSgwLCAwLjgyKSkuZ2V0KCksCisgICAgICAg
ICAgICAoX19icmlkZ2UgaWQpYWRvcHRDRihDR0NvbG9yQ3JlYXRlR2VuZXJpY0dyYXkoMCwgMC43
MSkpLmdldCgpLAorICAgICAgICAgICAgKF9fYnJpZGdlIGlkKWFkb3B0Q0YoQ0dDb2xvckNyZWF0
ZUdlbmVyaWNHcmF5KDAsIDAuNDYpKS5nZXQoKSwKKyAgICAgICAgICAgIChfX2JyaWRnZSBpZClh
ZG9wdENGKENHQ29sb3JDcmVhdGVHZW5lcmljR3JheSgwLCAwLjM1KSkuZ2V0KCksCisgICAgICAg
ICAgICAoX19icmlkZ2UgaWQpYWRvcHRDRihDR0NvbG9yQ3JlYXRlR2VuZXJpY0dyYXkoMCwgMC4y
NSkpLmdldCgpLAorICAgICAgICAgICAgKF9fYnJpZGdlIGlkKWFkb3B0Q0YoQ0dDb2xvckNyZWF0
ZUdlbmVyaWNHcmF5KDAsIDAuMTcpKS5nZXQoKSwKKyAgICAgICAgICAgIChfX2JyaWRnZSBpZClh
ZG9wdENGKENHQ29sb3JDcmVhdGVHZW5lcmljR3JheSgwLCAwLjExKSkuZ2V0KCksCisgICAgICAg
ICAgICAoX19icmlkZ2UgaWQpYWRvcHRDRihDR0NvbG9yQ3JlYXRlR2VuZXJpY0dyYXkoMCwgMC4w
NykpLmdldCgpLAorICAgICAgICAgICAgKF9fYnJpZGdlIGlkKWFkb3B0Q0YoQ0dDb2xvckNyZWF0
ZUdlbmVyaWNHcmF5KDAsIDAuMDQpKS5nZXQoKSwKKyAgICAgICAgICAgIChfX2JyaWRnZSBpZClh
ZG9wdENGKENHQ29sb3JDcmVhdGVHZW5lcmljR3JheSgwLCAwLjAxKSkuZ2V0KCksCisgICAgICAg
ICAgICAoX19icmlkZ2UgaWQpYWRvcHRDRihDR0NvbG9yQ3JlYXRlR2VuZXJpY0dyYXkoMCwgMC4p
KS5nZXQoKSwKICAgICAgICAgXV07CiAgICAgICAgIFttX3N3aXBlU2hhZG93TGF5ZXIgc2V0TG9j
YXRpb25zOkBbCiAgICAgICAgICAgICBAMCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW0KaW5kZXggMDY3
NjJiNTUzZjE0NTgyYzJlMzY5MTUzN2NjM2M2MmY3NjlkYzk2OS4uZWE1MGUzMjA3N2YyZDdkZDg2
ZGE0OGFhNzA0MzRiMDM2ZTRlYjExZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW0KQEAgLTI0OSw3
ICsyNDksNyBAQCAtICh2b2lkKWVudGVyRnVsbFNjcmVlbjooTlNTY3JlZW4gKilzY3JlZW4KICAg
ICAgICAgW193ZWJWaWV3UGxhY2Vob2xkZXIgc2V0QWN0aW9uOkBzZWxlY3RvcihjYW5jZWxPcGVy
YXRpb246KV07CiAgICAgfQogICAgIFtfd2ViVmlld1BsYWNlaG9sZGVyIHNldFRhcmdldDpuaWxd
OwotICAgIFtfd2ViVmlld1BsYWNlaG9sZGVyIHNldENvbnRlbnRzOihpZCl3ZWJWaWV3Q29udGVu
dHMuZ2V0KCldOworICAgIFtfd2ViVmlld1BsYWNlaG9sZGVyIHNldENvbnRlbnRzOihfX2JyaWRn
ZSBpZCl3ZWJWaWV3Q29udGVudHMuZ2V0KCldOwogICAgIHNlbGYuc2F2ZWRDb25zdHJhaW50cyA9
IF93ZWJWaWV3LnN1cGVydmlldy5jb25zdHJhaW50czsKICAgICBbc2VsZiBfcmVwbGFjZVZpZXc6
X3dlYlZpZXcgd2l0aDpfd2ViVmlld1BsYWNlaG9sZGVyLmdldCgpXTsKICAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQb3B1cE1lbnVQcm94eU1hYy5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQb3B1cE1lbnVQcm94eU1hYy5tbQppbmRl
eCBiZGE0MmJjOGU0ZWFjMWZiMTgyMGNlOGU3NjkyNTNiMjMwZWI5ODljLi5mYjgxNDM2YzczNzRl
ZmE0NWI2ODczYWYxMzY2M2M4ZDhmMTYxMGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvV2ViUG9wdXBNZW51UHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1dlYlBvcHVwTWVudVByb3h5TWFjLm1tCkBAIC0xMDIsNyArMTAyLDcgQEAg
dm9pZCBXZWJQb3B1cE1lbnVQcm94eU1hYzo6c2hvd1BvcHVwTWVudShjb25zdCBJbnRSZWN0JiBy
ZWN0LCBUZXh0RGlyZWN0aW9uIHRleHQKICAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQ
cm9jZXNzUHJpdmlsZWdlOjpDYW5Db21tdW5pY2F0ZVdpdGhXaW5kb3dTZXJ2ZXIpKTsKICAgICBO
U0ZvbnQgKmZvbnQ7CiAgICAgaWYgKGRhdGEuZm9udEluZm8uZm9udEF0dHJpYnV0ZURpY3Rpb25h
cnkpIHsKLSAgICAgICAgTlNGb250RGVzY3JpcHRvciAqZm9udERlc2NyaXB0b3IgPSBbTlNGb250
RGVzY3JpcHRvciBmb250RGVzY3JpcHRvcldpdGhGb250QXR0cmlidXRlczooTlNEaWN0aW9uYXJ5
ICopZGF0YS5mb250SW5mby5mb250QXR0cmlidXRlRGljdGlvbmFyeS5nZXQoKV07CisgICAgICAg
IE5TRm9udERlc2NyaXB0b3IgKmZvbnREZXNjcmlwdG9yID0gW05TRm9udERlc2NyaXB0b3IgZm9u
dERlc2NyaXB0b3JXaXRoRm9udEF0dHJpYnV0ZXM6KF9fYnJpZGdlIE5TRGljdGlvbmFyeSAqKWRh
dGEuZm9udEluZm8uZm9udEF0dHJpYnV0ZURpY3Rpb25hcnkuZ2V0KCldOwogICAgICAgICBmb250
ID0gW05TRm9udCBmb250V2l0aERlc2NyaXB0b3I6Zm9udERlc2NyaXB0b3Igc2l6ZTooKHBhZ2VT
Y2FsZUZhY3RvciAhPSAxKSA/IFtmb250RGVzY3JpcHRvciBwb2ludFNpemVdICogcGFnZVNjYWxl
RmFjdG9yIDogMCldOwogICAgIH0gZWxzZQogICAgICAgICBmb250ID0gW05TRm9udCBtZW51Rm9u
dE9mU2l6ZTowXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbi5tbSBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbi5tbQppbmRl
eCBlZjdjOWI1MWM1ZjM0N2ZlYjlmZmNjZTg4YTgzNWE1OTkwMzY3YTBlLi5kMmNjNjE2ZjE1M2Qz
NDQxNGMwMDI2ZTIyNDE2YWU1Nzc2NTE3NWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW4ubW0KKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQ
cm9jZXNzUGx1Z0luLm1tCkBAIC01NCw3ICs1NCw3IEBAIC0gKHZvaWQpZGVhbGxvYwogCiBzdGF0
aWMgdm9pZCBkaWRDcmVhdGVQYWdlKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tCdW5kbGVQYWdlUmVm
IHBhZ2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7Ci0gICAgV0tXZWJQcm9jZXNzUGx1Z0lu
Q29udHJvbGxlciAqcGx1Z0luQ29udHJvbGxlciA9IChXS1dlYlByb2Nlc3NQbHVnSW5Db250cm9s
bGVyICopY2xpZW50SW5mbzsKKyAgICBhdXRvIHBsdWdJbkNvbnRyb2xsZXIgPSAoX19icmlkZ2Ug
V0tXZWJQcm9jZXNzUGx1Z0luQ29udHJvbGxlciAqKWNsaWVudEluZm87CiAgICAgaWQgPFdLV2Vi
UHJvY2Vzc1BsdWdJbj4gcHJpbmNpcGFsQ2xhc3NJbnN0YW5jZSA9IHBsdWdJbkNvbnRyb2xsZXIt
Pl9wcmluY2lwYWxDbGFzc0luc3RhbmNlLmdldCgpOwogCiAgICAgaWYgKFtwcmluY2lwYWxDbGFz
c0luc3RhbmNlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViUHJvY2Vzc1BsdWdJbjpk
aWRDcmVhdGVCcm93c2VyQ29udGV4dENvbnRyb2xsZXI6KV0pCkBAIC02Myw3ICs2Myw3IEBAIHN0
YXRpYyB2b2lkIGRpZENyZWF0ZVBhZ2UoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRsZVBhZ2VS
ZWYgcGFnZSwgY29uc3Qgdm9pZCoKIAogc3RhdGljIHZvaWQgd2lsbERlc3Ryb3lQYWdlKFdLQnVu
ZGxlUmVmIGJ1bmRsZSwgV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQqIGNsaWVudElu
Zm8pCiB7Ci0gICAgV0tXZWJQcm9jZXNzUGx1Z0luQ29udHJvbGxlciAqcGx1Z0luQ29udHJvbGxl
ciA9IChXS1dlYlByb2Nlc3NQbHVnSW5Db250cm9sbGVyICopY2xpZW50SW5mbzsKKyAgICBhdXRv
IHBsdWdJbkNvbnRyb2xsZXIgPSAoX19icmlkZ2UgV0tXZWJQcm9jZXNzUGx1Z0luQ29udHJvbGxl
ciAqKWNsaWVudEluZm87CiAgICAgaWQgPFdLV2ViUHJvY2Vzc1BsdWdJbj4gcHJpbmNpcGFsQ2xh
c3NJbnN0YW5jZSA9IHBsdWdJbkNvbnRyb2xsZXItPl9wcmluY2lwYWxDbGFzc0luc3RhbmNlLmdl
dCgpOwogCiAgICAgaWYgKFtwcmluY2lwYWxDbGFzc0luc3RhbmNlIHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3Iod2ViUHJvY2Vzc1BsdWdJbjp3aWxsRGVzdHJveUJyb3dzZXJDb250ZXh0Q29u
dHJvbGxlcjopXSkKQEAgLTc2LDcgKzc2LDcgQEAgc3RhdGljIHZvaWQgc2V0VXBCdW5kbGVDbGll
bnQoV0tXZWJQcm9jZXNzUGx1Z0luQ29udHJvbGxlciAqcGx1Z0luQ29udHJvbGxlciwgSW4KICAg
ICBtZW1zZXQoJmJ1bmRsZUNsaWVudCwgMCwgc2l6ZW9mKGJ1bmRsZUNsaWVudCkpOwogCiAgICAg
YnVuZGxlQ2xpZW50LmJhc2UudmVyc2lvbiA9IDE7Ci0gICAgYnVuZGxlQ2xpZW50LmJhc2UuY2xp
ZW50SW5mbyA9IHBsdWdJbkNvbnRyb2xsZXI7CisgICAgYnVuZGxlQ2xpZW50LmJhc2UuY2xpZW50
SW5mbyA9IChfX2JyaWRnZSB2b2lkKilwbHVnSW5Db250cm9sbGVyOwogICAgIGJ1bmRsZUNsaWVu
dC5kaWRDcmVhdGVQYWdlID0gZGlkQ3JlYXRlUGFnZTsKICAgICBidW5kbGVDbGllbnQud2lsbERl
c3Ryb3lQYWdlID0gd2lsbERlc3Ryb3lQYWdlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93
c2VyQ29udGV4dENvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xs
ZXIubW0KaW5kZXggODY2ZGI0NTBkNjdjYWFhNjFmOGU3MGQwYmQyYjM0ZWE1NzU5OGU3Ni4uZDVl
MDkzNjNiNTQ1ZGY5ZjljNDk3YTYzMDliYmI2NWU0OWFlYTE0YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1
Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250
ZXh0Q29udHJvbGxlci5tbQpAQCAtODQsNyArODQsNyBAQCBAaW1wbGVtZW50YXRpb24gV0tXZWJQ
cm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyIHsKIAogc3RhdGljIHZvaWQgZGlk
U3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5k
bGVGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmKiB1c2VyRGF0YVJlZiwgY29uc3Qgdm9pZCAqY2xp
ZW50SW5mbykKIHsKLSAgICBXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xs
ZXIgKnBsdWdpbkNvbnRleHRDb250cm9sbGVyID0gKFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJD
b250ZXh0Q29udHJvbGxlciAqKWNsaWVudEluZm87CisgICAgYXV0byBwbHVnaW5Db250ZXh0Q29u
dHJvbGxlciA9IChfX2JyaWRnZSBXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRy
b2xsZXIgKiljbGllbnRJbmZvOwogICAgIGF1dG8gbG9hZERlbGVnYXRlID0gcGx1Z2luQ29udGV4
dENvbnRyb2xsZXItPl9sb2FkRGVsZWdhdGUuZ2V0KCk7CiAKICAgICBpZiAoW2xvYWREZWxlZ2F0
ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHdlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29u
dGV4dENvbnRyb2xsZXI6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZTopXSkKQEAgLTkz
LDcgKzkzLDcgQEAgc3RhdGljIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShX
S0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVIKIAogc3RhdGljIHZvaWQgZGlkUmVj
ZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV0tCdW5kbGVQYWdl
UmVmIHBhZ2UsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiAqdXNlckRhdGFSZWYs
IGNvbnN0IHZvaWQgKmNsaWVudEluZm8pCiB7Ci0gICAgV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3Nl
ckNvbnRleHRDb250cm9sbGVyICpwbHVnaW5Db250ZXh0Q29udHJvbGxlciA9IChXS1dlYlByb2Nl
c3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgKiljbGllbnRJbmZvOworICAgIGF1dG8g
cGx1Z2luQ29udGV4dENvbnRyb2xsZXIgPSAoX19icmlkZ2UgV0tXZWJQcm9jZXNzUGx1Z0luQnJv
d3NlckNvbnRleHRDb250cm9sbGVyICopY2xpZW50SW5mbzsKICAgICBhdXRvIGxvYWREZWxlZ2F0
ZSA9IHBsdWdpbkNvbnRleHRDb250cm9sbGVyLT5fbG9hZERlbGVnYXRlLmdldCgpOwogCiAgICAg
aWYgKFtsb2FkRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJQcm9jZXNz
UGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZv
clByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOildKQpAQCAtMTAyLDcgKzEwMiw3IEBAIHN0YXRpYyB2
b2lkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdL
QnVuZGxlUGFnZVJlZiBwCiAKIHN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRGb3JGcmFtZShXS0J1
bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmKiB1c2Vy
RGF0YSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKIHsKLSAgICBXS1dlYlByb2Nlc3NQbHVnSW5C
cm93c2VyQ29udGV4dENvbnRyb2xsZXIgKnBsdWdpbkNvbnRleHRDb250cm9sbGVyID0gKFdLV2Vi
UHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciAqKWNsaWVudEluZm87CisgICAg
YXV0byBwbHVnaW5Db250ZXh0Q29udHJvbGxlciA9IChfX2JyaWRnZSBXS1dlYlByb2Nlc3NQbHVn
SW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgKiljbGllbnRJbmZvOwogICAgIGF1dG8gbG9hZERl
bGVnYXRlID0gcGx1Z2luQ29udGV4dENvbnRyb2xsZXItPl9sb2FkRGVsZWdhdGUuZ2V0KCk7CiAK
ICAgICBpZiAoW2xvYWREZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHdlYlBy
b2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6ZGlkRmluaXNoTG9hZEZvckZyYW1l
OildKQpAQCAtMTExLDcgKzExMSw3IEBAIHN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRGb3JGcmFt
ZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwKIAogc3RhdGlj
IHZvaWQgZ2xvYmFsT2JqZWN0SXNBdmFpbGFibGVGb3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFn
ZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tCdW5kbGVTY3JpcHRXb3JsZFJlZiBzY3JpcHRX
b3JsZCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKLSAgICBXS1dlYlByb2Nlc3NQbHVnSW5C
cm93c2VyQ29udGV4dENvbnRyb2xsZXIgKnBsdWdpbkNvbnRleHRDb250cm9sbGVyID0gKFdLV2Vi
UHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciAqKWNsaWVudEluZm87CisgICAg
YXV0byBwbHVnaW5Db250ZXh0Q29udHJvbGxlciA9IChfX2JyaWRnZSBXS1dlYlByb2Nlc3NQbHVn
SW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgKiljbGllbnRJbmZvOwogICAgIGF1dG8gbG9hZERl
bGVnYXRlID0gcGx1Z2luQ29udGV4dENvbnRyb2xsZXItPl9sb2FkRGVsZWdhdGUuZ2V0KCk7CiAK
ICAgICBpZiAoW2xvYWREZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHdlYlBy
b2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6Z2xvYmFsT2JqZWN0SXNBdmFpbGFi
bGVGb3JGcmFtZTppblNjcmlwdFdvcmxkOildKQpAQCAtMTIwLDcgKzEyMCw3IEBAIHN0YXRpYyB2
b2lkIGdsb2JhbE9iamVjdElzQXZhaWxhYmxlRm9yRnJhbWUoV0tCdW5kbGVQYWdlUmVmIHBhZ2Us
IFdLQnVuZGxlRnJhbWVSCiAKIHN0YXRpYyB2b2lkIGRpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNo
eShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVm
KiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKLSAgICBXS1dlYlByb2Nlc3NQ
bHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgKnBsdWdpbkNvbnRleHRDb250cm9sbGVyID0g
KFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciAqKWNsaWVudEluZm87
CisgICAgYXV0byBwbHVnaW5Db250ZXh0Q29udHJvbGxlciA9IChfX2JyaWRnZSBXS1dlYlByb2Nl
c3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgKiljbGllbnRJbmZvOwogICAgIGF1dG8g
bG9hZERlbGVnYXRlID0gcGx1Z2luQ29udGV4dENvbnRyb2xsZXItPl9sb2FkRGVsZWdhdGUuZ2V0
KCk7CiAKICAgICBpZiAoW2xvYWREZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KHdlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6ZGlkUmVtb3ZlRnJhbWVG
cm9tSGllcmFyY2h5OildKQpAQCAtMTI5LDcgKzEyOSw3IEBAIHN0YXRpYyB2b2lkIGRpZFJlbW92
ZUZyYW1lRnJvbUhpZXJhcmNoeShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJl
ZiBmCiAKIHN0YXRpYyB2b2lkIGRpZENvbW1pdExvYWRGb3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYg
cGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmKiB1c2VyRGF0YSwgY29uc3Qg
dm9pZCAqY2xpZW50SW5mbykKIHsKLSAgICBXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4
dENvbnRyb2xsZXIgKnBsdWdpbkNvbnRleHRDb250cm9sbGVyID0gKFdLV2ViUHJvY2Vzc1BsdWdJ
bkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciAqKWNsaWVudEluZm87CisgICAgYXV0byBwbHVnaW5D
b250ZXh0Q29udHJvbGxlciA9IChfX2JyaWRnZSBXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29u
dGV4dENvbnRyb2xsZXIgKiljbGllbnRJbmZvOwogICAgIGF1dG8gbG9hZERlbGVnYXRlID0gcGx1
Z2luQ29udGV4dENvbnRyb2xsZXItPl9sb2FkRGVsZWdhdGUuZ2V0KCk7CiAKICAgICBpZiAoW2xv
YWREZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHdlYlByb2Nlc3NQbHVnSW5C
cm93c2VyQ29udGV4dENvbnRyb2xsZXI6ZGlkQ29tbWl0TG9hZEZvckZyYW1lOildKQpAQCAtMTM4
LDcgKzEzOCw3IEBAIHN0YXRpYyB2b2lkIGRpZENvbW1pdExvYWRGb3JGcmFtZShXS0J1bmRsZVBh
Z2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwKIAogc3RhdGljIHZvaWQgZGlkRmlu
aXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlRnJh
bWVSZWYgZnJhbWUsIFdLVHlwZVJlZiogdXNlckRhdGEsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8p
CiB7Ci0gICAgV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyICpwbHVn
aW5Db250ZXh0Q29udHJvbGxlciA9IChXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENv
bnRyb2xsZXIgKiljbGllbnRJbmZvOworICAgIGF1dG8gcGx1Z2luQ29udGV4dENvbnRyb2xsZXIg
PSAoX19icmlkZ2UgV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyICop
Y2xpZW50SW5mbzsKICAgICBhdXRvIGxvYWREZWxlZ2F0ZSA9IHBsdWdpbkNvbnRleHRDb250cm9s
bGVyLT5fbG9hZERlbGVnYXRlLmdldCgpOwogCiAgICAgaWYgKFtsb2FkRGVsZWdhdGUgcmVzcG9u
ZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250
cm9sbGVyOmRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lOildKQpAQCAtMTQ3LDcgKzE0Nyw3
IEBAIHN0YXRpYyB2b2lkIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKFdLQnVuZGxlUGFn
ZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1lUmVmCiAKIHN0YXRpYyB2b2lkIGRpZEZhaWxQcm92aXNp
b25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVG
cmFtZVJlZiBmcmFtZSwgV0tFcnJvclJlZiB3a0Vycm9yLCBXS1R5cGVSZWYqIHVzZXJEYXRhLCBj
b25zdCB2b2lkICpjbGllbnRJbmZvKQogewotICAgIFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJD
b250ZXh0Q29udHJvbGxlciAqcGx1Z2luQ29udGV4dENvbnRyb2xsZXIgPSAoV0tXZWJQcm9jZXNz
UGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyICopY2xpZW50SW5mbzsKKyAgICBhdXRvIHBs
dWdpbkNvbnRleHRDb250cm9sbGVyID0gKF9fYnJpZGdlIFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dz
ZXJDb250ZXh0Q29udHJvbGxlciAqKWNsaWVudEluZm87CiAgICAgYXV0byBsb2FkRGVsZWdhdGUg
PSBwbHVnaW5Db250ZXh0Q29udHJvbGxlci0+X2xvYWREZWxlZ2F0ZS5nZXQoKTsKIAogICAgIGlm
IChbbG9hZERlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViUHJvY2Vzc1Bs
dWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVy
cm9yRm9yRnJhbWU6ZXJyb3I6KV0pCkBAIC0xNTYsNyArMTU2LDcgQEAgc3RhdGljIHZvaWQgZGlk
RmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvckZvckZyYW1lKFdLQnVuZGxlUGFnZVJlZiBwYWdl
LCBXS0J1bmQKIAogc3RhdGljIHZvaWQgZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JGcmFtZShXS0J1
bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tFcnJvclJlZiB3a0Vy
cm9yLCBXS1R5cGVSZWYqIHVzZXJEYXRhLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQogewotICAg
IFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciAqcGx1Z2luQ29udGV4
dENvbnRyb2xsZXIgPSAoV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVy
ICopY2xpZW50SW5mbzsKKyAgICBhdXRvIHBsdWdpbkNvbnRleHRDb250cm9sbGVyID0gKF9fYnJp
ZGdlIFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciAqKWNsaWVudElu
Zm87CiAgICAgYXV0byBsb2FkRGVsZWdhdGUgPSBwbHVnaW5Db250ZXh0Q29udHJvbGxlci0+X2xv
YWREZWxlZ2F0ZS5nZXQoKTsKIAogICAgIGlmIChbbG9hZERlbGVnYXRlIHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3Iod2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjpk
aWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1lOmVycm9yOildKQpAQCAtMTY1LDcgKzE2NSw3IEBA
IHN0YXRpYyB2b2lkIGRpZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJhbWUoV0tCdW5kbGVQYWdlUmVm
IHBhZ2UsIFdLQnVuZGxlRnJhbWVSZWYKIAogc3RhdGljIHZvaWQgZGlkU2FtZURvY3VtZW50TmF2
aWdhdGlvbkZvckZyYW1lKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1lUmVmIGZy
YW1lLCBXS1NhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlIHR5cGUsIFdLVHlwZVJlZiogdXNlckRh
dGEsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pCiB7Ci0gICAgV0tXZWJQcm9jZXNzUGx1Z0luQnJv
d3NlckNvbnRleHRDb250cm9sbGVyICpwbHVnaW5Db250ZXh0Q29udHJvbGxlciA9IChXS1dlYlBy
b2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgKiljbGllbnRJbmZvOworICAgIGF1
dG8gcGx1Z2luQ29udGV4dENvbnRyb2xsZXIgPSAoX19icmlkZ2UgV0tXZWJQcm9jZXNzUGx1Z0lu
QnJvd3NlckNvbnRleHRDb250cm9sbGVyICopY2xpZW50SW5mbzsKICAgICBhdXRvIGxvYWREZWxl
Z2F0ZSA9IHBsdWdpbkNvbnRleHRDb250cm9sbGVyLT5fbG9hZERlbGVnYXRlLmdldCgpOwogCiAg
ICAgaWYgKFtsb2FkRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJQcm9j
ZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOmRpZFNhbWVEb2N1bWVudE5hdmlnYXRp
b246Zm9yRnJhbWU6KV0pCkBAIC0xNzksNyArMTc5LDcgQEAgc3RhdGljIHZvaWQgZGlkU2FtZURv
Y3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZy
YW0KIAogc3RhdGljIHZvaWQgZGlkTGF5b3V0Rm9yRnJhbWUoV0tCdW5kbGVQYWdlUmVmIHBhZ2Us
IFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7Ci0gICAg
V0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyICpwbHVnaW5Db250ZXh0
Q29udHJvbGxlciA9IChXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIg
KiljbGllbnRJbmZvOworICAgIGF1dG8gcGx1Z2luQ29udGV4dENvbnRyb2xsZXIgPSAoX19icmlk
Z2UgV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyICopY2xpZW50SW5m
bzsKICAgICBhdXRvIGxvYWREZWxlZ2F0ZSA9IHBsdWdpbkNvbnRleHRDb250cm9sbGVyLT5fbG9h
ZERlbGVnYXRlLmdldCgpOwogCiAgICAgaWYgKFtsb2FkRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3Rvcih3ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOmRp
ZExheW91dEZvckZyYW1lOildKQpAQCAtMTg4LDcgKzE4OCw3IEBAIHN0YXRpYyB2b2lkIGRpZExh
eW91dEZvckZyYW1lKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1l
LCBjb25zCiAKIHN0YXRpYyB2b2lkIGRpZFJlYWNoTGF5b3V0TWlsZXN0b25lKFdLQnVuZGxlUGFn
ZVJlZiBwYWdlLCBXS0xheW91dE1pbGVzdG9uZXMgbWlsZXN0b25lcywgV0tUeXBlUmVmKiB1c2Vy
RGF0YSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKIHsKLSAgICBXS1dlYlByb2Nlc3NQbHVnSW5C
cm93c2VyQ29udGV4dENvbnRyb2xsZXIgKnBsdWdpbkNvbnRleHRDb250cm9sbGVyID0gKFdLV2Vi
UHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciAqKWNsaWVudEluZm87CisgICAg
YXV0byBwbHVnaW5Db250ZXh0Q29udHJvbGxlciA9IChfX2JyaWRnZSBXS1dlYlByb2Nlc3NQbHVn
SW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgKiljbGllbnRJbmZvOwogICAgIGF1dG8gbG9hZERl
bGVnYXRlID0gcGx1Z2luQ29udGV4dENvbnRyb2xsZXItPl9sb2FkRGVsZWdhdGUuZ2V0KCk7CiAK
ICAgICBpZiAoW2xvYWREZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHdlYlBy
b2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6cmVuZGVyaW5nUHJvZ3Jlc3NEaWRD
aGFuZ2U6KV0pCkBAIC0xOTcsNyArMTk3LDcgQEAgc3RhdGljIHZvaWQgZGlkUmVhY2hMYXlvdXRN
aWxlc3RvbmUoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLTGF5b3V0TWlsZXN0b25lcyBtaWwKIAog
c3RhdGljIHZvaWQgZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUoV0tCdW5k
bGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiogdXNlckRh
dGEsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pCiB7Ci0gICAgV0tXZWJQcm9jZXNzUGx1Z0luQnJv
d3NlckNvbnRleHRDb250cm9sbGVyICpwbHVnaW5Db250ZXh0Q29udHJvbGxlciA9IChXS1dlYlBy
b2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgKiljbGllbnRJbmZvOworICAgIGF1
dG8gcGx1Z2luQ29udGV4dENvbnRyb2xsZXIgPSAoX19icmlkZ2UgV0tXZWJQcm9jZXNzUGx1Z0lu
QnJvd3NlckNvbnRleHRDb250cm9sbGVyICopY2xpZW50SW5mbzsKICAgICBhdXRvIGxvYWREZWxl
Z2F0ZSA9IHBsdWdpbkNvbnRleHRDb250cm9sbGVyLT5fbG9hZERlbGVnYXRlLmdldCgpOwogCiAg
ICAgaWYgKFtsb2FkRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJQcm9j
ZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOmRpZEZpcnN0VmlzdWFsbHlOb25FbXB0
eUxheW91dEZvckZyYW1lOildKQpAQCAtMjA2LDcgKzIwNiw3IEBAIHN0YXRpYyB2b2lkIGRpZEZp
cnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBX
S0J1bmRsCiAKIHN0YXRpYyB2b2lkIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lKFdLQnVu
ZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBjb25zdCB2b2lkKiBjbGll
bnRJbmZvKQogewotICAgIFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxl
ciAqcGx1Z2luQ29udGV4dENvbnRyb2xsZXIgPSAoV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNv
bnRleHRDb250cm9sbGVyICopY2xpZW50SW5mbzsKKyAgICBhdXRvIHBsdWdpbkNvbnRleHRDb250
cm9sbGVyID0gKF9fYnJpZGdlIFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJv
bGxlciAqKWNsaWVudEluZm87CiAgICAgYXV0byBsb2FkRGVsZWdhdGUgPSBwbHVnaW5Db250ZXh0
Q29udHJvbGxlci0+X2xvYWREZWxlZ2F0ZS5nZXQoKTsKIAogICAgIGlmIChbbG9hZERlbGVnYXRl
IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250
ZXh0Q29udHJvbGxlcjpkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZTopXSkKQEAgLTIxNSw3
ICsyMTUsNyBAQCBzdGF0aWMgdm9pZCBkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZShXS0J1
bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZgogCiBzdGF0aWMgV0tTdHJpbmdSZWYg
dXNlckFnZW50Rm9yVVJMKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFdLVVJMUmVmIHVybCwgY29u
c3Qgdm9pZCogY2xpZW50SW5mbykKIHsKLSAgICBXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29u
dGV4dENvbnRyb2xsZXIgKnBsdWdpbkNvbnRleHRDb250cm9sbGVyID0gKFdLV2ViUHJvY2Vzc1Bs
dWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciAqKWNsaWVudEluZm87CisgICAgYXV0byBwbHVn
aW5Db250ZXh0Q29udHJvbGxlciA9IChfX2JyaWRnZSBXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2Vy
Q29udGV4dENvbnRyb2xsZXIgKiljbGllbnRJbmZvOwogICAgIGF1dG8gbG9hZERlbGVnYXRlID0g
cGx1Z2luQ29udGV4dENvbnRyb2xsZXItPl9sb2FkRGVsZWdhdGUuZ2V0KCk7CiAgICAgCiAgICAg
aWYgKFtsb2FkRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJQcm9jZXNz
UGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOmZyYW1lOnVzZXJBZ2VudEZvclVSTDopXSkg
ewpAQCAtMjI0LDggKzIyNCw3IEBAIHN0YXRpYyBXS1N0cmluZ1JlZiB1c2VyQWdlbnRGb3JVUkwo
V0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tVUkxSZWYgdXJsLCBjb25zdCB2CiAgICAgICAgIGlm
ICghc3RyaW5nKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICAgICAgV0tTdHJp
bmdSZWYgd2tTdHJpbmcgPSBXS1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoQ0ZTdHJpbmdSZWYp
c3RyaW5nKTsKLSAgICAgICAgcmV0dXJuIHdrU3RyaW5nOworICAgICAgICByZXR1cm4gV0tTdHJp
bmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKF9fYnJpZGdlIENGU3RyaW5nUmVmKXN0cmluZyk7CiAgICAg
fQogICAgIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtMjM3LDcgKzIzNiw3IEBAIHN0YXRpYyB2
b2lkIHNldFVwUGFnZUxvYWRlckNsaWVudChXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4
dENvbnRyb2xsZXIgKmNvCiAgICAgbWVtc2V0KCZjbGllbnQsIDAsIHNpemVvZihjbGllbnQpKTsK
IAogICAgIGNsaWVudC5iYXNlLnZlcnNpb24gPSA4OwotICAgIGNsaWVudC5iYXNlLmNsaWVudElu
Zm8gPSBjb250ZXh0Q29udHJvbGxlcjsKKyAgICBjbGllbnQuYmFzZS5jbGllbnRJbmZvID0gKF9f
YnJpZGdlIHZvaWQqKWNvbnRleHRDb250cm9sbGVyOwogICAgIGNsaWVudC5kaWRTdGFydFByb3Zp
c2lvbmFsTG9hZEZvckZyYW1lID0gZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZTsKICAg
ICBjbGllbnQuZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWUgPSBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZTsK
ICAgICBjbGllbnQuZGlkQ29tbWl0TG9hZEZvckZyYW1lID0gZGlkQ29tbWl0TG9hZEZvckZyYW1l
OwpAQCAtMjYwLDcgKzI1OSw3IEBAIHN0YXRpYyB2b2lkIHNldFVwUGFnZUxvYWRlckNsaWVudChX
S1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgKmNvCiAKIHN0YXRpYyBX
S1VSTFJlcXVlc3RSZWYgd2lsbFNlbmRSZXF1ZXN0Rm9yRnJhbWUoV0tCdW5kbGVQYWdlUmVmLCBX
S0J1bmRsZUZyYW1lUmVmIGZyYW1lLCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZpZXIsIFdLVVJM
UmVxdWVzdFJlZiByZXF1ZXN0LCBXS1VSTFJlc3BvbnNlUmVmIHJlZGlyZWN0UmVzcG9uc2UsIGNv
bnN0IHZvaWQqIGNsaWVudEluZm8pCiB7Ci0gICAgV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNv
bnRleHRDb250cm9sbGVyICpwbHVnaW5Db250ZXh0Q29udHJvbGxlciA9IChXS1dlYlByb2Nlc3NQ
bHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgKiljbGllbnRJbmZvOworICAgIGF1dG8gcGx1
Z2luQ29udGV4dENvbnRyb2xsZXIgPSAoX19icmlkZ2UgV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3Nl
ckNvbnRleHRDb250cm9sbGVyICopY2xpZW50SW5mbzsKICAgICBhdXRvIGxvYWREZWxlZ2F0ZSA9
IHBsdWdpbkNvbnRleHRDb250cm9sbGVyLT5fbG9hZERlbGVnYXRlLmdldCgpOwogCiAgICAgaWYg
KFtsb2FkRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJQcm9jZXNzUGx1
Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOmZyYW1lOndpbGxTZW5kUmVxdWVzdEZvclJlc291
cmNlOnJlcXVlc3Q6cmVkaXJlY3RSZXNwb25zZTopXSkgewpAQCAtMjg1LDcgKzI4NCw3IEBAIHN0
YXRpYyBXS1VSTFJlcXVlc3RSZWYgd2lsbFNlbmRSZXF1ZXN0Rm9yRnJhbWUoV0tCdW5kbGVQYWdl
UmVmLCBXS0J1bmRsZUZyYW1lUmVmCiAKIHN0YXRpYyB2b2lkIGRpZEluaXRpYXRlTG9hZEZvclJl
c291cmNlKFdLQnVuZGxlUGFnZVJlZiwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgdWludDY0X3Qg
cmVzb3VyY2VJZGVudGlmaWVyLCBXS1VSTFJlcXVlc3RSZWYgcmVxdWVzdCwgYm9vbCBwYWdlSXNQ
cm92aXNpb25hbGx5TG9hZGluZywgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKLSAgICBXS1dl
YlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgKnBsdWdpbkNvbnRleHRDb250
cm9sbGVyID0gKFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciAqKWNs
aWVudEluZm87CisgICAgYXV0byBwbHVnaW5Db250ZXh0Q29udHJvbGxlciA9IChfX2JyaWRnZSBX
S1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgKiljbGllbnRJbmZvOwog
ICAgIGF1dG8gbG9hZERlbGVnYXRlID0gcGx1Z2luQ29udGV4dENvbnRyb2xsZXItPl9sb2FkRGVs
ZWdhdGUuZ2V0KCk7CiAKICAgICBpZiAoW2xvYWREZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKHdlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6ZnJhbWU6
ZGlkSW5pdGlhdGVMb2FkRm9yUmVzb3VyY2U6cmVxdWVzdDpwYWdlSXNQcm92aXNpb25hbGx5TG9h
ZGluZzopXSkgewpAQCAtMjk4LDcgKzI5Nyw3IEBAIHN0YXRpYyB2b2lkIGRpZEluaXRpYXRlTG9h
ZEZvclJlc291cmNlKFdLQnVuZGxlUGFnZVJlZiwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwKIAog
c3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZEZvclJlc291cmNlKFdLQnVuZGxlUGFnZVJlZiwgV0tC
dW5kbGVGcmFtZVJlZiBmcmFtZSwgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKQogewotICAgIFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0
Q29udHJvbGxlciAqcGx1Z2luQ29udGV4dENvbnRyb2xsZXIgPSAoV0tXZWJQcm9jZXNzUGx1Z0lu
QnJvd3NlckNvbnRleHRDb250cm9sbGVyICopY2xpZW50SW5mbzsKKyAgICBhdXRvIHBsdWdpbkNv
bnRleHRDb250cm9sbGVyID0gKF9fYnJpZGdlIFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250
ZXh0Q29udHJvbGxlciAqKWNsaWVudEluZm87CiAgICAgYXV0byBsb2FkRGVsZWdhdGUgPSBwbHVn
aW5Db250ZXh0Q29udHJvbGxlci0+X2xvYWREZWxlZ2F0ZS5nZXQoKTsKIAogICAgIGlmIChbbG9h
ZERlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViUHJvY2Vzc1BsdWdJbkJy
b3dzZXJDb250ZXh0Q29udHJvbGxlcjpmcmFtZTpkaWRGaW5pc2hMb2FkRm9yUmVzb3VyY2U6KV0p
IHsKQEAgLTMxMCw3ICszMDksNyBAQCBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkRm9yUmVzb3Vy
Y2UoV0tCdW5kbGVQYWdlUmVmLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCB1aQogCiBzdGF0aWMg
dm9pZCBkaWRGYWlsTG9hZEZvclJlc291cmNlKFdLQnVuZGxlUGFnZVJlZiwgV0tCdW5kbGVGcmFt
ZVJlZiBmcmFtZSwgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBXS0Vycm9yUmVmIGVycm9y
LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewotICAgIFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dz
ZXJDb250ZXh0Q29udHJvbGxlciAqcGx1Z2luQ29udGV4dENvbnRyb2xsZXIgPSAoV0tXZWJQcm9j
ZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyICopY2xpZW50SW5mbzsKKyAgICBhdXRv
IHBsdWdpbkNvbnRleHRDb250cm9sbGVyID0gKF9fYnJpZGdlIFdLV2ViUHJvY2Vzc1BsdWdJbkJy
b3dzZXJDb250ZXh0Q29udHJvbGxlciAqKWNsaWVudEluZm87CiAgICAgYXV0byBsb2FkRGVsZWdh
dGUgPSBwbHVnaW5Db250ZXh0Q29udHJvbGxlci0+X2xvYWREZWxlZ2F0ZS5nZXQoKTsKIAogICAg
IGlmIChbbG9hZERlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViUHJvY2Vz
c1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjpmcmFtZTpkaWRGYWlsTG9hZEZvclJlc291
cmNlOmVycm9yOildKSB7CkBAIC0zMjcsNyArMzI2LDcgQEAgc3RhdGljIHZvaWQgc2V0VXBSZXNv
dXJjZUxvYWRDbGllbnQoV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVy
ICoKICAgICBtZW1zZXQoJmNsaWVudCwgMCwgc2l6ZW9mKGNsaWVudCkpOwogCiAgICAgY2xpZW50
LmJhc2UudmVyc2lvbiA9IDE7Ci0gICAgY2xpZW50LmJhc2UuY2xpZW50SW5mbyA9IGNvbnRleHRD
b250cm9sbGVyOworICAgIGNsaWVudC5iYXNlLmNsaWVudEluZm8gPSAoX19icmlkZ2Ugdm9pZCop
IGNvbnRleHRDb250cm9sbGVyOwogICAgIGNsaWVudC53aWxsU2VuZFJlcXVlc3RGb3JGcmFtZSA9
IHdpbGxTZW5kUmVxdWVzdEZvckZyYW1lOwogICAgIGNsaWVudC5kaWRJbml0aWF0ZUxvYWRGb3JS
ZXNvdXJjZSA9IGRpZEluaXRpYXRlTG9hZEZvclJlc291cmNlOwogICAgIGNsaWVudC5kaWRGaW5p
c2hMb2FkRm9yUmVzb3VyY2UgPSBkaWRGaW5pc2hMb2FkRm9yUmVzb3VyY2U7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvbWFjL0luamVjdGVkQnVu
ZGxlTWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL21hYy9J
bmplY3RlZEJ1bmRsZU1hYy5tbQppbmRleCBiOWQyOWE3YjhlOWZkZTFlODRjNDFjMmM5YTY1NTBm
NzE5OTk2NzcwLi42ZDNlOGQ5NjE4ZTc4ZTM1YTkxODgyM2M1MmUxMTU1ZTJkMzM4MTA1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvbWFjL0luamVj
dGVkQnVuZGxlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9tYWMvSW5qZWN0ZWRCdW5kbGVNYWMubW0KQEAgLTczLDcgKzczLDcgQEAgYm9vbCBJbmpl
Y3RlZEJ1bmRsZTo6aW5pdGlhbGl6ZShjb25zdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
JiBwYXJhbWV0ZXJzLAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgbV9wbGF0
Zm9ybUJ1bmRsZSA9IFtbTlNCdW5kbGUgYWxsb2NdIGluaXRXaXRoVVJMOihOU1VSTCAqKWJ1bmRs
ZVVSTC5nZXQoKV07CisgICAgbV9wbGF0Zm9ybUJ1bmRsZSA9IFtbTlNCdW5kbGUgYWxsb2NdIGlu
aXRXaXRoVVJMOihfX2JyaWRnZSBOU1VSTCAqKWJ1bmRsZVVSTC5nZXQoKV07CiAgICAgaWYgKCFt
X3BsYXRmb3JtQnVuZGxlKSB7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiSW5qZWN0ZWRCdW5kbGU6
OmxvYWQgZmFpbGVkIC0gQ291bGQgbm90IGNyZWF0ZSB0aGUgYnVuZGxlLlxuIik7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1hYy5tbQppbmRleCBl
YzNjYTVkNDBhYTc2NGExMmQ5MzdkNGNmMjdkOTcxYjRhYTk4NzNiLi44YmJlZDZiZWRjOTUxN2Vh
N2Y3ZTVhYjRmN2I5MDkyZjU3N2JjMWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9tYWMvTmV0c2NhcGVQbHVnaW5NYWMubW0KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvbWFjL05ldHNjYXBlUGx1Z2lu
TWFjLm1tCkBAIC0xNjcsNyArMTY3LDcgQEAgTlBFcnJvciBOZXRzY2FwZVBsdWdpbjo6cG9wVXBD
b250ZXh0TWVudShOUE1lbnUqIG5wTWVudSkKICAgICBpZiAoIWNvbnZlcnRQb2ludChtX2N1cnJl
bnRNb3VzZUV2ZW50LT5kYXRhLm1vdXNlLnBsdWdpblgsIG1fY3VycmVudE1vdXNlRXZlbnQtPmRh
dGEubW91c2UucGx1Z2luWSwgTlBDb29yZGluYXRlU3BhY2VQbHVnaW4sIHNjcmVlblgsIHNjcmVl
blksIE5QQ29vcmRpbmF0ZVNwYWNlU2NyZWVuKSkKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAKLSAgICBfTlNQb3BVcENhcmJvbk1lbnUzKHJlaW50ZXJwcmV0X2Nhc3Q8TlNNZW51ICo+
KG5wTWVudSksIG5pbCwgbmlsLCBOU01ha2VQb2ludChzY3JlZW5YLCBzY3JlZW5ZKSwgLTEsIG5p
bCwgMCwgbmlsLCBOU1BvcFVwTWVudVR5cGVDb250ZXh0LCBuaWwpOworICAgIF9OU1BvcFVwQ2Fy
Ym9uTWVudTMoKF9fYnJpZGdlIE5TTWVudSAqKW5wTWVudSwgbmlsLCBuaWwsIE5TTWFrZVBvaW50
KHNjcmVlblgsIHNjcmVlblkpLCAtMSwgbmlsLCAwLCBuaWwsIE5TUG9wVXBNZW51VHlwZUNvbnRl
eHQsIG5pbCk7CiAgICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKaW5kZXggNzlhMzRlZGMw
YzdmMTA3NmQyMzMzOTQ1ZTk3ZWNkMTA5NjVkMWE4Yy4uZTU4ZGUyYzc2MGRkYjE0YzEyYzRjYmZi
Zjc1Y2U5MmY1YWI4ZTAxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERlBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BERi9QREZQbHVnaW4uaApAQCAtMjQ5LDggKzI0OSwxMCBAQCBwcml2YXRlOgogICAgIFdl
YkNvcmU6OkludFNpemUgcGRmRG9jdW1lbnRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9wZGZEb2N1
bWVudFNpemU7IH0KICAgICB2b2lkIHNldFBERkRvY3VtZW50U2l6ZShXZWJDb3JlOjpJbnRTaXpl
IHNpemUpIHsgbV9wZGZEb2N1bWVudFNpemUgPSBzaXplOyB9CiAKKyNpZmRlZiBfX09CSkNfXwog
ICAgIE5TRGF0YSAqbGl2ZURhdGEoKSBjb25zdDsKLSAgICBOU0RhdGEgKnJhd0RhdGEoKSBjb25z
dCB7IHJldHVybiAoTlNEYXRhICopbV9kYXRhLmdldCgpOyB9CisgICAgTlNEYXRhICpyYXdEYXRh
KCkgY29uc3QgeyByZXR1cm4gKF9fYnJpZGdlIE5TRGF0YSAqKW1fZGF0YS5nZXQoKTsgfQorI2Vu
ZGlmCiAKICAgICBXZWJGcmFtZSogd2ViRnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lOyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9t
YWMvV2ViRHJhZ0NsaWVudE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQppbmRleCBmNjVjYjI0YzYyNWMxMmU2NGNl
NWRhN2NkZDQyZTYwOGRlODA4NmIzLi43MWY2NzNhODU5NmY0ZTI5ZDkzNWJkMDNhMjBhZWE1ZjNl
NmZjYmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCkBAIC0xNTQsNyArMTU0LDcg
QEAgdm9pZCBXZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgRWxlbWUKICAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBhcmNo
aXZlSGFuZGxlOwogICAgIHNpemVfdCBhcmNoaXZlU2l6ZSA9IDA7CiAgICAgaWYgKGRhdGEpIHsK
LSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYXJjaGl2ZUJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKChOU0RhdGEgKilkYXRhLmdldCgpKTsKKyAgICAgICAgYXV0byBhcmNoaXZlQnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKF9fYnJpZGdlIE5TRGF0YSAqKWRhdGEuZ2V0KCkp
OwogICAgICAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBhcmNoaXZlU2hhcmVkTWVtb3J5QnVmZmVy
ID0gU2hhcmVkTWVtb3J5OjphbGxvY2F0ZShhcmNoaXZlQnVmZmVyLT5zaXplKCkpOwogICAgICAg
ICBpZiAoIWFyY2hpdmVTaGFyZWRNZW1vcnlCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRy
ZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5t
bQppbmRleCA3ZTZkNjY1NWI3OTAzZWFmY2Y0OTdmZmI4OWZiZDQ3OWM1ZTc5YTBhLi40NjAzZGQ2
NWRhMmQ4NjY4MzM5YTMzYTRjNmFhYmIyOGE5OWRjNGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVt
b3RlQ3VzdG9tLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90
ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20ubW0KQEAgLTEzNywxMiArMTM3
LDEyIEBAIFJlZjxXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI+IFBsYXRmb3JtQ0FMYXllclJlbW90
ZUN1c3RvbTo6Y2xvbmUoUGxhdGZvcm1DQUxheWVyCiAKIENGVHlwZVJlZiBQbGF0Zm9ybUNBTGF5
ZXJSZW1vdGVDdXN0b206OmNvbnRlbnRzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gW21fcGxhdGZv
cm1MYXllciBjb250ZW50c107CisgICAgcmV0dXJuIChfX2JyaWRnZSBDRlR5cGVSZWYpW21fcGxh
dGZvcm1MYXllciBjb250ZW50c107CiB9CiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3Vz
dG9tOjpzZXRDb250ZW50cyhDRlR5cGVSZWYgY29udGVudHMpCiB7Ci0gICAgW21fcGxhdGZvcm1M
YXllciBzZXRDb250ZW50czooaWQpY29udGVudHNdOworICAgIFttX3BsYXRmb3JtTGF5ZXIgc2V0
Q29udGVudHM6KF9fYnJpZGdlIGlkKWNvbnRlbnRzXTsKIH0KIAogdm9pZCBQbGF0Zm9ybUNBTGF5
ZXJSZW1vdGVDdXN0b206OnNldE5lZWRzRGlzcGxheUluUmVjdChjb25zdCBGbG9hdFJlY3QmIHJl
Y3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KaW5kZXggZDAyZWQ3
MjFhN2IwYWEyYzlmMDBkZDhkMWI2OTk1NTczZGJjMmQ4My4uMDA4MmNiYTY3NmU1ZTZhNjA3MTY5
ZWMxZDE1Y2M2YWE3ZjdhNGEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5n
QXJlYS5tbQpAQCAtODQ1LDcgKzg0NSw3IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWE6OmNvbW1pdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBGbG9hdFBvaW50CiAgICAg
ICAgIFJldGFpblB0cjxDQUJhc2ljQW5pbWF0aW9uPiBzaGFkb3dQb3NpdGlvbkFuaW1hdGlvbiA9
IHRyYW5zaWVudFpvb21TbmFwQW5pbWF0aW9uRm9yS2V5UGF0aCgicG9zaXRpb24iKTsKICAgICAg
ICAgW3NoYWRvd1Bvc2l0aW9uQW5pbWF0aW9uIHNldFRvVmFsdWU6W05TVmFsdWUgdmFsdWVXaXRo
UG9pbnQ6c2hhZG93TGF5ZXJQb3NpdGlvbkZvckZyYW1lKGZyYW1lVmlldywgY29uc3RyYWluZWRP
cmlnaW4pXV07CiAgICAgICAgIFJldGFpblB0cjxDQUJhc2ljQW5pbWF0aW9uPiBzaGFkb3dQYXRo
QW5pbWF0aW9uID0gdHJhbnNpZW50Wm9vbVNuYXBBbmltYXRpb25Gb3JLZXlQYXRoKCJzaGFkb3dQ
YXRoIik7Ci0gICAgICAgIFtzaGFkb3dQYXRoQW5pbWF0aW9uIHNldFRvVmFsdWU6KGlkKXNoYWRv
d1BhdGguZ2V0KCldOworICAgICAgICBbc2hhZG93UGF0aEFuaW1hdGlvbiBzZXRUb1ZhbHVlOihf
X2JyaWRnZSBpZClzaGFkb3dQYXRoLmdldCgpXTsKIAogICAgICAgICBbc2hhZG93Q0FMYXllciBh
ZGRBbmltYXRpb246c2hhZG93Qm91bmRzQW5pbWF0aW9uLmdldCgpIGZvcktleTpAInRyYW5zaWVu
dFpvb21Db21taXRTaGFkb3dCb3VuZHMiXTsKICAgICAgICAgW3NoYWRvd0NBTGF5ZXIgYWRkQW5p
bWF0aW9uOnNoYWRvd1Bvc2l0aW9uQW5pbWF0aW9uLmdldCgpIGZvcktleTpAInRyYW5zaWVudFpv
b21Db21taXRTaGFkb3dQb3NpdGlvbiJdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRleCBjOWE0MDgxNGRiMTRmNjRmNzg4MjU2
YmIyMzk4YzgxYzI5NjJhMTkyLi4yNTU1YzNkMGFlYmQ1ZGI0OWQwOTMyYjlhNjRlZWI5MjQwODMx
ZGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2Vi
UGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2Vi
UGFnZU1hYy5tbQpAQCAtNzM0LDcgKzczNCw3IEBAIHZvaWQgV2ViUGFnZTo6c2V0VG9wT3Zlcmhh
bmdJbWFnZShXZWJJbWFnZSogaW1hZ2UpCiAKICAgICBsYXllci0+c2V0U2l6ZShpbWFnZS0+c2l6
ZSgpKTsKICAgICBsYXllci0+c2V0UG9zaXRpb24oRmxvYXRQb2ludCgwLCAtaW1hZ2UtPnNpemUo
KS5oZWlnaHQoKSkpOwotICAgIGxheWVyLT5wbGF0Zm9ybUxheWVyKCkuY29udGVudHMgPSAoaWQp
aW1hZ2UtPmJpdG1hcCgpLm1ha2VDR0ltYWdlQ29weSgpLmdldCgpOworICAgIGxheWVyLT5wbGF0
Zm9ybUxheWVyKCkuY29udGVudHMgPSAoX19icmlkZ2UgaWQpaW1hZ2UtPmJpdG1hcCgpLm1ha2VD
R0ltYWdlQ29weSgpLmdldCgpOwogfQogCiB2b2lkIFdlYlBhZ2U6OnNldEJvdHRvbU92ZXJoYW5n
SW1hZ2UoV2ViSW1hZ2UqIGltYWdlKQpAQCAtNzQ4LDcgKzc0OCw3IEBAIHZvaWQgV2ViUGFnZTo6
c2V0Qm90dG9tT3ZlcmhhbmdJbWFnZShXZWJJbWFnZSogaW1hZ2UpCiAgICAgICAgIHJldHVybjsK
IAogICAgIGxheWVyLT5zZXRTaXplKGltYWdlLT5zaXplKCkpOwotICAgIGxheWVyLT5wbGF0Zm9y
bUxheWVyKCkuY29udGVudHMgPSAoaWQpaW1hZ2UtPmJpdG1hcCgpLm1ha2VDR0ltYWdlQ29weSgp
LmdldCgpOworICAgIGxheWVyLT5wbGF0Zm9ybUxheWVyKCkuY29udGVudHMgPSAoX19icmlkZ2Ug
aWQpaW1hZ2UtPmJpdG1hcCgpLm1ha2VDR0ltYWdlQ29weSgpLmdldCgpOwogfQogCiB2b2lkIFdl
YlBhZ2U6OnVwZGF0ZUhlYWRlckFuZEZvb3RlckxheWVyc0ZvckRldmljZVNjYWxlQ2hhbmdlKGZs
b2F0IHNjYWxlRmFjdG9yKQo=
</data>
<flag name="review"
          id="360139"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>