<?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>151414</bug_id>
          
          <creation_ts>2015-11-18 15:31:27 -0800</creation_ts>
          <short_desc>Progress towards implementing Downloads with NETWORK_SESSION</short_desc>
          <delta_ts>2015-11-19 05:00:08 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>japhet</cc>
    
    <cc>ossy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1143021</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-11-18 15:31:27 -0800</bug_when>
    <thetext>Progress towards implementing Downloads with NETWORK_SESSION</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143034</commentid>
    <comment_count>1</comment_count>
      <attachid>265793</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-11-18 15:46:00 -0800</bug_when>
    <thetext>Created attachment 265793
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143045</commentid>
    <comment_count>2</comment_count>
      <attachid>265793</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-11-18 15:53:34 -0800</bug_when>
    <thetext>Comment on attachment 265793
Patch

More #if USE(NETWORK_SESSION)  :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143053</commentid>
    <comment_count>3</comment_count>
      <attachid>265797</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-11-18 16:02:56 -0800</bug_when>
    <thetext>Created attachment 265797
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143100</commentid>
    <comment_count>4</comment_count>
      <attachid>265797</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-18 17:17:20 -0800</bug_when>
    <thetext>Comment on attachment 265797
Patch

Clearing flags on attachment: 265797

Committed r192601: &lt;http://trac.webkit.org/changeset/192601&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143101</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-18 17:17:25 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143211</commentid>
    <comment_count>6</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-11-18 23:56:19 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 265797 [details]
&gt; Patch
&gt; 
&gt; Clearing flags on attachment: 265797
&gt; 
&gt; Committed r192601: &lt;http://trac.webkit.org/changeset/192601&gt;

It broke the Apple Windows and WinCairo build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143266</commentid>
    <comment_count>7</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-11-19 05:00:08 -0800</bug_when>
    <thetext>fix landed in http://trac.webkit.org/changeset/192623</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265793</attachid>
            <date>2015-11-18 15:46:00 -0800</date>
            <delta_ts>2015-11-18 16:02:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-151414-20151118154549.patch</filename>
            <type>text/plain</type>
            <size>53244</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MjQ5NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDE1LTExLTE4ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUHJvZ3Jlc3Mg
dG93YXJkcyBpbXBsZW1lbnRpbmcgRG93bmxvYWRzIHdpdGggTkVUV09SS19TRVNTSU9OCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE0MTQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGVyZSBpcyBubyBj
aGFuZ2UgaW4gYmVoYXZpb3IgZXhjZXB0IHRoYXQgU2Vzc2lvbklEcyBhcmUgc2VudCBhY3Jvc3Mg
SVBDIGFuZCBwYXNzZWQgYXMgcGFyYW1ldGVycywKKyAgICAgICAgYW5kIHRoZXkgYXJlIG5vdCB1
c2VkIHlldC4KKworICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6Y29udGludWVBZnRlckNvbnRlbnRQb2xpY3kpOgor
ICAgICAgICBSZW1vdmVkIGFuIHVudXNlZCBkZWZhdWx0LiBDb21waWxlciB3YXJuaW5ncyB3aWxs
IGxldCB1cyBrbm93IGlmIHdlIGFkZCBhbiB1bmhhbmRsZWQgY2FzZSB0byB0aGlzIHN3aXRjaC4K
KyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1l
TG9hZGVyQ2xpZW50Lmg6CisgICAgICAgIFBhc3MgU2Vzc2lvbklEcyBhcm91bmQuCisKIDIwMTUt
MTEtMTYgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIE1vZGVy
biBJREI6TWFrZSBpbi1tZW1vcnkgT2JqZWN0U3RvcmUgY3Vyc29ycyB3b3JrLgpJbmRleDogU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCShyZXZpc2lvbiAxOTI0OTcpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03MjgsMTEgKzcyOCwxNSBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpjb250aW51ZUFmdGVy
Q29udGVuCiAgICAgICAgIC8vIERvd25sb2FkIG1heSB1c2UgdGhpcyBrbm93bGVkZ2UgZm9yIHB1
cnBvc2VzIHVucmVsYXRlZCB0byBjb29raWVzLCBub3RhYmx5IGZvciBzZXR0aW5nIGZpbGUgcXVh
cmFudGluZSBkYXRhLgogICAgICAgICBmcmFtZUxvYWRlcigpLT5zZXRPcmlnaW5hbFVSTEZvckRv
d25sb2FkUmVxdWVzdChtX3JlcXVlc3QpOwogCisgICAgICAgIFNlc3Npb25JRCBzZXNzaW9uSUQg
PSBTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKTsKKyAgICAgICAgaWYgKGZyYW1lKCkgJiYg
ZnJhbWUoKS0+cGFnZSgpKQorICAgICAgICAgICAgc2Vzc2lvbklEID0gZnJhbWUoKS0+cGFnZSgp
LT5zZXNzaW9uSUQoKTsKKwogICAgICAgICBpZiAobV9yZXF1ZXN0LnVybCgpLnByb3RvY29sSXNE
YXRhKCkpIHsKICAgICAgICAgICAgIC8vIFdlIGRlY29kZSBkYXRhIFVSTCBpbnRlcm5hbGx5LCB0
aGVyZSBpcyBubyByZXNvdXJjZSBsb2FkIHRvIGNvbnZlcnQuCiAgICAgICAgICAgICBmcmFtZUxv
YWRlcigpLT5jbGllbnQoKS5zdGFydERvd25sb2FkKG1fcmVxdWVzdCk7CiAgICAgICAgIH0gZWxz
ZQotICAgICAgICAgICAgZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkuY29udmVydE1haW5SZXNvdXJj
ZUxvYWRUb0Rvd25sb2FkKHRoaXMsIG1fcmVxdWVzdCwgbV9yZXNwb25zZSk7CisgICAgICAgICAg
ICBmcmFtZUxvYWRlcigpLT5jbGllbnQoKS5jb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxv
YWQodGhpcywgc2Vzc2lvbklELCBtX3JlcXVlc3QsIG1fcmVzcG9uc2UpOwogCiAgICAgICAgIC8v
IEl0IG1pZ2h0IGhhdmUgZ29uZSBtaXNzaW5nCiAgICAgICAgIGlmIChtYWluUmVzb3VyY2VMb2Fk
ZXIoKSkKQEAgLTc0NCw5ICs3NDgsNiBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpjb250aW51ZUFm
dGVyQ29udGVuCiAgICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnRpbnVl
V2l0aFBvbGljeUlnbm9yZShtX2ZyYW1lLCAqdGhpcywgbWFpblJlc291cmNlTG9hZGVyLT5pZGVu
dGlmaWVyKCksIG1fcmVzcG9uc2UpOwogICAgICAgICBzdG9wTG9hZGluZ0ZvclBvbGljeUNoYW5n
ZSgpOwogICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgfQogCiAgICAgaWYgKG1fcmVzcG9uc2UuaXNIVFRQKCkpIHsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHJldmlzaW9uIDE5MjQ5NykK
KysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkod29ya2luZyBjb3B5KQpA
QCAtMjUwLDcgKzI1MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoZWRGcm9t
UGFyZW50MigpIG92ZXJyaWRlIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hlZEZyb21QYXJl
bnQzKCkgb3ZlcnJpZGUgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgY29udmVydE1haW5SZXNvdXJj
ZUxvYWRUb0Rvd25sb2FkKERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jiwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlIHsgfQorICAgIHZpcnR1YWwgdm9pZCBj
b252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQoRG9jdW1lbnRMb2FkZXIqLCBTZXNzaW9u
SUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVy
cmlkZSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBhc3NpZ25JZGVudGlmaWVyVG9Jbml0aWFsUmVx
dWVzdCh1bnNpZ25lZCBsb25nLCBEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYpIG92ZXJyaWRlIHsgfQogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3Rv
cmFnZShEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcpIG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAko
cmV2aXNpb24gMTkyNDk3KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xp
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTk0LDYgKzk0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIGNsYXNzIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcjsKICNlbmRpZgogICAgIGNsYXNz
IFNlY3VyaXR5T3JpZ2luOworICAgIGNsYXNzIFNlc3Npb25JRDsKICAgICBjbGFzcyBTaGFyZWRC
dWZmZXI7CiAgICAgY2xhc3MgU3RyaW5nV2l0aERpcmVjdGlvbjsKICAgICBjbGFzcyBTdWJzdGl0
dXRlRGF0YTsKQEAgLTI3MCw3ICsyNzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEJlY29tZUZyYW1lc2V0KGJvb2wpID0gMDsgLy8gQ2Fu
IGNoYW5nZSBkdWUgdG8gbmF2aWdhdGlvbiBvciBET00gbW9kaWZpY2F0aW9uLgogCiAgICAgICAg
IHZpcnR1YWwgYm9vbCBjYW5DYWNoZVBhZ2UoKSBjb25zdCA9IDA7Ci0gICAgICAgIHZpcnR1YWwg
dm9pZCBjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQoRG9jdW1lbnRMb2FkZXIqLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgPSAwOworICAg
ICAgICB2aXJ0dWFsIHZvaWQgY29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKERvY3Vt
ZW50TG9hZGVyKiwgU2Vzc2lvbklELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJikgPSAwOwogCiAgICAgICAgIHZpcnR1YWwgUmVmUHRyPEZyYW1lPiBjcmVh
dGVGcmFtZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIG5hbWUsIEhUTUxGcmFtZU93bmVyRWxl
bWVudCosIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQg
bWFyZ2luV2lkdGgsIGludCBtYXJnaW5IZWlnaHQpID0gMDsKICAgICAgICAgdmlydHVhbCBSZWZQ
dHI8V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxQbHVnSW5FbGVtZW50
KiwgY29uc3QgVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYsIGNvbnN0IFN0cmluZyYsIGJvb2wgbG9hZE1hbnVhbGx5KSA9IDA7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxOTI0OTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSw4NCBAQAorMjAxNS0xMS0xOCAgQWxleCBDaHJpc3RlbnNlbiAgPGFj
aHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFByb2dyZXNzIHRvd2FyZHMgaW1wbGVt
ZW50aW5nIERvd25sb2FkcyB3aXRoIE5FVFdPUktfU0VTU0lPTgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNDE0CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OnN0b3JhZ2VTZXNzaW9u
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0YXJ0
RG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0xvYWQ6Ok5ldHdvcmtMb2FkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6
OmRpZFJlY2VpdmVDaGFsbGVuZ2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OmRpZFJlY2Vp
dmVEYXRhKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkb3dubG9hZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6cmVzdW1lRG93bmxvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpj
bGVhbnVwKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRDb252
ZXJ0SGFuZGxlVG9Eb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6YWJvcnQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbToKKyAgICAg
ICAgKHRvTlNVUkxTZXNzaW9uUmVzcG9uc2VEaXNwb3NpdGlvbik6CisgICAgICAgICgtW05ldHdv
cmtTZXNzaW9uRGVsZWdhdGUgVVJMU2Vzc2lvbjpkYXRhVGFzazpkaWRSZWNlaXZlUmVzcG9uc2U6
Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW05ldHdvcmtTZXNzaW9uRGVsZWdhdGUg
VVJMU2Vzc2lvbjpkYXRhVGFzazpkaWRSZWNlaXZlRGF0YTpdKToKKyAgICAgICAgKC1bTmV0d29y
a1Nlc3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9uOmRvd25sb2FkVGFzazpkaWRGaW5pc2hEb3dubG9h
ZGluZ1RvVVJMOl0pOgorICAgICAgICAoLVtOZXR3b3JrU2Vzc2lvbkRlbGVnYXRlIFVSTFNlc3Np
b246ZG93bmxvYWRUYXNrOmRpZFdyaXRlRGF0YTp0b3RhbEJ5dGVzV3JpdHRlbjp0b3RhbEJ5dGVz
RXhwZWN0ZWRUb1dyaXRlOl0pOgorICAgICAgICAoLVtOZXR3b3JrU2Vzc2lvbkRlbGVnYXRlIFVS
TFNlc3Npb246ZG93bmxvYWRUYXNrOmRpZFJlc3VtZUF0T2Zmc2V0OmV4cGVjdGVkVG90YWxCeXRl
czpdKToKKyAgICAgICAgKC1bTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9uOmRhdGFU
YXNrOmRpZEJlY29tZURvd25sb2FkVGFzazpdKToKKyAgICAgICAgKiBTaGFyZWQvQXV0aGVudGlj
YXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QXV0aGVu
dGljYXRpb25NYW5hZ2VyOjp1c2VDcmVkZW50aWFsRm9yU2luZ2xlQ2hhbGxlbmdlKToKKyAgICAg
ICAgKFdlYktpdDo6QXV0aGVudGljYXRpb25NYW5hZ2VyOjpjb250aW51ZVdpdGhvdXRDcmVkZW50
aWFsRm9yU2luZ2xlQ2hhbGxlbmdlKToKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRpb25N
YW5hZ2VyOjpjYW5jZWxTaW5nbGVDaGFsbGVuZ2UpOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50
aWNhdGlvbk1hbmFnZXI6OnBlcmZvcm1EZWZhdWx0SGFuZGxpbmdGb3JTaW5nbGVDaGFsbGVuZ2Up
OgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdGlvbk1hbmFnZXI6OnJlamVjdFByb3RlY3Rp
b25TcGFjZUFuZENvbnRpbnVlRm9yU2luZ2xlQ2hhbGxlbmdlKToKKyAgICAgICAgKiBTaGFyZWQv
RG93bmxvYWRzL0Rvd25sb2FkLmg6CisgICAgICAgICogU2hhcmVkL0Rvd25sb2Fkcy9Eb3dubG9h
ZE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1hbmFnZXI6OkRvd25sb2Fk
TWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkTWFuYWdlcjo6c3RhcnREb3dubG9h
ZCk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkTWFuYWdlcjo6Y29udmVydEhhbmRsZVRvRG93
bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1hbmFnZXI6OnJlc3VtZURvd25sb2Fk
KToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRNYW5hZ2VyOjpjYW5jZWxEb3dubG9hZCk6Cisg
ICAgICAgIChXZWJLaXQ6OkRvd25sb2FkTWFuYWdlcjo6ZG93bmxvYWRGaW5pc2hlZCk6CisgICAg
ICAgIChXZWJLaXQ6OkRvd25sb2FkTWFuYWdlcjo6ZGlkQ3JlYXRlRG93bmxvYWQpOgorICAgICAg
ICAqIFNoYXJlZC9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmg6CisgICAgICAgIChXZWJLaXQ6
OkRvd25sb2FkTWFuYWdlcjo6aXNEb3dubG9hZGluZyk6CisgICAgICAgIChXZWJLaXQ6OkRvd25s
b2FkTWFuYWdlcjo6YWN0aXZlRG93bmxvYWRDb3VudCk6CisgICAgICAgICogU2hhcmVkL0Rvd25s
b2Fkcy9tYWMvRG93bmxvYWRNYWMubW06CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpzdGFy
dCk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpzdGFydFdpdGhIYW5kbGUpOgorICAgICAg
ICAoV2ViS2l0OjpEb3dubG9hZDo6cmVzdW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6ZG93bmxvYWQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6Y2FuQ2FjaGVQ
YWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbnZlcnRNYWlu
UmVzb3VyY2VMb2FkVG9Eb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVy
Q2xpZW50OjpjcmVhdGVGcmFtZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpzdGFydERvd25sb2FkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3du
bG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpzb3VyY2UpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmRvd25sb2FkUmVxdWVzdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnJlc3VtZURvd25sb2FkKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzczo6cmVsZWFzZVBhZ2VDYWNoZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoK
KwogMjAxNS0xMS0xNiAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAbmF2ZXJjb3JwLmNvbT4KIAog
ICAgICAgICBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uIGNhbGxzIGFuIHN0ZDo6ZnVuY3Rpb24gYWZ0ZXIgaXQncyBiZWVuIG1vdmVk
IGZyb20KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDE5MjQ5
NykKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc5LDE3ICsxNzksMTYgQEAgc3RhdGlj
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc3RvcmFnZVNlcwogICAgIHJldHVybiBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpOwogfQogCi12b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzdGFydERvd25sb2FkKFNlc3Npb25JRCwgdWludDY0X3Qg
ZG93bmxvYWRJRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQordm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c3RhcnREb3dubG9hZChTZXNzaW9uSUQgc2Vzc2lvbklE
LCB1aW50NjRfdCBkb3dubG9hZElELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7
Ci0gICAgLy8gRklYTUU6IERvIHNvbWV0aGluZyB3aXRoIHRoZSBzZXNzaW9uIElELgotICAgIE5l
dHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5kb3dubG9hZE1hbmFnZXIoKS5zdGFydERvd25sb2Fk
KGRvd25sb2FkSUQsIHJlcXVlc3QpOworICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5k
b3dubG9hZE1hbmFnZXIoKS5zdGFydERvd25sb2FkKHNlc3Npb25JRCwgZG93bmxvYWRJRCwgcmVx
dWVzdCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvbnZlcnRN
YWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZCh1aW50NjRfdCBtYWluUmVzb3VyY2VMb2FkSWRlbnRp
ZmllciwgdWludDY0X3QgZG93bmxvYWRJRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChXZWJDb3Jl
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmll
ciwgdWludDY0X3QgZG93bmxvYWRJRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICBhdXRvJiBuZXR3b3JrUHJv
Y2VzcyA9IE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKTsKICAgICBpZiAoIW1haW5SZXNvdXJj
ZUxvYWRJZGVudGlmaWVyKSB7Ci0gICAgICAgIG5ldHdvcmtQcm9jZXNzLmRvd25sb2FkTWFuYWdl
cigpLnN0YXJ0RG93bmxvYWQoZG93bmxvYWRJRCwgcmVxdWVzdCk7CisgICAgICAgIG5ldHdvcmtQ
cm9jZXNzLmRvd25sb2FkTWFuYWdlcigpLnN0YXJ0RG93bmxvYWQoc2Vzc2lvbklELCBkb3dubG9h
ZElELCByZXF1ZXN0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApJbmRleDogU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5oCShyZXZpc2lvbiAxOTI0OTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkp
CkBAIC03OSw3ICs3OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXREZWZlcnNMb2FkaW5nKFJl
c291cmNlTG9hZElkZW50aWZpZXIsIGJvb2wpOwogICAgIHZvaWQgY3Jvc3NPcmlnaW5SZWRpcmVj
dFJlY2VpdmVkKFJlc291cmNlTG9hZElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVk
aXJlY3RVUkwpOwogICAgIHZvaWQgc3RhcnREb3dubG9hZChXZWJDb3JlOjpTZXNzaW9uSUQsIHVp
bnQ2NF90IGRvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwotICAg
IHZvaWQgY29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKHVpbnQ2NF90IG1haW5SZXNv
dXJjZUxvYWRJZGVudGlmaWVyLCB1aW50NjRfdCBkb3dubG9hZElELCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CisgICAg
dm9pZCBjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQoV2ViQ29yZTo6U2Vzc2lvbklE
LCB1aW50NjRfdCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgdWludDY0X3QgZG93bmxvYWRJ
RCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYpOwogCiAgICAgdm9pZCBjb29raWVzRm9yRE9NKFdlYkNvcmU6OlNlc3Npb25J
RCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmLCBT
dHJpbmcmIHJlc3VsdCk7CiAgICAgdm9pZCBzZXRDb29raWVzRnJvbURPTShXZWJDb3JlOjpTZXNz
aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJM
JiwgY29uc3QgU3RyaW5nJik7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbgkocmV2aXNpb24gMTkyNDk3KQorKysgU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4JKHdvcmtp
bmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2NlcwogICAgIFByZWZldGNoRE5TKFN0cmluZyBob3N0bmFtZSkKIAogICAgIFN0YXJ0
RG93bmxvYWQoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgZG93bmxvYWRJ
RCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QpCi0gICAgQ29udmVydE1haW5SZXNv
dXJjZUxvYWRUb0Rvd25sb2FkKHVpbnQ2NF90IG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCB1
aW50NjRfdCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSkKKyAgICBDb252ZXJ0TWFpblJlc291cmNl
TG9hZFRvRG93bmxvYWQoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgbWFp
blJlc291cmNlTG9hZElkZW50aWZpZXIsIHVpbnQ2NF90IGRvd25sb2FkSUQsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCByZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNl
KQogCiAgICAgQ29va2llc0ZvckRPTShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJD
b3JlOjpVUkwgZmlyc3RQYXJ0eSwgV2ViQ29yZTo6VVJMIHVybCkgLT4gKFN0cmluZyByZXN1bHQp
CiAgICAgU2V0Q29va2llc0Zyb21ET00oV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2Vi
Q29yZTo6VVJMIGZpcnN0UGFydHksIFdlYkNvcmU6OlVSTCB1cmwsIFN0cmluZyBjb29raWVTdHJp
bmcpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQu
Y3BwCShyZXZpc2lvbiAxOTI0OTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrTG9hZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDEwICs0OCwxMiBAQCBOZXR3b3Jr
TG9hZDo6TmV0d29ya0xvYWQoTmV0d29ya0xvYWRDbGllCiAgICAgOiBtX2NsaWVudChjbGllbnQp
CiAgICAgLCBtX3BhcmFtZXRlcnMocGFyYW1ldGVycykKICAgICAsIG1fbmV0d29ya2luZ0NvbnRl
eHQoUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmNyZWF0ZShwYXJhbWV0ZXJzLnNlc3Npb25JRCwg
cGFyYW1ldGVycy5zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0KSkKKyNp
ZiBVU0UoTkVUV09SS19TRVNTSU9OKQorICAgICwgbV90YXNrKFNlc3Npb25UcmFja2VyOjpuZXR3
b3JrU2Vzc2lvbihwYXJhbWV0ZXJzLnNlc3Npb25JRCktPmNyZWF0ZURhdGFUYXNrV2l0aFJlcXVl
c3QocGFyYW1ldGVycy5yZXF1ZXN0LCAqdGhpcykpCisjZW5kaWYKICAgICAsIG1fY3VycmVudFJl
cXVlc3QocGFyYW1ldGVycy5yZXF1ZXN0KQogewogI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCi0g
ICAgbV90YXNrID0gU2Vzc2lvblRyYWNrZXI6Om5ldHdvcmtTZXNzaW9uKHBhcmFtZXRlcnMuc2Vz
c2lvbklEKS0+Y3JlYXRlRGF0YVRhc2tXaXRoUmVxdWVzdChwYXJhbWV0ZXJzLnJlcXVlc3QsICp0
aGlzKTsKICAgICBtX3Rhc2stPnJlc3VtZSgpOwogI2Vsc2UKICAgICBtX2hhbmRsZSA9IFJlc291
cmNlSGFuZGxlOjpjcmVhdGUobV9uZXR3b3JraW5nQ29udGV4dC5nZXQoKSwgcGFyYW1ldGVycy5y
ZXF1ZXN0LCB0aGlzLCBwYXJhbWV0ZXJzLmRlZmVyc0xvYWRpbmcsIHBhcmFtZXRlcnMuY29udGVu
dFNuaWZmaW5nUG9saWN5ID09IFNuaWZmQ29udGVudCk7CkBAIC0xODQsMTEgKzE4NiwxMSBAQCB2
b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlQ2hhbGxlbmdlKGNvCiAgICAgTmV0d29ya1Byb2Nl
c3M6OnNpbmdsZXRvbigpLmF1dGhlbnRpY2F0aW9uTWFuYWdlcigpLmRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZShtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2Vi
RnJhbWVJRCwgY2hhbGxlbmdlLCBjb21wbGV0aW9uSGFuZGxlcik7CiB9CiAKLXZvaWQgTmV0d29y
a0xvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSwgc3RkOjpmdW5jdGlvbjx2b2lkKFJlc3BvbnNlRGlzcG9zaXRpb24pPiBjb21wbGV0aW9uSGFu
ZGxlcikKK3ZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSwgc3RkOjpmdW5jdGlvbjx2b2lkKFdlYkNvcmU6OlBvbGljeUFj
dGlvbik+IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CiAgICAgc2hhcmVkRGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlKTsKLSAgICBjb21wbGV0aW9u
SGFuZGxlcihSZXNwb25zZURpc3Bvc2l0aW9uOjpBbGxvdyk7CisgICAgY29tcGxldGlvbkhhbmRs
ZXIoUG9saWN5VXNlKTsKIH0KIAogdm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZURhdGEoUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrTG9hZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL05ldHdvcmtMb2FkLmgJKHJldmlzaW9uIDE5MjQ5NykKKysrIFNvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDcg
KzYzLDcgQEAgcHVibGljOgogICAgIC8vIE5ldHdvcmtTZXNzaW9uVGFza0NsaWVudC4KICAgICB2
aXJ0dWFsIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIHN0ZDo6ZnVu
Y3Rpb248dm9pZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKT4pIGZpbmFsIG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKGNvbnN0IFdlYkNvcmU6
OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgc3RkOjpmdW5jdGlvbjx2b2lkKEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwmKT4pIGZp
bmFsIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIHN0ZDo6ZnVuY3Rpb248dm9pZChSZXNwb25zZURp
c3Bvc2l0aW9uKT4pIGZpbmFsIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZl
UmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIHN0ZDo6ZnVuY3Rpb248
dm9pZChXZWJDb3JlOjpQb2xpY3lBY3Rpb24pPikgZmluYWwgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZp
bmFsIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWwgb3ZlcnJpZGU7CiAjZWxzZQpAQCAtMTE2
LDcgKzExNiw3IEBAIHByaXZhdGU6CiAgICAgY29uc3QgTmV0d29ya0xvYWRQYXJhbWV0ZXJzIG1f
cGFyYW1ldGVyczsKICAgICBSZWZQdHI8UmVtb3RlTmV0d29ya2luZ0NvbnRleHQ+IG1fbmV0d29y
a2luZ0NvbnRleHQ7CiAjaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKLSAgICBSZWZQdHI8TmV0d29y
a0RhdGFUYXNrPiBtX3Rhc2s7CisgICAgUmVmPE5ldHdvcmtEYXRhVGFzaz4gbV90YXNrOwogI2Vs
c2UKICAgICBSZWZQdHI8V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU+IG1faGFuZGxlOwogI2VuZGlm
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwCShyZXZpc2lvbiAxOTI0OTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzNCw5ICs0MzQsOSBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvCiAgICAgY29tcGxldGlvbkhh
bmRsZXIoKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZG93bmxvYWRSZXF1ZXN0KHVpbnQ2
NF90IGRvd25sb2FkSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3ZvaWQgTmV0
d29ya1Byb2Nlc3M6OmRvd25sb2FkUmVxdWVzdChTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRf
dCBkb3dubG9hZElELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgZG93
bmxvYWRNYW5hZ2VyKCkuc3RhcnREb3dubG9hZChkb3dubG9hZElELCByZXF1ZXN0KTsKKyAgICBk
b3dubG9hZE1hbmFnZXIoKS5zdGFydERvd25sb2FkKHNlc3Npb25JRCwgZG93bmxvYWRJRCwgcmVx
dWVzdCk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlc3VtZURvd25sb2FkKHVpbnQ2NF90
IGRvd25sb2FkSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3Qg
U3RyaW5nJiBwYXRoLCBjb25zdCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgc2Fu
ZGJveEV4dGVuc2lvbkhhbmRsZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAkocmV2aXNpb24gMTkyNDk3KQorKysgU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtNDcs
NiArNDcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDZXJ0aWZpY2F0ZUluZm87CiBj
bGFzcyBOZXR3b3JrU3RvcmFnZVNlc3Npb247CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKK2NsYXNz
IFNlc3Npb25JRDsKIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CiB9CiAKQEAgLTE1MCw3ICsx
NTEsNyBAQCBwcml2YXRlOgogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCB0YWtlIGEgc2Vzc2lv
biBJRCBzbyB3ZSBjYW4gaWRlbnRpZnkgd2hpY2ggZGlzayBjYWNoZSB0byBkZWxldGUuCiAgICAg
dm9pZCBjbGVhckRpc2tDYWNoZShzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50
IG1vZGlmaWVkU2luY2UsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gY29tcGxldGlvbkhhbmRsZXIp
OwogCi0gICAgdm9pZCBkb3dubG9hZFJlcXVlc3QodWludDY0X3QgZG93bmxvYWRJRCwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgdm9pZCBkb3dubG9hZFJlcXVlc3QoV2Vi
Q29yZTo6U2Vzc2lvbklELCB1aW50NjRfdCBkb3dubG9hZElELCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmKTsKICAgICB2b2lkIHJlc3VtZURvd25sb2FkKHVpbnQ2NF90IGRvd25sb2Fk
SUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBw
YXRoLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmKTsKICAgICB2b2lkIGNhbmNlbERv
d25sb2FkKHVpbnQ2NF90IGRvd25sb2FkSUQpOwogICAgIHZvaWQgc2V0Q2FjaGVNb2RlbCh1aW50
MzJfdCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgkocmV2aXNpb24gMTkyNDk3KQorKysgU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4JKHdvcmtp
bmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVn
YWN5UmVjZWl2ZQogICAgIERlbGV0ZVdlYnNpdGVEYXRhKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIHVpbnQ2NF90IHdlYnNpdGVEYXRhVHlwZXMsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xv
Y2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKICAgICBE
ZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
dWludDY0X3Qgd2Vic2l0ZURhdGFUeXBlcywgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YT4gb3JpZ2lucywgVmVjdG9yPFN0cmluZz4gY29va2llSG9zdE5hbWVzLCB1aW50NjRfdCBj
YWxsYmFja0lEKQogCi0gICAgRG93bmxvYWRSZXF1ZXN0KHVpbnQ2NF90IGRvd25sb2FkSUQsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0KQorICAgIERvd25sb2FkUmVxdWVzdChXZWJD
b3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBkb3dubG9hZElELCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCkKICAgICBSZXN1bWVEb3dubG9hZCh1aW50NjRfdCBkb3du
bG9hZElELCBJUEM6OkRhdGFSZWZlcmVuY2UgcmVzdW1lRGF0YSwgU3RyaW5nIHBhdGgsIFdlYktp
dDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCiAgICAg
Q2FuY2VsRG93bmxvYWQodWludDY0X3QgZG93bmxvYWRJRCkKIApJbmRleDogU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3Bw
CShyZXZpc2lvbiAxOTI0OTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDAsMTcgKzIwMCwyMyBA
QCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y2xlYW51cCgpCiAgICAgbV9jb25uZWN0aW9u
LT5kaWRDbGVhbnVwUmVzb3VyY2VMb2FkZXIoKnRoaXMpOwogfQogCisjaWYgIVVTRShORVRXT1JL
X1NFU1NJT04pCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkQ29udmVydEhhbmRsZVRv
RG93bmxvYWQoKQogewogICAgIEFTU0VSVChtX25ldHdvcmtMb2FkKTsKICAgICBtX2RpZENvbnZl
cnRIYW5kbGVUb0Rvd25sb2FkID0gdHJ1ZTsKIH0KKyNlbmRpZgogCiB2b2lkIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6YWJvcnQoKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAK
LSAgICBpZiAobV9uZXR3b3JrTG9hZCAmJiAhbV9kaWRDb252ZXJ0SGFuZGxlVG9Eb3dubG9hZCkg
eworICAgIGlmIChtX25ldHdvcmtMb2FkCisjaWYgIVVTRShORVRXT1JLX1NFU1NJT04pCisgICAg
ICAgICYmICFtX2RpZENvbnZlcnRIYW5kbGVUb0Rvd25sb2FkCisjZW5kaWYKKyAgICApIHsKICAg
ICAgICAgbV9uZXR3b3JrTG9hZC0+Y2FuY2VsKCk7CiAKICNpZiBFTkFCTEUoTkVUV09SS19DQUNI
RSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAxOTI0OTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
NjMsNyArNjMsOSBAQCBwdWJsaWM6CiAKICAgICBOZXR3b3JrTG9hZCogbmV0d29ya0xvYWQoKSBj
b25zdCB7IHJldHVybiBtX25ldHdvcmtMb2FkLmdldCgpOyB9CiAKKyNpZiAhVVNFKE5FVFdPUktf
U0VTU0lPTikKICAgICB2b2lkIGRpZENvbnZlcnRIYW5kbGVUb0Rvd25sb2FkKCk7CisjZW5kaWYK
IAogICAgIHZvaWQgc3RhcnQoKTsKICAgICB2b2lkIGFib3J0KCk7CkBAIC0xNTAsNyArMTUyLDkg
QEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U3luY2hyb25vdXNMb2FkRGF0YT4gbV9z
eW5jaHJvbm91c0xvYWREYXRhOwogICAgIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFG
aWxlUmVmZXJlbmNlPj4gbV9maWxlUmVmZXJlbmNlczsKIAorI2lmICFVU0UoTkVUV09SS19TRVNT
SU9OKQogICAgIGJvb2wgbV9kaWRDb252ZXJ0SGFuZGxlVG9Eb3dubG9hZCB7IGZhbHNlIH07Cisj
ZW5kaWYKICAgICBib29sIG1fZGlkQ29uc3VtZVNhbmRib3hFeHRlbnNpb25zIHsgZmFsc2UgfTsK
ICAgICBib29sIG1fZGVmZXJzTG9hZGluZyB7IGZhbHNlIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAkocmV2aXNpb24gMTkyNDk3
KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAkod29y
a2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQCBPQkpDX0NMQVNTIE5TVVJMU2Vzc2lvbkRhdGFU
YXNrOwogT0JKQ19DTEFTUyBOU09wZXJhdGlvblF1ZXVlOwogT0JKQ19DTEFTUyBOZXR3b3JrU2Vz
c2lvbkRlbGVnYXRlOwogCisjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlclR5cGVzLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgog
I2luY2x1ZGUgPHd0Zi9SZWYuaD4KQEAgLTQ5LDEyICs1MCw2IEBAIGNsYXNzIFNoYXJlZEJ1ZmZl
cjsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWVudW0gY2xhc3MgUmVzcG9uc2VEaXNwb3NpdGlv
biB7Ci0gICAgQ2FuY2VsLAotICAgIEFsbG93LAotICAgIEJlY29tZURvd25sb2FkCi19OwotCiBl
bnVtIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24gewogICAgIFVzZUNy
ZWRlbnRpYWwsCiAgICAgUGVyZm9ybURlZmF1bHRIYW5kbGluZywKQEAgLTY4LDcgKzYzLDcgQEAg
Y2xhc3MgTmV0d29ya1Nlc3Npb25UYXNrQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIHN0ZDo6ZnVuY3Rpb248dm9p
ZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKT4pID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYsIHN0ZDo6ZnVuY3Rpb248dm9pZChBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0
aW9uLCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJik+KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgc3Rk
OjpmdW5jdGlvbjx2b2lkKFJlc3BvbnNlRGlzcG9zaXRpb24pPikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYs
IHN0ZDo6ZnVuY3Rpb248dm9pZChXZWJDb3JlOjpQb2xpY3lBY3Rpb24pPikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImKSA9IDA7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQkocmV2
aXNpb24gMTkyNDk3KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya1Nlc3Npb25Db2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsOSBAQAogI2lt
cG9ydCA8V2ViQ29yZS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9DRk5ldHdvcmtTUEkuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ3JlZGVudGlhbC5oPgorI2ltcG9y
dCA8V2ViQ29yZS9GcmFtZUxvYWRlclR5cGVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05ldHdvcmtT
dG9yYWdlU2Vzc2lvbi5oPgorI2ltcG9ydCA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNl
UmVxdWVzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CkBAIC00MSwx
NCArNDMsMTQgQEAKICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW1wb3J0IDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KIAotc3RhdGljIE5TVVJMU2Vzc2lvblJlc3BvbnNlRGlzcG9zaXRpb24g
dG9OU1VSTFNlc3Npb25SZXNwb25zZURpc3Bvc2l0aW9uKFdlYktpdDo6UmVzcG9uc2VEaXNwb3Np
dGlvbiBkaXNwb3NpdGlvbikKK3N0YXRpYyBOU1VSTFNlc3Npb25SZXNwb25zZURpc3Bvc2l0aW9u
IHRvTlNVUkxTZXNzaW9uUmVzcG9uc2VEaXNwb3NpdGlvbihXZWJDb3JlOjpQb2xpY3lBY3Rpb24g
ZGlzcG9zaXRpb24pCiB7CiAgICAgc3dpdGNoIChkaXNwb3NpdGlvbikgewotICAgIGNhc2UgV2Vi
S2l0OjpSZXNwb25zZURpc3Bvc2l0aW9uOjpDYW5jZWw6CisgICAgY2FzZSBXZWJDb3JlOjpQb2xp
Y3lBY3Rpb246OlBvbGljeUlnbm9yZToKICAgICAgICAgcmV0dXJuIE5TVVJMU2Vzc2lvblJlc3Bv
bnNlQ2FuY2VsOwotICAgIGNhc2UgV2ViS2l0OjpSZXNwb25zZURpc3Bvc2l0aW9uOjpBbGxvdzoK
KyAgICBjYXNlIFdlYkNvcmU6OlBvbGljeUFjdGlvbjo6UG9saWN5VXNlOgogICAgICAgICByZXR1
cm4gTlNVUkxTZXNzaW9uUmVzcG9uc2VBbGxvdzsKLSAgICBjYXNlIFdlYktpdDo6UmVzcG9uc2VE
aXNwb3NpdGlvbjo6QmVjb21lRG93bmxvYWQ6CisgICAgY2FzZSBXZWJDb3JlOjpQb2xpY3lBY3Rp
b246OlBvbGljeURvd25sb2FkOgogICAgICAgICByZXR1cm4gTlNVUkxTZXNzaW9uUmVzcG9uc2VC
ZWNvbWVEb3dubG9hZDsKICAgICB9CiB9CkBAIC0xNDEsOSArMTQzLDkgQEAgLSAodm9pZClVUkxT
ZXNzaW9uOihOU1VSTFNlc3Npb24gKilzZXNzaQogICAgICAgICAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKICAgICAgICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzb3VyY2VS
ZXNwb25zZShyZXNwb25zZSk7CiAgICAgICAgICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyQ29w
eSA9IEJsb2NrX2NvcHkoY29tcGxldGlvbkhhbmRsZXIpOwotICAgICAgICAgICAgY2xpZW50LT5k
aWRSZWNlaXZlUmVzcG9uc2UocmVzb3VyY2VSZXNwb25zZSwgW2NvbXBsZXRpb25IYW5kbGVyQ29w
eV0oV2ViS2l0OjpSZXNwb25zZURpc3Bvc2l0aW9uIHJlc3BvbnNlRGlzcG9zaXRpb24pCisgICAg
ICAgICAgICBjbGllbnQtPmRpZFJlY2VpdmVSZXNwb25zZShyZXNvdXJjZVJlc3BvbnNlLCBbY29t
cGxldGlvbkhhbmRsZXJDb3B5XShXZWJDb3JlOjpQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uKQog
ICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXJD
b3B5KHRvTlNVUkxTZXNzaW9uUmVzcG9uc2VEaXNwb3NpdGlvbihyZXNwb25zZURpc3Bvc2l0aW9u
KSk7CisgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyQ29weSh0b05TVVJMU2Vz
c2lvblJlc3BvbnNlRGlzcG9zaXRpb24ocG9saWN5QWN0aW9uKSk7CiAgICAgICAgICAgICAgICAg
ICAgIEJsb2NrX3JlbGVhc2UoY29tcGxldGlvbkhhbmRsZXJDb3B5KTsKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICApOwpAQCAtMTYxLDYgKzE2MywyNiBAQCAtICh2b2lkKVVSTFNlc3Np
b246KE5TVVJMU2Vzc2lvbiAqKXNlc3NpCiAgICAgfQogfQogCistICh2b2lkKVVSTFNlc3Npb246
KE5TVVJMU2Vzc2lvbiAqKXNlc3Npb24gZG93bmxvYWRUYXNrOihOU1VSTFNlc3Npb25Eb3dubG9h
ZFRhc2sgKilkb3dubG9hZFRhc2sgZGlkRmluaXNoRG93bmxvYWRpbmdUb1VSTDooTlNVUkwgKils
b2NhdGlvbgoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKKy0gKHZvaWQpVVJMU2Vzc2lv
bjooTlNVUkxTZXNzaW9uICopc2Vzc2lvbiBkb3dubG9hZFRhc2s6KE5TVVJMU2Vzc2lvbkRvd25s
b2FkVGFzayAqKWRvd25sb2FkVGFzayBkaWRXcml0ZURhdGE6KGludDY0X3QpYnl0ZXNXcml0dGVu
IHRvdGFsQnl0ZXNXcml0dGVuOihpbnQ2NF90KXRvdGFsQnl0ZXNXcml0dGVuIHRvdGFsQnl0ZXNF
eHBlY3RlZFRvV3JpdGU6KGludDY0X3QpdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisKKy0gKHZvaWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9u
ICopc2Vzc2lvbiBkb3dubG9hZFRhc2s6KE5TVVJMU2Vzc2lvbkRvd25sb2FkVGFzayAqKWRvd25s
b2FkVGFzayBkaWRSZXN1bWVBdE9mZnNldDooaW50NjRfdClmaWxlT2Zmc2V0IGV4cGVjdGVkVG90
YWxCeXRlczooaW50NjRfdClleHBlY3RlZFRvdGFsQnl0ZXMKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworfQorCistICh2b2lkKVVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXNlc3Npb24gZGF0
YVRhc2s6KE5TVVJMU2Vzc2lvbkRhdGFUYXNrICopZGF0YVRhc2sgZGlkQmVjb21lRG93bmxvYWRU
YXNrOihOU1VSTFNlc3Npb25Eb3dubG9hZFRhc2sgKilkb3dubG9hZFRhc2sKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworfQorCiBAZW5kCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpJbmRleDogU291
cmNlL1dlYktpdDIvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1
dGhlbnRpY2F0aW9uTWFuYWdlci5jcHAJKHJldmlzaW9uIDE5MjQ5NykKKysrIFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xOTQsMjMgKzE5NCwyNSBAQCB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdl
cjo6dXNlQ3JlZGVudGlhCiAgICAgaWYgKHRyeVVzZUNlcnRpZmljYXRlSW5mb0ZvckNoYWxsZW5n
ZShjaGFsbGVuZ2UuY2hhbGxlbmdlLCBjZXJ0aWZpY2F0ZUluZm8pKQogICAgICAgICByZXR1cm47
CiAKKyAgICBBdXRoZW50aWNhdGlvbkNsaWVudCogY29yZUNsaWVudCA9IGNoYWxsZW5nZS5jaGFs
bGVuZ2UuYXV0aGVudGljYXRpb25DbGllbnQoKTsKICNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQog
ICAgIC8vIElmIHRoZXJlIGlzIGEgY29tcGxldGlvbiBoYW5kbGVyLCB0aGVuIHRoZXJlIGlzIG5v
IEF1dGhlbnRpY2F0aW9uQ2xpZW50LgogICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhlIHVzZSBvZiBB
dXRoZW50aWNhdGlvbkNsaWVudCBpbiBXZWJLaXQyIG9uY2UgTkVUV09SS19TRVNTSU9OIGlzIHVz
ZWQgZm9yIGFsbCBsb2Fkcy4KICAgICBpZiAoY2hhbGxlbmdlLmNvbXBsZXRpb25IYW5kbGVyKSB7
CisgICAgICAgIEFTU0VSVCghY29yZUNsaWVudCk7CiAgICAgICAgIGNoYWxsZW5nZS5jb21wbGV0
aW9uSGFuZGxlcihBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpVc2VDcmVkZW50
aWFsLCBjcmVkZW50aWFsKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSNlbmRpZgotCi0gICAg
QXV0aGVudGljYXRpb25DbGllbnQqIGNvcmVDbGllbnQgPSBjaGFsbGVuZ2UuY2hhbGxlbmdlLmF1
dGhlbnRpY2F0aW9uQ2xpZW50KCk7CisjZWxzZQogICAgIGlmICghY29yZUNsaWVudCkgewogICAg
ICAgICAvLyBGSVhNRTogVGhlIGF1dGhlbnRpY2F0aW9uIGNsaWVudCBpcyBudWxsIGZvciBkb3du
bG9hZHMsIGJ1dCBpdCBjYW4gYWxzbyBiZSBudWxsIGZvciBjYW5jZWxlZCBsb2Fkcy4KICAgICAg
ICAgLy8gV2Ugc2hvdWxkIG5vdCBjYWxsIERvd25sb2FkOjpyZWNlaXZlZENyZWRlbnRpYWwgaW4g
dGhlIGxhdHRlciBjYXNlLgogICAgICAgICBEb3dubG9hZDo6cmVjZWl2ZWRDcmVkZW50aWFsKGNo
YWxsZW5nZS5jaGFsbGVuZ2UsIGNyZWRlbnRpYWwpOwogICAgICAgICByZXR1cm47CiAgICAgfQor
I2VuZGlmCiAKKyAgICBBU1NFUlQoY29yZUNsaWVudCk7CiAgICAgY29yZUNsaWVudC0+cmVjZWl2
ZWRDcmVkZW50aWFsKGNoYWxsZW5nZS5jaGFsbGVuZ2UsIGNyZWRlbnRpYWwpOwogfQogCkBAIC0y
MjcsMjEgKzIyOSwyMyBAQCB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6Y29udGludWVXaXRo
CiAgICAgYXV0byBjaGFsbGVuZ2UgPSBtX2NoYWxsZW5nZXMudGFrZShjaGFsbGVuZ2VJRCk7CiAg
ICAgQVNTRVJUKCFjaGFsbGVuZ2UuY2hhbGxlbmdlLmlzTnVsbCgpKTsKIAorICAgIEF1dGhlbnRp
Y2F0aW9uQ2xpZW50KiBjb3JlQ2xpZW50ID0gY2hhbGxlbmdlLmNoYWxsZW5nZS5hdXRoZW50aWNh
dGlvbkNsaWVudCgpOwogI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiAgICAgaWYgKGNoYWxsZW5n
ZS5jb21wbGV0aW9uSGFuZGxlcikgeworICAgICAgICBBU1NFUlQoIWNvcmVDbGllbnQpOwogICAg
ICAgICBjaGFsbGVuZ2UuY29tcGxldGlvbkhhbmRsZXIoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VE
aXNwb3NpdGlvbjo6VXNlQ3JlZGVudGlhbCwgQ3JlZGVudGlhbCgpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KLSNlbmRpZgotCi0gICAgQXV0aGVudGljYXRpb25DbGllbnQqIGNvcmVDbGllbnQg
PSBjaGFsbGVuZ2UuY2hhbGxlbmdlLmF1dGhlbnRpY2F0aW9uQ2xpZW50KCk7CisjZWxzZQogICAg
IGlmICghY29yZUNsaWVudCkgewogICAgICAgICAvLyBGSVhNRTogVGhlIGF1dGhlbnRpY2F0aW9u
IGNsaWVudCBpcyBudWxsIGZvciBkb3dubG9hZHMsIGJ1dCBpdCBjYW4gYWxzbyBiZSBudWxsIGZv
ciBjYW5jZWxlZCBsb2Fkcy4KICAgICAgICAgLy8gV2Ugc2hvdWxkIG5vdCBjYWxsIERvd25sb2Fk
OjpyZWNlaXZlZENyZWRlbnRpYWwgaW4gdGhlIGxhdHRlciBjYXNlLgogICAgICAgICBEb3dubG9h
ZDo6cmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFsKGNoYWxsZW5nZS5j
aGFsbGVuZ2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQorI2VuZGlmCiAKKyAgICBBU1NFUlQo
Y29yZUNsaWVudCk7CiAgICAgY29yZUNsaWVudC0+cmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdp
dGhvdXRDcmVkZW50aWFsKGNoYWxsZW5nZS5jaGFsbGVuZ2UpOwogfQogCkBAIC0yNTgsMjEgKzI2
MiwyMyBAQCB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6Y2FuY2VsU2luZ2xlCiAgICAgYXV0
byBjaGFsbGVuZ2UgPSBtX2NoYWxsZW5nZXMudGFrZShjaGFsbGVuZ2VJRCk7CiAgICAgQVNTRVJU
KCFjaGFsbGVuZ2UuY2hhbGxlbmdlLmlzTnVsbCgpKTsKIAorICAgIEF1dGhlbnRpY2F0aW9uQ2xp
ZW50KiBjb3JlQ2xpZW50ID0gY2hhbGxlbmdlLmNoYWxsZW5nZS5hdXRoZW50aWNhdGlvbkNsaWVu
dCgpOwogI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiAgICAgaWYgKGNoYWxsZW5nZS5jb21wbGV0
aW9uSGFuZGxlcikgeworICAgICAgICBBU1NFUlQoIWNvcmVDbGllbnQpOwogICAgICAgICBjaGFs
bGVuZ2UuY29tcGxldGlvbkhhbmRsZXIoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlv
bjo6Q2FuY2VsLCBDcmVkZW50aWFsKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQotI2VuZGlm
Ci0KLSAgICBBdXRoZW50aWNhdGlvbkNsaWVudCogY29yZUNsaWVudCA9IGNoYWxsZW5nZS5jaGFs
bGVuZ2UuYXV0aGVudGljYXRpb25DbGllbnQoKTsKKyNlbHNlCiAgICAgaWYgKCFjb3JlQ2xpZW50
KSB7CiAgICAgICAgIC8vIEZJWE1FOiBUaGUgYXV0aGVudGljYXRpb24gY2xpZW50IGlzIG51bGwg
Zm9yIGRvd25sb2FkcywgYnV0IGl0IGNhbiBhbHNvIGJlIG51bGwgZm9yIGNhbmNlbGVkIGxvYWRz
LgogICAgICAgICAvLyBXZSBzaG91bGQgbm90IGNhbGwgRG93bmxvYWQ6OnJlY2VpdmVkQ3JlZGVu
dGlhbCBpbiB0aGUgbGF0dGVyIGNhc2UuCiAgICAgICAgIERvd25sb2FkOjpyZWNlaXZlZENhbmNl
bGxhdGlvbihjaGFsbGVuZ2UuY2hhbGxlbmdlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyNl
bmRpZgogCisgICAgQVNTRVJUKGNvcmVDbGllbnQpOwogICAgIGNvcmVDbGllbnQtPnJlY2VpdmVk
Q2FuY2VsbGF0aW9uKGNoYWxsZW5nZS5jaGFsbGVuZ2UpOwogfQogCkBAIC0yODksMjEgKzI5NSwy
MyBAQCB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6cGVyZm9ybURlZmF1CiAgICAgYXV0byBj
aGFsbGVuZ2UgPSBtX2NoYWxsZW5nZXMudGFrZShjaGFsbGVuZ2VJRCk7CiAgICAgQVNTRVJUKCFj
aGFsbGVuZ2UuY2hhbGxlbmdlLmlzTnVsbCgpKTsKIAorICAgIEF1dGhlbnRpY2F0aW9uQ2xpZW50
KiBjb3JlQ2xpZW50ID0gY2hhbGxlbmdlLmNoYWxsZW5nZS5hdXRoZW50aWNhdGlvbkNsaWVudCgp
OwogI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiAgICAgaWYgKGNoYWxsZW5nZS5jb21wbGV0aW9u
SGFuZGxlcikgeworICAgICAgICBBU1NFUlQoIWNvcmVDbGllbnQpOwogICAgICAgICBjaGFsbGVu
Z2UuY29tcGxldGlvbkhhbmRsZXIoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6
UGVyZm9ybURlZmF1bHRIYW5kbGluZywgQ3JlZGVudGlhbCgpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KLSNlbmRpZgotCi0gICAgQXV0aGVudGljYXRpb25DbGllbnQqIGNvcmVDbGllbnQgPSBj
aGFsbGVuZ2UuY2hhbGxlbmdlLmF1dGhlbnRpY2F0aW9uQ2xpZW50KCk7CisjZWxzZQogICAgIGlm
ICghY29yZUNsaWVudCkgewogICAgICAgICAvLyBGSVhNRTogVGhlIGF1dGhlbnRpY2F0aW9uIGNs
aWVudCBpcyBudWxsIGZvciBkb3dubG9hZHMsIGJ1dCBpdCBjYW4gYWxzbyBiZSBudWxsIGZvciBj
YW5jZWxlZCBsb2Fkcy4KICAgICAgICAgLy8gV2Ugc2hvdWxkIG5vdCBjYWxsIERvd25sb2FkOjpy
ZWNlaXZlZENyZWRlbnRpYWwgaW4gdGhlIGxhdHRlciBjYXNlLgogICAgICAgICBEb3dubG9hZDo6
cmVjZWl2ZWRSZXF1ZXN0VG9QZXJmb3JtRGVmYXVsdEhhbmRsaW5nKGNoYWxsZW5nZS5jaGFsbGVu
Z2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQorI2VuZGlmCiAKKyAgICBBU1NFUlQoY29yZUNs
aWVudCk7CiAgICAgY29yZUNsaWVudC0+cmVjZWl2ZWRSZXF1ZXN0VG9QZXJmb3JtRGVmYXVsdEhh
bmRsaW5nKGNoYWxsZW5nZS5jaGFsbGVuZ2UpOwogfQogCkBAIC0zMjAsMjEgKzMyOCwyMyBAQCB2
b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6cmVqZWN0UHJvdGVjCiAgICAgYXV0byBjaGFsbGVu
Z2UgPSBtX2NoYWxsZW5nZXMudGFrZShjaGFsbGVuZ2VJRCk7CiAgICAgQVNTRVJUKCFjaGFsbGVu
Z2UuY2hhbGxlbmdlLmlzTnVsbCgpKTsKIAorICAgIEF1dGhlbnRpY2F0aW9uQ2xpZW50KiBjb3Jl
Q2xpZW50ID0gY2hhbGxlbmdlLmNoYWxsZW5nZS5hdXRoZW50aWNhdGlvbkNsaWVudCgpOwogI2lm
IFVTRShORVRXT1JLX1NFU1NJT04pCiAgICAgaWYgKGNoYWxsZW5nZS5jb21wbGV0aW9uSGFuZGxl
cikgeworICAgICAgICBBU1NFUlQoIWNvcmVDbGllbnQpOwogICAgICAgICBjaGFsbGVuZ2UuY29t
cGxldGlvbkhhbmRsZXIoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6UmVqZWN0
UHJvdGVjdGlvblNwYWNlLCBDcmVkZW50aWFsKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQot
I2VuZGlmCi0KLSAgICBBdXRoZW50aWNhdGlvbkNsaWVudCogY29yZUNsaWVudCA9IGNoYWxsZW5n
ZS5jaGFsbGVuZ2UuYXV0aGVudGljYXRpb25DbGllbnQoKTsKKyNlbHNlCiAgICAgaWYgKCFjb3Jl
Q2xpZW50KSB7CiAgICAgICAgIC8vIEZJWE1FOiBUaGUgYXV0aGVudGljYXRpb24gY2xpZW50IGlz
IG51bGwgZm9yIGRvd25sb2FkcywgYnV0IGl0IGNhbiBhbHNvIGJlIG51bGwgZm9yIGNhbmNlbGVk
IGxvYWRzLgogICAgICAgICAvLyBXZSBzaG91bGQgbm90IGNhbGwgRG93bmxvYWQ6OnJlY2VpdmVk
Q3JlZGVudGlhbCBpbiB0aGUgbGF0dGVyIGNhc2UuCiAgICAgICAgIERvd25sb2FkOjpyZWNlaXZl
ZENoYWxsZW5nZVJlamVjdGlvbihjaGFsbGVuZ2UuY2hhbGxlbmdlKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KKyNlbmRpZgogCisgICAgQVNTRVJUKGNvcmVDbGllbnQpOwogICAgIGNvcmVDbGll
bnQtPnJlY2VpdmVkQ2hhbGxlbmdlUmVqZWN0aW9uKGNoYWxsZW5nZS5jaGFsbGVuZ2UpOwogfQog
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL0Rvd25sb2FkLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCShyZXZp
c2lvbiAxOTI0OTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL0Rvd25sb2Fk
LmgJKHdvcmtpbmcgY29weSkKQEAgLTY0LDYgKzY0LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAK
IGNsYXNzIERvd25sb2FkQXV0aGVudGljYXRpb25DbGllbnQ7CiBjbGFzcyBEb3dubG9hZE1hbmFn
ZXI7CitjbGFzcyBOZXR3b3JrRGF0YVRhc2s7CiBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBEb3du
bG9hZCA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIgewpAQCAtNzMsNyArNzQsOSBAQCBwdWJs
aWM6CiAgICAgfkRvd25sb2FkKCk7CiAKICAgICB2b2lkIHN0YXJ0KCk7CisjaWYgIVVTRShORVRX
T1JLX1NFU1NJT04pCiAgICAgdm9pZCBzdGFydFdpdGhIYW5kbGUoV2ViQ29yZTo6UmVzb3VyY2VI
YW5kbGUqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CisjZW5kaWYKICAgICB2
b2lkIHJlc3VtZShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0
cmluZyYgcGF0aCwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJik7CiAgICAgdm9pZCBj
YW5jZWwoKTsKIApAQCAtMTIwLDkgKzEyMywxMyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxTYW5k
Ym94RXh0ZW5zaW9uPiBtX3NhbmRib3hFeHRlbnNpb247CiAKICNpZiBQTEFURk9STShDT0NPQSkK
KyNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQorICAgIC8vIEZJWE1FOiBUaGlzIG5lZWRzIG1lbWJl
ciB2YXJpYWJsZXMuCisjZWxzZQogICAgIFJldGFpblB0cjxOU1VSTERvd25sb2FkPiBtX25zVVJM
RG93bmxvYWQ7CiAgICAgUmV0YWluUHRyPFdLRG93bmxvYWRBc0RlbGVnYXRlPiBtX2RlbGVnYXRl
OwogI2VuZGlmCisjZW5kaWYKICNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIFJldGFpblB0cjxDRlVS
TERvd25sb2FkUmVmPiBtX2Rvd25sb2FkOwogICAgIFJlZlB0cjxEb3dubG9hZEF1dGhlbnRpY2F0
aW9uQ2xpZW50PiBtX2F1dGhlbnRpY2F0aW9uQ2xpZW50OwpJbmRleDogU291cmNlL1dlYktpdDIv
U2hhcmVkL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAkocmV2aXNpb24g
MTkyNDk3KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFn
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw4IEBACiAjaW5jbHVkZSAiRG93bmxv
YWRNYW5hZ2VyLmgiCiAKICNpbmNsdWRlICJEb3dubG9hZC5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
Tm90SW1wbGVtZW50ZWQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Nlc3Npb25JRC5oPgogI2luY2x1
ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC0z
OCwxNSArNDAsMjAgQEAgRG93bmxvYWRNYW5hZ2VyOjpEb3dubG9hZE1hbmFnZXIoQ2xpZW50Kgog
ewogfQogCi12b2lkIERvd25sb2FkTWFuYWdlcjo6c3RhcnREb3dubG9hZCh1aW50NjRfdCBkb3du
bG9hZElELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit2b2lkIERvd25sb2FkTWFu
YWdlcjo6c3RhcnREb3dubG9hZChTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBkb3dubG9h
ZElELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7CisjaWYgVVNFKE5FVFdPUktf
U0VTU0lPTikKKyAgICBub3RJbXBsZW1lbnRlZCgpOworI2Vsc2UKICAgICBhdXRvIGRvd25sb2Fk
ID0gc3RkOjptYWtlX3VuaXF1ZTxEb3dubG9hZD4oKnRoaXMsIGRvd25sb2FkSUQsIHJlcXVlc3Qp
OwogICAgIGRvd25sb2FkLT5zdGFydCgpOwogCiAgICAgQVNTRVJUKCFtX2Rvd25sb2Fkcy5jb250
YWlucyhkb3dubG9hZElEKSk7CiAgICAgbV9kb3dubG9hZHMuYWRkKGRvd25sb2FkSUQsIFdURjo6
bW92ZShkb3dubG9hZCkpOworI2VuZGlmCiB9CiAKKyNpZiAhVVNFKE5FVFdPUktfU0VTU0lPTikK
IHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpjb252ZXJ0SGFuZGxlVG9Eb3dubG9hZCh1aW50NjRfdCBk
b3dubG9hZElELCBSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIGF1dG8g
ZG93bmxvYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPERvd25sb2FkPigqdGhpcywgZG93bmxvYWRJRCwg
cmVxdWVzdCk7CkBAIC01NSwzMCArNjIsNDMgQEAgdm9pZCBEb3dubG9hZE1hbmFnZXI6OmNvbnZl
cnRIYW5kbGVUb0RvdwogICAgIEFTU0VSVCghbV9kb3dubG9hZHMuY29udGFpbnMoZG93bmxvYWRJ
RCkpOwogICAgIG1fZG93bmxvYWRzLmFkZChkb3dubG9hZElELCBXVEY6Om1vdmUoZG93bmxvYWQp
KTsKIH0KKyNlbmRpZgogCiB2b2lkIERvd25sb2FkTWFuYWdlcjo6cmVzdW1lRG93bmxvYWQodWlu
dDY0X3QgZG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBj
b25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgc2FuZGJv
eEV4dGVuc2lvbkhhbmRsZSkKIHsKKyNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQorICAgIG5vdElt
cGxlbWVudGVkKCk7CisjZWxzZQogICAgIC8vIERvd25sb2FkOjpyZXN1bWUoKSBpcyByZXNwb25z
aWJsZSBmb3Igc2V0dGluZyB0aGUgRG93bmxvYWQncyByZXNvdXJjZSByZXF1ZXN0LgogICAgIGF1
dG8gZG93bmxvYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPERvd25sb2FkPigqdGhpcywgZG93bmxvYWRJ
RCwgUmVzb3VyY2VSZXF1ZXN0KCkpOwogCiAgICAgZG93bmxvYWQtPnJlc3VtZShyZXN1bWVEYXRh
LCBwYXRoLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKICAgICBBU1NFUlQoIW1fZG93bmxvYWRz
LmNvbnRhaW5zKGRvd25sb2FkSUQpKTsKICAgICBtX2Rvd25sb2Fkcy5hZGQoZG93bmxvYWRJRCwg
V1RGOjptb3ZlKGRvd25sb2FkKSk7CisjZW5kaWYKIH0KIAogdm9pZCBEb3dubG9hZE1hbmFnZXI6
OmNhbmNlbERvd25sb2FkKHVpbnQ2NF90IGRvd25sb2FkSUQpCiB7CisjaWYgVVNFKE5FVFdPUktf
U0VTU0lPTikKKyAgICBub3RJbXBsZW1lbnRlZCgpOworI2Vsc2UKICAgICBEb3dubG9hZCogZG93
bmxvYWQgPSBtX2Rvd25sb2Fkcy5nZXQoZG93bmxvYWRJRCk7CiAgICAgaWYgKCFkb3dubG9hZCkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgZG93bmxvYWQtPmNhbmNlbCgpOworI2VuZGlmCiB9CiAK
IHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpkb3dubG9hZEZpbmlzaGVkKERvd25sb2FkKiBkb3dubG9h
ZCkKIHsKKyNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQorICAgIG5vdEltcGxlbWVudGVkKCk7Cisj
ZWxzZQogICAgIEFTU0VSVChtX2Rvd25sb2Fkcy5jb250YWlucyhkb3dubG9hZC0+ZG93bmxvYWRJ
RCgpKSk7CiAgICAgbV9kb3dubG9hZHMucmVtb3ZlKGRvd25sb2FkLT5kb3dubG9hZElEKCkpOwor
I2VuZGlmCiB9CiAKIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpkaWRDcmVhdGVEb3dubG9hZCgpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvRG93bmxvYWRNYW5h
Z2VyLmgJKHJldmlzaW9uIDE5MjQ5NykKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9h
ZHMvRG93bmxvYWRNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNk
ZWZpbmUgRG93bmxvYWRNYW5hZ2VyX2gKIAogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIK
KyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgpAQCAtMzUsNiArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJj
ZUhhbmRsZTsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7
CitjbGFzcyBTZXNzaW9uSUQ7CiB9CiAKIG5hbWVzcGFjZSBJUEMgewpAQCAtNDYsNiArNDgsNyBA
QCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgQXV0aGVudGljYXRpb25NYW5hZ2VyOwogY2xh
c3MgRG93bmxvYWQ7CitjbGFzcyBOZXR3b3JrRGF0YVRhc2s7CiBjbGFzcyBXZWJQYWdlOwogCiBj
bGFzcyBEb3dubG9hZE1hbmFnZXIgewpAQCAtNjQsMTYgKzY3LDIzIEBAIHB1YmxpYzoKIAogICAg
IGV4cGxpY2l0IERvd25sb2FkTWFuYWdlcihDbGllbnQqKTsKIAotICAgIHZvaWQgc3RhcnREb3du
bG9hZCh1aW50NjRfdCBkb3dubG9hZElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
KTsKKyAgICB2b2lkIHN0YXJ0RG93bmxvYWQoV2ViQ29yZTo6U2Vzc2lvbklELCB1aW50NjRfdCBk
b3dubG9hZElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKKyNpZiAhVVNFKE5F
VFdPUktfU0VTU0lPTikKICAgICB2b2lkIGNvbnZlcnRIYW5kbGVUb0Rvd25sb2FkKHVpbnQ2NF90
IGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOworI2VuZGlm
CiAKICAgICB2b2lkIHJlc3VtZURvd25sb2FkKHVpbnQ2NF90IGRvd25sb2FkSUQsIGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmKTsKIAogICAgIHZvaWQgY2FuY2VsRG93bmxvYWQodWlu
dDY0X3QgZG93bmxvYWRJRCk7CiAKICAgICB2b2lkIGRvd25sb2FkRmluaXNoZWQoRG93bmxvYWQq
KTsKKyNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQorICAgIGJvb2wgaXNEb3dubG9hZGluZygpIGNv
bnN0IHsgbm90SW1wbGVtZW50ZWQoKTsgcmV0dXJuIGZhbHNlOyB9CisgICAgdWludDY0X3QgYWN0
aXZlRG93bmxvYWRDb3VudCgpIGNvbnN0IHsgbm90SW1wbGVtZW50ZWQoKTsgcmV0dXJuIDA7IH0K
KyNlbHNlCiAgICAgYm9vbCBpc0Rvd25sb2FkaW5nKCkgY29uc3QgeyByZXR1cm4gIW1fZG93bmxv
YWRzLmlzRW1wdHkoKTsgfQogICAgIHVpbnQ2NF90IGFjdGl2ZURvd25sb2FkQ291bnQoKSBjb25z
dCB7IHJldHVybiBtX2Rvd25sb2Fkcy5zaXplKCk7IH0KKyNlbmRpZgogCiAgICAgdm9pZCBkaWRD
cmVhdGVEb3dubG9hZCgpOwogICAgIHZvaWQgZGlkRGVzdHJveURvd25sb2FkKCk7CkBAIC04Myw3
ICs5Myw5IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBDbGllbnQqIG1fY2xpZW50OworI2lm
ICFVU0UoTkVUV09SS19TRVNTSU9OKQogICAgIEhhc2hNYXA8dWludDY0X3QsIHN0ZDo6dW5pcXVl
X3B0cjxEb3dubG9hZD4+IG1fZG93bmxvYWRzOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvbWFjL0Rvd25s
b2FkTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMv
bWFjL0Rvd25sb2FkTWFjLm1tCShyZXZpc2lvbiAxOTI0OTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvRG93bmxvYWRzL21hYy9Eb3dubG9hZE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYs
NyArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJEb3dubG9hZC5oIgogCi0j
aWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKE1BQykgJiYgIVVTRShORVRXT1JLX1NFU1NJ
T04pCiAKICNpbXBvcnQgPFdlYkNvcmUvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaD4KICNpbXBv
cnQgPFdlYkNvcmUvQXV0aGVudGljYXRpb25NYWMuaD4KQEAgLTU4LDggKzU4LDEwIEBAIG5hbWVz
cGFjZSBXZWJLaXQgewogCiB2b2lkIERvd25sb2FkOjpzdGFydCgpCiB7CisjaWYgIVVTRShORVRX
T1JLX1NFU1NJT04pCiAgICAgQVNTRVJUKCFtX25zVVJMRG93bmxvYWQpOwogICAgIEFTU0VSVCgh
bV9kZWxlZ2F0ZSk7CisjZW5kaWYKIAogICAgIG1fZGVsZWdhdGUgPSBhZG9wdE5TKFtbV0tEb3du
bG9hZEFzRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRG93bmxvYWQ6dGhpc10pOwogI3ByYWdtYSBj
bGFuZyBkaWFnbm9zdGljIHB1c2gKQEAgLTcxLDYgKzczLDcgQEAgdm9pZCBEb3dubG9hZDo6c3Rh
cnQoKQogICAgIFttX25zVVJMRG93bmxvYWQgc2V0RGVsZXRlc0ZpbGVVcG9uRmFpbHVyZTpOT107
CiB9CiAKKyNpZiAhVVNFKE5FVFdPUktfU0VTU0lPTikKIHZvaWQgRG93bmxvYWQ6OnN0YXJ0V2l0
aEhhbmRsZShSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSkKIHsKICAgICBBU1NFUlQoIW1fbnNVUkxEb3dubG9hZCk7CkBAIC04Niw2ICs4OSw3
IEBAIHZvaWQgRG93bmxvYWQ6OnN0YXJ0V2l0aEhhbmRsZShSZXNvdXJjZUgKICAgICAvLyBGSVhN
RTogQWxsb3cgdGhpcyB0byBiZSBjaGFuZ2VkIGJ5IHRoZSBjbGllbnQuCiAgICAgW21fbnNVUkxE
b3dubG9hZCBzZXREZWxldGVzRmlsZVVwb25GYWlsdXJlOk5PXTsKIH0KKyNlbmRpZgogCiB2b2lk
IERvd25sb2FkOjpyZXN1bWUoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBj
b25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgc2FuZGJv
eEV4dGVuc2lvbkhhbmRsZSkKIHsKQEAgLTMwOCw0ICszMTIsNCBAQCAtICh2b2lkKWRvd25sb2Fk
OihOU1VSTERvd25sb2FkICopZG93bmxvCiAKIEBlbmQKIAotI2VuZGlmIC8vIFBMQVRGT1JNKE1B
QykKKyNlbmRpZiAvLyBQTEFURk9STShNQUMpICYmICFVU0UoTkVUV09SS19TRVNTSU9OKQpJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCShyZXZpc2lv
biAxOTI0OTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC04NzEsMTYgKzg3MSwxNyBAQCBEb3dubG9hZFByb3h5KiBXZWJQ
cm9jZXNzUG9vbDo6ZG93bmxvYWQoCiB7CiAgICAgRG93bmxvYWRQcm94eSogZG93bmxvYWRQcm94
eSA9IGNyZWF0ZURvd25sb2FkUHJveHkocmVxdWVzdCk7CiAgICAgdWludDY0X3QgaW5pdGlhdGlu
Z1BhZ2VJRCA9IGluaXRpYXRpbmdQYWdlID8gaW5pdGlhdGluZ1BhZ2UtPnBhZ2VJRCgpIDogMDsK
KyAgICBTZXNzaW9uSUQgc2Vzc2lvbklEID0gaW5pdGlhdGluZ1BhZ2UgPyBpbml0aWF0aW5nUGFn
ZS0+c2Vzc2lvbklEKCkgOiBTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKTsKIAogI2lmIEVO
QUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgaWYgKHVzZXNOZXR3b3JrUHJvY2VzcygpICYmIG5l
dHdvcmtQcm9jZXNzKCkpIHsKICAgICAgICAgLy8gRklYTUUgKE5ldHdvcmtQcm9jZXNzKTogUmVw
bGljYXRlIHdoYXRldmVyIEZyYW1lTG9hZGVyOjpzZXRPcmlnaW5hbFVSTEZvckRvd25sb2FkUmVx
dWVzdCBkb2VzIHdpdGggdGhlIHJlcXVlc3QgaGVyZS4KLSAgICAgICAgbmV0d29ya1Byb2Nlc3Mo
KS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkRvd25sb2FkUmVxdWVzdChkb3dubG9h
ZFByb3h5LT5kb3dubG9hZElEKCksIHJlcXVlc3QpLCAwKTsKKyAgICAgICAgbmV0d29ya1Byb2Nl
c3MoKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkRvd25sb2FkUmVxdWVzdChzZXNz
aW9uSUQsIGRvd25sb2FkUHJveHktPmRvd25sb2FkSUQoKSwgcmVxdWVzdCksIDApOwogICAgICAg
ICByZXR1cm4gZG93bmxvYWRQcm94eTsKICAgICB9CiAjZW5kaWYKIAotICAgIG1fcHJvY2Vzc2Vz
WzBdLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpEb3dubG9hZFJlcXVlc3QoZG93bmxvYWRQ
cm94eS0+ZG93bmxvYWRJRCgpLCBpbml0aWF0aW5nUGFnZUlELCByZXF1ZXN0KSwgMCk7CisgICAg
bV9wcm9jZXNzZXNbMF0tPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkRvd25sb2FkUmVxdWVz
dChzZXNzaW9uSUQsIGRvd25sb2FkUHJveHktPmRvd25sb2FkSUQoKSwgaW5pdGlhdGluZ1BhZ2VJ
RCwgcmVxdWVzdCksIDApOwogICAgIHJldHVybiBkb3dubG9hZFByb3h5OwogfQogCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDE5MjQ5NykK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTExMDgsNyArMTEwOCw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6ZW5zdXJlV2ViVG9EYXRh
YmFzZVByb2MKIAogI2VuZGlmIC8vIEVOQUJMRUQoREFUQUJBU0VfUFJPQ0VTUykKIAotdm9pZCBX
ZWJQcm9jZXNzOjpkb3dubG9hZFJlcXVlc3QodWludDY0X3QgZG93bmxvYWRJRCwgdWludDY0X3Qg
aW5pdGlhdGluZ1BhZ2VJRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQordm9pZCBX
ZWJQcm9jZXNzOjpkb3dubG9hZFJlcXVlc3QoU2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3Qg
ZG93bmxvYWRJRCwgdWludDY0X3QgaW5pdGlhdGluZ1BhZ2VJRCwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0KQogewogICAgIFdlYlBhZ2UqIGluaXRpYXRpbmdQYWdlID0gaW5pdGlhdGlu
Z1BhZ2VJRCA/IHdlYlBhZ2UoaW5pdGlhdGluZ1BhZ2VJRCkgOiAwOwogCkBAIC0xMTE2LDcgKzEx
MTYsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OmRvd25sb2FkUmVxdWVzdCh1aW50NjRfCiAgICAgaWYg
KGluaXRpYXRpbmdQYWdlKQogICAgICAgICBpbml0aWF0aW5nUGFnZS0+bWFpbkZyYW1lKCktPmxv
YWRlcigpLnNldE9yaWdpbmFsVVJMRm9yRG93bmxvYWRSZXF1ZXN0KHJlcXVlc3RXaXRoT3JpZ2lu
YWxVUkwpOwogCi0gICAgZG93bmxvYWRNYW5hZ2VyKCkuc3RhcnREb3dubG9hZChkb3dubG9hZElE
LCByZXF1ZXN0V2l0aE9yaWdpbmFsVVJMKTsKKyAgICBkb3dubG9hZE1hbmFnZXIoKS5zdGFydERv
d25sb2FkKHNlc3Npb25JRCwgZG93bmxvYWRJRCwgcmVxdWVzdFdpdGhPcmlnaW5hbFVSTCk7CiB9
CiAKIHZvaWQgV2ViUHJvY2Vzczo6cmVzdW1lRG93bmxvYWQodWludDY0X3QgZG93bmxvYWRJRCwg
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgs
IGNvbnN0IFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBzYW5kYm94RXh0ZW5zaW9u
SGFuZGxlKQpAQCAtMTE3NSw3ICsxMTc1LDcgQEAgdm9pZCBXZWJQcm9jZXNzOjpyZWxlYXNlUGFn
ZUNhY2hlKCkKICAgICBQYWdlQ2FjaGU6OnNpbmdsZXRvbigpLnBydW5lVG9TaXplTm93KDAsIFBy
dW5pbmdSZWFzb246Ok1lbW9yeVByZXNzdXJlKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzOjpmZXRj
aFdlYnNpdGVEYXRhKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHdlYnNp
dGVEYXRhVHlwZXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYlByb2Nlc3M6OmZldGNo
V2Vic2l0ZURhdGEoU2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3Qgd2Vic2l0ZURhdGFUeXBl
cywgdWludDY0X3QgY2FsbGJhY2tJRCkKIHsKICAgICBXZWJzaXRlRGF0YSB3ZWJzaXRlRGF0YTsK
IApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgJKHJldmlzaW9uIDE5
MjQ5NykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC02NCw2ICs2NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENlcnRp
ZmljYXRlSW5mbzsKIGNsYXNzIFBhZ2VHcm91cDsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKK2Ns
YXNzIFNlc3Npb25JRDsKIHN0cnVjdCBQbHVnaW5JbmZvOwogc3RydWN0IFNlY3VyaXR5T3JpZ2lu
RGF0YTsKIH0KQEAgLTI2Miw3ICsyNjMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RhcnRNZW1v
cnlTYW1wbGVyKGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYsIGNvbnN0IFN0cmluZyYs
IGNvbnN0IGRvdWJsZSk7CiAgICAgdm9pZCBzdG9wTWVtb3J5U2FtcGxlcigpOwogCi0gICAgdm9p
ZCBkb3dubG9hZFJlcXVlc3QodWludDY0X3QgZG93bmxvYWRJRCwgdWludDY0X3QgaW5pdGlhdGlu
Z1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgdm9pZCBkb3du
bG9hZFJlcXVlc3QoV2ViQ29yZTo6U2Vzc2lvbklELCB1aW50NjRfdCBkb3dubG9hZElELCB1aW50
NjRfdCBpbml0aWF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsK
ICAgICB2b2lkIHJlc3VtZURvd25sb2FkKHVpbnQ2NF90IGRvd25sb2FkSUQsIGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUmKTsKICAgICB2b2lkIGNhbmNlbERvd25sb2FkKHVpbnQ2NF90
IGRvd25sb2FkSUQpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAxOTI0OTcpCisrKyBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTY0
LDcgKzY0LDcgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAKICAg
ICAjIERvd25sb2Fkcy4gVGhpcyBzaG91bGQgcmVhbGx5IGJlIGluIGEgRG93bmxvYWQubWVzc2Fn
ZXMuaW4sIGJ1dCBpdCBzZWVtZWQgdW5uZWNlc3NhcnkgdG8gY3JlYXRlIGEgbmV3IGZpbGUganVz
dCBmb3IKICAgICAjIHRocmVlIG1lc3NhZ2VzLgotICAgIERvd25sb2FkUmVxdWVzdCh1aW50NjRf
dCBkb3dubG9hZElELCB1aW50NjRfdCBpbml0aWF0aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QgcmVxdWVzdCkKKyAgICBEb3dubG9hZFJlcXVlc3QoV2ViQ29yZTo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgdWludDY0X3QgZG93bmxvYWRJRCwgdWludDY0X3QgaW5pdGlhdGluZ1BhZ2VJ
RCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QpCiAgICAgUmVzdW1lRG93bmxvYWQo
dWludDY0X3QgZG93bmxvYWRJRCwgSVBDOjpEYXRhUmVmZXJlbmNlIHJlc3VtZURhdGEsIFN0cmlu
ZyBwYXRoLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9u
SGFuZGxlKQogICAgIENhbmNlbERvd25sb2FkKHVpbnQ2NF90IGRvd25sb2FkSUQpCiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiAxOTI0OTcpCisrKyBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM3NSw5ICsxMzc1LDkgQEAgYm9vbCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6Y2FuQ2FjaGVQYWdlKAogICAgIHJldHVybiAhbV9mcmFtZUhhc0N1c3Rv
bUNvbnRlbnRQcm92aWRlcjsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29udmVy
dE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKERvY3VtZW50TG9hZGVyICpkb2N1bWVudExvYWRl
ciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbnZlcnRNYWluUmVzb3Vy
Y2VMb2FkVG9Eb3dubG9hZChEb2N1bWVudExvYWRlciAqZG9jdW1lbnRMb2FkZXIsIFNlc3Npb25J
RCBzZXNzaW9uSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgbV9mcmFtZS0+Y29udmVydE1haW5SZXNvdXJj
ZUxvYWRUb0Rvd25sb2FkKGRvY3VtZW50TG9hZGVyLCByZXF1ZXN0LCByZXNwb25zZSk7CisgICAg
bV9mcmFtZS0+Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKGRvY3VtZW50TG9hZGVy
LCBzZXNzaW9uSUQsIHJlcXVlc3QsIHJlc3BvbnNlKTsKIH0KIAogUmVmUHRyPEZyYW1lPiBXZWJG
cmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRnJhbWUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiAxOTI0OTcpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDEwIEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1l
TG9hZGVyQ2xpZW50Lmg+CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFNlc3Npb25JRDsK
K30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFBsdWdpblZpZXc7CkBAIC0xODQsNyAr
MTg4LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRCZWNvbWVGcmFt
ZXNldChib29sKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgYm9vbCBjYW5DYWNoZVBhZ2UoKSBj
b25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY29udmVydE1haW5SZXNvdXJjZUxvYWRU
b0Rvd25sb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgdm9pZCBjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXIqLCBXZWJDb3JlOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlk
ZTsKIAogICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBjcmVhdGVGcmFtZShjb25z
dCBXZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkhUTUxGcmFtZU93
bmVyRWxlbWVudCosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29sIGFsbG93c1Njcm9sbGluZywgaW50IG1hcmdpbldp
ZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAkocmV2aXNpb24gMTkyNDk3KQorKysg
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjU3LDE3ICsyNTcsMjYgQEAgdm9pZCBXZWJGcmFtZTo6c3RhcnREb3dubG9hZChj
b25zdCBXZWJDbwogICAgIG1fcG9saWN5RG93bmxvYWRJRCA9IDA7CiAKICAgICBhdXRvJiB3ZWJQ
cm9jZXNzID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCk7CisjaWYgVVNFKE5FVFdPUktfU0VTU0lP
TikKKyAgICBBU1NFUlQod2ViUHJvY2Vzcy51c2VzTmV0d29ya1Byb2Nlc3MoKSk7CisjZW5kaWYK
KyAgICBTZXNzaW9uSUQgc2Vzc2lvbklEID0gcGFnZSgpID8gcGFnZSgpLT5zZXNzaW9uSUQoKSA6
IFNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpOwogI2lmIEVOQUJMRShORVRXT1JLX1BST0NF
U1MpCiAgICAgaWYgKHdlYlByb2Nlc3MudXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKLSAgICAgICAg
d2ViUHJvY2Vzcy5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTdGFydERvd25sb2FkKHBhZ2UoKS0+
c2Vzc2lvbklEKCksIHBvbGljeURvd25sb2FkSUQsIHJlcXVlc3QpLCAwKTsKKyAgICAgICAgd2Vi
UHJvY2Vzcy5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTdGFydERvd25sb2FkKHNlc3Npb25JRCwg
cG9saWN5RG93bmxvYWRJRCwgcmVxdWVzdCksIDApOwogICAgICAgICByZXR1cm47CiAgICAgfQog
I2VuZGlmCiAKLSAgICB3ZWJQcm9jZXNzLmRvd25sb2FkTWFuYWdlcigpLnN0YXJ0RG93bmxvYWQo
cG9saWN5RG93bmxvYWRJRCwgcmVxdWVzdCk7CisjaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKKyAg
ICAvLyBVc2luZyBORVRXT1JLX1NFU1NJT04gcmVxdWlyZXMgdGhlIHVzZSBvZiBhIG5ldHdvcmsg
cHJvY2Vzcy4KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2Vsc2UKKyAgICB3
ZWJQcm9jZXNzLmRvd25sb2FkTWFuYWdlcigpLnN0YXJ0RG93bmxvYWQoc2Vzc2lvbklELCBwb2xp
Y3lEb3dubG9hZElELCByZXF1ZXN0KTsKKyNlbmRpZgogfQogCi12b2lkIFdlYkZyYW1lOjpjb252
ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQoRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9h
ZGVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlKQordm9pZCBXZWJGcmFtZTo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rv
d25sb2FkKERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciwgU2Vzc2lvbklEIHNlc3Npb25J
RCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSkKIHsKICAgICBBU1NFUlQobV9wb2xpY3lEb3dubG9hZElEKTsKIApAQCAtMjc4
LDYgKzI4Nyw5IEBAIHZvaWQgV2ViRnJhbWU6OmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG8KIAog
ICAgIGF1dG8mIHdlYlByb2Nlc3MgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKTsKICNpZiBFTkFC
TEUoTkVUV09SS19QUk9DRVNTKQorI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCisgICAgQVNTRVJU
KHdlYlByb2Nlc3MudXNlc05ldHdvcmtQcm9jZXNzKCkpOworI2VuZGlmCiAgICAgaWYgKHdlYlBy
b2Nlc3MudXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKICAgICAgICAgLy8gVXNlIDAgdG8gaW5kaWNh
dGUgdGhhdCB0aGUgcmVzb3VyY2UgbG9hZCBjYW4ndCBiZSBjb252ZXJ0ZWQgYW5kIGEgbmV3IGRv
d25sb2FkIG11c3QgYmUgc3RhcnRlZC4KICAgICAgICAgLy8gVGhpcyBjYW4gaGFwcGVuIGlmIHRo
ZXJlIGlzIG5vIGxvYWRlciBiZWNhdXNlIHRoZSBtYWluIHJlc291cmNlIGlzIGluIHRoZSBXZWJD
b3JlIG1lbW9yeSBjYWNoZSwKQEAgLTI4OCwyMSArMzAwLDI4IEBAIHZvaWQgV2ViRnJhbWU6OmNv
bnZlcnRNYWluUmVzb3VyY2VMb2FkVG8KICAgICAgICAgZWxzZQogICAgICAgICAgICAgbWFpblJl
c291cmNlTG9hZElkZW50aWZpZXIgPSAwOwogCi0gICAgICAgIHdlYlByb2Nlc3MubmV0d29ya0Nv
bm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6Q29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKG1haW5SZXNv
dXJjZUxvYWRJZGVudGlmaWVyLCBwb2xpY3lEb3dubG9hZElELCByZXF1ZXN0LCByZXNwb25zZSks
IDApOworICAgICAgICB3ZWJQcm9jZXNzLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvbnZlcnRN
YWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChzZXNzaW9uSUQsIG1haW5SZXNvdXJjZUxvYWRJZGVu
dGlmaWVyLCBwb2xpY3lEb3dubG9hZElELCByZXF1ZXN0LCByZXNwb25zZSksIDApOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogI2VuZGlmCiAKICAgICBpZiAoIW1haW5SZXNvdXJjZUxvYWRlcikg
ewogICAgICAgICAvLyBUaGUgbWFpbiByZXNvdXJjZSBoYXMgYWxyZWFkeSBiZWVuIGxvYWRlZC4g
U3RhcnQgYSBuZXcgZG93bmxvYWQgaW5zdGVhZC4KLSAgICAgICAgd2ViUHJvY2Vzcy5kb3dubG9h
ZE1hbmFnZXIoKS5zdGFydERvd25sb2FkKHBvbGljeURvd25sb2FkSUQsIHJlcXVlc3QpOworI2lm
ICFVU0UoTkVUV09SS19TRVNTSU9OKQorICAgICAgICB3ZWJQcm9jZXNzLmRvd25sb2FkTWFuYWdl
cigpLnN0YXJ0RG93bmxvYWQoc2Vzc2lvbklELCBwb2xpY3lEb3dubG9hZElELCByZXF1ZXN0KTsK
KyNlbmRpZgogICAgICAgICByZXR1cm47CiAgICAgfQogCisjaWYgVVNFKE5FVFdPUktfU0VTU0lP
TikKKyAgICAvLyBVc2luZyBORVRXT1JLX1NFU1NJT04gcmVxdWlyZXMgdGhlIHVzZSBvZiBhIG5l
dHdvcmsgcHJvY2Vzcy4KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2Vsc2UK
ICAgICB3ZWJQcm9jZXNzLmRvd25sb2FkTWFuYWdlcigpLmNvbnZlcnRIYW5kbGVUb0Rvd25sb2Fk
KHBvbGljeURvd25sb2FkSUQsIGRvY3VtZW50TG9hZGVyLT5tYWluUmVzb3VyY2VMb2FkZXIoKS0+
aGFuZGxlKCksIHJlcXVlc3QsIHJlc3BvbnNlKTsKKyNlbmRpZgogfQogCi1TdHJpbmcgV2ViRnJh
bWU6OnNvdXJjZSgpIGNvbnN0IAorU3RyaW5nIFdlYkZyYW1lOjpzb3VyY2UoKSBjb25zdAogewog
ICAgIGlmICghbV9jb3JlRnJhbWUpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCShyZXZpc2lvbiAx
OTI0OTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaAko
d29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQCBjbGFzcyBGcmFtZTsKIGNsYXNzIEhUTUxG
cmFtZU93bmVyRWxlbWVudDsKIGNsYXNzIEludFBvaW50OwogY2xhc3MgSW50UmVjdDsKK2NsYXNz
IFNlc3Npb25JRDsKIGNsYXNzIFVSTDsKIH0KIApAQCAtODIsNyArODMsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0X3QgbGlzdGVuZXJJRCwgV2Vi
Q29yZTo6UG9saWN5QWN0aW9uLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQ2NF90IGRvd25s
b2FkSUQpOwogCiAgICAgdm9pZCBzdGFydERvd25sb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYpOwotICAgIHZvaWQgY29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOworICAgIHZvaWQgY29udmVydE1haW5S
ZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgV2ViQ29yZTo6
U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJik7CiAKICAgICBTdHJpbmcgc291cmNlKCkgY29uc3Q7CiAgICAg
U3RyaW5nIGNvbnRlbnRzQXNTdHJpbmcoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE5MjU5MykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE1LTExLTE4ICBBbGV4IENocmlzdGVuc2VuICA8YWNo
cmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUHJvZ3Jlc3MgdG93YXJkcyBpbXBsZW1l
bnRpbmcgRG93bmxvYWRzIHdpdGggTkVUV09SS19TRVNTSU9OCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE0MTQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQubW06CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGV0YWNoZWRGcm9tUGFyZW50
Myk6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29udmVydE1haW5SZXNvdXJjZUxv
YWRUb0Rvd25sb2FkKToKKwogMjAxNS0xMS0xOCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxl
LmNvbT4KIAogICAgICAgICBFeHBvc2UgV2ViQ29yZSdzIEF1ZGlvUGxheWJhY2tSZXF1aXJlc1Vz
ZXJHZXN0dXJlIHNldHRpbmcgdG8gV2ViS2l0ICYgV2ViS2l0MgpJbmRleDogU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5o
CShyZXZpc2lvbiAxOTI0OTcpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMiArMzksMTMgQEAK
IEBjbGFzcyBXZWJSZXNvdXJjZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIGNsYXNzIEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwotICAgIGNsYXNzIENhY2hlZEZyYW1lOwotICAgIGNsYXNz
IEhpc3RvcnlJdGVtOwotICAgIGNsYXNzIFByb3RlY3Rpb25TcGFjZTsKLSAgICBjbGFzcyBSZXNv
dXJjZUxvYWRlcjsKLSAgICBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CitjbGFzcyBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZTsKK2NsYXNzIENhY2hlZEZyYW1lOworY2xhc3MgSGlzdG9yeUl0ZW07Citj
bGFzcyBQcm90ZWN0aW9uU3BhY2U7CitjbGFzcyBSZXNvdXJjZUxvYWRlcjsKK2NsYXNzIFJlc291
cmNlUmVxdWVzdDsKK2NsYXNzIFNlc3Npb25JRDsKIH0KIAogdHlwZWRlZiBIYXNoTWFwPFJlZlB0
cjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcj4sIFJldGFpblB0cjxXZWJSZXNvdXJjZT4+IFJlc291
cmNlTWFwOwpAQCAtNzIsNyArNzMsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkZXRh
Y2hlZEZyb21QYXJlbnQyKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaGVkRnJv
bVBhcmVudDMoKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBjb252ZXJ0TWFpblJlc291
cmNlTG9hZFRvRG93bmxvYWQoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9h
ZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIFdlYkNvcmU6OlNlc3Npb25JRCwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYp
IG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lkIGFzc2lnbklkZW50aWZpZXJUb0luaXRpYWxS
ZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIq
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlkZTsKIApJbmRleDogU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQubW0JKHJldmlzaW9uIDE5MjQ5NykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yODQs
NyArMjg0LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGV0YWNoZWRGcm9tUAogICAg
IG1fd2ViRnJhbWUtPl9wcml2YXRlLT53ZWJGcmFtZVZpZXcgPSBuaWw7CiB9CiAKLXZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChEb2N1
bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCit2b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50Ojpjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQoRG9jdW1lbnRMb2FkZXIq
IGRvY3VtZW50TG9hZGVyLCBTZXNzaW9uSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgV2ViVmlldyAqd2Vi
VmlldyA9IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7CiAgICAgU3VicmVzb3VyY2VMb2Fk
ZXIqIG1haW5SZXNvdXJjZUxvYWRlciA9IGRvY3VtZW50TG9hZGVyLT5tYWluUmVzb3VyY2VMb2Fk
ZXIoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265797</attachid>
            <date>2015-11-18 16:02:56 -0800</date>
            <delta_ts>2015-11-18 17:17:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-151414-20151118160244.patch</filename>
            <type>text/plain</type>
            <size>53277</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MjQ5NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDE1LTExLTE4ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUHJvZ3Jlc3Mg
dG93YXJkcyBpbXBsZW1lbnRpbmcgRG93bmxvYWRzIHdpdGggTkVUV09SS19TRVNTSU9OCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE0MTQKKworICAg
ICAgICBSZXZpZXdlZCBiZWdydWRnaW5nbHkgYnkgQnJhZHkgRWlkc29uLgorCisgICAgICAgIFRo
ZXJlIGlzIG5vIGNoYW5nZSBpbiBiZWhhdmlvciBleGNlcHQgdGhhdCBTZXNzaW9uSURzIGFyZSBz
ZW50IGFjcm9zcyBJUEMgYW5kIHBhc3NlZCBhcyBwYXJhbWV0ZXJzLAorICAgICAgICBhbmQgdGhl
eSBhcmUgbm90IHVzZWQgeWV0LgorCisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpjb250aW51ZUFmdGVyQ29udGVu
dFBvbGljeSk6CisgICAgICAgIFJlbW92ZWQgYW4gdW51c2VkIGRlZmF1bHQuIENvbXBpbGVyIHdh
cm5pbmdzIHdpbGwgbGV0IHVzIGtub3cgaWYgd2UgYWRkIGFuIHVuaGFuZGxlZCBjYXNlIHRvIHRo
aXMgc3dpdGNoLgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAgICAgICAgKiBs
b2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgUGFzcyBTZXNzaW9uSURzIGFyb3Vu
ZC4KKwogMjAxNS0xMS0xNiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgTW9kZXJuIElEQjpNYWtlIGluLW1lbW9yeSBPYmplY3RTdG9yZSBjdXJzb3JzIHdvcmsu
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHJldmlzaW9u
IDE5MjQ5NykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTcyOCwxMSArNzI4LDE1IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNv
bnRpbnVlQWZ0ZXJDb250ZW4KICAgICAgICAgLy8gRG93bmxvYWQgbWF5IHVzZSB0aGlzIGtub3ds
ZWRnZSBmb3IgcHVycG9zZXMgdW5yZWxhdGVkIHRvIGNvb2tpZXMsIG5vdGFibHkgZm9yIHNldHRp
bmcgZmlsZSBxdWFyYW50aW5lIGRhdGEuCiAgICAgICAgIGZyYW1lTG9hZGVyKCktPnNldE9yaWdp
bmFsVVJMRm9yRG93bmxvYWRSZXF1ZXN0KG1fcmVxdWVzdCk7CiAKKyAgICAgICAgU2Vzc2lvbklE
IHNlc3Npb25JRCA9IFNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpOworICAgICAgICBpZiAo
ZnJhbWUoKSAmJiBmcmFtZSgpLT5wYWdlKCkpCisgICAgICAgICAgICBzZXNzaW9uSUQgPSBmcmFt
ZSgpLT5wYWdlKCktPnNlc3Npb25JRCgpOworCiAgICAgICAgIGlmIChtX3JlcXVlc3QudXJsKCku
cHJvdG9jb2xJc0RhdGEoKSkgewogICAgICAgICAgICAgLy8gV2UgZGVjb2RlIGRhdGEgVVJMIGlu
dGVybmFsbHksIHRoZXJlIGlzIG5vIHJlc291cmNlIGxvYWQgdG8gY29udmVydC4KICAgICAgICAg
ICAgIGZyYW1lTG9hZGVyKCktPmNsaWVudCgpLnN0YXJ0RG93bmxvYWQobV9yZXF1ZXN0KTsKICAg
ICAgICAgfSBlbHNlCi0gICAgICAgICAgICBmcmFtZUxvYWRlcigpLT5jbGllbnQoKS5jb252ZXJ0
TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQodGhpcywgbV9yZXF1ZXN0LCBtX3Jlc3BvbnNlKTsK
KyAgICAgICAgICAgIGZyYW1lTG9hZGVyKCktPmNsaWVudCgpLmNvbnZlcnRNYWluUmVzb3VyY2VM
b2FkVG9Eb3dubG9hZCh0aGlzLCBzZXNzaW9uSUQsIG1fcmVxdWVzdCwgbV9yZXNwb25zZSk7CiAK
ICAgICAgICAgLy8gSXQgbWlnaHQgaGF2ZSBnb25lIG1pc3NpbmcKICAgICAgICAgaWYgKG1haW5S
ZXNvdXJjZUxvYWRlcigpKQpAQCAtNzQ0LDkgKzc0OCw2IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6
OmNvbnRpbnVlQWZ0ZXJDb250ZW4KICAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6Y29udGludWVXaXRoUG9saWN5SWdub3JlKG1fZnJhbWUsICp0aGlzLCBtYWluUmVzb3VyY2VM
b2FkZXItPmlkZW50aWZpZXIoKSwgbV9yZXNwb25zZSk7CiAgICAgICAgIHN0b3BMb2FkaW5nRm9y
UG9saWN5Q2hhbmdlKCk7CiAgICAgICAgIHJldHVybjsKLSAgICAKLSAgICBkZWZhdWx0OgotICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKICAgICBpZiAobV9yZXNwb25zZS5p
c0hUVFAoKSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkocmV2aXNp
b24gMTkyNDk3KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNTAsNyArMjUwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBk
ZXRhY2hlZEZyb21QYXJlbnQyKCkgb3ZlcnJpZGUgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRldGFj
aGVkRnJvbVBhcmVudDMoKSBvdmVycmlkZSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBjb252ZXJ0
TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGUgeyB9CisgICAgdmly
dHVhbCB2b2lkIGNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChEb2N1bWVudExvYWRl
ciosIFNlc3Npb25JRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpIG92ZXJyaWRlIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIGFzc2lnbklkZW50aWZpZXJU
b0luaXRpYWxSZXF1ZXN0KHVuc2lnbmVkIGxvbmcsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGUgeyB9CiAgICAgdmlydHVhbCBib29sIHNob3VsZFVzZUNy
ZWRlbnRpYWxTdG9yYWdlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZykgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ckNsaWVudC5oCShyZXZpc2lvbiAxOTI0OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtOTQsNiArOTQsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOwogI2VuZGlm
CiAgICAgY2xhc3MgU2VjdXJpdHlPcmlnaW47CisgICAgY2xhc3MgU2Vzc2lvbklEOwogICAgIGNs
YXNzIFNoYXJlZEJ1ZmZlcjsKICAgICBjbGFzcyBTdHJpbmdXaXRoRGlyZWN0aW9uOwogICAgIGNs
YXNzIFN1YnN0aXR1dGVEYXRhOwpAQCAtMjcwLDcgKzI3MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQmVjb21lRnJhbWVzZXQoYm9vbCkg
PSAwOyAvLyBDYW4gY2hhbmdlIGR1ZSB0byBuYXZpZ2F0aW9uIG9yIERPTSBtb2RpZmljYXRpb24u
CiAKICAgICAgICAgdmlydHVhbCBib29sIGNhbkNhY2hlUGFnZSgpIGNvbnN0ID0gMDsKLSAgICAg
ICAgdmlydHVhbCB2b2lkIGNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChEb2N1bWVu
dExvYWRlciosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93
bmxvYWQoRG9jdW1lbnRMb2FkZXIqLCBTZXNzaW9uSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSA9IDA7CiAKICAgICAgICAgdmlydHVhbCBSZWZQdHI8
RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgbmFtZSwgSFRNTEZy
YW1lT3duZXJFbGVtZW50KiwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgYm9vbCBhbGxvd3NTY3Jv
bGxpbmcsIGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdodCkgPSAwOwogICAgICAgICB2
aXJ0dWFsIFJlZlB0cjxXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiwgSFRNTFBs
dWdJbkVsZW1lbnQqLCBjb25zdCBVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiwgYm9vbCBsb2FkTWFudWFsbHkpID0gMDsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MjQ5NykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg0IEBACisyMDE1LTExLTE4ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUHJvZ3Jlc3MgdG93
YXJkcyBpbXBsZW1lbnRpbmcgRG93bmxvYWRzIHdpdGggTkVUV09SS19TRVNTSU9OCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE0MTQKKworICAgICAg
ICBSZXZpZXdlZCBiZWdydWRnaW5nbHkgYnkgQnJhZHkgRWlkc29uLgorCisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAo
V2ViS2l0OjpzdG9yYWdlU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpzdGFydERvd25sb2FkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9h
ZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpOZXR3b3JrTG9hZCk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlQ2hhbGxlbmdlKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0xvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZv
ck9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZG93bmxvYWRSZXF1
ZXN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlc3VtZURvd25sb2FkKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6Y2xlYW51cCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6ZGlkQ29udmVydEhhbmRsZVRvRG93bmxvYWQpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmFib3J0KToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU2Vzc2lvbi5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtT
ZXNzaW9uQ29jb2EubW06CisgICAgICAgICh0b05TVVJMU2Vzc2lvblJlc3BvbnNlRGlzcG9zaXRp
b24pOgorICAgICAgICAoLVtOZXR3b3JrU2Vzc2lvbkRlbGVnYXRlIFVSTFNlc3Npb246ZGF0YVRh
c2s6ZGlkUmVjZWl2ZVJlc3BvbnNlOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtO
ZXR3b3JrU2Vzc2lvbkRlbGVnYXRlIFVSTFNlc3Npb246ZGF0YVRhc2s6ZGlkUmVjZWl2ZURhdGE6
XSk6CisgICAgICAgICgtW05ldHdvcmtTZXNzaW9uRGVsZWdhdGUgVVJMU2Vzc2lvbjpkb3dubG9h
ZFRhc2s6ZGlkRmluaXNoRG93bmxvYWRpbmdUb1VSTDpdKToKKyAgICAgICAgKC1bTmV0d29ya1Nl
c3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9uOmRvd25sb2FkVGFzazpkaWRXcml0ZURhdGE6dG90YWxC
eXRlc1dyaXR0ZW46dG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZTpdKToKKyAgICAgICAgKC1bTmV0
d29ya1Nlc3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9uOmRvd25sb2FkVGFzazpkaWRSZXN1bWVBdE9m
ZnNldDpleHBlY3RlZFRvdGFsQnl0ZXM6XSk6CisgICAgICAgICgtW05ldHdvcmtTZXNzaW9uRGVs
ZWdhdGUgVVJMU2Vzc2lvbjpkYXRhVGFzazpkaWRCZWNvbWVEb3dubG9hZFRhc2s6XSk6CisgICAg
ICAgICogU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6dXNlQ3JlZGVudGlhbEZvclNp
bmdsZUNoYWxsZW5nZSk6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6
Y29udGludWVXaXRob3V0Q3JlZGVudGlhbEZvclNpbmdsZUNoYWxsZW5nZSk6CisgICAgICAgIChX
ZWJLaXQ6OkF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6Y2FuY2VsU2luZ2xlQ2hhbGxlbmdlKToKKyAg
ICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRpb25NYW5hZ2VyOjpwZXJmb3JtRGVmYXVsdEhhbmRs
aW5nRm9yU2luZ2xlQ2hhbGxlbmdlKToKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRpb25N
YW5hZ2VyOjpyZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRDb250aW51ZUZvclNpbmdsZUNoYWxsZW5n
ZSk6CisgICAgICAgICogU2hhcmVkL0Rvd25sb2Fkcy9Eb3dubG9hZC5oOgorICAgICAgICAqIFNo
YXJlZC9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93
bmxvYWRNYW5hZ2VyOjpEb3dubG9hZE1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9h
ZE1hbmFnZXI6OnN0YXJ0RG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1hbmFn
ZXI6OmNvbnZlcnRIYW5kbGVUb0Rvd25sb2FkKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRN
YW5hZ2VyOjpyZXN1bWVEb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkTWFuYWdl
cjo6Y2FuY2VsRG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1hbmFnZXI6OmRv
d25sb2FkRmluaXNoZWQpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1hbmFnZXI6OmRpZENy
ZWF0ZURvd25sb2FkKToKKyAgICAgICAgKiBTaGFyZWQvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdl
ci5oOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1hbmFnZXI6OmlzRG93bmxvYWRpbmcpOgor
ICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1hbmFnZXI6OmFjdGl2ZURvd25sb2FkQ291bnQpOgor
ICAgICAgICAqIFNoYXJlZC9Eb3dubG9hZHMvbWFjL0Rvd25sb2FkTWFjLm1tOgorICAgICAgICAo
V2ViS2l0OjpEb3dubG9hZDo6c3RhcnQpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZDo6c3Rh
cnRXaXRoSGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OnJlc3VtZSk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc1Bvb2w6OmRvd25sb2FkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmNhbkNhY2hlUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9h
ZGVyQ2xpZW50Ojpjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRnJhbWUpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJG
cmFtZTo6c3RhcnREb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpjb252ZXJ0
TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6
c291cmNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzOjpkb3dubG9hZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpyZXN1
bWVEb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnJlbGVhc2VQYWdlQ2Fj
aGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpmZXRjaFdlYnNpdGVEYXRhKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlByb2Nlc3MubWVzc2FnZXMuaW46CisKIDIwMTUtMTEtMTYgIFJ5dWFuIENob2kgIDxyeXVhbi5j
aG9pQG5hdmVyY29ycC5jb20+CiAKICAgICAgICAgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbiBjYWxscyBhbiBzdGQ6OmZ1bmN0aW9u
IGFmdGVyIGl0J3MgYmVlbiBtb3ZlZCBmcm9tCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwCShyZXZpc2lvbiAxOTI0OTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3
OSwxNyArMTc5LDE2IEBAIHN0YXRpYyBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VTZXMK
ICAgICByZXR1cm4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24o
KTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c3RhcnREb3dubG9h
ZChTZXNzaW9uSUQsIHVpbnQ2NF90IGRvd25sb2FkSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0YXJ0RG93bmxv
YWQoU2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgZG93bmxvYWRJRCwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIC8vIEZJWE1FOiBEbyBzb21ldGhpbmcgd2l0aCB0
aGUgc2Vzc2lvbiBJRC4KLSAgICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuZG93bmxvYWRN
YW5hZ2VyKCkuc3RhcnREb3dubG9hZChkb3dubG9hZElELCByZXF1ZXN0KTsKKyAgICBOZXR3b3Jr
UHJvY2Vzczo6c2luZ2xldG9uKCkuZG93bmxvYWRNYW5hZ2VyKCkuc3RhcnREb3dubG9hZChzZXNz
aW9uSUQsIGRvd25sb2FkSUQsIHJlcXVlc3QpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQodWludDY0X3Qg
bWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIHVpbnQ2NF90IGRvd25sb2FkSUQsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Up
Cit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb252ZXJ0TWFpblJlc291cmNl
TG9hZFRvRG93bmxvYWQoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgbWFp
blJlc291cmNlTG9hZElkZW50aWZpZXIsIHVpbnQ2NF90IGRvd25sb2FkSUQsIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7
CiAgICAgYXV0byYgbmV0d29ya1Byb2Nlc3MgPSBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCk7
CiAgICAgaWYgKCFtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllcikgewotICAgICAgICBuZXR3b3Jr
UHJvY2Vzcy5kb3dubG9hZE1hbmFnZXIoKS5zdGFydERvd25sb2FkKGRvd25sb2FkSUQsIHJlcXVl
c3QpOworICAgICAgICBuZXR3b3JrUHJvY2Vzcy5kb3dubG9hZE1hbmFnZXIoKS5zdGFydERvd25s
b2FkKHNlc3Npb25JRCwgZG93bmxvYWRJRCwgcmVxdWVzdCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAkocmV2aXNpb24gMTkyNDk3KQor
KysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtNzksNyArNzksNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgc2V0RGVmZXJzTG9hZGluZyhSZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBib29sKTsKICAgICB2
b2lkIGNyb3NzT3JpZ2luUmVkaXJlY3RSZWNlaXZlZChSZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBj
b25zdCBXZWJDb3JlOjpVUkwmIHJlZGlyZWN0VVJMKTsKICAgICB2b2lkIHN0YXJ0RG93bmxvYWQo
V2ViQ29yZTo6U2Vzc2lvbklELCB1aW50NjRfdCBkb3dubG9hZElELCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmKTsKLSAgICB2b2lkIGNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3du
bG9hZCh1aW50NjRfdCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgdWludDY0X3QgZG93bmxv
YWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYpOworICAgIHZvaWQgY29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25s
b2FkKFdlYkNvcmU6OlNlc3Npb25JRCwgdWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZp
ZXIsIHVpbnQ2NF90IGRvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKIAogICAgIHZvaWQgY29va2llc0Zv
ckRPTShXZWJDb3JlOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgV2ViQ29yZTo6VVJMJiwgU3RyaW5nJiByZXN1bHQpOwogICAgIHZvaWQgc2V0Q29va2ll
c0Zyb21ET00oV2ViQ29yZTo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYpOwpJbmRleDogU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4JKHJldmlzaW9uIDE5MjQ5NykKKysr
IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBAIG1lc3NhZ2Vz
IC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXMKICAgICBQcmVmZXRjaEROUyhTdHJpbmcg
aG9zdG5hbWUpCiAKICAgICBTdGFydERvd25sb2FkKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIHVpbnQ2NF90IGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0
KQotICAgIENvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZCh1aW50NjRfdCBtYWluUmVz
b3VyY2VMb2FkSWRlbnRpZmllciwgdWludDY0X3QgZG93bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0IHJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UpCisg
ICAgQ29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFdlYkNvcmU6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIHVpbnQ2NF90IG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCB1aW50NjRfdCBk
b3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSByZXNwb25zZSkKIAogICAgIENvb2tpZXNGb3JET00oV2ViQ29yZTo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6VVJMIGZpcnN0UGFydHksIFdlYkNvcmU6OlVSTCB1
cmwpIC0+IChTdHJpbmcgcmVzdWx0KQogICAgIFNldENvb2tpZXNGcm9tRE9NKFdlYkNvcmU6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlVSTCBmaXJzdFBhcnR5LCBXZWJDb3JlOjpVUkwg
dXJsLCBTdHJpbmcgY29va2llU3RyaW5nKQpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0xvYWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAkocmV2aXNpb24gMTkyNDk3KQorKysgU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
OCwxMCArNDgsMTIgQEAgTmV0d29ya0xvYWQ6Ok5ldHdvcmtMb2FkKE5ldHdvcmtMb2FkQ2xpZQog
ICAgIDogbV9jbGllbnQoY2xpZW50KQogICAgICwgbV9wYXJhbWV0ZXJzKHBhcmFtZXRlcnMpCiAg
ICAgLCBtX25ldHdvcmtpbmdDb250ZXh0KFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjpjcmVhdGUo
cGFyYW1ldGVycy5zZXNzaW9uSUQsIHBhcmFtZXRlcnMuc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRU
UFNUb0hUVFBSZWRpcmVjdCkpCisjaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKKyAgICAsIG1fdGFz
ayhTZXNzaW9uVHJhY2tlcjo6bmV0d29ya1Nlc3Npb24ocGFyYW1ldGVycy5zZXNzaW9uSUQpLT5j
cmVhdGVEYXRhVGFza1dpdGhSZXF1ZXN0KHBhcmFtZXRlcnMucmVxdWVzdCwgKnRoaXMpKQorI2Vu
ZGlmCiAgICAgLCBtX2N1cnJlbnRSZXF1ZXN0KHBhcmFtZXRlcnMucmVxdWVzdCkKIHsKICNpZiBV
U0UoTkVUV09SS19TRVNTSU9OKQotICAgIG1fdGFzayA9IFNlc3Npb25UcmFja2VyOjpuZXR3b3Jr
U2Vzc2lvbihwYXJhbWV0ZXJzLnNlc3Npb25JRCktPmNyZWF0ZURhdGFUYXNrV2l0aFJlcXVlc3Qo
cGFyYW1ldGVycy5yZXF1ZXN0LCAqdGhpcyk7CiAgICAgbV90YXNrLT5yZXN1bWUoKTsKICNlbHNl
CiAgICAgbV9oYW5kbGUgPSBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlKG1fbmV0d29ya2luZ0NvbnRl
eHQuZ2V0KCksIHBhcmFtZXRlcnMucmVxdWVzdCwgdGhpcywgcGFyYW1ldGVycy5kZWZlcnNMb2Fk
aW5nLCBwYXJhbWV0ZXJzLmNvbnRlbnRTbmlmZmluZ1BvbGljeSA9PSBTbmlmZkNvbnRlbnQpOwpA
QCAtMTg0LDExICsxODYsMTEgQEAgdm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZUNoYWxsZW5n
ZShjbwogICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5hdXRoZW50aWNhdGlvbk1hbmFn
ZXIoKS5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UobV9wYXJhbWV0ZXJzLndlYlBh
Z2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIGNoYWxsZW5nZSwgY29tcGxldGlvbkhhbmRs
ZXIpOwogfQogCi12b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHN0ZDo6ZnVuY3Rpb248dm9pZChSZXNwb25zZURpc3Bv
c2l0aW9uKT4gY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZl
UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHN0ZDo6ZnVuY3Rpb248
dm9pZChXZWJDb3JlOjpQb2xpY3lBY3Rpb24pPiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIHNoYXJlZERpZFJlY2VpdmVSZXNwb25zZShyZXNw
b25zZSk7Ci0gICAgY29tcGxldGlvbkhhbmRsZXIoUmVzcG9uc2VEaXNwb3NpdGlvbjo6QWxsb3cp
OworICAgIGNvbXBsZXRpb25IYW5kbGVyKFBvbGljeVVzZSk7CiB9CiAKIHZvaWQgTmV0d29ya0xv
YWQ6OmRpZFJlY2VpdmVEYXRhKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQpJbmRleDog
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCShyZXZpc2lvbiAx
OTI0OTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCSh3
b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICAvLyBOZXR3b3JrU2Vz
c2lvblRhc2tDbGllbnQuCiAgICAgdmlydHVhbCB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0
aW9uKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0Jik+KSBmaW5hbCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUNo
YWxsZW5nZShjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIHN0ZDo6ZnVu
Y3Rpb248dm9pZChBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLCBjb25zdCBXZWJD
b3JlOjpDcmVkZW50aWFsJik+KSBmaW5hbCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBzdGQ6OmZ1
bmN0aW9uPHZvaWQoUmVzcG9uc2VEaXNwb3NpdGlvbik+KSBmaW5hbCBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoV2ViQ29yZTo6UG9saWN5QWN0aW9uKT4pIGZpbmFs
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5hbCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlk
Q29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsIG92
ZXJyaWRlOwogI2Vsc2UKQEAgLTExNiw3ICsxMTYsNyBAQCBwcml2YXRlOgogICAgIGNvbnN0IE5l
dHdvcmtMb2FkUGFyYW1ldGVycyBtX3BhcmFtZXRlcnM7CiAgICAgUmVmUHRyPFJlbW90ZU5ldHdv
cmtpbmdDb250ZXh0PiBtX25ldHdvcmtpbmdDb250ZXh0OwogI2lmIFVTRShORVRXT1JLX1NFU1NJ
T04pCi0gICAgUmVmUHRyPE5ldHdvcmtEYXRhVGFzaz4gbV90YXNrOworICAgIFJlZjxOZXR3b3Jr
RGF0YVRhc2s+IG1fdGFzazsKICNlbHNlCiAgICAgUmVmUHRyPFdlYkNvcmU6OlJlc291cmNlSGFu
ZGxlPiBtX2hhbmRsZTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAkocmV2aXNpb24gMTkyNDk3KQorKysgU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00MzQsOSArNDM0LDkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURh
dGFGbwogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6
OmRvd25sb2FkUmVxdWVzdCh1aW50NjRfdCBkb3dubG9hZElELCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpkb3dubG9hZFJlcXVlc3QoU2Vzc2lv
bklEIHNlc3Npb25JRCwgdWludDY0X3QgZG93bmxvYWRJRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0KQogewotICAgIGRvd25sb2FkTWFuYWdlcigpLnN0YXJ0RG93bmxvYWQoZG93bmxv
YWRJRCwgcmVxdWVzdCk7CisgICAgZG93bmxvYWRNYW5hZ2VyKCkuc3RhcnREb3dubG9hZChzZXNz
aW9uSUQsIGRvd25sb2FkSUQsIHJlcXVlc3QpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpy
ZXN1bWVEb3dubG9hZCh1aW50NjRfdCBkb3dubG9hZElELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgV2ViS2l0OjpTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgJKHJldmlzaW9uIDE5
MjQ5NykKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgQ2VydGlmaWNhdGVJbmZvOwogY2xhc3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOwogY2xhc3Mg
U2VjdXJpdHlPcmlnaW47CitjbGFzcyBTZXNzaW9uSUQ7CiBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5E
YXRhOwogfQogCkBAIC0xNTAsNyArMTUxLDcgQEAgcHJpdmF0ZToKICAgICAvLyBGSVhNRTogVGhp
cyBzaG91bGQgdGFrZSBhIHNlc3Npb24gSUQgc28gd2UgY2FuIGlkZW50aWZ5IHdoaWNoIGRpc2sg
Y2FjaGUgdG8gZGVsZXRlLgogICAgIHZvaWQgY2xlYXJEaXNrQ2FjaGUoc3RkOjpjaHJvbm86OnN5
c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQg
KCk+IGNvbXBsZXRpb25IYW5kbGVyKTsKIAotICAgIHZvaWQgZG93bmxvYWRSZXF1ZXN0KHVpbnQ2
NF90IGRvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOworICAgIHZv
aWQgZG93bmxvYWRSZXF1ZXN0KFdlYkNvcmU6OlNlc3Npb25JRCwgdWludDY0X3QgZG93bmxvYWRJ
RCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgdm9pZCByZXN1bWVEb3du
bG9hZCh1aW50NjRfdCBkb3dubG9hZElELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3Vt
ZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
Jik7CiAgICAgdm9pZCBjYW5jZWxEb3dubG9hZCh1aW50NjRfdCBkb3dubG9hZElEKTsKICAgICB2
b2lkIHNldENhY2hlTW9kZWwodWludDMyX3QpOwpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4JKHJldmlz
aW9uIDE5MjQ5NykKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIG1lc3NhZ2Vz
IC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmUKICAgICBEZWxldGVXZWJzaXRlRGF0YShX
ZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCB3ZWJzaXRlRGF0YVR5cGVzLCBz
dGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2UsIHVpbnQ2
NF90IGNhbGxiYWNrSUQpCiAgICAgRGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKFdlYkNvcmU6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHdlYnNpdGVEYXRhVHlwZXMsIFZlY3RvcjxX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdpbnMsIFZlY3RvcjxTdHJpbmc+IGNvb2tp
ZUhvc3ROYW1lcywgdWludDY0X3QgY2FsbGJhY2tJRCkKIAotICAgIERvd25sb2FkUmVxdWVzdCh1
aW50NjRfdCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCkKKyAg
ICBEb3dubG9hZFJlcXVlc3QoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3Qg
ZG93bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QpCiAgICAgUmVzdW1l
RG93bmxvYWQodWludDY0X3QgZG93bmxvYWRJRCwgSVBDOjpEYXRhUmVmZXJlbmNlIHJlc3VtZURh
dGEsIFN0cmluZyBwYXRoLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94
RXh0ZW5zaW9uSGFuZGxlKQogICAgIENhbmNlbERvd25sb2FkKHVpbnQ2NF90IGRvd25sb2FkSUQp
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMTkyNDk3KQorKysgU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjAwLDE3ICsyMDAsMjMgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNsZWFu
dXAoKQogICAgIG1fY29ubmVjdGlvbi0+ZGlkQ2xlYW51cFJlc291cmNlTG9hZGVyKCp0aGlzKTsK
IH0KIAorI2lmICFVU0UoTkVUV09SS19TRVNTSU9OKQogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OmRpZENvbnZlcnRIYW5kbGVUb0Rvd25sb2FkKCkKIHsKICAgICBBU1NFUlQobV9uZXR3b3Jr
TG9hZCk7CiAgICAgbV9kaWRDb252ZXJ0SGFuZGxlVG9Eb3dubG9hZCA9IHRydWU7CiB9CisjZW5k
aWYKIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmFib3J0KCkKIHsKICAgICBBU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgaWYgKG1fbmV0d29ya0xvYWQgJiYgIW1fZGlkQ29u
dmVydEhhbmRsZVRvRG93bmxvYWQpIHsKKyAgICBpZiAobV9uZXR3b3JrTG9hZAorI2lmICFVU0Uo
TkVUV09SS19TRVNTSU9OKQorICAgICAgICAmJiAhbV9kaWRDb252ZXJ0SGFuZGxlVG9Eb3dubG9h
ZAorI2VuZGlmCisgICAgKSB7CiAgICAgICAgIG1fbmV0d29ya0xvYWQtPmNhbmNlbCgpOwogCiAj
aWYgRU5BQkxFKE5FVFdPUktfQ0FDSEUpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24gMTkyNDk3
KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDcgKzYzLDkgQEAgcHVibGljOgogCiAgICAgTmV0d29y
a0xvYWQqIG5ldHdvcmtMb2FkKCkgY29uc3QgeyByZXR1cm4gbV9uZXR3b3JrTG9hZC5nZXQoKTsg
fQogCisjaWYgIVVTRShORVRXT1JLX1NFU1NJT04pCiAgICAgdm9pZCBkaWRDb252ZXJ0SGFuZGxl
VG9Eb3dubG9hZCgpOworI2VuZGlmCiAKICAgICB2b2lkIHN0YXJ0KCk7CiAgICAgdm9pZCBhYm9y
dCgpOwpAQCAtMTUwLDcgKzE1Miw5IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFN5
bmNocm9ub3VzTG9hZERhdGE+IG1fc3luY2hyb25vdXNMb2FkRGF0YTsKICAgICBWZWN0b3I8UmVm
UHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+IG1fZmlsZVJlZmVyZW5jZXM7CiAK
KyNpZiAhVVNFKE5FVFdPUktfU0VTU0lPTikKICAgICBib29sIG1fZGlkQ29udmVydEhhbmRsZVRv
RG93bmxvYWQgeyBmYWxzZSB9OworI2VuZGlmCiAgICAgYm9vbCBtX2RpZENvbnN1bWVTYW5kYm94
RXh0ZW5zaW9ucyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2RlZmVyc0xvYWRpbmcgeyBmYWxzZSB9
OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNz
aW9uLmgJKHJldmlzaW9uIDE5MjQ5NykKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtTZXNzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAgT0JKQ19D
TEFTUyBOU1VSTFNlc3Npb25EYXRhVGFzazsKIE9CSkNfQ0xBU1MgTlNPcGVyYXRpb25RdWV1ZTsK
IE9CSkNfQ0xBU1MgTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZTsKIAorI2luY2x1ZGUgPFdlYkNvcmUv
RnJhbWVMb2FkZXJUeXBlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Vzc2lvbklELmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CkBAIC00OSwxMiArNTAs
NiBAQCBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1lbnVtIGNs
YXNzIFJlc3BvbnNlRGlzcG9zaXRpb24gewotICAgIENhbmNlbCwKLSAgICBBbGxvdywKLSAgICBC
ZWNvbWVEb3dubG9hZAotfTsKLQogZW51bSBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURp
c3Bvc2l0aW9uIHsKICAgICBVc2VDcmVkZW50aWFsLAogICAgIFBlcmZvcm1EZWZhdWx0SGFuZGxp
bmcsCkBAIC02OCw3ICs2Myw3IEBAIGNsYXNzIE5ldHdvcmtTZXNzaW9uVGFza0NsaWVudCB7CiBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik+
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoY29uc3QgV2ViQ29y
ZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6Q3JlZGVudGlhbCYpPikg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYsIHN0ZDo6ZnVuY3Rpb248dm9pZChSZXNwb25zZURpc3Bvc2l0aW9u
KT4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoV2ViQ29yZTo6UG9saWN5
QWN0aW9uKT4pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0
ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgPSAwOwogCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtTZXNzaW9uQ29jb2EubW0JKHJldmlzaW9uIDE5MjQ5NykKKysrIFNvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0JKHdvcmtpbmcgY29weSkK
QEAgLTMzLDcgKzMzLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ0ZOZXR3b3JrU1BJLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0NyZWRlbnRpYWwuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRnJhbWVMb2FkZXJUeXBlcy5oPgogI2lt
cG9ydCA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KKyNpbXBvcnQgPFdlYkNvcmUv
Tm90SW1wbGVtZW50ZWQuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogI2lt
cG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3Vy
Y2VSZXNwb25zZS5oPgpAQCAtNDEsMTQgKzQzLDE0IEBACiAjaW1wb3J0IDx3dGYvTWFpblRocmVh
ZC5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKLXN0YXRpYyBOU1VSTFNlc3Np
b25SZXNwb25zZURpc3Bvc2l0aW9uIHRvTlNVUkxTZXNzaW9uUmVzcG9uc2VEaXNwb3NpdGlvbihX
ZWJLaXQ6OlJlc3BvbnNlRGlzcG9zaXRpb24gZGlzcG9zaXRpb24pCitzdGF0aWMgTlNVUkxTZXNz
aW9uUmVzcG9uc2VEaXNwb3NpdGlvbiB0b05TVVJMU2Vzc2lvblJlc3BvbnNlRGlzcG9zaXRpb24o
V2ViQ29yZTo6UG9saWN5QWN0aW9uIGRpc3Bvc2l0aW9uKQogewogICAgIHN3aXRjaCAoZGlzcG9z
aXRpb24pIHsKLSAgICBjYXNlIFdlYktpdDo6UmVzcG9uc2VEaXNwb3NpdGlvbjo6Q2FuY2VsOgor
ICAgIGNhc2UgV2ViQ29yZTo6UG9saWN5QWN0aW9uOjpQb2xpY3lJZ25vcmU6CiAgICAgICAgIHJl
dHVybiBOU1VSTFNlc3Npb25SZXNwb25zZUNhbmNlbDsKLSAgICBjYXNlIFdlYktpdDo6UmVzcG9u
c2VEaXNwb3NpdGlvbjo6QWxsb3c6CisgICAgY2FzZSBXZWJDb3JlOjpQb2xpY3lBY3Rpb246OlBv
bGljeVVzZToKICAgICAgICAgcmV0dXJuIE5TVVJMU2Vzc2lvblJlc3BvbnNlQWxsb3c7Ci0gICAg
Y2FzZSBXZWJLaXQ6OlJlc3BvbnNlRGlzcG9zaXRpb246OkJlY29tZURvd25sb2FkOgorICAgIGNh
c2UgV2ViQ29yZTo6UG9saWN5QWN0aW9uOjpQb2xpY3lEb3dubG9hZDoKICAgICAgICAgcmV0dXJu
IE5TVVJMU2Vzc2lvblJlc3BvbnNlQmVjb21lRG93bmxvYWQ7CiAgICAgfQogfQpAQCAtMTQxLDkg
KzE0Myw5IEBAIC0gKHZvaWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2kKICAgICAg
ICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgICAgICBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlIHJlc291cmNlUmVzcG9uc2UocmVzcG9uc2UpOwogICAgICAgICAgICAgYXV0
byBjb21wbGV0aW9uSGFuZGxlckNvcHkgPSBCbG9ja19jb3B5KGNvbXBsZXRpb25IYW5kbGVyKTsK
LSAgICAgICAgICAgIGNsaWVudC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc291cmNlUmVzcG9uc2Us
IFtjb21wbGV0aW9uSGFuZGxlckNvcHldKFdlYktpdDo6UmVzcG9uc2VEaXNwb3NpdGlvbiByZXNw
b25zZURpc3Bvc2l0aW9uKQorICAgICAgICAgICAgY2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2Uo
cmVzb3VyY2VSZXNwb25zZSwgW2NvbXBsZXRpb25IYW5kbGVyQ29weV0oV2ViQ29yZTo6UG9saWN5
QWN0aW9uIHBvbGljeUFjdGlvbikKICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyQ29weSh0b05TVVJMU2Vzc2lvblJlc3BvbnNlRGlzcG9zaXRp
b24ocmVzcG9uc2VEaXNwb3NpdGlvbikpOworICAgICAgICAgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlckNvcHkodG9OU1VSTFNlc3Npb25SZXNwb25zZURpc3Bvc2l0aW9uKHBvbGljeUFjdGlv
bikpOwogICAgICAgICAgICAgICAgICAgICBCbG9ja19yZWxlYXNlKGNvbXBsZXRpb25IYW5kbGVy
Q29weSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgKTsKQEAgLTE2MSw2ICsxNjMs
MjYgQEAgLSAodm9pZClVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilzZXNzaQogICAgIH0KIH0K
IAorLSAodm9pZClVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilzZXNzaW9uIGRvd25sb2FkVGFz
azooTlNVUkxTZXNzaW9uRG93bmxvYWRUYXNrICopZG93bmxvYWRUYXNrIGRpZEZpbmlzaERvd25s
b2FkaW5nVG9VUkw6KE5TVVJMICopbG9jYXRpb24KK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCistICh2b2lkKVVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXNlc3Npb24gZG93bmxvYWRU
YXNrOihOU1VSTFNlc3Npb25Eb3dubG9hZFRhc2sgKilkb3dubG9hZFRhc2sgZGlkV3JpdGVEYXRh
OihpbnQ2NF90KWJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzV3JpdHRlbjooaW50NjRfdCl0b3RhbEJ5
dGVzV3JpdHRlbiB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOihpbnQ2NF90KXRvdGFsQnl0ZXNF
eHBlY3RlZFRvV3JpdGUKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCistICh2b2lkKVVS
TFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXNlc3Npb24gZG93bmxvYWRUYXNrOihOU1VSTFNlc3Np
b25Eb3dubG9hZFRhc2sgKilkb3dubG9hZFRhc2sgZGlkUmVzdW1lQXRPZmZzZXQ6KGludDY0X3Qp
ZmlsZU9mZnNldCBleHBlY3RlZFRvdGFsQnl0ZXM6KGludDY0X3QpZXhwZWN0ZWRUb3RhbEJ5dGVz
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworLSAodm9pZClVUkxTZXNzaW9uOihOU1VS
TFNlc3Npb24gKilzZXNzaW9uIGRhdGFUYXNrOihOU1VSTFNlc3Npb25EYXRhVGFzayAqKWRhdGFU
YXNrIGRpZEJlY29tZURvd25sb2FkVGFzazooTlNVUkxTZXNzaW9uRG93bmxvYWRUYXNrICopZG93
bmxvYWRUYXNrCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogQGVuZAogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BdXRoZW50aWNhdGlvbi9B
dXRoZW50aWNhdGlvbk1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1No
YXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuY3BwCShyZXZpc2lvbiAx
OTI0OTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGlj
YXRpb25NYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk0LDIzICsxOTQsMjUgQEAgdm9p
ZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OnVzZUNyZWRlbnRpYQogICAgIGlmICh0cnlVc2VDZXJ0
aWZpY2F0ZUluZm9Gb3JDaGFsbGVuZ2UoY2hhbGxlbmdlLmNoYWxsZW5nZSwgY2VydGlmaWNhdGVJ
bmZvKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgQXV0aGVudGljYXRpb25DbGllbnQqIGNvcmVD
bGllbnQgPSBjaGFsbGVuZ2UuY2hhbGxlbmdlLmF1dGhlbnRpY2F0aW9uQ2xpZW50KCk7CiAjaWYg
VVNFKE5FVFdPUktfU0VTU0lPTikKICAgICAvLyBJZiB0aGVyZSBpcyBhIGNvbXBsZXRpb24gaGFu
ZGxlciwgdGhlbiB0aGVyZSBpcyBubyBBdXRoZW50aWNhdGlvbkNsaWVudC4KICAgICAvLyBGSVhN
RTogUmVtb3ZlIHRoZSB1c2Ugb2YgQXV0aGVudGljYXRpb25DbGllbnQgaW4gV2ViS2l0MiBvbmNl
IE5FVFdPUktfU0VTU0lPTiBpcyB1c2VkIGZvciBhbGwgbG9hZHMuCiAgICAgaWYgKGNoYWxsZW5n
ZS5jb21wbGV0aW9uSGFuZGxlcikgeworICAgICAgICBBU1NFUlQoIWNvcmVDbGllbnQpOwogICAg
ICAgICBjaGFsbGVuZ2UuY29tcGxldGlvbkhhbmRsZXIoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VE
aXNwb3NpdGlvbjo6VXNlQ3JlZGVudGlhbCwgY3JlZGVudGlhbCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9Ci0jZW5kaWYKLQotICAgIEF1dGhlbnRpY2F0aW9uQ2xpZW50KiBjb3JlQ2xpZW50ID0g
Y2hhbGxlbmdlLmNoYWxsZW5nZS5hdXRoZW50aWNhdGlvbkNsaWVudCgpOworI2Vsc2UKICAgICBp
ZiAoIWNvcmVDbGllbnQpIHsKICAgICAgICAgLy8gRklYTUU6IFRoZSBhdXRoZW50aWNhdGlvbiBj
bGllbnQgaXMgbnVsbCBmb3IgZG93bmxvYWRzLCBidXQgaXQgY2FuIGFsc28gYmUgbnVsbCBmb3Ig
Y2FuY2VsZWQgbG9hZHMuCiAgICAgICAgIC8vIFdlIHNob3VsZCBub3QgY2FsbCBEb3dubG9hZDo6
cmVjZWl2ZWRDcmVkZW50aWFsIGluIHRoZSBsYXR0ZXIgY2FzZS4KICAgICAgICAgRG93bmxvYWQ6
OnJlY2VpdmVkQ3JlZGVudGlhbChjaGFsbGVuZ2UuY2hhbGxlbmdlLCBjcmVkZW50aWFsKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KKyNlbmRpZgogCisgICAgQVNTRVJUKGNvcmVDbGllbnQpOwog
ICAgIGNvcmVDbGllbnQtPnJlY2VpdmVkQ3JlZGVudGlhbChjaGFsbGVuZ2UuY2hhbGxlbmdlLCBj
cmVkZW50aWFsKTsKIH0KIApAQCAtMjI3LDIxICsyMjksMjMgQEAgdm9pZCBBdXRoZW50aWNhdGlv
bk1hbmFnZXI6OmNvbnRpbnVlV2l0aAogICAgIGF1dG8gY2hhbGxlbmdlID0gbV9jaGFsbGVuZ2Vz
LnRha2UoY2hhbGxlbmdlSUQpOwogICAgIEFTU0VSVCghY2hhbGxlbmdlLmNoYWxsZW5nZS5pc051
bGwoKSk7CiAKKyAgICBBdXRoZW50aWNhdGlvbkNsaWVudCogY29yZUNsaWVudCA9IGNoYWxsZW5n
ZS5jaGFsbGVuZ2UuYXV0aGVudGljYXRpb25DbGllbnQoKTsKICNpZiBVU0UoTkVUV09SS19TRVNT
SU9OKQogICAgIGlmIChjaGFsbGVuZ2UuY29tcGxldGlvbkhhbmRsZXIpIHsKKyAgICAgICAgQVNT
RVJUKCFjb3JlQ2xpZW50KTsKICAgICAgICAgY2hhbGxlbmdlLmNvbXBsZXRpb25IYW5kbGVyKEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlVzZUNyZWRlbnRpYWwsIENyZWRlbnRp
YWwoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0jZW5kaWYKLQotICAgIEF1dGhlbnRpY2F0
aW9uQ2xpZW50KiBjb3JlQ2xpZW50ID0gY2hhbGxlbmdlLmNoYWxsZW5nZS5hdXRoZW50aWNhdGlv
bkNsaWVudCgpOworI2Vsc2UKICAgICBpZiAoIWNvcmVDbGllbnQpIHsKICAgICAgICAgLy8gRklY
TUU6IFRoZSBhdXRoZW50aWNhdGlvbiBjbGllbnQgaXMgbnVsbCBmb3IgZG93bmxvYWRzLCBidXQg
aXQgY2FuIGFsc28gYmUgbnVsbCBmb3IgY2FuY2VsZWQgbG9hZHMuCiAgICAgICAgIC8vIFdlIHNo
b3VsZCBub3QgY2FsbCBEb3dubG9hZDo6cmVjZWl2ZWRDcmVkZW50aWFsIGluIHRoZSBsYXR0ZXIg
Y2FzZS4KICAgICAgICAgRG93bmxvYWQ6OnJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0
Q3JlZGVudGlhbChjaGFsbGVuZ2UuY2hhbGxlbmdlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
KyNlbmRpZgogCisgICAgQVNTRVJUKGNvcmVDbGllbnQpOwogICAgIGNvcmVDbGllbnQtPnJlY2Vp
dmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlhbChjaGFsbGVuZ2UuY2hhbGxlbmdl
KTsKIH0KIApAQCAtMjU4LDIxICsyNjIsMjMgQEAgdm9pZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6
OmNhbmNlbFNpbmdsZQogICAgIGF1dG8gY2hhbGxlbmdlID0gbV9jaGFsbGVuZ2VzLnRha2UoY2hh
bGxlbmdlSUQpOwogICAgIEFTU0VSVCghY2hhbGxlbmdlLmNoYWxsZW5nZS5pc051bGwoKSk7CiAK
KyAgICBBdXRoZW50aWNhdGlvbkNsaWVudCogY29yZUNsaWVudCA9IGNoYWxsZW5nZS5jaGFsbGVu
Z2UuYXV0aGVudGljYXRpb25DbGllbnQoKTsKICNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogICAg
IGlmIChjaGFsbGVuZ2UuY29tcGxldGlvbkhhbmRsZXIpIHsKKyAgICAgICAgQVNTRVJUKCFjb3Jl
Q2xpZW50KTsKICAgICAgICAgY2hhbGxlbmdlLmNvbXBsZXRpb25IYW5kbGVyKEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OkNhbmNlbCwgQ3JlZGVudGlhbCgpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KLSNlbmRpZgotCi0gICAgQXV0aGVudGljYXRpb25DbGllbnQqIGNvcmVD
bGllbnQgPSBjaGFsbGVuZ2UuY2hhbGxlbmdlLmF1dGhlbnRpY2F0aW9uQ2xpZW50KCk7CisjZWxz
ZQogICAgIGlmICghY29yZUNsaWVudCkgewogICAgICAgICAvLyBGSVhNRTogVGhlIGF1dGhlbnRp
Y2F0aW9uIGNsaWVudCBpcyBudWxsIGZvciBkb3dubG9hZHMsIGJ1dCBpdCBjYW4gYWxzbyBiZSBu
dWxsIGZvciBjYW5jZWxlZCBsb2Fkcy4KICAgICAgICAgLy8gV2Ugc2hvdWxkIG5vdCBjYWxsIERv
d25sb2FkOjpyZWNlaXZlZENyZWRlbnRpYWwgaW4gdGhlIGxhdHRlciBjYXNlLgogICAgICAgICBE
b3dubG9hZDo6cmVjZWl2ZWRDYW5jZWxsYXRpb24oY2hhbGxlbmdlLmNoYWxsZW5nZSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CisjZW5kaWYKIAorICAgIEFTU0VSVChjb3JlQ2xpZW50KTsKICAg
ICBjb3JlQ2xpZW50LT5yZWNlaXZlZENhbmNlbGxhdGlvbihjaGFsbGVuZ2UuY2hhbGxlbmdlKTsK
IH0KIApAQCAtMjg5LDIxICsyOTUsMjMgQEAgdm9pZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OnBl
cmZvcm1EZWZhdQogICAgIGF1dG8gY2hhbGxlbmdlID0gbV9jaGFsbGVuZ2VzLnRha2UoY2hhbGxl
bmdlSUQpOwogICAgIEFTU0VSVCghY2hhbGxlbmdlLmNoYWxsZW5nZS5pc051bGwoKSk7CiAKKyAg
ICBBdXRoZW50aWNhdGlvbkNsaWVudCogY29yZUNsaWVudCA9IGNoYWxsZW5nZS5jaGFsbGVuZ2Uu
YXV0aGVudGljYXRpb25DbGllbnQoKTsKICNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogICAgIGlm
IChjaGFsbGVuZ2UuY29tcGxldGlvbkhhbmRsZXIpIHsKKyAgICAgICAgQVNTRVJUKCFjb3JlQ2xp
ZW50KTsKICAgICAgICAgY2hhbGxlbmdlLmNvbXBsZXRpb25IYW5kbGVyKEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlRGlzcG9zaXRpb246OlBlcmZvcm1EZWZhdWx0SGFuZGxpbmcsIENyZWRlbnRpYWwo
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0jZW5kaWYKLQotICAgIEF1dGhlbnRpY2F0aW9u
Q2xpZW50KiBjb3JlQ2xpZW50ID0gY2hhbGxlbmdlLmNoYWxsZW5nZS5hdXRoZW50aWNhdGlvbkNs
aWVudCgpOworI2Vsc2UKICAgICBpZiAoIWNvcmVDbGllbnQpIHsKICAgICAgICAgLy8gRklYTUU6
IFRoZSBhdXRoZW50aWNhdGlvbiBjbGllbnQgaXMgbnVsbCBmb3IgZG93bmxvYWRzLCBidXQgaXQg
Y2FuIGFsc28gYmUgbnVsbCBmb3IgY2FuY2VsZWQgbG9hZHMuCiAgICAgICAgIC8vIFdlIHNob3Vs
ZCBub3QgY2FsbCBEb3dubG9hZDo6cmVjZWl2ZWRDcmVkZW50aWFsIGluIHRoZSBsYXR0ZXIgY2Fz
ZS4KICAgICAgICAgRG93bmxvYWQ6OnJlY2VpdmVkUmVxdWVzdFRvUGVyZm9ybURlZmF1bHRIYW5k
bGluZyhjaGFsbGVuZ2UuY2hhbGxlbmdlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyNlbmRp
ZgogCisgICAgQVNTRVJUKGNvcmVDbGllbnQpOwogICAgIGNvcmVDbGllbnQtPnJlY2VpdmVkUmVx
dWVzdFRvUGVyZm9ybURlZmF1bHRIYW5kbGluZyhjaGFsbGVuZ2UuY2hhbGxlbmdlKTsKIH0KIApA
QCAtMzIwLDIxICszMjgsMjMgQEAgdm9pZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OnJlamVjdFBy
b3RlYwogICAgIGF1dG8gY2hhbGxlbmdlID0gbV9jaGFsbGVuZ2VzLnRha2UoY2hhbGxlbmdlSUQp
OwogICAgIEFTU0VSVCghY2hhbGxlbmdlLmNoYWxsZW5nZS5pc051bGwoKSk7CiAKKyAgICBBdXRo
ZW50aWNhdGlvbkNsaWVudCogY29yZUNsaWVudCA9IGNoYWxsZW5nZS5jaGFsbGVuZ2UuYXV0aGVu
dGljYXRpb25DbGllbnQoKTsKICNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogICAgIGlmIChjaGFs
bGVuZ2UuY29tcGxldGlvbkhhbmRsZXIpIHsKKyAgICAgICAgQVNTRVJUKCFjb3JlQ2xpZW50KTsK
ICAgICAgICAgY2hhbGxlbmdlLmNvbXBsZXRpb25IYW5kbGVyKEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlRGlzcG9zaXRpb246OlJlamVjdFByb3RlY3Rpb25TcGFjZSwgQ3JlZGVudGlhbCgpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KLSNlbmRpZgotCi0gICAgQXV0aGVudGljYXRpb25DbGllbnQq
IGNvcmVDbGllbnQgPSBjaGFsbGVuZ2UuY2hhbGxlbmdlLmF1dGhlbnRpY2F0aW9uQ2xpZW50KCk7
CisjZWxzZQogICAgIGlmICghY29yZUNsaWVudCkgewogICAgICAgICAvLyBGSVhNRTogVGhlIGF1
dGhlbnRpY2F0aW9uIGNsaWVudCBpcyBudWxsIGZvciBkb3dubG9hZHMsIGJ1dCBpdCBjYW4gYWxz
byBiZSBudWxsIGZvciBjYW5jZWxlZCBsb2Fkcy4KICAgICAgICAgLy8gV2Ugc2hvdWxkIG5vdCBj
YWxsIERvd25sb2FkOjpyZWNlaXZlZENyZWRlbnRpYWwgaW4gdGhlIGxhdHRlciBjYXNlLgogICAg
ICAgICBEb3dubG9hZDo6cmVjZWl2ZWRDaGFsbGVuZ2VSZWplY3Rpb24oY2hhbGxlbmdlLmNoYWxs
ZW5nZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisjZW5kaWYKIAorICAgIEFTU0VSVChjb3Jl
Q2xpZW50KTsKICAgICBjb3JlQ2xpZW50LT5yZWNlaXZlZENoYWxsZW5nZVJlamVjdGlvbihjaGFs
bGVuZ2UuY2hhbGxlbmdlKTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25s
b2Fkcy9Eb3dubG9hZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3du
bG9hZHMvRG93bmxvYWQuaAkocmV2aXNpb24gMTkyNDk3KQorKysgU291cmNlL1dlYktpdDIvU2hh
cmVkL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCSh3b3JraW5nIGNvcHkpCkBAIC02NCw2ICs2NCw3IEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBEb3dubG9hZEF1dGhlbnRpY2F0aW9uQ2xpZW50
OwogY2xhc3MgRG93bmxvYWRNYW5hZ2VyOworY2xhc3MgTmV0d29ya0RhdGFUYXNrOwogY2xhc3Mg
V2ViUGFnZTsKIAogY2xhc3MgRG93bmxvYWQgOiBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyIHsK
QEAgLTczLDcgKzc0LDkgQEAgcHVibGljOgogICAgIH5Eb3dubG9hZCgpOwogCiAgICAgdm9pZCBz
dGFydCgpOworI2lmICFVU0UoTkVUV09SS19TRVNTSU9OKQogICAgIHZvaWQgc3RhcnRXaXRoSGFu
ZGxlKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYpOworI2VuZGlmCiAgICAgdm9pZCByZXN1bWUoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSYpOwogICAgIHZvaWQgY2FuY2VsKCk7CiAKQEAgLTEyMCw5ICsxMjMsMTMgQEAgcHJp
dmF0ZToKICAgICBSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gbV9zYW5kYm94RXh0ZW5zaW9uOwog
CiAjaWYgUExBVEZPUk0oQ09DT0EpCisjaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKKyAgICAvLyBG
SVhNRTogVGhpcyBuZWVkcyBtZW1iZXIgdmFyaWFibGVzLgorI2Vsc2UKICAgICBSZXRhaW5QdHI8
TlNVUkxEb3dubG9hZD4gbV9uc1VSTERvd25sb2FkOwogICAgIFJldGFpblB0cjxXS0Rvd25sb2Fk
QXNEZWxlZ2F0ZT4gbV9kZWxlZ2F0ZTsKICNlbmRpZgorI2VuZGlmCiAjaWYgVVNFKENGTkVUV09S
SykKICAgICBSZXRhaW5QdHI8Q0ZVUkxEb3dubG9hZFJlZj4gbV9kb3dubG9hZDsKICAgICBSZWZQ
dHI8RG93bmxvYWRBdXRoZW50aWNhdGlvbkNsaWVudD4gbV9hdXRoZW50aWNhdGlvbkNsaWVudDsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL0Rvd25sb2Fk
TWFuYWdlci5jcHAJKHJldmlzaW9uIDE5MjQ5NykKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9E
b3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcs
OCBAQAogI2luY2x1ZGUgIkRvd25sb2FkTWFuYWdlci5oIgogCiAjaW5jbHVkZSAiRG93bmxvYWQu
aCIKKyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwpAQCAtMzgsMTUgKzQwLDIwIEBAIERvd25sb2FkTWFuYWdlcjo6RG93
bmxvYWRNYW5hZ2VyKENsaWVudCoKIHsKIH0KIAotdm9pZCBEb3dubG9hZE1hbmFnZXI6OnN0YXJ0
RG93bmxvYWQodWludDY0X3QgZG93bmxvYWRJRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0KQordm9pZCBEb3dubG9hZE1hbmFnZXI6OnN0YXJ0RG93bmxvYWQoU2Vzc2lvbklEIHNlc3Np
b25JRCwgdWludDY0X3QgZG93bmxvYWRJRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
KQogeworI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyNl
bHNlCiAgICAgYXV0byBkb3dubG9hZCA9IHN0ZDo6bWFrZV91bmlxdWU8RG93bmxvYWQ+KCp0aGlz
LCBkb3dubG9hZElELCByZXF1ZXN0KTsKICAgICBkb3dubG9hZC0+c3RhcnQoKTsKIAogICAgIEFT
U0VSVCghbV9kb3dubG9hZHMuY29udGFpbnMoZG93bmxvYWRJRCkpOwogICAgIG1fZG93bmxvYWRz
LmFkZChkb3dubG9hZElELCBXVEY6Om1vdmUoZG93bmxvYWQpKTsKKyNlbmRpZgogfQogCisjaWYg
IVVTRShORVRXT1JLX1NFU1NJT04pCiB2b2lkIERvd25sb2FkTWFuYWdlcjo6Y29udmVydEhhbmRs
ZVRvRG93bmxvYWQodWludDY0X3QgZG93bmxvYWRJRCwgUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSkKIHsKICAgICBhdXRvIGRvd25sb2FkID0gc3RkOjptYWtlX3VuaXF1ZTxEb3dubG9h
ZD4oKnRoaXMsIGRvd25sb2FkSUQsIHJlcXVlc3QpOwpAQCAtNTUsMzAgKzYyLDQzIEBAIHZvaWQg
RG93bmxvYWRNYW5hZ2VyOjpjb252ZXJ0SGFuZGxlVG9Eb3cKICAgICBBU1NFUlQoIW1fZG93bmxv
YWRzLmNvbnRhaW5zKGRvd25sb2FkSUQpKTsKICAgICBtX2Rvd25sb2Fkcy5hZGQoZG93bmxvYWRJ
RCwgV1RGOjptb3ZlKGRvd25sb2FkKSk7CiB9CisjZW5kaWYKIAogdm9pZCBEb3dubG9hZE1hbmFn
ZXI6OnJlc3VtZURvd25sb2FkKHVpbnQ2NF90IGRvd25sb2FkSUQsIGNvbnN0IElQQzo6RGF0YVJl
ZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGUmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCiB7CisjaWYgVVNFKE5FVFdP
UktfU0VTU0lPTikKKyAgICBub3RJbXBsZW1lbnRlZCgpOworI2Vsc2UKICAgICAvLyBEb3dubG9h
ZDo6cmVzdW1lKCkgaXMgcmVzcG9uc2libGUgZm9yIHNldHRpbmcgdGhlIERvd25sb2FkJ3MgcmVz
b3VyY2UgcmVxdWVzdC4KICAgICBhdXRvIGRvd25sb2FkID0gc3RkOjptYWtlX3VuaXF1ZTxEb3du
bG9hZD4oKnRoaXMsIGRvd25sb2FkSUQsIFJlc291cmNlUmVxdWVzdCgpKTsKIAogICAgIGRvd25s
b2FkLT5yZXN1bWUocmVzdW1lRGF0YSwgcGF0aCwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7CiAg
ICAgQVNTRVJUKCFtX2Rvd25sb2Fkcy5jb250YWlucyhkb3dubG9hZElEKSk7CiAgICAgbV9kb3du
bG9hZHMuYWRkKGRvd25sb2FkSUQsIFdURjo6bW92ZShkb3dubG9hZCkpOworI2VuZGlmCiB9CiAK
IHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpjYW5jZWxEb3dubG9hZCh1aW50NjRfdCBkb3dubG9hZElE
KQogeworI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyNl
bHNlCiAgICAgRG93bmxvYWQqIGRvd25sb2FkID0gbV9kb3dubG9hZHMuZ2V0KGRvd25sb2FkSUQp
OwogICAgIGlmICghZG93bmxvYWQpCiAgICAgICAgIHJldHVybjsKIAogICAgIGRvd25sb2FkLT5j
YW5jZWwoKTsKKyNlbmRpZgogfQogCiB2b2lkIERvd25sb2FkTWFuYWdlcjo6ZG93bmxvYWRGaW5p
c2hlZChEb3dubG9hZCogZG93bmxvYWQpCiB7CisjaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworI2Vsc2UKICAgICBBU1NFUlQobV9kb3dubG9hZHMuY29udGFp
bnMoZG93bmxvYWQtPmRvd25sb2FkSUQoKSkpOwogICAgIG1fZG93bmxvYWRzLnJlbW92ZShkb3du
bG9hZC0+ZG93bmxvYWRJRCgpKTsKKyNlbmRpZgogfQogCiB2b2lkIERvd25sb2FkTWFuYWdlcjo6
ZGlkQ3JlYXRlRG93bmxvYWQoKQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fk
cy9Eb3dubG9hZE1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
RG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oCShyZXZpc2lvbiAxOTI0OTcpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIERvd25sb2FkTWFuYWdlcl9oCiAKICNpbmNsdWRl
ICJTYW5kYm94RXh0ZW5zaW9uLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5o
PgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNp
bmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KQEAgLTM1LDYgKzM2LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgUmVzb3VyY2VIYW5kbGU7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBj
bGFzcyBSZXNvdXJjZVJlc3BvbnNlOworY2xhc3MgU2Vzc2lvbklEOwogfQogCiBuYW1lc3BhY2Ug
SVBDIHsKQEAgLTQ2LDYgKzQ4LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEF1dGhl
bnRpY2F0aW9uTWFuYWdlcjsKIGNsYXNzIERvd25sb2FkOworY2xhc3MgTmV0d29ya0RhdGFUYXNr
OwogY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgRG93bmxvYWRNYW5hZ2VyIHsKQEAgLTY0LDE2ICs2
NywyMyBAQCBwdWJsaWM6CiAKICAgICBleHBsaWNpdCBEb3dubG9hZE1hbmFnZXIoQ2xpZW50Kik7
CiAKLSAgICB2b2lkIHN0YXJ0RG93bmxvYWQodWludDY0X3QgZG93bmxvYWRJRCwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgdm9pZCBzdGFydERvd25sb2FkKFdlYkNvcmU6
OlNlc3Npb25JRCwgdWludDY0X3QgZG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0Jik7CisjaWYgIVVTRShORVRXT1JLX1NFU1NJT04pCiAgICAgdm9pZCBjb252ZXJ0SGFu
ZGxlVG9Eb3dubG9hZCh1aW50NjRfdCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZUhhbmRs
ZSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmKTsKKyNlbmRpZgogCiAgICAgdm9pZCByZXN1bWVEb3dubG9hZCh1aW50NjRf
dCBkb3dubG9hZElELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0
IFN0cmluZyYgcGF0aCwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJik7CiAKICAgICB2
b2lkIGNhbmNlbERvd25sb2FkKHVpbnQ2NF90IGRvd25sb2FkSUQpOwogCiAgICAgdm9pZCBkb3du
bG9hZEZpbmlzaGVkKERvd25sb2FkKik7CisjaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKKyAgICBi
b29sIGlzRG93bmxvYWRpbmcoKSBjb25zdCB7IG5vdEltcGxlbWVudGVkKCk7IHJldHVybiBmYWxz
ZTsgfQorICAgIHVpbnQ2NF90IGFjdGl2ZURvd25sb2FkQ291bnQoKSBjb25zdCB7IG5vdEltcGxl
bWVudGVkKCk7IHJldHVybiAwOyB9CisjZWxzZQogICAgIGJvb2wgaXNEb3dubG9hZGluZygpIGNv
bnN0IHsgcmV0dXJuICFtX2Rvd25sb2Fkcy5pc0VtcHR5KCk7IH0KICAgICB1aW50NjRfdCBhY3Rp
dmVEb3dubG9hZENvdW50KCkgY29uc3QgeyByZXR1cm4gbV9kb3dubG9hZHMuc2l6ZSgpOyB9Cisj
ZW5kaWYKIAogICAgIHZvaWQgZGlkQ3JlYXRlRG93bmxvYWQoKTsKICAgICB2b2lkIGRpZERlc3Ry
b3lEb3dubG9hZCgpOwpAQCAtODMsNyArOTMsOSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAg
Q2xpZW50KiBtX2NsaWVudDsKKyNpZiAhVVNFKE5FVFdPUktfU0VTU0lPTikKICAgICBIYXNoTWFw
PHVpbnQ2NF90LCBzdGQ6OnVuaXF1ZV9wdHI8RG93bmxvYWQ+PiBtX2Rvd25sb2FkczsKKyNlbmRp
ZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvRG93bmxvYWRzL21hYy9Eb3dubG9hZE1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvRG93bmxvYWRzL21hYy9Eb3dubG9hZE1hYy5tbQkocmV2aXNpb24gMTkyNDk3
KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9tYWMvRG93bmxvYWRNYWMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2lt
cG9ydCAiRG93bmxvYWQuaCIKIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShNQUMp
ICYmICFVU0UoTkVUV09SS19TRVNTSU9OKQogCiAjaW1wb3J0IDxXZWJDb3JlL0F1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uTWFjLmg+CkBA
IC01OCw4ICs1OCwxMCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdm9pZCBEb3dubG9hZDo6c3Rh
cnQoKQogeworI2lmICFVU0UoTkVUV09SS19TRVNTSU9OKQogICAgIEFTU0VSVCghbV9uc1VSTERv
d25sb2FkKTsKICAgICBBU1NFUlQoIW1fZGVsZWdhdGUpOworI2VuZGlmCiAKICAgICBtX2RlbGVn
YXRlID0gYWRvcHROUyhbW1dLRG93bmxvYWRBc0RlbGVnYXRlIGFsbG9jXSBpbml0V2l0aERvd25s
b2FkOnRoaXNdKTsKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCkBAIC03MSw2ICs3Myw3
IEBAIHZvaWQgRG93bmxvYWQ6OnN0YXJ0KCkKICAgICBbbV9uc1VSTERvd25sb2FkIHNldERlbGV0
ZXNGaWxlVXBvbkZhaWx1cmU6Tk9dOwogfQogCisjaWYgIVVTRShORVRXT1JLX1NFU1NJT04pCiB2
b2lkIERvd25sb2FkOjpzdGFydFdpdGhIYW5kbGUoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgQVNTRVJUKCFtX25zVVJMRG93
bmxvYWQpOwpAQCAtODYsNiArODksNyBAQCB2b2lkIERvd25sb2FkOjpzdGFydFdpdGhIYW5kbGUo
UmVzb3VyY2VICiAgICAgLy8gRklYTUU6IEFsbG93IHRoaXMgdG8gYmUgY2hhbmdlZCBieSB0aGUg
Y2xpZW50LgogICAgIFttX25zVVJMRG93bmxvYWQgc2V0RGVsZXRlc0ZpbGVVcG9uRmFpbHVyZTpO
T107CiB9CisjZW5kaWYKIAogdm9pZCBEb3dubG9hZDo6cmVzdW1lKGNvbnN0IElQQzo6RGF0YVJl
ZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGUmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCiB7CkBAIC0zMDgsNCArMzEy
LDQgQEAgLSAodm9pZClkb3dubG9hZDooTlNVUkxEb3dubG9hZCAqKWRvd25sbwogCiBAZW5kCiAK
LSNlbmRpZiAvLyBQTEFURk9STShNQUMpCisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKSAmJiAhVVNF
KE5FVFdPUktfU0VTU0lPTikKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmNwcAkocmV2aXNpb24gMTkyNDk3KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODcxLDE2ICs4NzEsMTcg
QEAgRG93bmxvYWRQcm94eSogV2ViUHJvY2Vzc1Bvb2w6OmRvd25sb2FkKAogewogICAgIERvd25s
b2FkUHJveHkqIGRvd25sb2FkUHJveHkgPSBjcmVhdGVEb3dubG9hZFByb3h5KHJlcXVlc3QpOwog
ICAgIHVpbnQ2NF90IGluaXRpYXRpbmdQYWdlSUQgPSBpbml0aWF0aW5nUGFnZSA/IGluaXRpYXRp
bmdQYWdlLT5wYWdlSUQoKSA6IDA7CisgICAgU2Vzc2lvbklEIHNlc3Npb25JRCA9IGluaXRpYXRp
bmdQYWdlID8gaW5pdGlhdGluZ1BhZ2UtPnNlc3Npb25JRCgpIDogU2Vzc2lvbklEOjpkZWZhdWx0
U2Vzc2lvbklEKCk7CiAKICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIGlmICh1c2Vz
TmV0d29ya1Byb2Nlc3MoKSAmJiBuZXR3b3JrUHJvY2VzcygpKSB7CiAgICAgICAgIC8vIEZJWE1F
IChOZXR3b3JrUHJvY2Vzcyk6IFJlcGxpY2F0ZSB3aGF0ZXZlciBGcmFtZUxvYWRlcjo6c2V0T3Jp
Z2luYWxVUkxGb3JEb3dubG9hZFJlcXVlc3QgZG9lcyB3aXRoIHRoZSByZXF1ZXN0IGhlcmUuCi0g
ICAgICAgIG5ldHdvcmtQcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpE
b3dubG9hZFJlcXVlc3QoZG93bmxvYWRQcm94eS0+ZG93bmxvYWRJRCgpLCByZXF1ZXN0KSwgMCk7
CisgICAgICAgIG5ldHdvcmtQcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
OjpEb3dubG9hZFJlcXVlc3Qoc2Vzc2lvbklELCBkb3dubG9hZFByb3h5LT5kb3dubG9hZElEKCks
IHJlcXVlc3QpLCAwKTsKICAgICAgICAgcmV0dXJuIGRvd25sb2FkUHJveHk7CiAgICAgfQogI2Vu
ZGlmCiAKLSAgICBtX3Byb2Nlc3Nlc1swXS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6RG93
bmxvYWRSZXF1ZXN0KGRvd25sb2FkUHJveHktPmRvd25sb2FkSUQoKSwgaW5pdGlhdGluZ1BhZ2VJ
RCwgcmVxdWVzdCksIDApOworICAgIG1fcHJvY2Vzc2VzWzBdLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzOjpEb3dubG9hZFJlcXVlc3Qoc2Vzc2lvbklELCBkb3dubG9hZFByb3h5LT5kb3dubG9h
ZElEKCksIGluaXRpYXRpbmdQYWdlSUQsIHJlcXVlc3QpLCAwKTsKICAgICByZXR1cm4gZG93bmxv
YWRQcm94eTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwCShyZXZpc2lvbiAxOTI0OTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTA4LDcgKzExMDgsNyBAQCB2b2lkIFdlYlBy
b2Nlc3M6OmVuc3VyZVdlYlRvRGF0YWJhc2VQcm9jCiAKICNlbmRpZiAvLyBFTkFCTEVEKERBVEFC
QVNFX1BST0NFU1MpCiAKLXZvaWQgV2ViUHJvY2Vzczo6ZG93bmxvYWRSZXF1ZXN0KHVpbnQ2NF90
IGRvd25sb2FkSUQsIHVpbnQ2NF90IGluaXRpYXRpbmdQYWdlSUQsIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCkKK3ZvaWQgV2ViUHJvY2Vzczo6ZG93bmxvYWRSZXF1ZXN0KFNlc3Npb25J
RCBzZXNzaW9uSUQsIHVpbnQ2NF90IGRvd25sb2FkSUQsIHVpbnQ2NF90IGluaXRpYXRpbmdQYWdl
SUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBXZWJQYWdlKiBpbml0
aWF0aW5nUGFnZSA9IGluaXRpYXRpbmdQYWdlSUQgPyB3ZWJQYWdlKGluaXRpYXRpbmdQYWdlSUQp
IDogMDsKIApAQCAtMTExNiw3ICsxMTE2LDcgQEAgdm9pZCBXZWJQcm9jZXNzOjpkb3dubG9hZFJl
cXVlc3QodWludDY0XwogICAgIGlmIChpbml0aWF0aW5nUGFnZSkKICAgICAgICAgaW5pdGlhdGlu
Z1BhZ2UtPm1haW5GcmFtZSgpLT5sb2FkZXIoKS5zZXRPcmlnaW5hbFVSTEZvckRvd25sb2FkUmVx
dWVzdChyZXF1ZXN0V2l0aE9yaWdpbmFsVVJMKTsKIAotICAgIGRvd25sb2FkTWFuYWdlcigpLnN0
YXJ0RG93bmxvYWQoZG93bmxvYWRJRCwgcmVxdWVzdFdpdGhPcmlnaW5hbFVSTCk7CisgICAgZG93
bmxvYWRNYW5hZ2VyKCkuc3RhcnREb3dubG9hZChzZXNzaW9uSUQsIGRvd25sb2FkSUQsIHJlcXVl
c3RXaXRoT3JpZ2luYWxVUkwpOwogfQogCiB2b2lkIFdlYlByb2Nlc3M6OnJlc3VtZURvd25sb2Fk
KHVpbnQ2NF90IGRvd25sb2FkSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0
YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246Okhh
bmRsZSYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKQEAgLTExNzUsNyArMTE3NSw3IEBAIHZvaWQg
V2ViUHJvY2Vzczo6cmVsZWFzZVBhZ2VDYWNoZSgpCiAgICAgUGFnZUNhY2hlOjpzaW5nbGV0b24o
KS5wcnVuZVRvU2l6ZU5vdygwLCBQcnVuaW5nUmVhc29uOjpNZW1vcnlQcmVzc3VyZSk7CiB9CiAK
LXZvaWQgV2ViUHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCB1aW50NjRfdCB3ZWJzaXRlRGF0YVR5cGVzLCB1aW50NjRfdCBjYWxsYmFja0lEKQor
dm9pZCBXZWJQcm9jZXNzOjpmZXRjaFdlYnNpdGVEYXRhKFNlc3Npb25JRCBzZXNzaW9uSUQsIHVp
bnQ2NF90IHdlYnNpdGVEYXRhVHlwZXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7CiAgICAgV2Vi
c2l0ZURhdGEgd2Vic2l0ZURhdGE7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5oCShyZXZpc2lvbiAxOTI0OTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtNjQsNiArNjQsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBDZXJ0aWZpY2F0ZUluZm87CiBjbGFzcyBQYWdlR3JvdXA7CiBjbGFz
cyBSZXNvdXJjZVJlcXVlc3Q7CitjbGFzcyBTZXNzaW9uSUQ7CiBzdHJ1Y3QgUGx1Z2luSW5mbzsK
IHN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CiB9CkBAIC0yNjIsNyArMjYzLDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHN0YXJ0TWVtb3J5U2FtcGxlcihjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGUmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBkb3VibGUpOwogICAgIHZvaWQgc3RvcE1lbW9y
eVNhbXBsZXIoKTsKIAotICAgIHZvaWQgZG93bmxvYWRSZXF1ZXN0KHVpbnQ2NF90IGRvd25sb2Fk
SUQsIHVpbnQ2NF90IGluaXRpYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYpOworICAgIHZvaWQgZG93bmxvYWRSZXF1ZXN0KFdlYkNvcmU6OlNlc3Npb25JRCwgdWlu
dDY0X3QgZG93bmxvYWRJRCwgdWludDY0X3QgaW5pdGlhdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgdm9pZCByZXN1bWVEb3dubG9hZCh1aW50NjRfdCBk
b3dubG9hZElELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0
cmluZyYgcGF0aCwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJik7CiAgICAgdm9pZCBj
YW5jZWxEb3dubG9hZCh1aW50NjRfdCBkb3dubG9hZElEKTsKIApJbmRleDogU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgkocmV2aXNpb24gMTky
NDk3KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmlu
CSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2NCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3Mg
TGVnYWN5UmVjZWl2ZXIgewogCiAgICAgIyBEb3dubG9hZHMuIFRoaXMgc2hvdWxkIHJlYWxseSBi
ZSBpbiBhIERvd25sb2FkLm1lc3NhZ2VzLmluLCBidXQgaXQgc2VlbWVkIHVubmVjZXNzYXJ5IHRv
IGNyZWF0ZSBhIG5ldyBmaWxlIGp1c3QgZm9yCiAgICAgIyB0aHJlZSBtZXNzYWdlcy4KLSAgICBE
b3dubG9hZFJlcXVlc3QodWludDY0X3QgZG93bmxvYWRJRCwgdWludDY0X3QgaW5pdGlhdGluZ1Bh
Z2VJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QpCisgICAgRG93bmxvYWRSZXF1
ZXN0KFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGRvd25sb2FkSUQsIHVp
bnQ2NF90IGluaXRpYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0
KQogICAgIFJlc3VtZURvd25sb2FkKHVpbnQ2NF90IGRvd25sb2FkSUQsIElQQzo6RGF0YVJlZmVy
ZW5jZSByZXN1bWVEYXRhLCBTdHJpbmcgcGF0aCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKICAgICBDYW5jZWxEb3dubG9hZCh1aW50NjRf
dCBkb3dubG9hZElEKQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAko
cmV2aXNpb24gMTkyNDk3KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNzUsOSAr
MTM3NSw5IEBAIGJvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNhbkNhY2hlUGFnZSgKICAgICBy
ZXR1cm4gIW1fZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXI7CiB9CiAKLXZvaWQgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChEb2N1bWVu
dExvYWRlciAqZG9jdW1lbnRMb2FkZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50Ojpjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQoRG9jdW1lbnRMb2FkZXIgKmRv
Y3VtZW50TG9hZGVyLCBTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewotICAgIG1fZnJh
bWUtPmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChkb2N1bWVudExvYWRlciwgcmVx
dWVzdCwgcmVzcG9uc2UpOworICAgIG1fZnJhbWUtPmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9E
b3dubG9hZChkb2N1bWVudExvYWRlciwgc2Vzc2lvbklELCByZXF1ZXN0LCByZXNwb25zZSk7CiB9
CiAKIFJlZlB0cjxGcmFtZT4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUZyYW1lKGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3du
ZXJFbGVtZW50LApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24g
MTkyNDk3KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCwxMCBAQAogCiAj
aW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlckNsaWVudC5oPgogCituYW1lc3BhY2UgV2ViQ29y
ZSB7CitjbGFzcyBTZXNzaW9uSUQ7Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBQ
bHVnaW5WaWV3OwpAQCAtMTg0LDcgKzE4OCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkQmVjb21lRnJhbWVzZXQoYm9vbCkgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFs
IGJvb2wgY2FuQ2FjaGVQYWdlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNv
bnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlcios
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgY29udmVydE1haW5SZXNvdXJj
ZUxvYWRUb0Rvd25sb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgV2ViQ29yZTo6U2Vzc2lv
bklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpG
cmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJiBuYW1l
LCBXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQqLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgYm9vbCBhbGxvd3NT
Y3JvbGxpbmcsIGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdodCkgb3ZlcnJpZGU7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAJ
KHJldmlzaW9uIDE5MjQ5NykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1NywxNyArMjU3LDI2IEBAIHZvaWQgV2Vi
RnJhbWU6OnN0YXJ0RG93bmxvYWQoY29uc3QgV2ViQ28KICAgICBtX3BvbGljeURvd25sb2FkSUQg
PSAwOwogCiAgICAgYXV0byYgd2ViUHJvY2VzcyA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpOwor
I2lmIFVTRShORVRXT1JLX1NFU1NJT04pCisgICAgQVNTRVJUKHdlYlByb2Nlc3MudXNlc05ldHdv
cmtQcm9jZXNzKCkpOworI2VuZGlmCisgICAgU2Vzc2lvbklEIHNlc3Npb25JRCA9IHBhZ2UoKSA/
IHBhZ2UoKS0+c2Vzc2lvbklEKCkgOiBTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKTsKICNp
ZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIGlmICh3ZWJQcm9jZXNzLnVzZXNOZXR3b3Jr
UHJvY2VzcygpKSB7Ci0gICAgICAgIHdlYlByb2Nlc3MubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
U3RhcnREb3dubG9hZChwYWdlKCktPnNlc3Npb25JRCgpLCBwb2xpY3lEb3dubG9hZElELCByZXF1
ZXN0KSwgMCk7CisgICAgICAgIHdlYlByb2Nlc3MubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVj
dGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U3Rh
cnREb3dubG9hZChzZXNzaW9uSUQsIHBvbGljeURvd25sb2FkSUQsIHJlcXVlc3QpLCAwKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgogCi0gICAgd2ViUHJvY2Vzcy5kb3dubG9hZE1h
bmFnZXIoKS5zdGFydERvd25sb2FkKHBvbGljeURvd25sb2FkSUQsIHJlcXVlc3QpOworI2lmIFVT
RShORVRXT1JLX1NFU1NJT04pCisgICAgLy8gVXNpbmcgTkVUV09SS19TRVNTSU9OIHJlcXVpcmVz
IHRoZSB1c2Ugb2YgYSBuZXR3b3JrIHByb2Nlc3MuCisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyNlbHNlCisgICAgd2ViUHJvY2Vzcy5kb3dubG9hZE1hbmFnZXIoKS5zdGFydERv
d25sb2FkKHNlc3Npb25JRCwgcG9saWN5RG93bmxvYWRJRCwgcmVxdWVzdCk7CisjZW5kaWYKIH0K
IAotdm9pZCBXZWJGcmFtZTo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKERvY3Vt
ZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3ZvaWQgV2ViRnJhbWU6OmNvbnZl
cnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2Fk
ZXIsIFNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgQVNTRVJUKG1fcG9saWN5
RG93bmxvYWRJRCk7CiAKQEAgLTI3OCw2ICsyODcsOSBAQCB2b2lkIFdlYkZyYW1lOjpjb252ZXJ0
TWFpblJlc291cmNlTG9hZFRvCiAKICAgICBhdXRvJiB3ZWJQcm9jZXNzID0gV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCk7CiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKKyNpZiBVU0UoTkVUV09S
S19TRVNTSU9OKQorICAgIEFTU0VSVCh3ZWJQcm9jZXNzLnVzZXNOZXR3b3JrUHJvY2VzcygpKTsK
KyNlbmRpZgogICAgIGlmICh3ZWJQcm9jZXNzLnVzZXNOZXR3b3JrUHJvY2VzcygpKSB7CiAgICAg
ICAgIC8vIFVzZSAwIHRvIGluZGljYXRlIHRoYXQgdGhlIHJlc291cmNlIGxvYWQgY2FuJ3QgYmUg
Y29udmVydGVkIGFuZCBhIG5ldyBkb3dubG9hZCBtdXN0IGJlIHN0YXJ0ZWQuCiAgICAgICAgIC8v
IFRoaXMgY2FuIGhhcHBlbiBpZiB0aGVyZSBpcyBubyBsb2FkZXIgYmVjYXVzZSB0aGUgbWFpbiBy
ZXNvdXJjZSBpcyBpbiB0aGUgV2ViQ29yZSBtZW1vcnkgY2FjaGUsCkBAIC0yODgsMjEgKzMwMCwy
OCBAQCB2b2lkIFdlYkZyYW1lOjpjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvCiAgICAgICAgIGVs
c2UKICAgICAgICAgICAgIG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyID0gMDsKIAotICAgICAg
ICB3ZWJQcm9jZXNzLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvbnZlcnRNYWluUmVzb3VyY2VM
b2FkVG9Eb3dubG9hZChtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgcG9saWN5RG93bmxvYWRJ
RCwgcmVxdWVzdCwgcmVzcG9uc2UpLCAwKTsKKyAgICAgICAgd2ViUHJvY2Vzcy5uZXR3b3JrQ29u
bmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpDb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQoc2Vzc2lvbklE
LCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgcG9saWN5RG93bmxvYWRJRCwgcmVxdWVzdCwg
cmVzcG9uc2UpLCAwKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgogCiAgICAgaWYg
KCFtYWluUmVzb3VyY2VMb2FkZXIpIHsKICAgICAgICAgLy8gVGhlIG1haW4gcmVzb3VyY2UgaGFz
IGFscmVhZHkgYmVlbiBsb2FkZWQuIFN0YXJ0IGEgbmV3IGRvd25sb2FkIGluc3RlYWQuCi0gICAg
ICAgIHdlYlByb2Nlc3MuZG93bmxvYWRNYW5hZ2VyKCkuc3RhcnREb3dubG9hZChwb2xpY3lEb3du
bG9hZElELCByZXF1ZXN0KTsKKyNpZiAhVVNFKE5FVFdPUktfU0VTU0lPTikKKyAgICAgICAgd2Vi
UHJvY2Vzcy5kb3dubG9hZE1hbmFnZXIoKS5zdGFydERvd25sb2FkKHNlc3Npb25JRCwgcG9saWN5
RG93bmxvYWRJRCwgcmVxdWVzdCk7CisjZW5kaWYKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAor
I2lmIFVTRShORVRXT1JLX1NFU1NJT04pCisgICAgLy8gVXNpbmcgTkVUV09SS19TRVNTSU9OIHJl
cXVpcmVzIHRoZSB1c2Ugb2YgYSBuZXR3b3JrIHByb2Nlc3MuCisgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyNlbHNlCiAgICAgd2ViUHJvY2Vzcy5kb3dubG9hZE1hbmFnZXIoKS5j
b252ZXJ0SGFuZGxlVG9Eb3dubG9hZChwb2xpY3lEb3dubG9hZElELCBkb2N1bWVudExvYWRlci0+
bWFpblJlc291cmNlTG9hZGVyKCktPmhhbmRsZSgpLCByZXF1ZXN0LCByZXNwb25zZSk7CisjZW5k
aWYKIH0KIAotU3RyaW5nIFdlYkZyYW1lOjpzb3VyY2UoKSBjb25zdCAKK1N0cmluZyBXZWJGcmFt
ZTo6c291cmNlKCkgY29uc3QKIHsKICAgICBpZiAoIW1fY29yZUZyYW1lKQogICAgICAgICByZXR1
cm4gU3RyaW5nKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
RnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViRnJhbWUuaAkocmV2aXNpb24gMTkyNDk3KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDcgQEAgY2xh
c3MgRnJhbWU7CiBjbGFzcyBIVE1MRnJhbWVPd25lckVsZW1lbnQ7CiBjbGFzcyBJbnRQb2ludDsK
IGNsYXNzIEludFJlY3Q7CitjbGFzcyBTZXNzaW9uSUQ7CiBjbGFzcyBVUkw7CiB9CiAKQEAgLTgy
LDcgKzgzLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVp
bnQ2NF90IGxpc3RlbmVySUQsIFdlYkNvcmU6OlBvbGljeUFjdGlvbiwgdWludDY0X3QgbmF2aWdh
dGlvbklELCB1aW50NjRfdCBkb3dubG9hZElEKTsKIAogICAgIHZvaWQgc3RhcnREb3dubG9hZChj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKLSAgICB2b2lkIGNvbnZlcnRNYWluUmVz
b3VyY2VMb2FkVG9Eb3dubG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsK
KyAgICB2b2lkIGNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChXZWJDb3JlOjpEb2N1
bWVudExvYWRlciosIFdlYkNvcmU6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogCiAgICAgU3RyaW5n
IHNvdXJjZSgpIGNvbnN0OwogICAgIFN0cmluZyBjb250ZW50c0FzU3RyaW5nKCkgY29uc3Q7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTI1OTMpCisrKyBTb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxNS0xMS0xOCAg
QWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFBy
b2dyZXNzIHRvd2FyZHMgaW1wbGVtZW50aW5nIERvd25sb2FkcyB3aXRoIE5FVFdPUktfU0VTU0lP
TgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNDE0
CisKKyAgICAgICAgUmV2aWV3ZWQgYmVncnVkZ2luZ2x5IGJ5IEJyYWR5IEVpZHNvbi4KKworICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGV0YWNoZWRGcm9tUGFyZW50Myk6CisgICAgICAgIChXZWJGcmFtZUxv
YWRlckNsaWVudDo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKToKKwogMjAxNS0x
MS0xOCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBFeHBvc2Ug
V2ViQ29yZSdzIEF1ZGlvUGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0dXJlIHNldHRpbmcgdG8gV2Vi
S2l0ICYgV2ViS2l0MgpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiAxOTI0OTcpCisrKyBT
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zOSwxMiArMzksMTMgQEAKIEBjbGFzcyBXZWJSZXNvdXJjZTsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewotICAgIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwot
ICAgIGNsYXNzIENhY2hlZEZyYW1lOwotICAgIGNsYXNzIEhpc3RvcnlJdGVtOwotICAgIGNsYXNz
IFByb3RlY3Rpb25TcGFjZTsKLSAgICBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKLSAgICBjbGFzcyBS
ZXNvdXJjZVJlcXVlc3Q7CitjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKK2NsYXNzIENh
Y2hlZEZyYW1lOworY2xhc3MgSGlzdG9yeUl0ZW07CitjbGFzcyBQcm90ZWN0aW9uU3BhY2U7Citj
bGFzcyBSZXNvdXJjZUxvYWRlcjsKK2NsYXNzIFJlc291cmNlUmVxdWVzdDsKK2NsYXNzIFNlc3Np
b25JRDsKIH0KIAogdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRl
cj4sIFJldGFpblB0cjxXZWJSZXNvdXJjZT4+IFJlc291cmNlTWFwOwpAQCAtNzIsNyArNzMsNyBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hlZEZyb21QYXJlbnQyKCkgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaGVkRnJvbVBhcmVudDMoKSBvdmVycmlkZTsKIAot
ICAgIHZpcnR1YWwgdm9pZCBjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lk
IGNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRl
ciosIFdlYkNvcmU6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwogCiAgICAgdmlydHVh
bCB2b2lkIGFzc2lnbklkZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmKSBvdmVycmlkZTsKIApJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHJldmlzaW9uIDE5
MjQ5NykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yODQsNyArMjg0LDcgQEAgdm9pZCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGV0YWNoZWRGcm9tUAogICAgIG1fd2ViRnJhbWUtPl9wcml2YXRlLT53
ZWJGcmFtZVZpZXcgPSBuaWw7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbnZl
cnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2Fk
ZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb252ZXJ0TWFpblJlc291
cmNlTG9hZFRvRG93bmxvYWQoRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyLCBTZXNzaW9u
SUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UpCiB7CiAgICAgV2ViVmlldyAqd2ViVmlldyA9IGdldFdlYlZpZXcobV93ZWJG
cmFtZS5nZXQoKSk7CiAgICAgU3VicmVzb3VyY2VMb2FkZXIqIG1haW5SZXNvdXJjZUxvYWRlciA9
IGRvY3VtZW50TG9hZGVyLT5tYWluUmVzb3VyY2VMb2FkZXIoKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>