<?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>207602</bug_id>
          
          <creation_ts>2020-02-11 16:59:22 -0800</creation_ts>
          <short_desc>IndexedDB: prefetch cursor records on client side</short_desc>
          <delta_ts>2020-02-14 12:37:04 -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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sihui Liu">sihui_liu</reporter>
          <assigned_to name="Sihui Liu">sihui_liu</assigned_to>
          <cc>achristensen</cc>
    
    <cc>alecflett</cc>
    
    <cc>annulen</cc>
    
    <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jsbell</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1617779</commentid>
    <comment_count>0</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-02-11 16:59:22 -0800</bug_when>
    <thetext>&lt;rdar://problem/58483927&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618189</commentid>
    <comment_count>1</comment_count>
      <attachid>390553</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-02-12 13:44:51 -0800</bug_when>
    <thetext>Created attachment 390553
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618219</commentid>
    <comment_count>2</comment_count>
      <attachid>390560</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-02-12 14:18:55 -0800</bug_when>
    <thetext>Created attachment 390560
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618225</commentid>
    <comment_count>3</comment_count>
      <attachid>390562</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-02-12 14:31:28 -0800</bug_when>
    <thetext>Created attachment 390562
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618229</commentid>
    <comment_count>4</comment_count>
      <attachid>390564</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-02-12 14:39:27 -0800</bug_when>
    <thetext>Created attachment 390564
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618243</commentid>
    <comment_count>5</comment_count>
      <attachid>390566</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-02-12 15:02:03 -0800</bug_when>
    <thetext>Created attachment 390566
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618287</commentid>
    <comment_count>6</comment_count>
      <attachid>390582</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-02-12 16:14:26 -0800</bug_when>
    <thetext>Created attachment 390582
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1619027</commentid>
    <comment_count>7</comment_count>
      <attachid>390582</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-02-14 09:01:03 -0800</bug_when>
    <thetext>Comment on attachment 390582
Patch

Okay!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1619040</commentid>
    <comment_count>8</comment_count>
      <attachid>390776</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-02-14 09:24:24 -0800</bug_when>
    <thetext>Created attachment 390776
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1619061</commentid>
    <comment_count>9</comment_count>
      <attachid>390776</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-14 10:08:08 -0800</bug_when>
    <thetext>Comment on attachment 390776
Patch for landing

Clearing flags on attachment: 390776

Committed r256621: &lt;https://trac.webkit.org/changeset/256621&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1619062</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-14 10:08:10 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1619138</commentid>
    <comment_count>11</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-02-14 12:37:04 -0800</bug_when>
    <thetext>*** Bug 205961 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390553</attachid>
            <date>2020-02-12 13:44:51 -0800</date>
            <delta_ts>2020-02-12 14:18:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207602-20200212134450.patch</filename>
            <type>text/plain</type>
            <size>56550</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2NDM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2U4NTMxMWM5OGU5NmMz
Mzk5OTdhNWM4NDFmMmFkZjRmNjgzNGQwYS4uMzg1MjQwNzhhZTY5OTAzM2ZhODQyMzJlYTg4ODlh
YmE3YWYxNGMxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyMSBAQAorMjAyMC0wMi0xMiAgU2lo
dWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBJbmRleGVkREI6IHByZWZl
dGNoIGN1cnNvciByZWNvcmRzIG9uIGNsaWVudCBzaWRlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc2MDIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzU4NDgzOTI3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIENhY2hlIGN1cnNvciByZWNvcmRzIG9uIG9uIGNsaWVudCBzaWRlIGFuZCB1c2UgdGhvc2Ug
cmVjb3JkcyBmb3IgaXRlcmF0ZSBvcGVyYXRpb25zLgorCisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6c2V0R2V0
UmVzdWx0KTogUmVjb3JkIHRoZSBJRCBvZiBUcmFuc2FjdGlvbk9wZXJhdGlvbiB0aGF0IHVwZGF0
ZXMgY2FjaGUuCisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6Oml0ZXJhdGVXaXRoUHJlZmV0
Y2hlZFJlY29yZHMpOiBJREJDdXJzb3IgdXNlcyBjYWNoZWQgcmVjb3JkcyBmb3IgaXRlcmF0ZSBv
cGVydGFpb25zIGlmIAorICAgICAgICB0aGVyZSBpcyBubyB3cml0ZSBvcGVyYXRpb24gYmV0d2Vl
biBsYXN0IGNhY2hlIHVwZGF0ZSBhbmQgY3VycmVudCBpdGVyYXRpb24gb3BlcmF0aW9uLgorICAg
ICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yOjpjbGVhclByZWZldGNoZWRSZWNvcmRzKToKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaDoKKworICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL0lEQkdldFJlc3VsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJHZXRSZXN1
bHQ6Omlzb2xhdGVkQ29weSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCR2V0UmVz
dWx0Lmg6CisgICAgICAgIChXZWJDb3JlOjpJREJHZXRSZXN1bHQ6OklEQkdldFJlc3VsdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJHZXRSZXN1bHQ6OnByZWZldGNoZWRSZWNvcmRzIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkdldFJlc3VsdDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OklEQkdldFJlc3VsdDo6ZGVjb2RlKToKKworICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL0lEQlJlcXVlc3QuY3BwOiBSZWNvcmQgY29ycmVzcG9uZGluZyBUcmFuc2FjdGlvbk9w
ZXJhdGlvbiBJRCBpbiByZXF1ZXN0LgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6ZGlk
T3Blbk9ySXRlcmF0ZUN1cnNvcik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCUmVx
dWVzdC5oOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6cGVuZGluZ0N1cnNvciBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpzZXRUcmFuc2FjdGlvbk9wZXJhdGlv
bklEKToKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcDog
SWYgYSBjdXJzb3IgaXRlcmF0ZSByZXF1ZXN0IGNhbiBiZSBoYW5kbGVkIHdpdGggY2FjaGVkIHJl
Y29yZHMsCisgICAgICAgIElEQkNsaWVudCBkb2VzIG5lZWQgdG8gc2VuZCByZXF1ZXN0IHRvIElE
QlNlcnZlciBhbmQgd2FpdCBmb3IgcmVzcG9uc2UuIEJ1dCByZXF1ZXN0cyBiZWZvcmUgdGhlIGl0
ZXJhdGUgcmVxdWVzdAorICAgICAgICBtYXkgbmVlZCB0byB3YWl0IHNlcnZlciB0byBhbnN3ZXIs
IGFuZCBzcGVjIHJlcXVpcmVzIHRvIGhhbmRsZSByZXF1ZXN0cyBpbiBvcmRlci4gVGhlcmVmb3Jl
LCB3ZSBub3cga2VlcCBhbGwgdGhlIAorICAgICAgICByZXN1bHRzIGluIG1fdHJhbnNhY3Rpb25P
cGVyYXRpb25SZXN1bHRNYXAgYW5kIGhhbmRsZSB0aGUgcmVzdWx0IGFjY29yZGluZyB0byB0aGUg
b3JkZXJpbmcgaW4gCisgICAgICAgIG1fdHJhbnNhY3Rpb25PcGVyYXRpb25zSW5Qcm9ncmVzc1F1
ZXVlLgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmFib3J0SW5Qcm9ncmVzc09w
ZXJhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnJlbW92ZVJlcXVl
c3QpOiBCZWNhdXNlIHJlc3VsdCBvZiBhIGN1cnNvciByZXF1ZXN0IGNhbiBiZSBhbnN3ZXJlZCBz
b29uZXIsIGl0IGlzIAorICAgICAgICBwb3NzaWJsZSB0aGF0IGluIGZpbmlzaGVkRGlzcGF0Y2hF
dmVudEZvclJlcXVlc3QsIG1fY3VycmVudGx5Q29tcGxldGluZ1JlcXVlc3QsIHdoaWNoIGlzIGEg
Y3Vyc29yIHJlcXVlc3QsIGlzIAorICAgICAgICBzZXQgdG8gbnVsbHB0ciwgYW5kIHRoZW4gaXQg
aXMgc2V0IHRvIHRoZSBzYW1lIGN1cnNvciByZXF1ZXN0IGluIGhhbmRsZU9wZXJhdGlvbnNDb21w
bGV0ZWRPblNlcnZlci4gVGhpcyAKKyAgICAgICAgaGFwcGVucyBpbiBkaXNwYXRjaEV2ZW50IG9m
IHRoZSBjdXJzb3IgcmVxdWVzdCwgd2hlcmUgcmVxdWVzdCB3b3VsZCByZW1vdmUgaXRzZWxmIGZy
b20gdHJhbnNhY3Rpb24gYXQgdGhlIGVuZC4KKyAgICAgICAgSW4gdGhpcyBjYXNlLCB0cmFuc2Fj
dGlvbiBtYXkgY29tbWl0IGFmdGVyIHRoZSByZXF1ZXN0IGxpc3QgYmVjb21lcyBlbXB0eS4gQnV0
IHRyYW5zYWN0aW9uIHNob3VsZCBub3QgYmVjYXVzZQorICAgICAgICB0aGF0IHJlcXVlc3QgaXMg
c3RpbGwgdmFsaWQgYXMgbV9jdXJyZW50bHlDb21wbGV0aW5nUmVxdWVzdCBhbmQgc2hvdWxkIG5v
dCBiZSByZW1vdmVkLgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnNjaGVkdWxl
T3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpvcGVyYXRpb25D
b21wbGV0ZWRPblNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6aGFu
ZGxlT3BlcmF0aW9uc0NvbXBsZXRlZE9uU2VydmVyKTogQWxsIHJlcXVlc3RzIHdlcmUgc2VudCB0
byBJREJTZXJ2ZXIgYW5kIHRoZQorICAgICAgICByZXNwb25zZS9yZXN1bHQgb3JkZXIgd291bGQg
bmF0dXJhbGx5IGJlIHRoZSBzYW1lIGFzIHJlcXVlc3Qgb3JkZXIuIE5vdyB0aGF0IHNvbWUgcmVz
dWx0cyBjYW4gYmUgZ2VuZXJhdGVkCisgICAgICAgIHNvb25lciwgd2Ugbm8gbG9uZ2VyIGhhbmRs
ZSByZXF1ZXN0cyB1c2luZyBtX2NvbXBsZXRlZE9uU2VydmVyUXVldWUuCisgICAgICAgIChXZWJD
b3JlOjpJREJUcmFuc2FjdGlvbjo6Y3JlYXRlT2JqZWN0U3RvcmUpOiBNYXJrIGFzIHdyaXRlIG9w
ZXJhdGlvbiB0byB0cmFjayBsYXN0IHdyaXRlIG9wZXJhdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6
OklEQlRyYW5zYWN0aW9uOjpyZW5hbWVPYmplY3RTdG9yZSk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6SURCVHJhbnNhY3Rpb246OmNyZWF0ZUluZGV4KTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpJREJUcmFuc2FjdGlvbjo6cmVuYW1lSW5kZXgpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0RGVsZXRlUmVjb3JkKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cmVxdWVzdENsZWFyT2JqZWN0U3RvcmUpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0UHV0T3JBZGQpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpkZWxldGVPYmplY3RTdG9y
ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmRlbGV0ZUluZGV4
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6aXRlcmF0ZUN1cnNv
ck9uU2VydmVyKTogT25seSB1c2UgY2FjaGVkIHJlY29yZHMgaWYgdGhlIHJlcXVlc3QgZG9lcyBu
b3Qgc3BlY2lmeSB0YXJnZXQKKyAgICAgICAga2V5LiBJZiBjdXJzb3IgaXMgaXRlcmF0ZWQgc3Vj
Y2Vzc2Z1bGx5IHdpdGggY2FjaGUsIHNlbmQgYSBtZXNzYWdlIHRvIElEQlNlcnZlciB0byBub3Rp
ZnkgYWJvdXQgdGhlIHByb2dyZXNzIGJ1dAorICAgICAgICBkb24ndCBuZWVkIGl0IHRvIHJlcGx5
LiBPdGhlcndpc2UsIGZhbGwgYmFjayB0byBkZXBlbmQgb24gSURCU2VydmVyIHRvIGFuc3dlciB0
aGUgcmVxdWVzdC4KKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpnZW5lcmF0ZU9w
ZXJhdGlvbklEKTogVHJhbnNhY3Rpb25PcGVyYXRpb24gSUQgaXMgdW5pcXVlIGluIGEgdHJhbnNh
Y3Rpb24uCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaDoKKwor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0luZGV4ZWREQi5oOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uUHJveHkuY3BwOiAKKyAgICAgICAgKFdl
YkNvcmU6OklEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5OjppdGVyYXRlQ3Vyc29yKTogSWYg
dGhlIGl0ZXJhdGVDdXJzb3IgZG9lcyBub3QgbmVlZCBhbiBhbnN3ZXIsIGRvbid0CisgICAgICAg
IHRyYWNrIGl0IGluIElEQkNvbm5lY3Rpb25Qcm94eS4KKworICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uOjpUcmFuc2FjdGlvbk9wZXJhdGlvbik6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9u
Lmg6IEFkZCBJRCB0byBUcmFuc2FjdGlvbk9wZXJhdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OklE
QkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb246Om9wZXJhdGlvbklEIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb246OlRyYW5zYWN0aW9u
T3BlcmF0aW9uKToKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJCYWNr
aW5nU3RvcmUuaDogcmVtb3ZlIHByZWZldGNoQ3Vyc29yIGFzIGl0IGlzIG5vdCB1c2VkIG5vdy4K
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3Jl
Lmg6IERpdHRvLiBBbHNvIHRoaXMgcGF0Y2ggb25seSBkZWFscyB3aXRoIHByZWZldGNoaW5nIGlu
IAorICAgICAgICBwZXJzaXN0ZW50IHN0b3JlLgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVJbmRleCk6CisgICAgICAg
IChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0QWxsSW5kZXhS
ZWNvcmRzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0
b3JlOjpnZXRJbmRleFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0
ZUlEQkJhY2tpbmdTdG9yZTo6aXRlcmF0ZUN1cnNvcik6IE9ubHkgcHJlZmV0Y2ggYXQgd2hlbiBy
ZXF1ZXN0IG5lZWRzIHRvIGJlIGFuc3dlcmVkLgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OnByZWZldGNoQ3Vyc29yKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmg6CisK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpjdXJyZW50RGF0
YSk6IFByb3ZpZGUgYW4gb3B0aW9uIHRvIGluY2x1ZGUgcHJlZmV0Y2hlZCByZWNvcmRzIGluIHJl
c3VsdC4KKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpvYmpl
Y3RTdG9yZVJlY29yZHNDaGFuZ2VkKTogUmVzZXQgY291bnQgdG8gcHJlZmV0Y2ggd2hlbiB0aGVy
ZSBpcyBhIAorICAgICAgICBjaGFuZ2UgdG8gbWFrZSBwcmVmZXRjaCBhZGFwdGl2ZS4KKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpvYmplY3RTdG9yZVJlY29y
ZHNDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29y
OjpwcmVmZXRjaE9uZVJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0
ZUlEQkN1cnNvcjo6aW5jcmVhc2VDb3VudFRvUHJlZmV0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OnByZWZldGNoKTogQ291bnQgdG8gcHJlZmV0Y2gg
aXMgZGVjaWRlZCBieSBTUUxpdGVDdXJzb3Igbm93LgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpTUUxpdGVJREJDdXJzb3I6OmludGVybmFsRmV0Y2hOZXh0UmVjb3JkKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpjdXJyZW50VmFsdWUgY29uc3Qp
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuaDoK
KworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjppdGVy
YXRlQ3Vyc29yKTogTW92ZSBjYWxsIHRvIHByZWZldGNoIGN1cnNvciB0byBTUUxpdGVJREJCYWNr
aW5nU3RvcmUuCisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNl
OjpwcmVmZXRjaEN1cnNvcik6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjppdGVyYXRlQ3Vyc29y
KToKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJDdXJzb3JSZWNvcmQu
aDogU3RvcCB1c2UgcG9pbnRlciBmb3IgSURCVmFsdWUgZm9yIGVhc2llciBlbmNvZGluZyBhbmQg
ZGVjb2RpbmcuCisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3JSZWNvcmQ6OnNpemUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yUmVjb3JkOjppc29sYXRlZENvcHkgY29uc3Qp
OgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkl0ZXJhdGVDdXJzb3JE
YXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkl0ZXJhdGVDdXJzb3JEYXRhOjppc29sYXRl
ZENvcHkgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJJdGVy
YXRlQ3Vyc29yRGF0YS5oOiBBZGQgYW4gb3B0aW9uIHRvIGxldCBJREJTZXJ2ZXIga25vdyB3aGV0
aGVyIGl0IHNob3VsZCBhbnN3ZXIKKyAgICAgICAgdGhlIGN1cnNvciByZXF1ZXN0LiAKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkl0ZXJhdGVDdXJzb3JEYXRhOjplbmNvZGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCSXRlcmF0ZUN1cnNvckRhdGE6OmRlY29kZSk6CisKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMjAtMDItMTIgIFphbGFuIEJ1
anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJRkNdIFJlbmFtZSBEaXNw
bGF5OjpSdW46OlRleHRDb250ZXh0IHRvIFRleHRDb250ZW50CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcAppbmRleCAzNjhlZGMyMDQ4M2I1NDFhY2Q3
YjNiZjU5YmY1Y2YxN2ExYzkzYTBiLi42NWI4OWI1ODViNWNlYWZhZmY5YzcwMTBmMDE5ZjU1YTE1
ZTQ2YTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJD
dXJzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNv
ci5jcHAKQEAgLTMxMiw3ICszMTIsNyBAQCBFeGNlcHRpb25PcjxSZWY8V2ViQ29yZTo6SURCUmVx
dWVzdD4+IElEQkN1cnNvcjo6ZGVsZXRlRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QmCiAgICAgcmV0
dXJuIHJlcXVlc3Q7CiB9CiAKLWJvb2wgSURCQ3Vyc29yOjpzZXRHZXRSZXN1bHQoSURCUmVxdWVz
dCYgcmVxdWVzdCwgY29uc3QgSURCR2V0UmVzdWx0JiBnZXRSZXN1bHQpCitib29sIElEQkN1cnNv
cjo6c2V0R2V0UmVzdWx0KElEQlJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IElEQkdldFJlc3VsdCYg
Z2V0UmVzdWx0LCB1aW50NjRfdCBvcGVyYXRpb25JRCkKIHsKICAgICBMT0coSW5kZXhlZERCLCAi
SURCQ3Vyc29yOjpzZXRHZXRSZXN1bHQgLSBjdXJyZW50IGtleSAlcyIsIGdldFJlc3VsdC5rZXlE
YXRhKCkubG9nZ2luZ1N0cmluZygpLnN1YnN0cmluZygwLCAxMDApLnV0ZjgoKS5kYXRhKCkpOwog
ICAgIEFTU0VSVChjYW5DdXJyZW50VGhyZWFkQWNjZXNzVGhyZWFkTG9jYWxEYXRhKGVmZmVjdGl2
ZU9iamVjdFN0b3JlKCkudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKSk7
CkBAIC0zNDksNiArMzQ5LDEzIEBAIGJvb2wgSURCQ3Vyc29yOjpzZXRHZXRSZXN1bHQoSURCUmVx
dWVzdCYgcmVxdWVzdCwgY29uc3QgSURCR2V0UmVzdWx0JiBnZXRSZXN1bHQpCiAgICAgICAgIG1f
a2V5UGF0aCA9IGdldFJlc3VsdC5rZXlQYXRoKCk7CiAgICAgfQogCisgICAgYXV0byBwcmVmZXRj
aGVkUmVjb3JkcyA9IGdldFJlc3VsdC5wcmVmZXRjaGVkUmVjb3JkcygpOworICAgIGlmICghcHJl
ZmV0Y2hlZFJlY29yZHMuaXNFbXB0eSgpKSB7CisgICAgICAgIGZvciAoYXV0byYgcmVjb3JkIDog
cHJlZmV0Y2hlZFJlY29yZHMpCisgICAgICAgICAgICBtX3ByZWZldGNoZWRSZWNvcmRzLmFwcGVu
ZChyZWNvcmQpOworICAgICAgICBtX3ByZWZldGNoT3BlcmF0aW9uSUQgPSBvcGVyYXRpb25JRDsK
KyAgICB9CisKICAgICBtX2dvdFZhbHVlID0gdHJ1ZTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAg
LTM2MCw2ICszNjcsMjYgQEAgdm9pZCBJREJDdXJzb3I6OmNsZWFyV3JhcHBlcnMoKQogICAgIG1f
dmFsdWVXcmFwcGVyLmNsZWFyKCk7CiB9CiAKK09wdGlvbmFsPElEQkdldFJlc3VsdD4gSURCQ3Vy
c29yOjppdGVyYXRlV2l0aFByZWZldGNoZWRSZWNvcmRzKHVuc2lnbmVkIGNvdW50LCB1aW50NjRf
dCBsYXN0V3JpdGVPcGVyYXRpb25JRCkKK3sKKyAgICB1bnNpZ25lZCBzdGVwID0gY291bnQgPiAw
ID8gY291bnQgOiAxOworICAgIGlmIChzdGVwID4gbV9wcmVmZXRjaGVkUmVjb3Jkcy5zaXplKCkg
fHwgbV9wcmVmZXRjaE9wZXJhdGlvbklEIDw9IGxhc3RXcml0ZU9wZXJhdGlvbklEKQorICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgd2hpbGUgKC0tc3RlcCkKKyAgICAgICAgbV9w
cmVmZXRjaGVkUmVjb3Jkcy5yZW1vdmVGaXJzdCgpOworCisgICAgYXV0byByZWNvcmQgPSBtX3By
ZWZldGNoZWRSZWNvcmRzLnRha2VGaXJzdCgpOworCisgICAgTE9HKEluZGV4ZWREQiwgIklEQlRy
YW5zYWN0aW9uOjppdGVyYXRlV2l0aFByZWZldGNoZWRSZWNvcmRzIGNvbnN1bWVzICV1IHJlY29y
ZHMiLCBjb3VudCA+IDAgPyBjb3VudCA6IDEpOworICAgIHJldHVybiBJREJHZXRSZXN1bHQocmVj
b3JkLmtleSwgcmVjb3JkLnByaW1hcnlLZXksIElEQlZhbHVlKHJlY29yZC52YWx1ZSksIGVmZmVj
dGl2ZU9iamVjdFN0b3JlKCkua2V5UGF0aCgpKTsKK30KKwordm9pZCBJREJDdXJzb3I6OmNsZWFy
UHJlZmV0Y2hlZFJlY29yZHMoKQoreworICAgIG1fcHJlZmV0Y2hlZFJlY29yZHMuY2xlYXIoKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOREVYRURf
REFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJDdXJzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5o
CmluZGV4IDQ2MjJlNzAzMzQ0YjM2MDgwYTcxZGVhMzJkZjhhNTMxZGNmYzU4YWMuLjdiYzhmOGMw
MTdkZjUwZDI2Zjk5YTRiYTNiNDMyOWFlYjY3NWY4ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5oCkBAIC04MSwxMCArODEsMTMgQEAgcHVibGljOgog
ICAgIHZvaWQgY2xlYXJXcmFwcGVycygpOwogICAgIElEQlJlcXVlc3QqIHJlcXVlc3QoKSB7IHJl
dHVybiBtX3JlcXVlc3QuZ2V0KCk7IH0KIAotICAgIGJvb2wgc2V0R2V0UmVzdWx0KElEQlJlcXVl
c3QmLCBjb25zdCBJREJHZXRSZXN1bHQmKTsKKyAgICBib29sIHNldEdldFJlc3VsdChJREJSZXF1
ZXN0JiwgY29uc3QgSURCR2V0UmVzdWx0JiwgdWludDY0X3Qgb3BlcmF0aW9uSUQpOwogCiAgICAg
dmlydHVhbCBib29sIGlzS2V5Q3Vyc29yV2l0aFZhbHVlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KIAorICAgIE9wdGlvbmFsPElEQkdldFJlc3VsdD4gaXRlcmF0ZVdpdGhQcmVmZXRjaGVkUmVj
b3Jkcyh1bnNpZ25lZCBjb3VudCwgdWludDY0X3QgbGFzdFdyaXRlT3BlcmF0aW9uSUQpOworICAg
IHZvaWQgY2xlYXJQcmVmZXRjaGVkUmVjb3JkcygpOworCiBwcm90ZWN0ZWQ6CiAgICAgSURCQ3Vy
c29yKElEQk9iamVjdFN0b3JlJiwgY29uc3QgSURCQ3Vyc29ySW5mbyYpOwogICAgIElEQkN1cnNv
cihJREJJbmRleCYsIGNvbnN0IElEQkN1cnNvckluZm8mKTsKQEAgLTExMyw2ICsxMTYsOSBAQCBw
cml2YXRlOgogICAgIEpTVmFsdWVJbldyYXBwZWRPYmplY3QgbV9rZXlXcmFwcGVyOwogICAgIEpT
VmFsdWVJbldyYXBwZWRPYmplY3QgbV9wcmltYXJ5S2V5V3JhcHBlcjsKICAgICBKU1ZhbHVlSW5X
cmFwcGVkT2JqZWN0IG1fdmFsdWVXcmFwcGVyOworCisgICAgRGVxdWU8SURCQ3Vyc29yUmVjb3Jk
PiBtX3ByZWZldGNoZWRSZWNvcmRzOworICAgIHVpbnQ2NF90IG1fcHJlZmV0Y2hPcGVyYXRpb25J
RCB7IDAgfTsKIH07CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCR2V0UmVzdWx0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkdldFJlc3VsdC5jcHAKaW5kZXggOTQ5ZTgxMzM5N2YzMWJmMThlNjViYmM1NTgyMTJkMDg4
MTZjMDZmZi4uMTJlYzg3MDczMjk3MDFhNGNhMzUwMTJkZTUyYmZiMTI3MzUyOWI2YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCR2V0UmVzdWx0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuY3BwCkBA
IC01NSw2ICs1NSw3IEBAIHZvaWQgSURCR2V0UmVzdWx0Ojppc29sYXRlZENvcHkoY29uc3QgSURC
R2V0UmVzdWx0JiBzb3VyY2UsIElEQkdldFJlc3VsdCYgZGVzdGluCiAgICAgZGVzdGluYXRpb24u
bV9wcmltYXJ5S2V5RGF0YSA9IHNvdXJjZS5tX3ByaW1hcnlLZXlEYXRhLmlzb2xhdGVkQ29weSgp
OwogICAgIGRlc3RpbmF0aW9uLm1fa2V5UGF0aCA9IFdlYkNvcmU6Omlzb2xhdGVkQ29weShzb3Vy
Y2UubV9rZXlQYXRoKTsKICAgICBkZXN0aW5hdGlvbi5tX2lzRGVmaW5lZCA9IHNvdXJjZS5tX2lz
RGVmaW5lZDsKKyAgICBkZXN0aW5hdGlvbi5tX3ByZWZldGNoZWRSZWNvcmRzID0gc291cmNlLm1f
cHJlZmV0Y2hlZFJlY29yZHMuaXNvbGF0ZWRDb3B5KCk7CiB9CiAKIHZvaWQgSURCR2V0UmVzdWx0
OjpzZXRWYWx1ZShJREJWYWx1ZSYmIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCR2V0UmVzdWx0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuaAppbmRleCBlODdjMzkwMTIzMzQ5ZDExNTNkMWZjMDhj
OWU2YjJiZjc0NTFiMjUzLi5kMDNkODliYWMyNDgyY2Q4MzEyMzhhZjNkMjI5MGY1NmY5M2E5Njhm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1
bHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQu
aApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKKyNp
bmNsdWRlICJJREJDdXJzb3JSZWNvcmQuaCIKICNpbmNsdWRlICJJREJLZXkuaCIKICNpbmNsdWRl
ICJJREJLZXlEYXRhLmgiCiAjaW5jbHVkZSAiSURCS2V5UGF0aC5oIgpAQCAtNzYsNiArNzcsMTUg
QEAgcHVibGljOgogICAgIHsKICAgICB9CiAKKyAgICBJREJHZXRSZXN1bHQoY29uc3QgSURCS2V5
RGF0YSYga2V5RGF0YSwgY29uc3QgSURCS2V5RGF0YSYgcHJpbWFyeUtleURhdGEsIElEQlZhbHVl
JiYgdmFsdWUsIGNvbnN0IE9wdGlvbmFsPElEQktleVBhdGg+JiBrZXlQYXRoLCBWZWN0b3I8SURC
Q3Vyc29yUmVjb3JkPiYmIHByZWZldGVjaGVkUmVjb3JkcykKKyAgICAgICAgOiBtX3ZhbHVlKFdU
Rk1vdmUodmFsdWUpKQorICAgICAgICAsIG1fa2V5RGF0YShrZXlEYXRhKQorICAgICAgICAsIG1f
cHJpbWFyeUtleURhdGEocHJpbWFyeUtleURhdGEpCisgICAgICAgICwgbV9rZXlQYXRoKGtleVBh
dGgpCisgICAgICAgICwgbV9wcmVmZXRjaGVkUmVjb3JkcyhXVEZNb3ZlKHByZWZldGVjaGVkUmVj
b3JkcykpCisgICAgeworICAgIH0KKwogICAgIGVudW0gSXNvbGF0ZWRDb3B5VGFnIHsgSXNvbGF0
ZWRDb3B5IH07CiAgICAgSURCR2V0UmVzdWx0KGNvbnN0IElEQkdldFJlc3VsdCYsIElzb2xhdGVk
Q29weVRhZyk7CiAKQEAgLTg3LDYgKzk3LDcgQEAgcHVibGljOgogICAgIGNvbnN0IElEQktleURh
dGEmIGtleURhdGEoKSBjb25zdCB7IHJldHVybiBtX2tleURhdGE7IH0KICAgICBjb25zdCBJREJL
ZXlEYXRhJiBwcmltYXJ5S2V5RGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpbWFyeUtleURhdGE7
IH0KICAgICBjb25zdCBPcHRpb25hbDxJREJLZXlQYXRoPiYga2V5UGF0aCgpIGNvbnN0IHsgcmV0
dXJuIG1fa2V5UGF0aDsgfQorICAgIGNvbnN0IFZlY3RvcjxJREJDdXJzb3JSZWNvcmQ+JiBwcmVm
ZXRjaGVkUmVjb3JkcygpIGNvbnN0IHsgcmV0dXJuIG1fcHJlZmV0Y2hlZFJlY29yZHM7IH0KICAg
ICBib29sIGlzRGVmaW5lZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNEZWZpbmVkOyB9CiAKICAgICB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CkBAIC0x
MDEsMTMgKzExMiwxNCBAQCBwcml2YXRlOgogICAgIElEQktleURhdGEgbV9rZXlEYXRhOwogICAg
IElEQktleURhdGEgbV9wcmltYXJ5S2V5RGF0YTsKICAgICBPcHRpb25hbDxJREJLZXlQYXRoPiBt
X2tleVBhdGg7CisgICAgVmVjdG9yPElEQkN1cnNvclJlY29yZD4gbV9wcmVmZXRjaGVkUmVjb3Jk
czsKICAgICBib29sIG1faXNEZWZpbmVkIHsgdHJ1ZSB9OwogfTsKIAogdGVtcGxhdGU8Y2xhc3Mg
RW5jb2Rlcj4KIHZvaWQgSURCR2V0UmVzdWx0OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29u
c3QKIHsKLSAgICBlbmNvZGVyIDw8IG1fa2V5RGF0YSA8PCBtX3ByaW1hcnlLZXlEYXRhIDw8IG1f
a2V5UGF0aCA8PCBtX2lzRGVmaW5lZCA8PCBtX3ZhbHVlOworICAgIGVuY29kZXIgPDwgbV9rZXlE
YXRhIDw8IG1fcHJpbWFyeUtleURhdGEgPDwgbV9rZXlQYXRoIDw8IG1faXNEZWZpbmVkIDw8IG1f
dmFsdWUgPDwgbV9wcmVmZXRjaGVkUmVjb3JkczsKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4KQEAgLTEzNyw2ICsxNDksMTIgQEAgYm9vbCBJREJHZXRSZXN1bHQ6OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyLCBJREJHZXRSZXN1bHQmIHJlc3VsdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIHJlc3VsdC5tX3ZhbHVlID0gV1RGTW92ZSgqdmFsdWUpOwogCisgICAgT3B0aW9uYWw8VmVj
dG9yPElEQkN1cnNvclJlY29yZD4+IHByZWZldGNoZWRSZWNvcmRzOworICAgIGRlY29kZXIgPj4g
cHJlZmV0Y2hlZFJlY29yZHM7CisgICAgaWYgKCFwcmVmZXRjaGVkUmVjb3JkcykKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIHJlc3VsdC5tX3ByZWZldGNoZWRSZWNvcmRzID0gV1RGTW92ZSgq
cHJlZmV0Y2hlZFJlY29yZHMpOworCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKaW5kZXggMzBmNmU1Y2Rm
NGQ5ZmRiYzYxY2UzYTIwM2M0YWQwNjNiZDhjNTJiMy4uM2QwMjExOWM3YTUxZTFlMWZjYTBlYTJl
ZDRjOWQyNWU4NzVlMDI0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCUmVxdWVzdC5jcHAKQEAgLTQ5OSw3ICs0OTksNyBAQCB2b2lkIElEQlJlcXVlc3Q6OmRp
ZE9wZW5Pckl0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKICAg
ICBtX3Jlc3VsdFdyYXBwZXIgPSB7IH07CiAKICAgICBpZiAocmVzdWx0RGF0YS50eXBlKCkgPT0g
SURCUmVzdWx0VHlwZTo6SXRlcmF0ZUN1cnNvclN1Y2Nlc3MgfHwgcmVzdWx0RGF0YS50eXBlKCkg
PT0gSURCUmVzdWx0VHlwZTo6T3BlbkN1cnNvclN1Y2Nlc3MpIHsKLSAgICAgICAgaWYgKG1fcGVu
ZGluZ0N1cnNvci0+c2V0R2V0UmVzdWx0KCp0aGlzLCByZXN1bHREYXRhLmdldFJlc3VsdCgpKSAm
JiBtX2N1cnNvcldyYXBwZXIpCisgICAgICAgIGlmIChtX3BlbmRpbmdDdXJzb3ItPnNldEdldFJl
c3VsdCgqdGhpcywgcmVzdWx0RGF0YS5nZXRSZXN1bHQoKSwgbV9jdXJyZW50VHJhbnNhY3Rpb25P
cGVyYXRpb25JRCkgJiYgbV9jdXJzb3JXcmFwcGVyKQogICAgICAgICAgICAgbV9yZXN1bHRXcmFw
cGVyID0gbV9jdXJzb3JXcmFwcGVyOwogICAgICAgICBpZiAocmVzdWx0RGF0YS5nZXRSZXN1bHQo
KS5pc0RlZmluZWQoKSkKICAgICAgICAgICAgIG1fcmVzdWx0ID0gbV9wZW5kaW5nQ3Vyc29yOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oCmluZGV4IDI3
ODUwMWJhNjBlOWRlMDMwMjgxZDhjYjJmMTEwNjc4YjBjOWI4YjMuLjI4NjYxMzQ0YjBkZTIxNzZm
NWJlYWMzNjEzMTU0MGYxMjU2ZmRkZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJSZXF1ZXN0LmgKQEAgLTExOCw3ICsxMTgsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCB3aWxsSXRlcmF0ZUN1cnNvcihJREJDdXJzb3ImKTsKICAgICB2b2lkIGRpZE9wZW5Pckl0ZXJh
dGVDdXJzb3IoY29uc3QgSURCUmVzdWx0RGF0YSYpOwogCi0gICAgY29uc3QgSURCQ3Vyc29yKiBw
ZW5kaW5nQ3Vyc29yKCkgY29uc3QgeyByZXR1cm4gbV9wZW5kaW5nQ3Vyc29yLmdldCgpOyB9Cisg
ICAgSURCQ3Vyc29yKiBwZW5kaW5nQ3Vyc29yKCkgY29uc3QgeyByZXR1cm4gbV9wZW5kaW5nQ3Vy
c29yID8gbV9wZW5kaW5nQ3Vyc29yLmdldCgpIDogbnVsbHB0cjsgfQogCiAgICAgdm9pZCBzZXRT
b3VyY2UoSURCQ3Vyc29yJik7CiAgICAgdm9pZCBzZXRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24o
SURCVHJhbnNhY3Rpb24mKTsKQEAgLTEyNyw2ICsxMjcsOCBAQCBwdWJsaWM6CiAKICAgICBib29s
IGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IGZpbmFsOwogCisgICAgdm9pZCBzZXRUcmFuc2Fj
dGlvbk9wZXJhdGlvbklEKHVpbnQ2NF90IHRyYW5zYWN0aW9uT3BlcmF0aW9uSUQpIHsgbV9jdXJy
ZW50VHJhbnNhY3Rpb25PcGVyYXRpb25JRCA9IHRyYW5zYWN0aW9uT3BlcmF0aW9uSUQ7IH0KKwog
cHJvdGVjdGVkOgogICAgIElEQlJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIElEQkNs
aWVudDo6SURCQ29ubmVjdGlvblByb3h5Jik7CiAKQEAgLTE5MSw2ICsxOTMsOCBAQCBwcml2YXRl
OgogCiAgICAgYm9vbCBtX2Rpc3BhdGNoaW5nRXZlbnQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9o
YXNVbmNhdWdodEV4Y2VwdGlvbiB7IGZhbHNlIH07CisKKyAgICB1aW50NjRfdCBtX2N1cnJlbnRU
cmFuc2FjdGlvbk9wZXJhdGlvbklEIHsgMCB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNh
Y3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rp
b24uY3BwCmluZGV4IDQ3ZjJjYjBlNWZmNjNjODQ5YTk5MmNkOGRmN2M3YWQyOWQzMDE3MmQuLjhk
ZGYyMDc5YWY5NTQwMmIwYTQzNDBjYzI3OWU5NGI5NzUxZmEzMGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKQEAgLTI3Miwx
NSArMjcyLDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6YWJvcnRJblByb2dyZXNzT3BlcmF0aW9u
cyhjb25zdCBJREJFcnJvciYgZXJyb3IpCiAgICAgICAgIG9wZXJhdGlvbi0+ZG9Db21wbGV0ZShJ
REJSZXN1bHREYXRhOjplcnJvcihvcGVyYXRpb24tPmlkZW50aWZpZXIoKSwgZXJyb3IpKTsKICAg
ICB9CiAKLSAgICBWZWN0b3I8UmVmUHRyPElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24+
PiBjb21wbGV0ZWRPblNlcnZlckFib3J0VmVjdG9yOwotICAgIGNvbXBsZXRlZE9uU2VydmVyQWJv
cnRWZWN0b3IucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX2NvbXBsZXRlZE9uU2VydmVyUXVldWUu
c2l6ZSgpKTsKLSAgICB3aGlsZSAoIW1fY29tcGxldGVkT25TZXJ2ZXJRdWV1ZS5pc0VtcHR5KCkp
Ci0gICAgICAgIGNvbXBsZXRlZE9uU2VydmVyQWJvcnRWZWN0b3IudW5jaGVja2VkQXBwZW5kKG1f
Y29tcGxldGVkT25TZXJ2ZXJRdWV1ZS50YWtlRmlyc3QoKS5maXJzdCk7Ci0KLSAgICBmb3IgKGF1
dG8mIG9wZXJhdGlvbiA6IGNvbXBsZXRlZE9uU2VydmVyQWJvcnRWZWN0b3IpIHsKLSAgICAgICAg
bV9jdXJyZW50bHlDb21wbGV0aW5nUmVxdWVzdCA9IG51bGxwdHI7Ci0gICAgICAgIG9wZXJhdGlv
bi0+ZG9Db21wbGV0ZShJREJSZXN1bHREYXRhOjplcnJvcihvcGVyYXRpb24tPmlkZW50aWZpZXIo
KSwgZXJyb3IpKTsKLSAgICB9CisgICAgbV90cmFuc2FjdGlvbk9wZXJhdGlvblJlc3VsdE1hcC5j
bGVhcigpOwogCiAgICAgbV9jdXJyZW50bHlDb21wbGV0aW5nUmVxdWVzdCA9IG51bGxwdHI7CiAg
ICAgY29ubmVjdGlvblByb3h5KCkuZm9yZ2V0QWN0aXZlT3BlcmF0aW9ucyhpblByb2dyZXNzQWJv
cnRWZWN0b3IpOwpAQCAtMzc2LDE2ICszNjgsMjIgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6YWRk
UmVxdWVzdChJREJSZXF1ZXN0JiByZXF1ZXN0KQogdm9pZCBJREJUcmFuc2FjdGlvbjo6cmVtb3Zl
UmVxdWVzdChJREJSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIEFTU0VSVChjYW5DdXJyZW50VGhy
ZWFkQWNjZXNzVGhyZWFkTG9jYWxEYXRhKG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKSk7Cisg
ICAgaWYgKG1fY3VycmVudGx5Q29tcGxldGluZ1JlcXVlc3QgPT0gJnJlcXVlc3QpCisgICAgICAg
IHJldHVybjsKKwogICAgIG1fb3BlblJlcXVlc3RzLnJlbW92ZSgmcmVxdWVzdCk7CiAKICAgICBh
dXRvQ29tbWl0KCk7CiB9CiAKLXZvaWQgSURCVHJhbnNhY3Rpb246OnNjaGVkdWxlT3BlcmF0aW9u
KFJlZjxJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uPiYmIG9wZXJhdGlvbikKK3ZvaWQg
SURCVHJhbnNhY3Rpb246OnNjaGVkdWxlT3BlcmF0aW9uKFJlZjxJREJDbGllbnQ6OlRyYW5zYWN0
aW9uT3BlcmF0aW9uPiYmIG9wZXJhdGlvbiwgSXNXcml0ZU9wZXJhdGlvbiBpc1dyaXRlT3BlcmF0
aW9uKQogewogICAgIEFTU0VSVCghbV90cmFuc2FjdGlvbk9wZXJhdGlvbk1hcC5jb250YWlucyhv
cGVyYXRpb24tPmlkZW50aWZpZXIoKSkpOwogICAgIEFTU0VSVChjYW5DdXJyZW50VGhyZWFkQWNj
ZXNzVGhyZWFkTG9jYWxEYXRhKG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKSk7CiAKKyAgICBp
ZiAoaXNXcml0ZU9wZXJhdGlvbiA9PSBJc1dyaXRlT3BlcmF0aW9uOjpZZXMpCisgICAgICAgIG1f
bGFzdFdyaXRlT3BlcmF0aW9uSUQgPSBvcGVyYXRpb24tPm9wZXJhdGlvbklEKCk7CisKICAgICBh
dXRvIGlkZW50aWZpZXIgPSBvcGVyYXRpb24tPmlkZW50aWZpZXIoKTsKICAgICBtX3BlbmRpbmdU
cmFuc2FjdGlvbk9wZXJhdGlvblF1ZXVlLmFwcGVuZChvcGVyYXRpb24uY29weVJlZigpKTsKICAg
ICBtX3RyYW5zYWN0aW9uT3BlcmF0aW9uTWFwLnNldChpZGVudGlmaWVyLCBXVEZNb3ZlKG9wZXJh
dGlvbikpOwpAQCAtMzk4LDcgKzM5NiwxMCBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpvcGVyYXRp
b25Db21wbGV0ZWRPblNlcnZlcihjb25zdCBJREJSZXN1bHREYXRhJiBkYXRhLCBJREJDbAogICAg
IEFTU0VSVChjYW5DdXJyZW50VGhyZWFkQWNjZXNzVGhyZWFkTG9jYWxEYXRhKG1fZGF0YWJhc2Ut
Pm9yaWdpblRocmVhZCgpKSk7CiAgICAgQVNTRVJUKGNhbkN1cnJlbnRUaHJlYWRBY2Nlc3NUaHJl
YWRMb2NhbERhdGEob3BlcmF0aW9uLm9yaWdpblRocmVhZCgpKSk7CiAKLSAgICBtX2NvbXBsZXRl
ZE9uU2VydmVyUXVldWUuYXBwZW5kKHsgJm9wZXJhdGlvbiwgZGF0YSB9KTsKKyAgICBpZiAoIW1f
dHJhbnNhY3Rpb25PcGVyYXRpb25NYXAuY29udGFpbnMob3BlcmF0aW9uLmlkZW50aWZpZXIoKSkp
CisgICAgICAgIHJldHVybjsKKworICAgIG1fdHJhbnNhY3Rpb25PcGVyYXRpb25SZXN1bHRNYXAu
c2V0KCZvcGVyYXRpb24sIElEQlJlc3VsdERhdGEoZGF0YSkpOwogCiAgICAgaWYgKCFtX2N1cnJl
bnRseUNvbXBsZXRpbmdSZXF1ZXN0KQogICAgICAgICBoYW5kbGVPcGVyYXRpb25zQ29tcGxldGVk
T25TZXJ2ZXIoKTsKQEAgLTQwNiwxMiArNDA3LDE1IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246Om9w
ZXJhdGlvbkNvbXBsZXRlZE9uU2VydmVyKGNvbnN0IElEQlJlc3VsdERhdGEmIGRhdGEsIElEQkNs
CiAKIHZvaWQgSURCVHJhbnNhY3Rpb246OmhhbmRsZU9wZXJhdGlvbnNDb21wbGV0ZWRPblNlcnZl
cigpCiB7Ci0gICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpjb21wbGV0ZWRPcGVy
YXRpb25UaW1lckZpcmVkICglcCkiLCB0aGlzKTsKKyAgICBMT0coSW5kZXhlZERCLCAiSURCVHJh
bnNhY3Rpb246OmhhbmRsZU9wZXJhdGlvbnNDb21wbGV0ZWRPblNlcnZlciIpOwogICAgIEFTU0VS
VChjYW5DdXJyZW50VGhyZWFkQWNjZXNzVGhyZWFkTG9jYWxEYXRhKG1fZGF0YWJhc2UtPm9yaWdp
blRocmVhZCgpKSk7CiAKLSAgICB3aGlsZSAoIW1fY29tcGxldGVkT25TZXJ2ZXJRdWV1ZS5pc0Vt
cHR5KCkgJiYgIW1fY3VycmVudGx5Q29tcGxldGluZ1JlcXVlc3QpIHsKLSAgICAgICAgYXV0byBp
dGVyYXRvciA9IG1fY29tcGxldGVkT25TZXJ2ZXJRdWV1ZS50YWtlRmlyc3QoKTsKLSAgICAgICAg
aXRlcmF0b3IuZmlyc3QtPmRvQ29tcGxldGUoaXRlcmF0b3Iuc2Vjb25kKTsKKyAgICB3aGlsZSAo
IW1fdHJhbnNhY3Rpb25PcGVyYXRpb25zSW5Qcm9ncmVzc1F1ZXVlLmlzRW1wdHkoKSAmJiAhbV9j
dXJyZW50bHlDb21wbGV0aW5nUmVxdWVzdCkgeworICAgICAgICBSZWZQdHI8SURCQ2xpZW50OjpU
cmFuc2FjdGlvbk9wZXJhdGlvbj4gY3VycmVudE9wZXJhdGlvbiA9IG1fdHJhbnNhY3Rpb25PcGVy
YXRpb25zSW5Qcm9ncmVzc1F1ZXVlLmZpcnN0KCk7CisgICAgICAgIGlmICghbV90cmFuc2FjdGlv
bk9wZXJhdGlvblJlc3VsdE1hcC5jb250YWlucyhjdXJyZW50T3BlcmF0aW9uKSkKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICBjdXJyZW50T3BlcmF0aW9uLT5kb0NvbXBsZXRlKG1fdHJh
bnNhY3Rpb25PcGVyYXRpb25SZXN1bHRNYXAudGFrZShjdXJyZW50T3BlcmF0aW9uKSk7CiAgICAg
fQogfQogCkBAIC02MjIsNyArNjI2LDcgQEAgUmVmPElEQk9iamVjdFN0b3JlPiBJREJUcmFuc2Fj
dGlvbjo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJgogICAgICAg
ICBwcm90ZWN0ZWRUaGlzLT5kaWRDcmVhdGVPYmplY3RTdG9yZU9uU2VydmVyKHJlc3VsdCk7CiAg
ICAgfSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaW5mbyA9IGluZm8uaXNvbGF0
ZWRDb3B5KCldIChhdXRvJiBvcGVyYXRpb24pIHsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+Y3Jl
YXRlT2JqZWN0U3RvcmVPblNlcnZlcihvcGVyYXRpb24sIGluZm8pOwotICAgIH0pKTsKKyAgICB9
KSwgSXNXcml0ZU9wZXJhdGlvbjo6WWVzKTsKIAogICAgIHJldHVybiAqcmF3T2JqZWN0U3RvcmU7
CiB9CkBAIC02NjQsNyArNjY4LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6cmVuYW1lT2JqZWN0
U3RvcmUoSURCT2JqZWN0U3RvcmUmIG9iamVjdFN0b3JlLCBjb25zdCBTdHJpbmcKICAgICAgICAg
cHJvdGVjdGVkVGhpcy0+ZGlkUmVuYW1lT2JqZWN0U3RvcmVPblNlcnZlcihyZXN1bHQpOwogICAg
IH0sIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG9iamVjdFN0b3JlSWRlbnRpZmll
ciwgbmV3TmFtZSA9IG5ld05hbWUuaXNvbGF0ZWRDb3B5KCldIChhdXRvJiBvcGVyYXRpb24pIHsK
ICAgICAgICAgcHJvdGVjdGVkVGhpcy0+cmVuYW1lT2JqZWN0U3RvcmVPblNlcnZlcihvcGVyYXRp
b24sIG9iamVjdFN0b3JlSWRlbnRpZmllciwgbmV3TmFtZSk7Ci0gICAgfSkpOworICAgIH0pLCBJ
c1dyaXRlT3BlcmF0aW9uOjpZZXMpOwogCiAgICAgbV9yZWZlcmVuY2VkT2JqZWN0U3RvcmVzLnNl
dChuZXdOYW1lLCBtX3JlZmVyZW5jZWRPYmplY3RTdG9yZXMudGFrZShvYmplY3RTdG9yZS5pbmZv
KCkubmFtZSgpKSk7CiB9CkBAIC02OTksNyArNzAzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPElEQklu
ZGV4PiBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlSW5kZXgoSURCT2JqZWN0U3RvcmUmIG9iamVjdFN0
b3IKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGlkQ3JlYXRlSW5kZXhPblNlcnZlcihyZXN1bHQp
OwogICAgIH0sIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGluZm8gPSBpbmZvLmlz
b2xhdGVkQ29weSgpXSAoYXV0byYgb3BlcmF0aW9uKSB7CiAgICAgICAgIHByb3RlY3RlZFRoaXMt
PmNyZWF0ZUluZGV4T25TZXJ2ZXIob3BlcmF0aW9uLCBpbmZvKTsKLSAgICB9KSk7CisgICAgfSks
IElzV3JpdGVPcGVyYXRpb246Olllcyk7CiAKICAgICByZXR1cm4gbWFrZVVuaXF1ZTxJREJJbmRl
eD4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgaW5mbywgb2JqZWN0U3RvcmUpOwogfQpAQCAt
NzUzLDcgKzc1Nyw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OnJlbmFtZUluZGV4KElEQkluZGV4
JiBpbmRleCwgY29uc3QgU3RyaW5nJiBuZXdOYW1lKQogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5k
aWRSZW5hbWVJbmRleE9uU2VydmVyKHJlc3VsdCk7CiAgICAgfSwgW3Byb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleElkZW50aWZpZXIsIG5l
d05hbWUgPSBuZXdOYW1lLmlzb2xhdGVkQ29weSgpXSAoYXV0byYgb3BlcmF0aW9uKSB7CiAgICAg
ICAgIHByb3RlY3RlZFRoaXMtPnJlbmFtZUluZGV4T25TZXJ2ZXIob3BlcmF0aW9uLCBvYmplY3RT
dG9yZUlkZW50aWZpZXIsIGluZGV4SWRlbnRpZmllciwgbmV3TmFtZSk7Ci0gICAgfSkpOworICAg
IH0pLCBJc1dyaXRlT3BlcmF0aW9uOjpZZXMpOwogfQogCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpy
ZW5hbWVJbmRleE9uU2VydmVyKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJh
dGlvbiwgY29uc3QgdWludDY0X3QmIG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgdWludDY0
X3QmIGluZGV4SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lKQpAQCAtODUyLDcgKzg1
NiwyMyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjppdGVyYXRlQ3Vyc29yT25TZXJ2ZXIoSURCQ2xp
ZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcgogewogICAgIExPRyhJbmRleGVkREIsICJJ
REJUcmFuc2FjdGlvbjo6aXRlcmF0ZUN1cnNvck9uU2VydmVyIik7CiAgICAgQVNTRVJUKGNhbkN1
cnJlbnRUaHJlYWRBY2Nlc3NUaHJlYWRMb2NhbERhdGEobV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFk
KCkpKTsKKyAgICBBU1NFUlQob3BlcmF0aW9uLmlkYlJlcXVlc3QoKSk7CiAKKyAgICBhdXRvKiBj
dXJzb3IgPSBvcGVyYXRpb24uaWRiUmVxdWVzdCgpLT5wZW5kaW5nQ3Vyc29yKCk7CisgICAgQVNT
RVJUKGN1cnNvcik7CisKKyAgICBpZiAoZGF0YS5rZXlEYXRhLmlzTnVsbCgpICYmIGRhdGEucHJp
bWFyeUtleURhdGEuaXNOdWxsKCkpIHsKKyAgICAgICAgaWYgKGF1dG8gZ2V0UmVzdWx0ID0gY3Vy
c29yLT5pdGVyYXRlV2l0aFByZWZldGNoZWRSZWNvcmRzKGRhdGEuY291bnQsIG1fbGFzdFdyaXRl
T3BlcmF0aW9uSUQpKSB7CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IElEQlJlc3VsdERhdGE6
Oml0ZXJhdGVDdXJzb3JTdWNjZXNzKG9wZXJhdGlvbi5pZGVudGlmaWVyKCksIGdldFJlc3VsdC52
YWx1ZSgpKTsKKyAgICAgICAgICAgIG1fZGF0YWJhc2UtPmNvbm5lY3Rpb25Qcm94eSgpLml0ZXJh
dGVDdXJzb3Iob3BlcmF0aW9uLCB7IGRhdGEua2V5RGF0YSwgZGF0YS5wcmltYXJ5S2V5RGF0YSwg
ZGF0YS5jb3VudCwgSW5kZXhlZERCOjpDdXJzb3JJdGVyYXRlT3B0aW9uOjpEb05vdFJlcGx5IH0p
OworICAgICAgICAgICAgb3BlcmF0aW9uQ29tcGxldGVkT25TZXJ2ZXIocmVzdWx0LCBvcGVyYXRp
b24pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgY3Vyc29y
LT5jbGVhclByZWZldGNoZWRSZWNvcmRzKCk7CisKKyAgICBBU1NFUlQoZGF0YS5vcHRpb24gPT0g
SW5kZXhlZERCOjpDdXJzb3JJdGVyYXRlT3B0aW9uOjpSZXBseSk7CiAgICAgbV9kYXRhYmFzZS0+
Y29ubmVjdGlvblByb3h5KCkuaXRlcmF0ZUN1cnNvcihvcGVyYXRpb24sIGRhdGEpOwogfQogCkBA
IC0xMTI2LDcgKzExNDYsNyBAQCBSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVl
c3REZWxldGVSZWNvcmQoSlNHbG9iYWxPYmplY3QmIHN0YXRlLCBJREJPYgogICAgICAgICBwcm90
ZWN0ZWRUaGlzLT5kaWREZWxldGVSZWNvcmRPblNlcnZlcihyZXF1ZXN0LmdldCgpLCByZXN1bHQp
OwogICAgIH0sIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJhbmdlID0gcmFuZ2Uu
aXNvbGF0ZWRDb3B5KCldIChhdXRvJiBvcGVyYXRpb24pIHsKICAgICAgICAgcHJvdGVjdGVkVGhp
cy0+ZGVsZXRlUmVjb3JkT25TZXJ2ZXIob3BlcmF0aW9uLCByYW5nZSk7Ci0gICAgfSkpOworICAg
IH0pLCBJc1dyaXRlT3BlcmF0aW9uOjpZZXMpOwogICAgIHJldHVybiByZXF1ZXN0OwogfQogCkBA
IC0xMTY1LDcgKzExODUsNyBAQCBSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVl
c3RDbGVhck9iamVjdFN0b3JlKEpTR2xvYmFsT2JqZWN0JiBzdGF0ZSwgSQogICAgICAgICBwcm90
ZWN0ZWRUaGlzLT5kaWRDbGVhck9iamVjdFN0b3JlT25TZXJ2ZXIocmVxdWVzdC5nZXQoKSwgcmVz
dWx0KTsKICAgICB9LCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBvYmplY3RTdG9y
ZUlkZW50aWZpZXJdIChhdXRvJiBvcGVyYXRpb24pIHsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+
Y2xlYXJPYmplY3RTdG9yZU9uU2VydmVyKG9wZXJhdGlvbiwgb2JqZWN0U3RvcmVJZGVudGlmaWVy
KTsKLSAgICB9KSk7CisgICAgfSksIElzV3JpdGVPcGVyYXRpb246Olllcyk7CiAKICAgICByZXR1
cm4gcmVxdWVzdDsKIH0KQEAgLTEyMDUsNyArMTIyNSw3IEBAIFJlZjxJREJSZXF1ZXN0PiBJREJU
cmFuc2FjdGlvbjo6cmVxdWVzdFB1dE9yQWRkKEpTR2xvYmFsT2JqZWN0JiBzdGF0ZSwgSURCT2Jq
ZWN0CiAgICAgICAgIHByb3RlY3RlZFRoaXMtPmRpZFB1dE9yQWRkT25TZXJ2ZXIocmVxdWVzdC5n
ZXQoKSwgcmVzdWx0KTsKICAgICB9LCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBr
ZXksIHZhbHVlID0gbWFrZVJlZih2YWx1ZSksIG92ZXJ3cml0ZU1vZGVdIChhdXRvJiBvcGVyYXRp
b24pIHsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+cHV0T3JBZGRPblNlcnZlcihvcGVyYXRpb24s
IGtleS5nZXQoKSwgdmFsdWUucHRyKCksIG92ZXJ3cml0ZU1vZGUpOwotICAgIH0pKTsKKyAgICB9
KSwgSXNXcml0ZU9wZXJhdGlvbjo6WWVzKTsKIAogICAgIHJldHVybiByZXF1ZXN0OwogfQpAQCAt
MTI5Myw3ICsxMzEzLDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGVsZXRlT2JqZWN0U3RvcmUo
Y29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUpCiAgICAgICAgIHByb3RlY3RlZFRoaXMtPmRp
ZERlbGV0ZU9iamVjdFN0b3JlT25TZXJ2ZXIocmVzdWx0KTsKICAgICB9LCBbcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBvYmplY3RTdG9yZU5hbWUgPSBvYmplY3RTdG9yZU5hbWUuaXNv
bGF0ZWRDb3B5KCldIChhdXRvJiBvcGVyYXRpb24pIHsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+
ZGVsZXRlT2JqZWN0U3RvcmVPblNlcnZlcihvcGVyYXRpb24sIG9iamVjdFN0b3JlTmFtZSk7Ci0g
ICAgfSkpOworICAgIH0pLCBJc1dyaXRlT3BlcmF0aW9uOjpZZXMpOwogfQogCiB2b2lkIElEQlRy
YW5zYWN0aW9uOjpkZWxldGVPYmplY3RTdG9yZU9uU2VydmVyKElEQkNsaWVudDo6VHJhbnNhY3Rp
b25PcGVyYXRpb24mIG9wZXJhdGlvbiwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUpCkBA
IC0xMzIzLDcgKzEzNDMsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpkZWxldGVJbmRleCh1aW50
NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaQogICAgICAgICBwcm90
ZWN0ZWRUaGlzLT5kaWREZWxldGVJbmRleE9uU2VydmVyKHJlc3VsdCk7CiAgICAgfSwgW3Byb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleE5h
bWUgPSBpbmRleE5hbWUuaXNvbGF0ZWRDb3B5KCldIChhdXRvJiBvcGVyYXRpb24pIHsKICAgICAg
ICAgcHJvdGVjdGVkVGhpcy0+ZGVsZXRlSW5kZXhPblNlcnZlcihvcGVyYXRpb24sIG9iamVjdFN0
b3JlSWRlbnRpZmllciwgaW5kZXhOYW1lKTsKLSAgICB9KSk7CisgICAgfSksIElzV3JpdGVPcGVy
YXRpb246Olllcyk7CiB9CiAKIHZvaWQgSURCVHJhbnNhY3Rpb246OmRlbGV0ZUluZGV4T25TZXJ2
ZXIoSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uLCBjb25zdCB1aW50
NjRfdCYgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGluZGV4TmFtZSkKQEAg
LTE0NzQsNiArMTQ5NCwxMiBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjphdXRvQ29tbWl0KCkKICAg
ICBjb21taXQoKTsKIH0KIAordWludDY0X3QgSURCVHJhbnNhY3Rpb246OmdlbmVyYXRlT3BlcmF0
aW9uSUQoKQoreworICAgIHN0YXRpYyBzdGQ6OmF0b21pYzx1aW50NjRfdD4gY3VycmVudE9wZXJh
dGlvbklEKDEpOworICAgIHJldHVybiBjdXJyZW50T3BlcmF0aW9uSUQgKz0gMTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0Up
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2Fj
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24u
aAppbmRleCAzNThiMDFiYzAxNGFhNjE0NDhhMzE2NTY1NjdlY2EyYTM1ZDJhMzI2Li5kNDE3NzNj
Y2M1ZDY1ZjgzNDUwODFiY2Q1N2E4ZjlkYWQ2YzM0OTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKQEAgLTcxLDYgKzcxLDggQEAg
cHVibGljOgogICAgIHN0YXRpYyBSZWY8SURCVHJhbnNhY3Rpb24+IGNyZWF0ZShJREJEYXRhYmFz
ZSYsIGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYpOwogICAgIHN0YXRpYyBSZWY8SURCVHJhbnNh
Y3Rpb24+IGNyZWF0ZShJREJEYXRhYmFzZSYsIGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYsIElE
Qk9wZW5EQlJlcXVlc3QmKTsKIAorICAgIHN0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZU9wZXJhdGlv
bklEKCk7CisKICAgICBXRUJDT1JFX0VYUE9SVCB+SURCVHJhbnNhY3Rpb24oKSBmaW5hbDsKIAog
ICAgIC8vIElEQlRyYW5zYWN0aW9uIElETApAQCAtMTY1LDcgKzE2Nyw4IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBmaW5pc2hBYm9ydE9yQ29tbWl0KCk7CiAgICAgdm9pZCBhYm9ydEluUHJvZ3Jlc3NP
cGVyYXRpb25zKGNvbnN0IElEQkVycm9yJik7CiAKLSAgICB2b2lkIHNjaGVkdWxlT3BlcmF0aW9u
KFJlZjxJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uPiYmKTsKKyAgICBlbnVtIGNsYXNz
IElzV3JpdGVPcGVyYXRpb24gOiBib29sIHsgTm8sIFllcyB9OworICAgIHZvaWQgc2NoZWR1bGVP
cGVyYXRpb24oUmVmPElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24+JiYsIElzV3JpdGVP
cGVyYXRpb24gPSBJc1dyaXRlT3BlcmF0aW9uOjpObyk7CiAgICAgdm9pZCBoYW5kbGVPcGVyYXRp
b25zQ29tcGxldGVkT25TZXJ2ZXIoKTsKICAgICB2b2lkIGhhbmRsZVBlbmRpbmdPcGVyYXRpb25z
KCk7CiAgICAgdm9pZCBhdXRvQ29tbWl0KCk7CkBAIC0yNDQsOCArMjQ3LDggQEAgcHJpdmF0ZToK
IAogICAgIERlcXVlPFJlZlB0cjxJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uPj4gbV9w
ZW5kaW5nVHJhbnNhY3Rpb25PcGVyYXRpb25RdWV1ZTsKICAgICBEZXF1ZTxJREJDbGllbnQ6OlRy
YW5zYWN0aW9uT3BlcmF0aW9uKj4gbV90cmFuc2FjdGlvbk9wZXJhdGlvbnNJblByb2dyZXNzUXVl
dWU7Ci0gICAgRGVxdWU8c3RkOjpwYWlyPFJlZlB0cjxJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3Bl
cmF0aW9uPiwgSURCUmVzdWx0RGF0YT4+IG1fY29tcGxldGVkT25TZXJ2ZXJRdWV1ZTsKICAgICBE
ZXF1ZTxSZWZQdHI8SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbj4+IG1fYWJvcnRRdWV1
ZTsKKyAgICBIYXNoTWFwPFJlZlB0cjxJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uPiwg
SURCUmVzdWx0RGF0YT4gbV90cmFuc2FjdGlvbk9wZXJhdGlvblJlc3VsdE1hcDsKIAogICAgIEhh
c2hNYXA8SURCUmVzb3VyY2VJZGVudGlmaWVyLCBSZWZQdHI8SURCQ2xpZW50OjpUcmFuc2FjdGlv
bk9wZXJhdGlvbj4+IG1fdHJhbnNhY3Rpb25PcGVyYXRpb25NYXA7CiAKQEAgLTI1OCw2ICsyNjEs
OCBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX2NvbnRleHRTdG9wcGVkIHsgZmFsc2UgfTsKICAg
ICBib29sIG1fZGlkRGlzcGF0Y2hBYm9ydE9yQ29tbWl0IHsgZmFsc2UgfTsKKworICAgIHVpbnQ2
NF90IG1fbGFzdFdyaXRlT3BlcmF0aW9uSUQgeyAwIH07CiB9OwogCiBjbGFzcyBUcmFuc2FjdGlv
bkFjdGl2YXRvciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JbmRleGVkREIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0luZGV4ZWRE
Qi5oCmluZGV4IDUwOWJiZjI3OGIzZjlmMzc1N2Y2ZjFiNTA0MGVjNzZkNWQyYzlhMDAuLmJmMzA4
YWRhOTZhMmIwNjA5OGQzNmQyYWM3MTBlZDViYzYzMjc3ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0luZGV4ZWREQi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0luZGV4ZWREQi5oCkBAIC0xMDYsNiArMTA2LDExIEBAIGVudW0g
Y2xhc3MgR2V0QWxsVHlwZSB7CiAKIGVudW0gY2xhc3MgQ29ubmVjdGlvbkNsb3NlZE9uQmVoYWxm
T2ZTZXJ2ZXIgOiBib29sIHsgTm8sIFllcyB9OwogCitlbnVtIGNsYXNzIEN1cnNvckl0ZXJhdGVP
cHRpb24geworICAgIERvTm90UmVwbHksCisgICAgUmVwbHksCit9OworCiB9IC8vIG5hbWVzcGFj
ZSBJbmRleGVkREIKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Qcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblBy
b3h5LmNwcAppbmRleCA0ZWM0NDdlMjZmMTFkZmE2MmJmMDgzNjhiZjE0Zjg1YTgyZWNmNTExLi45
NTZkZmFlNjQ1MTc0OThkZTM4ZTU0ODMxYjU5MWI0ZjYzNTVjOTU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVj
dGlvblByb3h5LmNwcApAQCAtMjM4LDcgKzIzOCw4IEBAIHZvaWQgSURCQ29ubmVjdGlvblByb3h5
OjpvcGVuQ3Vyc29yKFRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24sIGNvbnN0IElEQkN1
CiB2b2lkIElEQkNvbm5lY3Rpb25Qcm94eTo6aXRlcmF0ZUN1cnNvcihUcmFuc2FjdGlvbk9wZXJh
dGlvbiYgb3BlcmF0aW9uLCBjb25zdCBJREJJdGVyYXRlQ3Vyc29yRGF0YSYgZGF0YSkKIHsKICAg
ICBjb25zdCBJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YSB7IG9wZXJhdGlvbiB9OwotICAgIHNh
dmVPcGVyYXRpb24ob3BlcmF0aW9uKTsKKyAgICBpZiAoZGF0YS5vcHRpb24gIT0gSW5kZXhlZERC
OjpDdXJzb3JJdGVyYXRlT3B0aW9uOjpEb05vdFJlcGx5KQorICAgICAgICBzYXZlT3BlcmF0aW9u
KG9wZXJhdGlvbik7CiAKICAgICBjYWxsQ29ubmVjdGlvbk9uTWFpblRocmVhZCgmSURCQ29ubmVj
dGlvblRvU2VydmVyOjppdGVyYXRlQ3Vyc29yLCByZXF1ZXN0RGF0YSwgZGF0YSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvVHJhbnNhY3Rp
b25PcGVyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50
L1RyYW5zYWN0aW9uT3BlcmF0aW9uLmNwcAppbmRleCA4ZTFkZTA2ZDcxZThmMGIyMjNkNjg2ZTVl
MWE4YTIyMDliNzQzODQzLi5hYTU5MDZmNDc1ZTVlZTBhYWNkZjExZjE3ZDNlYTY4ZTI4YjUxNTI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvVHJh
bnNhY3Rpb25PcGVyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAgVHJh
bnNhY3Rpb25PcGVyYXRpb246OlRyYW5zYWN0aW9uT3BlcmF0aW9uKElEQlRyYW5zYWN0aW9uJiB0
cmFuc2FjdGlvbiwgSURCUmVxdWUKICAgICBpZiAoYXV0byogY3Vyc29yID0gcmVxdWVzdC5wZW5k
aW5nQ3Vyc29yKCkpCiAgICAgICAgIG1fY3Vyc29ySWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SURC
UmVzb3VyY2VJZGVudGlmaWVyPihjdXJzb3ItPmluZm8oKS5pZGVudGlmaWVyKCkpOwogCisgICAg
cmVxdWVzdC5zZXRUcmFuc2FjdGlvbk9wZXJhdGlvbklEKG1fb3BlcmF0aW9uSUQpOwogICAgIG1f
aWRiUmVxdWVzdCA9ICZyZXF1ZXN0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oCmlu
ZGV4IGUyZjE0OGFlZmJiNDM0MzJhNjFjODQ2MmJiMTRmMzllNWE3NjA4YTYuLjdhYjU3NTU1NzA4
ZWM3NGI5ZDE2ZDE1NmNlOWU5MzI1Njc4N2NkMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlv
bi5oCkBAIC0xMTIsMTAgKzExMiwxMyBAQCBwdWJsaWM6CiAgICAgYm9vbCBuZXh0UmVxdWVzdENh
bkdvVG9TZXJ2ZXIoKSBjb25zdCB7IHJldHVybiBtX25leHRSZXF1ZXN0Q2FuR29Ub1NlcnZlciAm
JiBtX2lkYlJlcXVlc3Q7IH0KICAgICB2b2lkIHNldE5leHRSZXF1ZXN0Q2FuR29Ub1NlcnZlcihi
b29sIG5leHRSZXF1ZXN0Q2FuR29Ub1NlcnZlcikgeyBtX25leHRSZXF1ZXN0Q2FuR29Ub1NlcnZl
ciA9IG5leHRSZXF1ZXN0Q2FuR29Ub1NlcnZlcjsgfQogCisgICAgdWludDY0X3Qgb3BlcmF0aW9u
SUQoKSBjb25zdCB7IHJldHVybiBtX29wZXJhdGlvbklEOyB9CisKIHByb3RlY3RlZDoKICAgICBU
cmFuc2FjdGlvbk9wZXJhdGlvbihJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCiAgICAgICAg
IDogbV90cmFuc2FjdGlvbih0cmFuc2FjdGlvbikKICAgICAgICAgLCBtX2lkZW50aWZpZXIodHJh
bnNhY3Rpb24uY29ubmVjdGlvblByb3h5KCkpCisgICAgICAgICwgbV9vcGVyYXRpb25JRCh0cmFu
c2FjdGlvbi5nZW5lcmF0ZU9wZXJhdGlvbklEKCkpCiAgICAgewogICAgIH0KIApAQCAtMTQyLDYg
KzE0NSw4IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPElEQlJlcXVlc3Q+IG1faWRiUmVxdWVzdDsK
ICAgICBib29sIG1fbmV4dFJlcXVlc3RDYW5Hb1RvU2VydmVyIHsgdHJ1ZSB9OwogICAgIGJvb2wg
bV9kaWRDb21wbGV0ZSB7IGZhbHNlIH07CisKKyAgICB1aW50NjRfdCBtX29wZXJhdGlvbklEIHsg
MCB9OwogfTsKIAogY2xhc3MgVHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsIGZpbmFsIDogcHVibGlj
IFRyYW5zYWN0aW9uT3BlcmF0aW9uIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9JREJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJCYWNraW5nU3RvcmUuaAppbmRleCBjNDI2NDBiM2Jm
NmM2MGIwODdmMjQ1ZWZkM2FmMDFjMzY2MmZhMjllLi5hN2RmN2ExZGNkNjA3NWRkYTQ1MTA5MGFh
OTMwMzdhZTgyMWNkYmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvSURCQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL0lEQkJhY2tpbmdTdG9yZS5oCkBAIC04NSw3ICs4NSw2IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIElEQkVycm9yIG1heWJlVXBkYXRlS2V5R2VuZXJhdG9yTnVtYmVy
KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50
NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGRvdWJsZSBuZXdLZXlOdW1iZXIpID0gMDsKICAg
ICB2aXJ0dWFsIElEQkVycm9yIG9wZW5DdXJzb3IoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVy
JiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQkN1cnNvckluZm8mLCBJREJHZXRSZXN1
bHQmIG91dFJlc3VsdCkgPSAwOwogICAgIHZpcnR1YWwgSURCRXJyb3IgaXRlcmF0ZUN1cnNvcihj
b25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3Qg
SURCUmVzb3VyY2VJZGVudGlmaWVyJiBjdXJzb3JJZGVudGlmaWVyLCBjb25zdCBJREJJdGVyYXRl
Q3Vyc29yRGF0YSYsIElEQkdldFJlc3VsdCYgb3V0UmVzdWx0KSA9IDA7Ci0gICAgdmlydHVhbCBi
b29sIHByZWZldGNoQ3Vyc29yKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rp
b25JZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIGN1cnNvcklkZW50aWZp
ZXIpID0gMDsKIAogICAgIHZpcnR1YWwgSURCT2JqZWN0U3RvcmVJbmZvKiBpbmZvRm9yT2JqZWN0
U3RvcmUodWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGRlbGV0ZUJhY2tpbmdTdG9yZSgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUu
aAppbmRleCAzNzhkMmE1ZjdhMGQ2NzNmMjQzMjkzODEwNzRlZThiMTk1ODExYmVkLi43NGRjOTUw
OTQ1YTZlZjRiOGViNTcyYThiZDRkMTVkZGE1MmI4ZmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tp
bmdTdG9yZS5oCkBAIC03NCw3ICs3NCw2IEBAIHByaXZhdGU6CiAgICAgSURCRXJyb3IgbWF5YmVV
cGRhdGVLZXlHZW5lcmF0b3JOdW1iZXIoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFu
c2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgZG91Ymxl
IG5ld0tleU51bWJlcikgZmluYWw7CiAgICAgSURCRXJyb3Igb3BlbkN1cnNvcihjb25zdCBJREJS
ZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCQ3Vyc29y
SW5mbyYsIElEQkdldFJlc3VsdCYgb3V0UmVzdWx0KSBmaW5hbDsKICAgICBJREJFcnJvciBpdGVy
YXRlQ3Vyc29yKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlm
aWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIGN1cnNvcklkZW50aWZpZXIsIGNvbnN0
IElEQkl0ZXJhdGVDdXJzb3JEYXRhJiwgSURCR2V0UmVzdWx0JiBvdXRSZXN1bHQpIGZpbmFsOwot
ICAgIGJvb2wgcHJlZmV0Y2hDdXJzb3IoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiwgY29u
c3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJikgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KIAogICAg
IElEQk9iamVjdFN0b3JlSW5mbyogaW5mb0Zvck9iamVjdFN0b3JlKHVpbnQ2NF90IG9iamVjdFN0
b3JlSWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBkZWxldGVCYWNraW5nU3RvcmUoKSBmaW5h
bDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9T
UUxpdGVJREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggM2ZhMTAyZGI2NTkyODBk
N2Q2YTA1MGNlMWVhN2ZjNDA4MDJiZmRkNy4uNTczYmVjNzdlMmYyZjNkMWMxMjEyMWJjNThmZWNj
M2ZjZjFhM2UyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTEzNjYs
OCArMTM2Niw4IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW5kZXgo
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjCiAKICAgICB3aGlsZSAoIWN1cnNv
ci0+Y3VycmVudEtleSgpLmlzTnVsbCgpKSB7CiAgICAgICAgIGF1dG8mIGtleSA9IGN1cnNvci0+
Y3VycmVudEtleSgpOwotICAgICAgICBhdXRvKiB2YWx1ZSA9IGN1cnNvci0+Y3VycmVudFZhbHVl
KCk7Ci0gICAgICAgIFRocmVhZFNhZmVEYXRhQnVmZmVyIHZhbHVlQnVmZmVyID0gdmFsdWUgPyB2
YWx1ZS0+ZGF0YSgpIDogVGhyZWFkU2FmZURhdGFCdWZmZXIoKTsKKyAgICAgICAgYXV0byB2YWx1
ZSA9IGN1cnNvci0+Y3VycmVudFZhbHVlKCk7CisgICAgICAgIFRocmVhZFNhZmVEYXRhQnVmZmVy
IHZhbHVlQnVmZmVyID0gdmFsdWUuZGF0YSgpOwogCiAgICAgICAgIEFTU0VSVChjdXJzb3ItPmN1
cnJlbnRSZWNvcmRSb3dJRCgpKTsKIApAQCAtMjM1NCw3ICsyMzU0LDcgQEAgSURCRXJyb3IgU1FM
aXRlSURCQmFja2luZ1N0b3JlOjpnZXRBbGxJbmRleFJlY29yZHMoY29uc3QgSURCUmVzb3VyY2VJ
ZGVudGlmaWVyJgogICAgICAgICBJREJLZXlEYXRhIGtleUNvcHkgPSBjdXJzb3ItPmN1cnJlbnRQ
cmltYXJ5S2V5KCk7CiAgICAgICAgIHJlc3VsdC5hZGRLZXkoV1RGTW92ZShrZXlDb3B5KSk7CiAg
ICAgICAgIGlmIChnZXRBbGxSZWNvcmRzRGF0YS5nZXRBbGxUeXBlID09IEluZGV4ZWREQjo6R2V0
QWxsVHlwZTo6VmFsdWVzKQotICAgICAgICAgICAgcmVzdWx0LmFkZFZhbHVlKGN1cnNvci0+Y3Vy
cmVudFZhbHVlKCkgPyAqY3Vyc29yLT5jdXJyZW50VmFsdWUoKSA6IElEQlZhbHVlKCkpOworICAg
ICAgICAgICAgcmVzdWx0LmFkZFZhbHVlKElEQlZhbHVlKGN1cnNvci0+Y3VycmVudFZhbHVlKCkp
KTsKIAogICAgICAgICArK2N1cnJlbnRDb3VudDsKICAgICAgICAgY3Vyc29yLT5hZHZhbmNlKDEp
OwpAQCAtMjQwMSw3ICsyNDAxLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpn
ZXRJbmRleFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW4KICAgICAgICAg
ZWxzZSB7CiAgICAgICAgICAgICBhdXRvKiBvYmplY3RTdG9yZUluZm8gPSBpbmZvRm9yT2JqZWN0
U3RvcmUob2JqZWN0U3RvcmVJRCk7CiAgICAgICAgICAgICBBU1NFUlQob2JqZWN0U3RvcmVJbmZv
KTsKLSAgICAgICAgICAgIGdldFJlc3VsdCA9IHsgY3Vyc29yLT5jdXJyZW50UHJpbWFyeUtleSgp
LCBjdXJzb3ItPmN1cnJlbnRQcmltYXJ5S2V5KCksIGN1cnNvci0+Y3VycmVudFZhbHVlKCkgPyAq
Y3Vyc29yLT5jdXJyZW50VmFsdWUoKSA6IElEQlZhbHVlKCksIG9iamVjdFN0b3JlSW5mby0+a2V5
UGF0aCgpIH07CisgICAgICAgICAgICBnZXRSZXN1bHQgPSB7IGN1cnNvci0+Y3VycmVudFByaW1h
cnlLZXkoKSwgY3Vyc29yLT5jdXJyZW50UHJpbWFyeUtleSgpLCBJREJWYWx1ZShjdXJzb3ItPmN1
cnJlbnRWYWx1ZSgpKSwgb2JqZWN0U3RvcmVJbmZvLT5rZXlQYXRoKCkgfTsKICAgICAgICAgfQog
ICAgIH0KIApAQCAtMjcyMSwyNiArMjcyMSwxOCBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5n
U3RvcmU6Oml0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFucwog
ICAgICAgICB9CiAgICAgfQogCi0gICAgYXV0byogb2JqZWN0U3RvcmVJbmZvID0gaW5mb0Zvck9i
amVjdFN0b3JlKGN1cnNvci0+b2JqZWN0U3RvcmVJRCgpKTsKLSAgICBBU1NFUlQob2JqZWN0U3Rv
cmVJbmZvKTsKLSAgICBjdXJzb3ItPmN1cnJlbnREYXRhKHJlc3VsdCwgb2JqZWN0U3RvcmVJbmZv
LT5rZXlQYXRoKCkpOwotICAgIHJldHVybiBJREJFcnJvciB7IH07Ci19Ci0KLWJvb2wgU1FMaXRl
SURCQmFja2luZ1N0b3JlOjpwcmVmZXRjaEN1cnNvcihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZp
ZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiBj
dXJzb3JJZGVudGlmaWVyKQotewotICAgIExPRyhJbmRleGVkREIsICJTUUxpdGVJREJCYWNraW5n
U3RvcmU6OnByZWZldGNoQ3Vyc29yIik7Ci0KLSAgICBBU1NFUlQobV9zcWxpdGVEQik7Ci0gICAg
QVNTRVJUKG1fc3FsaXRlREItPmlzT3BlbigpKTsKKyAgICBpZiAoZGF0YS5vcHRpb24gPT0gSW5k
ZXhlZERCOjpDdXJzb3JJdGVyYXRlT3B0aW9uOjpSZXBseSkgeworICAgICAgICBhdXRvKiBvYmpl
Y3RTdG9yZUluZm8gPSBpbmZvRm9yT2JqZWN0U3RvcmUoY3Vyc29yLT5vYmplY3RTdG9yZUlEKCkp
OworICAgICAgICBBU1NFUlQob2JqZWN0U3RvcmVJbmZvKTsKIAotICAgIGF1dG8qIGN1cnNvciA9
IG1fY3Vyc29ycy5nZXQoY3Vyc29ySWRlbnRpZmllcik7Ci0gICAgaWYgKCFjdXJzb3IgfHwgIWN1
cnNvci0+dHJhbnNhY3Rpb24oKSB8fCAhY3Vyc29yLT50cmFuc2FjdGlvbigpLT5pblByb2dyZXNz
KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgYm9vbCBzaG91bGRQcmVmZXRjaCA9
IGtleS5pc051bGwoKSAmJiBwcmltYXJ5S2V5LmlzTnVsbCgpOworICAgICAgICBpZiAoc2hvdWxk
UHJlZmV0Y2gpCisgICAgICAgICAgICBjdXJzb3ItPnByZWZldGNoKCk7CiAKLSAgICBBU1NFUlRf
VU5VU0VEKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY3Vyc29yLT50cmFuc2FjdGlvbigpLT50cmFu
c2FjdGlvbklkZW50aWZpZXIoKSA9PSB0cmFuc2FjdGlvbklkZW50aWZpZXIpOworICAgICAgICBj
dXJzb3ItPmN1cnJlbnREYXRhKHJlc3VsdCwgb2JqZWN0U3RvcmVJbmZvLT5rZXlQYXRoKCksIHNo
b3VsZFByZWZldGNoID8gU1FMaXRlSURCQ3Vyc29yOjpTaG91bGRJbmNsdWRlUHJlZmV0Y2hlZFJl
Y29yZHM6OlllcyA6IFNRTGl0ZUlEQkN1cnNvcjo6U2hvdWxkSW5jbHVkZVByZWZldGNoZWRSZWNv
cmRzOjpObyk7CisgICAgfQogCi0gICAgcmV0dXJuIGN1cnNvci0+cHJlZmV0Y2goKTsKKyAgICBy
ZXR1cm4gSURCRXJyb3IgeyB9OwogfQogCiBJREJPYmplY3RTdG9yZUluZm8qIFNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6aW5mb0Zvck9iamVjdFN0b3JlKHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRp
ZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaAppbmRleCBjZTI5ZDJjZmNmYjQxZmFi
NmJkMzA1YmJlMmRjZjA0NTZmYjZkODJlLi40OTQwYzE1MTYxMTA0YWQ5Njk1OGZkMjM0MzdkYWM2
OTk0MGNjNzE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5oCkBAIC04MCw3ICs4MCw2
IEBAIHB1YmxpYzoKICAgICBJREJFcnJvciBtYXliZVVwZGF0ZUtleUdlbmVyYXRvck51bWJlcihj
b25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0
X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBkb3VibGUgbmV3S2V5TnVtYmVyKSBmaW5hbDsKICAg
ICBJREJFcnJvciBvcGVuQ3Vyc29yKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNh
Y3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJDdXJzb3JJbmZvJiwgSURCR2V0UmVzdWx0JiBvdXRS
ZXN1bHQpIGZpbmFsOwogICAgIElEQkVycm9yIGl0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVzb3Vy
Y2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRl
bnRpZmllciYgY3Vyc29ySWRlbnRpZmllciwgY29uc3QgSURCSXRlcmF0ZUN1cnNvckRhdGEmLCBJ
REJHZXRSZXN1bHQmIG91dFJlc3VsdCkgZmluYWw7Ci0gICAgYm9vbCBwcmVmZXRjaEN1cnNvcihj
b25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXIm
KSBmaW5hbDsKIAogICAgIElEQk9iamVjdFN0b3JlSW5mbyogaW5mb0Zvck9iamVjdFN0b3JlKHVp
bnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBkZWxldGVCYWNr
aW5nU3RvcmUoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKaW5kZXggYjM3NzE3Mzc1NzRl
MjIzNjYxN2QyNDg3YzY5MGUxMjBlYWRkNzAwYi4uZTE5YWExM2ViMDFlNTViYjBjZjgwODFmNzQz
YmFhNzIzYTYzMjU1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKQEAgLTQyLDggKzQyLDggQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBJREJTZXJ2ZXIgewogCi1zdGF0aWMgY29u
c3Qgc2l6ZV90IHByZWZldGNoTGltaXQgPSAxMjg7Ci1zdGF0aWMgY29uc3Qgc2l6ZV90IHByZWZl
dGNoU2l6ZUxpbWl0ID0gOCAqIE1COworc3RhdGljIGNvbnN0IHNpemVfdCBwcmVmZXRjaExpbWl0
ID0gMjU2Oworc3RhdGljIGNvbnN0IHNpemVfdCBwcmVmZXRjaFNpemVMaW1pdCA9IDEgKiBNQjsK
IAogc3RkOjp1bmlxdWVfcHRyPFNRTGl0ZUlEQkN1cnNvcj4gU1FMaXRlSURCQ3Vyc29yOjptYXli
ZUNyZWF0ZShTUUxpdGVJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIGNvbnN0IElEQkN1cnNv
ckluZm8mIGluZm8pCiB7CkBAIC0xMDIsNyArMTAyLDcgQEAgU1FMaXRlSURCQ3Vyc29yOjp+U1FM
aXRlSURCQ3Vyc29yKCkKICAgICAgICAgbV90cmFuc2FjdGlvbi0+Y2xvc2VDdXJzb3IoKnRoaXMp
OwogfQogCi12b2lkIFNRTGl0ZUlEQkN1cnNvcjo6Y3VycmVudERhdGEoSURCR2V0UmVzdWx0JiBy
ZXN1bHQsIGNvbnN0IE9wdGlvbmFsPElEQktleVBhdGg+JiBrZXlQYXRoKQordm9pZCBTUUxpdGVJ
REJDdXJzb3I6OmN1cnJlbnREYXRhKElEQkdldFJlc3VsdCYgcmVzdWx0LCBjb25zdCBPcHRpb25h
bDxJREJLZXlQYXRoPiYga2V5UGF0aCwgU2hvdWxkSW5jbHVkZVByZWZldGNoZWRSZWNvcmRzIHNo
b3VsZEluY2x1ZGVQcmVmZXRjaGVkUmVjb3JkcykKIHsKICAgICBBU1NFUlQoIW1fZmV0Y2hlZFJl
Y29yZHMuaXNFbXB0eSgpKTsKIApAQCAtMTEzLDcgKzExMywyNSBAQCB2b2lkIFNRTGl0ZUlEQkN1
cnNvcjo6Y3VycmVudERhdGEoSURCR2V0UmVzdWx0JiByZXN1bHQsIGNvbnN0IE9wdGlvbmFsPElE
QktleVBhdAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgcmVzdWx0ID0geyBjdXJyZW50
UmVjb3JkLnJlY29yZC5rZXksIGN1cnJlbnRSZWNvcmQucmVjb3JkLnByaW1hcnlLZXksIGN1cnJl
bnRSZWNvcmQucmVjb3JkLnZhbHVlID8gKmN1cnJlbnRSZWNvcmQucmVjb3JkLnZhbHVlIDogSURC
VmFsdWUoKSwga2V5UGF0aH07CisgICAgaWYgKHNob3VsZEluY2x1ZGVQcmVmZXRjaGVkUmVjb3Jk
cyA9PSBTaG91bGRJbmNsdWRlUHJlZmV0Y2hlZFJlY29yZHM6Ok5vKSB7CisgICAgICAgIHJlc3Vs
dCA9IHsgY3VycmVudFJlY29yZC5yZWNvcmQua2V5LCBjdXJyZW50UmVjb3JkLnJlY29yZC5wcmlt
YXJ5S2V5LCBJREJWYWx1ZShjdXJyZW50UmVjb3JkLnJlY29yZC52YWx1ZSksIGtleVBhdGggfTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFZlY3RvcjxJREJDdXJzb3JSZWNvcmQ+IHBy
ZWZldGNoZWRSZWNvcmRzOworICAgIHByZWZldGNoZWRSZWNvcmRzLnJlc2VydmVDYXBhY2l0eSht
X2ZldGNoZWRSZWNvcmRzLnNpemUoKSk7CisgICAgZm9yIChhdXRvJiByZWNvcmQgOiBtX2ZldGNo
ZWRSZWNvcmRzKSB7CisgICAgICAgIGlmIChyZWNvcmQuaXNUZXJtaW5hbFJlY29yZCgpKQorICAg
ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgcHJlZmV0Y2hlZFJlY29yZHMuYXBwZW5kKHJlY29y
ZC5yZWNvcmQpOworICAgIH0KKworICAgIC8vIEZpcnN0IHJlY29yZCB3aWxsIGJlIHJldHVybmVk
IGFzIGN1cnJlbnQgcmVjb3JkLgorICAgIGlmICghcHJlZmV0Y2hlZFJlY29yZHMuaXNFbXB0eSgp
KQorICAgICAgICBwcmVmZXRjaGVkUmVjb3Jkcy5yZW1vdmUoMCk7CisKKyAgICByZXN1bHQgPSB7
IGN1cnJlbnRSZWNvcmQucmVjb3JkLmtleSwgY3VycmVudFJlY29yZC5yZWNvcmQucHJpbWFyeUtl
eSwgSURCVmFsdWUoY3VycmVudFJlY29yZC5yZWNvcmQudmFsdWUpLCBrZXlQYXRoLCBXVEZNb3Zl
KHByZWZldGNoZWRSZWNvcmRzKSB9OwogfQogCiBzdGF0aWMgU3RyaW5nIGJ1aWxkUHJlSW5kZXhT
dGF0ZW1lbnQoYm9vbCBpc0RpcmVjdGlvbk5leHQpCkBAIC0yNjMsNiArMjgxLDggQEAgdm9pZCBT
UUxpdGVJREJDdXJzb3I6Om9iamVjdFN0b3JlUmVjb3Jkc0NoYW5nZWQoKQogICAgIC8vIFdlIGFs
c28gbmVlZCB0byB0aHJvdyBhd2F5IGFueSBmZXRjaGVkIHJlY29yZHMgYXMgdGhleSBtYXkgbm8g
bG9uZ2VyIGJlIHZhbGlkLgogICAgIG1fZmV0Y2hlZFJlY29yZHMuY2xlYXIoKTsKICAgICBtX2Zl
dGNoZWRSZWNvcmRzU2l6ZSA9IDA7CisKKyAgICBtX3ByZWZldGNoQ291bnQgPSAwOwogfQogCiB2
b2lkIFNRTGl0ZUlEQkN1cnNvcjo6cmVzZXRBbmRSZWJpbmRTdGF0ZW1lbnQoKQpAQCAtMzU5LDE3
ICszNzksMzIgQEAgYm9vbCBTUUxpdGVJREJDdXJzb3I6OnJlc2V0QW5kUmViaW5kUHJlSW5kZXhT
dGF0ZW1lbnRJZk5lY2Vzc2FyeSgpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgU1FMaXRl
SURCQ3Vyc29yOjpwcmVmZXRjaCgpCitib29sIFNRTGl0ZUlEQkN1cnNvcjo6cHJlZmV0Y2hPbmVS
ZWNvcmQoKQogewotICAgIExPRyhJbmRleGVkREIsICJTUUxpdGVJREJDdXJzb3I6OnByZWZldGNo
KCkgLSBDdXJzb3IgYWxyZWFkeSBoYXMgJXp1IGZldGNoZWQgcmVjb3JkcyIsIG1fZmV0Y2hlZFJl
Y29yZHMuc2l6ZSgpKTsKKyAgICBMT0coSW5kZXhlZERCLCAiU1FMaXRlSURCQ3Vyc29yOjpwcmVm
ZXRjaE9uZVJlY29yZCgpIC0gQ3Vyc29yIGFscmVhZHkgaGFzICV6dSBmZXRjaGVkIHJlY29yZHMi
LCBtX2ZldGNoZWRSZWNvcmRzLnNpemUoKSk7CiAKICAgICBpZiAobV9mZXRjaGVkUmVjb3Jkc1Np
emUgPj0gcHJlZmV0Y2hTaXplTGltaXQgfHwgbV9mZXRjaGVkUmVjb3Jkcy5pc0VtcHR5KCkgfHwg
bV9mZXRjaGVkUmVjb3Jkcy5zaXplKCkgPj0gcHJlZmV0Y2hMaW1pdCB8fCBtX2ZldGNoZWRSZWNv
cmRzLmxhc3QoKS5pc1Rlcm1pbmFsUmVjb3JkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIG1fY3VycmVudEtleUZvclVuaXF1ZW5lc3MgPSBtX2ZldGNoZWRSZWNvcmRzLmxhc3QoKS5y
ZWNvcmQua2V5OwotICAgIGZldGNoKCk7CiAKLSAgICByZXR1cm4gbV9mZXRjaGVkUmVjb3Jkcy5z
aXplKCkgPCBwcmVmZXRjaExpbWl0ICYmIG1fZmV0Y2hlZFJlY29yZHNTaXplIDwgcHJlZmV0Y2hT
aXplTGltaXQ7CisgICAgcmV0dXJuIGZldGNoKCkgJiYgbV9mZXRjaGVkUmVjb3Jkcy5zaXplKCkg
PCBwcmVmZXRjaExpbWl0ICYmIG1fZmV0Y2hlZFJlY29yZHNTaXplIDwgcHJlZmV0Y2hTaXplTGlt
aXQ7Cit9CisKK3ZvaWQgU1FMaXRlSURCQ3Vyc29yOjppbmNyZWFzZUNvdW50VG9QcmVmZXRjaCgp
Cit7CisgICAgbV9wcmVmZXRjaENvdW50ID0gbV9wcmVmZXRjaENvdW50ID8gbV9wcmVmZXRjaENv
dW50ICogMiA6IDE7Cit9CisKK2Jvb2wgU1FMaXRlSURCQ3Vyc29yOjpwcmVmZXRjaCgpCit7Cisg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fcHJlZmV0Y2hDb3VudDsgKytpKSB7CisgICAg
ICAgIGlmICghcHJlZmV0Y2hPbmVSZWNvcmQoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKKyAgICBpbmNyZWFzZUNvdW50VG9QcmVmZXRjaCgpOworICAgIHJldHVybiB0cnVl
OwogfQogCiBib29sIFNRTGl0ZUlEQkN1cnNvcjo6YWR2YW5jZSh1aW50NjRfdCBjb3VudCkKQEAg
LTQ4OCw3ICs1MjMsNyBAQCBTUUxpdGVJREJDdXJzb3I6OkZldGNoUmVzdWx0IFNRTGl0ZUlEQkN1
cnNvcjo6aW50ZXJuYWxGZXRjaE5leHRSZWNvcmQoU1FMaXRlQ3VycwogICAgIEFTU0VSVCghbV9m
ZXRjaGVkUmVjb3Jkcy5pc0VtcHR5KCkpOwogICAgIEFTU0VSVCghbV9mZXRjaGVkUmVjb3Jkcy5s
YXN0KCkuaXNUZXJtaW5hbFJlY29yZCgpKTsKIAotICAgIHJlY29yZC5yZWNvcmQudmFsdWUgPSBu
dWxscHRyOworICAgIHJlY29yZC5yZWNvcmQudmFsdWUgPSB7IH07CiAKICAgICBhdXRvJiBkYXRh
YmFzZSA9IG1fdHJhbnNhY3Rpb24tPnNxbGl0ZVRyYW5zYWN0aW9uKCktPmRhdGFiYXNlKCk7CiAg
ICAgU1FMaXRlU3RhdGVtZW50KiBzdGF0ZW1lbnQgPSBudWxscHRyOwpAQCAtNTQ2LDcgKzU4MSw3
IEBAIFNRTGl0ZUlEQkN1cnNvcjo6RmV0Y2hSZXN1bHQgU1FMaXRlSURCQ3Vyc29yOjppbnRlcm5h
bEZldGNoTmV4dFJlY29yZChTUUxpdGVDdXJzCiAgICAgICAgIH0KIAogICAgICAgICBpZiAobV9j
dXJzb3JUeXBlID09IEluZGV4ZWREQjo6Q3Vyc29yVHlwZTo6S2V5QW5kVmFsdWUpCi0gICAgICAg
ICAgICByZWNvcmQucmVjb3JkLnZhbHVlID0gbWFrZVVuaXF1ZTxJREJWYWx1ZT4oVGhyZWFkU2Fm
ZURhdGFCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGtleURhdGEpKSwgYmxvYlVSTHMsIGJsb2JGaWxl
UGF0aHMpOworICAgICAgICAgICAgcmVjb3JkLnJlY29yZC52YWx1ZSA9IHsgVGhyZWFkU2FmZURh
dGFCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGtleURhdGEpKSwgYmxvYlVSTHMsIGJsb2JGaWxlUGF0
aHMgfTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAoIWRlc2VyaWFsaXplSURCS2V5RGF0YShr
ZXlEYXRhLmRhdGEoKSwga2V5RGF0YS5zaXplKCksIHJlY29yZC5yZWNvcmQucHJpbWFyeUtleSkp
IHsKICAgICAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGRlc2VyaWFsaXplIHZhbHVlIGRh
dGEgZnJvbSBkYXRhYmFzZSB3aGlsZSBhZHZhbmNpbmcgaW5kZXggY3Vyc29yIik7CkBAIC01NzIs
NyArNjA3LDcgQEAgU1FMaXRlSURCQ3Vyc29yOjpGZXRjaFJlc3VsdCBTUUxpdGVJREJDdXJzb3I6
OmludGVybmFsRmV0Y2hOZXh0UmVjb3JkKFNRTGl0ZUN1cnMKIAogICAgICAgICBpZiAocmVzdWx0
ID09IFNRTElURV9ST1cpIHsKICAgICAgICAgICAgIG1fY2FjaGVkT2JqZWN0U3RvcmVTdGF0ZW1l
bnQtPmdldENvbHVtbkJsb2JBc1ZlY3RvcigwLCBrZXlEYXRhKTsKLSAgICAgICAgICAgIHJlY29y
ZC5yZWNvcmQudmFsdWUgPSBtYWtlVW5pcXVlPElEQlZhbHVlPihUaHJlYWRTYWZlRGF0YUJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUoa2V5RGF0YSkpKTsKKyAgICAgICAgICAgIHJlY29yZC5yZWNvcmQu
dmFsdWUgPSB7IFRocmVhZFNhZmVEYXRhQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShrZXlEYXRhKSkg
fTsKICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT0gU1FMSVRFX0RPTkUpIHsKICAgICAgICAg
ICAgIC8vIFRoaXMgaW5kaWNhdGVzIHRoYXQgdGhlIHJlY29yZCB3ZSdyZSB0cnlpbmcgdG8gcmV0
cmlldmUgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBvYmplY3Qgc3RvcmUuCiAgICAgICAgICAg
ICAvLyBTa2lwIG92ZXIgaXQuCkBAIC02NDUsMTAgKzY4MCwxMCBAQCBjb25zdCBJREJLZXlEYXRh
JiBTUUxpdGVJREJDdXJzb3I6OmN1cnJlbnRQcmltYXJ5S2V5KCkgY29uc3QKICAgICByZXR1cm4g
bV9mZXRjaGVkUmVjb3Jkcy5maXJzdCgpLnJlY29yZC5wcmltYXJ5S2V5OwogfQogCi1JREJWYWx1
ZSogU1FMaXRlSURCQ3Vyc29yOjpjdXJyZW50VmFsdWUoKSBjb25zdAorY29uc3QgSURCVmFsdWUm
IFNRTGl0ZUlEQkN1cnNvcjo6Y3VycmVudFZhbHVlKCkgY29uc3QKIHsKICAgICBBU1NFUlQoIW1f
ZmV0Y2hlZFJlY29yZHMuaXNFbXB0eSgpKTsKLSAgICByZXR1cm4gbV9mZXRjaGVkUmVjb3Jkcy5m
aXJzdCgpLnJlY29yZC52YWx1ZS5nZXQoKTsKKyAgICByZXR1cm4gbV9mZXRjaGVkUmVjb3Jkcy5m
aXJzdCgpLnJlY29yZC52YWx1ZTsKIH0KIAogYm9vbCBTUUxpdGVJREJDdXJzb3I6OmRpZENvbXBs
ZXRlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJDdXJzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuaAppbmRleCBkODFkZmI1YzNkOTUxMTBiYTNjMmQx
ZTkzYjY2MzEyYzAyZDM2MjY3Li5mZGNhODBlZDBiNjFmNmU1MWQzMDU4ZmZmNjM5ZWRiZGMyYjJm
MmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
U1FMaXRlSURCQ3Vyc29yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1NRTGl0ZUlEQkN1cnNvci5oCkBAIC02NiwxMCArNjYsMTEgQEAgcHVibGljOgogCiAg
ICAgY29uc3QgSURCS2V5RGF0YSYgY3VycmVudEtleSgpIGNvbnN0OwogICAgIGNvbnN0IElEQktl
eURhdGEmIGN1cnJlbnRQcmltYXJ5S2V5KCkgY29uc3Q7Ci0gICAgSURCVmFsdWUqIGN1cnJlbnRW
YWx1ZSgpIGNvbnN0OworICAgIGNvbnN0IElEQlZhbHVlJiBjdXJyZW50VmFsdWUoKSBjb25zdDsK
IAogICAgIGJvb2wgYWR2YW5jZSh1aW50NjRfdCBjb3VudCk7CiAgICAgYm9vbCBpdGVyYXRlKGNv
bnN0IElEQktleURhdGEmIHRhcmdldEtleSwgY29uc3QgSURCS2V5RGF0YSYgdGFyZ2V0UHJpbWFy
eUtleSk7CisgICAgYm9vbCBwcmVmZXRjaE9uZVJlY29yZCgpOwogICAgIGJvb2wgcHJlZmV0Y2go
KTsKIAogICAgIGJvb2wgZGlkQ29tcGxldGUoKSBjb25zdDsKQEAgLTc3LDcgKzc4LDggQEAgcHVi
bGljOgogCiAgICAgdm9pZCBvYmplY3RTdG9yZVJlY29yZHNDaGFuZ2VkKCk7CiAKLSAgICB2b2lk
IGN1cnJlbnREYXRhKElEQkdldFJlc3VsdCYsIGNvbnN0IE9wdGlvbmFsPElEQktleVBhdGg+Jik7
CisgICAgZW51bSBjbGFzcyBTaG91bGRJbmNsdWRlUHJlZmV0Y2hlZFJlY29yZHMgeyBObywgWWVz
IH07CisgICAgdm9pZCBjdXJyZW50RGF0YShJREJHZXRSZXN1bHQmLCBjb25zdCBPcHRpb25hbDxJ
REJLZXlQYXRoPiYsIFNob3VsZEluY2x1ZGVQcmVmZXRjaGVkUmVjb3JkcyA9IFNob3VsZEluY2x1
ZGVQcmVmZXRjaGVkUmVjb3Jkczo6Tm8pOwogCiBwcml2YXRlOgogICAgIGJvb2wgZXN0YWJsaXNo
U3RhdGVtZW50KCk7CkBAIC0xMDksNiArMTExLDggQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgaXNE
aXJlY3Rpb25OZXh0KCkgY29uc3QgeyByZXR1cm4gbV9jdXJzb3JEaXJlY3Rpb24gPT0gSW5kZXhl
ZERCOjpDdXJzb3JEaXJlY3Rpb246Ok5leHQgfHwgbV9jdXJzb3JEaXJlY3Rpb24gPT0gSW5kZXhl
ZERCOjpDdXJzb3JEaXJlY3Rpb246Ok5leHR1bmlxdWU7IH0KIAorICAgIHZvaWQgaW5jcmVhc2VD
b3VudFRvUHJlZmV0Y2goKTsKKwogICAgIFNRTGl0ZUlEQlRyYW5zYWN0aW9uKiBtX3RyYW5zYWN0
aW9uOwogICAgIElEQlJlc291cmNlSWRlbnRpZmllciBtX2N1cnNvcklkZW50aWZpZXI7CiAgICAg
aW50NjRfdCBtX29iamVjdFN0b3JlSUQ7CkBAIC0xMzMsNiArMTM3LDggQEAgcHJpdmF0ZToKICAg
ICBpbnQ2NF90IG1fYm91bmRJRCB7IDAgfTsKIAogICAgIGJvb2wgbV9iYWNraW5nU3RvcmVDdXJz
b3IgeyBmYWxzZSB9OworCisgICAgdW5zaWduZWQgbV9wcmVmZXRjaENvdW50IHsgMCB9OwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgSURCU2VydmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcAppbmRl
eCBhMGEwNTE2ZjZmYmNjNGU2ODBmYzJjOWE3ZjA0ODc5MjM1NTNjZGRmLi5hZjViMzE4NTA4NTZk
NWQyZGI2MjlhOTYwMGFiNGY0MjY0MzE0ZTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAK
QEAgLTg1NCwyMiArODU0LDYgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6aXRlcmF0ZUN1cnNv
cihjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IEkKICAgICBhdXRvIGVy
cm9yID0gbV9iYWNraW5nU3RvcmUtPml0ZXJhdGVDdXJzb3IodHJhbnNhY3Rpb25JZGVudGlmaWVy
LCBjdXJzb3JJZGVudGlmaWVyLCBkYXRhLCByZXN1bHQpOwogCiAgICAgY2FsbGJhY2soZXJyb3Is
IHJlc3VsdCk7Ci0KLSAgICBpZiAoZXJyb3IuaXNOdWxsKCkpCi0gICAgICAgIHByZWZldGNoQ3Vy
c29yKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY3Vyc29ySWRlbnRpZmllciwgZGF0YS5jb3VudCA/
IGRhdGEuY291bnQgOiAxKTsKLX0KLQotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cHJlZmV0Y2hD
dXJzb3IoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIs
IGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgY3Vyc29ySWRlbnRpZmllciwgdWludDY0X3Qg
c3RlcCkKLXsKLSAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6OnByZWZldGNo
Q3Vyc29yIik7Ci0KLSAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKLQotICAgIHVpbnQ2NF90
IGNvdW50VG9QcmVmZXRjaCA9IHN0ZXAgKiAyOwotICAgIHdoaWxlIChjb3VudFRvUHJlZmV0Y2gg
LS0pIHsKLSAgICAgICAgaWYgKCFtX2JhY2tpbmdTdG9yZS0+cHJlZmV0Y2hDdXJzb3IodHJhbnNh
Y3Rpb25JZGVudGlmaWVyLCBjdXJzb3JJZGVudGlmaWVyKSkKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICB9CiB9CiAKIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNvbW1pdFRyYW5zYWN0aW9uKFVu
aXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBFcnJvckNhbGxiYWNrIGNh
bGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaAppbmRleCAwNmJmNmE0ZWYxNmM2MjMxOGNkYzM5
MzliMjMxNmRhYmE1NGYwNDNhLi4xYzY4ODczNTA2MDI2ZWZkZWZhMGQ3Mjc5M2NlOGNhMmM3NGM0
NDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
VW5pcXVlSURCRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaApAQCAtMTQyLDggKzE0Miw2IEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIGNsZWFyVHJhbnNhY3Rpb25zT25Db25uZWN0aW9uKFVuaXF1ZUlEQkRhdGFi
YXNlQ29ubmVjdGlvbiYpOwogCi0gICAgdm9pZCBwcmVmZXRjaEN1cnNvcihjb25zdCBJREJSZXNv
dXJjZUlkZW50aWZpZXImLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImLCB1aW50NjRfdCBz
dGVwKTsKLQogICAgIElEQlNlcnZlciYgbV9zZXJ2ZXI7CiAgICAgSURCRGF0YWJhc2VJZGVudGlm
aWVyIG1faWRlbnRpZmllcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNh
Y3Rpb24uY3BwCmluZGV4IDBjOWJiMTBmZjg4Y2Q2NGM5MDU2OTNmNjJjZmFjZWU4NDFhZTJmOGQu
Ljk5NzRjYTY3MmQzNTllM2VmZmExMDRlMWFjZTYwZDg4YzQ4ZWJlZTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRy
YW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAKQEAgLTM3NCw5ICszNzQsMTMgQEAg
dm9pZCBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjppdGVyYXRlQ3Vyc29yKGNvbnN0IElE
QlJlcXVlc3REYXRhJiByZXF1ZXN0RGEKICAgICBhdXRvIGRhdGFiYXNlID0gbV9kYXRhYmFzZUNv
bm5lY3Rpb24tPmRhdGFiYXNlKCk7CiAgICAgQVNTRVJUKGRhdGFiYXNlKTsKICAgICAKLSAgICBk
YXRhYmFzZS0+aXRlcmF0ZUN1cnNvcihyZXF1ZXN0RGF0YSwgZGF0YSwgW3RoaXMsIHJlcXVlc3RE
YXRhXShhdXRvJiBlcnJvciwgY29uc3QgSURCR2V0UmVzdWx0JiByZXN1bHQpIHsKKyAgICBkYXRh
YmFzZS0+aXRlcmF0ZUN1cnNvcihyZXF1ZXN0RGF0YSwgZGF0YSwgW3RoaXMsIHJlcXVlc3REYXRh
LCBvcHRpb24gPSBkYXRhLm9wdGlvbl0oYXV0byYgZXJyb3IsIGNvbnN0IElEQkdldFJlc3VsdCYg
cmVzdWx0KSB7CiAgICAgICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZVRyYW5z
YWN0aW9uOjppdGVyYXRlQ3Vyc29yIChjYWxsYmFjaykiKTsKIAorICAgICAgICBpZiAob3B0aW9u
ID09IEluZGV4ZWREQjo6Q3Vyc29ySXRlcmF0ZU9wdGlvbjo6RG9Ob3RSZXBseSkKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICBBU1NFUlQoIWVycm9yLmlzTnVsbCgpIHx8IHJlc3VsdC5p
c0RlZmluZWQoKSk7CiAgICAgICAgIGlmIChlcnJvci5pc051bGwoKSkKICAgICAgICAgICAgIG1f
ZGF0YWJhc2VDb25uZWN0aW9uLT5jb25uZWN0aW9uVG9DbGllbnQoKS5kaWRJdGVyYXRlQ3Vyc29y
KElEQlJlc3VsdERhdGE6Oml0ZXJhdGVDdXJzb3JTdWNjZXNzKHJlcXVlc3REYXRhLnJlcXVlc3RJ
ZGVudGlmaWVyKCksIHJlc3VsdCkpOwogICAgICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCQ3Vyc29yUmVjb3JkLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCQ3Vyc29yUmVjb3JkLmgKaW5k
ZXggNjEzNjA0YThjNWZhMmVjNzg0M2JiOThiMDU0ZTEwMWY2NjNlNjMxZS4uOWQ1YWI5NGFkNTRk
NDU5YTkzNjA0OTM4NzBiNzMyYzNlNzRhMDFiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkN1cnNvclJlY29yZC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJDdXJzb3JSZWNvcmQuaApAQCAtMzUs
MTIgKzM1LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBJREJDdXJzb3JSZWNvcmQg
ewogICAgIElEQktleURhdGEga2V5OwogICAgIElEQktleURhdGEgcHJpbWFyeUtleTsKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8SURCVmFsdWU+IHZhbHVlOworICAgIElEQlZhbHVlIHZhbHVlOwogCiAg
ICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0Owog
ICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiwg
SURCQ3Vyc29yUmVjb3JkJik7CiAKLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIGtl
eS5zaXplKCkgKyBwcmltYXJ5S2V5LnNpemUoKSArICh2YWx1ZSA/IHZhbHVlLT5zaXplKCkgOiAw
KTsgfQorICAgIElEQkN1cnNvclJlY29yZCBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICBzaXpl
X3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIGtleS5zaXplKCkgKyBwcmltYXJ5S2V5LnNpemUoKSAr
IHZhbHVlLnNpemUoKTsgfQogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTY0LDYg
KzY1LDExIEBAIGJvb2wgSURCQ3Vyc29yUmVjb3JkOjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rlciwg
SURCQ3Vyc29yUmVjb3JkJiByZWNvcmQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2lubGluZSBJ
REJDdXJzb3JSZWNvcmQgSURCQ3Vyc29yUmVjb3JkOjppc29sYXRlZENvcHkoKSBjb25zdAorewor
ICAgIHJldHVybiB7IGtleS5pc29sYXRlZENvcHkoKSwgcHJpbWFyeUtleS5pc29sYXRlZENvcHko
KSwgdmFsdWUuaXNvbGF0ZWRDb3B5KCkgfTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCSXRlcmF0ZUN1cnNvckRhdGEuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkl0ZXJhdGVDdXJz
b3JEYXRhLmNwcAppbmRleCBmMWYwYmIzYjZkYjQxZWE5N2QzMDJmYTNkYzI3MjY2ZmRlODYxNzk3
Li5hZDlmNGE0NzUwMDIyYmIwNjQ2MmZjOGRjOWY1MTkyYjQ2YmJhYjc1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCSXRlcmF0ZUN1cnNvckRh
dGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJJ
dGVyYXRlQ3Vyc29yRGF0YS5jcHAKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBJREJJdGVyYXRlQ3Vyc29yRGF0YSBJREJJdGVyYXRlQ3Vyc29yRGF0YTo6aXNvbGF0ZWRD
b3B5KCkgY29uc3QKIHsKLSAgICByZXR1cm4geyBrZXlEYXRhLmlzb2xhdGVkQ29weSgpLCBwcmlt
YXJ5S2V5RGF0YS5pc29sYXRlZENvcHkoKSwgY291bnQgfTsKKyAgICByZXR1cm4geyBrZXlEYXRh
Lmlzb2xhdGVkQ29weSgpLCBwcmltYXJ5S2V5RGF0YS5pc29sYXRlZENvcHkoKSwgY291bnQsIG9w
dGlvbiB9OwogfQogCiAjaWYgIUxPR19ESVNBQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkl0ZXJhdGVDdXJzb3JEYXRhLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCSXRlcmF0ZUN1cnNvckRhdGEu
aAppbmRleCA4ZDMxNWM1YTZhMzE3NGYxZTIzMWE0MGExMTU5NmNmZTgyZjNiMWIxLi40ZGY2YzY0
NWYzYjI4MWU3Y2EwMGJkOWQ5MmJiNzFkMGM0ZmI0MGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCSXRlcmF0ZUN1cnNvckRhdGEuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCSXRlcmF0ZUN1cnNv
ckRhdGEuaApAQCAtMzUsNiArMzUsNyBAQCBzdHJ1Y3QgSURCSXRlcmF0ZUN1cnNvckRhdGEgewog
ICAgIElEQktleURhdGEga2V5RGF0YTsKICAgICBJREJLZXlEYXRhIHByaW1hcnlLZXlEYXRhOwog
ICAgIHVuc2lnbmVkIGNvdW50OworICAgIEluZGV4ZWREQjo6Q3Vyc29ySXRlcmF0ZU9wdGlvbiBv
cHRpb24geyBJbmRleGVkREI6OkN1cnNvckl0ZXJhdGVPcHRpb246OlJlcGx5IH07CiAKICAgICBX
RUJDT1JFX0VYUE9SVCBJREJJdGVyYXRlQ3Vyc29yRGF0YSBpc29sYXRlZENvcHkoKSBjb25zdDsK
IApAQCAtNTAsNiArNTEsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBJREJJdGVy
YXRlQ3Vyc29yRGF0YTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5j
b2RlciA8PCBrZXlEYXRhIDw8IHByaW1hcnlLZXlEYXRhIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90
Pihjb3VudCk7CisgICAgZW5jb2Rlci5lbmNvZGVFbnVtKG9wdGlvbik7CiB9CiAKIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+CkBAIC03Myw5ICs3NSwxMSBAQCBib29sIElEQkl0ZXJhdGVDdXJzb3JE
YXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgSURCSXRlcmF0ZUN1cnNvckRhdGEmIGl0ZXJh
dAogCiAgICAgaWYgKGNvdW50ID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICBpdGVyYXRvckN1cnNvckRhdGEuY291bnQg
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY291bnQpOwogCisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZUVudW0oaXRlcmF0b3JDdXJzb3JEYXRhLm9wdGlvbikpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYjE4ZTc0MjQ2YmYxZjI3ZWZmNzliMDc2OWZl
NjgwZDIzYjM1OWZlMi4uNzk3NTVkNzBmNmJhM2VlMmU1ZWZiOTgwOGViMzMyYzc5NzNhOWYzOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMTQwMyw3ICsxNDAzLDcgQEAKIAkJNTEwRDRBMzQxMDMxNjVFRTAwNDlFQTU0IC8qIFNv
Y2tldFN0cmVhbUVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MTBENEEyRTEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtRXJyb3IuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTBENEEz
NzEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBENEEzMTEwMzE2NUVFMDA0OUVBNTQg
LyogU29ja2V0U3RyZWFtSGFuZGxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNTEwRDRBMzgxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVh
bUhhbmRsZUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTEwRDRBMzIxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVu
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTUx
MTBGQ0ZDMUUwMzY0MUQwMDZGOEQwQiAvKiBJREJDdXJzb3JSZWNvcmQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMTBGQ0ZCMUUwMzYyQTUwMDZGOEQw
QiAvKiBJREJDdXJzb3JSZWNvcmQuaCAqLzsgfTsKKwkJNTExMEZDRkMxRTAzNjQxRDAwNkY4RDBC
IC8qIElEQkN1cnNvclJlY29yZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTExMEZDRkIxRTAzNjJBNTAwNkY4RDBCIC8qIElEQkN1cnNvclJlY29yZC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxMUVD
MTI4MUM1MEFBQ0EwMDMyRjk4MyAvKiBJREJTZXJpYWxpemF0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTFFQzEyNjFDNTBBQTU3MDAzMkY5ODMg
LyogSURCU2VyaWFsaXphdGlvbi5oICovOyB9OwogCQk1MTFFQzEyQzFDNTBBQkJGMDAzMkY5ODMg
LyogU1FMaXRlSURCVHJhbnNhY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxMUVDMTJBMUM1MEFCQkEwMDMyRjk4MyAvKiBTUUxpdGVJREJUcmFu
c2FjdGlvbi5oICovOyB9OwogCQk1MTFFQzEzMDFDNTBBQkY1MDAzMkY5ODMgLyogU1FMaXRlSURC
Q3Vyc29yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTFFQzEyRTFDNTBBQkVDMDAzMkY5ODMgLyogU1FMaXRlSURCQ3Vyc29yLmggKi87IH07CkBAIC0x
Mzg3OSwxMiArMTM4NzksMTIgQEAKIAkJQ0Q5NEE1Q0MxRjcxQ0I2OTAwRjUyNUM1IC8qIENETVJl
cXVpcmVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENETVJlcXVpcmVt
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEOTRBNUNEMUY3MUNCNjkwMEY1
MjVDNSAvKiBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQ0Q5NEE1Q0UxRjcxQ0I2QTAwRjUyNUM1IC8qIENETUluc3RhbmNlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENETUluc3RhbmNlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEOTRBNUNGMUY3MUNCNjEwMEY1MjVDNSAvKiBDRE1Qcm94
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDRE1Qcm94eS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlDRDk0QTVDRjFGNzFDQjYxMDBGNTI1RDUgLyogQ0RNUHJv
eHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ0RNUHJveHkuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDk0QTVDRjFGNzFDQjZBMDBGNTI1QzUg
LyogQ0RNUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDRE1Qcml2
YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEOTRBNUQwMUY3MUNCNkIwMEY1
MjVDNSAvKiBDRE1SZXN0cmljdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ0RNUmVzdHJpY3Rpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEOTRB
NUQxMUY3MUNCNkIwMEY1MjVDNSAvKiBDRE1GYWN0b3J5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IENETUZhY3RvcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDRDk0QTVEMjFGNzFDQjZCMDBGNTI1QzUgLyogQ0RNRmFjdG9yeS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDRE1GYWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUNEOTRBNUNGMUY3MUNCNjEwMEY1MjVENSAvKiBDRE1Qcm94eS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDRE1Qcm94eS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUNEOTRBNUNGMUY3MUNCNjEwMEY1MjVDNSAvKiBDRE1Qcm94
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDRE1Qcm94eS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDRDk0QTVEMzFGNzFDQjZDMDBGNTI1QzUgLyogQ0RNTWVk
aWFDYXBhYmlsaXR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENETU1lZGlh
Q2FwYWJpbGl0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDk0QTVENDFGNzFD
QjZDMDBGNTI1QzUgLyogQ0RNS2V5U3RhdHVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IENETUtleVN0YXR1cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDk0
QTVENTFGNzFDQjZEMDBGNTI1QzUgLyogQ0RNU2Vzc2lvblR5cGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ0RNU2Vzc2lvblR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390560</attachid>
            <date>2020-02-12 14:18:55 -0800</date>
            <delta_ts>2020-02-12 14:31:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207602-20200212141854.patch</filename>
            <type>text/plain</type>
            <size>57230</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2NDM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2U4NTMxMWM5OGU5NmMz
Mzk5OTdhNWM4NDFmMmFkZjRmNjgzNGQwYS4uZTllNzc5MjVlZjRiODI3NjFmMzUyZWNiNTM1OTgx
NDJhNDkxYjBjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNSBAQAorMjAyMC0wMi0xMiAgU2lo
dWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBJbmRleGVkREI6IHByZWZl
dGNoIGN1cnNvciByZWNvcmRzIG9uIGNsaWVudCBzaWRlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc2MDIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzU4NDgzOTI3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIENhY2hlIGN1cnNvciByZWNvcmRzIG9uIG9uIGNsaWVudCBzaWRlIGFuZCB1c2UgdGhvc2Ug
cmVjb3JkcyBmb3IgaXRlcmF0ZSBvcGVyYXRpb25zLgorCisgICAgICAgIFRoaXMgbWFrZXMgY3Vy
c29yIGNvbnRpbnVlL2FkdmFuY2UgdGVzdHMgaW4gUGVyZm9ybWFuY2VUZXN0cy9JbmRleGVkREIv
YmFzaWNzIH4zeCBmYXN0ZXIuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorCisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QkN1cnNvcjo6c2V0R2V0UmVzdWx0KTogUmVjb3JkIHRoZSBJRCBvZiBUcmFuc2FjdGlvbk9wZXJh
dGlvbiB0aGF0IHVwZGF0ZXMgY2FjaGUuCisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6Oml0
ZXJhdGVXaXRoUHJlZmV0Y2hlZFJlY29yZHMpOiBJREJDdXJzb3IgdXNlcyBjYWNoZWQgcmVjb3Jk
cyBmb3IgaXRlcmF0ZSBvcGVydGFpb25zIGlmIAorICAgICAgICB0aGVyZSBpcyBubyB3cml0ZSBv
cGVyYXRpb24gYmV0d2VlbiBsYXN0IGNhY2hlIHVwZGF0ZSBhbmQgY3VycmVudCBpdGVyYXRpb24g
b3BlcmF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yOjpjbGVhclByZWZldGNoZWRS
ZWNvcmRzKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaDoKKworICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkdldFJlc3VsdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJREJHZXRSZXN1bHQ6Omlzb2xhdGVkQ29weSk6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCR2V0UmVzdWx0Lmg6CisgICAgICAgIChXZWJDb3JlOjpJREJHZXRSZXN1bHQ6OklE
QkdldFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJHZXRSZXN1bHQ6OnByZWZldGNoZWRS
ZWNvcmRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkdldFJlc3VsdDo6ZW5jb2RlIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkdldFJlc3VsdDo6ZGVjb2RlKToKKworICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwOiBSZWNvcmQgY29ycmVzcG9uZGlu
ZyBUcmFuc2FjdGlvbk9wZXJhdGlvbiBJRCBpbiByZXF1ZXN0LgorICAgICAgICAoV2ViQ29yZTo6
SURCUmVxdWVzdDo6ZGlkT3Blbk9ySXRlcmF0ZUN1cnNvcik6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvSURCUmVxdWVzdC5oOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6cGVu
ZGluZ0N1cnNvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpzZXRUcmFu
c2FjdGlvbk9wZXJhdGlvbklEKToKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRy
YW5zYWN0aW9uLmNwcDogSWYgYSBjdXJzb3IgaXRlcmF0ZSByZXF1ZXN0IGNhbiBiZSBoYW5kbGVk
IHdpdGggY2FjaGVkIHJlY29yZHMsCisgICAgICAgIElEQkNsaWVudCBkb2VzIG5lZWQgdG8gc2Vu
ZCByZXF1ZXN0IHRvIElEQlNlcnZlciBhbmQgd2FpdCBmb3IgcmVzcG9uc2UuIEJ1dCByZXF1ZXN0
cyBiZWZvcmUgdGhlIGl0ZXJhdGUgcmVxdWVzdAorICAgICAgICBtYXkgbmVlZCB0byB3YWl0IHNl
cnZlciB0byBhbnN3ZXIsIGFuZCBzcGVjIHJlcXVpcmVzIHRvIGhhbmRsZSByZXF1ZXN0cyBpbiBv
cmRlci4gVGhlcmVmb3JlLCB3ZSBub3cga2VlcCBhbGwgdGhlIAorICAgICAgICByZXN1bHRzIGlu
IG1fdHJhbnNhY3Rpb25PcGVyYXRpb25SZXN1bHRNYXAgYW5kIGhhbmRsZSB0aGUgcmVzdWx0IGFj
Y29yZGluZyB0byB0aGUgb3JkZXJpbmcgaW4gCisgICAgICAgIG1fdHJhbnNhY3Rpb25PcGVyYXRp
b25zSW5Qcm9ncmVzc1F1ZXVlLgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmFi
b3J0SW5Qcm9ncmVzc09wZXJhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rp
b246OnJlbW92ZVJlcXVlc3QpOiBCZWNhdXNlIHJlc3VsdCBvZiBhIGN1cnNvciByZXF1ZXN0IGNh
biBiZSBhbnN3ZXJlZCBzb29uZXIsIGl0IGlzIAorICAgICAgICBwb3NzaWJsZSB0aGF0IGluIGZp
bmlzaGVkRGlzcGF0Y2hFdmVudEZvclJlcXVlc3QsIG1fY3VycmVudGx5Q29tcGxldGluZ1JlcXVl
c3QsIHdoaWNoIGlzIGEgY3Vyc29yIHJlcXVlc3QsIGlzIAorICAgICAgICBzZXQgdG8gbnVsbHB0
ciwgYW5kIHRoZW4gaXQgaXMgc2V0IHRvIHRoZSBzYW1lIGN1cnNvciByZXF1ZXN0IGluIGhhbmRs
ZU9wZXJhdGlvbnNDb21wbGV0ZWRPblNlcnZlci4gVGhpcyAKKyAgICAgICAgaGFwcGVucyBpbiBk
aXNwYXRjaEV2ZW50IG9mIHRoZSBjdXJzb3IgcmVxdWVzdCwgd2hlcmUgcmVxdWVzdCB3b3VsZCBy
ZW1vdmUgaXRzZWxmIGZyb20gdHJhbnNhY3Rpb24gYXQgdGhlIGVuZC4KKyAgICAgICAgSW4gdGhp
cyBjYXNlLCB0cmFuc2FjdGlvbiBtYXkgY29tbWl0IGFmdGVyIHRoZSByZXF1ZXN0IGxpc3QgYmVj
b21lcyBlbXB0eS4gQnV0IHRyYW5zYWN0aW9uIHNob3VsZCBub3QgYmVjYXVzZQorICAgICAgICB0
aGF0IHJlcXVlc3QgaXMgc3RpbGwgdmFsaWQgYXMgbV9jdXJyZW50bHlDb21wbGV0aW5nUmVxdWVz
dCBhbmQgc2hvdWxkIG5vdCBiZSByZW1vdmVkLgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNh
Y3Rpb246OnNjaGVkdWxlT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0
aW9uOjpvcGVyYXRpb25Db21wbGV0ZWRPblNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJU
cmFuc2FjdGlvbjo6aGFuZGxlT3BlcmF0aW9uc0NvbXBsZXRlZE9uU2VydmVyKTogQWxsIHJlcXVl
c3RzIHdlcmUgc2VudCB0byBJREJTZXJ2ZXIgYW5kIHRoZQorICAgICAgICByZXNwb25zZS9yZXN1
bHQgb3JkZXIgd291bGQgbmF0dXJhbGx5IGJlIHRoZSBzYW1lIGFzIHJlcXVlc3Qgb3JkZXIuIE5v
dyB0aGF0IHNvbWUgcmVzdWx0cyBjYW4gYmUgZ2VuZXJhdGVkCisgICAgICAgIHNvb25lciwgd2Ug
bm8gbG9uZ2VyIGhhbmRsZSByZXF1ZXN0cyB1c2luZyBtX2NvbXBsZXRlZE9uU2VydmVyUXVldWUu
CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6Y3JlYXRlT2JqZWN0U3RvcmUpOiBN
YXJrIGFzIHdyaXRlIG9wZXJhdGlvbiB0byB0cmFjayBsYXN0IHdyaXRlIG9wZXJhdGlvbi4KKyAg
ICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZW5hbWVPYmplY3RTdG9yZSk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmNyZWF0ZUluZGV4KTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cmVuYW1lSW5kZXgpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0RGVsZXRlUmVjb3JkKTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cmVxdWVzdENsZWFyT2Jq
ZWN0U3RvcmUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZXF1
ZXN0UHV0T3JBZGQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpk
ZWxldGVPYmplY3RTdG9yZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rp
b246OmRlbGV0ZUluZGV4KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlv
bjo6aXRlcmF0ZUN1cnNvck9uU2VydmVyKTogT25seSB1c2UgY2FjaGVkIHJlY29yZHMgaWYgdGhl
IHJlcXVlc3QgZG9lcyBub3Qgc3BlY2lmeSB0YXJnZXQKKyAgICAgICAga2V5LiBJZiBjdXJzb3Ig
aXMgaXRlcmF0ZWQgc3VjY2Vzc2Z1bGx5IHdpdGggY2FjaGUsIHNlbmQgYSBtZXNzYWdlIHRvIElE
QlNlcnZlciB0byBub3RpZnkgYWJvdXQgdGhlIHByb2dyZXNzIGJ1dAorICAgICAgICBkb24ndCBu
ZWVkIGl0IHRvIHJlcGx5LiBPdGhlcndpc2UsIGZhbGwgYmFjayB0byBkZXBlbmQgb24gSURCU2Vy
dmVyIHRvIGFuc3dlciB0aGUgcmVxdWVzdC4KKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0
aW9uOjpnZW5lcmF0ZU9wZXJhdGlvbklEKTogVHJhbnNhY3Rpb25PcGVyYXRpb24gSUQgaXMgdW5p
cXVlIGluIGEgdHJhbnNhY3Rpb24uCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJh
bnNhY3Rpb24uaDoKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0luZGV4ZWREQi5oOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uUHJveHkuY3Bw
OiAKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5OjppdGVy
YXRlQ3Vyc29yKTogSWYgdGhlIGl0ZXJhdGVDdXJzb3IgZG9lcyBub3QgbmVlZCBhbiBhbnN3ZXIs
IGRvbid0CisgICAgICAgIHRyYWNrIGl0IGluIElEQkNvbm5lY3Rpb25Qcm94eS4KKworICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uOjpUcmFuc2Fj
dGlvbk9wZXJhdGlvbik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5z
YWN0aW9uT3BlcmF0aW9uLmg6IEFkZCBJRCB0byBUcmFuc2FjdGlvbk9wZXJhdGlvbi4KKyAgICAg
ICAgKFdlYkNvcmU6OklEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb246Om9wZXJhdGlvbklE
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRp
b246OlRyYW5zYWN0aW9uT3BlcmF0aW9uKToKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9JREJCYWNraW5nU3RvcmUuaDogcmVtb3ZlIHByZWZldGNoQ3Vyc29yIGFzIGl0IGlz
IG5vdCB1c2VkIG5vdy4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5
SURCQmFja2luZ1N0b3JlLmg6IERpdHRvLiBBbHNvIHRoaXMgcGF0Y2ggb25seSBkZWFscyB3aXRo
IHByZWZldGNoaW5nIGluIAorICAgICAgICBwZXJzaXN0ZW50IHN0b3JlLgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuaDoKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVJ
bmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6Z2V0QWxsSW5kZXhSZWNvcmRzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FM
aXRlSURCQmFja2luZ1N0b3JlOjpnZXRJbmRleFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6aXRlcmF0ZUN1cnNvcik6IE9ubHkgcHJl
ZmV0Y2ggYXQgd2hlbiByZXF1ZXN0IG5lZWRzIHRvIGJlIGFuc3dlcmVkLgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OnByZWZldGNoQ3Vyc29yKTog
RGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFj
a2luZ1N0b3JlLmg6CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRl
SURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vy
c29yOjpjdXJyZW50RGF0YSk6IFByb3ZpZGUgYW4gb3B0aW9uIHRvIGluY2x1ZGUgcHJlZmV0Y2hl
ZCByZWNvcmRzIGluIHJlc3VsdC4KKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRl
SURCQ3Vyc29yOjpvYmplY3RTdG9yZVJlY29yZHNDaGFuZ2VkKTogUmVzZXQgY291bnQgdG8gcHJl
ZmV0Y2ggd2hlbiB0aGVyZSBpcyBhIAorICAgICAgICBjaGFuZ2UgdG8gbWFrZSBwcmVmZXRjaCBh
ZGFwdGl2ZS4KKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpv
YmplY3RTdG9yZVJlY29yZHNDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
U1FMaXRlSURCQ3Vyc29yOjpwcmVmZXRjaE9uZVJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJTZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6aW5jcmVhc2VDb3VudFRvUHJlZmV0Y2gpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OnByZWZldGNoKTogQ291
bnQgdG8gcHJlZmV0Y2ggaXMgZGVjaWRlZCBieSBTUUxpdGVDdXJzb3Igbm93LgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OmludGVybmFsRmV0Y2hOZXh0UmVj
b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpjdXJy
ZW50VmFsdWUgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxp
dGVJREJDdXJzb3IuaDoKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9Vbmlx
dWVJREJEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlE
QkRhdGFiYXNlOjppdGVyYXRlQ3Vyc29yKTogTW92ZSBjYWxsIHRvIHByZWZldGNoIGN1cnNvciB0
byBTUUxpdGVJREJCYWNraW5nU3RvcmUuCisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVu
aXF1ZUlEQkRhdGFiYXNlOjpwcmVmZXRjaEN1cnNvcik6IERlbGV0ZWQuCisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmg6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9u
OjppdGVyYXRlQ3Vyc29yKToKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9J
REJDdXJzb3JSZWNvcmQuaDogU3RvcCB1c2UgcG9pbnRlciBmb3IgSURCVmFsdWUgZm9yIGVhc2ll
ciBlbmNvZGluZyBhbmQgZGVjb2RpbmcuCisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3JSZWNv
cmQ6OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yUmVjb3JkOjppc29s
YXRlZENvcHkgY29uc3QpOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lE
Qkl0ZXJhdGVDdXJzb3JEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkl0ZXJhdGVDdXJz
b3JEYXRhOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L3NoYXJlZC9JREJJdGVyYXRlQ3Vyc29yRGF0YS5oOiBBZGQgYW4gb3B0aW9uIHRvIGxldCBJREJT
ZXJ2ZXIga25vdyB3aGV0aGVyIGl0IHNob3VsZCBhbnN3ZXIKKyAgICAgICAgdGhlIGN1cnNvciBy
ZXF1ZXN0LiAKKyAgICAgICAgKFdlYkNvcmU6OklEQkl0ZXJhdGVDdXJzb3JEYXRhOjplbmNvZGUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCSXRlcmF0ZUN1cnNvckRhdGE6OmRlY29kZSk6
CisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMjAt
MDItMTIgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJ
RkNdIFJlbmFtZSBEaXNwbGF5OjpSdW46OlRleHRDb250ZXh0IHRvIFRleHRDb250ZW50CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVh
ZGVycy5jbWFrZQppbmRleCBhZjg3NzdlM2YwNWJmYjNhMmRhYjQwNzhmZTZkYTgwZTRlN2QyMjYw
Li43M2I0M2VlYTM1ZTJkNzYwYTc0MDJkOTJmY2I0NWU0ZjUwMjkzMTMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMu
Y21ha2UKQEAgLTM4LDYgKzM4LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVB
REVSUwogICAgIE1vZHVsZXMvZ2VvbG9jYXRpb24vUG9zaXRpb25PcHRpb25zLmgKIAogICAgIE1v
ZHVsZXMvaW5kZXhlZGRiL0lEQkFjdGl2ZURPTU9iamVjdC5oCisgICAgTW9kdWxlcy9pbmRleGVk
ZGIvSURCQ3Vyc29yUmVjb3JkLmgKICAgICBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlk
ZW50aWZpZXIuaAogICAgIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkdldEFsbFJlc3VsdC5oCiAgICAg
TW9kdWxlcy9pbmRleGVkZGIvSURCR2V0UmVzdWx0LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCmluZGV4IDM2OGVkYzIwNDgzYjU0MWFjZDdiM2Jm
NTliZjVjZjE3YTFjOTNhMGIuLjY1Yjg5YjU4NWI1Y2VhZmFmZjljNzAxMGYwMTlmNTVhMTVlNDZh
NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNw
cApAQCAtMzEyLDcgKzMxMiw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxXZWJDb3JlOjpJREJSZXF1ZXN0
Pj4gSURCQ3Vyc29yOjpkZWxldGVGdW5jdGlvbihKU0dsb2JhbE9iamVjdCYKICAgICByZXR1cm4g
cmVxdWVzdDsKIH0KIAotYm9vbCBJREJDdXJzb3I6OnNldEdldFJlc3VsdChJREJSZXF1ZXN0JiBy
ZXF1ZXN0LCBjb25zdCBJREJHZXRSZXN1bHQmIGdldFJlc3VsdCkKK2Jvb2wgSURCQ3Vyc29yOjpz
ZXRHZXRSZXN1bHQoSURCUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgSURCR2V0UmVzdWx0JiBnZXRS
ZXN1bHQsIHVpbnQ2NF90IG9wZXJhdGlvbklEKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJD
dXJzb3I6OnNldEdldFJlc3VsdCAtIGN1cnJlbnQga2V5ICVzIiwgZ2V0UmVzdWx0LmtleURhdGEo
KS5sb2dnaW5nU3RyaW5nKCkuc3Vic3RyaW5nKDAsIDEwMCkudXRmOCgpLmRhdGEoKSk7CiAgICAg
QVNTRVJUKGNhbkN1cnJlbnRUaHJlYWRBY2Nlc3NUaHJlYWRMb2NhbERhdGEoZWZmZWN0aXZlT2Jq
ZWN0U3RvcmUoKS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpKTsKQEAg
LTM0OSw2ICszNDksMTMgQEAgYm9vbCBJREJDdXJzb3I6OnNldEdldFJlc3VsdChJREJSZXF1ZXN0
JiByZXF1ZXN0LCBjb25zdCBJREJHZXRSZXN1bHQmIGdldFJlc3VsdCkKICAgICAgICAgbV9rZXlQ
YXRoID0gZ2V0UmVzdWx0LmtleVBhdGgoKTsKICAgICB9CiAKKyAgICBhdXRvIHByZWZldGNoZWRS
ZWNvcmRzID0gZ2V0UmVzdWx0LnByZWZldGNoZWRSZWNvcmRzKCk7CisgICAgaWYgKCFwcmVmZXRj
aGVkUmVjb3Jkcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgZm9yIChhdXRvJiByZWNvcmQgOiBwcmVm
ZXRjaGVkUmVjb3JkcykKKyAgICAgICAgICAgIG1fcHJlZmV0Y2hlZFJlY29yZHMuYXBwZW5kKHJl
Y29yZCk7CisgICAgICAgIG1fcHJlZmV0Y2hPcGVyYXRpb25JRCA9IG9wZXJhdGlvbklEOworICAg
IH0KKwogICAgIG1fZ290VmFsdWUgPSB0cnVlOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMzYw
LDYgKzM2NywyNiBAQCB2b2lkIElEQkN1cnNvcjo6Y2xlYXJXcmFwcGVycygpCiAgICAgbV92YWx1
ZVdyYXBwZXIuY2xlYXIoKTsKIH0KIAorT3B0aW9uYWw8SURCR2V0UmVzdWx0PiBJREJDdXJzb3I6
Oml0ZXJhdGVXaXRoUHJlZmV0Y2hlZFJlY29yZHModW5zaWduZWQgY291bnQsIHVpbnQ2NF90IGxh
c3RXcml0ZU9wZXJhdGlvbklEKQoreworICAgIHVuc2lnbmVkIHN0ZXAgPSBjb3VudCA+IDAgPyBj
b3VudCA6IDE7CisgICAgaWYgKHN0ZXAgPiBtX3ByZWZldGNoZWRSZWNvcmRzLnNpemUoKSB8fCBt
X3ByZWZldGNoT3BlcmF0aW9uSUQgPD0gbGFzdFdyaXRlT3BlcmF0aW9uSUQpCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICB3aGlsZSAoLS1zdGVwKQorICAgICAgICBtX3ByZWZl
dGNoZWRSZWNvcmRzLnJlbW92ZUZpcnN0KCk7CisKKyAgICBhdXRvIHJlY29yZCA9IG1fcHJlZmV0
Y2hlZFJlY29yZHMudGFrZUZpcnN0KCk7CisKKyAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNh
Y3Rpb246Oml0ZXJhdGVXaXRoUHJlZmV0Y2hlZFJlY29yZHMgY29uc3VtZXMgJXUgcmVjb3JkcyIs
IGNvdW50ID4gMCA/IGNvdW50IDogMSk7CisgICAgcmV0dXJuIElEQkdldFJlc3VsdChyZWNvcmQu
a2V5LCByZWNvcmQucHJpbWFyeUtleSwgSURCVmFsdWUocmVjb3JkLnZhbHVlKSwgZWZmZWN0aXZl
T2JqZWN0U3RvcmUoKS5rZXlQYXRoKCkpOworfQorCit2b2lkIElEQkN1cnNvcjo6Y2xlYXJQcmVm
ZXRjaGVkUmVjb3JkcygpCit7CisgICAgbV9wcmVmZXRjaGVkUmVjb3Jkcy5jbGVhcigpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRB
QkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1
cnNvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmgKaW5k
ZXggNDYyMmU3MDMzNDRiMzYwODBhNzFkZWEzMmRmOGE1MzFkY2ZjNThhYy4uN2JjOGY4YzAxN2Rm
NTBkMjZmOTlhNGJhM2I0MzI5YWViNjc1ZjhkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCQ3Vyc29yLmgKQEAgLTgxLDEwICs4MSwxMyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBjbGVhcldyYXBwZXJzKCk7CiAgICAgSURCUmVxdWVzdCogcmVxdWVzdCgpIHsgcmV0dXJu
IG1fcmVxdWVzdC5nZXQoKTsgfQogCi0gICAgYm9vbCBzZXRHZXRSZXN1bHQoSURCUmVxdWVzdCYs
IGNvbnN0IElEQkdldFJlc3VsdCYpOworICAgIGJvb2wgc2V0R2V0UmVzdWx0KElEQlJlcXVlc3Qm
LCBjb25zdCBJREJHZXRSZXN1bHQmLCB1aW50NjRfdCBvcGVyYXRpb25JRCk7CiAKICAgICB2aXJ0
dWFsIGJvb2wgaXNLZXlDdXJzb3JXaXRoVmFsdWUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
CisgICAgT3B0aW9uYWw8SURCR2V0UmVzdWx0PiBpdGVyYXRlV2l0aFByZWZldGNoZWRSZWNvcmRz
KHVuc2lnbmVkIGNvdW50LCB1aW50NjRfdCBsYXN0V3JpdGVPcGVyYXRpb25JRCk7CisgICAgdm9p
ZCBjbGVhclByZWZldGNoZWRSZWNvcmRzKCk7CisKIHByb3RlY3RlZDoKICAgICBJREJDdXJzb3Io
SURCT2JqZWN0U3RvcmUmLCBjb25zdCBJREJDdXJzb3JJbmZvJik7CiAgICAgSURCQ3Vyc29yKElE
QkluZGV4JiwgY29uc3QgSURCQ3Vyc29ySW5mbyYpOwpAQCAtMTEzLDYgKzExNiw5IEBAIHByaXZh
dGU6CiAgICAgSlNWYWx1ZUluV3JhcHBlZE9iamVjdCBtX2tleVdyYXBwZXI7CiAgICAgSlNWYWx1
ZUluV3JhcHBlZE9iamVjdCBtX3ByaW1hcnlLZXlXcmFwcGVyOwogICAgIEpTVmFsdWVJbldyYXBw
ZWRPYmplY3QgbV92YWx1ZVdyYXBwZXI7CisKKyAgICBEZXF1ZTxJREJDdXJzb3JSZWNvcmQ+IG1f
cHJlZmV0Y2hlZFJlY29yZHM7CisgICAgdWludDY0X3QgbV9wcmVmZXRjaE9wZXJhdGlvbklEIHsg
MCB9OwogfTsKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJHZXRSZXN1bHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
R2V0UmVzdWx0LmNwcAppbmRleCA5NDllODEzMzk3ZjMxYmYxOGU2NWJiYzU1ODIxMmQwODgxNmMw
NmZmLi4xMmVjODcwNzMyOTcwMWE0Y2EzNTAxMmRlNTJiZmIxMjczNTI5YjZhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkdldFJlc3VsdC5jcHAKQEAgLTU1
LDYgKzU1LDcgQEAgdm9pZCBJREJHZXRSZXN1bHQ6Omlzb2xhdGVkQ29weShjb25zdCBJREJHZXRS
ZXN1bHQmIHNvdXJjZSwgSURCR2V0UmVzdWx0JiBkZXN0aW4KICAgICBkZXN0aW5hdGlvbi5tX3By
aW1hcnlLZXlEYXRhID0gc291cmNlLm1fcHJpbWFyeUtleURhdGEuaXNvbGF0ZWRDb3B5KCk7CiAg
ICAgZGVzdGluYXRpb24ubV9rZXlQYXRoID0gV2ViQ29yZTo6aXNvbGF0ZWRDb3B5KHNvdXJjZS5t
X2tleVBhdGgpOwogICAgIGRlc3RpbmF0aW9uLm1faXNEZWZpbmVkID0gc291cmNlLm1faXNEZWZp
bmVkOworICAgIGRlc3RpbmF0aW9uLm1fcHJlZmV0Y2hlZFJlY29yZHMgPSBzb3VyY2UubV9wcmVm
ZXRjaGVkUmVjb3Jkcy5pc29sYXRlZENvcHkoKTsKIH0KIAogdm9pZCBJREJHZXRSZXN1bHQ6OnNl
dFZhbHVlKElEQlZhbHVlJiYgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkdldFJlc3VsdC5oCmluZGV4IGU4N2MzOTAxMjMzNDlkMTE1M2QxZmMwOGM5ZTZi
MmJmNzQ1MWIyNTMuLmQwM2Q4OWJhYzI0ODJjZDgzMTIzOGFmM2QyMjkwZjU2ZjkzYTk2OGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkdldFJlc3VsdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkdldFJlc3VsdC5oCkBA
IC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAorI2luY2x1
ZGUgIklEQkN1cnNvclJlY29yZC5oIgogI2luY2x1ZGUgIklEQktleS5oIgogI2luY2x1ZGUgIklE
QktleURhdGEuaCIKICNpbmNsdWRlICJJREJLZXlQYXRoLmgiCkBAIC03Niw2ICs3NywxNSBAQCBw
dWJsaWM6CiAgICAgewogICAgIH0KIAorICAgIElEQkdldFJlc3VsdChjb25zdCBJREJLZXlEYXRh
JiBrZXlEYXRhLCBjb25zdCBJREJLZXlEYXRhJiBwcmltYXJ5S2V5RGF0YSwgSURCVmFsdWUmJiB2
YWx1ZSwgY29uc3QgT3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgsIFZlY3RvcjxJREJDdXJz
b3JSZWNvcmQ+JiYgcHJlZmV0ZWNoZWRSZWNvcmRzKQorICAgICAgICA6IG1fdmFsdWUoV1RGTW92
ZSh2YWx1ZSkpCisgICAgICAgICwgbV9rZXlEYXRhKGtleURhdGEpCisgICAgICAgICwgbV9wcmlt
YXJ5S2V5RGF0YShwcmltYXJ5S2V5RGF0YSkKKyAgICAgICAgLCBtX2tleVBhdGgoa2V5UGF0aCkK
KyAgICAgICAgLCBtX3ByZWZldGNoZWRSZWNvcmRzKFdURk1vdmUocHJlZmV0ZWNoZWRSZWNvcmRz
KSkKKyAgICB7CisgICAgfQorCiAgICAgZW51bSBJc29sYXRlZENvcHlUYWcgeyBJc29sYXRlZENv
cHkgfTsKICAgICBJREJHZXRSZXN1bHQoY29uc3QgSURCR2V0UmVzdWx0JiwgSXNvbGF0ZWRDb3B5
VGFnKTsKIApAQCAtODcsNiArOTcsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgSURCS2V5RGF0YSYg
a2V5RGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fa2V5RGF0YTsgfQogICAgIGNvbnN0IElEQktleURh
dGEmIHByaW1hcnlLZXlEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9wcmltYXJ5S2V5RGF0YTsgfQog
ICAgIGNvbnN0IE9wdGlvbmFsPElEQktleVBhdGg+JiBrZXlQYXRoKCkgY29uc3QgeyByZXR1cm4g
bV9rZXlQYXRoOyB9CisgICAgY29uc3QgVmVjdG9yPElEQkN1cnNvclJlY29yZD4mIHByZWZldGNo
ZWRSZWNvcmRzKCkgY29uc3QgeyByZXR1cm4gbV9wcmVmZXRjaGVkUmVjb3JkczsgfQogICAgIGJv
b2wgaXNEZWZpbmVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0RlZmluZWQ7IH0KIAogICAgIHRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKQEAgLTEwMSwx
MyArMTEyLDE0IEBAIHByaXZhdGU6CiAgICAgSURCS2V5RGF0YSBtX2tleURhdGE7CiAgICAgSURC
S2V5RGF0YSBtX3ByaW1hcnlLZXlEYXRhOwogICAgIE9wdGlvbmFsPElEQktleVBhdGg+IG1fa2V5
UGF0aDsKKyAgICBWZWN0b3I8SURCQ3Vyc29yUmVjb3JkPiBtX3ByZWZldGNoZWRSZWNvcmRzOwog
ICAgIGJvb2wgbV9pc0RlZmluZWQgeyB0cnVlIH07CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPgogdm9pZCBJREJHZXRSZXN1bHQ6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAog
ewotICAgIGVuY29kZXIgPDwgbV9rZXlEYXRhIDw8IG1fcHJpbWFyeUtleURhdGEgPDwgbV9rZXlQ
YXRoIDw8IG1faXNEZWZpbmVkIDw8IG1fdmFsdWU7CisgICAgZW5jb2RlciA8PCBtX2tleURhdGEg
PDwgbV9wcmltYXJ5S2V5RGF0YSA8PCBtX2tleVBhdGggPDwgbV9pc0RlZmluZWQgPDwgbV92YWx1
ZSA8PCBtX3ByZWZldGNoZWRSZWNvcmRzOwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgpA
QCAtMTM3LDYgKzE0OSwxMiBAQCBib29sIElEQkdldFJlc3VsdDo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIsIElEQkdldFJlc3VsdCYgcmVzdWx0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
cmVzdWx0Lm1fdmFsdWUgPSBXVEZNb3ZlKCp2YWx1ZSk7CiAKKyAgICBPcHRpb25hbDxWZWN0b3I8
SURCQ3Vyc29yUmVjb3JkPj4gcHJlZmV0Y2hlZFJlY29yZHM7CisgICAgZGVjb2RlciA+PiBwcmVm
ZXRjaGVkUmVjb3JkczsKKyAgICBpZiAoIXByZWZldGNoZWRSZWNvcmRzKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgcmVzdWx0Lm1fcHJlZmV0Y2hlZFJlY29yZHMgPSBXVEZNb3ZlKCpwcmVm
ZXRjaGVkUmVjb3Jkcyk7CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAppbmRleCAzMGY2ZTVjZGY0ZDlm
ZGJjNjFjZTNhMjAzYzRhZDA2M2JkOGM1MmIzLi4zZDAyMTE5YzdhNTFlMWUxZmNhMGVhMmVkNGM5
ZDI1ZTg3NWUwMjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJSZXF1ZXN0LmNwcApAQCAtNDk5LDcgKzQ5OSw3IEBAIHZvaWQgSURCUmVxdWVzdDo6ZGlkT3Bl
bk9ySXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogICAgIG1f
cmVzdWx0V3JhcHBlciA9IHsgfTsKIAogICAgIGlmIChyZXN1bHREYXRhLnR5cGUoKSA9PSBJREJS
ZXN1bHRUeXBlOjpJdGVyYXRlQ3Vyc29yU3VjY2VzcyB8fCByZXN1bHREYXRhLnR5cGUoKSA9PSBJ
REJSZXN1bHRUeXBlOjpPcGVuQ3Vyc29yU3VjY2VzcykgewotICAgICAgICBpZiAobV9wZW5kaW5n
Q3Vyc29yLT5zZXRHZXRSZXN1bHQoKnRoaXMsIHJlc3VsdERhdGEuZ2V0UmVzdWx0KCkpICYmIG1f
Y3Vyc29yV3JhcHBlcikKKyAgICAgICAgaWYgKG1fcGVuZGluZ0N1cnNvci0+c2V0R2V0UmVzdWx0
KCp0aGlzLCByZXN1bHREYXRhLmdldFJlc3VsdCgpLCBtX2N1cnJlbnRUcmFuc2FjdGlvbk9wZXJh
dGlvbklEKSAmJiBtX2N1cnNvcldyYXBwZXIpCiAgICAgICAgICAgICBtX3Jlc3VsdFdyYXBwZXIg
PSBtX2N1cnNvcldyYXBwZXI7CiAgICAgICAgIGlmIChyZXN1bHREYXRhLmdldFJlc3VsdCgpLmlz
RGVmaW5lZCgpKQogICAgICAgICAgICAgbV9yZXN1bHQgPSBtX3BlbmRpbmdDdXJzb3I7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmgKaW5kZXggMjc4NTAx
YmE2MGU5ZGUwMzAyODFkOGNiMmYxMTA2NzhiMGM5YjhiMy4uMjg2NjEzNDRiMGRlMjE3NmY1YmVh
YzM2MTMxNTQwZjEyNTZmZGRlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQlJlcXVlc3QuaApAQCAtMTE4LDcgKzExOCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHdp
bGxJdGVyYXRlQ3Vyc29yKElEQkN1cnNvciYpOwogICAgIHZvaWQgZGlkT3Blbk9ySXRlcmF0ZUN1
cnNvcihjb25zdCBJREJSZXN1bHREYXRhJik7CiAKLSAgICBjb25zdCBJREJDdXJzb3IqIHBlbmRp
bmdDdXJzb3IoKSBjb25zdCB7IHJldHVybiBtX3BlbmRpbmdDdXJzb3IuZ2V0KCk7IH0KKyAgICBJ
REJDdXJzb3IqIHBlbmRpbmdDdXJzb3IoKSBjb25zdCB7IHJldHVybiBtX3BlbmRpbmdDdXJzb3Ig
PyBtX3BlbmRpbmdDdXJzb3IuZ2V0KCkgOiBudWxscHRyOyB9CiAKICAgICB2b2lkIHNldFNvdXJj
ZShJREJDdXJzb3ImKTsKICAgICB2b2lkIHNldFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbihJREJU
cmFuc2FjdGlvbiYpOwpAQCAtMTI3LDYgKzEyNyw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGFz
UGVuZGluZ0FjdGl2aXR5KCkgY29uc3QgZmluYWw7CiAKKyAgICB2b2lkIHNldFRyYW5zYWN0aW9u
T3BlcmF0aW9uSUQodWludDY0X3QgdHJhbnNhY3Rpb25PcGVyYXRpb25JRCkgeyBtX2N1cnJlbnRU
cmFuc2FjdGlvbk9wZXJhdGlvbklEID0gdHJhbnNhY3Rpb25PcGVyYXRpb25JRDsgfQorCiBwcm90
ZWN0ZWQ6CiAgICAgSURCUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgSURCQ2xpZW50
OjpJREJDb25uZWN0aW9uUHJveHkmKTsKIApAQCAtMTkxLDYgKzE5Myw4IEBAIHByaXZhdGU6CiAK
ICAgICBib29sIG1fZGlzcGF0Y2hpbmdFdmVudCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc1Vu
Y2F1Z2h0RXhjZXB0aW9uIHsgZmFsc2UgfTsKKworICAgIHVpbnQ2NF90IG1fY3VycmVudFRyYW5z
YWN0aW9uT3BlcmF0aW9uSUQgeyAwIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5j
cHAKaW5kZXggNDdmMmNiMGU1ZmY2M2M4NDlhOTkyY2Q4ZGY3YzdhZDI5ZDMwMTcyZC4uOGRkZjIw
NzlhZjk1NDAyYjBhNDM0MGNjMjc5ZTk0Yjk3NTFmYTMwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcApAQCAtMjcyLDE1ICsy
NzIsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjphYm9ydEluUHJvZ3Jlc3NPcGVyYXRpb25zKGNv
bnN0IElEQkVycm9yJiBlcnJvcikKICAgICAgICAgb3BlcmF0aW9uLT5kb0NvbXBsZXRlKElEQlJl
c3VsdERhdGE6OmVycm9yKG9wZXJhdGlvbi0+aWRlbnRpZmllcigpLCBlcnJvcikpOwogICAgIH0K
IAotICAgIFZlY3RvcjxSZWZQdHI8SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbj4+IGNv
bXBsZXRlZE9uU2VydmVyQWJvcnRWZWN0b3I7Ci0gICAgY29tcGxldGVkT25TZXJ2ZXJBYm9ydFZl
Y3Rvci5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fY29tcGxldGVkT25TZXJ2ZXJRdWV1ZS5zaXpl
KCkpOwotICAgIHdoaWxlICghbV9jb21wbGV0ZWRPblNlcnZlclF1ZXVlLmlzRW1wdHkoKSkKLSAg
ICAgICAgY29tcGxldGVkT25TZXJ2ZXJBYm9ydFZlY3Rvci51bmNoZWNrZWRBcHBlbmQobV9jb21w
bGV0ZWRPblNlcnZlclF1ZXVlLnRha2VGaXJzdCgpLmZpcnN0KTsKLQotICAgIGZvciAoYXV0byYg
b3BlcmF0aW9uIDogY29tcGxldGVkT25TZXJ2ZXJBYm9ydFZlY3RvcikgewotICAgICAgICBtX2N1
cnJlbnRseUNvbXBsZXRpbmdSZXF1ZXN0ID0gbnVsbHB0cjsKLSAgICAgICAgb3BlcmF0aW9uLT5k
b0NvbXBsZXRlKElEQlJlc3VsdERhdGE6OmVycm9yKG9wZXJhdGlvbi0+aWRlbnRpZmllcigpLCBl
cnJvcikpOwotICAgIH0KKyAgICBtX3RyYW5zYWN0aW9uT3BlcmF0aW9uUmVzdWx0TWFwLmNsZWFy
KCk7CiAKICAgICBtX2N1cnJlbnRseUNvbXBsZXRpbmdSZXF1ZXN0ID0gbnVsbHB0cjsKICAgICBj
b25uZWN0aW9uUHJveHkoKS5mb3JnZXRBY3RpdmVPcGVyYXRpb25zKGluUHJvZ3Jlc3NBYm9ydFZl
Y3Rvcik7CkBAIC0zNzYsMTYgKzM2OCwyMiBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjphZGRSZXF1
ZXN0KElEQlJlcXVlc3QmIHJlcXVlc3QpCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpyZW1vdmVSZXF1
ZXN0KElEQlJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgQVNTRVJUKGNhbkN1cnJlbnRUaHJlYWRB
Y2Nlc3NUaHJlYWRMb2NhbERhdGEobV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpKTsKKyAgICBp
ZiAobV9jdXJyZW50bHlDb21wbGV0aW5nUmVxdWVzdCA9PSAmcmVxdWVzdCkKKyAgICAgICAgcmV0
dXJuOworCiAgICAgbV9vcGVuUmVxdWVzdHMucmVtb3ZlKCZyZXF1ZXN0KTsKIAogICAgIGF1dG9D
b21taXQoKTsKIH0KIAotdm9pZCBJREJUcmFuc2FjdGlvbjo6c2NoZWR1bGVPcGVyYXRpb24oUmVm
PElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24+JiYgb3BlcmF0aW9uKQordm9pZCBJREJU
cmFuc2FjdGlvbjo6c2NoZWR1bGVPcGVyYXRpb24oUmVmPElEQkNsaWVudDo6VHJhbnNhY3Rpb25P
cGVyYXRpb24+JiYgb3BlcmF0aW9uLCBJc1dyaXRlT3BlcmF0aW9uIGlzV3JpdGVPcGVyYXRpb24p
CiB7CiAgICAgQVNTRVJUKCFtX3RyYW5zYWN0aW9uT3BlcmF0aW9uTWFwLmNvbnRhaW5zKG9wZXJh
dGlvbi0+aWRlbnRpZmllcigpKSk7CiAgICAgQVNTRVJUKGNhbkN1cnJlbnRUaHJlYWRBY2Nlc3NU
aHJlYWRMb2NhbERhdGEobV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpKTsKIAorICAgIGlmIChp
c1dyaXRlT3BlcmF0aW9uID09IElzV3JpdGVPcGVyYXRpb246OlllcykKKyAgICAgICAgbV9sYXN0
V3JpdGVPcGVyYXRpb25JRCA9IG9wZXJhdGlvbi0+b3BlcmF0aW9uSUQoKTsKKwogICAgIGF1dG8g
aWRlbnRpZmllciA9IG9wZXJhdGlvbi0+aWRlbnRpZmllcigpOwogICAgIG1fcGVuZGluZ1RyYW5z
YWN0aW9uT3BlcmF0aW9uUXVldWUuYXBwZW5kKG9wZXJhdGlvbi5jb3B5UmVmKCkpOwogICAgIG1f
dHJhbnNhY3Rpb25PcGVyYXRpb25NYXAuc2V0KGlkZW50aWZpZXIsIFdURk1vdmUob3BlcmF0aW9u
KSk7CkBAIC0zOTgsNyArMzk2LDEwIEBAIHZvaWQgSURCVHJhbnNhY3Rpb246Om9wZXJhdGlvbkNv
bXBsZXRlZE9uU2VydmVyKGNvbnN0IElEQlJlc3VsdERhdGEmIGRhdGEsIElEQkNsCiAgICAgQVNT
RVJUKGNhbkN1cnJlbnRUaHJlYWRBY2Nlc3NUaHJlYWRMb2NhbERhdGEobV9kYXRhYmFzZS0+b3Jp
Z2luVGhyZWFkKCkpKTsKICAgICBBU1NFUlQoY2FuQ3VycmVudFRocmVhZEFjY2Vzc1RocmVhZExv
Y2FsRGF0YShvcGVyYXRpb24ub3JpZ2luVGhyZWFkKCkpKTsKIAotICAgIG1fY29tcGxldGVkT25T
ZXJ2ZXJRdWV1ZS5hcHBlbmQoeyAmb3BlcmF0aW9uLCBkYXRhIH0pOworICAgIGlmICghbV90cmFu
c2FjdGlvbk9wZXJhdGlvbk1hcC5jb250YWlucyhvcGVyYXRpb24uaWRlbnRpZmllcigpKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbV90cmFuc2FjdGlvbk9wZXJhdGlvblJlc3VsdE1hcC5zZXQo
Jm9wZXJhdGlvbiwgSURCUmVzdWx0RGF0YShkYXRhKSk7CiAKICAgICBpZiAoIW1fY3VycmVudGx5
Q29tcGxldGluZ1JlcXVlc3QpCiAgICAgICAgIGhhbmRsZU9wZXJhdGlvbnNDb21wbGV0ZWRPblNl
cnZlcigpOwpAQCAtNDA2LDEyICs0MDcsMTUgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6b3BlcmF0
aW9uQ29tcGxldGVkT25TZXJ2ZXIoY29uc3QgSURCUmVzdWx0RGF0YSYgZGF0YSwgSURCQ2wKIAog
dm9pZCBJREJUcmFuc2FjdGlvbjo6aGFuZGxlT3BlcmF0aW9uc0NvbXBsZXRlZE9uU2VydmVyKCkK
IHsKLSAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OmNvbXBsZXRlZE9wZXJhdGlv
blRpbWVyRmlyZWQgKCVwKSIsIHRoaXMpOworICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2Fj
dGlvbjo6aGFuZGxlT3BlcmF0aW9uc0NvbXBsZXRlZE9uU2VydmVyIik7CiAgICAgQVNTRVJUKGNh
bkN1cnJlbnRUaHJlYWRBY2Nlc3NUaHJlYWRMb2NhbERhdGEobV9kYXRhYmFzZS0+b3JpZ2luVGhy
ZWFkKCkpKTsKIAotICAgIHdoaWxlICghbV9jb21wbGV0ZWRPblNlcnZlclF1ZXVlLmlzRW1wdHko
KSAmJiAhbV9jdXJyZW50bHlDb21wbGV0aW5nUmVxdWVzdCkgewotICAgICAgICBhdXRvIGl0ZXJh
dG9yID0gbV9jb21wbGV0ZWRPblNlcnZlclF1ZXVlLnRha2VGaXJzdCgpOwotICAgICAgICBpdGVy
YXRvci5maXJzdC0+ZG9Db21wbGV0ZShpdGVyYXRvci5zZWNvbmQpOworICAgIHdoaWxlICghbV90
cmFuc2FjdGlvbk9wZXJhdGlvbnNJblByb2dyZXNzUXVldWUuaXNFbXB0eSgpICYmICFtX2N1cnJl
bnRseUNvbXBsZXRpbmdSZXF1ZXN0KSB7CisgICAgICAgIFJlZlB0cjxJREJDbGllbnQ6OlRyYW5z
YWN0aW9uT3BlcmF0aW9uPiBjdXJyZW50T3BlcmF0aW9uID0gbV90cmFuc2FjdGlvbk9wZXJhdGlv
bnNJblByb2dyZXNzUXVldWUuZmlyc3QoKTsKKyAgICAgICAgaWYgKCFtX3RyYW5zYWN0aW9uT3Bl
cmF0aW9uUmVzdWx0TWFwLmNvbnRhaW5zKGN1cnJlbnRPcGVyYXRpb24pKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIGN1cnJlbnRPcGVyYXRpb24tPmRvQ29tcGxldGUobV90cmFuc2Fj
dGlvbk9wZXJhdGlvblJlc3VsdE1hcC50YWtlKGN1cnJlbnRPcGVyYXRpb24pKTsKICAgICB9CiB9
CiAKQEAgLTYyMiw3ICs2MjYsNyBAQCBSZWY8SURCT2JqZWN0U3RvcmU+IElEQlRyYW5zYWN0aW9u
OjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBJREJPYmplY3RTdG9yZUluZm8mCiAgICAgICAgIHBy
b3RlY3RlZFRoaXMtPmRpZENyZWF0ZU9iamVjdFN0b3JlT25TZXJ2ZXIocmVzdWx0KTsKICAgICB9
LCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBpbmZvID0gaW5mby5pc29sYXRlZENv
cHkoKV0gKGF1dG8mIG9wZXJhdGlvbikgewogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5jcmVhdGVP
YmplY3RTdG9yZU9uU2VydmVyKG9wZXJhdGlvbiwgaW5mbyk7Ci0gICAgfSkpOworICAgIH0pLCBJ
c1dyaXRlT3BlcmF0aW9uOjpZZXMpOwogCiAgICAgcmV0dXJuICpyYXdPYmplY3RTdG9yZTsKIH0K
QEAgLTY2NCw3ICs2NjgsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpyZW5hbWVPYmplY3RTdG9y
ZShJREJPYmplY3RTdG9yZSYgb2JqZWN0U3RvcmUsIGNvbnN0IFN0cmluZwogICAgICAgICBwcm90
ZWN0ZWRUaGlzLT5kaWRSZW5hbWVPYmplY3RTdG9yZU9uU2VydmVyKHJlc3VsdCk7CiAgICAgfSwg
W3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBu
ZXdOYW1lID0gbmV3TmFtZS5pc29sYXRlZENvcHkoKV0gKGF1dG8mIG9wZXJhdGlvbikgewogICAg
ICAgICBwcm90ZWN0ZWRUaGlzLT5yZW5hbWVPYmplY3RTdG9yZU9uU2VydmVyKG9wZXJhdGlvbiwg
b2JqZWN0U3RvcmVJZGVudGlmaWVyLCBuZXdOYW1lKTsKLSAgICB9KSk7CisgICAgfSksIElzV3Jp
dGVPcGVyYXRpb246Olllcyk7CiAKICAgICBtX3JlZmVyZW5jZWRPYmplY3RTdG9yZXMuc2V0KG5l
d05hbWUsIG1fcmVmZXJlbmNlZE9iamVjdFN0b3Jlcy50YWtlKG9iamVjdFN0b3JlLmluZm8oKS5u
YW1lKCkpKTsKIH0KQEAgLTY5OSw3ICs3MDMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SURCSW5kZXg+
IElEQlRyYW5zYWN0aW9uOjpjcmVhdGVJbmRleChJREJPYmplY3RTdG9yZSYgb2JqZWN0U3Rvcgog
ICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kaWRDcmVhdGVJbmRleE9uU2VydmVyKHJlc3VsdCk7CiAg
ICAgfSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaW5mbyA9IGluZm8uaXNvbGF0
ZWRDb3B5KCldIChhdXRvJiBvcGVyYXRpb24pIHsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+Y3Jl
YXRlSW5kZXhPblNlcnZlcihvcGVyYXRpb24sIGluZm8pOwotICAgIH0pKTsKKyAgICB9KSwgSXNX
cml0ZU9wZXJhdGlvbjo6WWVzKTsKIAogICAgIHJldHVybiBtYWtlVW5pcXVlPElEQkluZGV4Pigq
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBpbmZvLCBvYmplY3RTdG9yZSk7CiB9CkBAIC03NTMs
NyArNzU3LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6cmVuYW1lSW5kZXgoSURCSW5kZXgmIGlu
ZGV4LCBjb25zdCBTdHJpbmcmIG5ld05hbWUpCiAgICAgICAgIHByb3RlY3RlZFRoaXMtPmRpZFJl
bmFtZUluZGV4T25TZXJ2ZXIocmVzdWx0KTsKICAgICB9LCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4SWRlbnRpZmllciwgbmV3TmFt
ZSA9IG5ld05hbWUuaXNvbGF0ZWRDb3B5KCldIChhdXRvJiBvcGVyYXRpb24pIHsKICAgICAgICAg
cHJvdGVjdGVkVGhpcy0+cmVuYW1lSW5kZXhPblNlcnZlcihvcGVyYXRpb24sIG9iamVjdFN0b3Jl
SWRlbnRpZmllciwgaW5kZXhJZGVudGlmaWVyLCBuZXdOYW1lKTsKLSAgICB9KSk7CisgICAgfSks
IElzV3JpdGVPcGVyYXRpb246Olllcyk7CiB9CiAKIHZvaWQgSURCVHJhbnNhY3Rpb246OnJlbmFt
ZUluZGV4T25TZXJ2ZXIoSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9u
LCBjb25zdCB1aW50NjRfdCYgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCB1aW50NjRfdCYg
aW5kZXhJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUpCkBAIC04NTIsNyArODU2LDIz
IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246Oml0ZXJhdGVDdXJzb3JPblNlcnZlcihJREJDbGllbnQ6
OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRy
YW5zYWN0aW9uOjppdGVyYXRlQ3Vyc29yT25TZXJ2ZXIiKTsKICAgICBBU1NFUlQoY2FuQ3VycmVu
dFRocmVhZEFjY2Vzc1RocmVhZExvY2FsRGF0YShtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSkp
OworICAgIEFTU0VSVChvcGVyYXRpb24uaWRiUmVxdWVzdCgpKTsKIAorICAgIGF1dG8qIGN1cnNv
ciA9IG9wZXJhdGlvbi5pZGJSZXF1ZXN0KCktPnBlbmRpbmdDdXJzb3IoKTsKKyAgICBBU1NFUlQo
Y3Vyc29yKTsKKworICAgIGlmIChkYXRhLmtleURhdGEuaXNOdWxsKCkgJiYgZGF0YS5wcmltYXJ5
S2V5RGF0YS5pc051bGwoKSkgeworICAgICAgICBpZiAoYXV0byBnZXRSZXN1bHQgPSBjdXJzb3It
Pml0ZXJhdGVXaXRoUHJlZmV0Y2hlZFJlY29yZHMoZGF0YS5jb3VudCwgbV9sYXN0V3JpdGVPcGVy
YXRpb25JRCkpIHsKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gSURCUmVzdWx0RGF0YTo6aXRl
cmF0ZUN1cnNvclN1Y2Nlc3Mob3BlcmF0aW9uLmlkZW50aWZpZXIoKSwgZ2V0UmVzdWx0LnZhbHVl
KCkpOworICAgICAgICAgICAgbV9kYXRhYmFzZS0+Y29ubmVjdGlvblByb3h5KCkuaXRlcmF0ZUN1
cnNvcihvcGVyYXRpb24sIHsgZGF0YS5rZXlEYXRhLCBkYXRhLnByaW1hcnlLZXlEYXRhLCBkYXRh
LmNvdW50LCBJbmRleGVkREI6OkN1cnNvckl0ZXJhdGVPcHRpb246OkRvTm90UmVwbHkgfSk7Cisg
ICAgICAgICAgICBvcGVyYXRpb25Db21wbGV0ZWRPblNlcnZlcihyZXN1bHQsIG9wZXJhdGlvbik7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjdXJzb3ItPmNs
ZWFyUHJlZmV0Y2hlZFJlY29yZHMoKTsKKworICAgIEFTU0VSVChkYXRhLm9wdGlvbiA9PSBJbmRl
eGVkREI6OkN1cnNvckl0ZXJhdGVPcHRpb246OlJlcGx5KTsKICAgICBtX2RhdGFiYXNlLT5jb25u
ZWN0aW9uUHJveHkoKS5pdGVyYXRlQ3Vyc29yKG9wZXJhdGlvbiwgZGF0YSk7CiB9CiAKQEAgLTEx
MjYsNyArMTE0Niw3IEBAIFJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdERl
bGV0ZVJlY29yZChKU0dsb2JhbE9iamVjdCYgc3RhdGUsIElEQk9iCiAgICAgICAgIHByb3RlY3Rl
ZFRoaXMtPmRpZERlbGV0ZVJlY29yZE9uU2VydmVyKHJlcXVlc3QuZ2V0KCksIHJlc3VsdCk7CiAg
ICAgfSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmFuZ2UgPSByYW5nZS5pc29s
YXRlZENvcHkoKV0gKGF1dG8mIG9wZXJhdGlvbikgewogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5k
ZWxldGVSZWNvcmRPblNlcnZlcihvcGVyYXRpb24sIHJhbmdlKTsKLSAgICB9KSk7CisgICAgfSks
IElzV3JpdGVPcGVyYXRpb246Olllcyk7CiAgICAgcmV0dXJuIHJlcXVlc3Q7CiB9CiAKQEAgLTEx
NjUsNyArMTE4NSw3IEBAIFJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdENs
ZWFyT2JqZWN0U3RvcmUoSlNHbG9iYWxPYmplY3QmIHN0YXRlLCBJCiAgICAgICAgIHByb3RlY3Rl
ZFRoaXMtPmRpZENsZWFyT2JqZWN0U3RvcmVPblNlcnZlcihyZXF1ZXN0LmdldCgpLCByZXN1bHQp
OwogICAgIH0sIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG9iamVjdFN0b3JlSWRl
bnRpZmllcl0gKGF1dG8mIG9wZXJhdGlvbikgewogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5jbGVh
ck9iamVjdFN0b3JlT25TZXJ2ZXIob3BlcmF0aW9uLCBvYmplY3RTdG9yZUlkZW50aWZpZXIpOwot
ICAgIH0pKTsKKyAgICB9KSwgSXNXcml0ZU9wZXJhdGlvbjo6WWVzKTsKIAogICAgIHJldHVybiBy
ZXF1ZXN0OwogfQpAQCAtMTIwNSw3ICsxMjI1LDcgQEAgUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5z
YWN0aW9uOjpyZXF1ZXN0UHV0T3JBZGQoSlNHbG9iYWxPYmplY3QmIHN0YXRlLCBJREJPYmplY3QK
ICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGlkUHV0T3JBZGRPblNlcnZlcihyZXF1ZXN0LmdldCgp
LCByZXN1bHQpOwogICAgIH0sIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGtleSwg
dmFsdWUgPSBtYWtlUmVmKHZhbHVlKSwgb3ZlcndyaXRlTW9kZV0gKGF1dG8mIG9wZXJhdGlvbikg
ewogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5wdXRPckFkZE9uU2VydmVyKG9wZXJhdGlvbiwga2V5
LmdldCgpLCB2YWx1ZS5wdHIoKSwgb3ZlcndyaXRlTW9kZSk7Ci0gICAgfSkpOworICAgIH0pLCBJ
c1dyaXRlT3BlcmF0aW9uOjpZZXMpOwogCiAgICAgcmV0dXJuIHJlcXVlc3Q7CiB9CkBAIC0xMjkz
LDcgKzEzMTMsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpkZWxldGVPYmplY3RTdG9yZShjb25z
dCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSkKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGlkRGVs
ZXRlT2JqZWN0U3RvcmVPblNlcnZlcihyZXN1bHQpOwogICAgIH0sIFtwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIG9iamVjdFN0b3JlTmFtZSA9IG9iamVjdFN0b3JlTmFtZS5pc29sYXRl
ZENvcHkoKV0gKGF1dG8mIG9wZXJhdGlvbikgewogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kZWxl
dGVPYmplY3RTdG9yZU9uU2VydmVyKG9wZXJhdGlvbiwgb2JqZWN0U3RvcmVOYW1lKTsKLSAgICB9
KSk7CisgICAgfSksIElzV3JpdGVPcGVyYXRpb246Olllcyk7CiB9CiAKIHZvaWQgSURCVHJhbnNh
Y3Rpb246OmRlbGV0ZU9iamVjdFN0b3JlT25TZXJ2ZXIoSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9w
ZXJhdGlvbiYgb3BlcmF0aW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSkKQEAgLTEz
MjMsNyArMTM0Myw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmRlbGV0ZUluZGV4KHVpbnQ2NF90
IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpCiAgICAgICAgIHByb3RlY3Rl
ZFRoaXMtPmRpZERlbGV0ZUluZGV4T25TZXJ2ZXIocmVzdWx0KTsKICAgICB9LCBbcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4TmFtZSA9
IGluZGV4TmFtZS5pc29sYXRlZENvcHkoKV0gKGF1dG8mIG9wZXJhdGlvbikgewogICAgICAgICBw
cm90ZWN0ZWRUaGlzLT5kZWxldGVJbmRleE9uU2VydmVyKG9wZXJhdGlvbiwgb2JqZWN0U3RvcmVJ
ZGVudGlmaWVyLCBpbmRleE5hbWUpOwotICAgIH0pKTsKKyAgICB9KSwgSXNXcml0ZU9wZXJhdGlv
bjo6WWVzKTsKIH0KIAogdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGVsZXRlSW5kZXhPblNlcnZlcihJ
REJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24sIGNvbnN0IHVpbnQ2NF90
JiBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lKQpAQCAtMTQ3
NCw2ICsxNDk0LDEyIEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmF1dG9Db21taXQoKQogICAgIGNv
bW1pdCgpOwogfQogCit1aW50NjRfdCBJREJUcmFuc2FjdGlvbjo6Z2VuZXJhdGVPcGVyYXRpb25J
RCgpCit7CisgICAgc3RhdGljIHN0ZDo6YXRvbWljPHVpbnQ2NF90PiBjdXJyZW50T3BlcmF0aW9u
SUQoMSk7CisgICAgcmV0dXJuIGN1cnJlbnRPcGVyYXRpb25JRCArPSAxOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCmlu
ZGV4IDM1OGIwMWJjMDE0YWE2MTQ0OGEzMTY1NjU2N2VjYTJhMzVkMmEzMjYuLmQ0MTc3M2NjYzVk
NjVmODM0NTA4MWJjZDU3YThmOWRhZDZjMzQ5NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaApAQCAtNzEsNiArNzEsOCBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIFJlZjxJREJUcmFuc2FjdGlvbj4gY3JlYXRlKElEQkRhdGFiYXNlJiwg
Y29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJik7CiAgICAgc3RhdGljIFJlZjxJREJUcmFuc2FjdGlv
bj4gY3JlYXRlKElEQkRhdGFiYXNlJiwgY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJiwgSURCT3Bl
bkRCUmVxdWVzdCYpOwogCisgICAgc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlT3BlcmF0aW9uSUQo
KTsKKwogICAgIFdFQkNPUkVfRVhQT1JUIH5JREJUcmFuc2FjdGlvbigpIGZpbmFsOwogCiAgICAg
Ly8gSURCVHJhbnNhY3Rpb24gSURMCkBAIC0xNjUsNyArMTY3LDggQEAgcHJpdmF0ZToKICAgICB2
b2lkIGZpbmlzaEFib3J0T3JDb21taXQoKTsKICAgICB2b2lkIGFib3J0SW5Qcm9ncmVzc09wZXJh
dGlvbnMoY29uc3QgSURCRXJyb3ImKTsKIAotICAgIHZvaWQgc2NoZWR1bGVPcGVyYXRpb24oUmVm
PElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24+JiYpOworICAgIGVudW0gY2xhc3MgSXNX
cml0ZU9wZXJhdGlvbiA6IGJvb2wgeyBObywgWWVzIH07CisgICAgdm9pZCBzY2hlZHVsZU9wZXJh
dGlvbihSZWY8SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbj4mJiwgSXNXcml0ZU9wZXJh
dGlvbiA9IElzV3JpdGVPcGVyYXRpb246Ok5vKTsKICAgICB2b2lkIGhhbmRsZU9wZXJhdGlvbnND
b21wbGV0ZWRPblNlcnZlcigpOwogICAgIHZvaWQgaGFuZGxlUGVuZGluZ09wZXJhdGlvbnMoKTsK
ICAgICB2b2lkIGF1dG9Db21taXQoKTsKQEAgLTI0NCw4ICsyNDcsOCBAQCBwcml2YXRlOgogCiAg
ICAgRGVxdWU8UmVmUHRyPElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24+PiBtX3BlbmRp
bmdUcmFuc2FjdGlvbk9wZXJhdGlvblF1ZXVlOwogICAgIERlcXVlPElEQkNsaWVudDo6VHJhbnNh
Y3Rpb25PcGVyYXRpb24qPiBtX3RyYW5zYWN0aW9uT3BlcmF0aW9uc0luUHJvZ3Jlc3NRdWV1ZTsK
LSAgICBEZXF1ZTxzdGQ6OnBhaXI8UmVmUHRyPElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRp
b24+LCBJREJSZXN1bHREYXRhPj4gbV9jb21wbGV0ZWRPblNlcnZlclF1ZXVlOwogICAgIERlcXVl
PFJlZlB0cjxJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uPj4gbV9hYm9ydFF1ZXVlOwor
ICAgIEhhc2hNYXA8UmVmUHRyPElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24+LCBJREJS
ZXN1bHREYXRhPiBtX3RyYW5zYWN0aW9uT3BlcmF0aW9uUmVzdWx0TWFwOwogCiAgICAgSGFzaE1h
cDxJREJSZXNvdXJjZUlkZW50aWZpZXIsIFJlZlB0cjxJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3Bl
cmF0aW9uPj4gbV90cmFuc2FjdGlvbk9wZXJhdGlvbk1hcDsKIApAQCAtMjU4LDYgKzI2MSw4IEBA
IHByaXZhdGU6CiAKICAgICBib29sIG1fY29udGV4dFN0b3BwZWQgeyBmYWxzZSB9OwogICAgIGJv
b2wgbV9kaWREaXNwYXRjaEFib3J0T3JDb21taXQgeyBmYWxzZSB9OworCisgICAgdWludDY0X3Qg
bV9sYXN0V3JpdGVPcGVyYXRpb25JRCB7IDAgfTsKIH07CiAKIGNsYXNzIFRyYW5zYWN0aW9uQWN0
aXZhdG9yIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lu
ZGV4ZWREQi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSW5kZXhlZERCLmgK
aW5kZXggNTA5YmJmMjc4YjNmOWYzNzU3ZjZmMWI1MDQwZWM3NmQ1ZDJjOWEwMC4uYmYzMDhhZGE5
NmEyYjA2MDk4ZDM2ZDJhYzcxMGVkNWJjNjMyNzdmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSW5kZXhlZERCLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSW5kZXhlZERCLmgKQEAgLTEwNiw2ICsxMDYsMTEgQEAgZW51bSBjbGFz
cyBHZXRBbGxUeXBlIHsKIAogZW51bSBjbGFzcyBDb25uZWN0aW9uQ2xvc2VkT25CZWhhbGZPZlNl
cnZlciA6IGJvb2wgeyBObywgWWVzIH07CiAKK2VudW0gY2xhc3MgQ3Vyc29ySXRlcmF0ZU9wdGlv
biB7CisgICAgRG9Ob3RSZXBseSwKKyAgICBSZXBseSwKK307CisKIH0gLy8gbmFtZXNwYWNlIElu
ZGV4ZWREQgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uUHJveHku
Y3BwCmluZGV4IDRlYzQ0N2UyNmYxMWRmYTYyYmYwODM2OGJmMTRmODVhODJlY2Y1MTEuLjk1NmRm
YWU2NDUxNzQ5OGRlMzhlNTQ4MzFiNTkxYjRmNjM1NWM5NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9u
UHJveHkuY3BwCkBAIC0yMzgsNyArMjM4LDggQEAgdm9pZCBJREJDb25uZWN0aW9uUHJveHk6Om9w
ZW5DdXJzb3IoVHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbiwgY29uc3QgSURCQ3UKIHZv
aWQgSURCQ29ubmVjdGlvblByb3h5OjppdGVyYXRlQ3Vyc29yKFRyYW5zYWN0aW9uT3BlcmF0aW9u
JiBvcGVyYXRpb24sIGNvbnN0IElEQkl0ZXJhdGVDdXJzb3JEYXRhJiBkYXRhKQogewogICAgIGNv
bnN0IElEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhIHsgb3BlcmF0aW9uIH07Ci0gICAgc2F2ZU9w
ZXJhdGlvbihvcGVyYXRpb24pOworICAgIGlmIChkYXRhLm9wdGlvbiAhPSBJbmRleGVkREI6OkN1
cnNvckl0ZXJhdGVPcHRpb246OkRvTm90UmVwbHkpCisgICAgICAgIHNhdmVPcGVyYXRpb24ob3Bl
cmF0aW9uKTsKIAogICAgIGNhbGxDb25uZWN0aW9uT25NYWluVGhyZWFkKCZJREJDb25uZWN0aW9u
VG9TZXJ2ZXI6Oml0ZXJhdGVDdXJzb3IsIHJlcXVlc3REYXRhLCBkYXRhKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9w
ZXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvVHJh
bnNhY3Rpb25PcGVyYXRpb24uY3BwCmluZGV4IDhlMWRlMDZkNzFlOGYwYjIyM2Q2ODZlNWUxYThh
MjIwOWI3NDM4NDMuLmFhNTkwNmY0NzVlNWVlMGFhY2RmMTFmMTdkM2VhNjhlMjhiNTE1MjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2Fj
dGlvbk9wZXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
Y2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9uLmNwcApAQCAtNDQsNiArNDQsNyBAQCBUcmFuc2Fj
dGlvbk9wZXJhdGlvbjo6VHJhbnNhY3Rpb25PcGVyYXRpb24oSURCVHJhbnNhY3Rpb24mIHRyYW5z
YWN0aW9uLCBJREJSZXF1ZQogICAgIGlmIChhdXRvKiBjdXJzb3IgPSByZXF1ZXN0LnBlbmRpbmdD
dXJzb3IoKSkKICAgICAgICAgbV9jdXJzb3JJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJREJSZXNv
dXJjZUlkZW50aWZpZXI+KGN1cnNvci0+aW5mbygpLmlkZW50aWZpZXIoKSk7CiAKKyAgICByZXF1
ZXN0LnNldFRyYW5zYWN0aW9uT3BlcmF0aW9uSUQobV9vcGVyYXRpb25JRCk7CiAgICAgbV9pZGJS
ZXF1ZXN0ID0gJnJlcXVlc3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9uLmgKaW5kZXgg
ZTJmMTQ4YWVmYmI0MzQzMmE2MWM4NDYyYmIxNGYzOWU1YTc2MDhhNi4uN2FiNTc1NTU3MDhlYzc0
YjlkMTZkMTU2Y2U5ZTkzMjU2Nzg3Y2QwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9uLmgK
QEAgLTExMiwxMCArMTEyLDEzIEBAIHB1YmxpYzoKICAgICBib29sIG5leHRSZXF1ZXN0Q2FuR29U
b1NlcnZlcigpIGNvbnN0IHsgcmV0dXJuIG1fbmV4dFJlcXVlc3RDYW5Hb1RvU2VydmVyICYmIG1f
aWRiUmVxdWVzdDsgfQogICAgIHZvaWQgc2V0TmV4dFJlcXVlc3RDYW5Hb1RvU2VydmVyKGJvb2wg
bmV4dFJlcXVlc3RDYW5Hb1RvU2VydmVyKSB7IG1fbmV4dFJlcXVlc3RDYW5Hb1RvU2VydmVyID0g
bmV4dFJlcXVlc3RDYW5Hb1RvU2VydmVyOyB9CiAKKyAgICB1aW50NjRfdCBvcGVyYXRpb25JRCgp
IGNvbnN0IHsgcmV0dXJuIG1fb3BlcmF0aW9uSUQ7IH0KKwogcHJvdGVjdGVkOgogICAgIFRyYW5z
YWN0aW9uT3BlcmF0aW9uKElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKICAgICAgICAgOiBt
X3RyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKQogICAgICAgICAsIG1faWRlbnRpZmllcih0cmFuc2Fj
dGlvbi5jb25uZWN0aW9uUHJveHkoKSkKKyAgICAgICAgLCBtX29wZXJhdGlvbklEKHRyYW5zYWN0
aW9uLmdlbmVyYXRlT3BlcmF0aW9uSUQoKSkKICAgICB7CiAgICAgfQogCkBAIC0xNDIsNiArMTQ1
LDggQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8SURCUmVxdWVzdD4gbV9pZGJSZXF1ZXN0OwogICAg
IGJvb2wgbV9uZXh0UmVxdWVzdENhbkdvVG9TZXJ2ZXIgeyB0cnVlIH07CiAgICAgYm9vbCBtX2Rp
ZENvbXBsZXRlIHsgZmFsc2UgfTsKKworICAgIHVpbnQ2NF90IG1fb3BlcmF0aW9uSUQgeyAwIH07
CiB9OwogCiBjbGFzcyBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGwgZmluYWwgOiBwdWJsaWMgVHJh
bnNhY3Rpb25PcGVyYXRpb24gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0lEQkJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL0lEQkJhY2tpbmdTdG9yZS5oCmluZGV4IGM0MjY0MGIzYmY2YzYw
YjA4N2YyNDVlZmQzYWYwMWMzNjYyZmEyOWUuLmE3ZGY3YTFkY2Q2MDc1ZGRhNDUxMDkwYWE5MzAz
N2FlODIxY2RiZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9JREJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvSURCQmFja2luZ1N0b3JlLmgKQEAgLTg1LDcgKzg1LDYgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgSURCRXJyb3IgbWF5YmVVcGRhdGVLZXlHZW5lcmF0b3JOdW1iZXIoY29u
c3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90
IG9iamVjdFN0b3JlSWRlbnRpZmllciwgZG91YmxlIG5ld0tleU51bWJlcikgPSAwOwogICAgIHZp
cnR1YWwgSURCRXJyb3Igb3BlbkN1cnNvcihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRy
YW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCQ3Vyc29ySW5mbyYsIElEQkdldFJlc3VsdCYg
b3V0UmVzdWx0KSA9IDA7CiAgICAgdmlydHVhbCBJREJFcnJvciBpdGVyYXRlQ3Vyc29yKGNvbnN0
IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJS
ZXNvdXJjZUlkZW50aWZpZXImIGN1cnNvcklkZW50aWZpZXIsIGNvbnN0IElEQkl0ZXJhdGVDdXJz
b3JEYXRhJiwgSURCR2V0UmVzdWx0JiBvdXRSZXN1bHQpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wg
cHJlZmV0Y2hDdXJzb3IoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklk
ZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgY3Vyc29ySWRlbnRpZmllcikg
PSAwOwogCiAgICAgdmlydHVhbCBJREJPYmplY3RTdG9yZUluZm8qIGluZm9Gb3JPYmplY3RTdG9y
ZSh1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
ZGVsZXRlQmFja2luZ1N0b3JlKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5oCmlu
ZGV4IDM3OGQyYTVmN2EwZDY3M2YyNDMyOTM4MTA3NGVlOGIxOTU4MTFiZWQuLjc0ZGM5NTA5NDVh
NmVmNGI4ZWI1NzJhOGJkNGQxNWRkYTUyYjhmYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0
b3JlLmgKQEAgLTc0LDcgKzc0LDYgQEAgcHJpdmF0ZToKICAgICBJREJFcnJvciBtYXliZVVwZGF0
ZUtleUdlbmVyYXRvck51bWJlcihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0
aW9uSWRlbnRpZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBkb3VibGUgbmV3
S2V5TnVtYmVyKSBmaW5hbDsKICAgICBJREJFcnJvciBvcGVuQ3Vyc29yKGNvbnN0IElEQlJlc291
cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJDdXJzb3JJbmZv
JiwgSURCR2V0UmVzdWx0JiBvdXRSZXN1bHQpIGZpbmFsOwogICAgIElEQkVycm9yIGl0ZXJhdGVD
dXJzb3IoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIs
IGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgY3Vyc29ySWRlbnRpZmllciwgY29uc3QgSURC
SXRlcmF0ZUN1cnNvckRhdGEmLCBJREJHZXRSZXN1bHQmIG91dFJlc3VsdCkgZmluYWw7Ci0gICAg
Ym9vbCBwcmVmZXRjaEN1cnNvcihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImLCBjb25zdCBJ
REJSZXNvdXJjZUlkZW50aWZpZXImKSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgSURC
T2JqZWN0U3RvcmVJbmZvKiBpbmZvRm9yT2JqZWN0U3RvcmUodWludDY0X3Qgb2JqZWN0U3RvcmVJ
ZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIGRlbGV0ZUJhY2tpbmdTdG9yZSgpIGZpbmFsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0
ZUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAppbmRleCAzZmExMDJkYjY1OTI4MGQ3ZDZh
MDUwY2UxZWE3ZmM0MDgwMmJmZGQ3Li41NzNiZWM3N2UyZjJmM2QxYzEyMTIxYmM1OGZlY2MzZmNm
MWEzZTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcApAQCAtMTM2Niw4ICsx
MzY2LDggQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVJbmRleChjb25z
dCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWMKIAogICAgIHdoaWxlICghY3Vyc29yLT5j
dXJyZW50S2V5KCkuaXNOdWxsKCkpIHsKICAgICAgICAgYXV0byYga2V5ID0gY3Vyc29yLT5jdXJy
ZW50S2V5KCk7Ci0gICAgICAgIGF1dG8qIHZhbHVlID0gY3Vyc29yLT5jdXJyZW50VmFsdWUoKTsK
LSAgICAgICAgVGhyZWFkU2FmZURhdGFCdWZmZXIgdmFsdWVCdWZmZXIgPSB2YWx1ZSA/IHZhbHVl
LT5kYXRhKCkgOiBUaHJlYWRTYWZlRGF0YUJ1ZmZlcigpOworICAgICAgICBhdXRvIHZhbHVlID0g
Y3Vyc29yLT5jdXJyZW50VmFsdWUoKTsKKyAgICAgICAgVGhyZWFkU2FmZURhdGFCdWZmZXIgdmFs
dWVCdWZmZXIgPSB2YWx1ZS5kYXRhKCk7CiAKICAgICAgICAgQVNTRVJUKGN1cnNvci0+Y3VycmVu
dFJlY29yZFJvd0lEKCkpOwogCkBAIC0yMzU0LDcgKzIzNTQsNyBAQCBJREJFcnJvciBTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OmdldEFsbEluZGV4UmVjb3Jkcyhjb25zdCBJREJSZXNvdXJjZUlkZW50
aWZpZXImCiAgICAgICAgIElEQktleURhdGEga2V5Q29weSA9IGN1cnNvci0+Y3VycmVudFByaW1h
cnlLZXkoKTsKICAgICAgICAgcmVzdWx0LmFkZEtleShXVEZNb3ZlKGtleUNvcHkpKTsKICAgICAg
ICAgaWYgKGdldEFsbFJlY29yZHNEYXRhLmdldEFsbFR5cGUgPT0gSW5kZXhlZERCOjpHZXRBbGxU
eXBlOjpWYWx1ZXMpCi0gICAgICAgICAgICByZXN1bHQuYWRkVmFsdWUoY3Vyc29yLT5jdXJyZW50
VmFsdWUoKSA/ICpjdXJzb3ItPmN1cnJlbnRWYWx1ZSgpIDogSURCVmFsdWUoKSk7CisgICAgICAg
ICAgICByZXN1bHQuYWRkVmFsdWUoSURCVmFsdWUoY3Vyc29yLT5jdXJyZW50VmFsdWUoKSkpOwog
CiAgICAgICAgICsrY3VycmVudENvdW50OwogICAgICAgICBjdXJzb3ItPmFkdmFuY2UoMSk7CkBA
IC0yNDAxLDcgKzI0MDEsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldElu
ZGV4UmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbgogICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgIGF1dG8qIG9iamVjdFN0b3JlSW5mbyA9IGluZm9Gb3JPYmplY3RTdG9y
ZShvYmplY3RTdG9yZUlEKTsKICAgICAgICAgICAgIEFTU0VSVChvYmplY3RTdG9yZUluZm8pOwot
ICAgICAgICAgICAgZ2V0UmVzdWx0ID0geyBjdXJzb3ItPmN1cnJlbnRQcmltYXJ5S2V5KCksIGN1
cnNvci0+Y3VycmVudFByaW1hcnlLZXkoKSwgY3Vyc29yLT5jdXJyZW50VmFsdWUoKSA/ICpjdXJz
b3ItPmN1cnJlbnRWYWx1ZSgpIDogSURCVmFsdWUoKSwgb2JqZWN0U3RvcmVJbmZvLT5rZXlQYXRo
KCkgfTsKKyAgICAgICAgICAgIGdldFJlc3VsdCA9IHsgY3Vyc29yLT5jdXJyZW50UHJpbWFyeUtl
eSgpLCBjdXJzb3ItPmN1cnJlbnRQcmltYXJ5S2V5KCksIElEQlZhbHVlKGN1cnNvci0+Y3VycmVu
dFZhbHVlKCkpLCBvYmplY3RTdG9yZUluZm8tPmtleVBhdGgoKSB9OwogICAgICAgICB9CiAgICAg
fQogCkBAIC0yNzIxLDI2ICsyNzIxLDE4IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6aXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zCiAgICAg
ICAgIH0KICAgICB9CiAKLSAgICBhdXRvKiBvYmplY3RTdG9yZUluZm8gPSBpbmZvRm9yT2JqZWN0
U3RvcmUoY3Vyc29yLT5vYmplY3RTdG9yZUlEKCkpOwotICAgIEFTU0VSVChvYmplY3RTdG9yZUlu
Zm8pOwotICAgIGN1cnNvci0+Y3VycmVudERhdGEocmVzdWx0LCBvYmplY3RTdG9yZUluZm8tPmtl
eVBhdGgoKSk7Ci0gICAgcmV0dXJuIElEQkVycm9yIHsgfTsKLX0KLQotYm9vbCBTUUxpdGVJREJC
YWNraW5nU3RvcmU6OnByZWZldGNoQ3Vyc29yKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYg
dHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIGN1cnNv
cklkZW50aWZpZXIpCi17Ci0gICAgTE9HKEluZGV4ZWREQiwgIlNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6cHJlZmV0Y2hDdXJzb3IiKTsKLQotICAgIEFTU0VSVChtX3NxbGl0ZURCKTsKLSAgICBBU1NF
UlQobV9zcWxpdGVEQi0+aXNPcGVuKCkpOworICAgIGlmIChkYXRhLm9wdGlvbiA9PSBJbmRleGVk
REI6OkN1cnNvckl0ZXJhdGVPcHRpb246OlJlcGx5KSB7CisgICAgICAgIGF1dG8qIG9iamVjdFN0
b3JlSW5mbyA9IGluZm9Gb3JPYmplY3RTdG9yZShjdXJzb3ItPm9iamVjdFN0b3JlSUQoKSk7Cisg
ICAgICAgIEFTU0VSVChvYmplY3RTdG9yZUluZm8pOwogCi0gICAgYXV0byogY3Vyc29yID0gbV9j
dXJzb3JzLmdldChjdXJzb3JJZGVudGlmaWVyKTsKLSAgICBpZiAoIWN1cnNvciB8fCAhY3Vyc29y
LT50cmFuc2FjdGlvbigpIHx8ICFjdXJzb3ItPnRyYW5zYWN0aW9uKCktPmluUHJvZ3Jlc3MoKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBib29sIHNob3VsZFByZWZldGNoID0ga2V5
LmlzTnVsbCgpICYmIHByaW1hcnlLZXkuaXNOdWxsKCk7CisgICAgICAgIGlmIChzaG91bGRQcmVm
ZXRjaCkKKyAgICAgICAgICAgIGN1cnNvci0+cHJlZmV0Y2goKTsKIAotICAgIEFTU0VSVF9VTlVT
RUQodHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjdXJzb3ItPnRyYW5zYWN0aW9uKCktPnRyYW5zYWN0
aW9uSWRlbnRpZmllcigpID09IHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CisgICAgICAgIGN1cnNv
ci0+Y3VycmVudERhdGEocmVzdWx0LCBvYmplY3RTdG9yZUluZm8tPmtleVBhdGgoKSwgc2hvdWxk
UHJlZmV0Y2ggPyBTUUxpdGVJREJDdXJzb3I6OlNob3VsZEluY2x1ZGVQcmVmZXRjaGVkUmVjb3Jk
czo6WWVzIDogU1FMaXRlSURCQ3Vyc29yOjpTaG91bGRJbmNsdWRlUHJlZmV0Y2hlZFJlY29yZHM6
Ok5vKTsKKyAgICB9CiAKLSAgICByZXR1cm4gY3Vyc29yLT5wcmVmZXRjaCgpOworICAgIHJldHVy
biBJREJFcnJvciB7IH07CiB9CiAKIElEQk9iamVjdFN0b3JlSW5mbyogU1FMaXRlSURCQmFja2lu
Z1N0b3JlOjppbmZvRm9yT2JqZWN0U3RvcmUodWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NR
TGl0ZUlEQkJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5oCmluZGV4IGNlMjlkMmNmY2ZiNDFmYWI2YmQz
MDViYmUyZGNmMDQ1NmZiNmQ4MmUuLjQ5NDBjMTUxNjExMDRhZDk2OTU4ZmQyMzQzN2RhYzY5OTQw
Y2M3MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmgKQEAgLTgwLDcgKzgwLDYgQEAg
cHVibGljOgogICAgIElEQkVycm9yIG1heWJlVXBkYXRlS2V5R2VuZXJhdG9yTnVtYmVyKGNvbnN0
IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBv
YmplY3RTdG9yZUlkZW50aWZpZXIsIGRvdWJsZSBuZXdLZXlOdW1iZXIpIGZpbmFsOwogICAgIElE
QkVycm9yIG9wZW5DdXJzb3IoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlv
bklkZW50aWZpZXIsIGNvbnN0IElEQkN1cnNvckluZm8mLCBJREJHZXRSZXN1bHQmIG91dFJlc3Vs
dCkgZmluYWw7CiAgICAgSURCRXJyb3IgaXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXNvdXJjZUlk
ZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlm
aWVyJiBjdXJzb3JJZGVudGlmaWVyLCBjb25zdCBJREJJdGVyYXRlQ3Vyc29yRGF0YSYsIElEQkdl
dFJlc3VsdCYgb3V0UmVzdWx0KSBmaW5hbDsKLSAgICBib29sIHByZWZldGNoQ3Vyc29yKGNvbnN0
IElEQlJlc291cmNlSWRlbnRpZmllciYsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYpIGZp
bmFsOwogCiAgICAgSURCT2JqZWN0U3RvcmVJbmZvKiBpbmZvRm9yT2JqZWN0U3RvcmUodWludDY0
X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIGRlbGV0ZUJhY2tpbmdT
dG9yZSgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcAppbmRleCBiMzc3MTczNzU3NGUyMjM2
NjE3ZDI0ODdjNjkwZTEyMGVhZGQ3MDBiLi5lMTlhYTEzZWIwMWU1NWJiMGNmODA4MWY3NDNiYWE3
MjNhNjMyNTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcApAQCAtNDIsOCArNDIsOCBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIElEQlNlcnZlciB7CiAKLXN0YXRpYyBjb25zdCBz
aXplX3QgcHJlZmV0Y2hMaW1pdCA9IDEyODsKLXN0YXRpYyBjb25zdCBzaXplX3QgcHJlZmV0Y2hT
aXplTGltaXQgPSA4ICogTUI7CitzdGF0aWMgY29uc3Qgc2l6ZV90IHByZWZldGNoTGltaXQgPSAy
NTY7CitzdGF0aWMgY29uc3Qgc2l6ZV90IHByZWZldGNoU2l6ZUxpbWl0ID0gMSAqIE1COwogCiBz
dGQ6OnVuaXF1ZV9wdHI8U1FMaXRlSURCQ3Vyc29yPiBTUUxpdGVJREJDdXJzb3I6Om1heWJlQ3Jl
YXRlKFNRTGl0ZUlEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgY29uc3QgSURCQ3Vyc29ySW5m
byYgaW5mbykKIHsKQEAgLTEwMiw3ICsxMDIsNyBAQCBTUUxpdGVJREJDdXJzb3I6On5TUUxpdGVJ
REJDdXJzb3IoKQogICAgICAgICBtX3RyYW5zYWN0aW9uLT5jbG9zZUN1cnNvcigqdGhpcyk7CiB9
CiAKLXZvaWQgU1FMaXRlSURCQ3Vyc29yOjpjdXJyZW50RGF0YShJREJHZXRSZXN1bHQmIHJlc3Vs
dCwgY29uc3QgT3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgpCit2b2lkIFNRTGl0ZUlEQkN1
cnNvcjo6Y3VycmVudERhdGEoSURCR2V0UmVzdWx0JiByZXN1bHQsIGNvbnN0IE9wdGlvbmFsPElE
QktleVBhdGg+JiBrZXlQYXRoLCBTaG91bGRJbmNsdWRlUHJlZmV0Y2hlZFJlY29yZHMgc2hvdWxk
SW5jbHVkZVByZWZldGNoZWRSZWNvcmRzKQogewogICAgIEFTU0VSVCghbV9mZXRjaGVkUmVjb3Jk
cy5pc0VtcHR5KCkpOwogCkBAIC0xMTMsNyArMTEzLDI1IEBAIHZvaWQgU1FMaXRlSURCQ3Vyc29y
OjpjdXJyZW50RGF0YShJREJHZXRSZXN1bHQmIHJlc3VsdCwgY29uc3QgT3B0aW9uYWw8SURCS2V5
UGF0CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICByZXN1bHQgPSB7IGN1cnJlbnRSZWNv
cmQucmVjb3JkLmtleSwgY3VycmVudFJlY29yZC5yZWNvcmQucHJpbWFyeUtleSwgY3VycmVudFJl
Y29yZC5yZWNvcmQudmFsdWUgPyAqY3VycmVudFJlY29yZC5yZWNvcmQudmFsdWUgOiBJREJWYWx1
ZSgpLCBrZXlQYXRofTsKKyAgICBpZiAoc2hvdWxkSW5jbHVkZVByZWZldGNoZWRSZWNvcmRzID09
IFNob3VsZEluY2x1ZGVQcmVmZXRjaGVkUmVjb3Jkczo6Tm8pIHsKKyAgICAgICAgcmVzdWx0ID0g
eyBjdXJyZW50UmVjb3JkLnJlY29yZC5rZXksIGN1cnJlbnRSZWNvcmQucmVjb3JkLnByaW1hcnlL
ZXksIElEQlZhbHVlKGN1cnJlbnRSZWNvcmQucmVjb3JkLnZhbHVlKSwga2V5UGF0aCB9OworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgVmVjdG9yPElEQkN1cnNvclJlY29yZD4gcHJlZmV0
Y2hlZFJlY29yZHM7CisgICAgcHJlZmV0Y2hlZFJlY29yZHMucmVzZXJ2ZUNhcGFjaXR5KG1fZmV0
Y2hlZFJlY29yZHMuc2l6ZSgpKTsKKyAgICBmb3IgKGF1dG8mIHJlY29yZCA6IG1fZmV0Y2hlZFJl
Y29yZHMpIHsKKyAgICAgICAgaWYgKHJlY29yZC5pc1Rlcm1pbmFsUmVjb3JkKCkpCisgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICBwcmVmZXRjaGVkUmVjb3Jkcy5hcHBlbmQocmVjb3JkLnJl
Y29yZCk7CisgICAgfQorCisgICAgLy8gRmlyc3QgcmVjb3JkIHdpbGwgYmUgcmV0dXJuZWQgYXMg
Y3VycmVudCByZWNvcmQuCisgICAgaWYgKCFwcmVmZXRjaGVkUmVjb3Jkcy5pc0VtcHR5KCkpCisg
ICAgICAgIHByZWZldGNoZWRSZWNvcmRzLnJlbW92ZSgwKTsKKworICAgIHJlc3VsdCA9IHsgY3Vy
cmVudFJlY29yZC5yZWNvcmQua2V5LCBjdXJyZW50UmVjb3JkLnJlY29yZC5wcmltYXJ5S2V5LCBJ
REJWYWx1ZShjdXJyZW50UmVjb3JkLnJlY29yZC52YWx1ZSksIGtleVBhdGgsIFdURk1vdmUocHJl
ZmV0Y2hlZFJlY29yZHMpIH07CiB9CiAKIHN0YXRpYyBTdHJpbmcgYnVpbGRQcmVJbmRleFN0YXRl
bWVudChib29sIGlzRGlyZWN0aW9uTmV4dCkKQEAgLTI2Myw2ICsyODEsOCBAQCB2b2lkIFNRTGl0
ZUlEQkN1cnNvcjo6b2JqZWN0U3RvcmVSZWNvcmRzQ2hhbmdlZCgpCiAgICAgLy8gV2UgYWxzbyBu
ZWVkIHRvIHRocm93IGF3YXkgYW55IGZldGNoZWQgcmVjb3JkcyBhcyB0aGV5IG1heSBubyBsb25n
ZXIgYmUgdmFsaWQuCiAgICAgbV9mZXRjaGVkUmVjb3Jkcy5jbGVhcigpOwogICAgIG1fZmV0Y2hl
ZFJlY29yZHNTaXplID0gMDsKKworICAgIG1fcHJlZmV0Y2hDb3VudCA9IDA7CiB9CiAKIHZvaWQg
U1FMaXRlSURCQ3Vyc29yOjpyZXNldEFuZFJlYmluZFN0YXRlbWVudCgpCkBAIC0zNTksMTcgKzM3
OSwzMiBAQCBib29sIFNRTGl0ZUlEQkN1cnNvcjo6cmVzZXRBbmRSZWJpbmRQcmVJbmRleFN0YXRl
bWVudElmTmVjZXNzYXJ5KCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBTUUxpdGVJREJD
dXJzb3I6OnByZWZldGNoKCkKK2Jvb2wgU1FMaXRlSURCQ3Vyc29yOjpwcmVmZXRjaE9uZVJlY29y
ZCgpCiB7Ci0gICAgTE9HKEluZGV4ZWREQiwgIlNRTGl0ZUlEQkN1cnNvcjo6cHJlZmV0Y2goKSAt
IEN1cnNvciBhbHJlYWR5IGhhcyAlenUgZmV0Y2hlZCByZWNvcmRzIiwgbV9mZXRjaGVkUmVjb3Jk
cy5zaXplKCkpOworICAgIExPRyhJbmRleGVkREIsICJTUUxpdGVJREJDdXJzb3I6OnByZWZldGNo
T25lUmVjb3JkKCkgLSBDdXJzb3IgYWxyZWFkeSBoYXMgJXp1IGZldGNoZWQgcmVjb3JkcyIsIG1f
ZmV0Y2hlZFJlY29yZHMuc2l6ZSgpKTsKIAogICAgIGlmIChtX2ZldGNoZWRSZWNvcmRzU2l6ZSA+
PSBwcmVmZXRjaFNpemVMaW1pdCB8fCBtX2ZldGNoZWRSZWNvcmRzLmlzRW1wdHkoKSB8fCBtX2Zl
dGNoZWRSZWNvcmRzLnNpemUoKSA+PSBwcmVmZXRjaExpbWl0IHx8IG1fZmV0Y2hlZFJlY29yZHMu
bGFzdCgpLmlzVGVybWluYWxSZWNvcmQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
bV9jdXJyZW50S2V5Rm9yVW5pcXVlbmVzcyA9IG1fZmV0Y2hlZFJlY29yZHMubGFzdCgpLnJlY29y
ZC5rZXk7Ci0gICAgZmV0Y2goKTsKIAotICAgIHJldHVybiBtX2ZldGNoZWRSZWNvcmRzLnNpemUo
KSA8IHByZWZldGNoTGltaXQgJiYgbV9mZXRjaGVkUmVjb3Jkc1NpemUgPCBwcmVmZXRjaFNpemVM
aW1pdDsKKyAgICByZXR1cm4gZmV0Y2goKSAmJiBtX2ZldGNoZWRSZWNvcmRzLnNpemUoKSA8IHBy
ZWZldGNoTGltaXQgJiYgbV9mZXRjaGVkUmVjb3Jkc1NpemUgPCBwcmVmZXRjaFNpemVMaW1pdDsK
K30KKwordm9pZCBTUUxpdGVJREJDdXJzb3I6OmluY3JlYXNlQ291bnRUb1ByZWZldGNoKCkKK3sK
KyAgICBtX3ByZWZldGNoQ291bnQgPSBtX3ByZWZldGNoQ291bnQgPyBtX3ByZWZldGNoQ291bnQg
KiAyIDogMTsKK30KKworYm9vbCBTUUxpdGVJREJDdXJzb3I6OnByZWZldGNoKCkKK3sKKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9wcmVmZXRjaENvdW50OyArK2kpIHsKKyAgICAgICAg
aWYgKCFwcmVmZXRjaE9uZVJlY29yZCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKworICAgIGluY3JlYXNlQ291bnRUb1ByZWZldGNoKCk7CisgICAgcmV0dXJuIHRydWU7CiB9
CiAKIGJvb2wgU1FMaXRlSURCQ3Vyc29yOjphZHZhbmNlKHVpbnQ2NF90IGNvdW50KQpAQCAtNDg4
LDcgKzUyMyw3IEBAIFNRTGl0ZUlEQkN1cnNvcjo6RmV0Y2hSZXN1bHQgU1FMaXRlSURCQ3Vyc29y
OjppbnRlcm5hbEZldGNoTmV4dFJlY29yZChTUUxpdGVDdXJzCiAgICAgQVNTRVJUKCFtX2ZldGNo
ZWRSZWNvcmRzLmlzRW1wdHkoKSk7CiAgICAgQVNTRVJUKCFtX2ZldGNoZWRSZWNvcmRzLmxhc3Qo
KS5pc1Rlcm1pbmFsUmVjb3JkKCkpOwogCi0gICAgcmVjb3JkLnJlY29yZC52YWx1ZSA9IG51bGxw
dHI7CisgICAgcmVjb3JkLnJlY29yZC52YWx1ZSA9IHsgfTsKIAogICAgIGF1dG8mIGRhdGFiYXNl
ID0gbV90cmFuc2FjdGlvbi0+c3FsaXRlVHJhbnNhY3Rpb24oKS0+ZGF0YWJhc2UoKTsKICAgICBT
UUxpdGVTdGF0ZW1lbnQqIHN0YXRlbWVudCA9IG51bGxwdHI7CkBAIC01NDYsNyArNTgxLDcgQEAg
U1FMaXRlSURCQ3Vyc29yOjpGZXRjaFJlc3VsdCBTUUxpdGVJREJDdXJzb3I6OmludGVybmFsRmV0
Y2hOZXh0UmVjb3JkKFNRTGl0ZUN1cnMKICAgICAgICAgfQogCiAgICAgICAgIGlmIChtX2N1cnNv
clR5cGUgPT0gSW5kZXhlZERCOjpDdXJzb3JUeXBlOjpLZXlBbmRWYWx1ZSkKLSAgICAgICAgICAg
IHJlY29yZC5yZWNvcmQudmFsdWUgPSBtYWtlVW5pcXVlPElEQlZhbHVlPihUaHJlYWRTYWZlRGF0
YUJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoa2V5RGF0YSkpLCBibG9iVVJMcywgYmxvYkZpbGVQYXRo
cyk7CisgICAgICAgICAgICByZWNvcmQucmVjb3JkLnZhbHVlID0geyBUaHJlYWRTYWZlRGF0YUJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUoa2V5RGF0YSkpLCBibG9iVVJMcywgYmxvYkZpbGVQYXRocyB9
OwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmICghZGVzZXJpYWxpemVJREJLZXlEYXRhKGtleURh
dGEuZGF0YSgpLCBrZXlEYXRhLnNpemUoKSwgcmVjb3JkLnJlY29yZC5wcmltYXJ5S2V5KSkgewog
ICAgICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gZGVzZXJpYWxpemUgdmFsdWUgZGF0YSBm
cm9tIGRhdGFiYXNlIHdoaWxlIGFkdmFuY2luZyBpbmRleCBjdXJzb3IiKTsKQEAgLTU3Miw3ICs2
MDcsNyBAQCBTUUxpdGVJREJDdXJzb3I6OkZldGNoUmVzdWx0IFNRTGl0ZUlEQkN1cnNvcjo6aW50
ZXJuYWxGZXRjaE5leHRSZWNvcmQoU1FMaXRlQ3VycwogCiAgICAgICAgIGlmIChyZXN1bHQgPT0g
U1FMSVRFX1JPVykgewogICAgICAgICAgICAgbV9jYWNoZWRPYmplY3RTdG9yZVN0YXRlbWVudC0+
Z2V0Q29sdW1uQmxvYkFzVmVjdG9yKDAsIGtleURhdGEpOwotICAgICAgICAgICAgcmVjb3JkLnJl
Y29yZC52YWx1ZSA9IG1ha2VVbmlxdWU8SURCVmFsdWU+KFRocmVhZFNhZmVEYXRhQnVmZmVyOjpj
cmVhdGUoV1RGTW92ZShrZXlEYXRhKSkpOworICAgICAgICAgICAgcmVjb3JkLnJlY29yZC52YWx1
ZSA9IHsgVGhyZWFkU2FmZURhdGFCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGtleURhdGEpKSB9Owog
ICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PSBTUUxJVEVfRE9ORSkgewogICAgICAgICAgICAg
Ly8gVGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgcmVjb3JkIHdlJ3JlIHRyeWluZyB0byByZXRyaWV2
ZSBoYXMgYmVlbiByZW1vdmVkIGZyb20gdGhlIG9iamVjdCBzdG9yZS4KICAgICAgICAgICAgIC8v
IFNraXAgb3ZlciBpdC4KQEAgLTY0NSwxMCArNjgwLDEwIEBAIGNvbnN0IElEQktleURhdGEmIFNR
TGl0ZUlEQkN1cnNvcjo6Y3VycmVudFByaW1hcnlLZXkoKSBjb25zdAogICAgIHJldHVybiBtX2Zl
dGNoZWRSZWNvcmRzLmZpcnN0KCkucmVjb3JkLnByaW1hcnlLZXk7CiB9CiAKLUlEQlZhbHVlKiBT
UUxpdGVJREJDdXJzb3I6OmN1cnJlbnRWYWx1ZSgpIGNvbnN0Citjb25zdCBJREJWYWx1ZSYgU1FM
aXRlSURCQ3Vyc29yOjpjdXJyZW50VmFsdWUoKSBjb25zdAogewogICAgIEFTU0VSVCghbV9mZXRj
aGVkUmVjb3Jkcy5pc0VtcHR5KCkpOwotICAgIHJldHVybiBtX2ZldGNoZWRSZWNvcmRzLmZpcnN0
KCkucmVjb3JkLnZhbHVlLmdldCgpOworICAgIHJldHVybiBtX2ZldGNoZWRSZWNvcmRzLmZpcnN0
KCkucmVjb3JkLnZhbHVlOwogfQogCiBib29sIFNRTGl0ZUlEQkN1cnNvcjo6ZGlkQ29tcGxldGUo
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1NRTGl0ZUlEQkN1cnNvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1NRTGl0ZUlEQkN1cnNvci5oCmluZGV4IGQ4MWRmYjVjM2Q5NTExMGJhM2MyZDFlOTNi
NjYzMTJjMDJkMzYyNjcuLmZkY2E4MGVkMGI2MWY2ZTUxZDMwNThmZmY2MzllZGJkYzJiMmYyZjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxp
dGVJREJDdXJzb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvU1FMaXRlSURCQ3Vyc29yLmgKQEAgLTY2LDEwICs2NiwxMSBAQCBwdWJsaWM6CiAKICAgICBj
b25zdCBJREJLZXlEYXRhJiBjdXJyZW50S2V5KCkgY29uc3Q7CiAgICAgY29uc3QgSURCS2V5RGF0
YSYgY3VycmVudFByaW1hcnlLZXkoKSBjb25zdDsKLSAgICBJREJWYWx1ZSogY3VycmVudFZhbHVl
KCkgY29uc3Q7CisgICAgY29uc3QgSURCVmFsdWUmIGN1cnJlbnRWYWx1ZSgpIGNvbnN0OwogCiAg
ICAgYm9vbCBhZHZhbmNlKHVpbnQ2NF90IGNvdW50KTsKICAgICBib29sIGl0ZXJhdGUoY29uc3Qg
SURCS2V5RGF0YSYgdGFyZ2V0S2V5LCBjb25zdCBJREJLZXlEYXRhJiB0YXJnZXRQcmltYXJ5S2V5
KTsKKyAgICBib29sIHByZWZldGNoT25lUmVjb3JkKCk7CiAgICAgYm9vbCBwcmVmZXRjaCgpOwog
CiAgICAgYm9vbCBkaWRDb21wbGV0ZSgpIGNvbnN0OwpAQCAtNzcsNyArNzgsOCBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIG9iamVjdFN0b3JlUmVjb3Jkc0NoYW5nZWQoKTsKIAotICAgIHZvaWQgY3Vy
cmVudERhdGEoSURCR2V0UmVzdWx0JiwgY29uc3QgT3B0aW9uYWw8SURCS2V5UGF0aD4mKTsKKyAg
ICBlbnVtIGNsYXNzIFNob3VsZEluY2x1ZGVQcmVmZXRjaGVkUmVjb3JkcyB7IE5vLCBZZXMgfTsK
KyAgICB2b2lkIGN1cnJlbnREYXRhKElEQkdldFJlc3VsdCYsIGNvbnN0IE9wdGlvbmFsPElEQktl
eVBhdGg+JiwgU2hvdWxkSW5jbHVkZVByZWZldGNoZWRSZWNvcmRzID0gU2hvdWxkSW5jbHVkZVBy
ZWZldGNoZWRSZWNvcmRzOjpObyk7CiAKIHByaXZhdGU6CiAgICAgYm9vbCBlc3RhYmxpc2hTdGF0
ZW1lbnQoKTsKQEAgLTEwOSw2ICsxMTEsOCBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBpc0RpcmVj
dGlvbk5leHQoKSBjb25zdCB7IHJldHVybiBtX2N1cnNvckRpcmVjdGlvbiA9PSBJbmRleGVkREI6
OkN1cnNvckRpcmVjdGlvbjo6TmV4dCB8fCBtX2N1cnNvckRpcmVjdGlvbiA9PSBJbmRleGVkREI6
OkN1cnNvckRpcmVjdGlvbjo6TmV4dHVuaXF1ZTsgfQogCisgICAgdm9pZCBpbmNyZWFzZUNvdW50
VG9QcmVmZXRjaCgpOworCiAgICAgU1FMaXRlSURCVHJhbnNhY3Rpb24qIG1fdHJhbnNhY3Rpb247
CiAgICAgSURCUmVzb3VyY2VJZGVudGlmaWVyIG1fY3Vyc29ySWRlbnRpZmllcjsKICAgICBpbnQ2
NF90IG1fb2JqZWN0U3RvcmVJRDsKQEAgLTEzMyw2ICsxMzcsOCBAQCBwcml2YXRlOgogICAgIGlu
dDY0X3QgbV9ib3VuZElEIHsgMCB9OwogCiAgICAgYm9vbCBtX2JhY2tpbmdTdG9yZUN1cnNvciB7
IGZhbHNlIH07CisKKyAgICB1bnNpZ25lZCBtX3ByZWZldGNoQ291bnQgeyAwIH07CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBJREJTZXJ2ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCmluZGV4IGEw
YTA1MTZmNmZiY2M0ZTY4MGZjMmM5YTdmMDQ4NzkyMzU1M2NkZGYuLmFmNWIzMTg1MDg1NmQ1ZDJk
YjYyOWE5NjAwYWI0ZjQyNjQzMTRlNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcApAQCAt
ODU0LDIyICs4NTQsNiBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjppdGVyYXRlQ3Vyc29yKGNv
bnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSQogICAgIGF1dG8gZXJyb3Ig
PSBtX2JhY2tpbmdTdG9yZS0+aXRlcmF0ZUN1cnNvcih0cmFuc2FjdGlvbklkZW50aWZpZXIsIGN1
cnNvcklkZW50aWZpZXIsIGRhdGEsIHJlc3VsdCk7CiAKICAgICBjYWxsYmFjayhlcnJvciwgcmVz
dWx0KTsKLQotICAgIGlmIChlcnJvci5pc051bGwoKSkKLSAgICAgICAgcHJlZmV0Y2hDdXJzb3Io
dHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjdXJzb3JJZGVudGlmaWVyLCBkYXRhLmNvdW50ID8gZGF0
YS5jb3VudCA6IDEpOwotfQotCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwcmVmZXRjaEN1cnNv
cihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29u
c3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiBjdXJzb3JJZGVudGlmaWVyLCB1aW50NjRfdCBzdGVw
KQotewotICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6cHJlZmV0Y2hDdXJz
b3IiKTsKLQotICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwotCi0gICAgdWludDY0X3QgY291
bnRUb1ByZWZldGNoID0gc3RlcCAqIDI7Ci0gICAgd2hpbGUgKGNvdW50VG9QcmVmZXRjaCAtLSkg
ewotICAgICAgICBpZiAoIW1fYmFja2luZ1N0b3JlLT5wcmVmZXRjaEN1cnNvcih0cmFuc2FjdGlv
bklkZW50aWZpZXIsIGN1cnNvcklkZW50aWZpZXIpKQotICAgICAgICAgICAgcmV0dXJuOwotICAg
IH0KIH0KIAogdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y29tbWl0VHJhbnNhY3Rpb24oVW5pcXVl
SURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIEVycm9yQ2FsbGJhY2sgY2FsbGJh
Y2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
VW5pcXVlSURCRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9VbmlxdWVJREJEYXRhYmFzZS5oCmluZGV4IDA2YmY2YTRlZjE2YzYyMzE4Y2RjMzkzOWIy
MzE2ZGFiYTU0ZjA0M2EuLjFjNjg4NzM1MDYwMjZlZmRlZmEwZDcyNzkzY2U4Y2EyYzc0YzQ0OTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9Vbmlx
dWVJREJEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9VbmlxdWVJREJEYXRhYmFzZS5oCkBAIC0xNDIsOCArMTQyLDYgQEAgcHJpdmF0ZToKIAog
ICAgIHZvaWQgY2xlYXJUcmFuc2FjdGlvbnNPbkNvbm5lY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VD
b25uZWN0aW9uJik7CiAKLSAgICB2b2lkIHByZWZldGNoQ3Vyc29yKGNvbnN0IElEQlJlc291cmNl
SWRlbnRpZmllciYsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYsIHVpbnQ2NF90IHN0ZXAp
OwotCiAgICAgSURCU2VydmVyJiBtX3NlcnZlcjsKICAgICBJREJEYXRhYmFzZUlkZW50aWZpZXIg
bV9pZGVudGlmaWVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlv
bi5jcHAKaW5kZXggMGM5YmIxMGZmODhjZDY0YzkwNTY5M2Y2MmNmYWNlZTg0MWFlMmY4ZC4uOTk3
NGNhNjcyZDM1OWUzZWZmYTEwNGUxYWNlNjBkODhjNDhlYmVlMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNh
Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9V
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcApAQCAtMzc0LDkgKzM3NCwxMyBAQCB2b2lk
IFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246Oml0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVx
dWVzdERhdGEmIHJlcXVlc3REYQogICAgIGF1dG8gZGF0YWJhc2UgPSBtX2RhdGFiYXNlQ29ubmVj
dGlvbi0+ZGF0YWJhc2UoKTsKICAgICBBU1NFUlQoZGF0YWJhc2UpOwogICAgIAotICAgIGRhdGFi
YXNlLT5pdGVyYXRlQ3Vyc29yKHJlcXVlc3REYXRhLCBkYXRhLCBbdGhpcywgcmVxdWVzdERhdGFd
KGF1dG8mIGVycm9yLCBjb25zdCBJREJHZXRSZXN1bHQmIHJlc3VsdCkgeworICAgIGRhdGFiYXNl
LT5pdGVyYXRlQ3Vyc29yKHJlcXVlc3REYXRhLCBkYXRhLCBbdGhpcywgcmVxdWVzdERhdGEsIG9w
dGlvbiA9IGRhdGEub3B0aW9uXShhdXRvJiBlcnJvciwgY29uc3QgSURCR2V0UmVzdWx0JiByZXN1
bHQpIHsKICAgICAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rp
b246Oml0ZXJhdGVDdXJzb3IgKGNhbGxiYWNrKSIpOwogCisgICAgICAgIGlmIChvcHRpb24gPT0g
SW5kZXhlZERCOjpDdXJzb3JJdGVyYXRlT3B0aW9uOjpEb05vdFJlcGx5KQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIEFTU0VSVCghZXJyb3IuaXNOdWxsKCkgfHwgcmVzdWx0LmlzRGVm
aW5lZCgpKTsKICAgICAgICAgaWYgKGVycm9yLmlzTnVsbCgpKQogICAgICAgICAgICAgbV9kYXRh
YmFzZUNvbm5lY3Rpb24tPmNvbm5lY3Rpb25Ub0NsaWVudCgpLmRpZEl0ZXJhdGVDdXJzb3IoSURC
UmVzdWx0RGF0YTo6aXRlcmF0ZUN1cnNvclN1Y2Nlc3MocmVxdWVzdERhdGEucmVxdWVzdElkZW50
aWZpZXIoKSwgcmVzdWx0KSk7CiAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJDdXJzb3JSZWNvcmQuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJDdXJzb3JSZWNvcmQuaAppbmRleCA2
MTM2MDRhOGM1ZmEyZWM3ODQzYmI5OGIwNTRlMTAxZjY2M2U2MzFlLi45ZDVhYjk0YWQ1NGQ0NTlh
OTM2MDQ5Mzg3MGI3MzJjM2U3NGEwMWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCQ3Vyc29yUmVjb3JkLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkN1cnNvclJlY29yZC5oCkBAIC0zNSwxMiAr
MzUsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IElEQkN1cnNvclJlY29yZCB7CiAg
ICAgSURCS2V5RGF0YSBrZXk7CiAgICAgSURCS2V5RGF0YSBwcmltYXJ5S2V5OwotICAgIHN0ZDo6
dW5pcXVlX3B0cjxJREJWYWx1ZT4gdmFsdWU7CisgICAgSURCVmFsdWUgdmFsdWU7CiAKICAgICB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAg
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImLCBJREJD
dXJzb3JSZWNvcmQmKTsKIAotICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4ga2V5LnNp
emUoKSArIHByaW1hcnlLZXkuc2l6ZSgpICsgKHZhbHVlID8gdmFsdWUtPnNpemUoKSA6IDApOyB9
CisgICAgSURCQ3Vyc29yUmVjb3JkIGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAgIHNpemVfdCBz
aXplKCkgY29uc3QgeyByZXR1cm4ga2V5LnNpemUoKSArIHByaW1hcnlLZXkuc2l6ZSgpICsgdmFs
dWUuc2l6ZSgpOyB9CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgpAQCAtNjQsNiArNjUs
MTEgQEAgYm9vbCBJREJDdXJzb3JSZWNvcmQ6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBJREJD
dXJzb3JSZWNvcmQmIHJlY29yZCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAoraW5saW5lIElEQkN1
cnNvclJlY29yZCBJREJDdXJzb3JSZWNvcmQ6Omlzb2xhdGVkQ29weSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIHsga2V5Lmlzb2xhdGVkQ29weSgpLCBwcmltYXJ5S2V5Lmlzb2xhdGVkQ29weSgpLCB2
YWx1ZS5pc29sYXRlZENvcHkoKSB9OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNl
bmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJJdGVyYXRlQ3Vyc29yRGF0YS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCSXRlcmF0ZUN1cnNvckRh
dGEuY3BwCmluZGV4IGYxZjBiYjNiNmRiNDFlYTk3ZDMwMmZhM2RjMjcyNjZmZGU4NjE3OTcuLmFk
OWY0YTQ3NTAwMjJiYjA2NDYyZmM4ZGM5ZjUxOTJiNDZiYmFiNzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJJdGVyYXRlQ3Vyc29yRGF0YS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkl0ZXJh
dGVDdXJzb3JEYXRhLmNwcApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IElEQkl0ZXJhdGVDdXJzb3JEYXRhIElEQkl0ZXJhdGVDdXJzb3JEYXRhOjppc29sYXRlZENvcHko
KSBjb25zdAogewotICAgIHJldHVybiB7IGtleURhdGEuaXNvbGF0ZWRDb3B5KCksIHByaW1hcnlL
ZXlEYXRhLmlzb2xhdGVkQ29weSgpLCBjb3VudCB9OworICAgIHJldHVybiB7IGtleURhdGEuaXNv
bGF0ZWRDb3B5KCksIHByaW1hcnlLZXlEYXRhLmlzb2xhdGVkQ29weSgpLCBjb3VudCwgb3B0aW9u
IH07CiB9CiAKICNpZiAhTE9HX0RJU0FCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCSXRlcmF0ZUN1cnNvckRhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJJdGVyYXRlQ3Vyc29yRGF0YS5oCmlu
ZGV4IDhkMzE1YzVhNmEzMTc0ZjFlMjMxYTQwYTExNTk2Y2ZlODJmM2IxYjEuLjRkZjZjNjQ1ZjNi
MjgxZTdjYTAwYmQ5ZDkyYmI3MWQwYzRmYjQwZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJJdGVyYXRlQ3Vyc29yRGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJJdGVyYXRlQ3Vyc29yRGF0
YS5oCkBAIC0zNSw2ICszNSw3IEBAIHN0cnVjdCBJREJJdGVyYXRlQ3Vyc29yRGF0YSB7CiAgICAg
SURCS2V5RGF0YSBrZXlEYXRhOwogICAgIElEQktleURhdGEgcHJpbWFyeUtleURhdGE7CiAgICAg
dW5zaWduZWQgY291bnQ7CisgICAgSW5kZXhlZERCOjpDdXJzb3JJdGVyYXRlT3B0aW9uIG9wdGlv
biB7IEluZGV4ZWREQjo6Q3Vyc29ySXRlcmF0ZU9wdGlvbjo6UmVwbHkgfTsKIAogICAgIFdFQkNP
UkVfRVhQT1JUIElEQkl0ZXJhdGVDdXJzb3JEYXRhIGlzb2xhdGVkQ29weSgpIGNvbnN0OwogCkBA
IC01MCw2ICs1MSw3IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIElEQkl0ZXJhdGVD
dXJzb3JEYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVy
IDw8IGtleURhdGEgPDwgcHJpbWFyeUtleURhdGEgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGNv
dW50KTsKKyAgICBlbmNvZGVyLmVuY29kZUVudW0ob3B0aW9uKTsKIH0KIAogdGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4KQEAgLTczLDkgKzc1LDExIEBAIGJvb2wgSURCSXRlcmF0ZUN1cnNvckRhdGE6
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBJREJJdGVyYXRlQ3Vyc29yRGF0YSYgaXRlcmF0CiAK
ICAgICBpZiAoY291bnQgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLQogICAgIGl0ZXJhdG9yQ3Vyc29yRGF0YS5jb3VudCA9IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihjb3VudCk7CiAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51
bShpdGVyYXRvckN1cnNvckRhdGEub3B0aW9uKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiMThlNzQyNDZiZjFmMjdlZmY3OWIwNzY5ZmU2ODBk
MjNiMzU5ZmUyLi43OTc1NWQ3MGY2YmEzZWUyZTVlZmI5ODA4ZWIzMzJjNzk3M2E5ZjM4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0xNDAzLDcgKzE0MDMsNyBAQAogCQk1MTBENEEzNDEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0
U3RyZWFtRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxMEQ0QTJFMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1FcnJvci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxMEQ0QTM3MTAz
MTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMEQ0QTMxMTAzMTY1RUUwMDQ5RUE1NCAvKiBT
b2NrZXRTdHJlYW1IYW5kbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk1MTBENEEzODEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFu
ZGxlQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTBENEEzMjEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNTExMEZD
RkMxRTAzNjQxRDAwNkY4RDBCIC8qIElEQkN1cnNvclJlY29yZC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExMEZDRkIxRTAzNjJBNTAwNkY4RDBCIC8q
IElEQkN1cnNvclJlY29yZC5oICovOyB9OworCQk1MTEwRkNGQzFFMDM2NDFEMDA2RjhEMEIgLyog
SURCQ3Vyc29yUmVjb3JkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MTEwRkNGQjFFMDM2MkE1MDA2RjhEMEIgLyogSURCQ3Vyc29yUmVjb3JkLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTExRUMxMjgx
QzUwQUFDQTAwMzJGOTgzIC8qIElEQlNlcmlhbGl6YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMUVDMTI2MUM1MEFBNTcwMDMyRjk4MyAvKiBJ
REJTZXJpYWxpemF0aW9uLmggKi87IH07CiAJCTUxMUVDMTJDMUM1MEFCQkYwMDMyRjk4MyAvKiBT
UUxpdGVJREJUcmFuc2FjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTExRUMxMkExQzUwQUJCQTAwMzJGOTgzIC8qIFNRTGl0ZUlEQlRyYW5zYWN0
aW9uLmggKi87IH07CiAJCTUxMUVDMTMwMUM1MEFCRjUwMDMyRjk4MyAvKiBTUUxpdGVJREJDdXJz
b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMUVD
MTJFMUM1MEFCRUMwMDMyRjk4MyAvKiBTUUxpdGVJREJDdXJzb3IuaCAqLzsgfTsKQEAgLTEzODc5
LDEyICsxMzg3OSwxMiBAQAogCQlDRDk0QTVDQzFGNzFDQjY5MDBGNTI1QzUgLyogQ0RNUmVxdWly
ZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ0RNUmVxdWlyZW1lbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q5NEE1Q0QxRjcxQ0I2OTAwRjUyNUM1
IC8qIENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDRDk0QTVDRTFGNzFDQjZBMDBGNTI1QzUgLyogQ0RNSW5zdGFuY2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ0RNSW5zdGFuY2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQ0Q5NEE1Q0YxRjcxQ0I2MTAwRjUyNUM1IC8qIENETVByb3h5Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENETVByb3h5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUNEOTRBNUNGMUY3MUNCNjEwMEY1MjVENSAvKiBDRE1Qcm94eS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDRE1Qcm94eS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEOTRBNUNGMUY3MUNCNkEwMEY1MjVDNSAvKiBD
RE1Qcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENETVByaXZhdGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q5NEE1RDAxRjcxQ0I2QjAwRjUyNUM1
IC8qIENETVJlc3RyaWN0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
RE1SZXN0cmljdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q5NEE1RDEx
RjcxQ0I2QjAwRjUyNUM1IC8qIENETUZhY3RvcnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQ0RNRmFjdG9yeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUNEOTRBNUQyMUY3MUNCNkIwMEY1MjVDNSAvKiBDRE1GYWN0b3J5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENETUZhY3RvcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJQ0Q5NEE1Q0YxRjcxQ0I2MTAwRjUyNUQ1IC8qIENETVByb3h5LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENETVByb3h5LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJQ0Q5NEE1Q0YxRjcxQ0I2MTAwRjUyNUM1IC8qIENETVByb3h5Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENETVByb3h5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUNEOTRBNUQzMUY3MUNCNkMwMEY1MjVDNSAvKiBDRE1NZWRpYUNh
cGFiaWxpdHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ0RNTWVkaWFDYXBh
YmlsaXR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEOTRBNUQ0MUY3MUNCNkMw
MEY1MjVDNSAvKiBDRE1LZXlTdGF0dXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ0RNS2V5U3RhdHVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEOTRBNUQ1
MUY3MUNCNkQwMEY1MjVDNSAvKiBDRE1TZXNzaW9uVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDRE1TZXNzaW9uVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390562</attachid>
            <date>2020-02-12 14:31:28 -0800</date>
            <delta_ts>2020-02-12 14:39:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207602-20200212143127.patch</filename>
            <type>text/plain</type>
            <size>57273</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2NDM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2U4NTMxMWM5OGU5NmMz
Mzk5OTdhNWM4NDFmMmFkZjRmNjgzNGQwYS4uZTllNzc5MjVlZjRiODI3NjFmMzUyZWNiNTM1OTgx
NDJhNDkxYjBjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNSBAQAorMjAyMC0wMi0xMiAgU2lo
dWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBJbmRleGVkREI6IHByZWZl
dGNoIGN1cnNvciByZWNvcmRzIG9uIGNsaWVudCBzaWRlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc2MDIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzU4NDgzOTI3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIENhY2hlIGN1cnNvciByZWNvcmRzIG9uIG9uIGNsaWVudCBzaWRlIGFuZCB1c2UgdGhvc2Ug
cmVjb3JkcyBmb3IgaXRlcmF0ZSBvcGVyYXRpb25zLgorCisgICAgICAgIFRoaXMgbWFrZXMgY3Vy
c29yIGNvbnRpbnVlL2FkdmFuY2UgdGVzdHMgaW4gUGVyZm9ybWFuY2VUZXN0cy9JbmRleGVkREIv
YmFzaWNzIH4zeCBmYXN0ZXIuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorCisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QkN1cnNvcjo6c2V0R2V0UmVzdWx0KTogUmVjb3JkIHRoZSBJRCBvZiBUcmFuc2FjdGlvbk9wZXJh
dGlvbiB0aGF0IHVwZGF0ZXMgY2FjaGUuCisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6Oml0
ZXJhdGVXaXRoUHJlZmV0Y2hlZFJlY29yZHMpOiBJREJDdXJzb3IgdXNlcyBjYWNoZWQgcmVjb3Jk
cyBmb3IgaXRlcmF0ZSBvcGVydGFpb25zIGlmIAorICAgICAgICB0aGVyZSBpcyBubyB3cml0ZSBv
cGVyYXRpb24gYmV0d2VlbiBsYXN0IGNhY2hlIHVwZGF0ZSBhbmQgY3VycmVudCBpdGVyYXRpb24g
b3BlcmF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yOjpjbGVhclByZWZldGNoZWRS
ZWNvcmRzKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaDoKKworICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkdldFJlc3VsdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJREJHZXRSZXN1bHQ6Omlzb2xhdGVkQ29weSk6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCR2V0UmVzdWx0Lmg6CisgICAgICAgIChXZWJDb3JlOjpJREJHZXRSZXN1bHQ6OklE
QkdldFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJHZXRSZXN1bHQ6OnByZWZldGNoZWRS
ZWNvcmRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkdldFJlc3VsdDo6ZW5jb2RlIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkdldFJlc3VsdDo6ZGVjb2RlKToKKworICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwOiBSZWNvcmQgY29ycmVzcG9uZGlu
ZyBUcmFuc2FjdGlvbk9wZXJhdGlvbiBJRCBpbiByZXF1ZXN0LgorICAgICAgICAoV2ViQ29yZTo6
SURCUmVxdWVzdDo6ZGlkT3Blbk9ySXRlcmF0ZUN1cnNvcik6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvSURCUmVxdWVzdC5oOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6cGVu
ZGluZ0N1cnNvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpzZXRUcmFu
c2FjdGlvbk9wZXJhdGlvbklEKToKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRy
YW5zYWN0aW9uLmNwcDogSWYgYSBjdXJzb3IgaXRlcmF0ZSByZXF1ZXN0IGNhbiBiZSBoYW5kbGVk
IHdpdGggY2FjaGVkIHJlY29yZHMsCisgICAgICAgIElEQkNsaWVudCBkb2VzIG5lZWQgdG8gc2Vu
ZCByZXF1ZXN0IHRvIElEQlNlcnZlciBhbmQgd2FpdCBmb3IgcmVzcG9uc2UuIEJ1dCByZXF1ZXN0
cyBiZWZvcmUgdGhlIGl0ZXJhdGUgcmVxdWVzdAorICAgICAgICBtYXkgbmVlZCB0byB3YWl0IHNl
cnZlciB0byBhbnN3ZXIsIGFuZCBzcGVjIHJlcXVpcmVzIHRvIGhhbmRsZSByZXF1ZXN0cyBpbiBv
cmRlci4gVGhlcmVmb3JlLCB3ZSBub3cga2VlcCBhbGwgdGhlIAorICAgICAgICByZXN1bHRzIGlu
IG1fdHJhbnNhY3Rpb25PcGVyYXRpb25SZXN1bHRNYXAgYW5kIGhhbmRsZSB0aGUgcmVzdWx0IGFj
Y29yZGluZyB0byB0aGUgb3JkZXJpbmcgaW4gCisgICAgICAgIG1fdHJhbnNhY3Rpb25PcGVyYXRp
b25zSW5Qcm9ncmVzc1F1ZXVlLgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmFi
b3J0SW5Qcm9ncmVzc09wZXJhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rp
b246OnJlbW92ZVJlcXVlc3QpOiBCZWNhdXNlIHJlc3VsdCBvZiBhIGN1cnNvciByZXF1ZXN0IGNh
biBiZSBhbnN3ZXJlZCBzb29uZXIsIGl0IGlzIAorICAgICAgICBwb3NzaWJsZSB0aGF0IGluIGZp
bmlzaGVkRGlzcGF0Y2hFdmVudEZvclJlcXVlc3QsIG1fY3VycmVudGx5Q29tcGxldGluZ1JlcXVl
c3QsIHdoaWNoIGlzIGEgY3Vyc29yIHJlcXVlc3QsIGlzIAorICAgICAgICBzZXQgdG8gbnVsbHB0
ciwgYW5kIHRoZW4gaXQgaXMgc2V0IHRvIHRoZSBzYW1lIGN1cnNvciByZXF1ZXN0IGluIGhhbmRs
ZU9wZXJhdGlvbnNDb21wbGV0ZWRPblNlcnZlci4gVGhpcyAKKyAgICAgICAgaGFwcGVucyBpbiBk
aXNwYXRjaEV2ZW50IG9mIHRoZSBjdXJzb3IgcmVxdWVzdCwgd2hlcmUgcmVxdWVzdCB3b3VsZCBy
ZW1vdmUgaXRzZWxmIGZyb20gdHJhbnNhY3Rpb24gYXQgdGhlIGVuZC4KKyAgICAgICAgSW4gdGhp
cyBjYXNlLCB0cmFuc2FjdGlvbiBtYXkgY29tbWl0IGFmdGVyIHRoZSByZXF1ZXN0IGxpc3QgYmVj
b21lcyBlbXB0eS4gQnV0IHRyYW5zYWN0aW9uIHNob3VsZCBub3QgYmVjYXVzZQorICAgICAgICB0
aGF0IHJlcXVlc3QgaXMgc3RpbGwgdmFsaWQgYXMgbV9jdXJyZW50bHlDb21wbGV0aW5nUmVxdWVz
dCBhbmQgc2hvdWxkIG5vdCBiZSByZW1vdmVkLgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNh
Y3Rpb246OnNjaGVkdWxlT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0
aW9uOjpvcGVyYXRpb25Db21wbGV0ZWRPblNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJU
cmFuc2FjdGlvbjo6aGFuZGxlT3BlcmF0aW9uc0NvbXBsZXRlZE9uU2VydmVyKTogQWxsIHJlcXVl
c3RzIHdlcmUgc2VudCB0byBJREJTZXJ2ZXIgYW5kIHRoZQorICAgICAgICByZXNwb25zZS9yZXN1
bHQgb3JkZXIgd291bGQgbmF0dXJhbGx5IGJlIHRoZSBzYW1lIGFzIHJlcXVlc3Qgb3JkZXIuIE5v
dyB0aGF0IHNvbWUgcmVzdWx0cyBjYW4gYmUgZ2VuZXJhdGVkCisgICAgICAgIHNvb25lciwgd2Ug
bm8gbG9uZ2VyIGhhbmRsZSByZXF1ZXN0cyB1c2luZyBtX2NvbXBsZXRlZE9uU2VydmVyUXVldWUu
CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6Y3JlYXRlT2JqZWN0U3RvcmUpOiBN
YXJrIGFzIHdyaXRlIG9wZXJhdGlvbiB0byB0cmFjayBsYXN0IHdyaXRlIG9wZXJhdGlvbi4KKyAg
ICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZW5hbWVPYmplY3RTdG9yZSk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmNyZWF0ZUluZGV4KTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cmVuYW1lSW5kZXgpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0RGVsZXRlUmVjb3JkKTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cmVxdWVzdENsZWFyT2Jq
ZWN0U3RvcmUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZXF1
ZXN0UHV0T3JBZGQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpk
ZWxldGVPYmplY3RTdG9yZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rp
b246OmRlbGV0ZUluZGV4KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlv
bjo6aXRlcmF0ZUN1cnNvck9uU2VydmVyKTogT25seSB1c2UgY2FjaGVkIHJlY29yZHMgaWYgdGhl
IHJlcXVlc3QgZG9lcyBub3Qgc3BlY2lmeSB0YXJnZXQKKyAgICAgICAga2V5LiBJZiBjdXJzb3Ig
aXMgaXRlcmF0ZWQgc3VjY2Vzc2Z1bGx5IHdpdGggY2FjaGUsIHNlbmQgYSBtZXNzYWdlIHRvIElE
QlNlcnZlciB0byBub3RpZnkgYWJvdXQgdGhlIHByb2dyZXNzIGJ1dAorICAgICAgICBkb24ndCBu
ZWVkIGl0IHRvIHJlcGx5LiBPdGhlcndpc2UsIGZhbGwgYmFjayB0byBkZXBlbmQgb24gSURCU2Vy
dmVyIHRvIGFuc3dlciB0aGUgcmVxdWVzdC4KKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0
aW9uOjpnZW5lcmF0ZU9wZXJhdGlvbklEKTogVHJhbnNhY3Rpb25PcGVyYXRpb24gSUQgaXMgdW5p
cXVlIGluIGEgdHJhbnNhY3Rpb24uCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJh
bnNhY3Rpb24uaDoKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0luZGV4ZWREQi5oOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uUHJveHkuY3Bw
OiAKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5OjppdGVy
YXRlQ3Vyc29yKTogSWYgdGhlIGl0ZXJhdGVDdXJzb3IgZG9lcyBub3QgbmVlZCBhbiBhbnN3ZXIs
IGRvbid0CisgICAgICAgIHRyYWNrIGl0IGluIElEQkNvbm5lY3Rpb25Qcm94eS4KKworICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uOjpUcmFuc2Fj
dGlvbk9wZXJhdGlvbik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5z
YWN0aW9uT3BlcmF0aW9uLmg6IEFkZCBJRCB0byBUcmFuc2FjdGlvbk9wZXJhdGlvbi4KKyAgICAg
ICAgKFdlYkNvcmU6OklEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb246Om9wZXJhdGlvbklE
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRp
b246OlRyYW5zYWN0aW9uT3BlcmF0aW9uKToKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9JREJCYWNraW5nU3RvcmUuaDogcmVtb3ZlIHByZWZldGNoQ3Vyc29yIGFzIGl0IGlz
IG5vdCB1c2VkIG5vdy4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5
SURCQmFja2luZ1N0b3JlLmg6IERpdHRvLiBBbHNvIHRoaXMgcGF0Y2ggb25seSBkZWFscyB3aXRo
IHByZWZldGNoaW5nIGluIAorICAgICAgICBwZXJzaXN0ZW50IHN0b3JlLgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuaDoKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVJ
bmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6Z2V0QWxsSW5kZXhSZWNvcmRzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FM
aXRlSURCQmFja2luZ1N0b3JlOjpnZXRJbmRleFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6aXRlcmF0ZUN1cnNvcik6IE9ubHkgcHJl
ZmV0Y2ggYXQgd2hlbiByZXF1ZXN0IG5lZWRzIHRvIGJlIGFuc3dlcmVkLgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OnByZWZldGNoQ3Vyc29yKTog
RGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFj
a2luZ1N0b3JlLmg6CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRl
SURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vy
c29yOjpjdXJyZW50RGF0YSk6IFByb3ZpZGUgYW4gb3B0aW9uIHRvIGluY2x1ZGUgcHJlZmV0Y2hl
ZCByZWNvcmRzIGluIHJlc3VsdC4KKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRl
SURCQ3Vyc29yOjpvYmplY3RTdG9yZVJlY29yZHNDaGFuZ2VkKTogUmVzZXQgY291bnQgdG8gcHJl
ZmV0Y2ggd2hlbiB0aGVyZSBpcyBhIAorICAgICAgICBjaGFuZ2UgdG8gbWFrZSBwcmVmZXRjaCBh
ZGFwdGl2ZS4KKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpv
YmplY3RTdG9yZVJlY29yZHNDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
U1FMaXRlSURCQ3Vyc29yOjpwcmVmZXRjaE9uZVJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJTZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6aW5jcmVhc2VDb3VudFRvUHJlZmV0Y2gpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OnByZWZldGNoKTogQ291
bnQgdG8gcHJlZmV0Y2ggaXMgZGVjaWRlZCBieSBTUUxpdGVDdXJzb3Igbm93LgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OmludGVybmFsRmV0Y2hOZXh0UmVj
b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpjdXJy
ZW50VmFsdWUgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxp
dGVJREJDdXJzb3IuaDoKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9Vbmlx
dWVJREJEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlE
QkRhdGFiYXNlOjppdGVyYXRlQ3Vyc29yKTogTW92ZSBjYWxsIHRvIHByZWZldGNoIGN1cnNvciB0
byBTUUxpdGVJREJCYWNraW5nU3RvcmUuCisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVu
aXF1ZUlEQkRhdGFiYXNlOjpwcmVmZXRjaEN1cnNvcik6IERlbGV0ZWQuCisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmg6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9u
OjppdGVyYXRlQ3Vyc29yKToKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9J
REJDdXJzb3JSZWNvcmQuaDogU3RvcCB1c2UgcG9pbnRlciBmb3IgSURCVmFsdWUgZm9yIGVhc2ll
ciBlbmNvZGluZyBhbmQgZGVjb2RpbmcuCisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3JSZWNv
cmQ6OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yUmVjb3JkOjppc29s
YXRlZENvcHkgY29uc3QpOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lE
Qkl0ZXJhdGVDdXJzb3JEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkl0ZXJhdGVDdXJz
b3JEYXRhOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L3NoYXJlZC9JREJJdGVyYXRlQ3Vyc29yRGF0YS5oOiBBZGQgYW4gb3B0aW9uIHRvIGxldCBJREJT
ZXJ2ZXIga25vdyB3aGV0aGVyIGl0IHNob3VsZCBhbnN3ZXIKKyAgICAgICAgdGhlIGN1cnNvciBy
ZXF1ZXN0LiAKKyAgICAgICAgKFdlYkNvcmU6OklEQkl0ZXJhdGVDdXJzb3JEYXRhOjplbmNvZGUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCSXRlcmF0ZUN1cnNvckRhdGE6OmRlY29kZSk6
CisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMjAt
MDItMTIgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJ
RkNdIFJlbmFtZSBEaXNwbGF5OjpSdW46OlRleHRDb250ZXh0IHRvIFRleHRDb250ZW50CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVh
ZGVycy5jbWFrZQppbmRleCBhZjg3NzdlM2YwNWJmYjNhMmRhYjQwNzhmZTZkYTgwZTRlN2QyMjYw
Li4xN2M4YzE2YjdiZjZkYzJlNjM1NDI2ZGJlZjA1OTk5ODYxYTAwOTBhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMu
Y21ha2UKQEAgLTY4LDYgKzY4LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVB
REVSUwogICAgIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5z
YWN0aW9uLmgKIAogICAgIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJDdXJzb3JJbmZvLmgK
KyAgICBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCQ3Vyc29yUmVjb3JkLmgKICAgICBNb2R1
bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRGF0YWJhc2VJbmZvLmgKICAgICBNb2R1bGVzL2luZGV4
ZWRkYi9zaGFyZWQvSURCRXJyb3IuaAogICAgIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJH
ZXRBbGxSZWNvcmRzRGF0YS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCQ3Vyc29yLmNwcAppbmRleCAzNjhlZGMyMDQ4M2I1NDFhY2Q3YjNiZjU5YmY1Y2YxN2ExYzkz
YTBiLi42NWI4OWI1ODViNWNlYWZhZmY5YzcwMTBmMDE5ZjU1YTE1ZTQ2YTRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAKQEAgLTMxMiw3ICsz
MTIsNyBAQCBFeGNlcHRpb25PcjxSZWY8V2ViQ29yZTo6SURCUmVxdWVzdD4+IElEQkN1cnNvcjo6
ZGVsZXRlRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QmCiAgICAgcmV0dXJuIHJlcXVlc3Q7CiB9CiAK
LWJvb2wgSURCQ3Vyc29yOjpzZXRHZXRSZXN1bHQoSURCUmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
SURCR2V0UmVzdWx0JiBnZXRSZXN1bHQpCitib29sIElEQkN1cnNvcjo6c2V0R2V0UmVzdWx0KElE
QlJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IElEQkdldFJlc3VsdCYgZ2V0UmVzdWx0LCB1aW50NjRf
dCBvcGVyYXRpb25JRCkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCQ3Vyc29yOjpzZXRHZXRS
ZXN1bHQgLSBjdXJyZW50IGtleSAlcyIsIGdldFJlc3VsdC5rZXlEYXRhKCkubG9nZ2luZ1N0cmlu
ZygpLnN1YnN0cmluZygwLCAxMDApLnV0ZjgoKS5kYXRhKCkpOwogICAgIEFTU0VSVChjYW5DdXJy
ZW50VGhyZWFkQWNjZXNzVGhyZWFkTG9jYWxEYXRhKGVmZmVjdGl2ZU9iamVjdFN0b3JlKCkudHJh
bnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKSk7CkBAIC0zNDksNiArMzQ5LDEz
IEBAIGJvb2wgSURCQ3Vyc29yOjpzZXRHZXRSZXN1bHQoSURCUmVxdWVzdCYgcmVxdWVzdCwgY29u
c3QgSURCR2V0UmVzdWx0JiBnZXRSZXN1bHQpCiAgICAgICAgIG1fa2V5UGF0aCA9IGdldFJlc3Vs
dC5rZXlQYXRoKCk7CiAgICAgfQogCisgICAgYXV0byBwcmVmZXRjaGVkUmVjb3JkcyA9IGdldFJl
c3VsdC5wcmVmZXRjaGVkUmVjb3JkcygpOworICAgIGlmICghcHJlZmV0Y2hlZFJlY29yZHMuaXNF
bXB0eSgpKSB7CisgICAgICAgIGZvciAoYXV0byYgcmVjb3JkIDogcHJlZmV0Y2hlZFJlY29yZHMp
CisgICAgICAgICAgICBtX3ByZWZldGNoZWRSZWNvcmRzLmFwcGVuZChyZWNvcmQpOworICAgICAg
ICBtX3ByZWZldGNoT3BlcmF0aW9uSUQgPSBvcGVyYXRpb25JRDsKKyAgICB9CisKICAgICBtX2dv
dFZhbHVlID0gdHJ1ZTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTM2MCw2ICszNjcsMjYgQEAg
dm9pZCBJREJDdXJzb3I6OmNsZWFyV3JhcHBlcnMoKQogICAgIG1fdmFsdWVXcmFwcGVyLmNsZWFy
KCk7CiB9CiAKK09wdGlvbmFsPElEQkdldFJlc3VsdD4gSURCQ3Vyc29yOjppdGVyYXRlV2l0aFBy
ZWZldGNoZWRSZWNvcmRzKHVuc2lnbmVkIGNvdW50LCB1aW50NjRfdCBsYXN0V3JpdGVPcGVyYXRp
b25JRCkKK3sKKyAgICB1bnNpZ25lZCBzdGVwID0gY291bnQgPiAwID8gY291bnQgOiAxOworICAg
IGlmIChzdGVwID4gbV9wcmVmZXRjaGVkUmVjb3Jkcy5zaXplKCkgfHwgbV9wcmVmZXRjaE9wZXJh
dGlvbklEIDw9IGxhc3RXcml0ZU9wZXJhdGlvbklEKQorICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworCisgICAgd2hpbGUgKC0tc3RlcCkKKyAgICAgICAgbV9wcmVmZXRjaGVkUmVjb3Jkcy5y
ZW1vdmVGaXJzdCgpOworCisgICAgYXV0byByZWNvcmQgPSBtX3ByZWZldGNoZWRSZWNvcmRzLnRh
a2VGaXJzdCgpOworCisgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjppdGVyYXRl
V2l0aFByZWZldGNoZWRSZWNvcmRzIGNvbnN1bWVzICV1IHJlY29yZHMiLCBjb3VudCA+IDAgPyBj
b3VudCA6IDEpOworICAgIHJldHVybiBJREJHZXRSZXN1bHQocmVjb3JkLmtleSwgcmVjb3JkLnBy
aW1hcnlLZXksIElEQlZhbHVlKHJlY29yZC52YWx1ZSksIGVmZmVjdGl2ZU9iamVjdFN0b3JlKCku
a2V5UGF0aCgpKTsKK30KKwordm9pZCBJREJDdXJzb3I6OmNsZWFyUHJlZmV0Y2hlZFJlY29yZHMo
KQoreworICAgIG1fcHJlZmV0Y2hlZFJlY29yZHMuY2xlYXIoKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5oCmluZGV4IDQ2MjJlNzAzMzQ0
YjM2MDgwYTcxZGVhMzJkZjhhNTMxZGNmYzU4YWMuLjdiYzhmOGMwMTdkZjUwZDI2Zjk5YTRiYTNi
NDMyOWFlYjY3NWY4ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkN1cnNvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkN1cnNvci5oCkBAIC04MSwxMCArODEsMTMgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJXcmFw
cGVycygpOwogICAgIElEQlJlcXVlc3QqIHJlcXVlc3QoKSB7IHJldHVybiBtX3JlcXVlc3QuZ2V0
KCk7IH0KIAotICAgIGJvb2wgc2V0R2V0UmVzdWx0KElEQlJlcXVlc3QmLCBjb25zdCBJREJHZXRS
ZXN1bHQmKTsKKyAgICBib29sIHNldEdldFJlc3VsdChJREJSZXF1ZXN0JiwgY29uc3QgSURCR2V0
UmVzdWx0JiwgdWludDY0X3Qgb3BlcmF0aW9uSUQpOwogCiAgICAgdmlydHVhbCBib29sIGlzS2V5
Q3Vyc29yV2l0aFZhbHVlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAorICAgIE9wdGlvbmFs
PElEQkdldFJlc3VsdD4gaXRlcmF0ZVdpdGhQcmVmZXRjaGVkUmVjb3Jkcyh1bnNpZ25lZCBjb3Vu
dCwgdWludDY0X3QgbGFzdFdyaXRlT3BlcmF0aW9uSUQpOworICAgIHZvaWQgY2xlYXJQcmVmZXRj
aGVkUmVjb3JkcygpOworCiBwcm90ZWN0ZWQ6CiAgICAgSURCQ3Vyc29yKElEQk9iamVjdFN0b3Jl
JiwgY29uc3QgSURCQ3Vyc29ySW5mbyYpOwogICAgIElEQkN1cnNvcihJREJJbmRleCYsIGNvbnN0
IElEQkN1cnNvckluZm8mKTsKQEAgLTExMyw2ICsxMTYsOSBAQCBwcml2YXRlOgogICAgIEpTVmFs
dWVJbldyYXBwZWRPYmplY3QgbV9rZXlXcmFwcGVyOwogICAgIEpTVmFsdWVJbldyYXBwZWRPYmpl
Y3QgbV9wcmltYXJ5S2V5V3JhcHBlcjsKICAgICBKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0IG1fdmFs
dWVXcmFwcGVyOworCisgICAgRGVxdWU8SURCQ3Vyc29yUmVjb3JkPiBtX3ByZWZldGNoZWRSZWNv
cmRzOworICAgIHVpbnQ2NF90IG1fcHJlZmV0Y2hPcGVyYXRpb25JRCB7IDAgfTsKIH07CiAKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCR2V0UmVzdWx0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkdldFJlc3VsdC5jcHAK
aW5kZXggOTQ5ZTgxMzM5N2YzMWJmMThlNjViYmM1NTgyMTJkMDg4MTZjMDZmZi4uMTJlYzg3MDcz
Mjk3MDFhNGNhMzUwMTJkZTUyYmZiMTI3MzUyOWI2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCR2V0UmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuY3BwCkBAIC01NSw2ICs1NSw3IEBAIHZv
aWQgSURCR2V0UmVzdWx0Ojppc29sYXRlZENvcHkoY29uc3QgSURCR2V0UmVzdWx0JiBzb3VyY2Us
IElEQkdldFJlc3VsdCYgZGVzdGluCiAgICAgZGVzdGluYXRpb24ubV9wcmltYXJ5S2V5RGF0YSA9
IHNvdXJjZS5tX3ByaW1hcnlLZXlEYXRhLmlzb2xhdGVkQ29weSgpOwogICAgIGRlc3RpbmF0aW9u
Lm1fa2V5UGF0aCA9IFdlYkNvcmU6Omlzb2xhdGVkQ29weShzb3VyY2UubV9rZXlQYXRoKTsKICAg
ICBkZXN0aW5hdGlvbi5tX2lzRGVmaW5lZCA9IHNvdXJjZS5tX2lzRGVmaW5lZDsKKyAgICBkZXN0
aW5hdGlvbi5tX3ByZWZldGNoZWRSZWNvcmRzID0gc291cmNlLm1fcHJlZmV0Y2hlZFJlY29yZHMu
aXNvbGF0ZWRDb3B5KCk7CiB9CiAKIHZvaWQgSURCR2V0UmVzdWx0OjpzZXRWYWx1ZShJREJWYWx1
ZSYmIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCR2V0UmVzdWx0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRS
ZXN1bHQuaAppbmRleCBlODdjMzkwMTIzMzQ5ZDExNTNkMWZjMDhjOWU2YjJiZjc0NTFiMjUzLi5k
MDNkODliYWMyNDgyY2Q4MzEyMzhhZjNkMjI5MGY1NmY5M2E5NjhmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuaApAQCAtMjcsNiArMjcsNyBA
QAogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKKyNpbmNsdWRlICJJREJDdXJzb3JS
ZWNvcmQuaCIKICNpbmNsdWRlICJJREJLZXkuaCIKICNpbmNsdWRlICJJREJLZXlEYXRhLmgiCiAj
aW5jbHVkZSAiSURCS2V5UGF0aC5oIgpAQCAtNzYsNiArNzcsMTUgQEAgcHVibGljOgogICAgIHsK
ICAgICB9CiAKKyAgICBJREJHZXRSZXN1bHQoY29uc3QgSURCS2V5RGF0YSYga2V5RGF0YSwgY29u
c3QgSURCS2V5RGF0YSYgcHJpbWFyeUtleURhdGEsIElEQlZhbHVlJiYgdmFsdWUsIGNvbnN0IE9w
dGlvbmFsPElEQktleVBhdGg+JiBrZXlQYXRoLCBWZWN0b3I8SURCQ3Vyc29yUmVjb3JkPiYmIHBy
ZWZldGVjaGVkUmVjb3JkcykKKyAgICAgICAgOiBtX3ZhbHVlKFdURk1vdmUodmFsdWUpKQorICAg
ICAgICAsIG1fa2V5RGF0YShrZXlEYXRhKQorICAgICAgICAsIG1fcHJpbWFyeUtleURhdGEocHJp
bWFyeUtleURhdGEpCisgICAgICAgICwgbV9rZXlQYXRoKGtleVBhdGgpCisgICAgICAgICwgbV9w
cmVmZXRjaGVkUmVjb3JkcyhXVEZNb3ZlKHByZWZldGVjaGVkUmVjb3JkcykpCisgICAgeworICAg
IH0KKwogICAgIGVudW0gSXNvbGF0ZWRDb3B5VGFnIHsgSXNvbGF0ZWRDb3B5IH07CiAgICAgSURC
R2V0UmVzdWx0KGNvbnN0IElEQkdldFJlc3VsdCYsIElzb2xhdGVkQ29weVRhZyk7CiAKQEAgLTg3
LDYgKzk3LDcgQEAgcHVibGljOgogICAgIGNvbnN0IElEQktleURhdGEmIGtleURhdGEoKSBjb25z
dCB7IHJldHVybiBtX2tleURhdGE7IH0KICAgICBjb25zdCBJREJLZXlEYXRhJiBwcmltYXJ5S2V5
RGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpbWFyeUtleURhdGE7IH0KICAgICBjb25zdCBPcHRp
b25hbDxJREJLZXlQYXRoPiYga2V5UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fa2V5UGF0aDsgfQor
ICAgIGNvbnN0IFZlY3RvcjxJREJDdXJzb3JSZWNvcmQ+JiBwcmVmZXRjaGVkUmVjb3JkcygpIGNv
bnN0IHsgcmV0dXJuIG1fcHJlZmV0Y2hlZFJlY29yZHM7IH0KICAgICBib29sIGlzRGVmaW5lZCgp
IGNvbnN0IHsgcmV0dXJuIG1faXNEZWZpbmVkOyB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CkBAIC0xMDEsMTMgKzExMiwxNCBAQCBw
cml2YXRlOgogICAgIElEQktleURhdGEgbV9rZXlEYXRhOwogICAgIElEQktleURhdGEgbV9wcmlt
YXJ5S2V5RGF0YTsKICAgICBPcHRpb25hbDxJREJLZXlQYXRoPiBtX2tleVBhdGg7CisgICAgVmVj
dG9yPElEQkN1cnNvclJlY29yZD4gbV9wcmVmZXRjaGVkUmVjb3JkczsKICAgICBib29sIG1faXNE
ZWZpbmVkIHsgdHJ1ZSB9OwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgSURC
R2V0UmVzdWx0OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVy
IDw8IG1fa2V5RGF0YSA8PCBtX3ByaW1hcnlLZXlEYXRhIDw8IG1fa2V5UGF0aCA8PCBtX2lzRGVm
aW5lZCA8PCBtX3ZhbHVlOworICAgIGVuY29kZXIgPDwgbV9rZXlEYXRhIDw8IG1fcHJpbWFyeUtl
eURhdGEgPDwgbV9rZXlQYXRoIDw8IG1faXNEZWZpbmVkIDw8IG1fdmFsdWUgPDwgbV9wcmVmZXRj
aGVkUmVjb3JkczsKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KQEAgLTEzNyw2ICsxNDks
MTIgQEAgYm9vbCBJREJHZXRSZXN1bHQ6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBJREJHZXRS
ZXN1bHQmIHJlc3VsdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJlc3VsdC5tX3ZhbHVl
ID0gV1RGTW92ZSgqdmFsdWUpOwogCisgICAgT3B0aW9uYWw8VmVjdG9yPElEQkN1cnNvclJlY29y
ZD4+IHByZWZldGNoZWRSZWNvcmRzOworICAgIGRlY29kZXIgPj4gcHJlZmV0Y2hlZFJlY29yZHM7
CisgICAgaWYgKCFwcmVmZXRjaGVkUmVjb3JkcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IHJlc3VsdC5tX3ByZWZldGNoZWRSZWNvcmRzID0gV1RGTW92ZSgqcHJlZmV0Y2hlZFJlY29yZHMp
OworCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCUmVxdWVzdC5jcHAKaW5kZXggMzBmNmU1Y2RmNGQ5ZmRiYzYxY2UzYTIwM2M0
YWQwNjNiZDhjNTJiMy4uM2QwMjExOWM3YTUxZTFlMWZjYTBlYTJlZDRjOWQyNWU4NzVlMDI0OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAK
QEAgLTQ5OSw3ICs0OTksNyBAQCB2b2lkIElEQlJlcXVlc3Q6OmRpZE9wZW5Pckl0ZXJhdGVDdXJz
b3IoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKICAgICBtX3Jlc3VsdFdyYXBwZXIg
PSB7IH07CiAKICAgICBpZiAocmVzdWx0RGF0YS50eXBlKCkgPT0gSURCUmVzdWx0VHlwZTo6SXRl
cmF0ZUN1cnNvclN1Y2Nlc3MgfHwgcmVzdWx0RGF0YS50eXBlKCkgPT0gSURCUmVzdWx0VHlwZTo6
T3BlbkN1cnNvclN1Y2Nlc3MpIHsKLSAgICAgICAgaWYgKG1fcGVuZGluZ0N1cnNvci0+c2V0R2V0
UmVzdWx0KCp0aGlzLCByZXN1bHREYXRhLmdldFJlc3VsdCgpKSAmJiBtX2N1cnNvcldyYXBwZXIp
CisgICAgICAgIGlmIChtX3BlbmRpbmdDdXJzb3ItPnNldEdldFJlc3VsdCgqdGhpcywgcmVzdWx0
RGF0YS5nZXRSZXN1bHQoKSwgbV9jdXJyZW50VHJhbnNhY3Rpb25PcGVyYXRpb25JRCkgJiYgbV9j
dXJzb3JXcmFwcGVyKQogICAgICAgICAgICAgbV9yZXN1bHRXcmFwcGVyID0gbV9jdXJzb3JXcmFw
cGVyOwogICAgICAgICBpZiAocmVzdWx0RGF0YS5nZXRSZXN1bHQoKS5pc0RlZmluZWQoKSkKICAg
ICAgICAgICAgIG1fcmVzdWx0ID0gbV9wZW5kaW5nQ3Vyc29yOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oCmluZGV4IDI3ODUwMWJhNjBlOWRlMDMwMjgx
ZDhjYjJmMTEwNjc4YjBjOWI4YjMuLjI4NjYxMzQ0YjBkZTIxNzZmNWJlYWMzNjEzMTU0MGYxMjU2
ZmRkZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJl
cXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0
LmgKQEAgLTExOCw3ICsxMTgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aWxsSXRlcmF0ZUN1cnNv
cihJREJDdXJzb3ImKTsKICAgICB2b2lkIGRpZE9wZW5Pckl0ZXJhdGVDdXJzb3IoY29uc3QgSURC
UmVzdWx0RGF0YSYpOwogCi0gICAgY29uc3QgSURCQ3Vyc29yKiBwZW5kaW5nQ3Vyc29yKCkgY29u
c3QgeyByZXR1cm4gbV9wZW5kaW5nQ3Vyc29yLmdldCgpOyB9CisgICAgSURCQ3Vyc29yKiBwZW5k
aW5nQ3Vyc29yKCkgY29uc3QgeyByZXR1cm4gbV9wZW5kaW5nQ3Vyc29yID8gbV9wZW5kaW5nQ3Vy
c29yLmdldCgpIDogbnVsbHB0cjsgfQogCiAgICAgdm9pZCBzZXRTb3VyY2UoSURCQ3Vyc29yJik7
CiAgICAgdm9pZCBzZXRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24oSURCVHJhbnNhY3Rpb24mKTsK
QEAgLTEyNyw2ICsxMjcsOCBAQCBwdWJsaWM6CiAKICAgICBib29sIGhhc1BlbmRpbmdBY3Rpdml0
eSgpIGNvbnN0IGZpbmFsOwogCisgICAgdm9pZCBzZXRUcmFuc2FjdGlvbk9wZXJhdGlvbklEKHVp
bnQ2NF90IHRyYW5zYWN0aW9uT3BlcmF0aW9uSUQpIHsgbV9jdXJyZW50VHJhbnNhY3Rpb25PcGVy
YXRpb25JRCA9IHRyYW5zYWN0aW9uT3BlcmF0aW9uSUQ7IH0KKwogcHJvdGVjdGVkOgogICAgIElE
QlJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIElEQkNsaWVudDo6SURCQ29ubmVjdGlv
blByb3h5Jik7CiAKQEAgLTE5MSw2ICsxOTMsOCBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX2Rp
c3BhdGNoaW5nRXZlbnQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXNVbmNhdWdodEV4Y2VwdGlv
biB7IGZhbHNlIH07CisKKyAgICB1aW50NjRfdCBtX2N1cnJlbnRUcmFuc2FjdGlvbk9wZXJhdGlv
bklEIHsgMCB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCmluZGV4IDQ3ZjJj
YjBlNWZmNjNjODQ5YTk5MmNkOGRmN2M3YWQyOWQzMDE3MmQuLjhkZGYyMDc5YWY5NTQwMmIwYTQz
NDBjYzI3OWU5NGI5NzUxZmEzMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKQEAgLTI3MiwxNSArMjcyLDcgQEAgdm9pZCBJ
REJUcmFuc2FjdGlvbjo6YWJvcnRJblByb2dyZXNzT3BlcmF0aW9ucyhjb25zdCBJREJFcnJvciYg
ZXJyb3IpCiAgICAgICAgIG9wZXJhdGlvbi0+ZG9Db21wbGV0ZShJREJSZXN1bHREYXRhOjplcnJv
cihvcGVyYXRpb24tPmlkZW50aWZpZXIoKSwgZXJyb3IpKTsKICAgICB9CiAKLSAgICBWZWN0b3I8
UmVmUHRyPElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24+PiBjb21wbGV0ZWRPblNlcnZl
ckFib3J0VmVjdG9yOwotICAgIGNvbXBsZXRlZE9uU2VydmVyQWJvcnRWZWN0b3IucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShtX2NvbXBsZXRlZE9uU2VydmVyUXVldWUuc2l6ZSgpKTsKLSAgICB3aGls
ZSAoIW1fY29tcGxldGVkT25TZXJ2ZXJRdWV1ZS5pc0VtcHR5KCkpCi0gICAgICAgIGNvbXBsZXRl
ZE9uU2VydmVyQWJvcnRWZWN0b3IudW5jaGVja2VkQXBwZW5kKG1fY29tcGxldGVkT25TZXJ2ZXJR
dWV1ZS50YWtlRmlyc3QoKS5maXJzdCk7Ci0KLSAgICBmb3IgKGF1dG8mIG9wZXJhdGlvbiA6IGNv
bXBsZXRlZE9uU2VydmVyQWJvcnRWZWN0b3IpIHsKLSAgICAgICAgbV9jdXJyZW50bHlDb21wbGV0
aW5nUmVxdWVzdCA9IG51bGxwdHI7Ci0gICAgICAgIG9wZXJhdGlvbi0+ZG9Db21wbGV0ZShJREJS
ZXN1bHREYXRhOjplcnJvcihvcGVyYXRpb24tPmlkZW50aWZpZXIoKSwgZXJyb3IpKTsKLSAgICB9
CisgICAgbV90cmFuc2FjdGlvbk9wZXJhdGlvblJlc3VsdE1hcC5jbGVhcigpOwogCiAgICAgbV9j
dXJyZW50bHlDb21wbGV0aW5nUmVxdWVzdCA9IG51bGxwdHI7CiAgICAgY29ubmVjdGlvblByb3h5
KCkuZm9yZ2V0QWN0aXZlT3BlcmF0aW9ucyhpblByb2dyZXNzQWJvcnRWZWN0b3IpOwpAQCAtMzc2
LDE2ICszNjgsMjIgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6YWRkUmVxdWVzdChJREJSZXF1ZXN0
JiByZXF1ZXN0KQogdm9pZCBJREJUcmFuc2FjdGlvbjo6cmVtb3ZlUmVxdWVzdChJREJSZXF1ZXN0
JiByZXF1ZXN0KQogewogICAgIEFTU0VSVChjYW5DdXJyZW50VGhyZWFkQWNjZXNzVGhyZWFkTG9j
YWxEYXRhKG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKSk7CisgICAgaWYgKG1fY3VycmVudGx5
Q29tcGxldGluZ1JlcXVlc3QgPT0gJnJlcXVlc3QpCisgICAgICAgIHJldHVybjsKKwogICAgIG1f
b3BlblJlcXVlc3RzLnJlbW92ZSgmcmVxdWVzdCk7CiAKICAgICBhdXRvQ29tbWl0KCk7CiB9CiAK
LXZvaWQgSURCVHJhbnNhY3Rpb246OnNjaGVkdWxlT3BlcmF0aW9uKFJlZjxJREJDbGllbnQ6OlRy
YW5zYWN0aW9uT3BlcmF0aW9uPiYmIG9wZXJhdGlvbikKK3ZvaWQgSURCVHJhbnNhY3Rpb246OnNj
aGVkdWxlT3BlcmF0aW9uKFJlZjxJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uPiYmIG9w
ZXJhdGlvbiwgSXNXcml0ZU9wZXJhdGlvbiBpc1dyaXRlT3BlcmF0aW9uKQogewogICAgIEFTU0VS
VCghbV90cmFuc2FjdGlvbk9wZXJhdGlvbk1hcC5jb250YWlucyhvcGVyYXRpb24tPmlkZW50aWZp
ZXIoKSkpOwogICAgIEFTU0VSVChjYW5DdXJyZW50VGhyZWFkQWNjZXNzVGhyZWFkTG9jYWxEYXRh
KG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKSk7CiAKKyAgICBpZiAoaXNXcml0ZU9wZXJhdGlv
biA9PSBJc1dyaXRlT3BlcmF0aW9uOjpZZXMpCisgICAgICAgIG1fbGFzdFdyaXRlT3BlcmF0aW9u
SUQgPSBvcGVyYXRpb24tPm9wZXJhdGlvbklEKCk7CisKICAgICBhdXRvIGlkZW50aWZpZXIgPSBv
cGVyYXRpb24tPmlkZW50aWZpZXIoKTsKICAgICBtX3BlbmRpbmdUcmFuc2FjdGlvbk9wZXJhdGlv
blF1ZXVlLmFwcGVuZChvcGVyYXRpb24uY29weVJlZigpKTsKICAgICBtX3RyYW5zYWN0aW9uT3Bl
cmF0aW9uTWFwLnNldChpZGVudGlmaWVyLCBXVEZNb3ZlKG9wZXJhdGlvbikpOwpAQCAtMzk4LDcg
KzM5NiwxMCBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpvcGVyYXRpb25Db21wbGV0ZWRPblNlcnZl
cihjb25zdCBJREJSZXN1bHREYXRhJiBkYXRhLCBJREJDbAogICAgIEFTU0VSVChjYW5DdXJyZW50
VGhyZWFkQWNjZXNzVGhyZWFkTG9jYWxEYXRhKG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKSk7
CiAgICAgQVNTRVJUKGNhbkN1cnJlbnRUaHJlYWRBY2Nlc3NUaHJlYWRMb2NhbERhdGEob3BlcmF0
aW9uLm9yaWdpblRocmVhZCgpKSk7CiAKLSAgICBtX2NvbXBsZXRlZE9uU2VydmVyUXVldWUuYXBw
ZW5kKHsgJm9wZXJhdGlvbiwgZGF0YSB9KTsKKyAgICBpZiAoIW1fdHJhbnNhY3Rpb25PcGVyYXRp
b25NYXAuY29udGFpbnMob3BlcmF0aW9uLmlkZW50aWZpZXIoKSkpCisgICAgICAgIHJldHVybjsK
KworICAgIG1fdHJhbnNhY3Rpb25PcGVyYXRpb25SZXN1bHRNYXAuc2V0KCZvcGVyYXRpb24sIElE
QlJlc3VsdERhdGEoZGF0YSkpOwogCiAgICAgaWYgKCFtX2N1cnJlbnRseUNvbXBsZXRpbmdSZXF1
ZXN0KQogICAgICAgICBoYW5kbGVPcGVyYXRpb25zQ29tcGxldGVkT25TZXJ2ZXIoKTsKQEAgLTQw
NiwxMiArNDA3LDE1IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246Om9wZXJhdGlvbkNvbXBsZXRlZE9u
U2VydmVyKGNvbnN0IElEQlJlc3VsdERhdGEmIGRhdGEsIElEQkNsCiAKIHZvaWQgSURCVHJhbnNh
Y3Rpb246OmhhbmRsZU9wZXJhdGlvbnNDb21wbGV0ZWRPblNlcnZlcigpCiB7Ci0gICAgTE9HKElu
ZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpjb21wbGV0ZWRPcGVyYXRpb25UaW1lckZpcmVkICgl
cCkiLCB0aGlzKTsKKyAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OmhhbmRsZU9w
ZXJhdGlvbnNDb21wbGV0ZWRPblNlcnZlciIpOwogICAgIEFTU0VSVChjYW5DdXJyZW50VGhyZWFk
QWNjZXNzVGhyZWFkTG9jYWxEYXRhKG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKSk7CiAKLSAg
ICB3aGlsZSAoIW1fY29tcGxldGVkT25TZXJ2ZXJRdWV1ZS5pc0VtcHR5KCkgJiYgIW1fY3VycmVu
dGx5Q29tcGxldGluZ1JlcXVlc3QpIHsKLSAgICAgICAgYXV0byBpdGVyYXRvciA9IG1fY29tcGxl
dGVkT25TZXJ2ZXJRdWV1ZS50YWtlRmlyc3QoKTsKLSAgICAgICAgaXRlcmF0b3IuZmlyc3QtPmRv
Q29tcGxldGUoaXRlcmF0b3Iuc2Vjb25kKTsKKyAgICB3aGlsZSAoIW1fdHJhbnNhY3Rpb25PcGVy
YXRpb25zSW5Qcm9ncmVzc1F1ZXVlLmlzRW1wdHkoKSAmJiAhbV9jdXJyZW50bHlDb21wbGV0aW5n
UmVxdWVzdCkgeworICAgICAgICBSZWZQdHI8SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlv
bj4gY3VycmVudE9wZXJhdGlvbiA9IG1fdHJhbnNhY3Rpb25PcGVyYXRpb25zSW5Qcm9ncmVzc1F1
ZXVlLmZpcnN0KCk7CisgICAgICAgIGlmICghbV90cmFuc2FjdGlvbk9wZXJhdGlvblJlc3VsdE1h
cC5jb250YWlucyhjdXJyZW50T3BlcmF0aW9uKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBjdXJyZW50T3BlcmF0aW9uLT5kb0NvbXBsZXRlKG1fdHJhbnNhY3Rpb25PcGVyYXRpb25S
ZXN1bHRNYXAudGFrZShjdXJyZW50T3BlcmF0aW9uKSk7CiAgICAgfQogfQogCkBAIC02MjIsNyAr
NjI2LDcgQEAgUmVmPElEQk9iamVjdFN0b3JlPiBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlT2JqZWN0
U3RvcmUoY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJgogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5k
aWRDcmVhdGVPYmplY3RTdG9yZU9uU2VydmVyKHJlc3VsdCk7CiAgICAgfSwgW3Byb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgaW5mbyA9IGluZm8uaXNvbGF0ZWRDb3B5KCldIChhdXRvJiBv
cGVyYXRpb24pIHsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+Y3JlYXRlT2JqZWN0U3RvcmVPblNl
cnZlcihvcGVyYXRpb24sIGluZm8pOwotICAgIH0pKTsKKyAgICB9KSwgSXNXcml0ZU9wZXJhdGlv
bjo6WWVzKTsKIAogICAgIHJldHVybiAqcmF3T2JqZWN0U3RvcmU7CiB9CkBAIC02NjQsNyArNjY4
LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6cmVuYW1lT2JqZWN0U3RvcmUoSURCT2JqZWN0U3Rv
cmUmIG9iamVjdFN0b3JlLCBjb25zdCBTdHJpbmcKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGlk
UmVuYW1lT2JqZWN0U3RvcmVPblNlcnZlcihyZXN1bHQpOwogICAgIH0sIFtwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIG9iamVjdFN0b3JlSWRlbnRpZmllciwgbmV3TmFtZSA9IG5ld05h
bWUuaXNvbGF0ZWRDb3B5KCldIChhdXRvJiBvcGVyYXRpb24pIHsKICAgICAgICAgcHJvdGVjdGVk
VGhpcy0+cmVuYW1lT2JqZWN0U3RvcmVPblNlcnZlcihvcGVyYXRpb24sIG9iamVjdFN0b3JlSWRl
bnRpZmllciwgbmV3TmFtZSk7Ci0gICAgfSkpOworICAgIH0pLCBJc1dyaXRlT3BlcmF0aW9uOjpZ
ZXMpOwogCiAgICAgbV9yZWZlcmVuY2VkT2JqZWN0U3RvcmVzLnNldChuZXdOYW1lLCBtX3JlZmVy
ZW5jZWRPYmplY3RTdG9yZXMudGFrZShvYmplY3RTdG9yZS5pbmZvKCkubmFtZSgpKSk7CiB9CkBA
IC02OTksNyArNzAzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPElEQkluZGV4PiBJREJUcmFuc2FjdGlv
bjo6Y3JlYXRlSW5kZXgoSURCT2JqZWN0U3RvcmUmIG9iamVjdFN0b3IKICAgICAgICAgcHJvdGVj
dGVkVGhpcy0+ZGlkQ3JlYXRlSW5kZXhPblNlcnZlcihyZXN1bHQpOwogICAgIH0sIFtwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGluZm8gPSBpbmZvLmlzb2xhdGVkQ29weSgpXSAoYXV0
byYgb3BlcmF0aW9uKSB7CiAgICAgICAgIHByb3RlY3RlZFRoaXMtPmNyZWF0ZUluZGV4T25TZXJ2
ZXIob3BlcmF0aW9uLCBpbmZvKTsKLSAgICB9KSk7CisgICAgfSksIElzV3JpdGVPcGVyYXRpb246
Olllcyk7CiAKICAgICByZXR1cm4gbWFrZVVuaXF1ZTxJREJJbmRleD4oKnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSwgaW5mbywgb2JqZWN0U3RvcmUpOwogfQpAQCAtNzUzLDcgKzc1Nyw3IEBAIHZv
aWQgSURCVHJhbnNhY3Rpb246OnJlbmFtZUluZGV4KElEQkluZGV4JiBpbmRleCwgY29uc3QgU3Ry
aW5nJiBuZXdOYW1lKQogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kaWRSZW5hbWVJbmRleE9uU2Vy
dmVyKHJlc3VsdCk7CiAgICAgfSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgb2Jq
ZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleElkZW50aWZpZXIsIG5ld05hbWUgPSBuZXdOYW1lLmlz
b2xhdGVkQ29weSgpXSAoYXV0byYgb3BlcmF0aW9uKSB7CiAgICAgICAgIHByb3RlY3RlZFRoaXMt
PnJlbmFtZUluZGV4T25TZXJ2ZXIob3BlcmF0aW9uLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGlu
ZGV4SWRlbnRpZmllciwgbmV3TmFtZSk7Ci0gICAgfSkpOworICAgIH0pLCBJc1dyaXRlT3BlcmF0
aW9uOjpZZXMpOwogfQogCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpyZW5hbWVJbmRleE9uU2VydmVy
KElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbiwgY29uc3QgdWludDY0
X3QmIG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgdWludDY0X3QmIGluZGV4SWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lKQpAQCAtODUyLDcgKzg1NiwyMyBAQCB2b2lkIElEQlRy
YW5zYWN0aW9uOjppdGVyYXRlQ3Vyc29yT25TZXJ2ZXIoSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9w
ZXJhdGlvbiYgb3BlcgogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6aXRl
cmF0ZUN1cnNvck9uU2VydmVyIik7CiAgICAgQVNTRVJUKGNhbkN1cnJlbnRUaHJlYWRBY2Nlc3NU
aHJlYWRMb2NhbERhdGEobV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpKTsKKyAgICBBU1NFUlQo
b3BlcmF0aW9uLmlkYlJlcXVlc3QoKSk7CiAKKyAgICBhdXRvKiBjdXJzb3IgPSBvcGVyYXRpb24u
aWRiUmVxdWVzdCgpLT5wZW5kaW5nQ3Vyc29yKCk7CisgICAgQVNTRVJUKGN1cnNvcik7CisKKyAg
ICBpZiAoZGF0YS5rZXlEYXRhLmlzTnVsbCgpICYmIGRhdGEucHJpbWFyeUtleURhdGEuaXNOdWxs
KCkpIHsKKyAgICAgICAgaWYgKGF1dG8gZ2V0UmVzdWx0ID0gY3Vyc29yLT5pdGVyYXRlV2l0aFBy
ZWZldGNoZWRSZWNvcmRzKGRhdGEuY291bnQsIG1fbGFzdFdyaXRlT3BlcmF0aW9uSUQpKSB7Cisg
ICAgICAgICAgICBhdXRvIHJlc3VsdCA9IElEQlJlc3VsdERhdGE6Oml0ZXJhdGVDdXJzb3JTdWNj
ZXNzKG9wZXJhdGlvbi5pZGVudGlmaWVyKCksIGdldFJlc3VsdC52YWx1ZSgpKTsKKyAgICAgICAg
ICAgIG1fZGF0YWJhc2UtPmNvbm5lY3Rpb25Qcm94eSgpLml0ZXJhdGVDdXJzb3Iob3BlcmF0aW9u
LCB7IGRhdGEua2V5RGF0YSwgZGF0YS5wcmltYXJ5S2V5RGF0YSwgZGF0YS5jb3VudCwgSW5kZXhl
ZERCOjpDdXJzb3JJdGVyYXRlT3B0aW9uOjpEb05vdFJlcGx5IH0pOworICAgICAgICAgICAgb3Bl
cmF0aW9uQ29tcGxldGVkT25TZXJ2ZXIocmVzdWx0LCBvcGVyYXRpb24pOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgY3Vyc29yLT5jbGVhclByZWZldGNoZWRS
ZWNvcmRzKCk7CisKKyAgICBBU1NFUlQoZGF0YS5vcHRpb24gPT0gSW5kZXhlZERCOjpDdXJzb3JJ
dGVyYXRlT3B0aW9uOjpSZXBseSk7CiAgICAgbV9kYXRhYmFzZS0+Y29ubmVjdGlvblByb3h5KCku
aXRlcmF0ZUN1cnNvcihvcGVyYXRpb24sIGRhdGEpOwogfQogCkBAIC0xMTI2LDcgKzExNDYsNyBA
QCBSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3REZWxldGVSZWNvcmQoSlNH
bG9iYWxPYmplY3QmIHN0YXRlLCBJREJPYgogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kaWREZWxl
dGVSZWNvcmRPblNlcnZlcihyZXF1ZXN0LmdldCgpLCByZXN1bHQpOwogICAgIH0sIFtwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJhbmdlID0gcmFuZ2UuaXNvbGF0ZWRDb3B5KCldIChh
dXRvJiBvcGVyYXRpb24pIHsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGVsZXRlUmVjb3JkT25T
ZXJ2ZXIob3BlcmF0aW9uLCByYW5nZSk7Ci0gICAgfSkpOworICAgIH0pLCBJc1dyaXRlT3BlcmF0
aW9uOjpZZXMpOwogICAgIHJldHVybiByZXF1ZXN0OwogfQogCkBAIC0xMTY1LDcgKzExODUsNyBA
QCBSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RDbGVhck9iamVjdFN0b3Jl
KEpTR2xvYmFsT2JqZWN0JiBzdGF0ZSwgSQogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kaWRDbGVh
ck9iamVjdFN0b3JlT25TZXJ2ZXIocmVxdWVzdC5nZXQoKSwgcmVzdWx0KTsKICAgICB9LCBbcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBvYmplY3RTdG9yZUlkZW50aWZpZXJdIChhdXRv
JiBvcGVyYXRpb24pIHsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+Y2xlYXJPYmplY3RTdG9yZU9u
U2VydmVyKG9wZXJhdGlvbiwgb2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKLSAgICB9KSk7CisgICAg
fSksIElzV3JpdGVPcGVyYXRpb246Olllcyk7CiAKICAgICByZXR1cm4gcmVxdWVzdDsKIH0KQEAg
LTEyMDUsNyArMTIyNSw3IEBAIFJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVz
dFB1dE9yQWRkKEpTR2xvYmFsT2JqZWN0JiBzdGF0ZSwgSURCT2JqZWN0CiAgICAgICAgIHByb3Rl
Y3RlZFRoaXMtPmRpZFB1dE9yQWRkT25TZXJ2ZXIocmVxdWVzdC5nZXQoKSwgcmVzdWx0KTsKICAg
ICB9LCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBrZXksIHZhbHVlID0gbWFrZVJl
Zih2YWx1ZSksIG92ZXJ3cml0ZU1vZGVdIChhdXRvJiBvcGVyYXRpb24pIHsKICAgICAgICAgcHJv
dGVjdGVkVGhpcy0+cHV0T3JBZGRPblNlcnZlcihvcGVyYXRpb24sIGtleS5nZXQoKSwgdmFsdWUu
cHRyKCksIG92ZXJ3cml0ZU1vZGUpOwotICAgIH0pKTsKKyAgICB9KSwgSXNXcml0ZU9wZXJhdGlv
bjo6WWVzKTsKIAogICAgIHJldHVybiByZXF1ZXN0OwogfQpAQCAtMTI5Myw3ICsxMzEzLDcgQEAg
dm9pZCBJREJUcmFuc2FjdGlvbjo6ZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBvYmpl
Y3RTdG9yZU5hbWUpCiAgICAgICAgIHByb3RlY3RlZFRoaXMtPmRpZERlbGV0ZU9iamVjdFN0b3Jl
T25TZXJ2ZXIocmVzdWx0KTsKICAgICB9LCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBvYmplY3RTdG9yZU5hbWUgPSBvYmplY3RTdG9yZU5hbWUuaXNvbGF0ZWRDb3B5KCldIChhdXRv
JiBvcGVyYXRpb24pIHsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGVsZXRlT2JqZWN0U3RvcmVP
blNlcnZlcihvcGVyYXRpb24sIG9iamVjdFN0b3JlTmFtZSk7Ci0gICAgfSkpOworICAgIH0pLCBJ
c1dyaXRlT3BlcmF0aW9uOjpZZXMpOwogfQogCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpkZWxldGVP
YmplY3RTdG9yZU9uU2VydmVyKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJh
dGlvbiwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUpCkBAIC0xMzIzLDcgKzEzNDMsNyBA
QCB2b2lkIElEQlRyYW5zYWN0aW9uOjpkZWxldGVJbmRleCh1aW50NjRfdCBvYmplY3RTdG9yZUlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaQogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kaWREZWxl
dGVJbmRleE9uU2VydmVyKHJlc3VsdCk7CiAgICAgfSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleE5hbWUgPSBpbmRleE5hbWUuaXNv
bGF0ZWRDb3B5KCldIChhdXRvJiBvcGVyYXRpb24pIHsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+
ZGVsZXRlSW5kZXhPblNlcnZlcihvcGVyYXRpb24sIG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5k
ZXhOYW1lKTsKLSAgICB9KSk7CisgICAgfSksIElzV3JpdGVPcGVyYXRpb246Olllcyk7CiB9CiAK
IHZvaWQgSURCVHJhbnNhY3Rpb246OmRlbGV0ZUluZGV4T25TZXJ2ZXIoSURCQ2xpZW50OjpUcmFu
c2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uLCBjb25zdCB1aW50NjRfdCYgb2JqZWN0U3RvcmVJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGluZGV4TmFtZSkKQEAgLTE0NzQsNiArMTQ5NCwxMiBA
QCB2b2lkIElEQlRyYW5zYWN0aW9uOjphdXRvQ29tbWl0KCkKICAgICBjb21taXQoKTsKIH0KIAor
dWludDY0X3QgSURCVHJhbnNhY3Rpb246OmdlbmVyYXRlT3BlcmF0aW9uSUQoKQoreworICAgIHN0
YXRpYyBzdGQ6OmF0b21pYzx1aW50NjRfdD4gY3VycmVudE9wZXJhdGlvbklEKDEpOworICAgIHJl
dHVybiBjdXJyZW50T3BlcmF0aW9uSUQgKz0gMTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaAppbmRleCAzNThiMDFiYzAx
NGFhNjE0NDhhMzE2NTY1NjdlY2EyYTM1ZDJhMzI2Li5kNDE3NzNjY2M1ZDY1ZjgzNDUwODFiY2Q1
N2E4ZjlkYWQ2YzM0OTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJUcmFuc2FjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQlRyYW5zYWN0aW9uLmgKQEAgLTcxLDYgKzcxLDggQEAgcHVibGljOgogICAgIHN0YXRp
YyBSZWY8SURCVHJhbnNhY3Rpb24+IGNyZWF0ZShJREJEYXRhYmFzZSYsIGNvbnN0IElEQlRyYW5z
YWN0aW9uSW5mbyYpOwogICAgIHN0YXRpYyBSZWY8SURCVHJhbnNhY3Rpb24+IGNyZWF0ZShJREJE
YXRhYmFzZSYsIGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYsIElEQk9wZW5EQlJlcXVlc3QmKTsK
IAorICAgIHN0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZU9wZXJhdGlvbklEKCk7CisKICAgICBXRUJD
T1JFX0VYUE9SVCB+SURCVHJhbnNhY3Rpb24oKSBmaW5hbDsKIAogICAgIC8vIElEQlRyYW5zYWN0
aW9uIElETApAQCAtMTY1LDcgKzE2Nyw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBmaW5pc2hBYm9y
dE9yQ29tbWl0KCk7CiAgICAgdm9pZCBhYm9ydEluUHJvZ3Jlc3NPcGVyYXRpb25zKGNvbnN0IElE
QkVycm9yJik7CiAKLSAgICB2b2lkIHNjaGVkdWxlT3BlcmF0aW9uKFJlZjxJREJDbGllbnQ6OlRy
YW5zYWN0aW9uT3BlcmF0aW9uPiYmKTsKKyAgICBlbnVtIGNsYXNzIElzV3JpdGVPcGVyYXRpb24g
OiBib29sIHsgTm8sIFllcyB9OworICAgIHZvaWQgc2NoZWR1bGVPcGVyYXRpb24oUmVmPElEQkNs
aWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24+JiYsIElzV3JpdGVPcGVyYXRpb24gPSBJc1dyaXRl
T3BlcmF0aW9uOjpObyk7CiAgICAgdm9pZCBoYW5kbGVPcGVyYXRpb25zQ29tcGxldGVkT25TZXJ2
ZXIoKTsKICAgICB2b2lkIGhhbmRsZVBlbmRpbmdPcGVyYXRpb25zKCk7CiAgICAgdm9pZCBhdXRv
Q29tbWl0KCk7CkBAIC0yNDQsOCArMjQ3LDggQEAgcHJpdmF0ZToKIAogICAgIERlcXVlPFJlZlB0
cjxJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uPj4gbV9wZW5kaW5nVHJhbnNhY3Rpb25P
cGVyYXRpb25RdWV1ZTsKICAgICBEZXF1ZTxJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9u
Kj4gbV90cmFuc2FjdGlvbk9wZXJhdGlvbnNJblByb2dyZXNzUXVldWU7Ci0gICAgRGVxdWU8c3Rk
OjpwYWlyPFJlZlB0cjxJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uPiwgSURCUmVzdWx0
RGF0YT4+IG1fY29tcGxldGVkT25TZXJ2ZXJRdWV1ZTsKICAgICBEZXF1ZTxSZWZQdHI8SURCQ2xp
ZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbj4+IG1fYWJvcnRRdWV1ZTsKKyAgICBIYXNoTWFwPFJl
ZlB0cjxJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uPiwgSURCUmVzdWx0RGF0YT4gbV90
cmFuc2FjdGlvbk9wZXJhdGlvblJlc3VsdE1hcDsKIAogICAgIEhhc2hNYXA8SURCUmVzb3VyY2VJ
ZGVudGlmaWVyLCBSZWZQdHI8SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbj4+IG1fdHJh
bnNhY3Rpb25PcGVyYXRpb25NYXA7CiAKQEAgLTI1OCw2ICsyNjEsOCBAQCBwcml2YXRlOgogCiAg
ICAgYm9vbCBtX2NvbnRleHRTdG9wcGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1fZGlkRGlzcGF0
Y2hBYm9ydE9yQ29tbWl0IHsgZmFsc2UgfTsKKworICAgIHVpbnQ2NF90IG1fbGFzdFdyaXRlT3Bl
cmF0aW9uSUQgeyAwIH07CiB9OwogCiBjbGFzcyBUcmFuc2FjdGlvbkFjdGl2YXRvciB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JbmRleGVkREIuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0luZGV4ZWREQi5oCmluZGV4IDUwOWJiZjI3
OGIzZjlmMzc1N2Y2ZjFiNTA0MGVjNzZkNWQyYzlhMDAuLmJmMzA4YWRhOTZhMmIwNjA5OGQzNmQy
YWM3MTBlZDViYzYzMjc3ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0luZGV4ZWREQi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0luZGV4ZWREQi5oCkBAIC0xMDYsNiArMTA2LDExIEBAIGVudW0gY2xhc3MgR2V0QWxsVHlwZSB7
CiAKIGVudW0gY2xhc3MgQ29ubmVjdGlvbkNsb3NlZE9uQmVoYWxmT2ZTZXJ2ZXIgOiBib29sIHsg
Tm8sIFllcyB9OwogCitlbnVtIGNsYXNzIEN1cnNvckl0ZXJhdGVPcHRpb24geworICAgIERvTm90
UmVwbHksCisgICAgUmVwbHksCit9OworCiB9IC8vIG5hbWVzcGFjZSBJbmRleGVkREIKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblByb3h5LmNwcAppbmRleCA0ZWM0
NDdlMjZmMTFkZmE2MmJmMDgzNjhiZjE0Zjg1YTgyZWNmNTExLi45NTZkZmFlNjQ1MTc0OThkZTM4
ZTU0ODMxYjU5MWI0ZjYzNTVjOTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblByb3h5LmNwcApAQCAt
MjM4LDcgKzIzOCw4IEBAIHZvaWQgSURCQ29ubmVjdGlvblByb3h5OjpvcGVuQ3Vyc29yKFRyYW5z
YWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24sIGNvbnN0IElEQkN1CiB2b2lkIElEQkNvbm5lY3Rp
b25Qcm94eTo6aXRlcmF0ZUN1cnNvcihUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uLCBj
b25zdCBJREJJdGVyYXRlQ3Vyc29yRGF0YSYgZGF0YSkKIHsKICAgICBjb25zdCBJREJSZXF1ZXN0
RGF0YSByZXF1ZXN0RGF0YSB7IG9wZXJhdGlvbiB9OwotICAgIHNhdmVPcGVyYXRpb24ob3BlcmF0
aW9uKTsKKyAgICBpZiAoZGF0YS5vcHRpb24gIT0gSW5kZXhlZERCOjpDdXJzb3JJdGVyYXRlT3B0
aW9uOjpEb05vdFJlcGx5KQorICAgICAgICBzYXZlT3BlcmF0aW9uKG9wZXJhdGlvbik7CiAKICAg
ICBjYWxsQ29ubmVjdGlvbk9uTWFpblRocmVhZCgmSURCQ29ubmVjdGlvblRvU2VydmVyOjppdGVy
YXRlQ3Vyc29yLCByZXF1ZXN0RGF0YSwgZGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0
aW9uLmNwcAppbmRleCA4ZTFkZTA2ZDcxZThmMGIyMjNkNjg2ZTVlMWE4YTIyMDliNzQzODQzLi5h
YTU5MDZmNDc1ZTVlZTBhYWNkZjExZjE3ZDNlYTY4ZTI4YjUxNTI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2Fj
dGlvbk9wZXJhdGlvbi5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAgVHJhbnNhY3Rpb25PcGVyYXRpb246
OlRyYW5zYWN0aW9uT3BlcmF0aW9uKElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgSURCUmVx
dWUKICAgICBpZiAoYXV0byogY3Vyc29yID0gcmVxdWVzdC5wZW5kaW5nQ3Vyc29yKCkpCiAgICAg
ICAgIG1fY3Vyc29ySWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVy
PihjdXJzb3ItPmluZm8oKS5pZGVudGlmaWVyKCkpOwogCisgICAgcmVxdWVzdC5zZXRUcmFuc2Fj
dGlvbk9wZXJhdGlvbklEKG1fb3BlcmF0aW9uSUQpOwogICAgIG1faWRiUmVxdWVzdCA9ICZyZXF1
ZXN0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9j
bGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oCmluZGV4IGUyZjE0OGFlZmJiNDM0
MzJhNjFjODQ2MmJiMTRmMzllNWE3NjA4YTYuLjdhYjU3NTU1NzA4ZWM3NGI5ZDE2ZDE1NmNlOWU5
MzI1Njc4N2NkMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oCkBAIC0xMTIsMTAgKzEx
MiwxMyBAQCBwdWJsaWM6CiAgICAgYm9vbCBuZXh0UmVxdWVzdENhbkdvVG9TZXJ2ZXIoKSBjb25z
dCB7IHJldHVybiBtX25leHRSZXF1ZXN0Q2FuR29Ub1NlcnZlciAmJiBtX2lkYlJlcXVlc3Q7IH0K
ICAgICB2b2lkIHNldE5leHRSZXF1ZXN0Q2FuR29Ub1NlcnZlcihib29sIG5leHRSZXF1ZXN0Q2Fu
R29Ub1NlcnZlcikgeyBtX25leHRSZXF1ZXN0Q2FuR29Ub1NlcnZlciA9IG5leHRSZXF1ZXN0Q2Fu
R29Ub1NlcnZlcjsgfQogCisgICAgdWludDY0X3Qgb3BlcmF0aW9uSUQoKSBjb25zdCB7IHJldHVy
biBtX29wZXJhdGlvbklEOyB9CisKIHByb3RlY3RlZDoKICAgICBUcmFuc2FjdGlvbk9wZXJhdGlv
bihJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCiAgICAgICAgIDogbV90cmFuc2FjdGlvbih0
cmFuc2FjdGlvbikKICAgICAgICAgLCBtX2lkZW50aWZpZXIodHJhbnNhY3Rpb24uY29ubmVjdGlv
blByb3h5KCkpCisgICAgICAgICwgbV9vcGVyYXRpb25JRCh0cmFuc2FjdGlvbi5nZW5lcmF0ZU9w
ZXJhdGlvbklEKCkpCiAgICAgewogICAgIH0KIApAQCAtMTQyLDYgKzE0NSw4IEBAIHByaXZhdGU6
CiAgICAgUmVmUHRyPElEQlJlcXVlc3Q+IG1faWRiUmVxdWVzdDsKICAgICBib29sIG1fbmV4dFJl
cXVlc3RDYW5Hb1RvU2VydmVyIHsgdHJ1ZSB9OwogICAgIGJvb2wgbV9kaWRDb21wbGV0ZSB7IGZh
bHNlIH07CisKKyAgICB1aW50NjRfdCBtX29wZXJhdGlvbklEIHsgMCB9OwogfTsKIAogY2xhc3Mg
VHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsIGZpbmFsIDogcHVibGljIFRyYW5zYWN0aW9uT3BlcmF0
aW9uIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9JREJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9JREJCYWNraW5nU3RvcmUuaAppbmRleCBjNDI2NDBiM2JmNmM2MGIwODdmMjQ1ZWZkM2Fm
MDFjMzY2MmZhMjllLi5hN2RmN2ExZGNkNjA3NWRkYTQ1MTA5MGFhOTMwMzdhZTgyMWNkYmY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQmFj
a2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L0lEQkJhY2tpbmdTdG9yZS5oCkBAIC04NSw3ICs4NSw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IElEQkVycm9yIG1heWJlVXBkYXRlS2V5R2VuZXJhdG9yTnVtYmVyKGNvbnN0IElEQlJlc291cmNl
SWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlk
ZW50aWZpZXIsIGRvdWJsZSBuZXdLZXlOdW1iZXIpID0gMDsKICAgICB2aXJ0dWFsIElEQkVycm9y
IG9wZW5DdXJzb3IoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50
aWZpZXIsIGNvbnN0IElEQkN1cnNvckluZm8mLCBJREJHZXRSZXN1bHQmIG91dFJlc3VsdCkgPSAw
OwogICAgIHZpcnR1YWwgSURCRXJyb3IgaXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXNvdXJjZUlk
ZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlm
aWVyJiBjdXJzb3JJZGVudGlmaWVyLCBjb25zdCBJREJJdGVyYXRlQ3Vyc29yRGF0YSYsIElEQkdl
dFJlc3VsdCYgb3V0UmVzdWx0KSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHByZWZldGNoQ3Vyc29y
KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25z
dCBJREJSZXNvdXJjZUlkZW50aWZpZXImIGN1cnNvcklkZW50aWZpZXIpID0gMDsKIAogICAgIHZp
cnR1YWwgSURCT2JqZWN0U3RvcmVJbmZvKiBpbmZvRm9yT2JqZWN0U3RvcmUodWludDY0X3Qgb2Jq
ZWN0U3RvcmVJZGVudGlmaWVyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUJhY2tpbmdT
dG9yZSgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuaAppbmRleCAzNzhkMmE1Zjdh
MGQ2NzNmMjQzMjkzODEwNzRlZThiMTk1ODExYmVkLi43NGRjOTUwOTQ1YTZlZjRiOGViNTcyYThi
ZDRkMTVkZGE1MmI4ZmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5oCkBAIC03NCw3
ICs3NCw2IEBAIHByaXZhdGU6CiAgICAgSURCRXJyb3IgbWF5YmVVcGRhdGVLZXlHZW5lcmF0b3JO
dW1iZXIoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIs
IHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgZG91YmxlIG5ld0tleU51bWJlcikgZmlu
YWw7CiAgICAgSURCRXJyb3Igb3BlbkN1cnNvcihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXIm
IHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCQ3Vyc29ySW5mbyYsIElEQkdldFJlc3Vs
dCYgb3V0UmVzdWx0KSBmaW5hbDsKICAgICBJREJFcnJvciBpdGVyYXRlQ3Vyc29yKGNvbnN0IElE
QlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJSZXNv
dXJjZUlkZW50aWZpZXImIGN1cnNvcklkZW50aWZpZXIsIGNvbnN0IElEQkl0ZXJhdGVDdXJzb3JE
YXRhJiwgSURCR2V0UmVzdWx0JiBvdXRSZXN1bHQpIGZpbmFsOwotICAgIGJvb2wgcHJlZmV0Y2hD
dXJzb3IoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiwgY29uc3QgSURCUmVzb3VyY2VJZGVu
dGlmaWVyJikgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIElEQk9iamVjdFN0b3JlSW5m
byogaW5mb0Zvck9iamVjdFN0b3JlKHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllcikgZmlu
YWw7CiAgICAgdm9pZCBkZWxldGVCYWNraW5nU3RvcmUoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3Rv
cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlE
QkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggM2ZhMTAyZGI2NTkyODBkN2Q2YTA1MGNlMWVhN2ZjNDA4
MDJiZmRkNy4uNTczYmVjNzdlMmYyZjNkMWMxMjEyMWJjNThmZWNjM2ZjZjFhM2UyMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJh
Y2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTEzNjYsOCArMTM2Niw4IEBAIElEQkVy
cm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW5kZXgoY29uc3QgSURCUmVzb3VyY2VJ
ZGVudGlmaWVyJiB0cmFuc2FjCiAKICAgICB3aGlsZSAoIWN1cnNvci0+Y3VycmVudEtleSgpLmlz
TnVsbCgpKSB7CiAgICAgICAgIGF1dG8mIGtleSA9IGN1cnNvci0+Y3VycmVudEtleSgpOwotICAg
ICAgICBhdXRvKiB2YWx1ZSA9IGN1cnNvci0+Y3VycmVudFZhbHVlKCk7Ci0gICAgICAgIFRocmVh
ZFNhZmVEYXRhQnVmZmVyIHZhbHVlQnVmZmVyID0gdmFsdWUgPyB2YWx1ZS0+ZGF0YSgpIDogVGhy
ZWFkU2FmZURhdGFCdWZmZXIoKTsKKyAgICAgICAgYXV0byB2YWx1ZSA9IGN1cnNvci0+Y3VycmVu
dFZhbHVlKCk7CisgICAgICAgIFRocmVhZFNhZmVEYXRhQnVmZmVyIHZhbHVlQnVmZmVyID0gdmFs
dWUuZGF0YSgpOwogCiAgICAgICAgIEFTU0VSVChjdXJzb3ItPmN1cnJlbnRSZWNvcmRSb3dJRCgp
KTsKIApAQCAtMjM1NCw3ICsyMzU0LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3Jl
OjpnZXRBbGxJbmRleFJlY29yZHMoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJgogICAgICAg
ICBJREJLZXlEYXRhIGtleUNvcHkgPSBjdXJzb3ItPmN1cnJlbnRQcmltYXJ5S2V5KCk7CiAgICAg
ICAgIHJlc3VsdC5hZGRLZXkoV1RGTW92ZShrZXlDb3B5KSk7CiAgICAgICAgIGlmIChnZXRBbGxS
ZWNvcmRzRGF0YS5nZXRBbGxUeXBlID09IEluZGV4ZWREQjo6R2V0QWxsVHlwZTo6VmFsdWVzKQot
ICAgICAgICAgICAgcmVzdWx0LmFkZFZhbHVlKGN1cnNvci0+Y3VycmVudFZhbHVlKCkgPyAqY3Vy
c29yLT5jdXJyZW50VmFsdWUoKSA6IElEQlZhbHVlKCkpOworICAgICAgICAgICAgcmVzdWx0LmFk
ZFZhbHVlKElEQlZhbHVlKGN1cnNvci0+Y3VycmVudFZhbHVlKCkpKTsKIAogICAgICAgICArK2N1
cnJlbnRDb3VudDsKICAgICAgICAgY3Vyc29yLT5hZHZhbmNlKDEpOwpAQCAtMjQwMSw3ICsyNDAx
LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRJbmRleFJlY29yZChjb25z
dCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW4KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAg
ICBhdXRvKiBvYmplY3RTdG9yZUluZm8gPSBpbmZvRm9yT2JqZWN0U3RvcmUob2JqZWN0U3RvcmVJ
RCk7CiAgICAgICAgICAgICBBU1NFUlQob2JqZWN0U3RvcmVJbmZvKTsKLSAgICAgICAgICAgIGdl
dFJlc3VsdCA9IHsgY3Vyc29yLT5jdXJyZW50UHJpbWFyeUtleSgpLCBjdXJzb3ItPmN1cnJlbnRQ
cmltYXJ5S2V5KCksIGN1cnNvci0+Y3VycmVudFZhbHVlKCkgPyAqY3Vyc29yLT5jdXJyZW50VmFs
dWUoKSA6IElEQlZhbHVlKCksIG9iamVjdFN0b3JlSW5mby0+a2V5UGF0aCgpIH07CisgICAgICAg
ICAgICBnZXRSZXN1bHQgPSB7IGN1cnNvci0+Y3VycmVudFByaW1hcnlLZXkoKSwgY3Vyc29yLT5j
dXJyZW50UHJpbWFyeUtleSgpLCBJREJWYWx1ZShjdXJzb3ItPmN1cnJlbnRWYWx1ZSgpKSwgb2Jq
ZWN0U3RvcmVJbmZvLT5rZXlQYXRoKCkgfTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMjcyMSwy
NiArMjcyMSwxOCBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6Oml0ZXJhdGVDdXJz
b3IoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFucwogICAgICAgICB9CiAgICAgfQog
Ci0gICAgYXV0byogb2JqZWN0U3RvcmVJbmZvID0gaW5mb0Zvck9iamVjdFN0b3JlKGN1cnNvci0+
b2JqZWN0U3RvcmVJRCgpKTsKLSAgICBBU1NFUlQob2JqZWN0U3RvcmVJbmZvKTsKLSAgICBjdXJz
b3ItPmN1cnJlbnREYXRhKHJlc3VsdCwgb2JqZWN0U3RvcmVJbmZvLT5rZXlQYXRoKCkpOwotICAg
IHJldHVybiBJREJFcnJvciB7IH07Ci19Ci0KLWJvb2wgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpw
cmVmZXRjaEN1cnNvcihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRl
bnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiBjdXJzb3JJZGVudGlmaWVyKQot
ewotICAgIExPRyhJbmRleGVkREIsICJTUUxpdGVJREJCYWNraW5nU3RvcmU6OnByZWZldGNoQ3Vy
c29yIik7Ci0KLSAgICBBU1NFUlQobV9zcWxpdGVEQik7Ci0gICAgQVNTRVJUKG1fc3FsaXRlREIt
PmlzT3BlbigpKTsKKyAgICBpZiAoZGF0YS5vcHRpb24gPT0gSW5kZXhlZERCOjpDdXJzb3JJdGVy
YXRlT3B0aW9uOjpSZXBseSkgeworICAgICAgICBhdXRvKiBvYmplY3RTdG9yZUluZm8gPSBpbmZv
Rm9yT2JqZWN0U3RvcmUoY3Vyc29yLT5vYmplY3RTdG9yZUlEKCkpOworICAgICAgICBBU1NFUlQo
b2JqZWN0U3RvcmVJbmZvKTsKIAotICAgIGF1dG8qIGN1cnNvciA9IG1fY3Vyc29ycy5nZXQoY3Vy
c29ySWRlbnRpZmllcik7Ci0gICAgaWYgKCFjdXJzb3IgfHwgIWN1cnNvci0+dHJhbnNhY3Rpb24o
KSB8fCAhY3Vyc29yLT50cmFuc2FjdGlvbigpLT5pblByb2dyZXNzKCkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgYm9vbCBzaG91bGRQcmVmZXRjaCA9IGtleS5pc051bGwoKSAmJiBw
cmltYXJ5S2V5LmlzTnVsbCgpOworICAgICAgICBpZiAoc2hvdWxkUHJlZmV0Y2gpCisgICAgICAg
ICAgICBjdXJzb3ItPnByZWZldGNoKCk7CiAKLSAgICBBU1NFUlRfVU5VU0VEKHRyYW5zYWN0aW9u
SWRlbnRpZmllciwgY3Vyc29yLT50cmFuc2FjdGlvbigpLT50cmFuc2FjdGlvbklkZW50aWZpZXIo
KSA9PSB0cmFuc2FjdGlvbklkZW50aWZpZXIpOworICAgICAgICBjdXJzb3ItPmN1cnJlbnREYXRh
KHJlc3VsdCwgb2JqZWN0U3RvcmVJbmZvLT5rZXlQYXRoKCksIHNob3VsZFByZWZldGNoID8gU1FM
aXRlSURCQ3Vyc29yOjpTaG91bGRJbmNsdWRlUHJlZmV0Y2hlZFJlY29yZHM6OlllcyA6IFNRTGl0
ZUlEQkN1cnNvcjo6U2hvdWxkSW5jbHVkZVByZWZldGNoZWRSZWNvcmRzOjpObyk7CisgICAgfQog
Ci0gICAgcmV0dXJuIGN1cnNvci0+cHJlZmV0Y2goKTsKKyAgICByZXR1cm4gSURCRXJyb3IgeyB9
OwogfQogCiBJREJPYmplY3RTdG9yZUluZm8qIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6aW5mb0Zv
ck9iamVjdFN0b3JlKHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5n
U3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJ
REJCYWNraW5nU3RvcmUuaAppbmRleCBjZTI5ZDJjZmNmYjQxZmFiNmJkMzA1YmJlMmRjZjA0NTZm
YjZkODJlLi40OTQwYzE1MTYxMTA0YWQ5Njk1OGZkMjM0MzdkYWM2OTk0MGNjNzE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFj
a2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5oCkBAIC04MCw3ICs4MCw2IEBAIHB1YmxpYzoKICAgICBJ
REJFcnJvciBtYXliZVVwZGF0ZUtleUdlbmVyYXRvck51bWJlcihjb25zdCBJREJSZXNvdXJjZUlk
ZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVu
dGlmaWVyLCBkb3VibGUgbmV3S2V5TnVtYmVyKSBmaW5hbDsKICAgICBJREJFcnJvciBvcGVuQ3Vy
c29yKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBj
b25zdCBJREJDdXJzb3JJbmZvJiwgSURCR2V0UmVzdWx0JiBvdXRSZXN1bHQpIGZpbmFsOwogICAg
IElEQkVycm9yIGl0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFu
c2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgY3Vyc29ySWRl
bnRpZmllciwgY29uc3QgSURCSXRlcmF0ZUN1cnNvckRhdGEmLCBJREJHZXRSZXN1bHQmIG91dFJl
c3VsdCkgZmluYWw7Ci0gICAgYm9vbCBwcmVmZXRjaEN1cnNvcihjb25zdCBJREJSZXNvdXJjZUlk
ZW50aWZpZXImLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImKSBmaW5hbDsKIAogICAgIElE
Qk9iamVjdFN0b3JlSW5mbyogaW5mb0Zvck9iamVjdFN0b3JlKHVpbnQ2NF90IG9iamVjdFN0b3Jl
SWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBkZWxldGVCYWNraW5nU3RvcmUoKSBmaW5hbDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxp
dGVJREJDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L1NRTGl0ZUlEQkN1cnNvci5jcHAKaW5kZXggYjM3NzE3Mzc1NzRlMjIzNjYxN2QyNDg3YzY5MGUx
MjBlYWRkNzAwYi4uZTE5YWExM2ViMDFlNTViYjBjZjgwODFmNzQzYmFhNzIzYTYzMjU1NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlE
QkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L1NRTGl0ZUlEQkN1cnNvci5jcHAKQEAgLTQyLDggKzQyLDggQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIG5hbWVzcGFjZSBJREJTZXJ2ZXIgewogCi1zdGF0aWMgY29uc3Qgc2l6ZV90IHByZWZldGNo
TGltaXQgPSAxMjg7Ci1zdGF0aWMgY29uc3Qgc2l6ZV90IHByZWZldGNoU2l6ZUxpbWl0ID0gOCAq
IE1COworc3RhdGljIGNvbnN0IHNpemVfdCBwcmVmZXRjaExpbWl0ID0gMjU2Oworc3RhdGljIGNv
bnN0IHNpemVfdCBwcmVmZXRjaFNpemVMaW1pdCA9IDEgKiBNQjsKIAogc3RkOjp1bmlxdWVfcHRy
PFNRTGl0ZUlEQkN1cnNvcj4gU1FMaXRlSURCQ3Vyc29yOjptYXliZUNyZWF0ZShTUUxpdGVJREJU
cmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIGNvbnN0IElEQkN1cnNvckluZm8mIGluZm8pCiB7CkBA
IC0xMDIsNyArMTAyLDcgQEAgU1FMaXRlSURCQ3Vyc29yOjp+U1FMaXRlSURCQ3Vyc29yKCkKICAg
ICAgICAgbV90cmFuc2FjdGlvbi0+Y2xvc2VDdXJzb3IoKnRoaXMpOwogfQogCi12b2lkIFNRTGl0
ZUlEQkN1cnNvcjo6Y3VycmVudERhdGEoSURCR2V0UmVzdWx0JiByZXN1bHQsIGNvbnN0IE9wdGlv
bmFsPElEQktleVBhdGg+JiBrZXlQYXRoKQordm9pZCBTUUxpdGVJREJDdXJzb3I6OmN1cnJlbnRE
YXRhKElEQkdldFJlc3VsdCYgcmVzdWx0LCBjb25zdCBPcHRpb25hbDxJREJLZXlQYXRoPiYga2V5
UGF0aCwgU2hvdWxkSW5jbHVkZVByZWZldGNoZWRSZWNvcmRzIHNob3VsZEluY2x1ZGVQcmVmZXRj
aGVkUmVjb3JkcykKIHsKICAgICBBU1NFUlQoIW1fZmV0Y2hlZFJlY29yZHMuaXNFbXB0eSgpKTsK
IApAQCAtMTEzLDcgKzExMywyNSBAQCB2b2lkIFNRTGl0ZUlEQkN1cnNvcjo6Y3VycmVudERhdGEo
SURCR2V0UmVzdWx0JiByZXN1bHQsIGNvbnN0IE9wdGlvbmFsPElEQktleVBhdAogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgcmVzdWx0ID0geyBjdXJyZW50UmVjb3JkLnJlY29yZC5rZXks
IGN1cnJlbnRSZWNvcmQucmVjb3JkLnByaW1hcnlLZXksIGN1cnJlbnRSZWNvcmQucmVjb3JkLnZh
bHVlID8gKmN1cnJlbnRSZWNvcmQucmVjb3JkLnZhbHVlIDogSURCVmFsdWUoKSwga2V5UGF0aH07
CisgICAgaWYgKHNob3VsZEluY2x1ZGVQcmVmZXRjaGVkUmVjb3JkcyA9PSBTaG91bGRJbmNsdWRl
UHJlZmV0Y2hlZFJlY29yZHM6Ok5vKSB7CisgICAgICAgIHJlc3VsdCA9IHsgY3VycmVudFJlY29y
ZC5yZWNvcmQua2V5LCBjdXJyZW50UmVjb3JkLnJlY29yZC5wcmltYXJ5S2V5LCBJREJWYWx1ZShj
dXJyZW50UmVjb3JkLnJlY29yZC52YWx1ZSksIGtleVBhdGggfTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIFZlY3RvcjxJREJDdXJzb3JSZWNvcmQ+IHByZWZldGNoZWRSZWNvcmRzOwor
ICAgIHByZWZldGNoZWRSZWNvcmRzLnJlc2VydmVDYXBhY2l0eShtX2ZldGNoZWRSZWNvcmRzLnNp
emUoKSk7CisgICAgZm9yIChhdXRvJiByZWNvcmQgOiBtX2ZldGNoZWRSZWNvcmRzKSB7CisgICAg
ICAgIGlmIChyZWNvcmQuaXNUZXJtaW5hbFJlY29yZCgpKQorICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgcHJlZmV0Y2hlZFJlY29yZHMuYXBwZW5kKHJlY29yZC5yZWNvcmQpOworICAgIH0K
KworICAgIC8vIEZpcnN0IHJlY29yZCB3aWxsIGJlIHJldHVybmVkIGFzIGN1cnJlbnQgcmVjb3Jk
LgorICAgIGlmICghcHJlZmV0Y2hlZFJlY29yZHMuaXNFbXB0eSgpKQorICAgICAgICBwcmVmZXRj
aGVkUmVjb3Jkcy5yZW1vdmUoMCk7CisKKyAgICByZXN1bHQgPSB7IGN1cnJlbnRSZWNvcmQucmVj
b3JkLmtleSwgY3VycmVudFJlY29yZC5yZWNvcmQucHJpbWFyeUtleSwgSURCVmFsdWUoY3VycmVu
dFJlY29yZC5yZWNvcmQudmFsdWUpLCBrZXlQYXRoLCBXVEZNb3ZlKHByZWZldGNoZWRSZWNvcmRz
KSB9OwogfQogCiBzdGF0aWMgU3RyaW5nIGJ1aWxkUHJlSW5kZXhTdGF0ZW1lbnQoYm9vbCBpc0Rp
cmVjdGlvbk5leHQpCkBAIC0yNjMsNiArMjgxLDggQEAgdm9pZCBTUUxpdGVJREJDdXJzb3I6Om9i
amVjdFN0b3JlUmVjb3Jkc0NoYW5nZWQoKQogICAgIC8vIFdlIGFsc28gbmVlZCB0byB0aHJvdyBh
d2F5IGFueSBmZXRjaGVkIHJlY29yZHMgYXMgdGhleSBtYXkgbm8gbG9uZ2VyIGJlIHZhbGlkLgog
ICAgIG1fZmV0Y2hlZFJlY29yZHMuY2xlYXIoKTsKICAgICBtX2ZldGNoZWRSZWNvcmRzU2l6ZSA9
IDA7CisKKyAgICBtX3ByZWZldGNoQ291bnQgPSAwOwogfQogCiB2b2lkIFNRTGl0ZUlEQkN1cnNv
cjo6cmVzZXRBbmRSZWJpbmRTdGF0ZW1lbnQoKQpAQCAtMzU5LDE3ICszNzksMzIgQEAgYm9vbCBT
UUxpdGVJREJDdXJzb3I6OnJlc2V0QW5kUmViaW5kUHJlSW5kZXhTdGF0ZW1lbnRJZk5lY2Vzc2Fy
eSgpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgU1FMaXRlSURCQ3Vyc29yOjpwcmVmZXRj
aCgpCitib29sIFNRTGl0ZUlEQkN1cnNvcjo6cHJlZmV0Y2hPbmVSZWNvcmQoKQogewotICAgIExP
RyhJbmRleGVkREIsICJTUUxpdGVJREJDdXJzb3I6OnByZWZldGNoKCkgLSBDdXJzb3IgYWxyZWFk
eSBoYXMgJXp1IGZldGNoZWQgcmVjb3JkcyIsIG1fZmV0Y2hlZFJlY29yZHMuc2l6ZSgpKTsKKyAg
ICBMT0coSW5kZXhlZERCLCAiU1FMaXRlSURCQ3Vyc29yOjpwcmVmZXRjaE9uZVJlY29yZCgpIC0g
Q3Vyc29yIGFscmVhZHkgaGFzICV6dSBmZXRjaGVkIHJlY29yZHMiLCBtX2ZldGNoZWRSZWNvcmRz
LnNpemUoKSk7CiAKICAgICBpZiAobV9mZXRjaGVkUmVjb3Jkc1NpemUgPj0gcHJlZmV0Y2hTaXpl
TGltaXQgfHwgbV9mZXRjaGVkUmVjb3Jkcy5pc0VtcHR5KCkgfHwgbV9mZXRjaGVkUmVjb3Jkcy5z
aXplKCkgPj0gcHJlZmV0Y2hMaW1pdCB8fCBtX2ZldGNoZWRSZWNvcmRzLmxhc3QoKS5pc1Rlcm1p
bmFsUmVjb3JkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIG1fY3VycmVudEtleUZv
clVuaXF1ZW5lc3MgPSBtX2ZldGNoZWRSZWNvcmRzLmxhc3QoKS5yZWNvcmQua2V5OwotICAgIGZl
dGNoKCk7CiAKLSAgICByZXR1cm4gbV9mZXRjaGVkUmVjb3Jkcy5zaXplKCkgPCBwcmVmZXRjaExp
bWl0ICYmIG1fZmV0Y2hlZFJlY29yZHNTaXplIDwgcHJlZmV0Y2hTaXplTGltaXQ7CisgICAgcmV0
dXJuIGZldGNoKCkgJiYgbV9mZXRjaGVkUmVjb3Jkcy5zaXplKCkgPCBwcmVmZXRjaExpbWl0ICYm
IG1fZmV0Y2hlZFJlY29yZHNTaXplIDwgcHJlZmV0Y2hTaXplTGltaXQ7Cit9CisKK3ZvaWQgU1FM
aXRlSURCQ3Vyc29yOjppbmNyZWFzZUNvdW50VG9QcmVmZXRjaCgpCit7CisgICAgbV9wcmVmZXRj
aENvdW50ID0gbV9wcmVmZXRjaENvdW50ID8gbV9wcmVmZXRjaENvdW50ICogMiA6IDE7Cit9CisK
K2Jvb2wgU1FMaXRlSURCQ3Vyc29yOjpwcmVmZXRjaCgpCit7CisgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1fcHJlZmV0Y2hDb3VudDsgKytpKSB7CisgICAgICAgIGlmICghcHJlZmV0Y2hP
bmVSZWNvcmQoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpbmNy
ZWFzZUNvdW50VG9QcmVmZXRjaCgpOworICAgIHJldHVybiB0cnVlOwogfQogCiBib29sIFNRTGl0
ZUlEQkN1cnNvcjo6YWR2YW5jZSh1aW50NjRfdCBjb3VudCkKQEAgLTQ4OCw3ICs1MjMsNyBAQCBT
UUxpdGVJREJDdXJzb3I6OkZldGNoUmVzdWx0IFNRTGl0ZUlEQkN1cnNvcjo6aW50ZXJuYWxGZXRj
aE5leHRSZWNvcmQoU1FMaXRlQ3VycwogICAgIEFTU0VSVCghbV9mZXRjaGVkUmVjb3Jkcy5pc0Vt
cHR5KCkpOwogICAgIEFTU0VSVCghbV9mZXRjaGVkUmVjb3Jkcy5sYXN0KCkuaXNUZXJtaW5hbFJl
Y29yZCgpKTsKIAotICAgIHJlY29yZC5yZWNvcmQudmFsdWUgPSBudWxscHRyOworICAgIHJlY29y
ZC5yZWNvcmQudmFsdWUgPSB7IH07CiAKICAgICBhdXRvJiBkYXRhYmFzZSA9IG1fdHJhbnNhY3Rp
b24tPnNxbGl0ZVRyYW5zYWN0aW9uKCktPmRhdGFiYXNlKCk7CiAgICAgU1FMaXRlU3RhdGVtZW50
KiBzdGF0ZW1lbnQgPSBudWxscHRyOwpAQCAtNTQ2LDcgKzU4MSw3IEBAIFNRTGl0ZUlEQkN1cnNv
cjo6RmV0Y2hSZXN1bHQgU1FMaXRlSURCQ3Vyc29yOjppbnRlcm5hbEZldGNoTmV4dFJlY29yZChT
UUxpdGVDdXJzCiAgICAgICAgIH0KIAogICAgICAgICBpZiAobV9jdXJzb3JUeXBlID09IEluZGV4
ZWREQjo6Q3Vyc29yVHlwZTo6S2V5QW5kVmFsdWUpCi0gICAgICAgICAgICByZWNvcmQucmVjb3Jk
LnZhbHVlID0gbWFrZVVuaXF1ZTxJREJWYWx1ZT4oVGhyZWFkU2FmZURhdGFCdWZmZXI6OmNyZWF0
ZShXVEZNb3ZlKGtleURhdGEpKSwgYmxvYlVSTHMsIGJsb2JGaWxlUGF0aHMpOworICAgICAgICAg
ICAgcmVjb3JkLnJlY29yZC52YWx1ZSA9IHsgVGhyZWFkU2FmZURhdGFCdWZmZXI6OmNyZWF0ZShX
VEZNb3ZlKGtleURhdGEpKSwgYmxvYlVSTHMsIGJsb2JGaWxlUGF0aHMgfTsKICAgICB9IGVsc2Ug
ewogICAgICAgICBpZiAoIWRlc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhLmRhdGEoKSwga2V5
RGF0YS5zaXplKCksIHJlY29yZC5yZWNvcmQucHJpbWFyeUtleSkpIHsKICAgICAgICAgICAgIExP
R19FUlJPUigiVW5hYmxlIHRvIGRlc2VyaWFsaXplIHZhbHVlIGRhdGEgZnJvbSBkYXRhYmFzZSB3
aGlsZSBhZHZhbmNpbmcgaW5kZXggY3Vyc29yIik7CkBAIC01NzIsNyArNjA3LDcgQEAgU1FMaXRl
SURCQ3Vyc29yOjpGZXRjaFJlc3VsdCBTUUxpdGVJREJDdXJzb3I6OmludGVybmFsRmV0Y2hOZXh0
UmVjb3JkKFNRTGl0ZUN1cnMKIAogICAgICAgICBpZiAocmVzdWx0ID09IFNRTElURV9ST1cpIHsK
ICAgICAgICAgICAgIG1fY2FjaGVkT2JqZWN0U3RvcmVTdGF0ZW1lbnQtPmdldENvbHVtbkJsb2JB
c1ZlY3RvcigwLCBrZXlEYXRhKTsKLSAgICAgICAgICAgIHJlY29yZC5yZWNvcmQudmFsdWUgPSBt
YWtlVW5pcXVlPElEQlZhbHVlPihUaHJlYWRTYWZlRGF0YUJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUo
a2V5RGF0YSkpKTsKKyAgICAgICAgICAgIHJlY29yZC5yZWNvcmQudmFsdWUgPSB7IFRocmVhZFNh
ZmVEYXRhQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShrZXlEYXRhKSkgfTsKICAgICAgICAgfSBlbHNl
IGlmIChyZXN1bHQgPT0gU1FMSVRFX0RPTkUpIHsKICAgICAgICAgICAgIC8vIFRoaXMgaW5kaWNh
dGVzIHRoYXQgdGhlIHJlY29yZCB3ZSdyZSB0cnlpbmcgdG8gcmV0cmlldmUgaGFzIGJlZW4gcmVt
b3ZlZCBmcm9tIHRoZSBvYmplY3Qgc3RvcmUuCiAgICAgICAgICAgICAvLyBTa2lwIG92ZXIgaXQu
CkBAIC02NDUsMTAgKzY4MCwxMCBAQCBjb25zdCBJREJLZXlEYXRhJiBTUUxpdGVJREJDdXJzb3I6
OmN1cnJlbnRQcmltYXJ5S2V5KCkgY29uc3QKICAgICByZXR1cm4gbV9mZXRjaGVkUmVjb3Jkcy5m
aXJzdCgpLnJlY29yZC5wcmltYXJ5S2V5OwogfQogCi1JREJWYWx1ZSogU1FMaXRlSURCQ3Vyc29y
OjpjdXJyZW50VmFsdWUoKSBjb25zdAorY29uc3QgSURCVmFsdWUmIFNRTGl0ZUlEQkN1cnNvcjo6
Y3VycmVudFZhbHVlKCkgY29uc3QKIHsKICAgICBBU1NFUlQoIW1fZmV0Y2hlZFJlY29yZHMuaXNF
bXB0eSgpKTsKLSAgICByZXR1cm4gbV9mZXRjaGVkUmVjb3Jkcy5maXJzdCgpLnJlY29yZC52YWx1
ZS5nZXQoKTsKKyAgICByZXR1cm4gbV9mZXRjaGVkUmVjb3Jkcy5maXJzdCgpLnJlY29yZC52YWx1
ZTsKIH0KIAogYm9vbCBTUUxpdGVJREJDdXJzb3I6OmRpZENvbXBsZXRlKCkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJD
dXJzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJ
REJDdXJzb3IuaAppbmRleCBkODFkZmI1YzNkOTUxMTBiYTNjMmQxZTkzYjY2MzEyYzAyZDM2MjY3
Li5mZGNhODBlZDBiNjFmNmU1MWQzMDU4ZmZmNjM5ZWRiZGMyYjJmMmY5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1
cnNvci5oCkBAIC02NiwxMCArNjYsMTEgQEAgcHVibGljOgogCiAgICAgY29uc3QgSURCS2V5RGF0
YSYgY3VycmVudEtleSgpIGNvbnN0OwogICAgIGNvbnN0IElEQktleURhdGEmIGN1cnJlbnRQcmlt
YXJ5S2V5KCkgY29uc3Q7Ci0gICAgSURCVmFsdWUqIGN1cnJlbnRWYWx1ZSgpIGNvbnN0OworICAg
IGNvbnN0IElEQlZhbHVlJiBjdXJyZW50VmFsdWUoKSBjb25zdDsKIAogICAgIGJvb2wgYWR2YW5j
ZSh1aW50NjRfdCBjb3VudCk7CiAgICAgYm9vbCBpdGVyYXRlKGNvbnN0IElEQktleURhdGEmIHRh
cmdldEtleSwgY29uc3QgSURCS2V5RGF0YSYgdGFyZ2V0UHJpbWFyeUtleSk7CisgICAgYm9vbCBw
cmVmZXRjaE9uZVJlY29yZCgpOwogICAgIGJvb2wgcHJlZmV0Y2goKTsKIAogICAgIGJvb2wgZGlk
Q29tcGxldGUoKSBjb25zdDsKQEAgLTc3LDcgKzc4LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBv
YmplY3RTdG9yZVJlY29yZHNDaGFuZ2VkKCk7CiAKLSAgICB2b2lkIGN1cnJlbnREYXRhKElEQkdl
dFJlc3VsdCYsIGNvbnN0IE9wdGlvbmFsPElEQktleVBhdGg+Jik7CisgICAgZW51bSBjbGFzcyBT
aG91bGRJbmNsdWRlUHJlZmV0Y2hlZFJlY29yZHMgeyBObywgWWVzIH07CisgICAgdm9pZCBjdXJy
ZW50RGF0YShJREJHZXRSZXN1bHQmLCBjb25zdCBPcHRpb25hbDxJREJLZXlQYXRoPiYsIFNob3Vs
ZEluY2x1ZGVQcmVmZXRjaGVkUmVjb3JkcyA9IFNob3VsZEluY2x1ZGVQcmVmZXRjaGVkUmVjb3Jk
czo6Tm8pOwogCiBwcml2YXRlOgogICAgIGJvb2wgZXN0YWJsaXNoU3RhdGVtZW50KCk7CkBAIC0x
MDksNiArMTExLDggQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgaXNEaXJlY3Rpb25OZXh0KCkgY29u
c3QgeyByZXR1cm4gbV9jdXJzb3JEaXJlY3Rpb24gPT0gSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rp
b246Ok5leHQgfHwgbV9jdXJzb3JEaXJlY3Rpb24gPT0gSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rp
b246Ok5leHR1bmlxdWU7IH0KIAorICAgIHZvaWQgaW5jcmVhc2VDb3VudFRvUHJlZmV0Y2goKTsK
KwogICAgIFNRTGl0ZUlEQlRyYW5zYWN0aW9uKiBtX3RyYW5zYWN0aW9uOwogICAgIElEQlJlc291
cmNlSWRlbnRpZmllciBtX2N1cnNvcklkZW50aWZpZXI7CiAgICAgaW50NjRfdCBtX29iamVjdFN0
b3JlSUQ7CkBAIC0xMzMsNiArMTM3LDggQEAgcHJpdmF0ZToKICAgICBpbnQ2NF90IG1fYm91bmRJ
RCB7IDAgfTsKIAogICAgIGJvb2wgbV9iYWNraW5nU3RvcmVDdXJzb3IgeyBmYWxzZSB9OworCisg
ICAgdW5zaWduZWQgbV9wcmVmZXRjaENvdW50IHsgMCB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
SURCU2VydmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcAppbmRleCBhMGEwNTE2ZjZmYmNjNGU2
ODBmYzJjOWE3ZjA0ODc5MjM1NTNjZGRmLi5hZjViMzE4NTA4NTZkNWQyZGI2MjlhOTYwMGFiNGY0
MjY0MzE0ZTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAKQEAgLTg1NCwyMiArODU0LDYg
QEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6aXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXF1ZXN0
RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IEkKICAgICBhdXRvIGVycm9yID0gbV9iYWNraW5nU3Rv
cmUtPml0ZXJhdGVDdXJzb3IodHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjdXJzb3JJZGVudGlmaWVy
LCBkYXRhLCByZXN1bHQpOwogCiAgICAgY2FsbGJhY2soZXJyb3IsIHJlc3VsdCk7Ci0KLSAgICBp
ZiAoZXJyb3IuaXNOdWxsKCkpCi0gICAgICAgIHByZWZldGNoQ3Vyc29yKHRyYW5zYWN0aW9uSWRl
bnRpZmllciwgY3Vyc29ySWRlbnRpZmllciwgZGF0YS5jb3VudCA/IGRhdGEuY291bnQgOiAxKTsK
LX0KLQotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cHJlZmV0Y2hDdXJzb3IoY29uc3QgSURCUmVz
b3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNl
SWRlbnRpZmllciYgY3Vyc29ySWRlbnRpZmllciwgdWludDY0X3Qgc3RlcCkKLXsKLSAgICBMT0co
SW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6OnByZWZldGNoQ3Vyc29yIik7Ci0KLSAgICBB
U1NFUlQoIWlzTWFpblRocmVhZCgpKTsKLQotICAgIHVpbnQ2NF90IGNvdW50VG9QcmVmZXRjaCA9
IHN0ZXAgKiAyOwotICAgIHdoaWxlIChjb3VudFRvUHJlZmV0Y2ggLS0pIHsKLSAgICAgICAgaWYg
KCFtX2JhY2tpbmdTdG9yZS0+cHJlZmV0Y2hDdXJzb3IodHJhbnNhY3Rpb25JZGVudGlmaWVyLCBj
dXJzb3JJZGVudGlmaWVyKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9CiB9CiAKIHZvaWQg
VW5pcXVlSURCRGF0YWJhc2U6OmNvbW1pdFRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJh
bnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFi
YXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURC
RGF0YWJhc2UuaAppbmRleCAwNmJmNmE0ZWYxNmM2MjMxOGNkYzM5MzliMjMxNmRhYmE1NGYwNDNh
Li4xYzY4ODczNTA2MDI2ZWZkZWZhMGQ3Mjc5M2NlOGNhMmM3NGM0NDk5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURC
RGF0YWJhc2UuaApAQCAtMTQyLDggKzE0Miw2IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNsZWFy
VHJhbnNhY3Rpb25zT25Db25uZWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYpOwog
Ci0gICAgdm9pZCBwcmVmZXRjaEN1cnNvcihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImLCBj
b25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImLCB1aW50NjRfdCBzdGVwKTsKLQogICAgIElEQlNl
cnZlciYgbV9zZXJ2ZXI7CiAgICAgSURCRGF0YWJhc2VJZGVudGlmaWVyIG1faWRlbnRpZmllcjsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1Vu
aXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uY3BwCmluZGV4IDBj
OWJiMTBmZjg4Y2Q2NGM5MDU2OTNmNjJjZmFjZWU4NDFhZTJmOGQuLjk5NzRjYTY3MmQzNTllM2Vm
ZmExMDRlMWFjZTYwZDg4YzQ4ZWJlZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJh
c2VUcmFuc2FjdGlvbi5jcHAKQEAgLTM3NCw5ICszNzQsMTMgQEAgdm9pZCBVbmlxdWVJREJEYXRh
YmFzZVRyYW5zYWN0aW9uOjppdGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1
ZXN0RGEKICAgICBhdXRvIGRhdGFiYXNlID0gbV9kYXRhYmFzZUNvbm5lY3Rpb24tPmRhdGFiYXNl
KCk7CiAgICAgQVNTRVJUKGRhdGFiYXNlKTsKICAgICAKLSAgICBkYXRhYmFzZS0+aXRlcmF0ZUN1
cnNvcihyZXF1ZXN0RGF0YSwgZGF0YSwgW3RoaXMsIHJlcXVlc3REYXRhXShhdXRvJiBlcnJvciwg
Y29uc3QgSURCR2V0UmVzdWx0JiByZXN1bHQpIHsKKyAgICBkYXRhYmFzZS0+aXRlcmF0ZUN1cnNv
cihyZXF1ZXN0RGF0YSwgZGF0YSwgW3RoaXMsIHJlcXVlc3REYXRhLCBvcHRpb24gPSBkYXRhLm9w
dGlvbl0oYXV0byYgZXJyb3IsIGNvbnN0IElEQkdldFJlc3VsdCYgcmVzdWx0KSB7CiAgICAgICAg
IExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjppdGVyYXRlQ3Vy
c29yIChjYWxsYmFjaykiKTsKIAorICAgICAgICBpZiAob3B0aW9uID09IEluZGV4ZWREQjo6Q3Vy
c29ySXRlcmF0ZU9wdGlvbjo6RG9Ob3RSZXBseSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBBU1NFUlQoIWVycm9yLmlzTnVsbCgpIHx8IHJlc3VsdC5pc0RlZmluZWQoKSk7CiAgICAg
ICAgIGlmIChlcnJvci5pc051bGwoKSkKICAgICAgICAgICAgIG1fZGF0YWJhc2VDb25uZWN0aW9u
LT5jb25uZWN0aW9uVG9DbGllbnQoKS5kaWRJdGVyYXRlQ3Vyc29yKElEQlJlc3VsdERhdGE6Oml0
ZXJhdGVDdXJzb3JTdWNjZXNzKHJlcXVlc3REYXRhLnJlcXVlc3RJZGVudGlmaWVyKCksIHJlc3Vs
dCkpOwogICAgICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zaGFyZWQvSURCQ3Vyc29yUmVjb3JkLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zaGFyZWQvSURCQ3Vyc29yUmVjb3JkLmgKaW5kZXggNjEzNjA0YThjNWZhMmVj
Nzg0M2JiOThiMDU0ZTEwMWY2NjNlNjMxZS4uOWQ1YWI5NGFkNTRkNDU5YTkzNjA0OTM4NzBiNzMy
YzNlNzRhMDFiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2hhcmVkL0lEQkN1cnNvclJlY29yZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NoYXJlZC9JREJDdXJzb3JSZWNvcmQuaApAQCAtMzUsMTIgKzM1LDEzIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBJREJDdXJzb3JSZWNvcmQgewogICAgIElEQktleURhdGEg
a2V5OwogICAgIElEQktleURhdGEgcHJpbWFyeUtleTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SURC
VmFsdWU+IHZhbHVlOworICAgIElEQlZhbHVlIHZhbHVlOwogCiAgICAgdGVtcGxhdGU8Y2xhc3Mg
RW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNz
IERlY29kZXI+IHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiwgSURCQ3Vyc29yUmVjb3JkJik7
CiAKLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIGtleS5zaXplKCkgKyBwcmltYXJ5
S2V5LnNpemUoKSArICh2YWx1ZSA/IHZhbHVlLT5zaXplKCkgOiAwKTsgfQorICAgIElEQkN1cnNv
clJlY29yZCBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIGtleS5zaXplKCkgKyBwcmltYXJ5S2V5LnNpemUoKSArIHZhbHVlLnNpemUoKTsgfQog
fTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTY0LDYgKzY1LDExIEBAIGJvb2wgSURC
Q3Vyc29yUmVjb3JkOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgSURCQ3Vyc29yUmVjb3JkJiBy
ZWNvcmQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2lubGluZSBJREJDdXJzb3JSZWNvcmQgSURC
Q3Vyc29yUmVjb3JkOjppc29sYXRlZENvcHkoKSBjb25zdAoreworICAgIHJldHVybiB7IGtleS5p
c29sYXRlZENvcHkoKSwgcHJpbWFyeUtleS5pc29sYXRlZENvcHkoKSwgdmFsdWUuaXNvbGF0ZWRD
b3B5KCkgfTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxF
KElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zaGFyZWQvSURCSXRlcmF0ZUN1cnNvckRhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkl0ZXJhdGVDdXJzb3JEYXRhLmNwcAppbmRleCBm
MWYwYmIzYjZkYjQxZWE5N2QzMDJmYTNkYzI3MjY2ZmRlODYxNzk3Li5hZDlmNGE0NzUwMDIyYmIw
NjQ2MmZjOGRjOWY1MTkyYjQ2YmJhYjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCSXRlcmF0ZUN1cnNvckRhdGEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJJdGVyYXRlQ3Vyc29yRGF0YS5j
cHAKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBJREJJdGVyYXRlQ3Vy
c29yRGF0YSBJREJJdGVyYXRlQ3Vyc29yRGF0YTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKIHsKLSAg
ICByZXR1cm4geyBrZXlEYXRhLmlzb2xhdGVkQ29weSgpLCBwcmltYXJ5S2V5RGF0YS5pc29sYXRl
ZENvcHkoKSwgY291bnQgfTsKKyAgICByZXR1cm4geyBrZXlEYXRhLmlzb2xhdGVkQ29weSgpLCBw
cmltYXJ5S2V5RGF0YS5pc29sYXRlZENvcHkoKSwgY291bnQsIG9wdGlvbiB9OwogfQogCiAjaWYg
IUxPR19ESVNBQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2hhcmVkL0lEQkl0ZXJhdGVDdXJzb3JEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zaGFyZWQvSURCSXRlcmF0ZUN1cnNvckRhdGEuaAppbmRleCA4ZDMxNWM1YTZh
MzE3NGYxZTIzMWE0MGExMTU5NmNmZTgyZjNiMWIxLi40ZGY2YzY0NWYzYjI4MWU3Y2EwMGJkOWQ5
MmJiNzFkMGM0ZmI0MGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zaGFyZWQvSURCSXRlcmF0ZUN1cnNvckRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCSXRlcmF0ZUN1cnNvckRhdGEuaApAQCAtMzUsNiAr
MzUsNyBAQCBzdHJ1Y3QgSURCSXRlcmF0ZUN1cnNvckRhdGEgewogICAgIElEQktleURhdGEga2V5
RGF0YTsKICAgICBJREJLZXlEYXRhIHByaW1hcnlLZXlEYXRhOwogICAgIHVuc2lnbmVkIGNvdW50
OworICAgIEluZGV4ZWREQjo6Q3Vyc29ySXRlcmF0ZU9wdGlvbiBvcHRpb24geyBJbmRleGVkREI6
OkN1cnNvckl0ZXJhdGVPcHRpb246OlJlcGx5IH07CiAKICAgICBXRUJDT1JFX0VYUE9SVCBJREJJ
dGVyYXRlQ3Vyc29yRGF0YSBpc29sYXRlZENvcHkoKSBjb25zdDsKIApAQCAtNTAsNiArNTEsNyBA
QCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBJREJJdGVyYXRlQ3Vyc29yRGF0YTo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCBrZXlEYXRhIDw8
IHByaW1hcnlLZXlEYXRhIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90Pihjb3VudCk7CisgICAgZW5j
b2Rlci5lbmNvZGVFbnVtKG9wdGlvbik7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+CkBA
IC03Myw5ICs3NSwxMSBAQCBib29sIElEQkl0ZXJhdGVDdXJzb3JEYXRhOjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlciwgSURCSXRlcmF0ZUN1cnNvckRhdGEmIGl0ZXJhdAogCiAgICAgaWYgKGNvdW50
ID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KICAgICBpdGVyYXRvckN1cnNvckRhdGEuY291bnQgPSBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oY291bnQpOwogCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0oaXRlcmF0b3JDdXJz
b3JEYXRhLm9wdGlvbikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIHJldHVybiB0cnVl
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggYjE4ZTc0MjQ2YmYxZjI3ZWZmNzliMDc2OWZlNjgwZDIzYjM1OWZlMi4uNzk3
NTVkNzBmNmJhM2VlMmU1ZWZiOTgwOGViMzMyYzc5NzNhOWYzOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQwMyw3ICsxNDAz
LDcgQEAKIAkJNTEwRDRBMzQxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUVycm9yLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBENEEyRTEw
MzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtRXJyb3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTBENEEzNzEwMzE2NUVFMDA0OUVBNTQg
LyogU29ja2V0U3RyZWFtSGFuZGxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTBENEEzMTEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFu
ZGxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NTEwRDRBMzgxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwRDRBMzIxMDMx
NjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTUxMTBGQ0ZDMUUwMzY0MUQwMDZG
OEQwQiAvKiBJREJDdXJzb3JSZWNvcmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxMTBGQ0ZCMUUwMzYyQTUwMDZGOEQwQiAvKiBJREJDdXJzb3JSZWNv
cmQuaCAqLzsgfTsKKwkJNTExMEZDRkMxRTAzNjQxRDAwNkY4RDBCIC8qIElEQkN1cnNvclJlY29y
ZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExMEZD
RkIxRTAzNjJBNTAwNkY4RDBCIC8qIElEQkN1cnNvclJlY29yZC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxMUVDMTI4MUM1MEFBQ0EwMDMyRjk4
MyAvKiBJREJTZXJpYWxpemF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTFFQzEyNjFDNTBBQTU3MDAzMkY5ODMgLyogSURCU2VyaWFsaXphdGlv
bi5oICovOyB9OwogCQk1MTFFQzEyQzFDNTBBQkJGMDAzMkY5ODMgLyogU1FMaXRlSURCVHJhbnNh
Y3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
MUVDMTJBMUM1MEFCQkEwMDMyRjk4MyAvKiBTUUxpdGVJREJUcmFuc2FjdGlvbi5oICovOyB9Owog
CQk1MTFFQzEzMDFDNTBBQkY1MDAzMkY5ODMgLyogU1FMaXRlSURCQ3Vyc29yLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTFFQzEyRTFDNTBBQkVDMDAz
MkY5ODMgLyogU1FMaXRlSURCQ3Vyc29yLmggKi87IH07CkBAIC0xMzg3OSwxMiArMTM4NzksMTIg
QEAKIAkJQ0Q5NEE1Q0MxRjcxQ0I2OTAwRjUyNUM1IC8qIENETVJlcXVpcmVtZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENETVJlcXVpcmVtZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUNEOTRBNUNEMUY3MUNCNjkwMEY1MjVDNSAvKiBDRE1LZXlTeXN0
ZW1Db25maWd1cmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENETUtl
eVN5c3RlbUNvbmZpZ3VyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q5
NEE1Q0UxRjcxQ0I2QTAwRjUyNUM1IC8qIENETUluc3RhbmNlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENETUluc3RhbmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUNEOTRBNUNGMUY3MUNCNjEwMEY1MjVDNSAvKiBDRE1Qcm94eS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDRE1Qcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDRDk0QTVDRjFGNzFDQjYxMDBGNTI1RDUgLyogQ0RNUHJveHkuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ0RNUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDRDk0QTVDRjFGNzFDQjZBMDBGNTI1QzUgLyogQ0RNUHJpdmF0ZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDRE1Qcml2YXRlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUNEOTRBNUQwMUY3MUNCNkIwMEY1MjVDNSAvKiBDRE1SZXN0cmlj
dGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ0RNUmVzdHJpY3Rpb25z
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEOTRBNUQxMUY3MUNCNkIwMEY1MjVD
NSAvKiBDRE1GYWN0b3J5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IENETUZhY3RvcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDk0QTVEMjFG
NzFDQjZCMDBGNTI1QzUgLyogQ0RNRmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDRE1GYWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUNEOTRB
NUNGMUY3MUNCNjEwMEY1MjVENSAvKiBDRE1Qcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBDRE1Qcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUNEOTRBNUNGMUY3MUNCNjEwMEY1MjVDNSAvKiBDRE1Qcm94eS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDRE1Qcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDRDk0QTVEMzFGNzFDQjZDMDBGNTI1QzUgLyogQ0RNTWVkaWFDYXBhYmlsaXR5LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENETU1lZGlhQ2FwYWJpbGl0eS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDk0QTVENDFGNzFDQjZDMDBGNTI1QzUgLyogQ0RN
S2V5U3RhdHVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENETUtleVN0YXR1
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDk0QTVENTFGNzFDQjZEMDBGNTI1
QzUgLyogQ0RNU2Vzc2lvblR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q0RNU2Vzc2lvblR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390564</attachid>
            <date>2020-02-12 14:39:27 -0800</date>
            <delta_ts>2020-02-12 15:02:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207602-20200212143926.patch</filename>
            <type>text/plain</type>
            <size>57273</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2NDM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2U4NTMxMWM5OGU5NmMz
Mzk5OTdhNWM4NDFmMmFkZjRmNjgzNGQwYS4uZTllNzc5MjVlZjRiODI3NjFmMzUyZWNiNTM1OTgx
NDJhNDkxYjBjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNSBAQAorMjAyMC0wMi0xMiAgU2lo
dWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBJbmRleGVkREI6IHByZWZl
dGNoIGN1cnNvciByZWNvcmRzIG9uIGNsaWVudCBzaWRlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc2MDIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzU4NDgzOTI3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIENhY2hlIGN1cnNvciByZWNvcmRzIG9uIG9uIGNsaWVudCBzaWRlIGFuZCB1c2UgdGhvc2Ug
cmVjb3JkcyBmb3IgaXRlcmF0ZSBvcGVyYXRpb25zLgorCisgICAgICAgIFRoaXMgbWFrZXMgY3Vy
c29yIGNvbnRpbnVlL2FkdmFuY2UgdGVzdHMgaW4gUGVyZm9ybWFuY2VUZXN0cy9JbmRleGVkREIv
YmFzaWNzIH4zeCBmYXN0ZXIuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorCisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QkN1cnNvcjo6c2V0R2V0UmVzdWx0KTogUmVjb3JkIHRoZSBJRCBvZiBUcmFuc2FjdGlvbk9wZXJh
dGlvbiB0aGF0IHVwZGF0ZXMgY2FjaGUuCisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6Oml0
ZXJhdGVXaXRoUHJlZmV0Y2hlZFJlY29yZHMpOiBJREJDdXJzb3IgdXNlcyBjYWNoZWQgcmVjb3Jk
cyBmb3IgaXRlcmF0ZSBvcGVydGFpb25zIGlmIAorICAgICAgICB0aGVyZSBpcyBubyB3cml0ZSBv
cGVyYXRpb24gYmV0d2VlbiBsYXN0IGNhY2hlIHVwZGF0ZSBhbmQgY3VycmVudCBpdGVyYXRpb24g
b3BlcmF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yOjpjbGVhclByZWZldGNoZWRS
ZWNvcmRzKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaDoKKworICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkdldFJlc3VsdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJREJHZXRSZXN1bHQ6Omlzb2xhdGVkQ29weSk6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCR2V0UmVzdWx0Lmg6CisgICAgICAgIChXZWJDb3JlOjpJREJHZXRSZXN1bHQ6OklE
QkdldFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJHZXRSZXN1bHQ6OnByZWZldGNoZWRS
ZWNvcmRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkdldFJlc3VsdDo6ZW5jb2RlIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkdldFJlc3VsdDo6ZGVjb2RlKToKKworICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwOiBSZWNvcmQgY29ycmVzcG9uZGlu
ZyBUcmFuc2FjdGlvbk9wZXJhdGlvbiBJRCBpbiByZXF1ZXN0LgorICAgICAgICAoV2ViQ29yZTo6
SURCUmVxdWVzdDo6ZGlkT3Blbk9ySXRlcmF0ZUN1cnNvcik6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvSURCUmVxdWVzdC5oOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6cGVu
ZGluZ0N1cnNvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpzZXRUcmFu
c2FjdGlvbk9wZXJhdGlvbklEKToKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRy
YW5zYWN0aW9uLmNwcDogSWYgYSBjdXJzb3IgaXRlcmF0ZSByZXF1ZXN0IGNhbiBiZSBoYW5kbGVk
IHdpdGggY2FjaGVkIHJlY29yZHMsCisgICAgICAgIElEQkNsaWVudCBkb2VzIG5lZWQgdG8gc2Vu
ZCByZXF1ZXN0IHRvIElEQlNlcnZlciBhbmQgd2FpdCBmb3IgcmVzcG9uc2UuIEJ1dCByZXF1ZXN0
cyBiZWZvcmUgdGhlIGl0ZXJhdGUgcmVxdWVzdAorICAgICAgICBtYXkgbmVlZCB0byB3YWl0IHNl
cnZlciB0byBhbnN3ZXIsIGFuZCBzcGVjIHJlcXVpcmVzIHRvIGhhbmRsZSByZXF1ZXN0cyBpbiBv
cmRlci4gVGhlcmVmb3JlLCB3ZSBub3cga2VlcCBhbGwgdGhlIAorICAgICAgICByZXN1bHRzIGlu
IG1fdHJhbnNhY3Rpb25PcGVyYXRpb25SZXN1bHRNYXAgYW5kIGhhbmRsZSB0aGUgcmVzdWx0IGFj
Y29yZGluZyB0byB0aGUgb3JkZXJpbmcgaW4gCisgICAgICAgIG1fdHJhbnNhY3Rpb25PcGVyYXRp
b25zSW5Qcm9ncmVzc1F1ZXVlLgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmFi
b3J0SW5Qcm9ncmVzc09wZXJhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rp
b246OnJlbW92ZVJlcXVlc3QpOiBCZWNhdXNlIHJlc3VsdCBvZiBhIGN1cnNvciByZXF1ZXN0IGNh
biBiZSBhbnN3ZXJlZCBzb29uZXIsIGl0IGlzIAorICAgICAgICBwb3NzaWJsZSB0aGF0IGluIGZp
bmlzaGVkRGlzcGF0Y2hFdmVudEZvclJlcXVlc3QsIG1fY3VycmVudGx5Q29tcGxldGluZ1JlcXVl
c3QsIHdoaWNoIGlzIGEgY3Vyc29yIHJlcXVlc3QsIGlzIAorICAgICAgICBzZXQgdG8gbnVsbHB0
ciwgYW5kIHRoZW4gaXQgaXMgc2V0IHRvIHRoZSBzYW1lIGN1cnNvciByZXF1ZXN0IGluIGhhbmRs
ZU9wZXJhdGlvbnNDb21wbGV0ZWRPblNlcnZlci4gVGhpcyAKKyAgICAgICAgaGFwcGVucyBpbiBk
aXNwYXRjaEV2ZW50IG9mIHRoZSBjdXJzb3IgcmVxdWVzdCwgd2hlcmUgcmVxdWVzdCB3b3VsZCBy
ZW1vdmUgaXRzZWxmIGZyb20gdHJhbnNhY3Rpb24gYXQgdGhlIGVuZC4KKyAgICAgICAgSW4gdGhp
cyBjYXNlLCB0cmFuc2FjdGlvbiBtYXkgY29tbWl0IGFmdGVyIHRoZSByZXF1ZXN0IGxpc3QgYmVj
b21lcyBlbXB0eS4gQnV0IHRyYW5zYWN0aW9uIHNob3VsZCBub3QgYmVjYXVzZQorICAgICAgICB0
aGF0IHJlcXVlc3QgaXMgc3RpbGwgdmFsaWQgYXMgbV9jdXJyZW50bHlDb21wbGV0aW5nUmVxdWVz
dCBhbmQgc2hvdWxkIG5vdCBiZSByZW1vdmVkLgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNh
Y3Rpb246OnNjaGVkdWxlT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0
aW9uOjpvcGVyYXRpb25Db21wbGV0ZWRPblNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJU
cmFuc2FjdGlvbjo6aGFuZGxlT3BlcmF0aW9uc0NvbXBsZXRlZE9uU2VydmVyKTogQWxsIHJlcXVl
c3RzIHdlcmUgc2VudCB0byBJREJTZXJ2ZXIgYW5kIHRoZQorICAgICAgICByZXNwb25zZS9yZXN1
bHQgb3JkZXIgd291bGQgbmF0dXJhbGx5IGJlIHRoZSBzYW1lIGFzIHJlcXVlc3Qgb3JkZXIuIE5v
dyB0aGF0IHNvbWUgcmVzdWx0cyBjYW4gYmUgZ2VuZXJhdGVkCisgICAgICAgIHNvb25lciwgd2Ug
bm8gbG9uZ2VyIGhhbmRsZSByZXF1ZXN0cyB1c2luZyBtX2NvbXBsZXRlZE9uU2VydmVyUXVldWUu
CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6Y3JlYXRlT2JqZWN0U3RvcmUpOiBN
YXJrIGFzIHdyaXRlIG9wZXJhdGlvbiB0byB0cmFjayBsYXN0IHdyaXRlIG9wZXJhdGlvbi4KKyAg
ICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZW5hbWVPYmplY3RTdG9yZSk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmNyZWF0ZUluZGV4KTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cmVuYW1lSW5kZXgpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0RGVsZXRlUmVjb3JkKTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cmVxdWVzdENsZWFyT2Jq
ZWN0U3RvcmUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZXF1
ZXN0UHV0T3JBZGQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpk
ZWxldGVPYmplY3RTdG9yZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rp
b246OmRlbGV0ZUluZGV4KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlv
bjo6aXRlcmF0ZUN1cnNvck9uU2VydmVyKTogT25seSB1c2UgY2FjaGVkIHJlY29yZHMgaWYgdGhl
IHJlcXVlc3QgZG9lcyBub3Qgc3BlY2lmeSB0YXJnZXQKKyAgICAgICAga2V5LiBJZiBjdXJzb3Ig
aXMgaXRlcmF0ZWQgc3VjY2Vzc2Z1bGx5IHdpdGggY2FjaGUsIHNlbmQgYSBtZXNzYWdlIHRvIElE
QlNlcnZlciB0byBub3RpZnkgYWJvdXQgdGhlIHByb2dyZXNzIGJ1dAorICAgICAgICBkb24ndCBu
ZWVkIGl0IHRvIHJlcGx5LiBPdGhlcndpc2UsIGZhbGwgYmFjayB0byBkZXBlbmQgb24gSURCU2Vy
dmVyIHRvIGFuc3dlciB0aGUgcmVxdWVzdC4KKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0
aW9uOjpnZW5lcmF0ZU9wZXJhdGlvbklEKTogVHJhbnNhY3Rpb25PcGVyYXRpb24gSUQgaXMgdW5p
cXVlIGluIGEgdHJhbnNhY3Rpb24uCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJh
bnNhY3Rpb24uaDoKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0luZGV4ZWREQi5oOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uUHJveHkuY3Bw
OiAKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5OjppdGVy
YXRlQ3Vyc29yKTogSWYgdGhlIGl0ZXJhdGVDdXJzb3IgZG9lcyBub3QgbmVlZCBhbiBhbnN3ZXIs
IGRvbid0CisgICAgICAgIHRyYWNrIGl0IGluIElEQkNvbm5lY3Rpb25Qcm94eS4KKworICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uOjpUcmFuc2Fj
dGlvbk9wZXJhdGlvbik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5z
YWN0aW9uT3BlcmF0aW9uLmg6IEFkZCBJRCB0byBUcmFuc2FjdGlvbk9wZXJhdGlvbi4KKyAgICAg
ICAgKFdlYkNvcmU6OklEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb246Om9wZXJhdGlvbklE
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRp
b246OlRyYW5zYWN0aW9uT3BlcmF0aW9uKToKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9JREJCYWNraW5nU3RvcmUuaDogcmVtb3ZlIHByZWZldGNoQ3Vyc29yIGFzIGl0IGlz
IG5vdCB1c2VkIG5vdy4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5
SURCQmFja2luZ1N0b3JlLmg6IERpdHRvLiBBbHNvIHRoaXMgcGF0Y2ggb25seSBkZWFscyB3aXRo
IHByZWZldGNoaW5nIGluIAorICAgICAgICBwZXJzaXN0ZW50IHN0b3JlLgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuaDoKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVJ
bmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6Z2V0QWxsSW5kZXhSZWNvcmRzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FM
aXRlSURCQmFja2luZ1N0b3JlOjpnZXRJbmRleFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6aXRlcmF0ZUN1cnNvcik6IE9ubHkgcHJl
ZmV0Y2ggYXQgd2hlbiByZXF1ZXN0IG5lZWRzIHRvIGJlIGFuc3dlcmVkLgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OnByZWZldGNoQ3Vyc29yKTog
RGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFj
a2luZ1N0b3JlLmg6CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRl
SURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vy
c29yOjpjdXJyZW50RGF0YSk6IFByb3ZpZGUgYW4gb3B0aW9uIHRvIGluY2x1ZGUgcHJlZmV0Y2hl
ZCByZWNvcmRzIGluIHJlc3VsdC4KKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRl
SURCQ3Vyc29yOjpvYmplY3RTdG9yZVJlY29yZHNDaGFuZ2VkKTogUmVzZXQgY291bnQgdG8gcHJl
ZmV0Y2ggd2hlbiB0aGVyZSBpcyBhIAorICAgICAgICBjaGFuZ2UgdG8gbWFrZSBwcmVmZXRjaCBh
ZGFwdGl2ZS4KKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpv
YmplY3RTdG9yZVJlY29yZHNDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
U1FMaXRlSURCQ3Vyc29yOjpwcmVmZXRjaE9uZVJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJTZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6aW5jcmVhc2VDb3VudFRvUHJlZmV0Y2gpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OnByZWZldGNoKTogQ291
bnQgdG8gcHJlZmV0Y2ggaXMgZGVjaWRlZCBieSBTUUxpdGVDdXJzb3Igbm93LgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OmludGVybmFsRmV0Y2hOZXh0UmVj
b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpjdXJy
ZW50VmFsdWUgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxp
dGVJREJDdXJzb3IuaDoKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9Vbmlx
dWVJREJEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlE
QkRhdGFiYXNlOjppdGVyYXRlQ3Vyc29yKTogTW92ZSBjYWxsIHRvIHByZWZldGNoIGN1cnNvciB0
byBTUUxpdGVJREJCYWNraW5nU3RvcmUuCisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVu
aXF1ZUlEQkRhdGFiYXNlOjpwcmVmZXRjaEN1cnNvcik6IERlbGV0ZWQuCisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmg6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9u
OjppdGVyYXRlQ3Vyc29yKToKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9J
REJDdXJzb3JSZWNvcmQuaDogU3RvcCB1c2UgcG9pbnRlciBmb3IgSURCVmFsdWUgZm9yIGVhc2ll
ciBlbmNvZGluZyBhbmQgZGVjb2RpbmcuCisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3JSZWNv
cmQ6OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yUmVjb3JkOjppc29s
YXRlZENvcHkgY29uc3QpOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lE
Qkl0ZXJhdGVDdXJzb3JEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkl0ZXJhdGVDdXJz
b3JEYXRhOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L3NoYXJlZC9JREJJdGVyYXRlQ3Vyc29yRGF0YS5oOiBBZGQgYW4gb3B0aW9uIHRvIGxldCBJREJT
ZXJ2ZXIga25vdyB3aGV0aGVyIGl0IHNob3VsZCBhbnN3ZXIKKyAgICAgICAgdGhlIGN1cnNvciBy
ZXF1ZXN0LiAKKyAgICAgICAgKFdlYkNvcmU6OklEQkl0ZXJhdGVDdXJzb3JEYXRhOjplbmNvZGUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCSXRlcmF0ZUN1cnNvckRhdGE6OmRlY29kZSk6
CisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMjAt
MDItMTIgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJ
RkNdIFJlbmFtZSBEaXNwbGF5OjpSdW46OlRleHRDb250ZXh0IHRvIFRleHRDb250ZW50CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVh
ZGVycy5jbWFrZQppbmRleCBhZjg3NzdlM2YwNWJmYjNhMmRhYjQwNzhmZTZkYTgwZTRlN2QyMjYw
Li4xN2M4YzE2YjdiZjZkYzJlNjM1NDI2ZGJlZjA1OTk5ODYxYTAwOTBhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMu
Y21ha2UKQEAgLTY4LDYgKzY4LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVB
REVSUwogICAgIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5z
YWN0aW9uLmgKIAogICAgIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJDdXJzb3JJbmZvLmgK
KyAgICBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCQ3Vyc29yUmVjb3JkLmgKICAgICBNb2R1
bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRGF0YWJhc2VJbmZvLmgKICAgICBNb2R1bGVzL2luZGV4
ZWRkYi9zaGFyZWQvSURCRXJyb3IuaAogICAgIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJH
ZXRBbGxSZWNvcmRzRGF0YS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCQ3Vyc29yLmNwcAppbmRleCAzNjhlZGMyMDQ4M2I1NDFhY2Q3YjNiZjU5YmY1Y2YxN2ExYzkz
YTBiLi42NWI4OWI1ODViNWNlYWZhZmY5YzcwMTBmMDE5ZjU1YTE1ZTQ2YTRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAKQEAgLTMxMiw3ICsz
MTIsNyBAQCBFeGNlcHRpb25PcjxSZWY8V2ViQ29yZTo6SURCUmVxdWVzdD4+IElEQkN1cnNvcjo6
ZGVsZXRlRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QmCiAgICAgcmV0dXJuIHJlcXVlc3Q7CiB9CiAK
LWJvb2wgSURCQ3Vyc29yOjpzZXRHZXRSZXN1bHQoSURCUmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
SURCR2V0UmVzdWx0JiBnZXRSZXN1bHQpCitib29sIElEQkN1cnNvcjo6c2V0R2V0UmVzdWx0KElE
QlJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IElEQkdldFJlc3VsdCYgZ2V0UmVzdWx0LCB1aW50NjRf
dCBvcGVyYXRpb25JRCkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCQ3Vyc29yOjpzZXRHZXRS
ZXN1bHQgLSBjdXJyZW50IGtleSAlcyIsIGdldFJlc3VsdC5rZXlEYXRhKCkubG9nZ2luZ1N0cmlu
ZygpLnN1YnN0cmluZygwLCAxMDApLnV0ZjgoKS5kYXRhKCkpOwogICAgIEFTU0VSVChjYW5DdXJy
ZW50VGhyZWFkQWNjZXNzVGhyZWFkTG9jYWxEYXRhKGVmZmVjdGl2ZU9iamVjdFN0b3JlKCkudHJh
bnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKSk7CkBAIC0zNDksNiArMzQ5LDEz
IEBAIGJvb2wgSURCQ3Vyc29yOjpzZXRHZXRSZXN1bHQoSURCUmVxdWVzdCYgcmVxdWVzdCwgY29u
c3QgSURCR2V0UmVzdWx0JiBnZXRSZXN1bHQpCiAgICAgICAgIG1fa2V5UGF0aCA9IGdldFJlc3Vs
dC5rZXlQYXRoKCk7CiAgICAgfQogCisgICAgYXV0byBwcmVmZXRjaGVkUmVjb3JkcyA9IGdldFJl
c3VsdC5wcmVmZXRjaGVkUmVjb3JkcygpOworICAgIGlmICghcHJlZmV0Y2hlZFJlY29yZHMuaXNF
bXB0eSgpKSB7CisgICAgICAgIGZvciAoYXV0byYgcmVjb3JkIDogcHJlZmV0Y2hlZFJlY29yZHMp
CisgICAgICAgICAgICBtX3ByZWZldGNoZWRSZWNvcmRzLmFwcGVuZChyZWNvcmQpOworICAgICAg
ICBtX3ByZWZldGNoT3BlcmF0aW9uSUQgPSBvcGVyYXRpb25JRDsKKyAgICB9CisKICAgICBtX2dv
dFZhbHVlID0gdHJ1ZTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTM2MCw2ICszNjcsMjYgQEAg
dm9pZCBJREJDdXJzb3I6OmNsZWFyV3JhcHBlcnMoKQogICAgIG1fdmFsdWVXcmFwcGVyLmNsZWFy
KCk7CiB9CiAKK09wdGlvbmFsPElEQkdldFJlc3VsdD4gSURCQ3Vyc29yOjppdGVyYXRlV2l0aFBy
ZWZldGNoZWRSZWNvcmRzKHVuc2lnbmVkIGNvdW50LCB1aW50NjRfdCBsYXN0V3JpdGVPcGVyYXRp
b25JRCkKK3sKKyAgICB1bnNpZ25lZCBzdGVwID0gY291bnQgPiAwID8gY291bnQgOiAxOworICAg
IGlmIChzdGVwID4gbV9wcmVmZXRjaGVkUmVjb3Jkcy5zaXplKCkgfHwgbV9wcmVmZXRjaE9wZXJh
dGlvbklEIDw9IGxhc3RXcml0ZU9wZXJhdGlvbklEKQorICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworCisgICAgd2hpbGUgKC0tc3RlcCkKKyAgICAgICAgbV9wcmVmZXRjaGVkUmVjb3Jkcy5y
ZW1vdmVGaXJzdCgpOworCisgICAgYXV0byByZWNvcmQgPSBtX3ByZWZldGNoZWRSZWNvcmRzLnRh
a2VGaXJzdCgpOworCisgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjppdGVyYXRl
V2l0aFByZWZldGNoZWRSZWNvcmRzIGNvbnN1bWVzICV1IHJlY29yZHMiLCBjb3VudCA+IDAgPyBj
b3VudCA6IDEpOworICAgIHJldHVybiBJREJHZXRSZXN1bHQocmVjb3JkLmtleSwgcmVjb3JkLnBy
aW1hcnlLZXksIElEQlZhbHVlKHJlY29yZC52YWx1ZSksIGVmZmVjdGl2ZU9iamVjdFN0b3JlKCku
a2V5UGF0aCgpKTsKK30KKwordm9pZCBJREJDdXJzb3I6OmNsZWFyUHJlZmV0Y2hlZFJlY29yZHMo
KQoreworICAgIG1fcHJlZmV0Y2hlZFJlY29yZHMuY2xlYXIoKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5oCmluZGV4IDQ2MjJlNzAzMzQ0
YjM2MDgwYTcxZGVhMzJkZjhhNTMxZGNmYzU4YWMuLjdiYzhmOGMwMTdkZjUwZDI2Zjk5YTRiYTNi
NDMyOWFlYjY3NWY4ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkN1cnNvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkN1cnNvci5oCkBAIC04MSwxMCArODEsMTMgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJXcmFw
cGVycygpOwogICAgIElEQlJlcXVlc3QqIHJlcXVlc3QoKSB7IHJldHVybiBtX3JlcXVlc3QuZ2V0
KCk7IH0KIAotICAgIGJvb2wgc2V0R2V0UmVzdWx0KElEQlJlcXVlc3QmLCBjb25zdCBJREJHZXRS
ZXN1bHQmKTsKKyAgICBib29sIHNldEdldFJlc3VsdChJREJSZXF1ZXN0JiwgY29uc3QgSURCR2V0
UmVzdWx0JiwgdWludDY0X3Qgb3BlcmF0aW9uSUQpOwogCiAgICAgdmlydHVhbCBib29sIGlzS2V5
Q3Vyc29yV2l0aFZhbHVlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAorICAgIE9wdGlvbmFs
PElEQkdldFJlc3VsdD4gaXRlcmF0ZVdpdGhQcmVmZXRjaGVkUmVjb3Jkcyh1bnNpZ25lZCBjb3Vu
dCwgdWludDY0X3QgbGFzdFdyaXRlT3BlcmF0aW9uSUQpOworICAgIHZvaWQgY2xlYXJQcmVmZXRj
aGVkUmVjb3JkcygpOworCiBwcm90ZWN0ZWQ6CiAgICAgSURCQ3Vyc29yKElEQk9iamVjdFN0b3Jl
JiwgY29uc3QgSURCQ3Vyc29ySW5mbyYpOwogICAgIElEQkN1cnNvcihJREJJbmRleCYsIGNvbnN0
IElEQkN1cnNvckluZm8mKTsKQEAgLTExMyw2ICsxMTYsOSBAQCBwcml2YXRlOgogICAgIEpTVmFs
dWVJbldyYXBwZWRPYmplY3QgbV9rZXlXcmFwcGVyOwogICAgIEpTVmFsdWVJbldyYXBwZWRPYmpl
Y3QgbV9wcmltYXJ5S2V5V3JhcHBlcjsKICAgICBKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0IG1fdmFs
dWVXcmFwcGVyOworCisgICAgRGVxdWU8SURCQ3Vyc29yUmVjb3JkPiBtX3ByZWZldGNoZWRSZWNv
cmRzOworICAgIHVpbnQ2NF90IG1fcHJlZmV0Y2hPcGVyYXRpb25JRCB7IDAgfTsKIH07CiAKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCR2V0UmVzdWx0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkdldFJlc3VsdC5jcHAK
aW5kZXggOTQ5ZTgxMzM5N2YzMWJmMThlNjViYmM1NTgyMTJkMDg4MTZjMDZmZi4uMTJlYzg3MDcz
Mjk3MDFhNGNhMzUwMTJkZTUyYmZiMTI3MzUyOWI2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCR2V0UmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuY3BwCkBAIC01NSw2ICs1NSw3IEBAIHZv
aWQgSURCR2V0UmVzdWx0Ojppc29sYXRlZENvcHkoY29uc3QgSURCR2V0UmVzdWx0JiBzb3VyY2Us
IElEQkdldFJlc3VsdCYgZGVzdGluCiAgICAgZGVzdGluYXRpb24ubV9wcmltYXJ5S2V5RGF0YSA9
IHNvdXJjZS5tX3ByaW1hcnlLZXlEYXRhLmlzb2xhdGVkQ29weSgpOwogICAgIGRlc3RpbmF0aW9u
Lm1fa2V5UGF0aCA9IFdlYkNvcmU6Omlzb2xhdGVkQ29weShzb3VyY2UubV9rZXlQYXRoKTsKICAg
ICBkZXN0aW5hdGlvbi5tX2lzRGVmaW5lZCA9IHNvdXJjZS5tX2lzRGVmaW5lZDsKKyAgICBkZXN0
aW5hdGlvbi5tX3ByZWZldGNoZWRSZWNvcmRzID0gc291cmNlLm1fcHJlZmV0Y2hlZFJlY29yZHMu
aXNvbGF0ZWRDb3B5KCk7CiB9CiAKIHZvaWQgSURCR2V0UmVzdWx0OjpzZXRWYWx1ZShJREJWYWx1
ZSYmIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCR2V0UmVzdWx0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRS
ZXN1bHQuaAppbmRleCBlODdjMzkwMTIzMzQ5ZDExNTNkMWZjMDhjOWU2YjJiZjc0NTFiMjUzLi5k
MDNkODliYWMyNDgyY2Q4MzEyMzhhZjNkMjI5MGY1NmY5M2E5NjhmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuaApAQCAtMjcsNiArMjcsNyBA
QAogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKKyNpbmNsdWRlICJJREJDdXJzb3JS
ZWNvcmQuaCIKICNpbmNsdWRlICJJREJLZXkuaCIKICNpbmNsdWRlICJJREJLZXlEYXRhLmgiCiAj
aW5jbHVkZSAiSURCS2V5UGF0aC5oIgpAQCAtNzYsNiArNzcsMTUgQEAgcHVibGljOgogICAgIHsK
ICAgICB9CiAKKyAgICBJREJHZXRSZXN1bHQoY29uc3QgSURCS2V5RGF0YSYga2V5RGF0YSwgY29u
c3QgSURCS2V5RGF0YSYgcHJpbWFyeUtleURhdGEsIElEQlZhbHVlJiYgdmFsdWUsIGNvbnN0IE9w
dGlvbmFsPElEQktleVBhdGg+JiBrZXlQYXRoLCBWZWN0b3I8SURCQ3Vyc29yUmVjb3JkPiYmIHBy
ZWZldGVjaGVkUmVjb3JkcykKKyAgICAgICAgOiBtX3ZhbHVlKFdURk1vdmUodmFsdWUpKQorICAg
ICAgICAsIG1fa2V5RGF0YShrZXlEYXRhKQorICAgICAgICAsIG1fcHJpbWFyeUtleURhdGEocHJp
bWFyeUtleURhdGEpCisgICAgICAgICwgbV9rZXlQYXRoKGtleVBhdGgpCisgICAgICAgICwgbV9w
cmVmZXRjaGVkUmVjb3JkcyhXVEZNb3ZlKHByZWZldGVjaGVkUmVjb3JkcykpCisgICAgeworICAg
IH0KKwogICAgIGVudW0gSXNvbGF0ZWRDb3B5VGFnIHsgSXNvbGF0ZWRDb3B5IH07CiAgICAgSURC
R2V0UmVzdWx0KGNvbnN0IElEQkdldFJlc3VsdCYsIElzb2xhdGVkQ29weVRhZyk7CiAKQEAgLTg3
LDYgKzk3LDcgQEAgcHVibGljOgogICAgIGNvbnN0IElEQktleURhdGEmIGtleURhdGEoKSBjb25z
dCB7IHJldHVybiBtX2tleURhdGE7IH0KICAgICBjb25zdCBJREJLZXlEYXRhJiBwcmltYXJ5S2V5
RGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpbWFyeUtleURhdGE7IH0KICAgICBjb25zdCBPcHRp
b25hbDxJREJLZXlQYXRoPiYga2V5UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fa2V5UGF0aDsgfQor
ICAgIGNvbnN0IFZlY3RvcjxJREJDdXJzb3JSZWNvcmQ+JiBwcmVmZXRjaGVkUmVjb3JkcygpIGNv
bnN0IHsgcmV0dXJuIG1fcHJlZmV0Y2hlZFJlY29yZHM7IH0KICAgICBib29sIGlzRGVmaW5lZCgp
IGNvbnN0IHsgcmV0dXJuIG1faXNEZWZpbmVkOyB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CkBAIC0xMDEsMTMgKzExMiwxNCBAQCBw
cml2YXRlOgogICAgIElEQktleURhdGEgbV9rZXlEYXRhOwogICAgIElEQktleURhdGEgbV9wcmlt
YXJ5S2V5RGF0YTsKICAgICBPcHRpb25hbDxJREJLZXlQYXRoPiBtX2tleVBhdGg7CisgICAgVmVj
dG9yPElEQkN1cnNvclJlY29yZD4gbV9wcmVmZXRjaGVkUmVjb3JkczsKICAgICBib29sIG1faXNE
ZWZpbmVkIHsgdHJ1ZSB9OwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgSURC
R2V0UmVzdWx0OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVy
IDw8IG1fa2V5RGF0YSA8PCBtX3ByaW1hcnlLZXlEYXRhIDw8IG1fa2V5UGF0aCA8PCBtX2lzRGVm
aW5lZCA8PCBtX3ZhbHVlOworICAgIGVuY29kZXIgPDwgbV9rZXlEYXRhIDw8IG1fcHJpbWFyeUtl
eURhdGEgPDwgbV9rZXlQYXRoIDw8IG1faXNEZWZpbmVkIDw8IG1fdmFsdWUgPDwgbV9wcmVmZXRj
aGVkUmVjb3JkczsKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KQEAgLTEzNyw2ICsxNDks
MTIgQEAgYm9vbCBJREJHZXRSZXN1bHQ6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBJREJHZXRS
ZXN1bHQmIHJlc3VsdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJlc3VsdC5tX3ZhbHVl
ID0gV1RGTW92ZSgqdmFsdWUpOwogCisgICAgT3B0aW9uYWw8VmVjdG9yPElEQkN1cnNvclJlY29y
ZD4+IHByZWZldGNoZWRSZWNvcmRzOworICAgIGRlY29kZXIgPj4gcHJlZmV0Y2hlZFJlY29yZHM7
CisgICAgaWYgKCFwcmVmZXRjaGVkUmVjb3JkcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IHJlc3VsdC5tX3ByZWZldGNoZWRSZWNvcmRzID0gV1RGTW92ZSgqcHJlZmV0Y2hlZFJlY29yZHMp
OworCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCUmVxdWVzdC5jcHAKaW5kZXggMzBmNmU1Y2RmNGQ5ZmRiYzYxY2UzYTIwM2M0
YWQwNjNiZDhjNTJiMy4uM2QwMjExOWM3YTUxZTFlMWZjYTBlYTJlZDRjOWQyNWU4NzVlMDI0OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAK
QEAgLTQ5OSw3ICs0OTksNyBAQCB2b2lkIElEQlJlcXVlc3Q6OmRpZE9wZW5Pckl0ZXJhdGVDdXJz
b3IoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKICAgICBtX3Jlc3VsdFdyYXBwZXIg
PSB7IH07CiAKICAgICBpZiAocmVzdWx0RGF0YS50eXBlKCkgPT0gSURCUmVzdWx0VHlwZTo6SXRl
cmF0ZUN1cnNvclN1Y2Nlc3MgfHwgcmVzdWx0RGF0YS50eXBlKCkgPT0gSURCUmVzdWx0VHlwZTo6
T3BlbkN1cnNvclN1Y2Nlc3MpIHsKLSAgICAgICAgaWYgKG1fcGVuZGluZ0N1cnNvci0+c2V0R2V0
UmVzdWx0KCp0aGlzLCByZXN1bHREYXRhLmdldFJlc3VsdCgpKSAmJiBtX2N1cnNvcldyYXBwZXIp
CisgICAgICAgIGlmIChtX3BlbmRpbmdDdXJzb3ItPnNldEdldFJlc3VsdCgqdGhpcywgcmVzdWx0
RGF0YS5nZXRSZXN1bHQoKSwgbV9jdXJyZW50VHJhbnNhY3Rpb25PcGVyYXRpb25JRCkgJiYgbV9j
dXJzb3JXcmFwcGVyKQogICAgICAgICAgICAgbV9yZXN1bHRXcmFwcGVyID0gbV9jdXJzb3JXcmFw
cGVyOwogICAgICAgICBpZiAocmVzdWx0RGF0YS5nZXRSZXN1bHQoKS5pc0RlZmluZWQoKSkKICAg
ICAgICAgICAgIG1fcmVzdWx0ID0gbV9wZW5kaW5nQ3Vyc29yOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oCmluZGV4IDI3ODUwMWJhNjBlOWRlMDMwMjgx
ZDhjYjJmMTEwNjc4YjBjOWI4YjMuLjI4NjYxMzQ0YjBkZTIxNzZmNWJlYWMzNjEzMTU0MGYxMjU2
ZmRkZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJl
cXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0
LmgKQEAgLTExOCw3ICsxMTgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aWxsSXRlcmF0ZUN1cnNv
cihJREJDdXJzb3ImKTsKICAgICB2b2lkIGRpZE9wZW5Pckl0ZXJhdGVDdXJzb3IoY29uc3QgSURC
UmVzdWx0RGF0YSYpOwogCi0gICAgY29uc3QgSURCQ3Vyc29yKiBwZW5kaW5nQ3Vyc29yKCkgY29u
c3QgeyByZXR1cm4gbV9wZW5kaW5nQ3Vyc29yLmdldCgpOyB9CisgICAgSURCQ3Vyc29yKiBwZW5k
aW5nQ3Vyc29yKCkgY29uc3QgeyByZXR1cm4gbV9wZW5kaW5nQ3Vyc29yID8gbV9wZW5kaW5nQ3Vy
c29yLmdldCgpIDogbnVsbHB0cjsgfQogCiAgICAgdm9pZCBzZXRTb3VyY2UoSURCQ3Vyc29yJik7
CiAgICAgdm9pZCBzZXRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24oSURCVHJhbnNhY3Rpb24mKTsK
QEAgLTEyNyw2ICsxMjcsOCBAQCBwdWJsaWM6CiAKICAgICBib29sIGhhc1BlbmRpbmdBY3Rpdml0
eSgpIGNvbnN0IGZpbmFsOwogCisgICAgdm9pZCBzZXRUcmFuc2FjdGlvbk9wZXJhdGlvbklEKHVp
bnQ2NF90IHRyYW5zYWN0aW9uT3BlcmF0aW9uSUQpIHsgbV9jdXJyZW50VHJhbnNhY3Rpb25PcGVy
YXRpb25JRCA9IHRyYW5zYWN0aW9uT3BlcmF0aW9uSUQ7IH0KKwogcHJvdGVjdGVkOgogICAgIElE
QlJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIElEQkNsaWVudDo6SURCQ29ubmVjdGlv
blByb3h5Jik7CiAKQEAgLTE5MSw2ICsxOTMsOCBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX2Rp
c3BhdGNoaW5nRXZlbnQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXNVbmNhdWdodEV4Y2VwdGlv
biB7IGZhbHNlIH07CisKKyAgICB1aW50NjRfdCBtX2N1cnJlbnRUcmFuc2FjdGlvbk9wZXJhdGlv
bklEIHsgMCB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCmluZGV4IDQ3ZjJj
YjBlNWZmNjNjODQ5YTk5MmNkOGRmN2M3YWQyOWQzMDE3MmQuLjhkZGYyMDc5YWY5NTQwMmIwYTQz
NDBjYzI3OWU5NGI5NzUxZmEzMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKQEAgLTI3MiwxNSArMjcyLDcgQEAgdm9pZCBJ
REJUcmFuc2FjdGlvbjo6YWJvcnRJblByb2dyZXNzT3BlcmF0aW9ucyhjb25zdCBJREJFcnJvciYg
ZXJyb3IpCiAgICAgICAgIG9wZXJhdGlvbi0+ZG9Db21wbGV0ZShJREJSZXN1bHREYXRhOjplcnJv
cihvcGVyYXRpb24tPmlkZW50aWZpZXIoKSwgZXJyb3IpKTsKICAgICB9CiAKLSAgICBWZWN0b3I8
UmVmUHRyPElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24+PiBjb21wbGV0ZWRPblNlcnZl
ckFib3J0VmVjdG9yOwotICAgIGNvbXBsZXRlZE9uU2VydmVyQWJvcnRWZWN0b3IucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShtX2NvbXBsZXRlZE9uU2VydmVyUXVldWUuc2l6ZSgpKTsKLSAgICB3aGls
ZSAoIW1fY29tcGxldGVkT25TZXJ2ZXJRdWV1ZS5pc0VtcHR5KCkpCi0gICAgICAgIGNvbXBsZXRl
ZE9uU2VydmVyQWJvcnRWZWN0b3IudW5jaGVja2VkQXBwZW5kKG1fY29tcGxldGVkT25TZXJ2ZXJR
dWV1ZS50YWtlRmlyc3QoKS5maXJzdCk7Ci0KLSAgICBmb3IgKGF1dG8mIG9wZXJhdGlvbiA6IGNv
bXBsZXRlZE9uU2VydmVyQWJvcnRWZWN0b3IpIHsKLSAgICAgICAgbV9jdXJyZW50bHlDb21wbGV0
aW5nUmVxdWVzdCA9IG51bGxwdHI7Ci0gICAgICAgIG9wZXJhdGlvbi0+ZG9Db21wbGV0ZShJREJS
ZXN1bHREYXRhOjplcnJvcihvcGVyYXRpb24tPmlkZW50aWZpZXIoKSwgZXJyb3IpKTsKLSAgICB9
CisgICAgbV90cmFuc2FjdGlvbk9wZXJhdGlvblJlc3VsdE1hcC5jbGVhcigpOwogCiAgICAgbV9j
dXJyZW50bHlDb21wbGV0aW5nUmVxdWVzdCA9IG51bGxwdHI7CiAgICAgY29ubmVjdGlvblByb3h5
KCkuZm9yZ2V0QWN0aXZlT3BlcmF0aW9ucyhpblByb2dyZXNzQWJvcnRWZWN0b3IpOwpAQCAtMzc2
LDE2ICszNjgsMjIgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6YWRkUmVxdWVzdChJREJSZXF1ZXN0
JiByZXF1ZXN0KQogdm9pZCBJREJUcmFuc2FjdGlvbjo6cmVtb3ZlUmVxdWVzdChJREJSZXF1ZXN0
JiByZXF1ZXN0KQogewogICAgIEFTU0VSVChjYW5DdXJyZW50VGhyZWFkQWNjZXNzVGhyZWFkTG9j
YWxEYXRhKG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKSk7CisgICAgaWYgKG1fY3VycmVudGx5
Q29tcGxldGluZ1JlcXVlc3QgPT0gJnJlcXVlc3QpCisgICAgICAgIHJldHVybjsKKwogICAgIG1f
b3BlblJlcXVlc3RzLnJlbW92ZSgmcmVxdWVzdCk7CiAKICAgICBhdXRvQ29tbWl0KCk7CiB9CiAK
LXZvaWQgSURCVHJhbnNhY3Rpb246OnNjaGVkdWxlT3BlcmF0aW9uKFJlZjxJREJDbGllbnQ6OlRy
YW5zYWN0aW9uT3BlcmF0aW9uPiYmIG9wZXJhdGlvbikKK3ZvaWQgSURCVHJhbnNhY3Rpb246OnNj
aGVkdWxlT3BlcmF0aW9uKFJlZjxJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uPiYmIG9w
ZXJhdGlvbiwgSXNXcml0ZU9wZXJhdGlvbiBpc1dyaXRlT3BlcmF0aW9uKQogewogICAgIEFTU0VS
VCghbV90cmFuc2FjdGlvbk9wZXJhdGlvbk1hcC5jb250YWlucyhvcGVyYXRpb24tPmlkZW50aWZp
ZXIoKSkpOwogICAgIEFTU0VSVChjYW5DdXJyZW50VGhyZWFkQWNjZXNzVGhyZWFkTG9jYWxEYXRh
KG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKSk7CiAKKyAgICBpZiAoaXNXcml0ZU9wZXJhdGlv
biA9PSBJc1dyaXRlT3BlcmF0aW9uOjpZZXMpCisgICAgICAgIG1fbGFzdFdyaXRlT3BlcmF0aW9u
SUQgPSBvcGVyYXRpb24tPm9wZXJhdGlvbklEKCk7CisKICAgICBhdXRvIGlkZW50aWZpZXIgPSBv
cGVyYXRpb24tPmlkZW50aWZpZXIoKTsKICAgICBtX3BlbmRpbmdUcmFuc2FjdGlvbk9wZXJhdGlv
blF1ZXVlLmFwcGVuZChvcGVyYXRpb24uY29weVJlZigpKTsKICAgICBtX3RyYW5zYWN0aW9uT3Bl
cmF0aW9uTWFwLnNldChpZGVudGlmaWVyLCBXVEZNb3ZlKG9wZXJhdGlvbikpOwpAQCAtMzk4LDcg
KzM5NiwxMCBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpvcGVyYXRpb25Db21wbGV0ZWRPblNlcnZl
cihjb25zdCBJREJSZXN1bHREYXRhJiBkYXRhLCBJREJDbAogICAgIEFTU0VSVChjYW5DdXJyZW50
VGhyZWFkQWNjZXNzVGhyZWFkTG9jYWxEYXRhKG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKSk7
CiAgICAgQVNTRVJUKGNhbkN1cnJlbnRUaHJlYWRBY2Nlc3NUaHJlYWRMb2NhbERhdGEob3BlcmF0
aW9uLm9yaWdpblRocmVhZCgpKSk7CiAKLSAgICBtX2NvbXBsZXRlZE9uU2VydmVyUXVldWUuYXBw
ZW5kKHsgJm9wZXJhdGlvbiwgZGF0YSB9KTsKKyAgICBpZiAoIW1fdHJhbnNhY3Rpb25PcGVyYXRp
b25NYXAuY29udGFpbnMob3BlcmF0aW9uLmlkZW50aWZpZXIoKSkpCisgICAgICAgIHJldHVybjsK
KworICAgIG1fdHJhbnNhY3Rpb25PcGVyYXRpb25SZXN1bHRNYXAuc2V0KCZvcGVyYXRpb24sIElE
QlJlc3VsdERhdGEoZGF0YSkpOwogCiAgICAgaWYgKCFtX2N1cnJlbnRseUNvbXBsZXRpbmdSZXF1
ZXN0KQogICAgICAgICBoYW5kbGVPcGVyYXRpb25zQ29tcGxldGVkT25TZXJ2ZXIoKTsKQEAgLTQw
NiwxMiArNDA3LDE1IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246Om9wZXJhdGlvbkNvbXBsZXRlZE9u
U2VydmVyKGNvbnN0IElEQlJlc3VsdERhdGEmIGRhdGEsIElEQkNsCiAKIHZvaWQgSURCVHJhbnNh
Y3Rpb246OmhhbmRsZU9wZXJhdGlvbnNDb21wbGV0ZWRPblNlcnZlcigpCiB7Ci0gICAgTE9HKElu
ZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpjb21wbGV0ZWRPcGVyYXRpb25UaW1lckZpcmVkICgl
cCkiLCB0aGlzKTsKKyAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OmhhbmRsZU9w
ZXJhdGlvbnNDb21wbGV0ZWRPblNlcnZlciIpOwogICAgIEFTU0VSVChjYW5DdXJyZW50VGhyZWFk
QWNjZXNzVGhyZWFkTG9jYWxEYXRhKG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKSk7CiAKLSAg
ICB3aGlsZSAoIW1fY29tcGxldGVkT25TZXJ2ZXJRdWV1ZS5pc0VtcHR5KCkgJiYgIW1fY3VycmVu
dGx5Q29tcGxldGluZ1JlcXVlc3QpIHsKLSAgICAgICAgYXV0byBpdGVyYXRvciA9IG1fY29tcGxl
dGVkT25TZXJ2ZXJRdWV1ZS50YWtlRmlyc3QoKTsKLSAgICAgICAgaXRlcmF0b3IuZmlyc3QtPmRv
Q29tcGxldGUoaXRlcmF0b3Iuc2Vjb25kKTsKKyAgICB3aGlsZSAoIW1fdHJhbnNhY3Rpb25PcGVy
YXRpb25zSW5Qcm9ncmVzc1F1ZXVlLmlzRW1wdHkoKSAmJiAhbV9jdXJyZW50bHlDb21wbGV0aW5n
UmVxdWVzdCkgeworICAgICAgICBSZWZQdHI8SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlv
bj4gY3VycmVudE9wZXJhdGlvbiA9IG1fdHJhbnNhY3Rpb25PcGVyYXRpb25zSW5Qcm9ncmVzc1F1
ZXVlLmZpcnN0KCk7CisgICAgICAgIGlmICghbV90cmFuc2FjdGlvbk9wZXJhdGlvblJlc3VsdE1h
cC5jb250YWlucyhjdXJyZW50T3BlcmF0aW9uKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBjdXJyZW50T3BlcmF0aW9uLT5kb0NvbXBsZXRlKG1fdHJhbnNhY3Rpb25PcGVyYXRpb25S
ZXN1bHRNYXAudGFrZShjdXJyZW50T3BlcmF0aW9uKSk7CiAgICAgfQogfQogCkBAIC02MjIsNyAr
NjI2LDcgQEAgUmVmPElEQk9iamVjdFN0b3JlPiBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlT2JqZWN0
U3RvcmUoY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJgogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5k
aWRDcmVhdGVPYmplY3RTdG9yZU9uU2VydmVyKHJlc3VsdCk7CiAgICAgfSwgW3Byb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgaW5mbyA9IGluZm8uaXNvbGF0ZWRDb3B5KCldIChhdXRvJiBv
cGVyYXRpb24pIHsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+Y3JlYXRlT2JqZWN0U3RvcmVPblNl
cnZlcihvcGVyYXRpb24sIGluZm8pOwotICAgIH0pKTsKKyAgICB9KSwgSXNXcml0ZU9wZXJhdGlv
bjo6WWVzKTsKIAogICAgIHJldHVybiAqcmF3T2JqZWN0U3RvcmU7CiB9CkBAIC02NjQsNyArNjY4
LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6cmVuYW1lT2JqZWN0U3RvcmUoSURCT2JqZWN0U3Rv
cmUmIG9iamVjdFN0b3JlLCBjb25zdCBTdHJpbmcKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGlk
UmVuYW1lT2JqZWN0U3RvcmVPblNlcnZlcihyZXN1bHQpOwogICAgIH0sIFtwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIG9iamVjdFN0b3JlSWRlbnRpZmllciwgbmV3TmFtZSA9IG5ld05h
bWUuaXNvbGF0ZWRDb3B5KCldIChhdXRvJiBvcGVyYXRpb24pIHsKICAgICAgICAgcHJvdGVjdGVk
VGhpcy0+cmVuYW1lT2JqZWN0U3RvcmVPblNlcnZlcihvcGVyYXRpb24sIG9iamVjdFN0b3JlSWRl
bnRpZmllciwgbmV3TmFtZSk7Ci0gICAgfSkpOworICAgIH0pLCBJc1dyaXRlT3BlcmF0aW9uOjpZ
ZXMpOwogCiAgICAgbV9yZWZlcmVuY2VkT2JqZWN0U3RvcmVzLnNldChuZXdOYW1lLCBtX3JlZmVy
ZW5jZWRPYmplY3RTdG9yZXMudGFrZShvYmplY3RTdG9yZS5pbmZvKCkubmFtZSgpKSk7CiB9CkBA
IC02OTksNyArNzAzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPElEQkluZGV4PiBJREJUcmFuc2FjdGlv
bjo6Y3JlYXRlSW5kZXgoSURCT2JqZWN0U3RvcmUmIG9iamVjdFN0b3IKICAgICAgICAgcHJvdGVj
dGVkVGhpcy0+ZGlkQ3JlYXRlSW5kZXhPblNlcnZlcihyZXN1bHQpOwogICAgIH0sIFtwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGluZm8gPSBpbmZvLmlzb2xhdGVkQ29weSgpXSAoYXV0
byYgb3BlcmF0aW9uKSB7CiAgICAgICAgIHByb3RlY3RlZFRoaXMtPmNyZWF0ZUluZGV4T25TZXJ2
ZXIob3BlcmF0aW9uLCBpbmZvKTsKLSAgICB9KSk7CisgICAgfSksIElzV3JpdGVPcGVyYXRpb246
Olllcyk7CiAKICAgICByZXR1cm4gbWFrZVVuaXF1ZTxJREJJbmRleD4oKnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSwgaW5mbywgb2JqZWN0U3RvcmUpOwogfQpAQCAtNzUzLDcgKzc1Nyw3IEBAIHZv
aWQgSURCVHJhbnNhY3Rpb246OnJlbmFtZUluZGV4KElEQkluZGV4JiBpbmRleCwgY29uc3QgU3Ry
aW5nJiBuZXdOYW1lKQogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kaWRSZW5hbWVJbmRleE9uU2Vy
dmVyKHJlc3VsdCk7CiAgICAgfSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgb2Jq
ZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleElkZW50aWZpZXIsIG5ld05hbWUgPSBuZXdOYW1lLmlz
b2xhdGVkQ29weSgpXSAoYXV0byYgb3BlcmF0aW9uKSB7CiAgICAgICAgIHByb3RlY3RlZFRoaXMt
PnJlbmFtZUluZGV4T25TZXJ2ZXIob3BlcmF0aW9uLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGlu
ZGV4SWRlbnRpZmllciwgbmV3TmFtZSk7Ci0gICAgfSkpOworICAgIH0pLCBJc1dyaXRlT3BlcmF0
aW9uOjpZZXMpOwogfQogCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpyZW5hbWVJbmRleE9uU2VydmVy
KElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbiwgY29uc3QgdWludDY0
X3QmIG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgdWludDY0X3QmIGluZGV4SWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lKQpAQCAtODUyLDcgKzg1NiwyMyBAQCB2b2lkIElEQlRy
YW5zYWN0aW9uOjppdGVyYXRlQ3Vyc29yT25TZXJ2ZXIoSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9w
ZXJhdGlvbiYgb3BlcgogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6aXRl
cmF0ZUN1cnNvck9uU2VydmVyIik7CiAgICAgQVNTRVJUKGNhbkN1cnJlbnRUaHJlYWRBY2Nlc3NU
aHJlYWRMb2NhbERhdGEobV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpKTsKKyAgICBBU1NFUlQo
b3BlcmF0aW9uLmlkYlJlcXVlc3QoKSk7CiAKKyAgICBhdXRvKiBjdXJzb3IgPSBvcGVyYXRpb24u
aWRiUmVxdWVzdCgpLT5wZW5kaW5nQ3Vyc29yKCk7CisgICAgQVNTRVJUKGN1cnNvcik7CisKKyAg
ICBpZiAoZGF0YS5rZXlEYXRhLmlzTnVsbCgpICYmIGRhdGEucHJpbWFyeUtleURhdGEuaXNOdWxs
KCkpIHsKKyAgICAgICAgaWYgKGF1dG8gZ2V0UmVzdWx0ID0gY3Vyc29yLT5pdGVyYXRlV2l0aFBy
ZWZldGNoZWRSZWNvcmRzKGRhdGEuY291bnQsIG1fbGFzdFdyaXRlT3BlcmF0aW9uSUQpKSB7Cisg
ICAgICAgICAgICBhdXRvIHJlc3VsdCA9IElEQlJlc3VsdERhdGE6Oml0ZXJhdGVDdXJzb3JTdWNj
ZXNzKG9wZXJhdGlvbi5pZGVudGlmaWVyKCksIGdldFJlc3VsdC52YWx1ZSgpKTsKKyAgICAgICAg
ICAgIG1fZGF0YWJhc2UtPmNvbm5lY3Rpb25Qcm94eSgpLml0ZXJhdGVDdXJzb3Iob3BlcmF0aW9u
LCB7IGRhdGEua2V5RGF0YSwgZGF0YS5wcmltYXJ5S2V5RGF0YSwgZGF0YS5jb3VudCwgSW5kZXhl
ZERCOjpDdXJzb3JJdGVyYXRlT3B0aW9uOjpEb05vdFJlcGx5IH0pOworICAgICAgICAgICAgb3Bl
cmF0aW9uQ29tcGxldGVkT25TZXJ2ZXIocmVzdWx0LCBvcGVyYXRpb24pOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgY3Vyc29yLT5jbGVhclByZWZldGNoZWRS
ZWNvcmRzKCk7CisKKyAgICBBU1NFUlQoZGF0YS5vcHRpb24gPT0gSW5kZXhlZERCOjpDdXJzb3JJ
dGVyYXRlT3B0aW9uOjpSZXBseSk7CiAgICAgbV9kYXRhYmFzZS0+Y29ubmVjdGlvblByb3h5KCku
aXRlcmF0ZUN1cnNvcihvcGVyYXRpb24sIGRhdGEpOwogfQogCkBAIC0xMTI2LDcgKzExNDYsNyBA
QCBSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3REZWxldGVSZWNvcmQoSlNH
bG9iYWxPYmplY3QmIHN0YXRlLCBJREJPYgogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kaWREZWxl
dGVSZWNvcmRPblNlcnZlcihyZXF1ZXN0LmdldCgpLCByZXN1bHQpOwogICAgIH0sIFtwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJhbmdlID0gcmFuZ2UuaXNvbGF0ZWRDb3B5KCldIChh
dXRvJiBvcGVyYXRpb24pIHsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGVsZXRlUmVjb3JkT25T
ZXJ2ZXIob3BlcmF0aW9uLCByYW5nZSk7Ci0gICAgfSkpOworICAgIH0pLCBJc1dyaXRlT3BlcmF0
aW9uOjpZZXMpOwogICAgIHJldHVybiByZXF1ZXN0OwogfQogCkBAIC0xMTY1LDcgKzExODUsNyBA
QCBSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RDbGVhck9iamVjdFN0b3Jl
KEpTR2xvYmFsT2JqZWN0JiBzdGF0ZSwgSQogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kaWRDbGVh
ck9iamVjdFN0b3JlT25TZXJ2ZXIocmVxdWVzdC5nZXQoKSwgcmVzdWx0KTsKICAgICB9LCBbcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBvYmplY3RTdG9yZUlkZW50aWZpZXJdIChhdXRv
JiBvcGVyYXRpb24pIHsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+Y2xlYXJPYmplY3RTdG9yZU9u
U2VydmVyKG9wZXJhdGlvbiwgb2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKLSAgICB9KSk7CisgICAg
fSksIElzV3JpdGVPcGVyYXRpb246Olllcyk7CiAKICAgICByZXR1cm4gcmVxdWVzdDsKIH0KQEAg
LTEyMDUsNyArMTIyNSw3IEBAIFJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVz
dFB1dE9yQWRkKEpTR2xvYmFsT2JqZWN0JiBzdGF0ZSwgSURCT2JqZWN0CiAgICAgICAgIHByb3Rl
Y3RlZFRoaXMtPmRpZFB1dE9yQWRkT25TZXJ2ZXIocmVxdWVzdC5nZXQoKSwgcmVzdWx0KTsKICAg
ICB9LCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBrZXksIHZhbHVlID0gbWFrZVJl
Zih2YWx1ZSksIG92ZXJ3cml0ZU1vZGVdIChhdXRvJiBvcGVyYXRpb24pIHsKICAgICAgICAgcHJv
dGVjdGVkVGhpcy0+cHV0T3JBZGRPblNlcnZlcihvcGVyYXRpb24sIGtleS5nZXQoKSwgdmFsdWUu
cHRyKCksIG92ZXJ3cml0ZU1vZGUpOwotICAgIH0pKTsKKyAgICB9KSwgSXNXcml0ZU9wZXJhdGlv
bjo6WWVzKTsKIAogICAgIHJldHVybiByZXF1ZXN0OwogfQpAQCAtMTI5Myw3ICsxMzEzLDcgQEAg
dm9pZCBJREJUcmFuc2FjdGlvbjo6ZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBvYmpl
Y3RTdG9yZU5hbWUpCiAgICAgICAgIHByb3RlY3RlZFRoaXMtPmRpZERlbGV0ZU9iamVjdFN0b3Jl
T25TZXJ2ZXIocmVzdWx0KTsKICAgICB9LCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBvYmplY3RTdG9yZU5hbWUgPSBvYmplY3RTdG9yZU5hbWUuaXNvbGF0ZWRDb3B5KCldIChhdXRv
JiBvcGVyYXRpb24pIHsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGVsZXRlT2JqZWN0U3RvcmVP
blNlcnZlcihvcGVyYXRpb24sIG9iamVjdFN0b3JlTmFtZSk7Ci0gICAgfSkpOworICAgIH0pLCBJ
c1dyaXRlT3BlcmF0aW9uOjpZZXMpOwogfQogCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpkZWxldGVP
YmplY3RTdG9yZU9uU2VydmVyKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJh
dGlvbiwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUpCkBAIC0xMzIzLDcgKzEzNDMsNyBA
QCB2b2lkIElEQlRyYW5zYWN0aW9uOjpkZWxldGVJbmRleCh1aW50NjRfdCBvYmplY3RTdG9yZUlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaQogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kaWREZWxl
dGVJbmRleE9uU2VydmVyKHJlc3VsdCk7CiAgICAgfSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleE5hbWUgPSBpbmRleE5hbWUuaXNv
bGF0ZWRDb3B5KCldIChhdXRvJiBvcGVyYXRpb24pIHsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+
ZGVsZXRlSW5kZXhPblNlcnZlcihvcGVyYXRpb24sIG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5k
ZXhOYW1lKTsKLSAgICB9KSk7CisgICAgfSksIElzV3JpdGVPcGVyYXRpb246Olllcyk7CiB9CiAK
IHZvaWQgSURCVHJhbnNhY3Rpb246OmRlbGV0ZUluZGV4T25TZXJ2ZXIoSURCQ2xpZW50OjpUcmFu
c2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uLCBjb25zdCB1aW50NjRfdCYgb2JqZWN0U3RvcmVJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGluZGV4TmFtZSkKQEAgLTE0NzQsNiArMTQ5NCwxMiBA
QCB2b2lkIElEQlRyYW5zYWN0aW9uOjphdXRvQ29tbWl0KCkKICAgICBjb21taXQoKTsKIH0KIAor
dWludDY0X3QgSURCVHJhbnNhY3Rpb246OmdlbmVyYXRlT3BlcmF0aW9uSUQoKQoreworICAgIHN0
YXRpYyBzdGQ6OmF0b21pYzx1aW50NjRfdD4gY3VycmVudE9wZXJhdGlvbklEKDEpOworICAgIHJl
dHVybiBjdXJyZW50T3BlcmF0aW9uSUQgKz0gMTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaAppbmRleCAzNThiMDFiYzAx
NGFhNjE0NDhhMzE2NTY1NjdlY2EyYTM1ZDJhMzI2Li5kNDE3NzNjY2M1ZDY1ZjgzNDUwODFiY2Q1
N2E4ZjlkYWQ2YzM0OTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJUcmFuc2FjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQlRyYW5zYWN0aW9uLmgKQEAgLTcxLDYgKzcxLDggQEAgcHVibGljOgogICAgIHN0YXRp
YyBSZWY8SURCVHJhbnNhY3Rpb24+IGNyZWF0ZShJREJEYXRhYmFzZSYsIGNvbnN0IElEQlRyYW5z
YWN0aW9uSW5mbyYpOwogICAgIHN0YXRpYyBSZWY8SURCVHJhbnNhY3Rpb24+IGNyZWF0ZShJREJE
YXRhYmFzZSYsIGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYsIElEQk9wZW5EQlJlcXVlc3QmKTsK
IAorICAgIHN0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZU9wZXJhdGlvbklEKCk7CisKICAgICBXRUJD
T1JFX0VYUE9SVCB+SURCVHJhbnNhY3Rpb24oKSBmaW5hbDsKIAogICAgIC8vIElEQlRyYW5zYWN0
aW9uIElETApAQCAtMTY1LDcgKzE2Nyw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBmaW5pc2hBYm9y
dE9yQ29tbWl0KCk7CiAgICAgdm9pZCBhYm9ydEluUHJvZ3Jlc3NPcGVyYXRpb25zKGNvbnN0IElE
QkVycm9yJik7CiAKLSAgICB2b2lkIHNjaGVkdWxlT3BlcmF0aW9uKFJlZjxJREJDbGllbnQ6OlRy
YW5zYWN0aW9uT3BlcmF0aW9uPiYmKTsKKyAgICBlbnVtIGNsYXNzIElzV3JpdGVPcGVyYXRpb24g
OiBib29sIHsgTm8sIFllcyB9OworICAgIHZvaWQgc2NoZWR1bGVPcGVyYXRpb24oUmVmPElEQkNs
aWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24+JiYsIElzV3JpdGVPcGVyYXRpb24gPSBJc1dyaXRl
T3BlcmF0aW9uOjpObyk7CiAgICAgdm9pZCBoYW5kbGVPcGVyYXRpb25zQ29tcGxldGVkT25TZXJ2
ZXIoKTsKICAgICB2b2lkIGhhbmRsZVBlbmRpbmdPcGVyYXRpb25zKCk7CiAgICAgdm9pZCBhdXRv
Q29tbWl0KCk7CkBAIC0yNDQsOCArMjQ3LDggQEAgcHJpdmF0ZToKIAogICAgIERlcXVlPFJlZlB0
cjxJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uPj4gbV9wZW5kaW5nVHJhbnNhY3Rpb25P
cGVyYXRpb25RdWV1ZTsKICAgICBEZXF1ZTxJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9u
Kj4gbV90cmFuc2FjdGlvbk9wZXJhdGlvbnNJblByb2dyZXNzUXVldWU7Ci0gICAgRGVxdWU8c3Rk
OjpwYWlyPFJlZlB0cjxJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uPiwgSURCUmVzdWx0
RGF0YT4+IG1fY29tcGxldGVkT25TZXJ2ZXJRdWV1ZTsKICAgICBEZXF1ZTxSZWZQdHI8SURCQ2xp
ZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbj4+IG1fYWJvcnRRdWV1ZTsKKyAgICBIYXNoTWFwPFJl
ZlB0cjxJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uPiwgSURCUmVzdWx0RGF0YT4gbV90
cmFuc2FjdGlvbk9wZXJhdGlvblJlc3VsdE1hcDsKIAogICAgIEhhc2hNYXA8SURCUmVzb3VyY2VJ
ZGVudGlmaWVyLCBSZWZQdHI8SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbj4+IG1fdHJh
bnNhY3Rpb25PcGVyYXRpb25NYXA7CiAKQEAgLTI1OCw2ICsyNjEsOCBAQCBwcml2YXRlOgogCiAg
ICAgYm9vbCBtX2NvbnRleHRTdG9wcGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1fZGlkRGlzcGF0
Y2hBYm9ydE9yQ29tbWl0IHsgZmFsc2UgfTsKKworICAgIHVpbnQ2NF90IG1fbGFzdFdyaXRlT3Bl
cmF0aW9uSUQgeyAwIH07CiB9OwogCiBjbGFzcyBUcmFuc2FjdGlvbkFjdGl2YXRvciB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JbmRleGVkREIuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0luZGV4ZWREQi5oCmluZGV4IDUwOWJiZjI3
OGIzZjlmMzc1N2Y2ZjFiNTA0MGVjNzZkNWQyYzlhMDAuLmJmMzA4YWRhOTZhMmIwNjA5OGQzNmQy
YWM3MTBlZDViYzYzMjc3ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0luZGV4ZWREQi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0luZGV4ZWREQi5oCkBAIC0xMDYsNiArMTA2LDExIEBAIGVudW0gY2xhc3MgR2V0QWxsVHlwZSB7
CiAKIGVudW0gY2xhc3MgQ29ubmVjdGlvbkNsb3NlZE9uQmVoYWxmT2ZTZXJ2ZXIgOiBib29sIHsg
Tm8sIFllcyB9OwogCitlbnVtIGNsYXNzIEN1cnNvckl0ZXJhdGVPcHRpb24geworICAgIERvTm90
UmVwbHksCisgICAgUmVwbHksCit9OworCiB9IC8vIG5hbWVzcGFjZSBJbmRleGVkREIKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblByb3h5LmNwcAppbmRleCA0ZWM0
NDdlMjZmMTFkZmE2MmJmMDgzNjhiZjE0Zjg1YTgyZWNmNTExLi45NTZkZmFlNjQ1MTc0OThkZTM4
ZTU0ODMxYjU5MWI0ZjYzNTVjOTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblByb3h5LmNwcApAQCAt
MjM4LDcgKzIzOCw4IEBAIHZvaWQgSURCQ29ubmVjdGlvblByb3h5OjpvcGVuQ3Vyc29yKFRyYW5z
YWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24sIGNvbnN0IElEQkN1CiB2b2lkIElEQkNvbm5lY3Rp
b25Qcm94eTo6aXRlcmF0ZUN1cnNvcihUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uLCBj
b25zdCBJREJJdGVyYXRlQ3Vyc29yRGF0YSYgZGF0YSkKIHsKICAgICBjb25zdCBJREJSZXF1ZXN0
RGF0YSByZXF1ZXN0RGF0YSB7IG9wZXJhdGlvbiB9OwotICAgIHNhdmVPcGVyYXRpb24ob3BlcmF0
aW9uKTsKKyAgICBpZiAoZGF0YS5vcHRpb24gIT0gSW5kZXhlZERCOjpDdXJzb3JJdGVyYXRlT3B0
aW9uOjpEb05vdFJlcGx5KQorICAgICAgICBzYXZlT3BlcmF0aW9uKG9wZXJhdGlvbik7CiAKICAg
ICBjYWxsQ29ubmVjdGlvbk9uTWFpblRocmVhZCgmSURCQ29ubmVjdGlvblRvU2VydmVyOjppdGVy
YXRlQ3Vyc29yLCByZXF1ZXN0RGF0YSwgZGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0
aW9uLmNwcAppbmRleCA4ZTFkZTA2ZDcxZThmMGIyMjNkNjg2ZTVlMWE4YTIyMDliNzQzODQzLi5h
YTU5MDZmNDc1ZTVlZTBhYWNkZjExZjE3ZDNlYTY4ZTI4YjUxNTI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2Fj
dGlvbk9wZXJhdGlvbi5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAgVHJhbnNhY3Rpb25PcGVyYXRpb246
OlRyYW5zYWN0aW9uT3BlcmF0aW9uKElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgSURCUmVx
dWUKICAgICBpZiAoYXV0byogY3Vyc29yID0gcmVxdWVzdC5wZW5kaW5nQ3Vyc29yKCkpCiAgICAg
ICAgIG1fY3Vyc29ySWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVy
PihjdXJzb3ItPmluZm8oKS5pZGVudGlmaWVyKCkpOwogCisgICAgcmVxdWVzdC5zZXRUcmFuc2Fj
dGlvbk9wZXJhdGlvbklEKG1fb3BlcmF0aW9uSUQpOwogICAgIG1faWRiUmVxdWVzdCA9ICZyZXF1
ZXN0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9j
bGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oCmluZGV4IGUyZjE0OGFlZmJiNDM0
MzJhNjFjODQ2MmJiMTRmMzllNWE3NjA4YTYuLjdhYjU3NTU1NzA4ZWM3NGI5ZDE2ZDE1NmNlOWU5
MzI1Njc4N2NkMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oCkBAIC0xMTIsMTAgKzEx
MiwxMyBAQCBwdWJsaWM6CiAgICAgYm9vbCBuZXh0UmVxdWVzdENhbkdvVG9TZXJ2ZXIoKSBjb25z
dCB7IHJldHVybiBtX25leHRSZXF1ZXN0Q2FuR29Ub1NlcnZlciAmJiBtX2lkYlJlcXVlc3Q7IH0K
ICAgICB2b2lkIHNldE5leHRSZXF1ZXN0Q2FuR29Ub1NlcnZlcihib29sIG5leHRSZXF1ZXN0Q2Fu
R29Ub1NlcnZlcikgeyBtX25leHRSZXF1ZXN0Q2FuR29Ub1NlcnZlciA9IG5leHRSZXF1ZXN0Q2Fu
R29Ub1NlcnZlcjsgfQogCisgICAgdWludDY0X3Qgb3BlcmF0aW9uSUQoKSBjb25zdCB7IHJldHVy
biBtX29wZXJhdGlvbklEOyB9CisKIHByb3RlY3RlZDoKICAgICBUcmFuc2FjdGlvbk9wZXJhdGlv
bihJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCiAgICAgICAgIDogbV90cmFuc2FjdGlvbih0
cmFuc2FjdGlvbikKICAgICAgICAgLCBtX2lkZW50aWZpZXIodHJhbnNhY3Rpb24uY29ubmVjdGlv
blByb3h5KCkpCisgICAgICAgICwgbV9vcGVyYXRpb25JRCh0cmFuc2FjdGlvbi5nZW5lcmF0ZU9w
ZXJhdGlvbklEKCkpCiAgICAgewogICAgIH0KIApAQCAtMTQyLDYgKzE0NSw4IEBAIHByaXZhdGU6
CiAgICAgUmVmUHRyPElEQlJlcXVlc3Q+IG1faWRiUmVxdWVzdDsKICAgICBib29sIG1fbmV4dFJl
cXVlc3RDYW5Hb1RvU2VydmVyIHsgdHJ1ZSB9OwogICAgIGJvb2wgbV9kaWRDb21wbGV0ZSB7IGZh
bHNlIH07CisKKyAgICB1aW50NjRfdCBtX29wZXJhdGlvbklEIHsgMCB9OwogfTsKIAogY2xhc3Mg
VHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsIGZpbmFsIDogcHVibGljIFRyYW5zYWN0aW9uT3BlcmF0
aW9uIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9JREJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9JREJCYWNraW5nU3RvcmUuaAppbmRleCBjNDI2NDBiM2JmNmM2MGIwODdmMjQ1ZWZkM2Fm
MDFjMzY2MmZhMjllLi5hN2RmN2ExZGNkNjA3NWRkYTQ1MTA5MGFhOTMwMzdhZTgyMWNkYmY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQmFj
a2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L0lEQkJhY2tpbmdTdG9yZS5oCkBAIC04NSw3ICs4NSw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IElEQkVycm9yIG1heWJlVXBkYXRlS2V5R2VuZXJhdG9yTnVtYmVyKGNvbnN0IElEQlJlc291cmNl
SWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlk
ZW50aWZpZXIsIGRvdWJsZSBuZXdLZXlOdW1iZXIpID0gMDsKICAgICB2aXJ0dWFsIElEQkVycm9y
IG9wZW5DdXJzb3IoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50
aWZpZXIsIGNvbnN0IElEQkN1cnNvckluZm8mLCBJREJHZXRSZXN1bHQmIG91dFJlc3VsdCkgPSAw
OwogICAgIHZpcnR1YWwgSURCRXJyb3IgaXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXNvdXJjZUlk
ZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlm
aWVyJiBjdXJzb3JJZGVudGlmaWVyLCBjb25zdCBJREJJdGVyYXRlQ3Vyc29yRGF0YSYsIElEQkdl
dFJlc3VsdCYgb3V0UmVzdWx0KSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHByZWZldGNoQ3Vyc29y
KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25z
dCBJREJSZXNvdXJjZUlkZW50aWZpZXImIGN1cnNvcklkZW50aWZpZXIpID0gMDsKIAogICAgIHZp
cnR1YWwgSURCT2JqZWN0U3RvcmVJbmZvKiBpbmZvRm9yT2JqZWN0U3RvcmUodWludDY0X3Qgb2Jq
ZWN0U3RvcmVJZGVudGlmaWVyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUJhY2tpbmdT
dG9yZSgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuaAppbmRleCAzNzhkMmE1Zjdh
MGQ2NzNmMjQzMjkzODEwNzRlZThiMTk1ODExYmVkLi43NGRjOTUwOTQ1YTZlZjRiOGViNTcyYThi
ZDRkMTVkZGE1MmI4ZmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5oCkBAIC03NCw3
ICs3NCw2IEBAIHByaXZhdGU6CiAgICAgSURCRXJyb3IgbWF5YmVVcGRhdGVLZXlHZW5lcmF0b3JO
dW1iZXIoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIs
IHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgZG91YmxlIG5ld0tleU51bWJlcikgZmlu
YWw7CiAgICAgSURCRXJyb3Igb3BlbkN1cnNvcihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXIm
IHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCQ3Vyc29ySW5mbyYsIElEQkdldFJlc3Vs
dCYgb3V0UmVzdWx0KSBmaW5hbDsKICAgICBJREJFcnJvciBpdGVyYXRlQ3Vyc29yKGNvbnN0IElE
QlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJSZXNv
dXJjZUlkZW50aWZpZXImIGN1cnNvcklkZW50aWZpZXIsIGNvbnN0IElEQkl0ZXJhdGVDdXJzb3JE
YXRhJiwgSURCR2V0UmVzdWx0JiBvdXRSZXN1bHQpIGZpbmFsOwotICAgIGJvb2wgcHJlZmV0Y2hD
dXJzb3IoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiwgY29uc3QgSURCUmVzb3VyY2VJZGVu
dGlmaWVyJikgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIElEQk9iamVjdFN0b3JlSW5m
byogaW5mb0Zvck9iamVjdFN0b3JlKHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllcikgZmlu
YWw7CiAgICAgdm9pZCBkZWxldGVCYWNraW5nU3RvcmUoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3Rv
cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlE
QkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggM2ZhMTAyZGI2NTkyODBkN2Q2YTA1MGNlMWVhN2ZjNDA4
MDJiZmRkNy4uNTczYmVjNzdlMmYyZjNkMWMxMjEyMWJjNThmZWNjM2ZjZjFhM2UyMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJh
Y2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTEzNjYsOCArMTM2Niw4IEBAIElEQkVy
cm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW5kZXgoY29uc3QgSURCUmVzb3VyY2VJ
ZGVudGlmaWVyJiB0cmFuc2FjCiAKICAgICB3aGlsZSAoIWN1cnNvci0+Y3VycmVudEtleSgpLmlz
TnVsbCgpKSB7CiAgICAgICAgIGF1dG8mIGtleSA9IGN1cnNvci0+Y3VycmVudEtleSgpOwotICAg
ICAgICBhdXRvKiB2YWx1ZSA9IGN1cnNvci0+Y3VycmVudFZhbHVlKCk7Ci0gICAgICAgIFRocmVh
ZFNhZmVEYXRhQnVmZmVyIHZhbHVlQnVmZmVyID0gdmFsdWUgPyB2YWx1ZS0+ZGF0YSgpIDogVGhy
ZWFkU2FmZURhdGFCdWZmZXIoKTsKKyAgICAgICAgYXV0byB2YWx1ZSA9IGN1cnNvci0+Y3VycmVu
dFZhbHVlKCk7CisgICAgICAgIFRocmVhZFNhZmVEYXRhQnVmZmVyIHZhbHVlQnVmZmVyID0gdmFs
dWUuZGF0YSgpOwogCiAgICAgICAgIEFTU0VSVChjdXJzb3ItPmN1cnJlbnRSZWNvcmRSb3dJRCgp
KTsKIApAQCAtMjM1NCw3ICsyMzU0LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3Jl
OjpnZXRBbGxJbmRleFJlY29yZHMoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJgogICAgICAg
ICBJREJLZXlEYXRhIGtleUNvcHkgPSBjdXJzb3ItPmN1cnJlbnRQcmltYXJ5S2V5KCk7CiAgICAg
ICAgIHJlc3VsdC5hZGRLZXkoV1RGTW92ZShrZXlDb3B5KSk7CiAgICAgICAgIGlmIChnZXRBbGxS
ZWNvcmRzRGF0YS5nZXRBbGxUeXBlID09IEluZGV4ZWREQjo6R2V0QWxsVHlwZTo6VmFsdWVzKQot
ICAgICAgICAgICAgcmVzdWx0LmFkZFZhbHVlKGN1cnNvci0+Y3VycmVudFZhbHVlKCkgPyAqY3Vy
c29yLT5jdXJyZW50VmFsdWUoKSA6IElEQlZhbHVlKCkpOworICAgICAgICAgICAgcmVzdWx0LmFk
ZFZhbHVlKElEQlZhbHVlKGN1cnNvci0+Y3VycmVudFZhbHVlKCkpKTsKIAogICAgICAgICArK2N1
cnJlbnRDb3VudDsKICAgICAgICAgY3Vyc29yLT5hZHZhbmNlKDEpOwpAQCAtMjQwMSw3ICsyNDAx
LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRJbmRleFJlY29yZChjb25z
dCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW4KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAg
ICBhdXRvKiBvYmplY3RTdG9yZUluZm8gPSBpbmZvRm9yT2JqZWN0U3RvcmUob2JqZWN0U3RvcmVJ
RCk7CiAgICAgICAgICAgICBBU1NFUlQob2JqZWN0U3RvcmVJbmZvKTsKLSAgICAgICAgICAgIGdl
dFJlc3VsdCA9IHsgY3Vyc29yLT5jdXJyZW50UHJpbWFyeUtleSgpLCBjdXJzb3ItPmN1cnJlbnRQ
cmltYXJ5S2V5KCksIGN1cnNvci0+Y3VycmVudFZhbHVlKCkgPyAqY3Vyc29yLT5jdXJyZW50VmFs
dWUoKSA6IElEQlZhbHVlKCksIG9iamVjdFN0b3JlSW5mby0+a2V5UGF0aCgpIH07CisgICAgICAg
ICAgICBnZXRSZXN1bHQgPSB7IGN1cnNvci0+Y3VycmVudFByaW1hcnlLZXkoKSwgY3Vyc29yLT5j
dXJyZW50UHJpbWFyeUtleSgpLCBJREJWYWx1ZShjdXJzb3ItPmN1cnJlbnRWYWx1ZSgpKSwgb2Jq
ZWN0U3RvcmVJbmZvLT5rZXlQYXRoKCkgfTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMjcyMSwy
NiArMjcyMSwxOCBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6Oml0ZXJhdGVDdXJz
b3IoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFucwogICAgICAgICB9CiAgICAgfQog
Ci0gICAgYXV0byogb2JqZWN0U3RvcmVJbmZvID0gaW5mb0Zvck9iamVjdFN0b3JlKGN1cnNvci0+
b2JqZWN0U3RvcmVJRCgpKTsKLSAgICBBU1NFUlQob2JqZWN0U3RvcmVJbmZvKTsKLSAgICBjdXJz
b3ItPmN1cnJlbnREYXRhKHJlc3VsdCwgb2JqZWN0U3RvcmVJbmZvLT5rZXlQYXRoKCkpOwotICAg
IHJldHVybiBJREJFcnJvciB7IH07Ci19Ci0KLWJvb2wgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpw
cmVmZXRjaEN1cnNvcihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRl
bnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiBjdXJzb3JJZGVudGlmaWVyKQot
ewotICAgIExPRyhJbmRleGVkREIsICJTUUxpdGVJREJCYWNraW5nU3RvcmU6OnByZWZldGNoQ3Vy
c29yIik7Ci0KLSAgICBBU1NFUlQobV9zcWxpdGVEQik7Ci0gICAgQVNTRVJUKG1fc3FsaXRlREIt
PmlzT3BlbigpKTsKKyAgICBpZiAoZGF0YS5vcHRpb24gPT0gSW5kZXhlZERCOjpDdXJzb3JJdGVy
YXRlT3B0aW9uOjpSZXBseSkgeworICAgICAgICBhdXRvKiBvYmplY3RTdG9yZUluZm8gPSBpbmZv
Rm9yT2JqZWN0U3RvcmUoY3Vyc29yLT5vYmplY3RTdG9yZUlEKCkpOworICAgICAgICBBU1NFUlQo
b2JqZWN0U3RvcmVJbmZvKTsKIAotICAgIGF1dG8qIGN1cnNvciA9IG1fY3Vyc29ycy5nZXQoY3Vy
c29ySWRlbnRpZmllcik7Ci0gICAgaWYgKCFjdXJzb3IgfHwgIWN1cnNvci0+dHJhbnNhY3Rpb24o
KSB8fCAhY3Vyc29yLT50cmFuc2FjdGlvbigpLT5pblByb2dyZXNzKCkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgYm9vbCBzaG91bGRQcmVmZXRjaCA9IGtleS5pc051bGwoKSAmJiBw
cmltYXJ5S2V5LmlzTnVsbCgpOworICAgICAgICBpZiAoc2hvdWxkUHJlZmV0Y2gpCisgICAgICAg
ICAgICBjdXJzb3ItPnByZWZldGNoKCk7CiAKLSAgICBBU1NFUlRfVU5VU0VEKHRyYW5zYWN0aW9u
SWRlbnRpZmllciwgY3Vyc29yLT50cmFuc2FjdGlvbigpLT50cmFuc2FjdGlvbklkZW50aWZpZXIo
KSA9PSB0cmFuc2FjdGlvbklkZW50aWZpZXIpOworICAgICAgICBjdXJzb3ItPmN1cnJlbnREYXRh
KHJlc3VsdCwgb2JqZWN0U3RvcmVJbmZvLT5rZXlQYXRoKCksIHNob3VsZFByZWZldGNoID8gU1FM
aXRlSURCQ3Vyc29yOjpTaG91bGRJbmNsdWRlUHJlZmV0Y2hlZFJlY29yZHM6OlllcyA6IFNRTGl0
ZUlEQkN1cnNvcjo6U2hvdWxkSW5jbHVkZVByZWZldGNoZWRSZWNvcmRzOjpObyk7CisgICAgfQog
Ci0gICAgcmV0dXJuIGN1cnNvci0+cHJlZmV0Y2goKTsKKyAgICByZXR1cm4gSURCRXJyb3IgeyB9
OwogfQogCiBJREJPYmplY3RTdG9yZUluZm8qIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6aW5mb0Zv
ck9iamVjdFN0b3JlKHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5n
U3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJ
REJCYWNraW5nU3RvcmUuaAppbmRleCBjZTI5ZDJjZmNmYjQxZmFiNmJkMzA1YmJlMmRjZjA0NTZm
YjZkODJlLi40OTQwYzE1MTYxMTA0YWQ5Njk1OGZkMjM0MzdkYWM2OTk0MGNjNzE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFj
a2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5oCkBAIC04MCw3ICs4MCw2IEBAIHB1YmxpYzoKICAgICBJ
REJFcnJvciBtYXliZVVwZGF0ZUtleUdlbmVyYXRvck51bWJlcihjb25zdCBJREJSZXNvdXJjZUlk
ZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVu
dGlmaWVyLCBkb3VibGUgbmV3S2V5TnVtYmVyKSBmaW5hbDsKICAgICBJREJFcnJvciBvcGVuQ3Vy
c29yKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBj
b25zdCBJREJDdXJzb3JJbmZvJiwgSURCR2V0UmVzdWx0JiBvdXRSZXN1bHQpIGZpbmFsOwogICAg
IElEQkVycm9yIGl0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFu
c2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgY3Vyc29ySWRl
bnRpZmllciwgY29uc3QgSURCSXRlcmF0ZUN1cnNvckRhdGEmLCBJREJHZXRSZXN1bHQmIG91dFJl
c3VsdCkgZmluYWw7Ci0gICAgYm9vbCBwcmVmZXRjaEN1cnNvcihjb25zdCBJREJSZXNvdXJjZUlk
ZW50aWZpZXImLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImKSBmaW5hbDsKIAogICAgIElE
Qk9iamVjdFN0b3JlSW5mbyogaW5mb0Zvck9iamVjdFN0b3JlKHVpbnQ2NF90IG9iamVjdFN0b3Jl
SWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBkZWxldGVCYWNraW5nU3RvcmUoKSBmaW5hbDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxp
dGVJREJDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L1NRTGl0ZUlEQkN1cnNvci5jcHAKaW5kZXggYjM3NzE3Mzc1NzRlMjIzNjYxN2QyNDg3YzY5MGUx
MjBlYWRkNzAwYi4uZTE5YWExM2ViMDFlNTViYjBjZjgwODFmNzQzYmFhNzIzYTYzMjU1NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlE
QkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L1NRTGl0ZUlEQkN1cnNvci5jcHAKQEAgLTQyLDggKzQyLDggQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIG5hbWVzcGFjZSBJREJTZXJ2ZXIgewogCi1zdGF0aWMgY29uc3Qgc2l6ZV90IHByZWZldGNo
TGltaXQgPSAxMjg7Ci1zdGF0aWMgY29uc3Qgc2l6ZV90IHByZWZldGNoU2l6ZUxpbWl0ID0gOCAq
IE1COworc3RhdGljIGNvbnN0IHNpemVfdCBwcmVmZXRjaExpbWl0ID0gMjU2Oworc3RhdGljIGNv
bnN0IHNpemVfdCBwcmVmZXRjaFNpemVMaW1pdCA9IDEgKiBNQjsKIAogc3RkOjp1bmlxdWVfcHRy
PFNRTGl0ZUlEQkN1cnNvcj4gU1FMaXRlSURCQ3Vyc29yOjptYXliZUNyZWF0ZShTUUxpdGVJREJU
cmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIGNvbnN0IElEQkN1cnNvckluZm8mIGluZm8pCiB7CkBA
IC0xMDIsNyArMTAyLDcgQEAgU1FMaXRlSURCQ3Vyc29yOjp+U1FMaXRlSURCQ3Vyc29yKCkKICAg
ICAgICAgbV90cmFuc2FjdGlvbi0+Y2xvc2VDdXJzb3IoKnRoaXMpOwogfQogCi12b2lkIFNRTGl0
ZUlEQkN1cnNvcjo6Y3VycmVudERhdGEoSURCR2V0UmVzdWx0JiByZXN1bHQsIGNvbnN0IE9wdGlv
bmFsPElEQktleVBhdGg+JiBrZXlQYXRoKQordm9pZCBTUUxpdGVJREJDdXJzb3I6OmN1cnJlbnRE
YXRhKElEQkdldFJlc3VsdCYgcmVzdWx0LCBjb25zdCBPcHRpb25hbDxJREJLZXlQYXRoPiYga2V5
UGF0aCwgU2hvdWxkSW5jbHVkZVByZWZldGNoZWRSZWNvcmRzIHNob3VsZEluY2x1ZGVQcmVmZXRj
aGVkUmVjb3JkcykKIHsKICAgICBBU1NFUlQoIW1fZmV0Y2hlZFJlY29yZHMuaXNFbXB0eSgpKTsK
IApAQCAtMTEzLDcgKzExMywyNSBAQCB2b2lkIFNRTGl0ZUlEQkN1cnNvcjo6Y3VycmVudERhdGEo
SURCR2V0UmVzdWx0JiByZXN1bHQsIGNvbnN0IE9wdGlvbmFsPElEQktleVBhdAogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgcmVzdWx0ID0geyBjdXJyZW50UmVjb3JkLnJlY29yZC5rZXks
IGN1cnJlbnRSZWNvcmQucmVjb3JkLnByaW1hcnlLZXksIGN1cnJlbnRSZWNvcmQucmVjb3JkLnZh
bHVlID8gKmN1cnJlbnRSZWNvcmQucmVjb3JkLnZhbHVlIDogSURCVmFsdWUoKSwga2V5UGF0aH07
CisgICAgaWYgKHNob3VsZEluY2x1ZGVQcmVmZXRjaGVkUmVjb3JkcyA9PSBTaG91bGRJbmNsdWRl
UHJlZmV0Y2hlZFJlY29yZHM6Ok5vKSB7CisgICAgICAgIHJlc3VsdCA9IHsgY3VycmVudFJlY29y
ZC5yZWNvcmQua2V5LCBjdXJyZW50UmVjb3JkLnJlY29yZC5wcmltYXJ5S2V5LCBJREJWYWx1ZShj
dXJyZW50UmVjb3JkLnJlY29yZC52YWx1ZSksIGtleVBhdGggfTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIFZlY3RvcjxJREJDdXJzb3JSZWNvcmQ+IHByZWZldGNoZWRSZWNvcmRzOwor
ICAgIHByZWZldGNoZWRSZWNvcmRzLnJlc2VydmVDYXBhY2l0eShtX2ZldGNoZWRSZWNvcmRzLnNp
emUoKSk7CisgICAgZm9yIChhdXRvJiByZWNvcmQgOiBtX2ZldGNoZWRSZWNvcmRzKSB7CisgICAg
ICAgIGlmIChyZWNvcmQuaXNUZXJtaW5hbFJlY29yZCgpKQorICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgcHJlZmV0Y2hlZFJlY29yZHMuYXBwZW5kKHJlY29yZC5yZWNvcmQpOworICAgIH0K
KworICAgIC8vIEZpcnN0IHJlY29yZCB3aWxsIGJlIHJldHVybmVkIGFzIGN1cnJlbnQgcmVjb3Jk
LgorICAgIGlmICghcHJlZmV0Y2hlZFJlY29yZHMuaXNFbXB0eSgpKQorICAgICAgICBwcmVmZXRj
aGVkUmVjb3Jkcy5yZW1vdmUoMCk7CisKKyAgICByZXN1bHQgPSB7IGN1cnJlbnRSZWNvcmQucmVj
b3JkLmtleSwgY3VycmVudFJlY29yZC5yZWNvcmQucHJpbWFyeUtleSwgSURCVmFsdWUoY3VycmVu
dFJlY29yZC5yZWNvcmQudmFsdWUpLCBrZXlQYXRoLCBXVEZNb3ZlKHByZWZldGNoZWRSZWNvcmRz
KSB9OwogfQogCiBzdGF0aWMgU3RyaW5nIGJ1aWxkUHJlSW5kZXhTdGF0ZW1lbnQoYm9vbCBpc0Rp
cmVjdGlvbk5leHQpCkBAIC0yNjMsNiArMjgxLDggQEAgdm9pZCBTUUxpdGVJREJDdXJzb3I6Om9i
amVjdFN0b3JlUmVjb3Jkc0NoYW5nZWQoKQogICAgIC8vIFdlIGFsc28gbmVlZCB0byB0aHJvdyBh
d2F5IGFueSBmZXRjaGVkIHJlY29yZHMgYXMgdGhleSBtYXkgbm8gbG9uZ2VyIGJlIHZhbGlkLgog
ICAgIG1fZmV0Y2hlZFJlY29yZHMuY2xlYXIoKTsKICAgICBtX2ZldGNoZWRSZWNvcmRzU2l6ZSA9
IDA7CisKKyAgICBtX3ByZWZldGNoQ291bnQgPSAwOwogfQogCiB2b2lkIFNRTGl0ZUlEQkN1cnNv
cjo6cmVzZXRBbmRSZWJpbmRTdGF0ZW1lbnQoKQpAQCAtMzU5LDE3ICszNzksMzIgQEAgYm9vbCBT
UUxpdGVJREJDdXJzb3I6OnJlc2V0QW5kUmViaW5kUHJlSW5kZXhTdGF0ZW1lbnRJZk5lY2Vzc2Fy
eSgpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgU1FMaXRlSURCQ3Vyc29yOjpwcmVmZXRj
aCgpCitib29sIFNRTGl0ZUlEQkN1cnNvcjo6cHJlZmV0Y2hPbmVSZWNvcmQoKQogewotICAgIExP
RyhJbmRleGVkREIsICJTUUxpdGVJREJDdXJzb3I6OnByZWZldGNoKCkgLSBDdXJzb3IgYWxyZWFk
eSBoYXMgJXp1IGZldGNoZWQgcmVjb3JkcyIsIG1fZmV0Y2hlZFJlY29yZHMuc2l6ZSgpKTsKKyAg
ICBMT0coSW5kZXhlZERCLCAiU1FMaXRlSURCQ3Vyc29yOjpwcmVmZXRjaE9uZVJlY29yZCgpIC0g
Q3Vyc29yIGFscmVhZHkgaGFzICV6dSBmZXRjaGVkIHJlY29yZHMiLCBtX2ZldGNoZWRSZWNvcmRz
LnNpemUoKSk7CiAKICAgICBpZiAobV9mZXRjaGVkUmVjb3Jkc1NpemUgPj0gcHJlZmV0Y2hTaXpl
TGltaXQgfHwgbV9mZXRjaGVkUmVjb3Jkcy5pc0VtcHR5KCkgfHwgbV9mZXRjaGVkUmVjb3Jkcy5z
aXplKCkgPj0gcHJlZmV0Y2hMaW1pdCB8fCBtX2ZldGNoZWRSZWNvcmRzLmxhc3QoKS5pc1Rlcm1p
bmFsUmVjb3JkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIG1fY3VycmVudEtleUZv
clVuaXF1ZW5lc3MgPSBtX2ZldGNoZWRSZWNvcmRzLmxhc3QoKS5yZWNvcmQua2V5OwotICAgIGZl
dGNoKCk7CiAKLSAgICByZXR1cm4gbV9mZXRjaGVkUmVjb3Jkcy5zaXplKCkgPCBwcmVmZXRjaExp
bWl0ICYmIG1fZmV0Y2hlZFJlY29yZHNTaXplIDwgcHJlZmV0Y2hTaXplTGltaXQ7CisgICAgcmV0
dXJuIGZldGNoKCkgJiYgbV9mZXRjaGVkUmVjb3Jkcy5zaXplKCkgPCBwcmVmZXRjaExpbWl0ICYm
IG1fZmV0Y2hlZFJlY29yZHNTaXplIDwgcHJlZmV0Y2hTaXplTGltaXQ7Cit9CisKK3ZvaWQgU1FM
aXRlSURCQ3Vyc29yOjppbmNyZWFzZUNvdW50VG9QcmVmZXRjaCgpCit7CisgICAgbV9wcmVmZXRj
aENvdW50ID0gbV9wcmVmZXRjaENvdW50ID8gbV9wcmVmZXRjaENvdW50ICogMiA6IDE7Cit9CisK
K2Jvb2wgU1FMaXRlSURCQ3Vyc29yOjpwcmVmZXRjaCgpCit7CisgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1fcHJlZmV0Y2hDb3VudDsgKytpKSB7CisgICAgICAgIGlmICghcHJlZmV0Y2hP
bmVSZWNvcmQoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpbmNy
ZWFzZUNvdW50VG9QcmVmZXRjaCgpOworICAgIHJldHVybiB0cnVlOwogfQogCiBib29sIFNRTGl0
ZUlEQkN1cnNvcjo6YWR2YW5jZSh1aW50NjRfdCBjb3VudCkKQEAgLTQ4OCw3ICs1MjMsNyBAQCBT
UUxpdGVJREJDdXJzb3I6OkZldGNoUmVzdWx0IFNRTGl0ZUlEQkN1cnNvcjo6aW50ZXJuYWxGZXRj
aE5leHRSZWNvcmQoU1FMaXRlQ3VycwogICAgIEFTU0VSVCghbV9mZXRjaGVkUmVjb3Jkcy5pc0Vt
cHR5KCkpOwogICAgIEFTU0VSVCghbV9mZXRjaGVkUmVjb3Jkcy5sYXN0KCkuaXNUZXJtaW5hbFJl
Y29yZCgpKTsKIAotICAgIHJlY29yZC5yZWNvcmQudmFsdWUgPSBudWxscHRyOworICAgIHJlY29y
ZC5yZWNvcmQudmFsdWUgPSB7IH07CiAKICAgICBhdXRvJiBkYXRhYmFzZSA9IG1fdHJhbnNhY3Rp
b24tPnNxbGl0ZVRyYW5zYWN0aW9uKCktPmRhdGFiYXNlKCk7CiAgICAgU1FMaXRlU3RhdGVtZW50
KiBzdGF0ZW1lbnQgPSBudWxscHRyOwpAQCAtNTQ2LDcgKzU4MSw3IEBAIFNRTGl0ZUlEQkN1cnNv
cjo6RmV0Y2hSZXN1bHQgU1FMaXRlSURCQ3Vyc29yOjppbnRlcm5hbEZldGNoTmV4dFJlY29yZChT
UUxpdGVDdXJzCiAgICAgICAgIH0KIAogICAgICAgICBpZiAobV9jdXJzb3JUeXBlID09IEluZGV4
ZWREQjo6Q3Vyc29yVHlwZTo6S2V5QW5kVmFsdWUpCi0gICAgICAgICAgICByZWNvcmQucmVjb3Jk
LnZhbHVlID0gbWFrZVVuaXF1ZTxJREJWYWx1ZT4oVGhyZWFkU2FmZURhdGFCdWZmZXI6OmNyZWF0
ZShXVEZNb3ZlKGtleURhdGEpKSwgYmxvYlVSTHMsIGJsb2JGaWxlUGF0aHMpOworICAgICAgICAg
ICAgcmVjb3JkLnJlY29yZC52YWx1ZSA9IHsgVGhyZWFkU2FmZURhdGFCdWZmZXI6OmNyZWF0ZShX
VEZNb3ZlKGtleURhdGEpKSwgYmxvYlVSTHMsIGJsb2JGaWxlUGF0aHMgfTsKICAgICB9IGVsc2Ug
ewogICAgICAgICBpZiAoIWRlc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhLmRhdGEoKSwga2V5
RGF0YS5zaXplKCksIHJlY29yZC5yZWNvcmQucHJpbWFyeUtleSkpIHsKICAgICAgICAgICAgIExP
R19FUlJPUigiVW5hYmxlIHRvIGRlc2VyaWFsaXplIHZhbHVlIGRhdGEgZnJvbSBkYXRhYmFzZSB3
aGlsZSBhZHZhbmNpbmcgaW5kZXggY3Vyc29yIik7CkBAIC01NzIsNyArNjA3LDcgQEAgU1FMaXRl
SURCQ3Vyc29yOjpGZXRjaFJlc3VsdCBTUUxpdGVJREJDdXJzb3I6OmludGVybmFsRmV0Y2hOZXh0
UmVjb3JkKFNRTGl0ZUN1cnMKIAogICAgICAgICBpZiAocmVzdWx0ID09IFNRTElURV9ST1cpIHsK
ICAgICAgICAgICAgIG1fY2FjaGVkT2JqZWN0U3RvcmVTdGF0ZW1lbnQtPmdldENvbHVtbkJsb2JB
c1ZlY3RvcigwLCBrZXlEYXRhKTsKLSAgICAgICAgICAgIHJlY29yZC5yZWNvcmQudmFsdWUgPSBt
YWtlVW5pcXVlPElEQlZhbHVlPihUaHJlYWRTYWZlRGF0YUJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUo
a2V5RGF0YSkpKTsKKyAgICAgICAgICAgIHJlY29yZC5yZWNvcmQudmFsdWUgPSB7IFRocmVhZFNh
ZmVEYXRhQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShrZXlEYXRhKSkgfTsKICAgICAgICAgfSBlbHNl
IGlmIChyZXN1bHQgPT0gU1FMSVRFX0RPTkUpIHsKICAgICAgICAgICAgIC8vIFRoaXMgaW5kaWNh
dGVzIHRoYXQgdGhlIHJlY29yZCB3ZSdyZSB0cnlpbmcgdG8gcmV0cmlldmUgaGFzIGJlZW4gcmVt
b3ZlZCBmcm9tIHRoZSBvYmplY3Qgc3RvcmUuCiAgICAgICAgICAgICAvLyBTa2lwIG92ZXIgaXQu
CkBAIC02NDUsMTAgKzY4MCwxMCBAQCBjb25zdCBJREJLZXlEYXRhJiBTUUxpdGVJREJDdXJzb3I6
OmN1cnJlbnRQcmltYXJ5S2V5KCkgY29uc3QKICAgICByZXR1cm4gbV9mZXRjaGVkUmVjb3Jkcy5m
aXJzdCgpLnJlY29yZC5wcmltYXJ5S2V5OwogfQogCi1JREJWYWx1ZSogU1FMaXRlSURCQ3Vyc29y
OjpjdXJyZW50VmFsdWUoKSBjb25zdAorY29uc3QgSURCVmFsdWUmIFNRTGl0ZUlEQkN1cnNvcjo6
Y3VycmVudFZhbHVlKCkgY29uc3QKIHsKICAgICBBU1NFUlQoIW1fZmV0Y2hlZFJlY29yZHMuaXNF
bXB0eSgpKTsKLSAgICByZXR1cm4gbV9mZXRjaGVkUmVjb3Jkcy5maXJzdCgpLnJlY29yZC52YWx1
ZS5nZXQoKTsKKyAgICByZXR1cm4gbV9mZXRjaGVkUmVjb3Jkcy5maXJzdCgpLnJlY29yZC52YWx1
ZTsKIH0KIAogYm9vbCBTUUxpdGVJREJDdXJzb3I6OmRpZENvbXBsZXRlKCkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJD
dXJzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJ
REJDdXJzb3IuaAppbmRleCBkODFkZmI1YzNkOTUxMTBiYTNjMmQxZTkzYjY2MzEyYzAyZDM2MjY3
Li5mZGNhODBlZDBiNjFmNmU1MWQzMDU4ZmZmNjM5ZWRiZGMyYjJmMmY5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1
cnNvci5oCkBAIC02NiwxMCArNjYsMTEgQEAgcHVibGljOgogCiAgICAgY29uc3QgSURCS2V5RGF0
YSYgY3VycmVudEtleSgpIGNvbnN0OwogICAgIGNvbnN0IElEQktleURhdGEmIGN1cnJlbnRQcmlt
YXJ5S2V5KCkgY29uc3Q7Ci0gICAgSURCVmFsdWUqIGN1cnJlbnRWYWx1ZSgpIGNvbnN0OworICAg
IGNvbnN0IElEQlZhbHVlJiBjdXJyZW50VmFsdWUoKSBjb25zdDsKIAogICAgIGJvb2wgYWR2YW5j
ZSh1aW50NjRfdCBjb3VudCk7CiAgICAgYm9vbCBpdGVyYXRlKGNvbnN0IElEQktleURhdGEmIHRh
cmdldEtleSwgY29uc3QgSURCS2V5RGF0YSYgdGFyZ2V0UHJpbWFyeUtleSk7CisgICAgYm9vbCBw
cmVmZXRjaE9uZVJlY29yZCgpOwogICAgIGJvb2wgcHJlZmV0Y2goKTsKIAogICAgIGJvb2wgZGlk
Q29tcGxldGUoKSBjb25zdDsKQEAgLTc3LDcgKzc4LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBv
YmplY3RTdG9yZVJlY29yZHNDaGFuZ2VkKCk7CiAKLSAgICB2b2lkIGN1cnJlbnREYXRhKElEQkdl
dFJlc3VsdCYsIGNvbnN0IE9wdGlvbmFsPElEQktleVBhdGg+Jik7CisgICAgZW51bSBjbGFzcyBT
aG91bGRJbmNsdWRlUHJlZmV0Y2hlZFJlY29yZHMgeyBObywgWWVzIH07CisgICAgdm9pZCBjdXJy
ZW50RGF0YShJREJHZXRSZXN1bHQmLCBjb25zdCBPcHRpb25hbDxJREJLZXlQYXRoPiYsIFNob3Vs
ZEluY2x1ZGVQcmVmZXRjaGVkUmVjb3JkcyA9IFNob3VsZEluY2x1ZGVQcmVmZXRjaGVkUmVjb3Jk
czo6Tm8pOwogCiBwcml2YXRlOgogICAgIGJvb2wgZXN0YWJsaXNoU3RhdGVtZW50KCk7CkBAIC0x
MDksNiArMTExLDggQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgaXNEaXJlY3Rpb25OZXh0KCkgY29u
c3QgeyByZXR1cm4gbV9jdXJzb3JEaXJlY3Rpb24gPT0gSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rp
b246Ok5leHQgfHwgbV9jdXJzb3JEaXJlY3Rpb24gPT0gSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rp
b246Ok5leHR1bmlxdWU7IH0KIAorICAgIHZvaWQgaW5jcmVhc2VDb3VudFRvUHJlZmV0Y2goKTsK
KwogICAgIFNRTGl0ZUlEQlRyYW5zYWN0aW9uKiBtX3RyYW5zYWN0aW9uOwogICAgIElEQlJlc291
cmNlSWRlbnRpZmllciBtX2N1cnNvcklkZW50aWZpZXI7CiAgICAgaW50NjRfdCBtX29iamVjdFN0
b3JlSUQ7CkBAIC0xMzMsNiArMTM3LDggQEAgcHJpdmF0ZToKICAgICBpbnQ2NF90IG1fYm91bmRJ
RCB7IDAgfTsKIAogICAgIGJvb2wgbV9iYWNraW5nU3RvcmVDdXJzb3IgeyBmYWxzZSB9OworCisg
ICAgdW5zaWduZWQgbV9wcmVmZXRjaENvdW50IHsgMCB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
SURCU2VydmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcAppbmRleCBhMGEwNTE2ZjZmYmNjNGU2
ODBmYzJjOWE3ZjA0ODc5MjM1NTNjZGRmLi5hZjViMzE4NTA4NTZkNWQyZGI2MjlhOTYwMGFiNGY0
MjY0MzE0ZTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAKQEAgLTg1NCwyMiArODU0LDYg
QEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6aXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXF1ZXN0
RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IEkKICAgICBhdXRvIGVycm9yID0gbV9iYWNraW5nU3Rv
cmUtPml0ZXJhdGVDdXJzb3IodHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjdXJzb3JJZGVudGlmaWVy
LCBkYXRhLCByZXN1bHQpOwogCiAgICAgY2FsbGJhY2soZXJyb3IsIHJlc3VsdCk7Ci0KLSAgICBp
ZiAoZXJyb3IuaXNOdWxsKCkpCi0gICAgICAgIHByZWZldGNoQ3Vyc29yKHRyYW5zYWN0aW9uSWRl
bnRpZmllciwgY3Vyc29ySWRlbnRpZmllciwgZGF0YS5jb3VudCA/IGRhdGEuY291bnQgOiAxKTsK
LX0KLQotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cHJlZmV0Y2hDdXJzb3IoY29uc3QgSURCUmVz
b3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNl
SWRlbnRpZmllciYgY3Vyc29ySWRlbnRpZmllciwgdWludDY0X3Qgc3RlcCkKLXsKLSAgICBMT0co
SW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6OnByZWZldGNoQ3Vyc29yIik7Ci0KLSAgICBB
U1NFUlQoIWlzTWFpblRocmVhZCgpKTsKLQotICAgIHVpbnQ2NF90IGNvdW50VG9QcmVmZXRjaCA9
IHN0ZXAgKiAyOwotICAgIHdoaWxlIChjb3VudFRvUHJlZmV0Y2ggLS0pIHsKLSAgICAgICAgaWYg
KCFtX2JhY2tpbmdTdG9yZS0+cHJlZmV0Y2hDdXJzb3IodHJhbnNhY3Rpb25JZGVudGlmaWVyLCBj
dXJzb3JJZGVudGlmaWVyKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9CiB9CiAKIHZvaWQg
VW5pcXVlSURCRGF0YWJhc2U6OmNvbW1pdFRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJh
bnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFi
YXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURC
RGF0YWJhc2UuaAppbmRleCAwNmJmNmE0ZWYxNmM2MjMxOGNkYzM5MzliMjMxNmRhYmE1NGYwNDNh
Li4xYzY4ODczNTA2MDI2ZWZkZWZhMGQ3Mjc5M2NlOGNhMmM3NGM0NDk5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURC
RGF0YWJhc2UuaApAQCAtMTQyLDggKzE0Miw2IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNsZWFy
VHJhbnNhY3Rpb25zT25Db25uZWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYpOwog
Ci0gICAgdm9pZCBwcmVmZXRjaEN1cnNvcihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImLCBj
b25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImLCB1aW50NjRfdCBzdGVwKTsKLQogICAgIElEQlNl
cnZlciYgbV9zZXJ2ZXI7CiAgICAgSURCRGF0YWJhc2VJZGVudGlmaWVyIG1faWRlbnRpZmllcjsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1Vu
aXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uY3BwCmluZGV4IDBj
OWJiMTBmZjg4Y2Q2NGM5MDU2OTNmNjJjZmFjZWU4NDFhZTJmOGQuLjk5NzRjYTY3MmQzNTllM2Vm
ZmExMDRlMWFjZTYwZDg4YzQ4ZWJlZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJh
c2VUcmFuc2FjdGlvbi5jcHAKQEAgLTM3NCw5ICszNzQsMTMgQEAgdm9pZCBVbmlxdWVJREJEYXRh
YmFzZVRyYW5zYWN0aW9uOjppdGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1
ZXN0RGEKICAgICBhdXRvIGRhdGFiYXNlID0gbV9kYXRhYmFzZUNvbm5lY3Rpb24tPmRhdGFiYXNl
KCk7CiAgICAgQVNTRVJUKGRhdGFiYXNlKTsKICAgICAKLSAgICBkYXRhYmFzZS0+aXRlcmF0ZUN1
cnNvcihyZXF1ZXN0RGF0YSwgZGF0YSwgW3RoaXMsIHJlcXVlc3REYXRhXShhdXRvJiBlcnJvciwg
Y29uc3QgSURCR2V0UmVzdWx0JiByZXN1bHQpIHsKKyAgICBkYXRhYmFzZS0+aXRlcmF0ZUN1cnNv
cihyZXF1ZXN0RGF0YSwgZGF0YSwgW3RoaXMsIHJlcXVlc3REYXRhLCBvcHRpb24gPSBkYXRhLm9w
dGlvbl0oYXV0byYgZXJyb3IsIGNvbnN0IElEQkdldFJlc3VsdCYgcmVzdWx0KSB7CiAgICAgICAg
IExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjppdGVyYXRlQ3Vy
c29yIChjYWxsYmFjaykiKTsKIAorICAgICAgICBpZiAob3B0aW9uID09IEluZGV4ZWREQjo6Q3Vy
c29ySXRlcmF0ZU9wdGlvbjo6RG9Ob3RSZXBseSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBBU1NFUlQoIWVycm9yLmlzTnVsbCgpIHx8IHJlc3VsdC5pc0RlZmluZWQoKSk7CiAgICAg
ICAgIGlmIChlcnJvci5pc051bGwoKSkKICAgICAgICAgICAgIG1fZGF0YWJhc2VDb25uZWN0aW9u
LT5jb25uZWN0aW9uVG9DbGllbnQoKS5kaWRJdGVyYXRlQ3Vyc29yKElEQlJlc3VsdERhdGE6Oml0
ZXJhdGVDdXJzb3JTdWNjZXNzKHJlcXVlc3REYXRhLnJlcXVlc3RJZGVudGlmaWVyKCksIHJlc3Vs
dCkpOwogICAgICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zaGFyZWQvSURCQ3Vyc29yUmVjb3JkLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zaGFyZWQvSURCQ3Vyc29yUmVjb3JkLmgKaW5kZXggNjEzNjA0YThjNWZhMmVj
Nzg0M2JiOThiMDU0ZTEwMWY2NjNlNjMxZS4uOWQ1YWI5NGFkNTRkNDU5YTkzNjA0OTM4NzBiNzMy
YzNlNzRhMDFiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2hhcmVkL0lEQkN1cnNvclJlY29yZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NoYXJlZC9JREJDdXJzb3JSZWNvcmQuaApAQCAtMzUsMTIgKzM1LDEzIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBJREJDdXJzb3JSZWNvcmQgewogICAgIElEQktleURhdGEg
a2V5OwogICAgIElEQktleURhdGEgcHJpbWFyeUtleTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SURC
VmFsdWU+IHZhbHVlOworICAgIElEQlZhbHVlIHZhbHVlOwogCiAgICAgdGVtcGxhdGU8Y2xhc3Mg
RW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNz
IERlY29kZXI+IHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiwgSURCQ3Vyc29yUmVjb3JkJik7
CiAKLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIGtleS5zaXplKCkgKyBwcmltYXJ5
S2V5LnNpemUoKSArICh2YWx1ZSA/IHZhbHVlLT5zaXplKCkgOiAwKTsgfQorICAgIElEQkN1cnNv
clJlY29yZCBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIGtleS5zaXplKCkgKyBwcmltYXJ5S2V5LnNpemUoKSArIHZhbHVlLnNpemUoKTsgfQog
fTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTY0LDYgKzY1LDExIEBAIGJvb2wgSURC
Q3Vyc29yUmVjb3JkOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgSURCQ3Vyc29yUmVjb3JkJiBy
ZWNvcmQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2lubGluZSBJREJDdXJzb3JSZWNvcmQgSURC
Q3Vyc29yUmVjb3JkOjppc29sYXRlZENvcHkoKSBjb25zdAoreworICAgIHJldHVybiB7IGtleS5p
c29sYXRlZENvcHkoKSwgcHJpbWFyeUtleS5pc29sYXRlZENvcHkoKSwgdmFsdWUuaXNvbGF0ZWRD
b3B5KCkgfTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxF
KElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zaGFyZWQvSURCSXRlcmF0ZUN1cnNvckRhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkl0ZXJhdGVDdXJzb3JEYXRhLmNwcAppbmRleCBm
MWYwYmIzYjZkYjQxZWE5N2QzMDJmYTNkYzI3MjY2ZmRlODYxNzk3Li5hZDlmNGE0NzUwMDIyYmIw
NjQ2MmZjOGRjOWY1MTkyYjQ2YmJhYjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCSXRlcmF0ZUN1cnNvckRhdGEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJJdGVyYXRlQ3Vyc29yRGF0YS5j
cHAKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBJREJJdGVyYXRlQ3Vy
c29yRGF0YSBJREJJdGVyYXRlQ3Vyc29yRGF0YTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKIHsKLSAg
ICByZXR1cm4geyBrZXlEYXRhLmlzb2xhdGVkQ29weSgpLCBwcmltYXJ5S2V5RGF0YS5pc29sYXRl
ZENvcHkoKSwgY291bnQgfTsKKyAgICByZXR1cm4geyBrZXlEYXRhLmlzb2xhdGVkQ29weSgpLCBw
cmltYXJ5S2V5RGF0YS5pc29sYXRlZENvcHkoKSwgY291bnQsIG9wdGlvbiB9OwogfQogCiAjaWYg
IUxPR19ESVNBQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2hhcmVkL0lEQkl0ZXJhdGVDdXJzb3JEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zaGFyZWQvSURCSXRlcmF0ZUN1cnNvckRhdGEuaAppbmRleCA4ZDMxNWM1YTZh
MzE3NGYxZTIzMWE0MGExMTU5NmNmZTgyZjNiMWIxLi40ZGY2YzY0NWYzYjI4MWU3Y2EwMGJkOWQ5
MmJiNzFkMGM0ZmI0MGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zaGFyZWQvSURCSXRlcmF0ZUN1cnNvckRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCSXRlcmF0ZUN1cnNvckRhdGEuaApAQCAtMzUsNiAr
MzUsNyBAQCBzdHJ1Y3QgSURCSXRlcmF0ZUN1cnNvckRhdGEgewogICAgIElEQktleURhdGEga2V5
RGF0YTsKICAgICBJREJLZXlEYXRhIHByaW1hcnlLZXlEYXRhOwogICAgIHVuc2lnbmVkIGNvdW50
OworICAgIEluZGV4ZWREQjo6Q3Vyc29ySXRlcmF0ZU9wdGlvbiBvcHRpb24geyBJbmRleGVkREI6
OkN1cnNvckl0ZXJhdGVPcHRpb246OlJlcGx5IH07CiAKICAgICBXRUJDT1JFX0VYUE9SVCBJREJJ
dGVyYXRlQ3Vyc29yRGF0YSBpc29sYXRlZENvcHkoKSBjb25zdDsKIApAQCAtNTAsNiArNTEsNyBA
QCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBJREJJdGVyYXRlQ3Vyc29yRGF0YTo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCBrZXlEYXRhIDw8
IHByaW1hcnlLZXlEYXRhIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90Pihjb3VudCk7CisgICAgZW5j
b2Rlci5lbmNvZGVFbnVtKG9wdGlvbik7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+CkBA
IC03Myw5ICs3NSwxMSBAQCBib29sIElEQkl0ZXJhdGVDdXJzb3JEYXRhOjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlciwgSURCSXRlcmF0ZUN1cnNvckRhdGEmIGl0ZXJhdAogCiAgICAgaWYgKGNvdW50
ID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KICAgICBpdGVyYXRvckN1cnNvckRhdGEuY291bnQgPSBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oY291bnQpOwogCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0oaXRlcmF0b3JDdXJz
b3JEYXRhLm9wdGlvbikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIHJldHVybiB0cnVl
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggYjE4ZTc0MjQ2YmYxZjI3ZWZmNzliMDc2OWZlNjgwZDIzYjM1OWZlMi4uNzk3
NTVkNzBmNmJhM2VlMmU1ZWZiOTgwOGViMzMyYzc5NzNhOWYzOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQwMyw3ICsxNDAz
LDcgQEAKIAkJNTEwRDRBMzQxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUVycm9yLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBENEEyRTEw
MzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtRXJyb3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTBENEEzNzEwMzE2NUVFMDA0OUVBNTQg
LyogU29ja2V0U3RyZWFtSGFuZGxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTBENEEzMTEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFu
ZGxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NTEwRDRBMzgxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwRDRBMzIxMDMx
NjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTUxMTBGQ0ZDMUUwMzY0MUQwMDZG
OEQwQiAvKiBJREJDdXJzb3JSZWNvcmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxMTBGQ0ZCMUUwMzYyQTUwMDZGOEQwQiAvKiBJREJDdXJzb3JSZWNv
cmQuaCAqLzsgfTsKKwkJNTExMEZDRkMxRTAzNjQxRDAwNkY4RDBCIC8qIElEQkN1cnNvclJlY29y
ZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExMEZD
RkIxRTAzNjJBNTAwNkY4RDBCIC8qIElEQkN1cnNvclJlY29yZC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxMUVDMTI4MUM1MEFBQ0EwMDMyRjk4
MyAvKiBJREJTZXJpYWxpemF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTFFQzEyNjFDNTBBQTU3MDAzMkY5ODMgLyogSURCU2VyaWFsaXphdGlv
bi5oICovOyB9OwogCQk1MTFFQzEyQzFDNTBBQkJGMDAzMkY5ODMgLyogU1FMaXRlSURCVHJhbnNh
Y3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
MUVDMTJBMUM1MEFCQkEwMDMyRjk4MyAvKiBTUUxpdGVJREJUcmFuc2FjdGlvbi5oICovOyB9Owog
CQk1MTFFQzEzMDFDNTBBQkY1MDAzMkY5ODMgLyogU1FMaXRlSURCQ3Vyc29yLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTFFQzEyRTFDNTBBQkVDMDAz
MkY5ODMgLyogU1FMaXRlSURCQ3Vyc29yLmggKi87IH07CkBAIC0xMzg3OSwxMiArMTM4NzksMTIg
QEAKIAkJQ0Q5NEE1Q0MxRjcxQ0I2OTAwRjUyNUM1IC8qIENETVJlcXVpcmVtZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENETVJlcXVpcmVtZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUNEOTRBNUNEMUY3MUNCNjkwMEY1MjVDNSAvKiBDRE1LZXlTeXN0
ZW1Db25maWd1cmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENETUtl
eVN5c3RlbUNvbmZpZ3VyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q5
NEE1Q0UxRjcxQ0I2QTAwRjUyNUM1IC8qIENETUluc3RhbmNlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENETUluc3RhbmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUNEOTRBNUNGMUY3MUNCNjEwMEY1MjVDNSAvKiBDRE1Qcm94eS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDRE1Qcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDRDk0QTVDRjFGNzFDQjYxMDBGNTI1RDUgLyogQ0RNUHJveHkuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ0RNUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDRDk0QTVDRjFGNzFDQjZBMDBGNTI1QzUgLyogQ0RNUHJpdmF0ZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDRE1Qcml2YXRlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUNEOTRBNUQwMUY3MUNCNkIwMEY1MjVDNSAvKiBDRE1SZXN0cmlj
dGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ0RNUmVzdHJpY3Rpb25z
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEOTRBNUQxMUY3MUNCNkIwMEY1MjVD
NSAvKiBDRE1GYWN0b3J5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IENETUZhY3RvcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDk0QTVEMjFG
NzFDQjZCMDBGNTI1QzUgLyogQ0RNRmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDRE1GYWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUNEOTRB
NUNGMUY3MUNCNjEwMEY1MjVENSAvKiBDRE1Qcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBDRE1Qcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUNEOTRBNUNGMUY3MUNCNjEwMEY1MjVDNSAvKiBDRE1Qcm94eS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDRE1Qcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDRDk0QTVEMzFGNzFDQjZDMDBGNTI1QzUgLyogQ0RNTWVkaWFDYXBhYmlsaXR5LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENETU1lZGlhQ2FwYWJpbGl0eS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDk0QTVENDFGNzFDQjZDMDBGNTI1QzUgLyogQ0RN
S2V5U3RhdHVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENETUtleVN0YXR1
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDk0QTVENTFGNzFDQjZEMDBGNTI1
QzUgLyogQ0RNU2Vzc2lvblR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q0RNU2Vzc2lvblR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390566</attachid>
            <date>2020-02-12 15:02:03 -0800</date>
            <delta_ts>2020-02-12 16:14:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207602-20200212150202.patch</filename>
            <type>text/plain</type>
            <size>54663</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2NDgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWI1OWQwMmVhOGFmYTg2
MjkyYjU0NmI5YjUxZGExMjAxMThkZTgyYi4uYmZlODY2YWQxNTU4YTVlZDdiOGQwZjg0NTkyNzYy
MjNmYjM3YTNiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNSBAQAorMjAyMC0wMi0xMiAgU2lo
dWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBJbmRleGVkREI6IHByZWZl
dGNoIGN1cnNvciByZWNvcmRzIG9uIGNsaWVudCBzaWRlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc2MDIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzU4NDgzOTI3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIENhY2hlIGN1cnNvciByZWNvcmRzIG9uIG9uIGNsaWVudCBzaWRlIGFuZCB1c2UgdGhvc2Ug
cmVjb3JkcyBmb3IgaXRlcmF0ZSBvcGVyYXRpb25zLgorCisgICAgICAgIFRoaXMgbWFrZXMgY3Vy
c29yIGNvbnRpbnVlL2FkdmFuY2UgdGVzdHMgaW4gUGVyZm9ybWFuY2VUZXN0cy9JbmRleGVkREIv
YmFzaWNzIH4zeCBmYXN0ZXIuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorCisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QkN1cnNvcjo6c2V0R2V0UmVzdWx0KTogUmVjb3JkIHRoZSBJRCBvZiBUcmFuc2FjdGlvbk9wZXJh
dGlvbiB0aGF0IHVwZGF0ZXMgY2FjaGUuCisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6Oml0
ZXJhdGVXaXRoUHJlZmV0Y2hlZFJlY29yZHMpOiBJREJDdXJzb3IgdXNlcyBjYWNoZWQgcmVjb3Jk
cyBmb3IgaXRlcmF0ZSBvcGVydGFpb25zIGlmIAorICAgICAgICB0aGVyZSBpcyBubyB3cml0ZSBv
cGVyYXRpb24gYmV0d2VlbiBsYXN0IGNhY2hlIHVwZGF0ZSBhbmQgY3VycmVudCBpdGVyYXRpb24g
b3BlcmF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yOjpjbGVhclByZWZldGNoZWRS
ZWNvcmRzKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaDoKKworICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkdldFJlc3VsdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJREJHZXRSZXN1bHQ6Omlzb2xhdGVkQ29weSk6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCR2V0UmVzdWx0Lmg6CisgICAgICAgIChXZWJDb3JlOjpJREJHZXRSZXN1bHQ6OklE
QkdldFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJHZXRSZXN1bHQ6OnByZWZldGNoZWRS
ZWNvcmRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkdldFJlc3VsdDo6ZW5jb2RlIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkdldFJlc3VsdDo6ZGVjb2RlKToKKworICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwOiBSZWNvcmQgY29ycmVzcG9uZGlu
ZyBUcmFuc2FjdGlvbk9wZXJhdGlvbiBJRCBpbiByZXF1ZXN0LgorICAgICAgICAoV2ViQ29yZTo6
SURCUmVxdWVzdDo6ZGlkT3Blbk9ySXRlcmF0ZUN1cnNvcik6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvSURCUmVxdWVzdC5oOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6cGVu
ZGluZ0N1cnNvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpzZXRUcmFu
c2FjdGlvbk9wZXJhdGlvbklEKToKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRy
YW5zYWN0aW9uLmNwcDogSWYgYSBjdXJzb3IgaXRlcmF0ZSByZXF1ZXN0IGNhbiBiZSBoYW5kbGVk
IHdpdGggY2FjaGVkIHJlY29yZHMsCisgICAgICAgIElEQkNsaWVudCBkb2VzIG5lZWQgdG8gc2Vu
ZCByZXF1ZXN0IHRvIElEQlNlcnZlciBhbmQgd2FpdCBmb3IgcmVzcG9uc2UuIEJ1dCByZXF1ZXN0
cyBiZWZvcmUgdGhlIGl0ZXJhdGUgcmVxdWVzdAorICAgICAgICBtYXkgbmVlZCB0byB3YWl0IHNl
cnZlciB0byBhbnN3ZXIsIGFuZCBzcGVjIHJlcXVpcmVzIHRvIGhhbmRsZSByZXF1ZXN0cyBpbiBv
cmRlci4gVGhlcmVmb3JlLCB3ZSBub3cga2VlcCBhbGwgdGhlIAorICAgICAgICByZXN1bHRzIGlu
IG1fdHJhbnNhY3Rpb25PcGVyYXRpb25SZXN1bHRNYXAgYW5kIGhhbmRsZSB0aGUgcmVzdWx0IGFj
Y29yZGluZyB0byB0aGUgb3JkZXJpbmcgaW4gCisgICAgICAgIG1fdHJhbnNhY3Rpb25PcGVyYXRp
b25zSW5Qcm9ncmVzc1F1ZXVlLgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmFi
b3J0SW5Qcm9ncmVzc09wZXJhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rp
b246OnJlbW92ZVJlcXVlc3QpOiBCZWNhdXNlIHJlc3VsdCBvZiBhIGN1cnNvciByZXF1ZXN0IGNh
biBiZSBhbnN3ZXJlZCBzb29uZXIsIGl0IGlzIAorICAgICAgICBwb3NzaWJsZSB0aGF0IGluIGZp
bmlzaGVkRGlzcGF0Y2hFdmVudEZvclJlcXVlc3QsIG1fY3VycmVudGx5Q29tcGxldGluZ1JlcXVl
c3QsIHdoaWNoIGlzIGEgY3Vyc29yIHJlcXVlc3QsIGlzIAorICAgICAgICBzZXQgdG8gbnVsbHB0
ciwgYW5kIHRoZW4gaXQgaXMgc2V0IHRvIHRoZSBzYW1lIGN1cnNvciByZXF1ZXN0IGluIGhhbmRs
ZU9wZXJhdGlvbnNDb21wbGV0ZWRPblNlcnZlci4gVGhpcyAKKyAgICAgICAgaGFwcGVucyBpbiBk
aXNwYXRjaEV2ZW50IG9mIHRoZSBjdXJzb3IgcmVxdWVzdCwgd2hlcmUgcmVxdWVzdCB3b3VsZCBy
ZW1vdmUgaXRzZWxmIGZyb20gdHJhbnNhY3Rpb24gYXQgdGhlIGVuZC4KKyAgICAgICAgSW4gdGhp
cyBjYXNlLCB0cmFuc2FjdGlvbiBtYXkgY29tbWl0IGFmdGVyIHRoZSByZXF1ZXN0IGxpc3QgYmVj
b21lcyBlbXB0eS4gQnV0IHRyYW5zYWN0aW9uIHNob3VsZCBub3QgYmVjYXVzZQorICAgICAgICB0
aGF0IHJlcXVlc3QgaXMgc3RpbGwgdmFsaWQgYXMgbV9jdXJyZW50bHlDb21wbGV0aW5nUmVxdWVz
dCBhbmQgc2hvdWxkIG5vdCBiZSByZW1vdmVkLgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNh
Y3Rpb246OnNjaGVkdWxlT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0
aW9uOjpvcGVyYXRpb25Db21wbGV0ZWRPblNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJU
cmFuc2FjdGlvbjo6aGFuZGxlT3BlcmF0aW9uc0NvbXBsZXRlZE9uU2VydmVyKTogQWxsIHJlcXVl
c3RzIHdlcmUgc2VudCB0byBJREJTZXJ2ZXIgYW5kIHRoZQorICAgICAgICByZXNwb25zZS9yZXN1
bHQgb3JkZXIgd291bGQgbmF0dXJhbGx5IGJlIHRoZSBzYW1lIGFzIHJlcXVlc3Qgb3JkZXIuIE5v
dyB0aGF0IHNvbWUgcmVzdWx0cyBjYW4gYmUgZ2VuZXJhdGVkCisgICAgICAgIHNvb25lciwgd2Ug
bm8gbG9uZ2VyIGhhbmRsZSByZXF1ZXN0cyB1c2luZyBtX2NvbXBsZXRlZE9uU2VydmVyUXVldWUu
CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6Y3JlYXRlT2JqZWN0U3RvcmUpOiBN
YXJrIGFzIHdyaXRlIG9wZXJhdGlvbiB0byB0cmFjayBsYXN0IHdyaXRlIG9wZXJhdGlvbi4KKyAg
ICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZW5hbWVPYmplY3RTdG9yZSk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmNyZWF0ZUluZGV4KTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cmVuYW1lSW5kZXgpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0RGVsZXRlUmVjb3JkKTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cmVxdWVzdENsZWFyT2Jq
ZWN0U3RvcmUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZXF1
ZXN0UHV0T3JBZGQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpk
ZWxldGVPYmplY3RTdG9yZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rp
b246OmRlbGV0ZUluZGV4KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlv
bjo6aXRlcmF0ZUN1cnNvck9uU2VydmVyKTogT25seSB1c2UgY2FjaGVkIHJlY29yZHMgaWYgdGhl
IHJlcXVlc3QgZG9lcyBub3Qgc3BlY2lmeSB0YXJnZXQKKyAgICAgICAga2V5LiBJZiBjdXJzb3Ig
aXMgaXRlcmF0ZWQgc3VjY2Vzc2Z1bGx5IHdpdGggY2FjaGUsIHNlbmQgYSBtZXNzYWdlIHRvIElE
QlNlcnZlciB0byBub3RpZnkgYWJvdXQgdGhlIHByb2dyZXNzIGJ1dAorICAgICAgICBkb24ndCBu
ZWVkIGl0IHRvIHJlcGx5LiBPdGhlcndpc2UsIGZhbGwgYmFjayB0byBkZXBlbmQgb24gSURCU2Vy
dmVyIHRvIGFuc3dlciB0aGUgcmVxdWVzdC4KKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0
aW9uOjpnZW5lcmF0ZU9wZXJhdGlvbklEKTogVHJhbnNhY3Rpb25PcGVyYXRpb24gSUQgaXMgdW5p
cXVlIGluIGEgdHJhbnNhY3Rpb24uCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJh
bnNhY3Rpb24uaDoKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0luZGV4ZWREQi5oOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uUHJveHkuY3Bw
OiAKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5OjppdGVy
YXRlQ3Vyc29yKTogSWYgdGhlIGl0ZXJhdGVDdXJzb3IgZG9lcyBub3QgbmVlZCBhbiBhbnN3ZXIs
IGRvbid0CisgICAgICAgIHRyYWNrIGl0IGluIElEQkNvbm5lY3Rpb25Qcm94eS4KKworICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uOjpUcmFuc2Fj
dGlvbk9wZXJhdGlvbik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5z
YWN0aW9uT3BlcmF0aW9uLmg6IEFkZCBJRCB0byBUcmFuc2FjdGlvbk9wZXJhdGlvbi4KKyAgICAg
ICAgKFdlYkNvcmU6OklEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb246Om9wZXJhdGlvbklE
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRp
b246OlRyYW5zYWN0aW9uT3BlcmF0aW9uKToKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9JREJCYWNraW5nU3RvcmUuaDogcmVtb3ZlIHByZWZldGNoQ3Vyc29yIGFzIGl0IGlz
IG5vdCB1c2VkIG5vdy4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5
SURCQmFja2luZ1N0b3JlLmg6IERpdHRvLiBBbHNvIHRoaXMgcGF0Y2ggb25seSBkZWFscyB3aXRo
IHByZWZldGNoaW5nIGluIAorICAgICAgICBwZXJzaXN0ZW50IHN0b3JlLgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuaDoKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVJ
bmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6Z2V0QWxsSW5kZXhSZWNvcmRzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FM
aXRlSURCQmFja2luZ1N0b3JlOjpnZXRJbmRleFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6aXRlcmF0ZUN1cnNvcik6IE9ubHkgcHJl
ZmV0Y2ggYXQgd2hlbiByZXF1ZXN0IG5lZWRzIHRvIGJlIGFuc3dlcmVkLgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OnByZWZldGNoQ3Vyc29yKTog
RGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFj
a2luZ1N0b3JlLmg6CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRl
SURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vy
c29yOjpjdXJyZW50RGF0YSk6IFByb3ZpZGUgYW4gb3B0aW9uIHRvIGluY2x1ZGUgcHJlZmV0Y2hl
ZCByZWNvcmRzIGluIHJlc3VsdC4KKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRl
SURCQ3Vyc29yOjpvYmplY3RTdG9yZVJlY29yZHNDaGFuZ2VkKTogUmVzZXQgY291bnQgdG8gcHJl
ZmV0Y2ggd2hlbiB0aGVyZSBpcyBhIAorICAgICAgICBjaGFuZ2UgdG8gbWFrZSBwcmVmZXRjaCBh
ZGFwdGl2ZS4KKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpv
YmplY3RTdG9yZVJlY29yZHNDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
U1FMaXRlSURCQ3Vyc29yOjpwcmVmZXRjaE9uZVJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJTZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6aW5jcmVhc2VDb3VudFRvUHJlZmV0Y2gpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OnByZWZldGNoKTogQ291
bnQgdG8gcHJlZmV0Y2ggaXMgZGVjaWRlZCBieSBTUUxpdGVDdXJzb3Igbm93LgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OmludGVybmFsRmV0Y2hOZXh0UmVj
b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpjdXJy
ZW50VmFsdWUgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxp
dGVJREJDdXJzb3IuaDoKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9Vbmlx
dWVJREJEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlE
QkRhdGFiYXNlOjppdGVyYXRlQ3Vyc29yKTogTW92ZSBjYWxsIHRvIHByZWZldGNoIGN1cnNvciB0
byBTUUxpdGVJREJCYWNraW5nU3RvcmUuCisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVu
aXF1ZUlEQkRhdGFiYXNlOjpwcmVmZXRjaEN1cnNvcik6IERlbGV0ZWQuCisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmg6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9u
OjppdGVyYXRlQ3Vyc29yKToKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9J
REJDdXJzb3JSZWNvcmQuaDogU3RvcCB1c2UgcG9pbnRlciBmb3IgSURCVmFsdWUgZm9yIGVhc2ll
ciBlbmNvZGluZyBhbmQgZGVjb2RpbmcuCisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3JSZWNv
cmQ6OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yUmVjb3JkOjppc29s
YXRlZENvcHkgY29uc3QpOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lE
Qkl0ZXJhdGVDdXJzb3JEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkl0ZXJhdGVDdXJz
b3JEYXRhOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L3NoYXJlZC9JREJJdGVyYXRlQ3Vyc29yRGF0YS5oOiBBZGQgYW4gb3B0aW9uIHRvIGxldCBJREJT
ZXJ2ZXIga25vdyB3aGV0aGVyIGl0IHNob3VsZCBhbnN3ZXIKKyAgICAgICAgdGhlIGN1cnNvciBy
ZXF1ZXN0LiAKKyAgICAgICAgKFdlYkNvcmU6OklEQkl0ZXJhdGVDdXJzb3JEYXRhOjplbmNvZGUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCSXRlcmF0ZUN1cnNvckRhdGE6OmRlY29kZSk6
CisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMjAt
MDItMTIgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBTaHJp
bmsgQ2FjaGVkUmVzb3VyY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21h
a2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IGFmODc3N2UzZjA1YmZiM2Ey
ZGFiNDA3OGZlNmRhODBlNGU3ZDIyNjAuLjE3YzhjMTZiN2JmNmRjMmU2MzU0MjZkYmVmMDU5OTk4
NjFhMDA5MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIv
U291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtNjgsNiArNjgsNyBAQCBzZXQoV2ViQ29y
ZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uaAogCiAgICAgTW9kdWxlcy9pbmRleGVkZGIv
c2hhcmVkL0lEQkN1cnNvckluZm8uaAorICAgIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJD
dXJzb3JSZWNvcmQuaAogICAgIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJEYXRhYmFzZUlu
Zm8uaAogICAgIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJFcnJvci5oCiAgICAgTW9kdWxl
cy9pbmRleGVkZGIvc2hhcmVkL0lEQkdldEFsbFJlY29yZHNEYXRhLmgKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCmluZGV4IDM2OGVkYzIwNDgzYjU0
MWFjZDdiM2JmNTliZjVjZjE3YTFjOTNhMGIuLjY1Yjg5YjU4NWI1Y2VhZmFmZjljNzAxMGYwMTlm
NTVhMTVlNDZhNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
Q3Vyc29yLmNwcApAQCAtMzEyLDcgKzMxMiw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxXZWJDb3JlOjpJ
REJSZXF1ZXN0Pj4gSURCQ3Vyc29yOjpkZWxldGVGdW5jdGlvbihKU0dsb2JhbE9iamVjdCYKICAg
ICByZXR1cm4gcmVxdWVzdDsKIH0KIAotYm9vbCBJREJDdXJzb3I6OnNldEdldFJlc3VsdChJREJS
ZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBJREJHZXRSZXN1bHQmIGdldFJlc3VsdCkKK2Jvb2wgSURC
Q3Vyc29yOjpzZXRHZXRSZXN1bHQoSURCUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgSURCR2V0UmVz
dWx0JiBnZXRSZXN1bHQsIHVpbnQ2NF90IG9wZXJhdGlvbklEKQogewogICAgIExPRyhJbmRleGVk
REIsICJJREJDdXJzb3I6OnNldEdldFJlc3VsdCAtIGN1cnJlbnQga2V5ICVzIiwgZ2V0UmVzdWx0
LmtleURhdGEoKS5sb2dnaW5nU3RyaW5nKCkuc3Vic3RyaW5nKDAsIDEwMCkudXRmOCgpLmRhdGEo
KSk7CiAgICAgQVNTRVJUKGNhbkN1cnJlbnRUaHJlYWRBY2Nlc3NUaHJlYWRMb2NhbERhdGEoZWZm
ZWN0aXZlT2JqZWN0U3RvcmUoKS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFk
KCkpKTsKQEAgLTM0OSw2ICszNDksMTMgQEAgYm9vbCBJREJDdXJzb3I6OnNldEdldFJlc3VsdChJ
REJSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBJREJHZXRSZXN1bHQmIGdldFJlc3VsdCkKICAgICAg
ICAgbV9rZXlQYXRoID0gZ2V0UmVzdWx0LmtleVBhdGgoKTsKICAgICB9CiAKKyAgICBhdXRvIHBy
ZWZldGNoZWRSZWNvcmRzID0gZ2V0UmVzdWx0LnByZWZldGNoZWRSZWNvcmRzKCk7CisgICAgaWYg
KCFwcmVmZXRjaGVkUmVjb3Jkcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgZm9yIChhdXRvJiByZWNv
cmQgOiBwcmVmZXRjaGVkUmVjb3JkcykKKyAgICAgICAgICAgIG1fcHJlZmV0Y2hlZFJlY29yZHMu
YXBwZW5kKHJlY29yZCk7CisgICAgICAgIG1fcHJlZmV0Y2hPcGVyYXRpb25JRCA9IG9wZXJhdGlv
bklEOworICAgIH0KKwogICAgIG1fZ290VmFsdWUgPSB0cnVlOwogICAgIHJldHVybiB0cnVlOwog
fQpAQCAtMzYwLDYgKzM2NywyNiBAQCB2b2lkIElEQkN1cnNvcjo6Y2xlYXJXcmFwcGVycygpCiAg
ICAgbV92YWx1ZVdyYXBwZXIuY2xlYXIoKTsKIH0KIAorT3B0aW9uYWw8SURCR2V0UmVzdWx0PiBJ
REJDdXJzb3I6Oml0ZXJhdGVXaXRoUHJlZmV0Y2hlZFJlY29yZHModW5zaWduZWQgY291bnQsIHVp
bnQ2NF90IGxhc3RXcml0ZU9wZXJhdGlvbklEKQoreworICAgIHVuc2lnbmVkIHN0ZXAgPSBjb3Vu
dCA+IDAgPyBjb3VudCA6IDE7CisgICAgaWYgKHN0ZXAgPiBtX3ByZWZldGNoZWRSZWNvcmRzLnNp
emUoKSB8fCBtX3ByZWZldGNoT3BlcmF0aW9uSUQgPD0gbGFzdFdyaXRlT3BlcmF0aW9uSUQpCisg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICB3aGlsZSAoLS1zdGVwKQorICAgICAg
ICBtX3ByZWZldGNoZWRSZWNvcmRzLnJlbW92ZUZpcnN0KCk7CisKKyAgICBhdXRvIHJlY29yZCA9
IG1fcHJlZmV0Y2hlZFJlY29yZHMudGFrZUZpcnN0KCk7CisKKyAgICBMT0coSW5kZXhlZERCLCAi
SURCVHJhbnNhY3Rpb246Oml0ZXJhdGVXaXRoUHJlZmV0Y2hlZFJlY29yZHMgY29uc3VtZXMgJXUg
cmVjb3JkcyIsIGNvdW50ID4gMCA/IGNvdW50IDogMSk7CisgICAgcmV0dXJuIElEQkdldFJlc3Vs
dChyZWNvcmQua2V5LCByZWNvcmQucHJpbWFyeUtleSwgSURCVmFsdWUocmVjb3JkLnZhbHVlKSwg
ZWZmZWN0aXZlT2JqZWN0U3RvcmUoKS5rZXlQYXRoKCkpOworfQorCit2b2lkIElEQkN1cnNvcjo6
Y2xlYXJQcmVmZXRjaGVkUmVjb3JkcygpCit7CisgICAgbV9wcmVmZXRjaGVkUmVjb3Jkcy5jbGVh
cigpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5E
RVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkN1cnNvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vy
c29yLmgKaW5kZXggNDYyMmU3MDMzNDRiMzYwODBhNzFkZWEzMmRmOGE1MzFkY2ZjNThhYy4uN2Jj
OGY4YzAxN2RmNTBkMjZmOTlhNGJhM2I0MzI5YWViNjc1ZjhkOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmgKQEAgLTgxLDEwICs4MSwxMyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBjbGVhcldyYXBwZXJzKCk7CiAgICAgSURCUmVxdWVzdCogcmVxdWVzdCgp
IHsgcmV0dXJuIG1fcmVxdWVzdC5nZXQoKTsgfQogCi0gICAgYm9vbCBzZXRHZXRSZXN1bHQoSURC
UmVxdWVzdCYsIGNvbnN0IElEQkdldFJlc3VsdCYpOworICAgIGJvb2wgc2V0R2V0UmVzdWx0KElE
QlJlcXVlc3QmLCBjb25zdCBJREJHZXRSZXN1bHQmLCB1aW50NjRfdCBvcGVyYXRpb25JRCk7CiAK
ICAgICB2aXJ0dWFsIGJvb2wgaXNLZXlDdXJzb3JXaXRoVmFsdWUoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogCisgICAgT3B0aW9uYWw8SURCR2V0UmVzdWx0PiBpdGVyYXRlV2l0aFByZWZldGNo
ZWRSZWNvcmRzKHVuc2lnbmVkIGNvdW50LCB1aW50NjRfdCBsYXN0V3JpdGVPcGVyYXRpb25JRCk7
CisgICAgdm9pZCBjbGVhclByZWZldGNoZWRSZWNvcmRzKCk7CisKIHByb3RlY3RlZDoKICAgICBJ
REJDdXJzb3IoSURCT2JqZWN0U3RvcmUmLCBjb25zdCBJREJDdXJzb3JJbmZvJik7CiAgICAgSURC
Q3Vyc29yKElEQkluZGV4JiwgY29uc3QgSURCQ3Vyc29ySW5mbyYpOwpAQCAtMTEzLDYgKzExNiw5
IEBAIHByaXZhdGU6CiAgICAgSlNWYWx1ZUluV3JhcHBlZE9iamVjdCBtX2tleVdyYXBwZXI7CiAg
ICAgSlNWYWx1ZUluV3JhcHBlZE9iamVjdCBtX3ByaW1hcnlLZXlXcmFwcGVyOwogICAgIEpTVmFs
dWVJbldyYXBwZWRPYmplY3QgbV92YWx1ZVdyYXBwZXI7CisKKyAgICBEZXF1ZTxJREJDdXJzb3JS
ZWNvcmQ+IG1fcHJlZmV0Y2hlZFJlY29yZHM7CisgICAgdWludDY0X3QgbV9wcmVmZXRjaE9wZXJh
dGlvbklEIHsgMCB9OwogfTsKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCR2V0UmVzdWx0LmNwcAppbmRleCA5NDllODEzMzk3ZjMxYmYxOGU2NWJiYzU1ODIx
MmQwODgxNmMwNmZmLi4xMmVjODcwNzMyOTcwMWE0Y2EzNTAxMmRlNTJiZmIxMjczNTI5YjZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkdldFJlc3VsdC5j
cHAKQEAgLTU1LDYgKzU1LDcgQEAgdm9pZCBJREJHZXRSZXN1bHQ6Omlzb2xhdGVkQ29weShjb25z
dCBJREJHZXRSZXN1bHQmIHNvdXJjZSwgSURCR2V0UmVzdWx0JiBkZXN0aW4KICAgICBkZXN0aW5h
dGlvbi5tX3ByaW1hcnlLZXlEYXRhID0gc291cmNlLm1fcHJpbWFyeUtleURhdGEuaXNvbGF0ZWRD
b3B5KCk7CiAgICAgZGVzdGluYXRpb24ubV9rZXlQYXRoID0gV2ViQ29yZTo6aXNvbGF0ZWRDb3B5
KHNvdXJjZS5tX2tleVBhdGgpOwogICAgIGRlc3RpbmF0aW9uLm1faXNEZWZpbmVkID0gc291cmNl
Lm1faXNEZWZpbmVkOworICAgIGRlc3RpbmF0aW9uLm1fcHJlZmV0Y2hlZFJlY29yZHMgPSBzb3Vy
Y2UubV9wcmVmZXRjaGVkUmVjb3Jkcy5pc29sYXRlZENvcHkoKTsKIH0KIAogdm9pZCBJREJHZXRS
ZXN1bHQ6OnNldFZhbHVlKElEQlZhbHVlJiYgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkdldFJlc3VsdC5oCmluZGV4IGU4N2MzOTAxMjMzNDlkMTE1M2Qx
ZmMwOGM5ZTZiMmJmNzQ1MWIyNTMuLmQwM2Q4OWJhYzI0ODJjZDgzMTIzOGFmM2QyMjkwZjU2Zjkz
YTk2OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkdl
dFJlc3VsdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkdldFJl
c3VsdC5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkK
IAorI2luY2x1ZGUgIklEQkN1cnNvclJlY29yZC5oIgogI2luY2x1ZGUgIklEQktleS5oIgogI2lu
Y2x1ZGUgIklEQktleURhdGEuaCIKICNpbmNsdWRlICJJREJLZXlQYXRoLmgiCkBAIC03Niw2ICs3
NywxNSBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAorICAgIElEQkdldFJlc3VsdChjb25zdCBJ
REJLZXlEYXRhJiBrZXlEYXRhLCBjb25zdCBJREJLZXlEYXRhJiBwcmltYXJ5S2V5RGF0YSwgSURC
VmFsdWUmJiB2YWx1ZSwgY29uc3QgT3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgsIFZlY3Rv
cjxJREJDdXJzb3JSZWNvcmQ+JiYgcHJlZmV0ZWNoZWRSZWNvcmRzKQorICAgICAgICA6IG1fdmFs
dWUoV1RGTW92ZSh2YWx1ZSkpCisgICAgICAgICwgbV9rZXlEYXRhKGtleURhdGEpCisgICAgICAg
ICwgbV9wcmltYXJ5S2V5RGF0YShwcmltYXJ5S2V5RGF0YSkKKyAgICAgICAgLCBtX2tleVBhdGgo
a2V5UGF0aCkKKyAgICAgICAgLCBtX3ByZWZldGNoZWRSZWNvcmRzKFdURk1vdmUocHJlZmV0ZWNo
ZWRSZWNvcmRzKSkKKyAgICB7CisgICAgfQorCiAgICAgZW51bSBJc29sYXRlZENvcHlUYWcgeyBJ
c29sYXRlZENvcHkgfTsKICAgICBJREJHZXRSZXN1bHQoY29uc3QgSURCR2V0UmVzdWx0JiwgSXNv
bGF0ZWRDb3B5VGFnKTsKIApAQCAtODcsNiArOTcsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgSURC
S2V5RGF0YSYga2V5RGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fa2V5RGF0YTsgfQogICAgIGNvbnN0
IElEQktleURhdGEmIHByaW1hcnlLZXlEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9wcmltYXJ5S2V5
RGF0YTsgfQogICAgIGNvbnN0IE9wdGlvbmFsPElEQktleVBhdGg+JiBrZXlQYXRoKCkgY29uc3Qg
eyByZXR1cm4gbV9rZXlQYXRoOyB9CisgICAgY29uc3QgVmVjdG9yPElEQkN1cnNvclJlY29yZD4m
IHByZWZldGNoZWRSZWNvcmRzKCkgY29uc3QgeyByZXR1cm4gbV9wcmVmZXRjaGVkUmVjb3Jkczsg
fQogICAgIGJvb2wgaXNEZWZpbmVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0RlZmluZWQ7IH0KIAog
ICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsK
QEAgLTEwMSwxMyArMTEyLDE0IEBAIHByaXZhdGU6CiAgICAgSURCS2V5RGF0YSBtX2tleURhdGE7
CiAgICAgSURCS2V5RGF0YSBtX3ByaW1hcnlLZXlEYXRhOwogICAgIE9wdGlvbmFsPElEQktleVBh
dGg+IG1fa2V5UGF0aDsKKyAgICBWZWN0b3I8SURCQ3Vyc29yUmVjb3JkPiBtX3ByZWZldGNoZWRS
ZWNvcmRzOwogICAgIGJvb2wgbV9pc0RlZmluZWQgeyB0cnVlIH07CiB9OwogCiB0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPgogdm9pZCBJREJHZXRSZXN1bHQ6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAogewotICAgIGVuY29kZXIgPDwgbV9rZXlEYXRhIDw8IG1fcHJpbWFyeUtleURhdGEg
PDwgbV9rZXlQYXRoIDw8IG1faXNEZWZpbmVkIDw8IG1fdmFsdWU7CisgICAgZW5jb2RlciA8PCBt
X2tleURhdGEgPDwgbV9wcmltYXJ5S2V5RGF0YSA8PCBtX2tleVBhdGggPDwgbV9pc0RlZmluZWQg
PDwgbV92YWx1ZSA8PCBtX3ByZWZldGNoZWRSZWNvcmRzOwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPgpAQCAtMTM3LDYgKzE0OSwxMiBAQCBib29sIElEQkdldFJlc3VsdDo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIsIElEQkdldFJlc3VsdCYgcmVzdWx0KQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgcmVzdWx0Lm1fdmFsdWUgPSBXVEZNb3ZlKCp2YWx1ZSk7CiAKKyAgICBPcHRpb25h
bDxWZWN0b3I8SURCQ3Vyc29yUmVjb3JkPj4gcHJlZmV0Y2hlZFJlY29yZHM7CisgICAgZGVjb2Rl
ciA+PiBwcmVmZXRjaGVkUmVjb3JkczsKKyAgICBpZiAoIXByZWZldGNoZWRSZWNvcmRzKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgcmVzdWx0Lm1fcHJlZmV0Y2hlZFJlY29yZHMgPSBXVEZN
b3ZlKCpwcmVmZXRjaGVkUmVjb3Jkcyk7CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAppbmRleCAzMGY2
ZTVjZGY0ZDlmZGJjNjFjZTNhMjAzYzRhZDA2M2JkOGM1MmIzLi4zZDAyMTE5YzdhNTFlMWUxZmNh
MGVhMmVkNGM5ZDI1ZTg3NWUwMjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcApAQCAtNDk5LDcgKzQ5OSw3IEBAIHZvaWQgSURCUmVxdWVz
dDo6ZGlkT3Blbk9ySXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRh
KQogICAgIG1fcmVzdWx0V3JhcHBlciA9IHsgfTsKIAogICAgIGlmIChyZXN1bHREYXRhLnR5cGUo
KSA9PSBJREJSZXN1bHRUeXBlOjpJdGVyYXRlQ3Vyc29yU3VjY2VzcyB8fCByZXN1bHREYXRhLnR5
cGUoKSA9PSBJREJSZXN1bHRUeXBlOjpPcGVuQ3Vyc29yU3VjY2VzcykgewotICAgICAgICBpZiAo
bV9wZW5kaW5nQ3Vyc29yLT5zZXRHZXRSZXN1bHQoKnRoaXMsIHJlc3VsdERhdGEuZ2V0UmVzdWx0
KCkpICYmIG1fY3Vyc29yV3JhcHBlcikKKyAgICAgICAgaWYgKG1fcGVuZGluZ0N1cnNvci0+c2V0
R2V0UmVzdWx0KCp0aGlzLCByZXN1bHREYXRhLmdldFJlc3VsdCgpLCBtX2N1cnJlbnRUcmFuc2Fj
dGlvbk9wZXJhdGlvbklEKSAmJiBtX2N1cnNvcldyYXBwZXIpCiAgICAgICAgICAgICBtX3Jlc3Vs
dFdyYXBwZXIgPSBtX2N1cnNvcldyYXBwZXI7CiAgICAgICAgIGlmIChyZXN1bHREYXRhLmdldFJl
c3VsdCgpLmlzRGVmaW5lZCgpKQogICAgICAgICAgICAgbV9yZXN1bHQgPSBtX3BlbmRpbmdDdXJz
b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1
ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmgKaW5k
ZXggMjc4NTAxYmE2MGU5ZGUwMzAyODFkOGNiMmYxMTA2NzhiMGM5YjhiMy4uMjg2NjEzNDRiMGRl
MjE3NmY1YmVhYzM2MTMxNTQwZjEyNTZmZGRlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaApAQCAtMTE4LDcgKzExOCw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHdpbGxJdGVyYXRlQ3Vyc29yKElEQkN1cnNvciYpOwogICAgIHZvaWQgZGlkT3Blbk9y
SXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXN1bHREYXRhJik7CiAKLSAgICBjb25zdCBJREJDdXJz
b3IqIHBlbmRpbmdDdXJzb3IoKSBjb25zdCB7IHJldHVybiBtX3BlbmRpbmdDdXJzb3IuZ2V0KCk7
IH0KKyAgICBJREJDdXJzb3IqIHBlbmRpbmdDdXJzb3IoKSBjb25zdCB7IHJldHVybiBtX3BlbmRp
bmdDdXJzb3IgPyBtX3BlbmRpbmdDdXJzb3IuZ2V0KCkgOiBudWxscHRyOyB9CiAKICAgICB2b2lk
IHNldFNvdXJjZShJREJDdXJzb3ImKTsKICAgICB2b2lkIHNldFZlcnNpb25DaGFuZ2VUcmFuc2Fj
dGlvbihJREJUcmFuc2FjdGlvbiYpOwpAQCAtMTI3LDYgKzEyNyw4IEBAIHB1YmxpYzoKIAogICAg
IGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QgZmluYWw7CiAKKyAgICB2b2lkIHNldFRy
YW5zYWN0aW9uT3BlcmF0aW9uSUQodWludDY0X3QgdHJhbnNhY3Rpb25PcGVyYXRpb25JRCkgeyBt
X2N1cnJlbnRUcmFuc2FjdGlvbk9wZXJhdGlvbklEID0gdHJhbnNhY3Rpb25PcGVyYXRpb25JRDsg
fQorCiBwcm90ZWN0ZWQ6CiAgICAgSURCUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jiwg
SURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkmKTsKIApAQCAtMTkxLDYgKzE5Myw4IEBAIHBy
aXZhdGU6CiAKICAgICBib29sIG1fZGlzcGF0Y2hpbmdFdmVudCB7IGZhbHNlIH07CiAgICAgYm9v
bCBtX2hhc1VuY2F1Z2h0RXhjZXB0aW9uIHsgZmFsc2UgfTsKKworICAgIHVpbnQ2NF90IG1fY3Vy
cmVudFRyYW5zYWN0aW9uT3BlcmF0aW9uSUQgeyAwIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJU
cmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFu
c2FjdGlvbi5jcHAKaW5kZXggNDdmMmNiMGU1ZmY2M2M4NDlhOTkyY2Q4ZGY3YzdhZDI5ZDMwMTcy
ZC4uOGRkZjIwNzlhZjk1NDAyYjBhNDM0MGNjMjc5ZTk0Yjk3NTFmYTMwZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcApAQCAt
MjcyLDE1ICsyNzIsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjphYm9ydEluUHJvZ3Jlc3NPcGVy
YXRpb25zKGNvbnN0IElEQkVycm9yJiBlcnJvcikKICAgICAgICAgb3BlcmF0aW9uLT5kb0NvbXBs
ZXRlKElEQlJlc3VsdERhdGE6OmVycm9yKG9wZXJhdGlvbi0+aWRlbnRpZmllcigpLCBlcnJvcikp
OwogICAgIH0KIAotICAgIFZlY3RvcjxSZWZQdHI8SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJh
dGlvbj4+IGNvbXBsZXRlZE9uU2VydmVyQWJvcnRWZWN0b3I7Ci0gICAgY29tcGxldGVkT25TZXJ2
ZXJBYm9ydFZlY3Rvci5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fY29tcGxldGVkT25TZXJ2ZXJR
dWV1ZS5zaXplKCkpOwotICAgIHdoaWxlICghbV9jb21wbGV0ZWRPblNlcnZlclF1ZXVlLmlzRW1w
dHkoKSkKLSAgICAgICAgY29tcGxldGVkT25TZXJ2ZXJBYm9ydFZlY3Rvci51bmNoZWNrZWRBcHBl
bmQobV9jb21wbGV0ZWRPblNlcnZlclF1ZXVlLnRha2VGaXJzdCgpLmZpcnN0KTsKLQotICAgIGZv
ciAoYXV0byYgb3BlcmF0aW9uIDogY29tcGxldGVkT25TZXJ2ZXJBYm9ydFZlY3RvcikgewotICAg
ICAgICBtX2N1cnJlbnRseUNvbXBsZXRpbmdSZXF1ZXN0ID0gbnVsbHB0cjsKLSAgICAgICAgb3Bl
cmF0aW9uLT5kb0NvbXBsZXRlKElEQlJlc3VsdERhdGE6OmVycm9yKG9wZXJhdGlvbi0+aWRlbnRp
ZmllcigpLCBlcnJvcikpOwotICAgIH0KKyAgICBtX3RyYW5zYWN0aW9uT3BlcmF0aW9uUmVzdWx0
TWFwLmNsZWFyKCk7CiAKICAgICBtX2N1cnJlbnRseUNvbXBsZXRpbmdSZXF1ZXN0ID0gbnVsbHB0
cjsKICAgICBjb25uZWN0aW9uUHJveHkoKS5mb3JnZXRBY3RpdmVPcGVyYXRpb25zKGluUHJvZ3Jl
c3NBYm9ydFZlY3Rvcik7CkBAIC0zNzYsMTYgKzM2OCwyMiBAQCB2b2lkIElEQlRyYW5zYWN0aW9u
OjphZGRSZXF1ZXN0KElEQlJlcXVlc3QmIHJlcXVlc3QpCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpy
ZW1vdmVSZXF1ZXN0KElEQlJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgQVNTRVJUKGNhbkN1cnJl
bnRUaHJlYWRBY2Nlc3NUaHJlYWRMb2NhbERhdGEobV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkp
KTsKKyAgICBpZiAobV9jdXJyZW50bHlDb21wbGV0aW5nUmVxdWVzdCA9PSAmcmVxdWVzdCkKKyAg
ICAgICAgcmV0dXJuOworCiAgICAgbV9vcGVuUmVxdWVzdHMucmVtb3ZlKCZyZXF1ZXN0KTsKIAog
ICAgIGF1dG9Db21taXQoKTsKIH0KIAotdm9pZCBJREJUcmFuc2FjdGlvbjo6c2NoZWR1bGVPcGVy
YXRpb24oUmVmPElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24+JiYgb3BlcmF0aW9uKQor
dm9pZCBJREJUcmFuc2FjdGlvbjo6c2NoZWR1bGVPcGVyYXRpb24oUmVmPElEQkNsaWVudDo6VHJh
bnNhY3Rpb25PcGVyYXRpb24+JiYgb3BlcmF0aW9uLCBJc1dyaXRlT3BlcmF0aW9uIGlzV3JpdGVP
cGVyYXRpb24pCiB7CiAgICAgQVNTRVJUKCFtX3RyYW5zYWN0aW9uT3BlcmF0aW9uTWFwLmNvbnRh
aW5zKG9wZXJhdGlvbi0+aWRlbnRpZmllcigpKSk7CiAgICAgQVNTRVJUKGNhbkN1cnJlbnRUaHJl
YWRBY2Nlc3NUaHJlYWRMb2NhbERhdGEobV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpKTsKIAor
ICAgIGlmIChpc1dyaXRlT3BlcmF0aW9uID09IElzV3JpdGVPcGVyYXRpb246OlllcykKKyAgICAg
ICAgbV9sYXN0V3JpdGVPcGVyYXRpb25JRCA9IG9wZXJhdGlvbi0+b3BlcmF0aW9uSUQoKTsKKwog
ICAgIGF1dG8gaWRlbnRpZmllciA9IG9wZXJhdGlvbi0+aWRlbnRpZmllcigpOwogICAgIG1fcGVu
ZGluZ1RyYW5zYWN0aW9uT3BlcmF0aW9uUXVldWUuYXBwZW5kKG9wZXJhdGlvbi5jb3B5UmVmKCkp
OwogICAgIG1fdHJhbnNhY3Rpb25PcGVyYXRpb25NYXAuc2V0KGlkZW50aWZpZXIsIFdURk1vdmUo
b3BlcmF0aW9uKSk7CkBAIC0zOTgsNyArMzk2LDEwIEBAIHZvaWQgSURCVHJhbnNhY3Rpb246Om9w
ZXJhdGlvbkNvbXBsZXRlZE9uU2VydmVyKGNvbnN0IElEQlJlc3VsdERhdGEmIGRhdGEsIElEQkNs
CiAgICAgQVNTRVJUKGNhbkN1cnJlbnRUaHJlYWRBY2Nlc3NUaHJlYWRMb2NhbERhdGEobV9kYXRh
YmFzZS0+b3JpZ2luVGhyZWFkKCkpKTsKICAgICBBU1NFUlQoY2FuQ3VycmVudFRocmVhZEFjY2Vz
c1RocmVhZExvY2FsRGF0YShvcGVyYXRpb24ub3JpZ2luVGhyZWFkKCkpKTsKIAotICAgIG1fY29t
cGxldGVkT25TZXJ2ZXJRdWV1ZS5hcHBlbmQoeyAmb3BlcmF0aW9uLCBkYXRhIH0pOworICAgIGlm
ICghbV90cmFuc2FjdGlvbk9wZXJhdGlvbk1hcC5jb250YWlucyhvcGVyYXRpb24uaWRlbnRpZmll
cigpKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV90cmFuc2FjdGlvbk9wZXJhdGlvblJlc3Vs
dE1hcC5zZXQoJm9wZXJhdGlvbiwgSURCUmVzdWx0RGF0YShkYXRhKSk7CiAKICAgICBpZiAoIW1f
Y3VycmVudGx5Q29tcGxldGluZ1JlcXVlc3QpCiAgICAgICAgIGhhbmRsZU9wZXJhdGlvbnNDb21w
bGV0ZWRPblNlcnZlcigpOwpAQCAtNDA2LDEyICs0MDcsMTUgQEAgdm9pZCBJREJUcmFuc2FjdGlv
bjo6b3BlcmF0aW9uQ29tcGxldGVkT25TZXJ2ZXIoY29uc3QgSURCUmVzdWx0RGF0YSYgZGF0YSwg
SURCQ2wKIAogdm9pZCBJREJUcmFuc2FjdGlvbjo6aGFuZGxlT3BlcmF0aW9uc0NvbXBsZXRlZE9u
U2VydmVyKCkKIHsKLSAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OmNvbXBsZXRl
ZE9wZXJhdGlvblRpbWVyRmlyZWQgKCVwKSIsIHRoaXMpOworICAgIExPRyhJbmRleGVkREIsICJJ
REJUcmFuc2FjdGlvbjo6aGFuZGxlT3BlcmF0aW9uc0NvbXBsZXRlZE9uU2VydmVyIik7CiAgICAg
QVNTRVJUKGNhbkN1cnJlbnRUaHJlYWRBY2Nlc3NUaHJlYWRMb2NhbERhdGEobV9kYXRhYmFzZS0+
b3JpZ2luVGhyZWFkKCkpKTsKIAotICAgIHdoaWxlICghbV9jb21wbGV0ZWRPblNlcnZlclF1ZXVl
LmlzRW1wdHkoKSAmJiAhbV9jdXJyZW50bHlDb21wbGV0aW5nUmVxdWVzdCkgewotICAgICAgICBh
dXRvIGl0ZXJhdG9yID0gbV9jb21wbGV0ZWRPblNlcnZlclF1ZXVlLnRha2VGaXJzdCgpOwotICAg
ICAgICBpdGVyYXRvci5maXJzdC0+ZG9Db21wbGV0ZShpdGVyYXRvci5zZWNvbmQpOworICAgIHdo
aWxlICghbV90cmFuc2FjdGlvbk9wZXJhdGlvbnNJblByb2dyZXNzUXVldWUuaXNFbXB0eSgpICYm
ICFtX2N1cnJlbnRseUNvbXBsZXRpbmdSZXF1ZXN0KSB7CisgICAgICAgIFJlZlB0cjxJREJDbGll
bnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uPiBjdXJyZW50T3BlcmF0aW9uID0gbV90cmFuc2FjdGlv
bk9wZXJhdGlvbnNJblByb2dyZXNzUXVldWUuZmlyc3QoKTsKKyAgICAgICAgaWYgKCFtX3RyYW5z
YWN0aW9uT3BlcmF0aW9uUmVzdWx0TWFwLmNvbnRhaW5zKGN1cnJlbnRPcGVyYXRpb24pKQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGN1cnJlbnRPcGVyYXRpb24tPmRvQ29tcGxldGUo
bV90cmFuc2FjdGlvbk9wZXJhdGlvblJlc3VsdE1hcC50YWtlKGN1cnJlbnRPcGVyYXRpb24pKTsK
ICAgICB9CiB9CiAKQEAgLTYyMiw3ICs2MjYsNyBAQCBSZWY8SURCT2JqZWN0U3RvcmU+IElEQlRy
YW5zYWN0aW9uOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBJREJPYmplY3RTdG9yZUluZm8mCiAg
ICAgICAgIHByb3RlY3RlZFRoaXMtPmRpZENyZWF0ZU9iamVjdFN0b3JlT25TZXJ2ZXIocmVzdWx0
KTsKICAgICB9LCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBpbmZvID0gaW5mby5p
c29sYXRlZENvcHkoKV0gKGF1dG8mIG9wZXJhdGlvbikgewogICAgICAgICBwcm90ZWN0ZWRUaGlz
LT5jcmVhdGVPYmplY3RTdG9yZU9uU2VydmVyKG9wZXJhdGlvbiwgaW5mbyk7Ci0gICAgfSkpOwor
ICAgIH0pLCBJc1dyaXRlT3BlcmF0aW9uOjpZZXMpOwogCiAgICAgcmV0dXJuICpyYXdPYmplY3RT
dG9yZTsKIH0KQEAgLTY2NCw3ICs2NjgsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpyZW5hbWVP
YmplY3RTdG9yZShJREJPYmplY3RTdG9yZSYgb2JqZWN0U3RvcmUsIGNvbnN0IFN0cmluZwogICAg
ICAgICBwcm90ZWN0ZWRUaGlzLT5kaWRSZW5hbWVPYmplY3RTdG9yZU9uU2VydmVyKHJlc3VsdCk7
CiAgICAgfSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgb2JqZWN0U3RvcmVJZGVu
dGlmaWVyLCBuZXdOYW1lID0gbmV3TmFtZS5pc29sYXRlZENvcHkoKV0gKGF1dG8mIG9wZXJhdGlv
bikgewogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5yZW5hbWVPYmplY3RTdG9yZU9uU2VydmVyKG9w
ZXJhdGlvbiwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBuZXdOYW1lKTsKLSAgICB9KSk7CisgICAg
fSksIElzV3JpdGVPcGVyYXRpb246Olllcyk7CiAKICAgICBtX3JlZmVyZW5jZWRPYmplY3RTdG9y
ZXMuc2V0KG5ld05hbWUsIG1fcmVmZXJlbmNlZE9iamVjdFN0b3Jlcy50YWtlKG9iamVjdFN0b3Jl
LmluZm8oKS5uYW1lKCkpKTsKIH0KQEAgLTY5OSw3ICs3MDMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8
SURCSW5kZXg+IElEQlRyYW5zYWN0aW9uOjpjcmVhdGVJbmRleChJREJPYmplY3RTdG9yZSYgb2Jq
ZWN0U3RvcgogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kaWRDcmVhdGVJbmRleE9uU2VydmVyKHJl
c3VsdCk7CiAgICAgfSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaW5mbyA9IGlu
Zm8uaXNvbGF0ZWRDb3B5KCldIChhdXRvJiBvcGVyYXRpb24pIHsKICAgICAgICAgcHJvdGVjdGVk
VGhpcy0+Y3JlYXRlSW5kZXhPblNlcnZlcihvcGVyYXRpb24sIGluZm8pOwotICAgIH0pKTsKKyAg
ICB9KSwgSXNXcml0ZU9wZXJhdGlvbjo6WWVzKTsKIAogICAgIHJldHVybiBtYWtlVW5pcXVlPElE
QkluZGV4Pigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBpbmZvLCBvYmplY3RTdG9yZSk7CiB9
CkBAIC03NTMsNyArNzU3LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6cmVuYW1lSW5kZXgoSURC
SW5kZXgmIGluZGV4LCBjb25zdCBTdHJpbmcmIG5ld05hbWUpCiAgICAgICAgIHByb3RlY3RlZFRo
aXMtPmRpZFJlbmFtZUluZGV4T25TZXJ2ZXIocmVzdWx0KTsKICAgICB9LCBbcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4SWRlbnRpZmll
ciwgbmV3TmFtZSA9IG5ld05hbWUuaXNvbGF0ZWRDb3B5KCldIChhdXRvJiBvcGVyYXRpb24pIHsK
ICAgICAgICAgcHJvdGVjdGVkVGhpcy0+cmVuYW1lSW5kZXhPblNlcnZlcihvcGVyYXRpb24sIG9i
amVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhJZGVudGlmaWVyLCBuZXdOYW1lKTsKLSAgICB9KSk7
CisgICAgfSksIElzV3JpdGVPcGVyYXRpb246Olllcyk7CiB9CiAKIHZvaWQgSURCVHJhbnNhY3Rp
b246OnJlbmFtZUluZGV4T25TZXJ2ZXIoSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYg
b3BlcmF0aW9uLCBjb25zdCB1aW50NjRfdCYgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCB1
aW50NjRfdCYgaW5kZXhJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUpCkBAIC04NTIs
NyArODU2LDIzIEBAIHZvaWQgSURCVHJhbnNhY3Rpb246Oml0ZXJhdGVDdXJzb3JPblNlcnZlcihJ
REJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyCiB7CiAgICAgTE9HKEluZGV4ZWRE
QiwgIklEQlRyYW5zYWN0aW9uOjppdGVyYXRlQ3Vyc29yT25TZXJ2ZXIiKTsKICAgICBBU1NFUlQo
Y2FuQ3VycmVudFRocmVhZEFjY2Vzc1RocmVhZExvY2FsRGF0YShtX2RhdGFiYXNlLT5vcmlnaW5U
aHJlYWQoKSkpOworICAgIEFTU0VSVChvcGVyYXRpb24uaWRiUmVxdWVzdCgpKTsKIAorICAgIGF1
dG8qIGN1cnNvciA9IG9wZXJhdGlvbi5pZGJSZXF1ZXN0KCktPnBlbmRpbmdDdXJzb3IoKTsKKyAg
ICBBU1NFUlQoY3Vyc29yKTsKKworICAgIGlmIChkYXRhLmtleURhdGEuaXNOdWxsKCkgJiYgZGF0
YS5wcmltYXJ5S2V5RGF0YS5pc051bGwoKSkgeworICAgICAgICBpZiAoYXV0byBnZXRSZXN1bHQg
PSBjdXJzb3ItPml0ZXJhdGVXaXRoUHJlZmV0Y2hlZFJlY29yZHMoZGF0YS5jb3VudCwgbV9sYXN0
V3JpdGVPcGVyYXRpb25JRCkpIHsKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gSURCUmVzdWx0
RGF0YTo6aXRlcmF0ZUN1cnNvclN1Y2Nlc3Mob3BlcmF0aW9uLmlkZW50aWZpZXIoKSwgZ2V0UmVz
dWx0LnZhbHVlKCkpOworICAgICAgICAgICAgbV9kYXRhYmFzZS0+Y29ubmVjdGlvblByb3h5KCku
aXRlcmF0ZUN1cnNvcihvcGVyYXRpb24sIHsgZGF0YS5rZXlEYXRhLCBkYXRhLnByaW1hcnlLZXlE
YXRhLCBkYXRhLmNvdW50LCBJbmRleGVkREI6OkN1cnNvckl0ZXJhdGVPcHRpb246OkRvTm90UmVw
bHkgfSk7CisgICAgICAgICAgICBvcGVyYXRpb25Db21wbGV0ZWRPblNlcnZlcihyZXN1bHQsIG9w
ZXJhdGlvbik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICBj
dXJzb3ItPmNsZWFyUHJlZmV0Y2hlZFJlY29yZHMoKTsKKworICAgIEFTU0VSVChkYXRhLm9wdGlv
biA9PSBJbmRleGVkREI6OkN1cnNvckl0ZXJhdGVPcHRpb246OlJlcGx5KTsKICAgICBtX2RhdGFi
YXNlLT5jb25uZWN0aW9uUHJveHkoKS5pdGVyYXRlQ3Vyc29yKG9wZXJhdGlvbiwgZGF0YSk7CiB9
CiAKQEAgLTExMjYsNyArMTE0Niw3IEBAIFJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6
cmVxdWVzdERlbGV0ZVJlY29yZChKU0dsb2JhbE9iamVjdCYgc3RhdGUsIElEQk9iCiAgICAgICAg
IHByb3RlY3RlZFRoaXMtPmRpZERlbGV0ZVJlY29yZE9uU2VydmVyKHJlcXVlc3QuZ2V0KCksIHJl
c3VsdCk7CiAgICAgfSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmFuZ2UgPSBy
YW5nZS5pc29sYXRlZENvcHkoKV0gKGF1dG8mIG9wZXJhdGlvbikgewogICAgICAgICBwcm90ZWN0
ZWRUaGlzLT5kZWxldGVSZWNvcmRPblNlcnZlcihvcGVyYXRpb24sIHJhbmdlKTsKLSAgICB9KSk7
CisgICAgfSksIElzV3JpdGVPcGVyYXRpb246Olllcyk7CiAgICAgcmV0dXJuIHJlcXVlc3Q7CiB9
CiAKQEAgLTExNjUsNyArMTE4NSw3IEBAIFJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6
cmVxdWVzdENsZWFyT2JqZWN0U3RvcmUoSlNHbG9iYWxPYmplY3QmIHN0YXRlLCBJCiAgICAgICAg
IHByb3RlY3RlZFRoaXMtPmRpZENsZWFyT2JqZWN0U3RvcmVPblNlcnZlcihyZXF1ZXN0LmdldCgp
LCByZXN1bHQpOwogICAgIH0sIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG9iamVj
dFN0b3JlSWRlbnRpZmllcl0gKGF1dG8mIG9wZXJhdGlvbikgewogICAgICAgICBwcm90ZWN0ZWRU
aGlzLT5jbGVhck9iamVjdFN0b3JlT25TZXJ2ZXIob3BlcmF0aW9uLCBvYmplY3RTdG9yZUlkZW50
aWZpZXIpOwotICAgIH0pKTsKKyAgICB9KSwgSXNXcml0ZU9wZXJhdGlvbjo6WWVzKTsKIAogICAg
IHJldHVybiByZXF1ZXN0OwogfQpAQCAtMTIwNSw3ICsxMjI1LDcgQEAgUmVmPElEQlJlcXVlc3Q+
IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0UHV0T3JBZGQoSlNHbG9iYWxPYmplY3QmIHN0YXRlLCBJ
REJPYmplY3QKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGlkUHV0T3JBZGRPblNlcnZlcihyZXF1
ZXN0LmdldCgpLCByZXN1bHQpOwogICAgIH0sIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIGtleSwgdmFsdWUgPSBtYWtlUmVmKHZhbHVlKSwgb3ZlcndyaXRlTW9kZV0gKGF1dG8mIG9w
ZXJhdGlvbikgewogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5wdXRPckFkZE9uU2VydmVyKG9wZXJh
dGlvbiwga2V5LmdldCgpLCB2YWx1ZS5wdHIoKSwgb3ZlcndyaXRlTW9kZSk7Ci0gICAgfSkpOwor
ICAgIH0pLCBJc1dyaXRlT3BlcmF0aW9uOjpZZXMpOwogCiAgICAgcmV0dXJuIHJlcXVlc3Q7CiB9
CkBAIC0xMjkzLDcgKzEzMTMsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpkZWxldGVPYmplY3RT
dG9yZShjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSkKICAgICAgICAgcHJvdGVjdGVkVGhp
cy0+ZGlkRGVsZXRlT2JqZWN0U3RvcmVPblNlcnZlcihyZXN1bHQpOwogICAgIH0sIFtwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG9iamVjdFN0b3JlTmFtZSA9IG9iamVjdFN0b3JlTmFt
ZS5pc29sYXRlZENvcHkoKV0gKGF1dG8mIG9wZXJhdGlvbikgewogICAgICAgICBwcm90ZWN0ZWRU
aGlzLT5kZWxldGVPYmplY3RTdG9yZU9uU2VydmVyKG9wZXJhdGlvbiwgb2JqZWN0U3RvcmVOYW1l
KTsKLSAgICB9KSk7CisgICAgfSksIElzV3JpdGVPcGVyYXRpb246Olllcyk7CiB9CiAKIHZvaWQg
SURCVHJhbnNhY3Rpb246OmRlbGV0ZU9iamVjdFN0b3JlT25TZXJ2ZXIoSURCQ2xpZW50OjpUcmFu
c2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFt
ZSkKQEAgLTEzMjMsNyArMTM0Myw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmRlbGV0ZUluZGV4
KHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpCiAgICAgICAg
IHByb3RlY3RlZFRoaXMtPmRpZERlbGV0ZUluZGV4T25TZXJ2ZXIocmVzdWx0KTsKICAgICB9LCBb
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGlu
ZGV4TmFtZSA9IGluZGV4TmFtZS5pc29sYXRlZENvcHkoKV0gKGF1dG8mIG9wZXJhdGlvbikgewog
ICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kZWxldGVJbmRleE9uU2VydmVyKG9wZXJhdGlvbiwgb2Jq
ZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleE5hbWUpOwotICAgIH0pKTsKKyAgICB9KSwgSXNXcml0
ZU9wZXJhdGlvbjo6WWVzKTsKIH0KIAogdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGVsZXRlSW5kZXhP
blNlcnZlcihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24sIGNvbnN0
IHVpbnQ2NF90JiBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1l
KQpAQCAtMTQ3NCw2ICsxNDk0LDEyIEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmF1dG9Db21taXQo
KQogICAgIGNvbW1pdCgpOwogfQogCit1aW50NjRfdCBJREJUcmFuc2FjdGlvbjo6Z2VuZXJhdGVP
cGVyYXRpb25JRCgpCit7CisgICAgc3RhdGljIHN0ZDo6YXRvbWljPHVpbnQ2NF90PiBjdXJyZW50
T3BlcmF0aW9uSUQoMSk7CisgICAgcmV0dXJuIGN1cnJlbnRPcGVyYXRpb25JRCArPSAxOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRB
QkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRy
YW5zYWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2Fj
dGlvbi5oCmluZGV4IDM1OGIwMWJjMDE0YWE2MTQ0OGEzMTY1NjU2N2VjYTJhMzVkMmEzMjYuLmQ0
MTc3M2NjYzVkNjVmODM0NTA4MWJjZDU3YThmOWRhZDZjMzQ5NzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaApAQCAtNzEsNiArNzEs
OCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxJREJUcmFuc2FjdGlvbj4gY3JlYXRlKElEQkRh
dGFiYXNlJiwgY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJik7CiAgICAgc3RhdGljIFJlZjxJREJU
cmFuc2FjdGlvbj4gY3JlYXRlKElEQkRhdGFiYXNlJiwgY29uc3QgSURCVHJhbnNhY3Rpb25JbmZv
JiwgSURCT3BlbkRCUmVxdWVzdCYpOwogCisgICAgc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlT3Bl
cmF0aW9uSUQoKTsKKwogICAgIFdFQkNPUkVfRVhQT1JUIH5JREJUcmFuc2FjdGlvbigpIGZpbmFs
OwogCiAgICAgLy8gSURCVHJhbnNhY3Rpb24gSURMCkBAIC0xNjUsNyArMTY3LDggQEAgcHJpdmF0
ZToKICAgICB2b2lkIGZpbmlzaEFib3J0T3JDb21taXQoKTsKICAgICB2b2lkIGFib3J0SW5Qcm9n
cmVzc09wZXJhdGlvbnMoY29uc3QgSURCRXJyb3ImKTsKIAotICAgIHZvaWQgc2NoZWR1bGVPcGVy
YXRpb24oUmVmPElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24+JiYpOworICAgIGVudW0g
Y2xhc3MgSXNXcml0ZU9wZXJhdGlvbiA6IGJvb2wgeyBObywgWWVzIH07CisgICAgdm9pZCBzY2hl
ZHVsZU9wZXJhdGlvbihSZWY8SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbj4mJiwgSXNX
cml0ZU9wZXJhdGlvbiA9IElzV3JpdGVPcGVyYXRpb246Ok5vKTsKICAgICB2b2lkIGhhbmRsZU9w
ZXJhdGlvbnNDb21wbGV0ZWRPblNlcnZlcigpOwogICAgIHZvaWQgaGFuZGxlUGVuZGluZ09wZXJh
dGlvbnMoKTsKICAgICB2b2lkIGF1dG9Db21taXQoKTsKQEAgLTI0NCw4ICsyNDcsOCBAQCBwcml2
YXRlOgogCiAgICAgRGVxdWU8UmVmUHRyPElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24+
PiBtX3BlbmRpbmdUcmFuc2FjdGlvbk9wZXJhdGlvblF1ZXVlOwogICAgIERlcXVlPElEQkNsaWVu
dDo6VHJhbnNhY3Rpb25PcGVyYXRpb24qPiBtX3RyYW5zYWN0aW9uT3BlcmF0aW9uc0luUHJvZ3Jl
c3NRdWV1ZTsKLSAgICBEZXF1ZTxzdGQ6OnBhaXI8UmVmUHRyPElEQkNsaWVudDo6VHJhbnNhY3Rp
b25PcGVyYXRpb24+LCBJREJSZXN1bHREYXRhPj4gbV9jb21wbGV0ZWRPblNlcnZlclF1ZXVlOwog
ICAgIERlcXVlPFJlZlB0cjxJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uPj4gbV9hYm9y
dFF1ZXVlOworICAgIEhhc2hNYXA8UmVmUHRyPElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRp
b24+LCBJREJSZXN1bHREYXRhPiBtX3RyYW5zYWN0aW9uT3BlcmF0aW9uUmVzdWx0TWFwOwogCiAg
ICAgSGFzaE1hcDxJREJSZXNvdXJjZUlkZW50aWZpZXIsIFJlZlB0cjxJREJDbGllbnQ6OlRyYW5z
YWN0aW9uT3BlcmF0aW9uPj4gbV90cmFuc2FjdGlvbk9wZXJhdGlvbk1hcDsKIApAQCAtMjU4LDYg
KzI2MSw4IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1fY29udGV4dFN0b3BwZWQgeyBmYWxzZSB9
OwogICAgIGJvb2wgbV9kaWREaXNwYXRjaEFib3J0T3JDb21taXQgeyBmYWxzZSB9OworCisgICAg
dWludDY0X3QgbV9sYXN0V3JpdGVPcGVyYXRpb25JRCB7IDAgfTsKIH07CiAKIGNsYXNzIFRyYW5z
YWN0aW9uQWN0aXZhdG9yIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0luZGV4ZWREQi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSW5k
ZXhlZERCLmgKaW5kZXggNTA5YmJmMjc4YjNmOWYzNzU3ZjZmMWI1MDQwZWM3NmQ1ZDJjOWEwMC4u
YmYzMDhhZGE5NmEyYjA2MDk4ZDM2ZDJhYzcxMGVkNWJjNjMyNzdmOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSW5kZXhlZERCLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSW5kZXhlZERCLmgKQEAgLTEwNiw2ICsxMDYsMTEgQEAg
ZW51bSBjbGFzcyBHZXRBbGxUeXBlIHsKIAogZW51bSBjbGFzcyBDb25uZWN0aW9uQ2xvc2VkT25C
ZWhhbGZPZlNlcnZlciA6IGJvb2wgeyBObywgWWVzIH07CiAKK2VudW0gY2xhc3MgQ3Vyc29ySXRl
cmF0ZU9wdGlvbiB7CisgICAgRG9Ob3RSZXBseSwKKyAgICBSZXBseSwKK307CisKIH0gLy8gbmFt
ZXNwYWNlIEluZGV4ZWREQgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblByb3h5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0
aW9uUHJveHkuY3BwCmluZGV4IDRlYzQ0N2UyNmYxMWRmYTYyYmYwODM2OGJmMTRmODVhODJlY2Y1
MTEuLjk1NmRmYWU2NDUxNzQ5OGRlMzhlNTQ4MzFiNTkxYjRmNjM1NWM5NTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJD
b25uZWN0aW9uUHJveHkuY3BwCkBAIC0yMzgsNyArMjM4LDggQEAgdm9pZCBJREJDb25uZWN0aW9u
UHJveHk6Om9wZW5DdXJzb3IoVHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbiwgY29uc3Qg
SURCQ3UKIHZvaWQgSURCQ29ubmVjdGlvblByb3h5OjppdGVyYXRlQ3Vyc29yKFRyYW5zYWN0aW9u
T3BlcmF0aW9uJiBvcGVyYXRpb24sIGNvbnN0IElEQkl0ZXJhdGVDdXJzb3JEYXRhJiBkYXRhKQog
ewogICAgIGNvbnN0IElEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhIHsgb3BlcmF0aW9uIH07Ci0g
ICAgc2F2ZU9wZXJhdGlvbihvcGVyYXRpb24pOworICAgIGlmIChkYXRhLm9wdGlvbiAhPSBJbmRl
eGVkREI6OkN1cnNvckl0ZXJhdGVPcHRpb246OkRvTm90UmVwbHkpCisgICAgICAgIHNhdmVPcGVy
YXRpb24ob3BlcmF0aW9uKTsKIAogICAgIGNhbGxDb25uZWN0aW9uT25NYWluVGhyZWFkKCZJREJD
b25uZWN0aW9uVG9TZXJ2ZXI6Oml0ZXJhdGVDdXJzb3IsIHJlcXVlc3REYXRhLCBkYXRhKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFu
c2FjdGlvbk9wZXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9j
bGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uY3BwCmluZGV4IDhlMWRlMDZkNzFlOGYwYjIyM2Q2
ODZlNWUxYThhMjIwOWI3NDM4NDMuLmFhNTkwNmY0NzVlNWVlMGFhY2RmMTFmMTdkM2VhNjhlMjhi
NTE1MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVu
dC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9uLmNwcApAQCAtNDQsNiArNDQsNyBA
QCBUcmFuc2FjdGlvbk9wZXJhdGlvbjo6VHJhbnNhY3Rpb25PcGVyYXRpb24oSURCVHJhbnNhY3Rp
b24mIHRyYW5zYWN0aW9uLCBJREJSZXF1ZQogICAgIGlmIChhdXRvKiBjdXJzb3IgPSByZXF1ZXN0
LnBlbmRpbmdDdXJzb3IoKSkKICAgICAgICAgbV9jdXJzb3JJZGVudGlmaWVyID0gbWFrZVVuaXF1
ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KGN1cnNvci0+aW5mbygpLmlkZW50aWZpZXIoKSk7CiAK
KyAgICByZXF1ZXN0LnNldFRyYW5zYWN0aW9uT3BlcmF0aW9uSUQobV9vcGVyYXRpb25JRCk7CiAg
ICAgbV9pZGJSZXF1ZXN0ID0gJnJlcXVlc3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9u
LmgKaW5kZXggZTJmMTQ4YWVmYmI0MzQzMmE2MWM4NDYyYmIxNGYzOWU1YTc2MDhhNi4uN2FiNTc1
NTU3MDhlYzc0YjlkMTZkMTU2Y2U5ZTkzMjU2Nzg3Y2QwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3Bl
cmF0aW9uLmgKQEAgLTExMiwxMCArMTEyLDEzIEBAIHB1YmxpYzoKICAgICBib29sIG5leHRSZXF1
ZXN0Q2FuR29Ub1NlcnZlcigpIGNvbnN0IHsgcmV0dXJuIG1fbmV4dFJlcXVlc3RDYW5Hb1RvU2Vy
dmVyICYmIG1faWRiUmVxdWVzdDsgfQogICAgIHZvaWQgc2V0TmV4dFJlcXVlc3RDYW5Hb1RvU2Vy
dmVyKGJvb2wgbmV4dFJlcXVlc3RDYW5Hb1RvU2VydmVyKSB7IG1fbmV4dFJlcXVlc3RDYW5Hb1Rv
U2VydmVyID0gbmV4dFJlcXVlc3RDYW5Hb1RvU2VydmVyOyB9CiAKKyAgICB1aW50NjRfdCBvcGVy
YXRpb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fb3BlcmF0aW9uSUQ7IH0KKwogcHJvdGVjdGVkOgog
ICAgIFRyYW5zYWN0aW9uT3BlcmF0aW9uKElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKICAg
ICAgICAgOiBtX3RyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKQogICAgICAgICAsIG1faWRlbnRpZmll
cih0cmFuc2FjdGlvbi5jb25uZWN0aW9uUHJveHkoKSkKKyAgICAgICAgLCBtX29wZXJhdGlvbklE
KHRyYW5zYWN0aW9uLmdlbmVyYXRlT3BlcmF0aW9uSUQoKSkKICAgICB7CiAgICAgfQogCkBAIC0x
NDIsNiArMTQ1LDggQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8SURCUmVxdWVzdD4gbV9pZGJSZXF1
ZXN0OwogICAgIGJvb2wgbV9uZXh0UmVxdWVzdENhbkdvVG9TZXJ2ZXIgeyB0cnVlIH07CiAgICAg
Ym9vbCBtX2RpZENvbXBsZXRlIHsgZmFsc2UgfTsKKworICAgIHVpbnQ2NF90IG1fb3BlcmF0aW9u
SUQgeyAwIH07CiB9OwogCiBjbGFzcyBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGwgZmluYWwgOiBw
dWJsaWMgVHJhbnNhY3Rpb25PcGVyYXRpb24gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkJhY2tpbmdTdG9yZS5oCmluZGV4IGM0MjY0
MGIzYmY2YzYwYjA4N2YyNDVlZmQzYWYwMWMzNjYyZmEyOWUuLmE3ZGY3YTFkY2Q2MDc1ZGRhNDUx
MDkwYWE5MzAzN2FlODIxY2RiZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9JREJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQmFja2luZ1N0b3JlLmgKQEAgLTg1LDcgKzg1LDYg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgSURCRXJyb3IgbWF5YmVVcGRhdGVLZXlHZW5lcmF0b3JO
dW1iZXIoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIs
IHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgZG91YmxlIG5ld0tleU51bWJlcikgPSAw
OwogICAgIHZpcnR1YWwgSURCRXJyb3Igb3BlbkN1cnNvcihjb25zdCBJREJSZXNvdXJjZUlkZW50
aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCQ3Vyc29ySW5mbyYsIElEQkdl
dFJlc3VsdCYgb3V0UmVzdWx0KSA9IDA7CiAgICAgdmlydHVhbCBJREJFcnJvciBpdGVyYXRlQ3Vy
c29yKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBj
b25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIGN1cnNvcklkZW50aWZpZXIsIGNvbnN0IElEQkl0
ZXJhdGVDdXJzb3JEYXRhJiwgSURCR2V0UmVzdWx0JiBvdXRSZXN1bHQpID0gMDsKLSAgICB2aXJ0
dWFsIGJvb2wgcHJlZmV0Y2hDdXJzb3IoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFu
c2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgY3Vyc29ySWRl
bnRpZmllcikgPSAwOwogCiAgICAgdmlydHVhbCBJREJPYmplY3RTdG9yZUluZm8qIGluZm9Gb3JP
YmplY3RTdG9yZSh1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgZGVsZXRlQmFja2luZ1N0b3JlKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdT
dG9yZS5oCmluZGV4IDM3OGQyYTVmN2EwZDY3M2YyNDMyOTM4MTA3NGVlOGIxOTU4MTFiZWQuLjc0
ZGM5NTA5NDVhNmVmNGI4ZWI1NzJhOGJkNGQxNWRkYTUyYjhmYjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURC
QmFja2luZ1N0b3JlLmgKQEAgLTc0LDcgKzc0LDYgQEAgcHJpdmF0ZToKICAgICBJREJFcnJvciBt
YXliZVVwZGF0ZUtleUdlbmVyYXRvck51bWJlcihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXIm
IHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBk
b3VibGUgbmV3S2V5TnVtYmVyKSBmaW5hbDsKICAgICBJREJFcnJvciBvcGVuQ3Vyc29yKGNvbnN0
IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJD
dXJzb3JJbmZvJiwgSURCR2V0UmVzdWx0JiBvdXRSZXN1bHQpIGZpbmFsOwogICAgIElEQkVycm9y
IGl0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklk
ZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgY3Vyc29ySWRlbnRpZmllciwg
Y29uc3QgSURCSXRlcmF0ZUN1cnNvckRhdGEmLCBJREJHZXRSZXN1bHQmIG91dFJlc3VsdCkgZmlu
YWw7Ci0gICAgYm9vbCBwcmVmZXRjaEN1cnNvcihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXIm
LCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImKSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQog
CiAgICAgSURCT2JqZWN0U3RvcmVJbmZvKiBpbmZvRm9yT2JqZWN0U3RvcmUodWludDY0X3Qgb2Jq
ZWN0U3RvcmVJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIGRlbGV0ZUJhY2tpbmdTdG9yZSgp
IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAppbmRleCAzZmExMDJkYjY1
OTI4MGQ3ZDZhMDUwY2UxZWE3ZmM0MDgwMmJmZGQ3Li41NzNiZWM3N2UyZjJmM2QxYzEyMTIxYmM1
OGZlY2MzZmNmMWEzZTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcApAQCAt
MTM2Niw4ICsxMzY2LDggQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVJ
bmRleChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWMKIAogICAgIHdoaWxlICgh
Y3Vyc29yLT5jdXJyZW50S2V5KCkuaXNOdWxsKCkpIHsKICAgICAgICAgYXV0byYga2V5ID0gY3Vy
c29yLT5jdXJyZW50S2V5KCk7Ci0gICAgICAgIGF1dG8qIHZhbHVlID0gY3Vyc29yLT5jdXJyZW50
VmFsdWUoKTsKLSAgICAgICAgVGhyZWFkU2FmZURhdGFCdWZmZXIgdmFsdWVCdWZmZXIgPSB2YWx1
ZSA/IHZhbHVlLT5kYXRhKCkgOiBUaHJlYWRTYWZlRGF0YUJ1ZmZlcigpOworICAgICAgICBhdXRv
IHZhbHVlID0gY3Vyc29yLT5jdXJyZW50VmFsdWUoKTsKKyAgICAgICAgVGhyZWFkU2FmZURhdGFC
dWZmZXIgdmFsdWVCdWZmZXIgPSB2YWx1ZS5kYXRhKCk7CiAKICAgICAgICAgQVNTRVJUKGN1cnNv
ci0+Y3VycmVudFJlY29yZFJvd0lEKCkpOwogCkBAIC0yMzU0LDcgKzIzNTQsNyBAQCBJREJFcnJv
ciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldEFsbEluZGV4UmVjb3Jkcyhjb25zdCBJREJSZXNv
dXJjZUlkZW50aWZpZXImCiAgICAgICAgIElEQktleURhdGEga2V5Q29weSA9IGN1cnNvci0+Y3Vy
cmVudFByaW1hcnlLZXkoKTsKICAgICAgICAgcmVzdWx0LmFkZEtleShXVEZNb3ZlKGtleUNvcHkp
KTsKICAgICAgICAgaWYgKGdldEFsbFJlY29yZHNEYXRhLmdldEFsbFR5cGUgPT0gSW5kZXhlZERC
OjpHZXRBbGxUeXBlOjpWYWx1ZXMpCi0gICAgICAgICAgICByZXN1bHQuYWRkVmFsdWUoY3Vyc29y
LT5jdXJyZW50VmFsdWUoKSA/ICpjdXJzb3ItPmN1cnJlbnRWYWx1ZSgpIDogSURCVmFsdWUoKSk7
CisgICAgICAgICAgICByZXN1bHQuYWRkVmFsdWUoSURCVmFsdWUoY3Vyc29yLT5jdXJyZW50VmFs
dWUoKSkpOwogCiAgICAgICAgICsrY3VycmVudENvdW50OwogICAgICAgICBjdXJzb3ItPmFkdmFu
Y2UoMSk7CkBAIC0yNDAxLDcgKzI0MDEsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3Rv
cmU6OmdldEluZGV4UmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbgogICAg
ICAgICBlbHNlIHsKICAgICAgICAgICAgIGF1dG8qIG9iamVjdFN0b3JlSW5mbyA9IGluZm9Gb3JP
YmplY3RTdG9yZShvYmplY3RTdG9yZUlEKTsKICAgICAgICAgICAgIEFTU0VSVChvYmplY3RTdG9y
ZUluZm8pOwotICAgICAgICAgICAgZ2V0UmVzdWx0ID0geyBjdXJzb3ItPmN1cnJlbnRQcmltYXJ5
S2V5KCksIGN1cnNvci0+Y3VycmVudFByaW1hcnlLZXkoKSwgY3Vyc29yLT5jdXJyZW50VmFsdWUo
KSA/ICpjdXJzb3ItPmN1cnJlbnRWYWx1ZSgpIDogSURCVmFsdWUoKSwgb2JqZWN0U3RvcmVJbmZv
LT5rZXlQYXRoKCkgfTsKKyAgICAgICAgICAgIGdldFJlc3VsdCA9IHsgY3Vyc29yLT5jdXJyZW50
UHJpbWFyeUtleSgpLCBjdXJzb3ItPmN1cnJlbnRQcmltYXJ5S2V5KCksIElEQlZhbHVlKGN1cnNv
ci0+Y3VycmVudFZhbHVlKCkpLCBvYmplY3RTdG9yZUluZm8tPmtleVBhdGgoKSB9OwogICAgICAg
ICB9CiAgICAgfQogCkBAIC0yNzIxLDI2ICsyNzIxLDE4IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6aXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRy
YW5zCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBhdXRvKiBvYmplY3RTdG9yZUluZm8gPSBpbmZv
Rm9yT2JqZWN0U3RvcmUoY3Vyc29yLT5vYmplY3RTdG9yZUlEKCkpOwotICAgIEFTU0VSVChvYmpl
Y3RTdG9yZUluZm8pOwotICAgIGN1cnNvci0+Y3VycmVudERhdGEocmVzdWx0LCBvYmplY3RTdG9y
ZUluZm8tPmtleVBhdGgoKSk7Ci0gICAgcmV0dXJuIElEQkVycm9yIHsgfTsKLX0KLQotYm9vbCBT
UUxpdGVJREJCYWNraW5nU3RvcmU6OnByZWZldGNoQ3Vyc29yKGNvbnN0IElEQlJlc291cmNlSWRl
bnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZp
ZXImIGN1cnNvcklkZW50aWZpZXIpCi17Ci0gICAgTE9HKEluZGV4ZWREQiwgIlNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6cHJlZmV0Y2hDdXJzb3IiKTsKLQotICAgIEFTU0VSVChtX3NxbGl0ZURCKTsK
LSAgICBBU1NFUlQobV9zcWxpdGVEQi0+aXNPcGVuKCkpOworICAgIGlmIChkYXRhLm9wdGlvbiA9
PSBJbmRleGVkREI6OkN1cnNvckl0ZXJhdGVPcHRpb246OlJlcGx5KSB7CisgICAgICAgIGF1dG8q
IG9iamVjdFN0b3JlSW5mbyA9IGluZm9Gb3JPYmplY3RTdG9yZShjdXJzb3ItPm9iamVjdFN0b3Jl
SUQoKSk7CisgICAgICAgIEFTU0VSVChvYmplY3RTdG9yZUluZm8pOwogCi0gICAgYXV0byogY3Vy
c29yID0gbV9jdXJzb3JzLmdldChjdXJzb3JJZGVudGlmaWVyKTsKLSAgICBpZiAoIWN1cnNvciB8
fCAhY3Vyc29yLT50cmFuc2FjdGlvbigpIHx8ICFjdXJzb3ItPnRyYW5zYWN0aW9uKCktPmluUHJv
Z3Jlc3MoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBib29sIHNob3VsZFByZWZl
dGNoID0ga2V5LmlzTnVsbCgpICYmIHByaW1hcnlLZXkuaXNOdWxsKCk7CisgICAgICAgIGlmIChz
aG91bGRQcmVmZXRjaCkKKyAgICAgICAgICAgIGN1cnNvci0+cHJlZmV0Y2goKTsKIAotICAgIEFT
U0VSVF9VTlVTRUQodHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjdXJzb3ItPnRyYW5zYWN0aW9uKCkt
PnRyYW5zYWN0aW9uSWRlbnRpZmllcigpID09IHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CisgICAg
ICAgIGN1cnNvci0+Y3VycmVudERhdGEocmVzdWx0LCBvYmplY3RTdG9yZUluZm8tPmtleVBhdGgo
KSwgc2hvdWxkUHJlZmV0Y2ggPyBTUUxpdGVJREJDdXJzb3I6OlNob3VsZEluY2x1ZGVQcmVmZXRj
aGVkUmVjb3Jkczo6WWVzIDogU1FMaXRlSURCQ3Vyc29yOjpTaG91bGRJbmNsdWRlUHJlZmV0Y2hl
ZFJlY29yZHM6Ok5vKTsKKyAgICB9CiAKLSAgICByZXR1cm4gY3Vyc29yLT5wcmVmZXRjaCgpOwor
ICAgIHJldHVybiBJREJFcnJvciB7IH07CiB9CiAKIElEQk9iamVjdFN0b3JlSW5mbyogU1FMaXRl
SURCQmFja2luZ1N0b3JlOjppbmZvRm9yT2JqZWN0U3RvcmUodWludDY0X3Qgb2JqZWN0U3RvcmVJ
ZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5oCmluZGV4IGNlMjlkMmNmY2Zi
NDFmYWI2YmQzMDViYmUyZGNmMDQ1NmZiNmQ4MmUuLjQ5NDBjMTUxNjExMDRhZDk2OTU4ZmQyMzQz
N2RhYzY5OTQwY2M3MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmgKQEAgLTgwLDcg
KzgwLDYgQEAgcHVibGljOgogICAgIElEQkVycm9yIG1heWJlVXBkYXRlS2V5R2VuZXJhdG9yTnVt
YmVyKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1
aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGRvdWJsZSBuZXdLZXlOdW1iZXIpIGZpbmFs
OwogICAgIElEQkVycm9yIG9wZW5DdXJzb3IoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0
cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQkN1cnNvckluZm8mLCBJREJHZXRSZXN1bHQm
IG91dFJlc3VsdCkgZmluYWw7CiAgICAgSURCRXJyb3IgaXRlcmF0ZUN1cnNvcihjb25zdCBJREJS
ZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3Vy
Y2VJZGVudGlmaWVyJiBjdXJzb3JJZGVudGlmaWVyLCBjb25zdCBJREJJdGVyYXRlQ3Vyc29yRGF0
YSYsIElEQkdldFJlc3VsdCYgb3V0UmVzdWx0KSBmaW5hbDsKLSAgICBib29sIHByZWZldGNoQ3Vy
c29yKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYsIGNvbnN0IElEQlJlc291cmNlSWRlbnRp
ZmllciYpIGZpbmFsOwogCiAgICAgSURCT2JqZWN0U3RvcmVJbmZvKiBpbmZvRm9yT2JqZWN0U3Rv
cmUodWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIGRlbGV0
ZUJhY2tpbmdTdG9yZSgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcAppbmRleCBiMzc3MTcz
NzU3NGUyMjM2NjE3ZDI0ODdjNjkwZTEyMGVhZGQ3MDBiLi5lMTlhYTEzZWIwMWU1NWJiMGNmODA4
MWY3NDNiYWE3MjNhNjMyNTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcApAQCAtNDIsOCArNDIs
OCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIElEQlNlcnZlciB7CiAKLXN0YXRp
YyBjb25zdCBzaXplX3QgcHJlZmV0Y2hMaW1pdCA9IDEyODsKLXN0YXRpYyBjb25zdCBzaXplX3Qg
cHJlZmV0Y2hTaXplTGltaXQgPSA4ICogTUI7CitzdGF0aWMgY29uc3Qgc2l6ZV90IHByZWZldGNo
TGltaXQgPSAyNTY7CitzdGF0aWMgY29uc3Qgc2l6ZV90IHByZWZldGNoU2l6ZUxpbWl0ID0gMSAq
IE1COwogCiBzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlSURCQ3Vyc29yPiBTUUxpdGVJREJDdXJzb3I6
Om1heWJlQ3JlYXRlKFNRTGl0ZUlEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgY29uc3QgSURC
Q3Vyc29ySW5mbyYgaW5mbykKIHsKQEAgLTEwMiw3ICsxMDIsNyBAQCBTUUxpdGVJREJDdXJzb3I6
On5TUUxpdGVJREJDdXJzb3IoKQogICAgICAgICBtX3RyYW5zYWN0aW9uLT5jbG9zZUN1cnNvcigq
dGhpcyk7CiB9CiAKLXZvaWQgU1FMaXRlSURCQ3Vyc29yOjpjdXJyZW50RGF0YShJREJHZXRSZXN1
bHQmIHJlc3VsdCwgY29uc3QgT3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgpCit2b2lkIFNR
TGl0ZUlEQkN1cnNvcjo6Y3VycmVudERhdGEoSURCR2V0UmVzdWx0JiByZXN1bHQsIGNvbnN0IE9w
dGlvbmFsPElEQktleVBhdGg+JiBrZXlQYXRoLCBTaG91bGRJbmNsdWRlUHJlZmV0Y2hlZFJlY29y
ZHMgc2hvdWxkSW5jbHVkZVByZWZldGNoZWRSZWNvcmRzKQogewogICAgIEFTU0VSVCghbV9mZXRj
aGVkUmVjb3Jkcy5pc0VtcHR5KCkpOwogCkBAIC0xMTMsNyArMTEzLDI1IEBAIHZvaWQgU1FMaXRl
SURCQ3Vyc29yOjpjdXJyZW50RGF0YShJREJHZXRSZXN1bHQmIHJlc3VsdCwgY29uc3QgT3B0aW9u
YWw8SURCS2V5UGF0CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICByZXN1bHQgPSB7IGN1
cnJlbnRSZWNvcmQucmVjb3JkLmtleSwgY3VycmVudFJlY29yZC5yZWNvcmQucHJpbWFyeUtleSwg
Y3VycmVudFJlY29yZC5yZWNvcmQudmFsdWUgPyAqY3VycmVudFJlY29yZC5yZWNvcmQudmFsdWUg
OiBJREJWYWx1ZSgpLCBrZXlQYXRofTsKKyAgICBpZiAoc2hvdWxkSW5jbHVkZVByZWZldGNoZWRS
ZWNvcmRzID09IFNob3VsZEluY2x1ZGVQcmVmZXRjaGVkUmVjb3Jkczo6Tm8pIHsKKyAgICAgICAg
cmVzdWx0ID0geyBjdXJyZW50UmVjb3JkLnJlY29yZC5rZXksIGN1cnJlbnRSZWNvcmQucmVjb3Jk
LnByaW1hcnlLZXksIElEQlZhbHVlKGN1cnJlbnRSZWNvcmQucmVjb3JkLnZhbHVlKSwga2V5UGF0
aCB9OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgVmVjdG9yPElEQkN1cnNvclJlY29y
ZD4gcHJlZmV0Y2hlZFJlY29yZHM7CisgICAgcHJlZmV0Y2hlZFJlY29yZHMucmVzZXJ2ZUNhcGFj
aXR5KG1fZmV0Y2hlZFJlY29yZHMuc2l6ZSgpKTsKKyAgICBmb3IgKGF1dG8mIHJlY29yZCA6IG1f
ZmV0Y2hlZFJlY29yZHMpIHsKKyAgICAgICAgaWYgKHJlY29yZC5pc1Rlcm1pbmFsUmVjb3JkKCkp
CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBwcmVmZXRjaGVkUmVjb3Jkcy5hcHBlbmQo
cmVjb3JkLnJlY29yZCk7CisgICAgfQorCisgICAgLy8gRmlyc3QgcmVjb3JkIHdpbGwgYmUgcmV0
dXJuZWQgYXMgY3VycmVudCByZWNvcmQuCisgICAgaWYgKCFwcmVmZXRjaGVkUmVjb3Jkcy5pc0Vt
cHR5KCkpCisgICAgICAgIHByZWZldGNoZWRSZWNvcmRzLnJlbW92ZSgwKTsKKworICAgIHJlc3Vs
dCA9IHsgY3VycmVudFJlY29yZC5yZWNvcmQua2V5LCBjdXJyZW50UmVjb3JkLnJlY29yZC5wcmlt
YXJ5S2V5LCBJREJWYWx1ZShjdXJyZW50UmVjb3JkLnJlY29yZC52YWx1ZSksIGtleVBhdGgsIFdU
Rk1vdmUocHJlZmV0Y2hlZFJlY29yZHMpIH07CiB9CiAKIHN0YXRpYyBTdHJpbmcgYnVpbGRQcmVJ
bmRleFN0YXRlbWVudChib29sIGlzRGlyZWN0aW9uTmV4dCkKQEAgLTI2Myw2ICsyODEsOCBAQCB2
b2lkIFNRTGl0ZUlEQkN1cnNvcjo6b2JqZWN0U3RvcmVSZWNvcmRzQ2hhbmdlZCgpCiAgICAgLy8g
V2UgYWxzbyBuZWVkIHRvIHRocm93IGF3YXkgYW55IGZldGNoZWQgcmVjb3JkcyBhcyB0aGV5IG1h
eSBubyBsb25nZXIgYmUgdmFsaWQuCiAgICAgbV9mZXRjaGVkUmVjb3Jkcy5jbGVhcigpOwogICAg
IG1fZmV0Y2hlZFJlY29yZHNTaXplID0gMDsKKworICAgIG1fcHJlZmV0Y2hDb3VudCA9IDA7CiB9
CiAKIHZvaWQgU1FMaXRlSURCQ3Vyc29yOjpyZXNldEFuZFJlYmluZFN0YXRlbWVudCgpCkBAIC0z
NTksMTcgKzM3OSwzMiBAQCBib29sIFNRTGl0ZUlEQkN1cnNvcjo6cmVzZXRBbmRSZWJpbmRQcmVJ
bmRleFN0YXRlbWVudElmTmVjZXNzYXJ5KCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBT
UUxpdGVJREJDdXJzb3I6OnByZWZldGNoKCkKK2Jvb2wgU1FMaXRlSURCQ3Vyc29yOjpwcmVmZXRj
aE9uZVJlY29yZCgpCiB7Ci0gICAgTE9HKEluZGV4ZWREQiwgIlNRTGl0ZUlEQkN1cnNvcjo6cHJl
ZmV0Y2goKSAtIEN1cnNvciBhbHJlYWR5IGhhcyAlenUgZmV0Y2hlZCByZWNvcmRzIiwgbV9mZXRj
aGVkUmVjb3Jkcy5zaXplKCkpOworICAgIExPRyhJbmRleGVkREIsICJTUUxpdGVJREJDdXJzb3I6
OnByZWZldGNoT25lUmVjb3JkKCkgLSBDdXJzb3IgYWxyZWFkeSBoYXMgJXp1IGZldGNoZWQgcmVj
b3JkcyIsIG1fZmV0Y2hlZFJlY29yZHMuc2l6ZSgpKTsKIAogICAgIGlmIChtX2ZldGNoZWRSZWNv
cmRzU2l6ZSA+PSBwcmVmZXRjaFNpemVMaW1pdCB8fCBtX2ZldGNoZWRSZWNvcmRzLmlzRW1wdHko
KSB8fCBtX2ZldGNoZWRSZWNvcmRzLnNpemUoKSA+PSBwcmVmZXRjaExpbWl0IHx8IG1fZmV0Y2hl
ZFJlY29yZHMubGFzdCgpLmlzVGVybWluYWxSZWNvcmQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgbV9jdXJyZW50S2V5Rm9yVW5pcXVlbmVzcyA9IG1fZmV0Y2hlZFJlY29yZHMubGFz
dCgpLnJlY29yZC5rZXk7Ci0gICAgZmV0Y2goKTsKIAotICAgIHJldHVybiBtX2ZldGNoZWRSZWNv
cmRzLnNpemUoKSA8IHByZWZldGNoTGltaXQgJiYgbV9mZXRjaGVkUmVjb3Jkc1NpemUgPCBwcmVm
ZXRjaFNpemVMaW1pdDsKKyAgICByZXR1cm4gZmV0Y2goKSAmJiBtX2ZldGNoZWRSZWNvcmRzLnNp
emUoKSA8IHByZWZldGNoTGltaXQgJiYgbV9mZXRjaGVkUmVjb3Jkc1NpemUgPCBwcmVmZXRjaFNp
emVMaW1pdDsKK30KKwordm9pZCBTUUxpdGVJREJDdXJzb3I6OmluY3JlYXNlQ291bnRUb1ByZWZl
dGNoKCkKK3sKKyAgICBtX3ByZWZldGNoQ291bnQgPSBtX3ByZWZldGNoQ291bnQgPyBtX3ByZWZl
dGNoQ291bnQgKiAyIDogMTsKK30KKworYm9vbCBTUUxpdGVJREJDdXJzb3I6OnByZWZldGNoKCkK
K3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9wcmVmZXRjaENvdW50OyArK2kpIHsK
KyAgICAgICAgaWYgKCFwcmVmZXRjaE9uZVJlY29yZCgpKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIGluY3JlYXNlQ291bnRUb1ByZWZldGNoKCk7CisgICAgcmV0dXJu
IHRydWU7CiB9CiAKIGJvb2wgU1FMaXRlSURCQ3Vyc29yOjphZHZhbmNlKHVpbnQ2NF90IGNvdW50
KQpAQCAtNDg4LDcgKzUyMyw3IEBAIFNRTGl0ZUlEQkN1cnNvcjo6RmV0Y2hSZXN1bHQgU1FMaXRl
SURCQ3Vyc29yOjppbnRlcm5hbEZldGNoTmV4dFJlY29yZChTUUxpdGVDdXJzCiAgICAgQVNTRVJU
KCFtX2ZldGNoZWRSZWNvcmRzLmlzRW1wdHkoKSk7CiAgICAgQVNTRVJUKCFtX2ZldGNoZWRSZWNv
cmRzLmxhc3QoKS5pc1Rlcm1pbmFsUmVjb3JkKCkpOwogCi0gICAgcmVjb3JkLnJlY29yZC52YWx1
ZSA9IG51bGxwdHI7CisgICAgcmVjb3JkLnJlY29yZC52YWx1ZSA9IHsgfTsKIAogICAgIGF1dG8m
IGRhdGFiYXNlID0gbV90cmFuc2FjdGlvbi0+c3FsaXRlVHJhbnNhY3Rpb24oKS0+ZGF0YWJhc2Uo
KTsKICAgICBTUUxpdGVTdGF0ZW1lbnQqIHN0YXRlbWVudCA9IG51bGxwdHI7CkBAIC01NDYsNyAr
NTgxLDcgQEAgU1FMaXRlSURCQ3Vyc29yOjpGZXRjaFJlc3VsdCBTUUxpdGVJREJDdXJzb3I6Omlu
dGVybmFsRmV0Y2hOZXh0UmVjb3JkKFNRTGl0ZUN1cnMKICAgICAgICAgfQogCiAgICAgICAgIGlm
IChtX2N1cnNvclR5cGUgPT0gSW5kZXhlZERCOjpDdXJzb3JUeXBlOjpLZXlBbmRWYWx1ZSkKLSAg
ICAgICAgICAgIHJlY29yZC5yZWNvcmQudmFsdWUgPSBtYWtlVW5pcXVlPElEQlZhbHVlPihUaHJl
YWRTYWZlRGF0YUJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoa2V5RGF0YSkpLCBibG9iVVJMcywgYmxv
YkZpbGVQYXRocyk7CisgICAgICAgICAgICByZWNvcmQucmVjb3JkLnZhbHVlID0geyBUaHJlYWRT
YWZlRGF0YUJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoa2V5RGF0YSkpLCBibG9iVVJMcywgYmxvYkZp
bGVQYXRocyB9OwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmICghZGVzZXJpYWxpemVJREJLZXlE
YXRhKGtleURhdGEuZGF0YSgpLCBrZXlEYXRhLnNpemUoKSwgcmVjb3JkLnJlY29yZC5wcmltYXJ5
S2V5KSkgewogICAgICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gZGVzZXJpYWxpemUgdmFs
dWUgZGF0YSBmcm9tIGRhdGFiYXNlIHdoaWxlIGFkdmFuY2luZyBpbmRleCBjdXJzb3IiKTsKQEAg
LTU3Miw3ICs2MDcsNyBAQCBTUUxpdGVJREJDdXJzb3I6OkZldGNoUmVzdWx0IFNRTGl0ZUlEQkN1
cnNvcjo6aW50ZXJuYWxGZXRjaE5leHRSZWNvcmQoU1FMaXRlQ3VycwogCiAgICAgICAgIGlmIChy
ZXN1bHQgPT0gU1FMSVRFX1JPVykgewogICAgICAgICAgICAgbV9jYWNoZWRPYmplY3RTdG9yZVN0
YXRlbWVudC0+Z2V0Q29sdW1uQmxvYkFzVmVjdG9yKDAsIGtleURhdGEpOwotICAgICAgICAgICAg
cmVjb3JkLnJlY29yZC52YWx1ZSA9IG1ha2VVbmlxdWU8SURCVmFsdWU+KFRocmVhZFNhZmVEYXRh
QnVmZmVyOjpjcmVhdGUoV1RGTW92ZShrZXlEYXRhKSkpOworICAgICAgICAgICAgcmVjb3JkLnJl
Y29yZC52YWx1ZSA9IHsgVGhyZWFkU2FmZURhdGFCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGtleURh
dGEpKSB9OwogICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PSBTUUxJVEVfRE9ORSkgewogICAg
ICAgICAgICAgLy8gVGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgcmVjb3JkIHdlJ3JlIHRyeWluZyB0
byByZXRyaWV2ZSBoYXMgYmVlbiByZW1vdmVkIGZyb20gdGhlIG9iamVjdCBzdG9yZS4KICAgICAg
ICAgICAgIC8vIFNraXAgb3ZlciBpdC4KQEAgLTY0NSwxMCArNjgwLDEwIEBAIGNvbnN0IElEQktl
eURhdGEmIFNRTGl0ZUlEQkN1cnNvcjo6Y3VycmVudFByaW1hcnlLZXkoKSBjb25zdAogICAgIHJl
dHVybiBtX2ZldGNoZWRSZWNvcmRzLmZpcnN0KCkucmVjb3JkLnByaW1hcnlLZXk7CiB9CiAKLUlE
QlZhbHVlKiBTUUxpdGVJREJDdXJzb3I6OmN1cnJlbnRWYWx1ZSgpIGNvbnN0Citjb25zdCBJREJW
YWx1ZSYgU1FMaXRlSURCQ3Vyc29yOjpjdXJyZW50VmFsdWUoKSBjb25zdAogewogICAgIEFTU0VS
VCghbV9mZXRjaGVkUmVjb3Jkcy5pc0VtcHR5KCkpOwotICAgIHJldHVybiBtX2ZldGNoZWRSZWNv
cmRzLmZpcnN0KCkucmVjb3JkLnZhbHVlLmdldCgpOworICAgIHJldHVybiBtX2ZldGNoZWRSZWNv
cmRzLmZpcnN0KCkucmVjb3JkLnZhbHVlOwogfQogCiBib29sIFNRTGl0ZUlEQkN1cnNvcjo6ZGlk
Q29tcGxldGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5oCmluZGV4IGQ4MWRmYjVjM2Q5NTExMGJh
M2MyZDFlOTNiNjYzMTJjMDJkMzYyNjcuLmZkY2E4MGVkMGI2MWY2ZTUxZDMwNThmZmY2MzllZGJk
YzJiMmYyZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9TUUxpdGVJREJDdXJzb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmgKQEAgLTY2LDEwICs2NiwxMSBAQCBwdWJsaWM6
CiAKICAgICBjb25zdCBJREJLZXlEYXRhJiBjdXJyZW50S2V5KCkgY29uc3Q7CiAgICAgY29uc3Qg
SURCS2V5RGF0YSYgY3VycmVudFByaW1hcnlLZXkoKSBjb25zdDsKLSAgICBJREJWYWx1ZSogY3Vy
cmVudFZhbHVlKCkgY29uc3Q7CisgICAgY29uc3QgSURCVmFsdWUmIGN1cnJlbnRWYWx1ZSgpIGNv
bnN0OwogCiAgICAgYm9vbCBhZHZhbmNlKHVpbnQ2NF90IGNvdW50KTsKICAgICBib29sIGl0ZXJh
dGUoY29uc3QgSURCS2V5RGF0YSYgdGFyZ2V0S2V5LCBjb25zdCBJREJLZXlEYXRhJiB0YXJnZXRQ
cmltYXJ5S2V5KTsKKyAgICBib29sIHByZWZldGNoT25lUmVjb3JkKCk7CiAgICAgYm9vbCBwcmVm
ZXRjaCgpOwogCiAgICAgYm9vbCBkaWRDb21wbGV0ZSgpIGNvbnN0OwpAQCAtNzcsNyArNzgsOCBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIG9iamVjdFN0b3JlUmVjb3Jkc0NoYW5nZWQoKTsKIAotICAg
IHZvaWQgY3VycmVudERhdGEoSURCR2V0UmVzdWx0JiwgY29uc3QgT3B0aW9uYWw8SURCS2V5UGF0
aD4mKTsKKyAgICBlbnVtIGNsYXNzIFNob3VsZEluY2x1ZGVQcmVmZXRjaGVkUmVjb3JkcyB7IE5v
LCBZZXMgfTsKKyAgICB2b2lkIGN1cnJlbnREYXRhKElEQkdldFJlc3VsdCYsIGNvbnN0IE9wdGlv
bmFsPElEQktleVBhdGg+JiwgU2hvdWxkSW5jbHVkZVByZWZldGNoZWRSZWNvcmRzID0gU2hvdWxk
SW5jbHVkZVByZWZldGNoZWRSZWNvcmRzOjpObyk7CiAKIHByaXZhdGU6CiAgICAgYm9vbCBlc3Rh
Ymxpc2hTdGF0ZW1lbnQoKTsKQEAgLTEwOSw2ICsxMTEsOCBAQCBwcml2YXRlOgogCiAgICAgYm9v
bCBpc0RpcmVjdGlvbk5leHQoKSBjb25zdCB7IHJldHVybiBtX2N1cnNvckRpcmVjdGlvbiA9PSBJ
bmRleGVkREI6OkN1cnNvckRpcmVjdGlvbjo6TmV4dCB8fCBtX2N1cnNvckRpcmVjdGlvbiA9PSBJ
bmRleGVkREI6OkN1cnNvckRpcmVjdGlvbjo6TmV4dHVuaXF1ZTsgfQogCisgICAgdm9pZCBpbmNy
ZWFzZUNvdW50VG9QcmVmZXRjaCgpOworCiAgICAgU1FMaXRlSURCVHJhbnNhY3Rpb24qIG1fdHJh
bnNhY3Rpb247CiAgICAgSURCUmVzb3VyY2VJZGVudGlmaWVyIG1fY3Vyc29ySWRlbnRpZmllcjsK
ICAgICBpbnQ2NF90IG1fb2JqZWN0U3RvcmVJRDsKQEAgLTEzMyw2ICsxMzcsOCBAQCBwcml2YXRl
OgogICAgIGludDY0X3QgbV9ib3VuZElEIHsgMCB9OwogCiAgICAgYm9vbCBtX2JhY2tpbmdTdG9y
ZUN1cnNvciB7IGZhbHNlIH07CisKKyAgICB1bnNpZ25lZCBtX3ByZWZldGNoQ291bnQgeyAwIH07
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJREJTZXJ2ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3Bw
CmluZGV4IGEwYTA1MTZmNmZiY2M0ZTY4MGZjMmM5YTdmMDQ4NzkyMzU1M2NkZGYuLmFmNWIzMTg1
MDg1NmQ1ZDJkYjYyOWE5NjAwYWI0ZjQyNjQzMTRlNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNl
LmNwcApAQCAtODU0LDIyICs4NTQsNiBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjppdGVyYXRl
Q3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSQogICAgIGF1
dG8gZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+aXRlcmF0ZUN1cnNvcih0cmFuc2FjdGlvbklkZW50
aWZpZXIsIGN1cnNvcklkZW50aWZpZXIsIGRhdGEsIHJlc3VsdCk7CiAKICAgICBjYWxsYmFjayhl
cnJvciwgcmVzdWx0KTsKLQotICAgIGlmIChlcnJvci5pc051bGwoKSkKLSAgICAgICAgcHJlZmV0
Y2hDdXJzb3IodHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjdXJzb3JJZGVudGlmaWVyLCBkYXRhLmNv
dW50ID8gZGF0YS5jb3VudCA6IDEpOwotfQotCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwcmVm
ZXRjaEN1cnNvcihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRp
ZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiBjdXJzb3JJZGVudGlmaWVyLCB1aW50
NjRfdCBzdGVwKQotewotICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6cHJl
ZmV0Y2hDdXJzb3IiKTsKLQotICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwotCi0gICAgdWlu
dDY0X3QgY291bnRUb1ByZWZldGNoID0gc3RlcCAqIDI7Ci0gICAgd2hpbGUgKGNvdW50VG9QcmVm
ZXRjaCAtLSkgewotICAgICAgICBpZiAoIW1fYmFja2luZ1N0b3JlLT5wcmVmZXRjaEN1cnNvcih0
cmFuc2FjdGlvbklkZW50aWZpZXIsIGN1cnNvcklkZW50aWZpZXIpKQotICAgICAgICAgICAgcmV0
dXJuOwotICAgIH0KIH0KIAogdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y29tbWl0VHJhbnNhY3Rp
b24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIEVycm9yQ2FsbGJh
Y2sgY2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oCmluZGV4IDA2YmY2YTRlZjE2YzYyMzE4
Y2RjMzkzOWIyMzE2ZGFiYTU0ZjA0M2EuLjFjNjg4NzM1MDYwMjZlZmRlZmEwZDcyNzkzY2U4Y2Ey
Yzc0YzQ0OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9VbmlxdWVJREJEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oCkBAIC0xNDIsOCArMTQyLDYgQEAgcHJp
dmF0ZToKIAogICAgIHZvaWQgY2xlYXJUcmFuc2FjdGlvbnNPbkNvbm5lY3Rpb24oVW5pcXVlSURC
RGF0YWJhc2VDb25uZWN0aW9uJik7CiAKLSAgICB2b2lkIHByZWZldGNoQ3Vyc29yKGNvbnN0IElE
QlJlc291cmNlSWRlbnRpZmllciYsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYsIHVpbnQ2
NF90IHN0ZXApOwotCiAgICAgSURCU2VydmVyJiBtX3NlcnZlcjsKICAgICBJREJEYXRhYmFzZUlk
ZW50aWZpZXIgbV9pZGVudGlmaWVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VU
cmFuc2FjdGlvbi5jcHAKaW5kZXggMGM5YmIxMGZmODhjZDY0YzkwNTY5M2Y2MmNmYWNlZTg0MWFl
MmY4ZC4uOTk3NGNhNjcyZDM1OWUzZWZmYTEwNGUxYWNlNjBkODhjNDhlYmVlMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFi
YXNlVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcApAQCAtMzc0LDkgKzM3NCwx
MyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246Oml0ZXJhdGVDdXJzb3IoY29u
c3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYQogICAgIGF1dG8gZGF0YWJhc2UgPSBtX2RhdGFi
YXNlQ29ubmVjdGlvbi0+ZGF0YWJhc2UoKTsKICAgICBBU1NFUlQoZGF0YWJhc2UpOwogICAgIAot
ICAgIGRhdGFiYXNlLT5pdGVyYXRlQ3Vyc29yKHJlcXVlc3REYXRhLCBkYXRhLCBbdGhpcywgcmVx
dWVzdERhdGFdKGF1dG8mIGVycm9yLCBjb25zdCBJREJHZXRSZXN1bHQmIHJlc3VsdCkgeworICAg
IGRhdGFiYXNlLT5pdGVyYXRlQ3Vyc29yKHJlcXVlc3REYXRhLCBkYXRhLCBbdGhpcywgcmVxdWVz
dERhdGEsIG9wdGlvbiA9IGRhdGEub3B0aW9uXShhdXRvJiBlcnJvciwgY29uc3QgSURCR2V0UmVz
dWx0JiByZXN1bHQpIHsKICAgICAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNl
VHJhbnNhY3Rpb246Oml0ZXJhdGVDdXJzb3IgKGNhbGxiYWNrKSIpOwogCisgICAgICAgIGlmIChv
cHRpb24gPT0gSW5kZXhlZERCOjpDdXJzb3JJdGVyYXRlT3B0aW9uOjpEb05vdFJlcGx5KQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIEFTU0VSVCghZXJyb3IuaXNOdWxsKCkgfHwgcmVz
dWx0LmlzRGVmaW5lZCgpKTsKICAgICAgICAgaWYgKGVycm9yLmlzTnVsbCgpKQogICAgICAgICAg
ICAgbV9kYXRhYmFzZUNvbm5lY3Rpb24tPmNvbm5lY3Rpb25Ub0NsaWVudCgpLmRpZEl0ZXJhdGVD
dXJzb3IoSURCUmVzdWx0RGF0YTo6aXRlcmF0ZUN1cnNvclN1Y2Nlc3MocmVxdWVzdERhdGEucmVx
dWVzdElkZW50aWZpZXIoKSwgcmVzdWx0KSk7CiAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJDdXJzb3JSZWNvcmQuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJDdXJzb3JSZWNvcmQu
aAppbmRleCA2MTM2MDRhOGM1ZmEyZWM3ODQzYmI5OGIwNTRlMTAxZjY2M2U2MzFlLi45ZDVhYjk0
YWQ1NGQ0NTlhOTM2MDQ5Mzg3MGI3MzJjM2U3NGEwMWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCQ3Vyc29yUmVjb3JkLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkN1cnNvclJlY29yZC5oCkBA
IC0zNSwxMiArMzUsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IElEQkN1cnNvclJl
Y29yZCB7CiAgICAgSURCS2V5RGF0YSBrZXk7CiAgICAgSURCS2V5RGF0YSBwcmltYXJ5S2V5Owot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxJREJWYWx1ZT4gdmFsdWU7CisgICAgSURCVmFsdWUgdmFsdWU7
CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29u
c3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIGJvb2wgZGVjb2RlKERlY29k
ZXImLCBJREJDdXJzb3JSZWNvcmQmKTsKIAotICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1
cm4ga2V5LnNpemUoKSArIHByaW1hcnlLZXkuc2l6ZSgpICsgKHZhbHVlID8gdmFsdWUtPnNpemUo
KSA6IDApOyB9CisgICAgSURCQ3Vyc29yUmVjb3JkIGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAg
IHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4ga2V5LnNpemUoKSArIHByaW1hcnlLZXkuc2l6
ZSgpICsgdmFsdWUuc2l6ZSgpOyB9CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgpAQCAt
NjQsNiArNjUsMTEgQEAgYm9vbCBJREJDdXJzb3JSZWNvcmQ6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyLCBJREJDdXJzb3JSZWNvcmQmIHJlY29yZCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAoraW5s
aW5lIElEQkN1cnNvclJlY29yZCBJREJDdXJzb3JSZWNvcmQ6Omlzb2xhdGVkQ29weSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIHsga2V5Lmlzb2xhdGVkQ29weSgpLCBwcmltYXJ5S2V5Lmlzb2xhdGVk
Q29weSgpLCB2YWx1ZS5pc29sYXRlZENvcHkoKSB9OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJJdGVyYXRlQ3Vyc29yRGF0
YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCSXRlcmF0
ZUN1cnNvckRhdGEuY3BwCmluZGV4IGYxZjBiYjNiNmRiNDFlYTk3ZDMwMmZhM2RjMjcyNjZmZGU4
NjE3OTcuLmFkOWY0YTQ3NTAwMjJiYjA2NDYyZmM4ZGM5ZjUxOTJiNDZiYmFiNzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJJdGVyYXRlQ3Vy
c29yRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVk
L0lEQkl0ZXJhdGVDdXJzb3JEYXRhLmNwcApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIElEQkl0ZXJhdGVDdXJzb3JEYXRhIElEQkl0ZXJhdGVDdXJzb3JEYXRhOjppc29s
YXRlZENvcHkoKSBjb25zdAogewotICAgIHJldHVybiB7IGtleURhdGEuaXNvbGF0ZWRDb3B5KCks
IHByaW1hcnlLZXlEYXRhLmlzb2xhdGVkQ29weSgpLCBjb3VudCB9OworICAgIHJldHVybiB7IGtl
eURhdGEuaXNvbGF0ZWRDb3B5KCksIHByaW1hcnlLZXlEYXRhLmlzb2xhdGVkQ29weSgpLCBjb3Vu
dCwgb3B0aW9uIH07CiB9CiAKICNpZiAhTE9HX0RJU0FCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCSXRlcmF0ZUN1cnNvckRhdGEuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJJdGVyYXRlQ3Vyc29y
RGF0YS5oCmluZGV4IDhkMzE1YzVhNmEzMTc0ZjFlMjMxYTQwYTExNTk2Y2ZlODJmM2IxYjEuLjRk
ZjZjNjQ1ZjNiMjgxZTdjYTAwYmQ5ZDkyYmI3MWQwYzRmYjQwZDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJJdGVyYXRlQ3Vyc29yRGF0YS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJJdGVyYXRl
Q3Vyc29yRGF0YS5oCkBAIC0zNSw2ICszNSw3IEBAIHN0cnVjdCBJREJJdGVyYXRlQ3Vyc29yRGF0
YSB7CiAgICAgSURCS2V5RGF0YSBrZXlEYXRhOwogICAgIElEQktleURhdGEgcHJpbWFyeUtleURh
dGE7CiAgICAgdW5zaWduZWQgY291bnQ7CisgICAgSW5kZXhlZERCOjpDdXJzb3JJdGVyYXRlT3B0
aW9uIG9wdGlvbiB7IEluZGV4ZWREQjo6Q3Vyc29ySXRlcmF0ZU9wdGlvbjo6UmVwbHkgfTsKIAog
ICAgIFdFQkNPUkVfRVhQT1JUIElEQkl0ZXJhdGVDdXJzb3JEYXRhIGlzb2xhdGVkQ29weSgpIGNv
bnN0OwogCkBAIC01MCw2ICs1MSw3IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIElE
Qkl0ZXJhdGVDdXJzb3JEYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAg
ICBlbmNvZGVyIDw8IGtleURhdGEgPDwgcHJpbWFyeUtleURhdGEgPDwgc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KGNvdW50KTsKKyAgICBlbmNvZGVyLmVuY29kZUVudW0ob3B0aW9uKTsKIH0KIAogdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4KQEAgLTczLDkgKzc1LDExIEBAIGJvb2wgSURCSXRlcmF0ZUN1
cnNvckRhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBJREJJdGVyYXRlQ3Vyc29yRGF0YSYg
aXRlcmF0CiAKICAgICBpZiAoY291bnQgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6
bWF4KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLQogICAgIGl0ZXJhdG9yQ3Vyc29yRGF0YS5j
b3VudCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb3VudCk7CiAKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlRW51bShpdGVyYXRvckN1cnNvckRhdGEub3B0aW9uKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmMjRjYTM1NGQ2Yzk3NDRkOTE4YzY1
ZGZhMWE3ZDQ2YzI0MDdiZDIwLi43N2IzNjA1YmEyYTM3NGMxZDA5M2ZjNTFjYTMzNzliZGRiYzYy
ODBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0xNDAxLDcgKzE0MDEsNyBAQAogCQk1MTBENEEzNDEwMzE2NUVFMDA0OUVBNTQg
LyogU29ja2V0U3RyZWFtRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxMEQ0QTJFMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1FcnJv
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUx
MEQ0QTM3MTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMEQ0QTMxMTAzMTY1RUUwMDQ5
RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTBENEEzODEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0
U3RyZWFtSGFuZGxlQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTBENEEzMjEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxl
Q2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
LQkJNTExMEZDRkMxRTAzNjQxRDAwNkY4RDBCIC8qIElEQkN1cnNvclJlY29yZC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExMEZDRkIxRTAzNjJBNTAw
NkY4RDBCIC8qIElEQkN1cnNvclJlY29yZC5oICovOyB9OworCQk1MTEwRkNGQzFFMDM2NDFEMDA2
RjhEMEIgLyogSURCQ3Vyc29yUmVjb3JkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MTEwRkNGQjFFMDM2MkE1MDA2RjhEMEIgLyogSURCQ3Vyc29yUmVj
b3JkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NTExRUMxMjgxQzUwQUFDQTAwMzJGOTgzIC8qIElEQlNlcmlhbGl6YXRpb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMUVDMTI2MUM1MEFBNTcwMDMy
Rjk4MyAvKiBJREJTZXJpYWxpemF0aW9uLmggKi87IH07CiAJCTUxMUVDMTJDMUM1MEFCQkYwMDMy
Rjk4MyAvKiBTUUxpdGVJREJUcmFuc2FjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTExRUMxMkExQzUwQUJCQTAwMzJGOTgzIC8qIFNRTGl0ZUlE
QlRyYW5zYWN0aW9uLmggKi87IH07CiAJCTUxMUVDMTMwMUM1MEFCRjUwMDMyRjk4MyAvKiBTUUxp
dGVJREJDdXJzb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxMUVDMTJFMUM1MEFCRUMwMDMyRjk4MyAvKiBTUUxpdGVJREJDdXJzb3IuaCAqLzsgfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390582</attachid>
            <date>2020-02-12 16:14:26 -0800</date>
            <delta_ts>2020-02-14 09:24:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207602-20200212161425.patch</filename>
            <type>text/plain</type>
            <size>54607</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2NDgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWI1OWQwMmVhOGFmYTg2
MjkyYjU0NmI5YjUxZGExMjAxMThkZTgyYi4uYmZlODY2YWQxNTU4YTVlZDdiOGQwZjg0NTkyNzYy
MjNmYjM3YTNiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNSBAQAorMjAyMC0wMi0xMiAgU2lo
dWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBJbmRleGVkREI6IHByZWZl
dGNoIGN1cnNvciByZWNvcmRzIG9uIGNsaWVudCBzaWRlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc2MDIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzU4NDgzOTI3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIENhY2hlIGN1cnNvciByZWNvcmRzIG9uIG9uIGNsaWVudCBzaWRlIGFuZCB1c2UgdGhvc2Ug
cmVjb3JkcyBmb3IgaXRlcmF0ZSBvcGVyYXRpb25zLgorCisgICAgICAgIFRoaXMgbWFrZXMgY3Vy
c29yIGNvbnRpbnVlL2FkdmFuY2UgdGVzdHMgaW4gUGVyZm9ybWFuY2VUZXN0cy9JbmRleGVkREIv
YmFzaWNzIH4zeCBmYXN0ZXIuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorCisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QkN1cnNvcjo6c2V0R2V0UmVzdWx0KTogUmVjb3JkIHRoZSBJRCBvZiBUcmFuc2FjdGlvbk9wZXJh
dGlvbiB0aGF0IHVwZGF0ZXMgY2FjaGUuCisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6Oml0
ZXJhdGVXaXRoUHJlZmV0Y2hlZFJlY29yZHMpOiBJREJDdXJzb3IgdXNlcyBjYWNoZWQgcmVjb3Jk
cyBmb3IgaXRlcmF0ZSBvcGVydGFpb25zIGlmIAorICAgICAgICB0aGVyZSBpcyBubyB3cml0ZSBv
cGVyYXRpb24gYmV0d2VlbiBsYXN0IGNhY2hlIHVwZGF0ZSBhbmQgY3VycmVudCBpdGVyYXRpb24g
b3BlcmF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yOjpjbGVhclByZWZldGNoZWRS
ZWNvcmRzKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaDoKKworICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkdldFJlc3VsdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJREJHZXRSZXN1bHQ6Omlzb2xhdGVkQ29weSk6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCR2V0UmVzdWx0Lmg6CisgICAgICAgIChXZWJDb3JlOjpJREJHZXRSZXN1bHQ6OklE
QkdldFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJHZXRSZXN1bHQ6OnByZWZldGNoZWRS
ZWNvcmRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkdldFJlc3VsdDo6ZW5jb2RlIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkdldFJlc3VsdDo6ZGVjb2RlKToKKworICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwOiBSZWNvcmQgY29ycmVzcG9uZGlu
ZyBUcmFuc2FjdGlvbk9wZXJhdGlvbiBJRCBpbiByZXF1ZXN0LgorICAgICAgICAoV2ViQ29yZTo6
SURCUmVxdWVzdDo6ZGlkT3Blbk9ySXRlcmF0ZUN1cnNvcik6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvSURCUmVxdWVzdC5oOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6cGVu
ZGluZ0N1cnNvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpzZXRUcmFu
c2FjdGlvbk9wZXJhdGlvbklEKToKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRy
YW5zYWN0aW9uLmNwcDogSWYgYSBjdXJzb3IgaXRlcmF0ZSByZXF1ZXN0IGNhbiBiZSBoYW5kbGVk
IHdpdGggY2FjaGVkIHJlY29yZHMsCisgICAgICAgIElEQkNsaWVudCBkb2VzIG5lZWQgdG8gc2Vu
ZCByZXF1ZXN0IHRvIElEQlNlcnZlciBhbmQgd2FpdCBmb3IgcmVzcG9uc2UuIEJ1dCByZXF1ZXN0
cyBiZWZvcmUgdGhlIGl0ZXJhdGUgcmVxdWVzdAorICAgICAgICBtYXkgbmVlZCB0byB3YWl0IHNl
cnZlciB0byBhbnN3ZXIsIGFuZCBzcGVjIHJlcXVpcmVzIHRvIGhhbmRsZSByZXF1ZXN0cyBpbiBv
cmRlci4gVGhlcmVmb3JlLCB3ZSBub3cga2VlcCBhbGwgdGhlIAorICAgICAgICByZXN1bHRzIGlu
IG1fdHJhbnNhY3Rpb25PcGVyYXRpb25SZXN1bHRNYXAgYW5kIGhhbmRsZSB0aGUgcmVzdWx0IGFj
Y29yZGluZyB0byB0aGUgb3JkZXJpbmcgaW4gCisgICAgICAgIG1fdHJhbnNhY3Rpb25PcGVyYXRp
b25zSW5Qcm9ncmVzc1F1ZXVlLgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmFi
b3J0SW5Qcm9ncmVzc09wZXJhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rp
b246OnJlbW92ZVJlcXVlc3QpOiBCZWNhdXNlIHJlc3VsdCBvZiBhIGN1cnNvciByZXF1ZXN0IGNh
biBiZSBhbnN3ZXJlZCBzb29uZXIsIGl0IGlzIAorICAgICAgICBwb3NzaWJsZSB0aGF0IGluIGZp
bmlzaGVkRGlzcGF0Y2hFdmVudEZvclJlcXVlc3QsIG1fY3VycmVudGx5Q29tcGxldGluZ1JlcXVl
c3QsIHdoaWNoIGlzIGEgY3Vyc29yIHJlcXVlc3QsIGlzIAorICAgICAgICBzZXQgdG8gbnVsbHB0
ciwgYW5kIHRoZW4gaXQgaXMgc2V0IHRvIHRoZSBzYW1lIGN1cnNvciByZXF1ZXN0IGluIGhhbmRs
ZU9wZXJhdGlvbnNDb21wbGV0ZWRPblNlcnZlci4gVGhpcyAKKyAgICAgICAgaGFwcGVucyBpbiBk
aXNwYXRjaEV2ZW50IG9mIHRoZSBjdXJzb3IgcmVxdWVzdCwgd2hlcmUgcmVxdWVzdCB3b3VsZCBy
ZW1vdmUgaXRzZWxmIGZyb20gdHJhbnNhY3Rpb24gYXQgdGhlIGVuZC4KKyAgICAgICAgSW4gdGhp
cyBjYXNlLCB0cmFuc2FjdGlvbiBtYXkgY29tbWl0IGFmdGVyIHRoZSByZXF1ZXN0IGxpc3QgYmVj
b21lcyBlbXB0eS4gQnV0IHRyYW5zYWN0aW9uIHNob3VsZCBub3QgYmVjYXVzZQorICAgICAgICB0
aGF0IHJlcXVlc3QgaXMgc3RpbGwgdmFsaWQgYXMgbV9jdXJyZW50bHlDb21wbGV0aW5nUmVxdWVz
dCBhbmQgc2hvdWxkIG5vdCBiZSByZW1vdmVkLgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNh
Y3Rpb246OnNjaGVkdWxlT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0
aW9uOjpvcGVyYXRpb25Db21wbGV0ZWRPblNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJU
cmFuc2FjdGlvbjo6aGFuZGxlT3BlcmF0aW9uc0NvbXBsZXRlZE9uU2VydmVyKTogQWxsIHJlcXVl
c3RzIHdlcmUgc2VudCB0byBJREJTZXJ2ZXIgYW5kIHRoZQorICAgICAgICByZXNwb25zZS9yZXN1
bHQgb3JkZXIgd291bGQgbmF0dXJhbGx5IGJlIHRoZSBzYW1lIGFzIHJlcXVlc3Qgb3JkZXIuIE5v
dyB0aGF0IHNvbWUgcmVzdWx0cyBjYW4gYmUgZ2VuZXJhdGVkCisgICAgICAgIHNvb25lciwgd2Ug
bm8gbG9uZ2VyIGhhbmRsZSByZXF1ZXN0cyB1c2luZyBtX2NvbXBsZXRlZE9uU2VydmVyUXVldWUu
CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6Y3JlYXRlT2JqZWN0U3RvcmUpOiBN
YXJrIGFzIHdyaXRlIG9wZXJhdGlvbiB0byB0cmFjayBsYXN0IHdyaXRlIG9wZXJhdGlvbi4KKyAg
ICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZW5hbWVPYmplY3RTdG9yZSk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmNyZWF0ZUluZGV4KTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cmVuYW1lSW5kZXgpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0RGVsZXRlUmVjb3JkKTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cmVxdWVzdENsZWFyT2Jq
ZWN0U3RvcmUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZXF1
ZXN0UHV0T3JBZGQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpk
ZWxldGVPYmplY3RTdG9yZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rp
b246OmRlbGV0ZUluZGV4KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlv
bjo6aXRlcmF0ZUN1cnNvck9uU2VydmVyKTogT25seSB1c2UgY2FjaGVkIHJlY29yZHMgaWYgdGhl
IHJlcXVlc3QgZG9lcyBub3Qgc3BlY2lmeSB0YXJnZXQKKyAgICAgICAga2V5LiBJZiBjdXJzb3Ig
aXMgaXRlcmF0ZWQgc3VjY2Vzc2Z1bGx5IHdpdGggY2FjaGUsIHNlbmQgYSBtZXNzYWdlIHRvIElE
QlNlcnZlciB0byBub3RpZnkgYWJvdXQgdGhlIHByb2dyZXNzIGJ1dAorICAgICAgICBkb24ndCBu
ZWVkIGl0IHRvIHJlcGx5LiBPdGhlcndpc2UsIGZhbGwgYmFjayB0byBkZXBlbmQgb24gSURCU2Vy
dmVyIHRvIGFuc3dlciB0aGUgcmVxdWVzdC4KKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0
aW9uOjpnZW5lcmF0ZU9wZXJhdGlvbklEKTogVHJhbnNhY3Rpb25PcGVyYXRpb24gSUQgaXMgdW5p
cXVlIGluIGEgdHJhbnNhY3Rpb24uCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJh
bnNhY3Rpb24uaDoKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0luZGV4ZWREQi5oOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uUHJveHkuY3Bw
OiAKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5OjppdGVy
YXRlQ3Vyc29yKTogSWYgdGhlIGl0ZXJhdGVDdXJzb3IgZG9lcyBub3QgbmVlZCBhbiBhbnN3ZXIs
IGRvbid0CisgICAgICAgIHRyYWNrIGl0IGluIElEQkNvbm5lY3Rpb25Qcm94eS4KKworICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uOjpUcmFuc2Fj
dGlvbk9wZXJhdGlvbik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5z
YWN0aW9uT3BlcmF0aW9uLmg6IEFkZCBJRCB0byBUcmFuc2FjdGlvbk9wZXJhdGlvbi4KKyAgICAg
ICAgKFdlYkNvcmU6OklEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb246Om9wZXJhdGlvbklE
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRp
b246OlRyYW5zYWN0aW9uT3BlcmF0aW9uKToKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9JREJCYWNraW5nU3RvcmUuaDogcmVtb3ZlIHByZWZldGNoQ3Vyc29yIGFzIGl0IGlz
IG5vdCB1c2VkIG5vdy4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5
SURCQmFja2luZ1N0b3JlLmg6IERpdHRvLiBBbHNvIHRoaXMgcGF0Y2ggb25seSBkZWFscyB3aXRo
IHByZWZldGNoaW5nIGluIAorICAgICAgICBwZXJzaXN0ZW50IHN0b3JlLgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuaDoKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVJ
bmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6Z2V0QWxsSW5kZXhSZWNvcmRzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FM
aXRlSURCQmFja2luZ1N0b3JlOjpnZXRJbmRleFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6aXRlcmF0ZUN1cnNvcik6IE9ubHkgcHJl
ZmV0Y2ggYXQgd2hlbiByZXF1ZXN0IG5lZWRzIHRvIGJlIGFuc3dlcmVkLgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OnByZWZldGNoQ3Vyc29yKTog
RGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFj
a2luZ1N0b3JlLmg6CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRl
SURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vy
c29yOjpjdXJyZW50RGF0YSk6IFByb3ZpZGUgYW4gb3B0aW9uIHRvIGluY2x1ZGUgcHJlZmV0Y2hl
ZCByZWNvcmRzIGluIHJlc3VsdC4KKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRl
SURCQ3Vyc29yOjpvYmplY3RTdG9yZVJlY29yZHNDaGFuZ2VkKTogUmVzZXQgY291bnQgdG8gcHJl
ZmV0Y2ggd2hlbiB0aGVyZSBpcyBhIAorICAgICAgICBjaGFuZ2UgdG8gbWFrZSBwcmVmZXRjaCBh
ZGFwdGl2ZS4KKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpv
YmplY3RTdG9yZVJlY29yZHNDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
U1FMaXRlSURCQ3Vyc29yOjpwcmVmZXRjaE9uZVJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJTZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6aW5jcmVhc2VDb3VudFRvUHJlZmV0Y2gpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OnByZWZldGNoKTogQ291
bnQgdG8gcHJlZmV0Y2ggaXMgZGVjaWRlZCBieSBTUUxpdGVDdXJzb3Igbm93LgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OmludGVybmFsRmV0Y2hOZXh0UmVj
b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpjdXJy
ZW50VmFsdWUgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxp
dGVJREJDdXJzb3IuaDoKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9Vbmlx
dWVJREJEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlE
QkRhdGFiYXNlOjppdGVyYXRlQ3Vyc29yKTogTW92ZSBjYWxsIHRvIHByZWZldGNoIGN1cnNvciB0
byBTUUxpdGVJREJCYWNraW5nU3RvcmUuCisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVu
aXF1ZUlEQkRhdGFiYXNlOjpwcmVmZXRjaEN1cnNvcik6IERlbGV0ZWQuCisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmg6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9u
OjppdGVyYXRlQ3Vyc29yKToKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9J
REJDdXJzb3JSZWNvcmQuaDogU3RvcCB1c2UgcG9pbnRlciBmb3IgSURCVmFsdWUgZm9yIGVhc2ll
ciBlbmNvZGluZyBhbmQgZGVjb2RpbmcuCisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3JSZWNv
cmQ6OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yUmVjb3JkOjppc29s
YXRlZENvcHkgY29uc3QpOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lE
Qkl0ZXJhdGVDdXJzb3JEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkl0ZXJhdGVDdXJz
b3JEYXRhOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L3NoYXJlZC9JREJJdGVyYXRlQ3Vyc29yRGF0YS5oOiBBZGQgYW4gb3B0aW9uIHRvIGxldCBJREJT
ZXJ2ZXIga25vdyB3aGV0aGVyIGl0IHNob3VsZCBhbnN3ZXIKKyAgICAgICAgdGhlIGN1cnNvciBy
ZXF1ZXN0LiAKKyAgICAgICAgKFdlYkNvcmU6OklEQkl0ZXJhdGVDdXJzb3JEYXRhOjplbmNvZGUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCSXRlcmF0ZUN1cnNvckRhdGE6OmRlY29kZSk6
CisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMjAt
MDItMTIgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBTaHJp
bmsgQ2FjaGVkUmVzb3VyY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21h
a2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IGFmODc3N2UzZjA1YmZiM2Ey
ZGFiNDA3OGZlNmRhODBlNGU3ZDIyNjAuLjE3YzhjMTZiN2JmNmRjMmU2MzU0MjZkYmVmMDU5OTk4
NjFhMDA5MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIv
U291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtNjgsNiArNjgsNyBAQCBzZXQoV2ViQ29y
ZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uaAogCiAgICAgTW9kdWxlcy9pbmRleGVkZGIv
c2hhcmVkL0lEQkN1cnNvckluZm8uaAorICAgIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJD
dXJzb3JSZWNvcmQuaAogICAgIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJEYXRhYmFzZUlu
Zm8uaAogICAgIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJFcnJvci5oCiAgICAgTW9kdWxl
cy9pbmRleGVkZGIvc2hhcmVkL0lEQkdldEFsbFJlY29yZHNEYXRhLmgKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCmluZGV4IDM2OGVkYzIwNDgzYjU0
MWFjZDdiM2JmNTliZjVjZjE3YTFjOTNhMGIuLjY1Yjg5YjU4NWI1Y2VhZmFmZjljNzAxMGYwMTlm
NTVhMTVlNDZhNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
Q3Vyc29yLmNwcApAQCAtMzEyLDcgKzMxMiw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxXZWJDb3JlOjpJ
REJSZXF1ZXN0Pj4gSURCQ3Vyc29yOjpkZWxldGVGdW5jdGlvbihKU0dsb2JhbE9iamVjdCYKICAg
ICByZXR1cm4gcmVxdWVzdDsKIH0KIAotYm9vbCBJREJDdXJzb3I6OnNldEdldFJlc3VsdChJREJS
ZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBJREJHZXRSZXN1bHQmIGdldFJlc3VsdCkKK2Jvb2wgSURC
Q3Vyc29yOjpzZXRHZXRSZXN1bHQoSURCUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgSURCR2V0UmVz
dWx0JiBnZXRSZXN1bHQsIHVpbnQ2NF90IG9wZXJhdGlvbklEKQogewogICAgIExPRyhJbmRleGVk
REIsICJJREJDdXJzb3I6OnNldEdldFJlc3VsdCAtIGN1cnJlbnQga2V5ICVzIiwgZ2V0UmVzdWx0
LmtleURhdGEoKS5sb2dnaW5nU3RyaW5nKCkuc3Vic3RyaW5nKDAsIDEwMCkudXRmOCgpLmRhdGEo
KSk7CiAgICAgQVNTRVJUKGNhbkN1cnJlbnRUaHJlYWRBY2Nlc3NUaHJlYWRMb2NhbERhdGEoZWZm
ZWN0aXZlT2JqZWN0U3RvcmUoKS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFk
KCkpKTsKQEAgLTM0OSw2ICszNDksMTMgQEAgYm9vbCBJREJDdXJzb3I6OnNldEdldFJlc3VsdChJ
REJSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBJREJHZXRSZXN1bHQmIGdldFJlc3VsdCkKICAgICAg
ICAgbV9rZXlQYXRoID0gZ2V0UmVzdWx0LmtleVBhdGgoKTsKICAgICB9CiAKKyAgICBhdXRvIHBy
ZWZldGNoZWRSZWNvcmRzID0gZ2V0UmVzdWx0LnByZWZldGNoZWRSZWNvcmRzKCk7CisgICAgaWYg
KCFwcmVmZXRjaGVkUmVjb3Jkcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgZm9yIChhdXRvJiByZWNv
cmQgOiBwcmVmZXRjaGVkUmVjb3JkcykKKyAgICAgICAgICAgIG1fcHJlZmV0Y2hlZFJlY29yZHMu
YXBwZW5kKHJlY29yZCk7CisgICAgICAgIG1fcHJlZmV0Y2hPcGVyYXRpb25JRCA9IG9wZXJhdGlv
bklEOworICAgIH0KKwogICAgIG1fZ290VmFsdWUgPSB0cnVlOwogICAgIHJldHVybiB0cnVlOwog
fQpAQCAtMzYwLDYgKzM2NywyNiBAQCB2b2lkIElEQkN1cnNvcjo6Y2xlYXJXcmFwcGVycygpCiAg
ICAgbV92YWx1ZVdyYXBwZXIuY2xlYXIoKTsKIH0KIAorT3B0aW9uYWw8SURCR2V0UmVzdWx0PiBJ
REJDdXJzb3I6Oml0ZXJhdGVXaXRoUHJlZmV0Y2hlZFJlY29yZHModW5zaWduZWQgY291bnQsIHVp
bnQ2NF90IGxhc3RXcml0ZU9wZXJhdGlvbklEKQoreworICAgIHVuc2lnbmVkIHN0ZXAgPSBjb3Vu
dCA+IDAgPyBjb3VudCA6IDE7CisgICAgaWYgKHN0ZXAgPiBtX3ByZWZldGNoZWRSZWNvcmRzLnNp
emUoKSB8fCBtX3ByZWZldGNoT3BlcmF0aW9uSUQgPD0gbGFzdFdyaXRlT3BlcmF0aW9uSUQpCisg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICB3aGlsZSAoLS1zdGVwKQorICAgICAg
ICBtX3ByZWZldGNoZWRSZWNvcmRzLnJlbW92ZUZpcnN0KCk7CisKKyAgICBhdXRvIHJlY29yZCA9
IG1fcHJlZmV0Y2hlZFJlY29yZHMudGFrZUZpcnN0KCk7CisKKyAgICBMT0coSW5kZXhlZERCLCAi
SURCVHJhbnNhY3Rpb246Oml0ZXJhdGVXaXRoUHJlZmV0Y2hlZFJlY29yZHMgY29uc3VtZXMgJXUg
cmVjb3JkcyIsIGNvdW50ID4gMCA/IGNvdW50IDogMSk7CisgICAgcmV0dXJuIElEQkdldFJlc3Vs
dChyZWNvcmQua2V5LCByZWNvcmQucHJpbWFyeUtleSwgSURCVmFsdWUocmVjb3JkLnZhbHVlKSwg
ZWZmZWN0aXZlT2JqZWN0U3RvcmUoKS5rZXlQYXRoKCkpOworfQorCit2b2lkIElEQkN1cnNvcjo6
Y2xlYXJQcmVmZXRjaGVkUmVjb3JkcygpCit7CisgICAgbV9wcmVmZXRjaGVkUmVjb3Jkcy5jbGVh
cigpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5E
RVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkN1cnNvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vy
c29yLmgKaW5kZXggNDYyMmU3MDMzNDRiMzYwODBhNzFkZWEzMmRmOGE1MzFkY2ZjNThhYy4uN2Jj
OGY4YzAxN2RmNTBkMjZmOTlhNGJhM2I0MzI5YWViNjc1ZjhkOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmgKQEAgLTgxLDEwICs4MSwxMyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBjbGVhcldyYXBwZXJzKCk7CiAgICAgSURCUmVxdWVzdCogcmVxdWVzdCgp
IHsgcmV0dXJuIG1fcmVxdWVzdC5nZXQoKTsgfQogCi0gICAgYm9vbCBzZXRHZXRSZXN1bHQoSURC
UmVxdWVzdCYsIGNvbnN0IElEQkdldFJlc3VsdCYpOworICAgIGJvb2wgc2V0R2V0UmVzdWx0KElE
QlJlcXVlc3QmLCBjb25zdCBJREJHZXRSZXN1bHQmLCB1aW50NjRfdCBvcGVyYXRpb25JRCk7CiAK
ICAgICB2aXJ0dWFsIGJvb2wgaXNLZXlDdXJzb3JXaXRoVmFsdWUoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogCisgICAgT3B0aW9uYWw8SURCR2V0UmVzdWx0PiBpdGVyYXRlV2l0aFByZWZldGNo
ZWRSZWNvcmRzKHVuc2lnbmVkIGNvdW50LCB1aW50NjRfdCBsYXN0V3JpdGVPcGVyYXRpb25JRCk7
CisgICAgdm9pZCBjbGVhclByZWZldGNoZWRSZWNvcmRzKCk7CisKIHByb3RlY3RlZDoKICAgICBJ
REJDdXJzb3IoSURCT2JqZWN0U3RvcmUmLCBjb25zdCBJREJDdXJzb3JJbmZvJik7CiAgICAgSURC
Q3Vyc29yKElEQkluZGV4JiwgY29uc3QgSURCQ3Vyc29ySW5mbyYpOwpAQCAtMTEzLDYgKzExNiw5
IEBAIHByaXZhdGU6CiAgICAgSlNWYWx1ZUluV3JhcHBlZE9iamVjdCBtX2tleVdyYXBwZXI7CiAg
ICAgSlNWYWx1ZUluV3JhcHBlZE9iamVjdCBtX3ByaW1hcnlLZXlXcmFwcGVyOwogICAgIEpTVmFs
dWVJbldyYXBwZWRPYmplY3QgbV92YWx1ZVdyYXBwZXI7CisKKyAgICBEZXF1ZTxJREJDdXJzb3JS
ZWNvcmQ+IG1fcHJlZmV0Y2hlZFJlY29yZHM7CisgICAgdWludDY0X3QgbV9wcmVmZXRjaE9wZXJh
dGlvbklEIHsgMCB9OwogfTsKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCR2V0UmVzdWx0LmNwcAppbmRleCA5NDllODEzMzk3ZjMxYmYxOGU2NWJiYzU1ODIx
MmQwODgxNmMwNmZmLi4xMmVjODcwNzMyOTcwMWE0Y2EzNTAxMmRlNTJiZmIxMjczNTI5YjZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkdldFJlc3VsdC5j
cHAKQEAgLTU1LDYgKzU1LDcgQEAgdm9pZCBJREJHZXRSZXN1bHQ6Omlzb2xhdGVkQ29weShjb25z
dCBJREJHZXRSZXN1bHQmIHNvdXJjZSwgSURCR2V0UmVzdWx0JiBkZXN0aW4KICAgICBkZXN0aW5h
dGlvbi5tX3ByaW1hcnlLZXlEYXRhID0gc291cmNlLm1fcHJpbWFyeUtleURhdGEuaXNvbGF0ZWRD
b3B5KCk7CiAgICAgZGVzdGluYXRpb24ubV9rZXlQYXRoID0gV2ViQ29yZTo6aXNvbGF0ZWRDb3B5
KHNvdXJjZS5tX2tleVBhdGgpOwogICAgIGRlc3RpbmF0aW9uLm1faXNEZWZpbmVkID0gc291cmNl
Lm1faXNEZWZpbmVkOworICAgIGRlc3RpbmF0aW9uLm1fcHJlZmV0Y2hlZFJlY29yZHMgPSBzb3Vy
Y2UubV9wcmVmZXRjaGVkUmVjb3Jkcy5pc29sYXRlZENvcHkoKTsKIH0KIAogdm9pZCBJREJHZXRS
ZXN1bHQ6OnNldFZhbHVlKElEQlZhbHVlJiYgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkdldFJlc3VsdC5oCmluZGV4IGU4N2MzOTAxMjMzNDlkMTE1M2Qx
ZmMwOGM5ZTZiMmJmNzQ1MWIyNTMuLmQwM2Q4OWJhYzI0ODJjZDgzMTIzOGFmM2QyMjkwZjU2Zjkz
YTk2OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkdl
dFJlc3VsdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkdldFJl
c3VsdC5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkK
IAorI2luY2x1ZGUgIklEQkN1cnNvclJlY29yZC5oIgogI2luY2x1ZGUgIklEQktleS5oIgogI2lu
Y2x1ZGUgIklEQktleURhdGEuaCIKICNpbmNsdWRlICJJREJLZXlQYXRoLmgiCkBAIC03Niw2ICs3
NywxNSBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAorICAgIElEQkdldFJlc3VsdChjb25zdCBJ
REJLZXlEYXRhJiBrZXlEYXRhLCBjb25zdCBJREJLZXlEYXRhJiBwcmltYXJ5S2V5RGF0YSwgSURC
VmFsdWUmJiB2YWx1ZSwgY29uc3QgT3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgsIFZlY3Rv
cjxJREJDdXJzb3JSZWNvcmQ+JiYgcHJlZmV0ZWNoZWRSZWNvcmRzKQorICAgICAgICA6IG1fdmFs
dWUoV1RGTW92ZSh2YWx1ZSkpCisgICAgICAgICwgbV9rZXlEYXRhKGtleURhdGEpCisgICAgICAg
ICwgbV9wcmltYXJ5S2V5RGF0YShwcmltYXJ5S2V5RGF0YSkKKyAgICAgICAgLCBtX2tleVBhdGgo
a2V5UGF0aCkKKyAgICAgICAgLCBtX3ByZWZldGNoZWRSZWNvcmRzKFdURk1vdmUocHJlZmV0ZWNo
ZWRSZWNvcmRzKSkKKyAgICB7CisgICAgfQorCiAgICAgZW51bSBJc29sYXRlZENvcHlUYWcgeyBJ
c29sYXRlZENvcHkgfTsKICAgICBJREJHZXRSZXN1bHQoY29uc3QgSURCR2V0UmVzdWx0JiwgSXNv
bGF0ZWRDb3B5VGFnKTsKIApAQCAtODcsNiArOTcsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgSURC
S2V5RGF0YSYga2V5RGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fa2V5RGF0YTsgfQogICAgIGNvbnN0
IElEQktleURhdGEmIHByaW1hcnlLZXlEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9wcmltYXJ5S2V5
RGF0YTsgfQogICAgIGNvbnN0IE9wdGlvbmFsPElEQktleVBhdGg+JiBrZXlQYXRoKCkgY29uc3Qg
eyByZXR1cm4gbV9rZXlQYXRoOyB9CisgICAgY29uc3QgVmVjdG9yPElEQkN1cnNvclJlY29yZD4m
IHByZWZldGNoZWRSZWNvcmRzKCkgY29uc3QgeyByZXR1cm4gbV9wcmVmZXRjaGVkUmVjb3Jkczsg
fQogICAgIGJvb2wgaXNEZWZpbmVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0RlZmluZWQ7IH0KIAog
ICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsK
QEAgLTEwMSwxMyArMTEyLDE0IEBAIHByaXZhdGU6CiAgICAgSURCS2V5RGF0YSBtX2tleURhdGE7
CiAgICAgSURCS2V5RGF0YSBtX3ByaW1hcnlLZXlEYXRhOwogICAgIE9wdGlvbmFsPElEQktleVBh
dGg+IG1fa2V5UGF0aDsKKyAgICBWZWN0b3I8SURCQ3Vyc29yUmVjb3JkPiBtX3ByZWZldGNoZWRS
ZWNvcmRzOwogICAgIGJvb2wgbV9pc0RlZmluZWQgeyB0cnVlIH07CiB9OwogCiB0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPgogdm9pZCBJREJHZXRSZXN1bHQ6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAogewotICAgIGVuY29kZXIgPDwgbV9rZXlEYXRhIDw8IG1fcHJpbWFyeUtleURhdGEg
PDwgbV9rZXlQYXRoIDw8IG1faXNEZWZpbmVkIDw8IG1fdmFsdWU7CisgICAgZW5jb2RlciA8PCBt
X2tleURhdGEgPDwgbV9wcmltYXJ5S2V5RGF0YSA8PCBtX2tleVBhdGggPDwgbV9pc0RlZmluZWQg
PDwgbV92YWx1ZSA8PCBtX3ByZWZldGNoZWRSZWNvcmRzOwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPgpAQCAtMTM3LDYgKzE0OSwxMiBAQCBib29sIElEQkdldFJlc3VsdDo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIsIElEQkdldFJlc3VsdCYgcmVzdWx0KQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgcmVzdWx0Lm1fdmFsdWUgPSBXVEZNb3ZlKCp2YWx1ZSk7CiAKKyAgICBPcHRpb25h
bDxWZWN0b3I8SURCQ3Vyc29yUmVjb3JkPj4gcHJlZmV0Y2hlZFJlY29yZHM7CisgICAgZGVjb2Rl
ciA+PiBwcmVmZXRjaGVkUmVjb3JkczsKKyAgICBpZiAoIXByZWZldGNoZWRSZWNvcmRzKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgcmVzdWx0Lm1fcHJlZmV0Y2hlZFJlY29yZHMgPSBXVEZN
b3ZlKCpwcmVmZXRjaGVkUmVjb3Jkcyk7CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAppbmRleCAzMGY2
ZTVjZGY0ZDlmZGJjNjFjZTNhMjAzYzRhZDA2M2JkOGM1MmIzLi4zZDAyMTE5YzdhNTFlMWUxZmNh
MGVhMmVkNGM5ZDI1ZTg3NWUwMjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcApAQCAtNDk5LDcgKzQ5OSw3IEBAIHZvaWQgSURCUmVxdWVz
dDo6ZGlkT3Blbk9ySXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRh
KQogICAgIG1fcmVzdWx0V3JhcHBlciA9IHsgfTsKIAogICAgIGlmIChyZXN1bHREYXRhLnR5cGUo
KSA9PSBJREJSZXN1bHRUeXBlOjpJdGVyYXRlQ3Vyc29yU3VjY2VzcyB8fCByZXN1bHREYXRhLnR5
cGUoKSA9PSBJREJSZXN1bHRUeXBlOjpPcGVuQ3Vyc29yU3VjY2VzcykgewotICAgICAgICBpZiAo
bV9wZW5kaW5nQ3Vyc29yLT5zZXRHZXRSZXN1bHQoKnRoaXMsIHJlc3VsdERhdGEuZ2V0UmVzdWx0
KCkpICYmIG1fY3Vyc29yV3JhcHBlcikKKyAgICAgICAgaWYgKG1fcGVuZGluZ0N1cnNvci0+c2V0
R2V0UmVzdWx0KCp0aGlzLCByZXN1bHREYXRhLmdldFJlc3VsdCgpLCBtX2N1cnJlbnRUcmFuc2Fj
dGlvbk9wZXJhdGlvbklEKSAmJiBtX2N1cnNvcldyYXBwZXIpCiAgICAgICAgICAgICBtX3Jlc3Vs
dFdyYXBwZXIgPSBtX2N1cnNvcldyYXBwZXI7CiAgICAgICAgIGlmIChyZXN1bHREYXRhLmdldFJl
c3VsdCgpLmlzRGVmaW5lZCgpKQogICAgICAgICAgICAgbV9yZXN1bHQgPSBtX3BlbmRpbmdDdXJz
b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1
ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmgKaW5k
ZXggMjc4NTAxYmE2MGU5ZGUwMzAyODFkOGNiMmYxMTA2NzhiMGM5YjhiMy4uMjg2NjEzNDRiMGRl
MjE3NmY1YmVhYzM2MTMxNTQwZjEyNTZmZGRlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaApAQCAtMTE4LDcgKzExOCw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHdpbGxJdGVyYXRlQ3Vyc29yKElEQkN1cnNvciYpOwogICAgIHZvaWQgZGlkT3Blbk9y
SXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXN1bHREYXRhJik7CiAKLSAgICBjb25zdCBJREJDdXJz
b3IqIHBlbmRpbmdDdXJzb3IoKSBjb25zdCB7IHJldHVybiBtX3BlbmRpbmdDdXJzb3IuZ2V0KCk7
IH0KKyAgICBJREJDdXJzb3IqIHBlbmRpbmdDdXJzb3IoKSBjb25zdCB7IHJldHVybiBtX3BlbmRp
bmdDdXJzb3IgPyBtX3BlbmRpbmdDdXJzb3IuZ2V0KCkgOiBudWxscHRyOyB9CiAKICAgICB2b2lk
IHNldFNvdXJjZShJREJDdXJzb3ImKTsKICAgICB2b2lkIHNldFZlcnNpb25DaGFuZ2VUcmFuc2Fj
dGlvbihJREJUcmFuc2FjdGlvbiYpOwpAQCAtMTI3LDYgKzEyNyw4IEBAIHB1YmxpYzoKIAogICAg
IGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QgZmluYWw7CiAKKyAgICB2b2lkIHNldFRy
YW5zYWN0aW9uT3BlcmF0aW9uSUQodWludDY0X3QgdHJhbnNhY3Rpb25PcGVyYXRpb25JRCkgeyBt
X2N1cnJlbnRUcmFuc2FjdGlvbk9wZXJhdGlvbklEID0gdHJhbnNhY3Rpb25PcGVyYXRpb25JRDsg
fQorCiBwcm90ZWN0ZWQ6CiAgICAgSURCUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jiwg
SURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkmKTsKIApAQCAtMTkxLDYgKzE5Myw4IEBAIHBy
aXZhdGU6CiAKICAgICBib29sIG1fZGlzcGF0Y2hpbmdFdmVudCB7IGZhbHNlIH07CiAgICAgYm9v
bCBtX2hhc1VuY2F1Z2h0RXhjZXB0aW9uIHsgZmFsc2UgfTsKKworICAgIHVpbnQ2NF90IG1fY3Vy
cmVudFRyYW5zYWN0aW9uT3BlcmF0aW9uSUQgeyAwIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJU
cmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFu
c2FjdGlvbi5jcHAKaW5kZXggNDdmMmNiMGU1ZmY2M2M4NDlhOTkyY2Q4ZGY3YzdhZDI5ZDMwMTcy
ZC4uOGRkZjIwNzlhZjk1NDAyYjBhNDM0MGNjMjc5ZTk0Yjk3NTFmYTMwZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcApAQCAt
MjcyLDE1ICsyNzIsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjphYm9ydEluUHJvZ3Jlc3NPcGVy
YXRpb25zKGNvbnN0IElEQkVycm9yJiBlcnJvcikKICAgICAgICAgb3BlcmF0aW9uLT5kb0NvbXBs
ZXRlKElEQlJlc3VsdERhdGE6OmVycm9yKG9wZXJhdGlvbi0+aWRlbnRpZmllcigpLCBlcnJvcikp
OwogICAgIH0KIAotICAgIFZlY3RvcjxSZWZQdHI8SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJh
dGlvbj4+IGNvbXBsZXRlZE9uU2VydmVyQWJvcnRWZWN0b3I7Ci0gICAgY29tcGxldGVkT25TZXJ2
ZXJBYm9ydFZlY3Rvci5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fY29tcGxldGVkT25TZXJ2ZXJR
dWV1ZS5zaXplKCkpOwotICAgIHdoaWxlICghbV9jb21wbGV0ZWRPblNlcnZlclF1ZXVlLmlzRW1w
dHkoKSkKLSAgICAgICAgY29tcGxldGVkT25TZXJ2ZXJBYm9ydFZlY3Rvci51bmNoZWNrZWRBcHBl
bmQobV9jb21wbGV0ZWRPblNlcnZlclF1ZXVlLnRha2VGaXJzdCgpLmZpcnN0KTsKLQotICAgIGZv
ciAoYXV0byYgb3BlcmF0aW9uIDogY29tcGxldGVkT25TZXJ2ZXJBYm9ydFZlY3RvcikgewotICAg
ICAgICBtX2N1cnJlbnRseUNvbXBsZXRpbmdSZXF1ZXN0ID0gbnVsbHB0cjsKLSAgICAgICAgb3Bl
cmF0aW9uLT5kb0NvbXBsZXRlKElEQlJlc3VsdERhdGE6OmVycm9yKG9wZXJhdGlvbi0+aWRlbnRp
ZmllcigpLCBlcnJvcikpOwotICAgIH0KKyAgICBtX3RyYW5zYWN0aW9uT3BlcmF0aW9uUmVzdWx0
TWFwLmNsZWFyKCk7CiAKICAgICBtX2N1cnJlbnRseUNvbXBsZXRpbmdSZXF1ZXN0ID0gbnVsbHB0
cjsKICAgICBjb25uZWN0aW9uUHJveHkoKS5mb3JnZXRBY3RpdmVPcGVyYXRpb25zKGluUHJvZ3Jl
c3NBYm9ydFZlY3Rvcik7CkBAIC0zNzYsMTYgKzM2OCwyMiBAQCB2b2lkIElEQlRyYW5zYWN0aW9u
OjphZGRSZXF1ZXN0KElEQlJlcXVlc3QmIHJlcXVlc3QpCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpy
ZW1vdmVSZXF1ZXN0KElEQlJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgQVNTRVJUKGNhbkN1cnJl
bnRUaHJlYWRBY2Nlc3NUaHJlYWRMb2NhbERhdGEobV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkp
KTsKKyAgICBpZiAobV9jdXJyZW50bHlDb21wbGV0aW5nUmVxdWVzdCA9PSAmcmVxdWVzdCkKKyAg
ICAgICAgcmV0dXJuOworCiAgICAgbV9vcGVuUmVxdWVzdHMucmVtb3ZlKCZyZXF1ZXN0KTsKIAog
ICAgIGF1dG9Db21taXQoKTsKIH0KIAotdm9pZCBJREJUcmFuc2FjdGlvbjo6c2NoZWR1bGVPcGVy
YXRpb24oUmVmPElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24+JiYgb3BlcmF0aW9uKQor
dm9pZCBJREJUcmFuc2FjdGlvbjo6c2NoZWR1bGVPcGVyYXRpb24oUmVmPElEQkNsaWVudDo6VHJh
bnNhY3Rpb25PcGVyYXRpb24+JiYgb3BlcmF0aW9uLCBJc1dyaXRlT3BlcmF0aW9uIGlzV3JpdGVP
cGVyYXRpb24pCiB7CiAgICAgQVNTRVJUKCFtX3RyYW5zYWN0aW9uT3BlcmF0aW9uTWFwLmNvbnRh
aW5zKG9wZXJhdGlvbi0+aWRlbnRpZmllcigpKSk7CiAgICAgQVNTRVJUKGNhbkN1cnJlbnRUaHJl
YWRBY2Nlc3NUaHJlYWRMb2NhbERhdGEobV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkKCkpKTsKIAor
ICAgIGlmIChpc1dyaXRlT3BlcmF0aW9uID09IElzV3JpdGVPcGVyYXRpb246OlllcykKKyAgICAg
ICAgbV9sYXN0V3JpdGVPcGVyYXRpb25JRCA9IG9wZXJhdGlvbi0+b3BlcmF0aW9uSUQoKTsKKwog
ICAgIGF1dG8gaWRlbnRpZmllciA9IG9wZXJhdGlvbi0+aWRlbnRpZmllcigpOwogICAgIG1fcGVu
ZGluZ1RyYW5zYWN0aW9uT3BlcmF0aW9uUXVldWUuYXBwZW5kKG9wZXJhdGlvbi5jb3B5UmVmKCkp
OwogICAgIG1fdHJhbnNhY3Rpb25PcGVyYXRpb25NYXAuc2V0KGlkZW50aWZpZXIsIFdURk1vdmUo
b3BlcmF0aW9uKSk7CkBAIC0zOTgsNyArMzk2LDEwIEBAIHZvaWQgSURCVHJhbnNhY3Rpb246Om9w
ZXJhdGlvbkNvbXBsZXRlZE9uU2VydmVyKGNvbnN0IElEQlJlc3VsdERhdGEmIGRhdGEsIElEQkNs
CiAgICAgQVNTRVJUKGNhbkN1cnJlbnRUaHJlYWRBY2Nlc3NUaHJlYWRMb2NhbERhdGEobV9kYXRh
YmFzZS0+b3JpZ2luVGhyZWFkKCkpKTsKICAgICBBU1NFUlQoY2FuQ3VycmVudFRocmVhZEFjY2Vz
c1RocmVhZExvY2FsRGF0YShvcGVyYXRpb24ub3JpZ2luVGhyZWFkKCkpKTsKIAotICAgIG1fY29t
cGxldGVkT25TZXJ2ZXJRdWV1ZS5hcHBlbmQoeyAmb3BlcmF0aW9uLCBkYXRhIH0pOworICAgIGlm
ICghbV90cmFuc2FjdGlvbk9wZXJhdGlvbk1hcC5jb250YWlucyhvcGVyYXRpb24uaWRlbnRpZmll
cigpKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV90cmFuc2FjdGlvbk9wZXJhdGlvblJlc3Vs
dE1hcC5zZXQoJm9wZXJhdGlvbiwgSURCUmVzdWx0RGF0YShkYXRhKSk7CiAKICAgICBpZiAoIW1f
Y3VycmVudGx5Q29tcGxldGluZ1JlcXVlc3QpCiAgICAgICAgIGhhbmRsZU9wZXJhdGlvbnNDb21w
bGV0ZWRPblNlcnZlcigpOwpAQCAtNDA2LDEyICs0MDcsMTUgQEAgdm9pZCBJREJUcmFuc2FjdGlv
bjo6b3BlcmF0aW9uQ29tcGxldGVkT25TZXJ2ZXIoY29uc3QgSURCUmVzdWx0RGF0YSYgZGF0YSwg
SURCQ2wKIAogdm9pZCBJREJUcmFuc2FjdGlvbjo6aGFuZGxlT3BlcmF0aW9uc0NvbXBsZXRlZE9u
U2VydmVyKCkKIHsKLSAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OmNvbXBsZXRl
ZE9wZXJhdGlvblRpbWVyRmlyZWQgKCVwKSIsIHRoaXMpOworICAgIExPRyhJbmRleGVkREIsICJJ
REJUcmFuc2FjdGlvbjo6aGFuZGxlT3BlcmF0aW9uc0NvbXBsZXRlZE9uU2VydmVyIik7CiAgICAg
QVNTRVJUKGNhbkN1cnJlbnRUaHJlYWRBY2Nlc3NUaHJlYWRMb2NhbERhdGEobV9kYXRhYmFzZS0+
b3JpZ2luVGhyZWFkKCkpKTsKIAotICAgIHdoaWxlICghbV9jb21wbGV0ZWRPblNlcnZlclF1ZXVl
LmlzRW1wdHkoKSAmJiAhbV9jdXJyZW50bHlDb21wbGV0aW5nUmVxdWVzdCkgewotICAgICAgICBh
dXRvIGl0ZXJhdG9yID0gbV9jb21wbGV0ZWRPblNlcnZlclF1ZXVlLnRha2VGaXJzdCgpOwotICAg
ICAgICBpdGVyYXRvci5maXJzdC0+ZG9Db21wbGV0ZShpdGVyYXRvci5zZWNvbmQpOworICAgIHdo
aWxlICghbV90cmFuc2FjdGlvbk9wZXJhdGlvbnNJblByb2dyZXNzUXVldWUuaXNFbXB0eSgpICYm
ICFtX2N1cnJlbnRseUNvbXBsZXRpbmdSZXF1ZXN0KSB7CisgICAgICAgIFJlZlB0cjxJREJDbGll
bnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uPiBjdXJyZW50T3BlcmF0aW9uID0gbV90cmFuc2FjdGlv
bk9wZXJhdGlvbnNJblByb2dyZXNzUXVldWUuZmlyc3QoKTsKKyAgICAgICAgaWYgKCFtX3RyYW5z
YWN0aW9uT3BlcmF0aW9uUmVzdWx0TWFwLmNvbnRhaW5zKGN1cnJlbnRPcGVyYXRpb24pKQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGN1cnJlbnRPcGVyYXRpb24tPmRvQ29tcGxldGUo
bV90cmFuc2FjdGlvbk9wZXJhdGlvblJlc3VsdE1hcC50YWtlKGN1cnJlbnRPcGVyYXRpb24pKTsK
ICAgICB9CiB9CiAKQEAgLTYyMiw3ICs2MjYsNyBAQCBSZWY8SURCT2JqZWN0U3RvcmU+IElEQlRy
YW5zYWN0aW9uOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBJREJPYmplY3RTdG9yZUluZm8mCiAg
ICAgICAgIHByb3RlY3RlZFRoaXMtPmRpZENyZWF0ZU9iamVjdFN0b3JlT25TZXJ2ZXIocmVzdWx0
KTsKICAgICB9LCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBpbmZvID0gaW5mby5p
c29sYXRlZENvcHkoKV0gKGF1dG8mIG9wZXJhdGlvbikgewogICAgICAgICBwcm90ZWN0ZWRUaGlz
LT5jcmVhdGVPYmplY3RTdG9yZU9uU2VydmVyKG9wZXJhdGlvbiwgaW5mbyk7Ci0gICAgfSkpOwor
ICAgIH0pLCBJc1dyaXRlT3BlcmF0aW9uOjpZZXMpOwogCiAgICAgcmV0dXJuICpyYXdPYmplY3RT
dG9yZTsKIH0KQEAgLTY2NCw3ICs2NjgsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpyZW5hbWVP
YmplY3RTdG9yZShJREJPYmplY3RTdG9yZSYgb2JqZWN0U3RvcmUsIGNvbnN0IFN0cmluZwogICAg
ICAgICBwcm90ZWN0ZWRUaGlzLT5kaWRSZW5hbWVPYmplY3RTdG9yZU9uU2VydmVyKHJlc3VsdCk7
CiAgICAgfSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgb2JqZWN0U3RvcmVJZGVu
dGlmaWVyLCBuZXdOYW1lID0gbmV3TmFtZS5pc29sYXRlZENvcHkoKV0gKGF1dG8mIG9wZXJhdGlv
bikgewogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5yZW5hbWVPYmplY3RTdG9yZU9uU2VydmVyKG9w
ZXJhdGlvbiwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBuZXdOYW1lKTsKLSAgICB9KSk7CisgICAg
fSksIElzV3JpdGVPcGVyYXRpb246Olllcyk7CiAKICAgICBtX3JlZmVyZW5jZWRPYmplY3RTdG9y
ZXMuc2V0KG5ld05hbWUsIG1fcmVmZXJlbmNlZE9iamVjdFN0b3Jlcy50YWtlKG9iamVjdFN0b3Jl
LmluZm8oKS5uYW1lKCkpKTsKIH0KQEAgLTY5OSw3ICs3MDMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8
SURCSW5kZXg+IElEQlRyYW5zYWN0aW9uOjpjcmVhdGVJbmRleChJREJPYmplY3RTdG9yZSYgb2Jq
ZWN0U3RvcgogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kaWRDcmVhdGVJbmRleE9uU2VydmVyKHJl
c3VsdCk7CiAgICAgfSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaW5mbyA9IGlu
Zm8uaXNvbGF0ZWRDb3B5KCldIChhdXRvJiBvcGVyYXRpb24pIHsKICAgICAgICAgcHJvdGVjdGVk
VGhpcy0+Y3JlYXRlSW5kZXhPblNlcnZlcihvcGVyYXRpb24sIGluZm8pOwotICAgIH0pKTsKKyAg
ICB9KSwgSXNXcml0ZU9wZXJhdGlvbjo6WWVzKTsKIAogICAgIHJldHVybiBtYWtlVW5pcXVlPElE
QkluZGV4Pigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBpbmZvLCBvYmplY3RTdG9yZSk7CiB9
CkBAIC03NTMsNyArNzU3LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6cmVuYW1lSW5kZXgoSURC
SW5kZXgmIGluZGV4LCBjb25zdCBTdHJpbmcmIG5ld05hbWUpCiAgICAgICAgIHByb3RlY3RlZFRo
aXMtPmRpZFJlbmFtZUluZGV4T25TZXJ2ZXIocmVzdWx0KTsKICAgICB9LCBbcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4SWRlbnRpZmll
ciwgbmV3TmFtZSA9IG5ld05hbWUuaXNvbGF0ZWRDb3B5KCldIChhdXRvJiBvcGVyYXRpb24pIHsK
ICAgICAgICAgcHJvdGVjdGVkVGhpcy0+cmVuYW1lSW5kZXhPblNlcnZlcihvcGVyYXRpb24sIG9i
amVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhJZGVudGlmaWVyLCBuZXdOYW1lKTsKLSAgICB9KSk7
CisgICAgfSksIElzV3JpdGVPcGVyYXRpb246Olllcyk7CiB9CiAKIHZvaWQgSURCVHJhbnNhY3Rp
b246OnJlbmFtZUluZGV4T25TZXJ2ZXIoSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYg
b3BlcmF0aW9uLCBjb25zdCB1aW50NjRfdCYgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCB1
aW50NjRfdCYgaW5kZXhJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUpCkBAIC04NTIs
NyArODU2LDIzIEBAIHZvaWQgSURCVHJhbnNhY3Rpb246Oml0ZXJhdGVDdXJzb3JPblNlcnZlcihJ
REJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyCiB7CiAgICAgTE9HKEluZGV4ZWRE
QiwgIklEQlRyYW5zYWN0aW9uOjppdGVyYXRlQ3Vyc29yT25TZXJ2ZXIiKTsKICAgICBBU1NFUlQo
Y2FuQ3VycmVudFRocmVhZEFjY2Vzc1RocmVhZExvY2FsRGF0YShtX2RhdGFiYXNlLT5vcmlnaW5U
aHJlYWQoKSkpOworICAgIEFTU0VSVChvcGVyYXRpb24uaWRiUmVxdWVzdCgpKTsKIAorICAgIGF1
dG8qIGN1cnNvciA9IG9wZXJhdGlvbi5pZGJSZXF1ZXN0KCktPnBlbmRpbmdDdXJzb3IoKTsKKyAg
ICBBU1NFUlQoY3Vyc29yKTsKKworICAgIGlmIChkYXRhLmtleURhdGEuaXNOdWxsKCkgJiYgZGF0
YS5wcmltYXJ5S2V5RGF0YS5pc051bGwoKSkgeworICAgICAgICBpZiAoYXV0byBnZXRSZXN1bHQg
PSBjdXJzb3ItPml0ZXJhdGVXaXRoUHJlZmV0Y2hlZFJlY29yZHMoZGF0YS5jb3VudCwgbV9sYXN0
V3JpdGVPcGVyYXRpb25JRCkpIHsKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gSURCUmVzdWx0
RGF0YTo6aXRlcmF0ZUN1cnNvclN1Y2Nlc3Mob3BlcmF0aW9uLmlkZW50aWZpZXIoKSwgZ2V0UmVz
dWx0LnZhbHVlKCkpOworICAgICAgICAgICAgbV9kYXRhYmFzZS0+Y29ubmVjdGlvblByb3h5KCku
aXRlcmF0ZUN1cnNvcihvcGVyYXRpb24sIHsgZGF0YS5rZXlEYXRhLCBkYXRhLnByaW1hcnlLZXlE
YXRhLCBkYXRhLmNvdW50LCBJbmRleGVkREI6OkN1cnNvckl0ZXJhdGVPcHRpb246OkRvTm90UmVw
bHkgfSk7CisgICAgICAgICAgICBvcGVyYXRpb25Db21wbGV0ZWRPblNlcnZlcihyZXN1bHQsIG9w
ZXJhdGlvbik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICBj
dXJzb3ItPmNsZWFyUHJlZmV0Y2hlZFJlY29yZHMoKTsKKworICAgIEFTU0VSVChkYXRhLm9wdGlv
biA9PSBJbmRleGVkREI6OkN1cnNvckl0ZXJhdGVPcHRpb246OlJlcGx5KTsKICAgICBtX2RhdGFi
YXNlLT5jb25uZWN0aW9uUHJveHkoKS5pdGVyYXRlQ3Vyc29yKG9wZXJhdGlvbiwgZGF0YSk7CiB9
CiAKQEAgLTExMjYsNyArMTE0Niw3IEBAIFJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6
cmVxdWVzdERlbGV0ZVJlY29yZChKU0dsb2JhbE9iamVjdCYgc3RhdGUsIElEQk9iCiAgICAgICAg
IHByb3RlY3RlZFRoaXMtPmRpZERlbGV0ZVJlY29yZE9uU2VydmVyKHJlcXVlc3QuZ2V0KCksIHJl
c3VsdCk7CiAgICAgfSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmFuZ2UgPSBy
YW5nZS5pc29sYXRlZENvcHkoKV0gKGF1dG8mIG9wZXJhdGlvbikgewogICAgICAgICBwcm90ZWN0
ZWRUaGlzLT5kZWxldGVSZWNvcmRPblNlcnZlcihvcGVyYXRpb24sIHJhbmdlKTsKLSAgICB9KSk7
CisgICAgfSksIElzV3JpdGVPcGVyYXRpb246Olllcyk7CiAgICAgcmV0dXJuIHJlcXVlc3Q7CiB9
CiAKQEAgLTExNjUsNyArMTE4NSw3IEBAIFJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6
cmVxdWVzdENsZWFyT2JqZWN0U3RvcmUoSlNHbG9iYWxPYmplY3QmIHN0YXRlLCBJCiAgICAgICAg
IHByb3RlY3RlZFRoaXMtPmRpZENsZWFyT2JqZWN0U3RvcmVPblNlcnZlcihyZXF1ZXN0LmdldCgp
LCByZXN1bHQpOwogICAgIH0sIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG9iamVj
dFN0b3JlSWRlbnRpZmllcl0gKGF1dG8mIG9wZXJhdGlvbikgewogICAgICAgICBwcm90ZWN0ZWRU
aGlzLT5jbGVhck9iamVjdFN0b3JlT25TZXJ2ZXIob3BlcmF0aW9uLCBvYmplY3RTdG9yZUlkZW50
aWZpZXIpOwotICAgIH0pKTsKKyAgICB9KSwgSXNXcml0ZU9wZXJhdGlvbjo6WWVzKTsKIAogICAg
IHJldHVybiByZXF1ZXN0OwogfQpAQCAtMTIwNSw3ICsxMjI1LDcgQEAgUmVmPElEQlJlcXVlc3Q+
IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0UHV0T3JBZGQoSlNHbG9iYWxPYmplY3QmIHN0YXRlLCBJ
REJPYmplY3QKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGlkUHV0T3JBZGRPblNlcnZlcihyZXF1
ZXN0LmdldCgpLCByZXN1bHQpOwogICAgIH0sIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIGtleSwgdmFsdWUgPSBtYWtlUmVmKHZhbHVlKSwgb3ZlcndyaXRlTW9kZV0gKGF1dG8mIG9w
ZXJhdGlvbikgewogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5wdXRPckFkZE9uU2VydmVyKG9wZXJh
dGlvbiwga2V5LmdldCgpLCB2YWx1ZS5wdHIoKSwgb3ZlcndyaXRlTW9kZSk7Ci0gICAgfSkpOwor
ICAgIH0pLCBJc1dyaXRlT3BlcmF0aW9uOjpZZXMpOwogCiAgICAgcmV0dXJuIHJlcXVlc3Q7CiB9
CkBAIC0xMjkzLDcgKzEzMTMsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpkZWxldGVPYmplY3RT
dG9yZShjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSkKICAgICAgICAgcHJvdGVjdGVkVGhp
cy0+ZGlkRGVsZXRlT2JqZWN0U3RvcmVPblNlcnZlcihyZXN1bHQpOwogICAgIH0sIFtwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG9iamVjdFN0b3JlTmFtZSA9IG9iamVjdFN0b3JlTmFt
ZS5pc29sYXRlZENvcHkoKV0gKGF1dG8mIG9wZXJhdGlvbikgewogICAgICAgICBwcm90ZWN0ZWRU
aGlzLT5kZWxldGVPYmplY3RTdG9yZU9uU2VydmVyKG9wZXJhdGlvbiwgb2JqZWN0U3RvcmVOYW1l
KTsKLSAgICB9KSk7CisgICAgfSksIElzV3JpdGVPcGVyYXRpb246Olllcyk7CiB9CiAKIHZvaWQg
SURCVHJhbnNhY3Rpb246OmRlbGV0ZU9iamVjdFN0b3JlT25TZXJ2ZXIoSURCQ2xpZW50OjpUcmFu
c2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFt
ZSkKQEAgLTEzMjMsNyArMTM0Myw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmRlbGV0ZUluZGV4
KHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpCiAgICAgICAg
IHByb3RlY3RlZFRoaXMtPmRpZERlbGV0ZUluZGV4T25TZXJ2ZXIocmVzdWx0KTsKICAgICB9LCBb
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGlu
ZGV4TmFtZSA9IGluZGV4TmFtZS5pc29sYXRlZENvcHkoKV0gKGF1dG8mIG9wZXJhdGlvbikgewog
ICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kZWxldGVJbmRleE9uU2VydmVyKG9wZXJhdGlvbiwgb2Jq
ZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleE5hbWUpOwotICAgIH0pKTsKKyAgICB9KSwgSXNXcml0
ZU9wZXJhdGlvbjo6WWVzKTsKIH0KIAogdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGVsZXRlSW5kZXhP
blNlcnZlcihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24sIGNvbnN0
IHVpbnQ2NF90JiBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1l
KQpAQCAtMTQ3NCw2ICsxNDk0LDEyIEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmF1dG9Db21taXQo
KQogICAgIGNvbW1pdCgpOwogfQogCit1aW50NjRfdCBJREJUcmFuc2FjdGlvbjo6Z2VuZXJhdGVP
cGVyYXRpb25JRCgpCit7CisgICAgc3RhdGljIHN0ZDo6YXRvbWljPHVpbnQ2NF90PiBjdXJyZW50
T3BlcmF0aW9uSUQoMSk7CisgICAgcmV0dXJuIGN1cnJlbnRPcGVyYXRpb25JRCArPSAxOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRB
QkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRy
YW5zYWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2Fj
dGlvbi5oCmluZGV4IDM1OGIwMWJjMDE0YWE2MTQ0OGEzMTY1NjU2N2VjYTJhMzVkMmEzMjYuLmQ0
MTc3M2NjYzVkNjVmODM0NTA4MWJjZDU3YThmOWRhZDZjMzQ5NzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaApAQCAtNzEsNiArNzEs
OCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxJREJUcmFuc2FjdGlvbj4gY3JlYXRlKElEQkRh
dGFiYXNlJiwgY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJik7CiAgICAgc3RhdGljIFJlZjxJREJU
cmFuc2FjdGlvbj4gY3JlYXRlKElEQkRhdGFiYXNlJiwgY29uc3QgSURCVHJhbnNhY3Rpb25JbmZv
JiwgSURCT3BlbkRCUmVxdWVzdCYpOwogCisgICAgc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlT3Bl
cmF0aW9uSUQoKTsKKwogICAgIFdFQkNPUkVfRVhQT1JUIH5JREJUcmFuc2FjdGlvbigpIGZpbmFs
OwogCiAgICAgLy8gSURCVHJhbnNhY3Rpb24gSURMCkBAIC0xNjUsNyArMTY3LDggQEAgcHJpdmF0
ZToKICAgICB2b2lkIGZpbmlzaEFib3J0T3JDb21taXQoKTsKICAgICB2b2lkIGFib3J0SW5Qcm9n
cmVzc09wZXJhdGlvbnMoY29uc3QgSURCRXJyb3ImKTsKIAotICAgIHZvaWQgc2NoZWR1bGVPcGVy
YXRpb24oUmVmPElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24+JiYpOworICAgIGVudW0g
Y2xhc3MgSXNXcml0ZU9wZXJhdGlvbiA6IGJvb2wgeyBObywgWWVzIH07CisgICAgdm9pZCBzY2hl
ZHVsZU9wZXJhdGlvbihSZWY8SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbj4mJiwgSXNX
cml0ZU9wZXJhdGlvbiA9IElzV3JpdGVPcGVyYXRpb246Ok5vKTsKICAgICB2b2lkIGhhbmRsZU9w
ZXJhdGlvbnNDb21wbGV0ZWRPblNlcnZlcigpOwogICAgIHZvaWQgaGFuZGxlUGVuZGluZ09wZXJh
dGlvbnMoKTsKICAgICB2b2lkIGF1dG9Db21taXQoKTsKQEAgLTI0NCw4ICsyNDcsOCBAQCBwcml2
YXRlOgogCiAgICAgRGVxdWU8UmVmUHRyPElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24+
PiBtX3BlbmRpbmdUcmFuc2FjdGlvbk9wZXJhdGlvblF1ZXVlOwogICAgIERlcXVlPElEQkNsaWVu
dDo6VHJhbnNhY3Rpb25PcGVyYXRpb24qPiBtX3RyYW5zYWN0aW9uT3BlcmF0aW9uc0luUHJvZ3Jl
c3NRdWV1ZTsKLSAgICBEZXF1ZTxzdGQ6OnBhaXI8UmVmUHRyPElEQkNsaWVudDo6VHJhbnNhY3Rp
b25PcGVyYXRpb24+LCBJREJSZXN1bHREYXRhPj4gbV9jb21wbGV0ZWRPblNlcnZlclF1ZXVlOwog
ICAgIERlcXVlPFJlZlB0cjxJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uPj4gbV9hYm9y
dFF1ZXVlOworICAgIEhhc2hNYXA8UmVmUHRyPElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRp
b24+LCBJREJSZXN1bHREYXRhPiBtX3RyYW5zYWN0aW9uT3BlcmF0aW9uUmVzdWx0TWFwOwogCiAg
ICAgSGFzaE1hcDxJREJSZXNvdXJjZUlkZW50aWZpZXIsIFJlZlB0cjxJREJDbGllbnQ6OlRyYW5z
YWN0aW9uT3BlcmF0aW9uPj4gbV90cmFuc2FjdGlvbk9wZXJhdGlvbk1hcDsKIApAQCAtMjU4LDYg
KzI2MSw4IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1fY29udGV4dFN0b3BwZWQgeyBmYWxzZSB9
OwogICAgIGJvb2wgbV9kaWREaXNwYXRjaEFib3J0T3JDb21taXQgeyBmYWxzZSB9OworCisgICAg
dWludDY0X3QgbV9sYXN0V3JpdGVPcGVyYXRpb25JRCB7IDAgfTsKIH07CiAKIGNsYXNzIFRyYW5z
YWN0aW9uQWN0aXZhdG9yIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0luZGV4ZWREQi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSW5k
ZXhlZERCLmgKaW5kZXggNTA5YmJmMjc4YjNmOWYzNzU3ZjZmMWI1MDQwZWM3NmQ1ZDJjOWEwMC4u
YmYzMDhhZGE5NmEyYjA2MDk4ZDM2ZDJhYzcxMGVkNWJjNjMyNzdmOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSW5kZXhlZERCLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSW5kZXhlZERCLmgKQEAgLTEwNiw2ICsxMDYsMTEgQEAg
ZW51bSBjbGFzcyBHZXRBbGxUeXBlIHsKIAogZW51bSBjbGFzcyBDb25uZWN0aW9uQ2xvc2VkT25C
ZWhhbGZPZlNlcnZlciA6IGJvb2wgeyBObywgWWVzIH07CiAKK2VudW0gY2xhc3MgQ3Vyc29ySXRl
cmF0ZU9wdGlvbiB7CisgICAgRG9Ob3RSZXBseSwKKyAgICBSZXBseSwKK307CisKIH0gLy8gbmFt
ZXNwYWNlIEluZGV4ZWREQgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblByb3h5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0
aW9uUHJveHkuY3BwCmluZGV4IDRlYzQ0N2UyNmYxMWRmYTYyYmYwODM2OGJmMTRmODVhODJlY2Y1
MTEuLjk1NmRmYWU2NDUxNzQ5OGRlMzhlNTQ4MzFiNTkxYjRmNjM1NWM5NTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJD
b25uZWN0aW9uUHJveHkuY3BwCkBAIC0yMzgsNyArMjM4LDggQEAgdm9pZCBJREJDb25uZWN0aW9u
UHJveHk6Om9wZW5DdXJzb3IoVHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbiwgY29uc3Qg
SURCQ3UKIHZvaWQgSURCQ29ubmVjdGlvblByb3h5OjppdGVyYXRlQ3Vyc29yKFRyYW5zYWN0aW9u
T3BlcmF0aW9uJiBvcGVyYXRpb24sIGNvbnN0IElEQkl0ZXJhdGVDdXJzb3JEYXRhJiBkYXRhKQog
ewogICAgIGNvbnN0IElEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhIHsgb3BlcmF0aW9uIH07Ci0g
ICAgc2F2ZU9wZXJhdGlvbihvcGVyYXRpb24pOworICAgIGlmIChkYXRhLm9wdGlvbiAhPSBJbmRl
eGVkREI6OkN1cnNvckl0ZXJhdGVPcHRpb246OkRvTm90UmVwbHkpCisgICAgICAgIHNhdmVPcGVy
YXRpb24ob3BlcmF0aW9uKTsKIAogICAgIGNhbGxDb25uZWN0aW9uT25NYWluVGhyZWFkKCZJREJD
b25uZWN0aW9uVG9TZXJ2ZXI6Oml0ZXJhdGVDdXJzb3IsIHJlcXVlc3REYXRhLCBkYXRhKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFu
c2FjdGlvbk9wZXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9j
bGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uY3BwCmluZGV4IDhlMWRlMDZkNzFlOGYwYjIyM2Q2
ODZlNWUxYThhMjIwOWI3NDM4NDMuLmFhNTkwNmY0NzVlNWVlMGFhY2RmMTFmMTdkM2VhNjhlMjhi
NTE1MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVu
dC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9uLmNwcApAQCAtNDQsNiArNDQsNyBA
QCBUcmFuc2FjdGlvbk9wZXJhdGlvbjo6VHJhbnNhY3Rpb25PcGVyYXRpb24oSURCVHJhbnNhY3Rp
b24mIHRyYW5zYWN0aW9uLCBJREJSZXF1ZQogICAgIGlmIChhdXRvKiBjdXJzb3IgPSByZXF1ZXN0
LnBlbmRpbmdDdXJzb3IoKSkKICAgICAgICAgbV9jdXJzb3JJZGVudGlmaWVyID0gbWFrZVVuaXF1
ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KGN1cnNvci0+aW5mbygpLmlkZW50aWZpZXIoKSk7CiAK
KyAgICByZXF1ZXN0LnNldFRyYW5zYWN0aW9uT3BlcmF0aW9uSUQobV9vcGVyYXRpb25JRCk7CiAg
ICAgbV9pZGJSZXF1ZXN0ID0gJnJlcXVlc3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9u
LmgKaW5kZXggZTJmMTQ4YWVmYmI0MzQzMmE2MWM4NDYyYmIxNGYzOWU1YTc2MDhhNi4uN2FiNTc1
NTU3MDhlYzc0YjlkMTZkMTU2Y2U5ZTkzMjU2Nzg3Y2QwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3Bl
cmF0aW9uLmgKQEAgLTExMiwxMCArMTEyLDEzIEBAIHB1YmxpYzoKICAgICBib29sIG5leHRSZXF1
ZXN0Q2FuR29Ub1NlcnZlcigpIGNvbnN0IHsgcmV0dXJuIG1fbmV4dFJlcXVlc3RDYW5Hb1RvU2Vy
dmVyICYmIG1faWRiUmVxdWVzdDsgfQogICAgIHZvaWQgc2V0TmV4dFJlcXVlc3RDYW5Hb1RvU2Vy
dmVyKGJvb2wgbmV4dFJlcXVlc3RDYW5Hb1RvU2VydmVyKSB7IG1fbmV4dFJlcXVlc3RDYW5Hb1Rv
U2VydmVyID0gbmV4dFJlcXVlc3RDYW5Hb1RvU2VydmVyOyB9CiAKKyAgICB1aW50NjRfdCBvcGVy
YXRpb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fb3BlcmF0aW9uSUQ7IH0KKwogcHJvdGVjdGVkOgog
ICAgIFRyYW5zYWN0aW9uT3BlcmF0aW9uKElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKICAg
ICAgICAgOiBtX3RyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKQogICAgICAgICAsIG1faWRlbnRpZmll
cih0cmFuc2FjdGlvbi5jb25uZWN0aW9uUHJveHkoKSkKKyAgICAgICAgLCBtX29wZXJhdGlvbklE
KHRyYW5zYWN0aW9uLmdlbmVyYXRlT3BlcmF0aW9uSUQoKSkKICAgICB7CiAgICAgfQogCkBAIC0x
NDIsNiArMTQ1LDggQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8SURCUmVxdWVzdD4gbV9pZGJSZXF1
ZXN0OwogICAgIGJvb2wgbV9uZXh0UmVxdWVzdENhbkdvVG9TZXJ2ZXIgeyB0cnVlIH07CiAgICAg
Ym9vbCBtX2RpZENvbXBsZXRlIHsgZmFsc2UgfTsKKworICAgIHVpbnQ2NF90IG1fb3BlcmF0aW9u
SUQgeyAwIH07CiB9OwogCiBjbGFzcyBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGwgZmluYWwgOiBw
dWJsaWMgVHJhbnNhY3Rpb25PcGVyYXRpb24gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkJhY2tpbmdTdG9yZS5oCmluZGV4IGM0MjY0
MGIzYmY2YzYwYjA4N2YyNDVlZmQzYWYwMWMzNjYyZmEyOWUuLmE3ZGY3YTFkY2Q2MDc1ZGRhNDUx
MDkwYWE5MzAzN2FlODIxY2RiZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9JREJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQmFja2luZ1N0b3JlLmgKQEAgLTg1LDcgKzg1LDYg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgSURCRXJyb3IgbWF5YmVVcGRhdGVLZXlHZW5lcmF0b3JO
dW1iZXIoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIs
IHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgZG91YmxlIG5ld0tleU51bWJlcikgPSAw
OwogICAgIHZpcnR1YWwgSURCRXJyb3Igb3BlbkN1cnNvcihjb25zdCBJREJSZXNvdXJjZUlkZW50
aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCQ3Vyc29ySW5mbyYsIElEQkdl
dFJlc3VsdCYgb3V0UmVzdWx0KSA9IDA7CiAgICAgdmlydHVhbCBJREJFcnJvciBpdGVyYXRlQ3Vy
c29yKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBj
b25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIGN1cnNvcklkZW50aWZpZXIsIGNvbnN0IElEQkl0
ZXJhdGVDdXJzb3JEYXRhJiwgSURCR2V0UmVzdWx0JiBvdXRSZXN1bHQpID0gMDsKLSAgICB2aXJ0
dWFsIGJvb2wgcHJlZmV0Y2hDdXJzb3IoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFu
c2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgY3Vyc29ySWRl
bnRpZmllcikgPSAwOwogCiAgICAgdmlydHVhbCBJREJPYmplY3RTdG9yZUluZm8qIGluZm9Gb3JP
YmplY3RTdG9yZSh1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgZGVsZXRlQmFja2luZ1N0b3JlKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdT
dG9yZS5oCmluZGV4IDM3OGQyYTVmN2EwZDY3M2YyNDMyOTM4MTA3NGVlOGIxOTU4MTFiZWQuLjc0
ZGM5NTA5NDVhNmVmNGI4ZWI1NzJhOGJkNGQxNWRkYTUyYjhmYjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURC
QmFja2luZ1N0b3JlLmgKQEAgLTc0LDcgKzc0LDYgQEAgcHJpdmF0ZToKICAgICBJREJFcnJvciBt
YXliZVVwZGF0ZUtleUdlbmVyYXRvck51bWJlcihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXIm
IHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBk
b3VibGUgbmV3S2V5TnVtYmVyKSBmaW5hbDsKICAgICBJREJFcnJvciBvcGVuQ3Vyc29yKGNvbnN0
IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJD
dXJzb3JJbmZvJiwgSURCR2V0UmVzdWx0JiBvdXRSZXN1bHQpIGZpbmFsOwogICAgIElEQkVycm9y
IGl0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklk
ZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgY3Vyc29ySWRlbnRpZmllciwg
Y29uc3QgSURCSXRlcmF0ZUN1cnNvckRhdGEmLCBJREJHZXRSZXN1bHQmIG91dFJlc3VsdCkgZmlu
YWw7Ci0gICAgYm9vbCBwcmVmZXRjaEN1cnNvcihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXIm
LCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImKSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQog
CiAgICAgSURCT2JqZWN0U3RvcmVJbmZvKiBpbmZvRm9yT2JqZWN0U3RvcmUodWludDY0X3Qgb2Jq
ZWN0U3RvcmVJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIGRlbGV0ZUJhY2tpbmdTdG9yZSgp
IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAppbmRleCAzZmExMDJkYjY1
OTI4MGQ3ZDZhMDUwY2UxZWE3ZmM0MDgwMmJmZGQ3Li41NzNiZWM3N2UyZjJmM2QxYzEyMTIxYmM1
OGZlY2MzZmNmMWEzZTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcApAQCAt
MTM2Niw4ICsxMzY2LDggQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVJ
bmRleChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWMKIAogICAgIHdoaWxlICgh
Y3Vyc29yLT5jdXJyZW50S2V5KCkuaXNOdWxsKCkpIHsKICAgICAgICAgYXV0byYga2V5ID0gY3Vy
c29yLT5jdXJyZW50S2V5KCk7Ci0gICAgICAgIGF1dG8qIHZhbHVlID0gY3Vyc29yLT5jdXJyZW50
VmFsdWUoKTsKLSAgICAgICAgVGhyZWFkU2FmZURhdGFCdWZmZXIgdmFsdWVCdWZmZXIgPSB2YWx1
ZSA/IHZhbHVlLT5kYXRhKCkgOiBUaHJlYWRTYWZlRGF0YUJ1ZmZlcigpOworICAgICAgICBhdXRv
IHZhbHVlID0gY3Vyc29yLT5jdXJyZW50VmFsdWUoKTsKKyAgICAgICAgVGhyZWFkU2FmZURhdGFC
dWZmZXIgdmFsdWVCdWZmZXIgPSB2YWx1ZS5kYXRhKCk7CiAKICAgICAgICAgQVNTRVJUKGN1cnNv
ci0+Y3VycmVudFJlY29yZFJvd0lEKCkpOwogCkBAIC0yMzU0LDcgKzIzNTQsNyBAQCBJREJFcnJv
ciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldEFsbEluZGV4UmVjb3Jkcyhjb25zdCBJREJSZXNv
dXJjZUlkZW50aWZpZXImCiAgICAgICAgIElEQktleURhdGEga2V5Q29weSA9IGN1cnNvci0+Y3Vy
cmVudFByaW1hcnlLZXkoKTsKICAgICAgICAgcmVzdWx0LmFkZEtleShXVEZNb3ZlKGtleUNvcHkp
KTsKICAgICAgICAgaWYgKGdldEFsbFJlY29yZHNEYXRhLmdldEFsbFR5cGUgPT0gSW5kZXhlZERC
OjpHZXRBbGxUeXBlOjpWYWx1ZXMpCi0gICAgICAgICAgICByZXN1bHQuYWRkVmFsdWUoY3Vyc29y
LT5jdXJyZW50VmFsdWUoKSA/ICpjdXJzb3ItPmN1cnJlbnRWYWx1ZSgpIDogSURCVmFsdWUoKSk7
CisgICAgICAgICAgICByZXN1bHQuYWRkVmFsdWUoSURCVmFsdWUoY3Vyc29yLT5jdXJyZW50VmFs
dWUoKSkpOwogCiAgICAgICAgICsrY3VycmVudENvdW50OwogICAgICAgICBjdXJzb3ItPmFkdmFu
Y2UoMSk7CkBAIC0yNDAxLDcgKzI0MDEsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3Rv
cmU6OmdldEluZGV4UmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbgogICAg
ICAgICBlbHNlIHsKICAgICAgICAgICAgIGF1dG8qIG9iamVjdFN0b3JlSW5mbyA9IGluZm9Gb3JP
YmplY3RTdG9yZShvYmplY3RTdG9yZUlEKTsKICAgICAgICAgICAgIEFTU0VSVChvYmplY3RTdG9y
ZUluZm8pOwotICAgICAgICAgICAgZ2V0UmVzdWx0ID0geyBjdXJzb3ItPmN1cnJlbnRQcmltYXJ5
S2V5KCksIGN1cnNvci0+Y3VycmVudFByaW1hcnlLZXkoKSwgY3Vyc29yLT5jdXJyZW50VmFsdWUo
KSA/ICpjdXJzb3ItPmN1cnJlbnRWYWx1ZSgpIDogSURCVmFsdWUoKSwgb2JqZWN0U3RvcmVJbmZv
LT5rZXlQYXRoKCkgfTsKKyAgICAgICAgICAgIGdldFJlc3VsdCA9IHsgY3Vyc29yLT5jdXJyZW50
UHJpbWFyeUtleSgpLCBjdXJzb3ItPmN1cnJlbnRQcmltYXJ5S2V5KCksIElEQlZhbHVlKGN1cnNv
ci0+Y3VycmVudFZhbHVlKCkpLCBvYmplY3RTdG9yZUluZm8tPmtleVBhdGgoKSB9OwogICAgICAg
ICB9CiAgICAgfQogCkBAIC0yNzIxLDI2ICsyNzIxLDE4IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6aXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRy
YW5zCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBhdXRvKiBvYmplY3RTdG9yZUluZm8gPSBpbmZv
Rm9yT2JqZWN0U3RvcmUoY3Vyc29yLT5vYmplY3RTdG9yZUlEKCkpOwotICAgIEFTU0VSVChvYmpl
Y3RTdG9yZUluZm8pOwotICAgIGN1cnNvci0+Y3VycmVudERhdGEocmVzdWx0LCBvYmplY3RTdG9y
ZUluZm8tPmtleVBhdGgoKSk7Ci0gICAgcmV0dXJuIElEQkVycm9yIHsgfTsKLX0KLQotYm9vbCBT
UUxpdGVJREJCYWNraW5nU3RvcmU6OnByZWZldGNoQ3Vyc29yKGNvbnN0IElEQlJlc291cmNlSWRl
bnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZp
ZXImIGN1cnNvcklkZW50aWZpZXIpCi17Ci0gICAgTE9HKEluZGV4ZWREQiwgIlNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6cHJlZmV0Y2hDdXJzb3IiKTsKLQotICAgIEFTU0VSVChtX3NxbGl0ZURCKTsK
LSAgICBBU1NFUlQobV9zcWxpdGVEQi0+aXNPcGVuKCkpOworICAgIGlmIChkYXRhLm9wdGlvbiA9
PSBJbmRleGVkREI6OkN1cnNvckl0ZXJhdGVPcHRpb246OlJlcGx5KSB7CisgICAgICAgIGF1dG8q
IG9iamVjdFN0b3JlSW5mbyA9IGluZm9Gb3JPYmplY3RTdG9yZShjdXJzb3ItPm9iamVjdFN0b3Jl
SUQoKSk7CisgICAgICAgIEFTU0VSVChvYmplY3RTdG9yZUluZm8pOwogCi0gICAgYXV0byogY3Vy
c29yID0gbV9jdXJzb3JzLmdldChjdXJzb3JJZGVudGlmaWVyKTsKLSAgICBpZiAoIWN1cnNvciB8
fCAhY3Vyc29yLT50cmFuc2FjdGlvbigpIHx8ICFjdXJzb3ItPnRyYW5zYWN0aW9uKCktPmluUHJv
Z3Jlc3MoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBib29sIHNob3VsZFByZWZl
dGNoID0ga2V5LmlzTnVsbCgpICYmIHByaW1hcnlLZXkuaXNOdWxsKCk7CisgICAgICAgIGlmIChz
aG91bGRQcmVmZXRjaCkKKyAgICAgICAgICAgIGN1cnNvci0+cHJlZmV0Y2goKTsKIAotICAgIEFT
U0VSVF9VTlVTRUQodHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjdXJzb3ItPnRyYW5zYWN0aW9uKCkt
PnRyYW5zYWN0aW9uSWRlbnRpZmllcigpID09IHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CisgICAg
ICAgIGN1cnNvci0+Y3VycmVudERhdGEocmVzdWx0LCBvYmplY3RTdG9yZUluZm8tPmtleVBhdGgo
KSwgc2hvdWxkUHJlZmV0Y2ggPyBTUUxpdGVJREJDdXJzb3I6OlNob3VsZEluY2x1ZGVQcmVmZXRj
aGVkUmVjb3Jkczo6WWVzIDogU1FMaXRlSURCQ3Vyc29yOjpTaG91bGRJbmNsdWRlUHJlZmV0Y2hl
ZFJlY29yZHM6Ok5vKTsKKyAgICB9CiAKLSAgICByZXR1cm4gY3Vyc29yLT5wcmVmZXRjaCgpOwor
ICAgIHJldHVybiBJREJFcnJvciB7IH07CiB9CiAKIElEQk9iamVjdFN0b3JlSW5mbyogU1FMaXRl
SURCQmFja2luZ1N0b3JlOjppbmZvRm9yT2JqZWN0U3RvcmUodWludDY0X3Qgb2JqZWN0U3RvcmVJ
ZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5oCmluZGV4IGNlMjlkMmNmY2Zi
NDFmYWI2YmQzMDViYmUyZGNmMDQ1NmZiNmQ4MmUuLjQ5NDBjMTUxNjExMDRhZDk2OTU4ZmQyMzQz
N2RhYzY5OTQwY2M3MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmgKQEAgLTgwLDcg
KzgwLDYgQEAgcHVibGljOgogICAgIElEQkVycm9yIG1heWJlVXBkYXRlS2V5R2VuZXJhdG9yTnVt
YmVyKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1
aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGRvdWJsZSBuZXdLZXlOdW1iZXIpIGZpbmFs
OwogICAgIElEQkVycm9yIG9wZW5DdXJzb3IoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0
cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQkN1cnNvckluZm8mLCBJREJHZXRSZXN1bHQm
IG91dFJlc3VsdCkgZmluYWw7CiAgICAgSURCRXJyb3IgaXRlcmF0ZUN1cnNvcihjb25zdCBJREJS
ZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3Vy
Y2VJZGVudGlmaWVyJiBjdXJzb3JJZGVudGlmaWVyLCBjb25zdCBJREJJdGVyYXRlQ3Vyc29yRGF0
YSYsIElEQkdldFJlc3VsdCYgb3V0UmVzdWx0KSBmaW5hbDsKLSAgICBib29sIHByZWZldGNoQ3Vy
c29yKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYsIGNvbnN0IElEQlJlc291cmNlSWRlbnRp
ZmllciYpIGZpbmFsOwogCiAgICAgSURCT2JqZWN0U3RvcmVJbmZvKiBpbmZvRm9yT2JqZWN0U3Rv
cmUodWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIGRlbGV0
ZUJhY2tpbmdTdG9yZSgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcAppbmRleCBiMzc3MTcz
NzU3NGUyMjM2NjE3ZDI0ODdjNjkwZTEyMGVhZGQ3MDBiLi5lMTlhYTEzZWIwMWU1NWJiMGNmODA4
MWY3NDNiYWE3MjNhNjMyNTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcApAQCAtNDIsOCArNDIs
OCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIElEQlNlcnZlciB7CiAKLXN0YXRp
YyBjb25zdCBzaXplX3QgcHJlZmV0Y2hMaW1pdCA9IDEyODsKLXN0YXRpYyBjb25zdCBzaXplX3Qg
cHJlZmV0Y2hTaXplTGltaXQgPSA4ICogTUI7CitzdGF0aWMgY29uc3Qgc2l6ZV90IHByZWZldGNo
TGltaXQgPSAyNTY7CitzdGF0aWMgY29uc3Qgc2l6ZV90IHByZWZldGNoU2l6ZUxpbWl0ID0gMSAq
IE1COwogCiBzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlSURCQ3Vyc29yPiBTUUxpdGVJREJDdXJzb3I6
Om1heWJlQ3JlYXRlKFNRTGl0ZUlEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgY29uc3QgSURC
Q3Vyc29ySW5mbyYgaW5mbykKIHsKQEAgLTEwMiw3ICsxMDIsNyBAQCBTUUxpdGVJREJDdXJzb3I6
On5TUUxpdGVJREJDdXJzb3IoKQogICAgICAgICBtX3RyYW5zYWN0aW9uLT5jbG9zZUN1cnNvcigq
dGhpcyk7CiB9CiAKLXZvaWQgU1FMaXRlSURCQ3Vyc29yOjpjdXJyZW50RGF0YShJREJHZXRSZXN1
bHQmIHJlc3VsdCwgY29uc3QgT3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgpCit2b2lkIFNR
TGl0ZUlEQkN1cnNvcjo6Y3VycmVudERhdGEoSURCR2V0UmVzdWx0JiByZXN1bHQsIGNvbnN0IE9w
dGlvbmFsPElEQktleVBhdGg+JiBrZXlQYXRoLCBTaG91bGRJbmNsdWRlUHJlZmV0Y2hlZFJlY29y
ZHMgc2hvdWxkSW5jbHVkZVByZWZldGNoZWRSZWNvcmRzKQogewogICAgIEFTU0VSVCghbV9mZXRj
aGVkUmVjb3Jkcy5pc0VtcHR5KCkpOwogCkBAIC0xMTMsNyArMTEzLDI1IEBAIHZvaWQgU1FMaXRl
SURCQ3Vyc29yOjpjdXJyZW50RGF0YShJREJHZXRSZXN1bHQmIHJlc3VsdCwgY29uc3QgT3B0aW9u
YWw8SURCS2V5UGF0CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICByZXN1bHQgPSB7IGN1
cnJlbnRSZWNvcmQucmVjb3JkLmtleSwgY3VycmVudFJlY29yZC5yZWNvcmQucHJpbWFyeUtleSwg
Y3VycmVudFJlY29yZC5yZWNvcmQudmFsdWUgPyAqY3VycmVudFJlY29yZC5yZWNvcmQudmFsdWUg
OiBJREJWYWx1ZSgpLCBrZXlQYXRofTsKKyAgICBpZiAoc2hvdWxkSW5jbHVkZVByZWZldGNoZWRS
ZWNvcmRzID09IFNob3VsZEluY2x1ZGVQcmVmZXRjaGVkUmVjb3Jkczo6Tm8pIHsKKyAgICAgICAg
cmVzdWx0ID0geyBjdXJyZW50UmVjb3JkLnJlY29yZC5rZXksIGN1cnJlbnRSZWNvcmQucmVjb3Jk
LnByaW1hcnlLZXksIElEQlZhbHVlKGN1cnJlbnRSZWNvcmQucmVjb3JkLnZhbHVlKSwga2V5UGF0
aCB9OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgVmVjdG9yPElEQkN1cnNvclJlY29y
ZD4gcHJlZmV0Y2hlZFJlY29yZHM7CisgICAgcHJlZmV0Y2hlZFJlY29yZHMucmVzZXJ2ZUNhcGFj
aXR5KG1fZmV0Y2hlZFJlY29yZHMuc2l6ZSgpKTsKKyAgICBmb3IgKGF1dG8mIHJlY29yZCA6IG1f
ZmV0Y2hlZFJlY29yZHMpIHsKKyAgICAgICAgaWYgKHJlY29yZC5pc1Rlcm1pbmFsUmVjb3JkKCkp
CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBwcmVmZXRjaGVkUmVjb3Jkcy5hcHBlbmQo
cmVjb3JkLnJlY29yZCk7CisgICAgfQorCisgICAgLy8gRmlyc3QgcmVjb3JkIHdpbGwgYmUgcmV0
dXJuZWQgYXMgY3VycmVudCByZWNvcmQuCisgICAgaWYgKCFwcmVmZXRjaGVkUmVjb3Jkcy5pc0Vt
cHR5KCkpCisgICAgICAgIHByZWZldGNoZWRSZWNvcmRzLnJlbW92ZSgwKTsKKworICAgIHJlc3Vs
dCA9IHsgY3VycmVudFJlY29yZC5yZWNvcmQua2V5LCBjdXJyZW50UmVjb3JkLnJlY29yZC5wcmlt
YXJ5S2V5LCBJREJWYWx1ZShjdXJyZW50UmVjb3JkLnJlY29yZC52YWx1ZSksIGtleVBhdGgsIFdU
Rk1vdmUocHJlZmV0Y2hlZFJlY29yZHMpIH07CiB9CiAKIHN0YXRpYyBTdHJpbmcgYnVpbGRQcmVJ
bmRleFN0YXRlbWVudChib29sIGlzRGlyZWN0aW9uTmV4dCkKQEAgLTI2Myw2ICsyODEsOCBAQCB2
b2lkIFNRTGl0ZUlEQkN1cnNvcjo6b2JqZWN0U3RvcmVSZWNvcmRzQ2hhbmdlZCgpCiAgICAgLy8g
V2UgYWxzbyBuZWVkIHRvIHRocm93IGF3YXkgYW55IGZldGNoZWQgcmVjb3JkcyBhcyB0aGV5IG1h
eSBubyBsb25nZXIgYmUgdmFsaWQuCiAgICAgbV9mZXRjaGVkUmVjb3Jkcy5jbGVhcigpOwogICAg
IG1fZmV0Y2hlZFJlY29yZHNTaXplID0gMDsKKworICAgIG1fcHJlZmV0Y2hDb3VudCA9IDA7CiB9
CiAKIHZvaWQgU1FMaXRlSURCQ3Vyc29yOjpyZXNldEFuZFJlYmluZFN0YXRlbWVudCgpCkBAIC0z
NTksMTcgKzM3OSwzMiBAQCBib29sIFNRTGl0ZUlEQkN1cnNvcjo6cmVzZXRBbmRSZWJpbmRQcmVJ
bmRleFN0YXRlbWVudElmTmVjZXNzYXJ5KCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBT
UUxpdGVJREJDdXJzb3I6OnByZWZldGNoKCkKK2Jvb2wgU1FMaXRlSURCQ3Vyc29yOjpwcmVmZXRj
aE9uZVJlY29yZCgpCiB7Ci0gICAgTE9HKEluZGV4ZWREQiwgIlNRTGl0ZUlEQkN1cnNvcjo6cHJl
ZmV0Y2goKSAtIEN1cnNvciBhbHJlYWR5IGhhcyAlenUgZmV0Y2hlZCByZWNvcmRzIiwgbV9mZXRj
aGVkUmVjb3Jkcy5zaXplKCkpOworICAgIExPRyhJbmRleGVkREIsICJTUUxpdGVJREJDdXJzb3I6
OnByZWZldGNoT25lUmVjb3JkKCkgLSBDdXJzb3IgYWxyZWFkeSBoYXMgJXp1IGZldGNoZWQgcmVj
b3JkcyIsIG1fZmV0Y2hlZFJlY29yZHMuc2l6ZSgpKTsKIAogICAgIGlmIChtX2ZldGNoZWRSZWNv
cmRzU2l6ZSA+PSBwcmVmZXRjaFNpemVMaW1pdCB8fCBtX2ZldGNoZWRSZWNvcmRzLmlzRW1wdHko
KSB8fCBtX2ZldGNoZWRSZWNvcmRzLnNpemUoKSA+PSBwcmVmZXRjaExpbWl0IHx8IG1fZmV0Y2hl
ZFJlY29yZHMubGFzdCgpLmlzVGVybWluYWxSZWNvcmQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgbV9jdXJyZW50S2V5Rm9yVW5pcXVlbmVzcyA9IG1fZmV0Y2hlZFJlY29yZHMubGFz
dCgpLnJlY29yZC5rZXk7Ci0gICAgZmV0Y2goKTsKIAotICAgIHJldHVybiBtX2ZldGNoZWRSZWNv
cmRzLnNpemUoKSA8IHByZWZldGNoTGltaXQgJiYgbV9mZXRjaGVkUmVjb3Jkc1NpemUgPCBwcmVm
ZXRjaFNpemVMaW1pdDsKKyAgICByZXR1cm4gZmV0Y2goKSAmJiBtX2ZldGNoZWRSZWNvcmRzLnNp
emUoKSA8IHByZWZldGNoTGltaXQgJiYgbV9mZXRjaGVkUmVjb3Jkc1NpemUgPCBwcmVmZXRjaFNp
emVMaW1pdDsKK30KKwordm9pZCBTUUxpdGVJREJDdXJzb3I6OmluY3JlYXNlQ291bnRUb1ByZWZl
dGNoKCkKK3sKKyAgICBtX3ByZWZldGNoQ291bnQgPSBtX3ByZWZldGNoQ291bnQgPyBtX3ByZWZl
dGNoQ291bnQgKiAyIDogMTsKK30KKworYm9vbCBTUUxpdGVJREJDdXJzb3I6OnByZWZldGNoKCkK
K3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9wcmVmZXRjaENvdW50OyArK2kpIHsK
KyAgICAgICAgaWYgKCFwcmVmZXRjaE9uZVJlY29yZCgpKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIGluY3JlYXNlQ291bnRUb1ByZWZldGNoKCk7CisgICAgcmV0dXJu
IHRydWU7CiB9CiAKIGJvb2wgU1FMaXRlSURCQ3Vyc29yOjphZHZhbmNlKHVpbnQ2NF90IGNvdW50
KQpAQCAtNDg4LDcgKzUyMyw3IEBAIFNRTGl0ZUlEQkN1cnNvcjo6RmV0Y2hSZXN1bHQgU1FMaXRl
SURCQ3Vyc29yOjppbnRlcm5hbEZldGNoTmV4dFJlY29yZChTUUxpdGVDdXJzCiAgICAgQVNTRVJU
KCFtX2ZldGNoZWRSZWNvcmRzLmlzRW1wdHkoKSk7CiAgICAgQVNTRVJUKCFtX2ZldGNoZWRSZWNv
cmRzLmxhc3QoKS5pc1Rlcm1pbmFsUmVjb3JkKCkpOwogCi0gICAgcmVjb3JkLnJlY29yZC52YWx1
ZSA9IG51bGxwdHI7CisgICAgcmVjb3JkLnJlY29yZC52YWx1ZSA9IHsgfTsKIAogICAgIGF1dG8m
IGRhdGFiYXNlID0gbV90cmFuc2FjdGlvbi0+c3FsaXRlVHJhbnNhY3Rpb24oKS0+ZGF0YWJhc2Uo
KTsKICAgICBTUUxpdGVTdGF0ZW1lbnQqIHN0YXRlbWVudCA9IG51bGxwdHI7CkBAIC01NDYsNyAr
NTgxLDcgQEAgU1FMaXRlSURCQ3Vyc29yOjpGZXRjaFJlc3VsdCBTUUxpdGVJREJDdXJzb3I6Omlu
dGVybmFsRmV0Y2hOZXh0UmVjb3JkKFNRTGl0ZUN1cnMKICAgICAgICAgfQogCiAgICAgICAgIGlm
IChtX2N1cnNvclR5cGUgPT0gSW5kZXhlZERCOjpDdXJzb3JUeXBlOjpLZXlBbmRWYWx1ZSkKLSAg
ICAgICAgICAgIHJlY29yZC5yZWNvcmQudmFsdWUgPSBtYWtlVW5pcXVlPElEQlZhbHVlPihUaHJl
YWRTYWZlRGF0YUJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoa2V5RGF0YSkpLCBibG9iVVJMcywgYmxv
YkZpbGVQYXRocyk7CisgICAgICAgICAgICByZWNvcmQucmVjb3JkLnZhbHVlID0geyBUaHJlYWRT
YWZlRGF0YUJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoa2V5RGF0YSkpLCBibG9iVVJMcywgYmxvYkZp
bGVQYXRocyB9OwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmICghZGVzZXJpYWxpemVJREJLZXlE
YXRhKGtleURhdGEuZGF0YSgpLCBrZXlEYXRhLnNpemUoKSwgcmVjb3JkLnJlY29yZC5wcmltYXJ5
S2V5KSkgewogICAgICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gZGVzZXJpYWxpemUgdmFs
dWUgZGF0YSBmcm9tIGRhdGFiYXNlIHdoaWxlIGFkdmFuY2luZyBpbmRleCBjdXJzb3IiKTsKQEAg
LTU3Miw3ICs2MDcsNyBAQCBTUUxpdGVJREJDdXJzb3I6OkZldGNoUmVzdWx0IFNRTGl0ZUlEQkN1
cnNvcjo6aW50ZXJuYWxGZXRjaE5leHRSZWNvcmQoU1FMaXRlQ3VycwogCiAgICAgICAgIGlmIChy
ZXN1bHQgPT0gU1FMSVRFX1JPVykgewogICAgICAgICAgICAgbV9jYWNoZWRPYmplY3RTdG9yZVN0
YXRlbWVudC0+Z2V0Q29sdW1uQmxvYkFzVmVjdG9yKDAsIGtleURhdGEpOwotICAgICAgICAgICAg
cmVjb3JkLnJlY29yZC52YWx1ZSA9IG1ha2VVbmlxdWU8SURCVmFsdWU+KFRocmVhZFNhZmVEYXRh
QnVmZmVyOjpjcmVhdGUoV1RGTW92ZShrZXlEYXRhKSkpOworICAgICAgICAgICAgcmVjb3JkLnJl
Y29yZC52YWx1ZSA9IHsgVGhyZWFkU2FmZURhdGFCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGtleURh
dGEpKSB9OwogICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PSBTUUxJVEVfRE9ORSkgewogICAg
ICAgICAgICAgLy8gVGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgcmVjb3JkIHdlJ3JlIHRyeWluZyB0
byByZXRyaWV2ZSBoYXMgYmVlbiByZW1vdmVkIGZyb20gdGhlIG9iamVjdCBzdG9yZS4KICAgICAg
ICAgICAgIC8vIFNraXAgb3ZlciBpdC4KQEAgLTY0NSwxMCArNjgwLDEwIEBAIGNvbnN0IElEQktl
eURhdGEmIFNRTGl0ZUlEQkN1cnNvcjo6Y3VycmVudFByaW1hcnlLZXkoKSBjb25zdAogICAgIHJl
dHVybiBtX2ZldGNoZWRSZWNvcmRzLmZpcnN0KCkucmVjb3JkLnByaW1hcnlLZXk7CiB9CiAKLUlE
QlZhbHVlKiBTUUxpdGVJREJDdXJzb3I6OmN1cnJlbnRWYWx1ZSgpIGNvbnN0Citjb25zdCBJREJW
YWx1ZSYgU1FMaXRlSURCQ3Vyc29yOjpjdXJyZW50VmFsdWUoKSBjb25zdAogewogICAgIEFTU0VS
VCghbV9mZXRjaGVkUmVjb3Jkcy5pc0VtcHR5KCkpOwotICAgIHJldHVybiBtX2ZldGNoZWRSZWNv
cmRzLmZpcnN0KCkucmVjb3JkLnZhbHVlLmdldCgpOworICAgIHJldHVybiBtX2ZldGNoZWRSZWNv
cmRzLmZpcnN0KCkucmVjb3JkLnZhbHVlOwogfQogCiBib29sIFNRTGl0ZUlEQkN1cnNvcjo6ZGlk
Q29tcGxldGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5oCmluZGV4IGQ4MWRmYjVjM2Q5NTExMGJh
M2MyZDFlOTNiNjYzMTJjMDJkMzYyNjcuLmZkY2E4MGVkMGI2MWY2ZTUxZDMwNThmZmY2MzllZGJk
YzJiMmYyZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9TUUxpdGVJREJDdXJzb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmgKQEAgLTY2LDEwICs2NiwxMSBAQCBwdWJsaWM6
CiAKICAgICBjb25zdCBJREJLZXlEYXRhJiBjdXJyZW50S2V5KCkgY29uc3Q7CiAgICAgY29uc3Qg
SURCS2V5RGF0YSYgY3VycmVudFByaW1hcnlLZXkoKSBjb25zdDsKLSAgICBJREJWYWx1ZSogY3Vy
cmVudFZhbHVlKCkgY29uc3Q7CisgICAgY29uc3QgSURCVmFsdWUmIGN1cnJlbnRWYWx1ZSgpIGNv
bnN0OwogCiAgICAgYm9vbCBhZHZhbmNlKHVpbnQ2NF90IGNvdW50KTsKICAgICBib29sIGl0ZXJh
dGUoY29uc3QgSURCS2V5RGF0YSYgdGFyZ2V0S2V5LCBjb25zdCBJREJLZXlEYXRhJiB0YXJnZXRQ
cmltYXJ5S2V5KTsKKyAgICBib29sIHByZWZldGNoT25lUmVjb3JkKCk7CiAgICAgYm9vbCBwcmVm
ZXRjaCgpOwogCiAgICAgYm9vbCBkaWRDb21wbGV0ZSgpIGNvbnN0OwpAQCAtNzcsNyArNzgsOCBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIG9iamVjdFN0b3JlUmVjb3Jkc0NoYW5nZWQoKTsKIAotICAg
IHZvaWQgY3VycmVudERhdGEoSURCR2V0UmVzdWx0JiwgY29uc3QgT3B0aW9uYWw8SURCS2V5UGF0
aD4mKTsKKyAgICBlbnVtIGNsYXNzIFNob3VsZEluY2x1ZGVQcmVmZXRjaGVkUmVjb3JkcyB7IE5v
LCBZZXMgfTsKKyAgICB2b2lkIGN1cnJlbnREYXRhKElEQkdldFJlc3VsdCYsIGNvbnN0IE9wdGlv
bmFsPElEQktleVBhdGg+JiwgU2hvdWxkSW5jbHVkZVByZWZldGNoZWRSZWNvcmRzID0gU2hvdWxk
SW5jbHVkZVByZWZldGNoZWRSZWNvcmRzOjpObyk7CiAKIHByaXZhdGU6CiAgICAgYm9vbCBlc3Rh
Ymxpc2hTdGF0ZW1lbnQoKTsKQEAgLTEwOSw2ICsxMTEsOCBAQCBwcml2YXRlOgogCiAgICAgYm9v
bCBpc0RpcmVjdGlvbk5leHQoKSBjb25zdCB7IHJldHVybiBtX2N1cnNvckRpcmVjdGlvbiA9PSBJ
bmRleGVkREI6OkN1cnNvckRpcmVjdGlvbjo6TmV4dCB8fCBtX2N1cnNvckRpcmVjdGlvbiA9PSBJ
bmRleGVkREI6OkN1cnNvckRpcmVjdGlvbjo6TmV4dHVuaXF1ZTsgfQogCisgICAgdm9pZCBpbmNy
ZWFzZUNvdW50VG9QcmVmZXRjaCgpOworCiAgICAgU1FMaXRlSURCVHJhbnNhY3Rpb24qIG1fdHJh
bnNhY3Rpb247CiAgICAgSURCUmVzb3VyY2VJZGVudGlmaWVyIG1fY3Vyc29ySWRlbnRpZmllcjsK
ICAgICBpbnQ2NF90IG1fb2JqZWN0U3RvcmVJRDsKQEAgLTEzMyw2ICsxMzcsOCBAQCBwcml2YXRl
OgogICAgIGludDY0X3QgbV9ib3VuZElEIHsgMCB9OwogCiAgICAgYm9vbCBtX2JhY2tpbmdTdG9y
ZUN1cnNvciB7IGZhbHNlIH07CisKKyAgICB1bnNpZ25lZCBtX3ByZWZldGNoQ291bnQgeyAwIH07
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJREJTZXJ2ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3Bw
CmluZGV4IGEwYTA1MTZmNmZiY2M0ZTY4MGZjMmM5YTdmMDQ4NzkyMzU1M2NkZGYuLmFmNWIzMTg1
MDg1NmQ1ZDJkYjYyOWE5NjAwYWI0ZjQyNjQzMTRlNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNl
LmNwcApAQCAtODU0LDIyICs4NTQsNiBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjppdGVyYXRl
Q3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSQogICAgIGF1
dG8gZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+aXRlcmF0ZUN1cnNvcih0cmFuc2FjdGlvbklkZW50
aWZpZXIsIGN1cnNvcklkZW50aWZpZXIsIGRhdGEsIHJlc3VsdCk7CiAKICAgICBjYWxsYmFjayhl
cnJvciwgcmVzdWx0KTsKLQotICAgIGlmIChlcnJvci5pc051bGwoKSkKLSAgICAgICAgcHJlZmV0
Y2hDdXJzb3IodHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjdXJzb3JJZGVudGlmaWVyLCBkYXRhLmNv
dW50ID8gZGF0YS5jb3VudCA6IDEpOwotfQotCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwcmVm
ZXRjaEN1cnNvcihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRp
ZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiBjdXJzb3JJZGVudGlmaWVyLCB1aW50
NjRfdCBzdGVwKQotewotICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6cHJl
ZmV0Y2hDdXJzb3IiKTsKLQotICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwotCi0gICAgdWlu
dDY0X3QgY291bnRUb1ByZWZldGNoID0gc3RlcCAqIDI7Ci0gICAgd2hpbGUgKGNvdW50VG9QcmVm
ZXRjaCAtLSkgewotICAgICAgICBpZiAoIW1fYmFja2luZ1N0b3JlLT5wcmVmZXRjaEN1cnNvcih0
cmFuc2FjdGlvbklkZW50aWZpZXIsIGN1cnNvcklkZW50aWZpZXIpKQotICAgICAgICAgICAgcmV0
dXJuOwotICAgIH0KIH0KIAogdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y29tbWl0VHJhbnNhY3Rp
b24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIEVycm9yQ2FsbGJh
Y2sgY2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oCmluZGV4IDA2YmY2YTRlZjE2YzYyMzE4
Y2RjMzkzOWIyMzE2ZGFiYTU0ZjA0M2EuLjFjNjg4NzM1MDYwMjZlZmRlZmEwZDcyNzkzY2U4Y2Ey
Yzc0YzQ0OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9VbmlxdWVJREJEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oCkBAIC0xNDIsOCArMTQyLDYgQEAgcHJp
dmF0ZToKIAogICAgIHZvaWQgY2xlYXJUcmFuc2FjdGlvbnNPbkNvbm5lY3Rpb24oVW5pcXVlSURC
RGF0YWJhc2VDb25uZWN0aW9uJik7CiAKLSAgICB2b2lkIHByZWZldGNoQ3Vyc29yKGNvbnN0IElE
QlJlc291cmNlSWRlbnRpZmllciYsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYsIHVpbnQ2
NF90IHN0ZXApOwotCiAgICAgSURCU2VydmVyJiBtX3NlcnZlcjsKICAgICBJREJEYXRhYmFzZUlk
ZW50aWZpZXIgbV9pZGVudGlmaWVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VU
cmFuc2FjdGlvbi5jcHAKaW5kZXggMGM5YmIxMGZmODhjZDY0YzkwNTY5M2Y2MmNmYWNlZTg0MWFl
MmY4ZC4uYmY1NWMwZGVjNjM2YzU3OGY2YmVkYjQ3ODk3YTNmYjkxNjdhYWMzOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFi
YXNlVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcApAQCAtMzc0LDkgKzM3NCwx
MiBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246Oml0ZXJhdGVDdXJzb3IoY29u
c3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYQogICAgIGF1dG8gZGF0YWJhc2UgPSBtX2RhdGFi
YXNlQ29ubmVjdGlvbi0+ZGF0YWJhc2UoKTsKICAgICBBU1NFUlQoZGF0YWJhc2UpOwogICAgIAot
ICAgIGRhdGFiYXNlLT5pdGVyYXRlQ3Vyc29yKHJlcXVlc3REYXRhLCBkYXRhLCBbdGhpcywgcmVx
dWVzdERhdGFdKGF1dG8mIGVycm9yLCBjb25zdCBJREJHZXRSZXN1bHQmIHJlc3VsdCkgeworICAg
IGRhdGFiYXNlLT5pdGVyYXRlQ3Vyc29yKHJlcXVlc3REYXRhLCBkYXRhLCBbdGhpcywgcmVxdWVz
dERhdGEsIG9wdGlvbiA9IGRhdGEub3B0aW9uXShhdXRvJiBlcnJvciwgY29uc3QgSURCR2V0UmVz
dWx0JiByZXN1bHQpIHsKICAgICAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNl
VHJhbnNhY3Rpb246Oml0ZXJhdGVDdXJzb3IgKGNhbGxiYWNrKSIpOwogCisgICAgICAgIGlmIChv
cHRpb24gPT0gSW5kZXhlZERCOjpDdXJzb3JJdGVyYXRlT3B0aW9uOjpEb05vdFJlcGx5KQorICAg
ICAgICAgICAgcmV0dXJuOworCiAgICAgICAgIGlmIChlcnJvci5pc051bGwoKSkKICAgICAgICAg
ICAgIG1fZGF0YWJhc2VDb25uZWN0aW9uLT5jb25uZWN0aW9uVG9DbGllbnQoKS5kaWRJdGVyYXRl
Q3Vyc29yKElEQlJlc3VsdERhdGE6Oml0ZXJhdGVDdXJzb3JTdWNjZXNzKHJlcXVlc3REYXRhLnJl
cXVlc3RJZGVudGlmaWVyKCksIHJlc3VsdCkpOwogICAgICAgICBlbHNlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCQ3Vyc29yUmVjb3JkLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCQ3Vyc29yUmVjb3Jk
LmgKaW5kZXggNjEzNjA0YThjNWZhMmVjNzg0M2JiOThiMDU0ZTEwMWY2NjNlNjMxZS4uOWQ1YWI5
NGFkNTRkNDU5YTkzNjA0OTM4NzBiNzMyYzNlNzRhMDFiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkN1cnNvclJlY29yZC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJDdXJzb3JSZWNvcmQuaApA
QCAtMzUsMTIgKzM1LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBJREJDdXJzb3JS
ZWNvcmQgewogICAgIElEQktleURhdGEga2V5OwogICAgIElEQktleURhdGEgcHJpbWFyeUtleTsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8SURCVmFsdWU+IHZhbHVlOworICAgIElEQlZhbHVlIHZhbHVl
OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNv
bnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBib29sIGRlY29kZShEZWNv
ZGVyJiwgSURCQ3Vyc29yUmVjb3JkJik7CiAKLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIGtleS5zaXplKCkgKyBwcmltYXJ5S2V5LnNpemUoKSArICh2YWx1ZSA/IHZhbHVlLT5zaXpl
KCkgOiAwKTsgfQorICAgIElEQkN1cnNvclJlY29yZCBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAg
ICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIGtleS5zaXplKCkgKyBwcmltYXJ5S2V5LnNp
emUoKSArIHZhbHVlLnNpemUoKTsgfQogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAg
LTY0LDYgKzY1LDExIEBAIGJvb2wgSURCQ3Vyc29yUmVjb3JkOjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlciwgSURCQ3Vyc29yUmVjb3JkJiByZWNvcmQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2lu
bGluZSBJREJDdXJzb3JSZWNvcmQgSURCQ3Vyc29yUmVjb3JkOjppc29sYXRlZENvcHkoKSBjb25z
dAoreworICAgIHJldHVybiB7IGtleS5pc29sYXRlZENvcHkoKSwgcHJpbWFyeUtleS5pc29sYXRl
ZENvcHkoKSwgdmFsdWUuaXNvbGF0ZWRDb3B5KCkgfTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCSXRlcmF0ZUN1cnNvckRh
dGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkl0ZXJh
dGVDdXJzb3JEYXRhLmNwcAppbmRleCBmMWYwYmIzYjZkYjQxZWE5N2QzMDJmYTNkYzI3MjY2ZmRl
ODYxNzk3Li5hZDlmNGE0NzUwMDIyYmIwNjQ2MmZjOGRjOWY1MTkyYjQ2YmJhYjc1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCSXRlcmF0ZUN1
cnNvckRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJl
ZC9JREJJdGVyYXRlQ3Vyc29yRGF0YS5jcHAKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBJREJJdGVyYXRlQ3Vyc29yRGF0YSBJREJJdGVyYXRlQ3Vyc29yRGF0YTo6aXNv
bGF0ZWRDb3B5KCkgY29uc3QKIHsKLSAgICByZXR1cm4geyBrZXlEYXRhLmlzb2xhdGVkQ29weSgp
LCBwcmltYXJ5S2V5RGF0YS5pc29sYXRlZENvcHkoKSwgY291bnQgfTsKKyAgICByZXR1cm4geyBr
ZXlEYXRhLmlzb2xhdGVkQ29weSgpLCBwcmltYXJ5S2V5RGF0YS5pc29sYXRlZENvcHkoKSwgY291
bnQsIG9wdGlvbiB9OwogfQogCiAjaWYgIUxPR19ESVNBQkxFRApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkl0ZXJhdGVDdXJzb3JEYXRhLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCSXRlcmF0ZUN1cnNv
ckRhdGEuaAppbmRleCA4ZDMxNWM1YTZhMzE3NGYxZTIzMWE0MGExMTU5NmNmZTgyZjNiMWIxLi40
ZGY2YzY0NWYzYjI4MWU3Y2EwMGJkOWQ5MmJiNzFkMGM0ZmI0MGQ4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCSXRlcmF0ZUN1cnNvckRhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCSXRlcmF0
ZUN1cnNvckRhdGEuaApAQCAtMzUsNiArMzUsNyBAQCBzdHJ1Y3QgSURCSXRlcmF0ZUN1cnNvckRh
dGEgewogICAgIElEQktleURhdGEga2V5RGF0YTsKICAgICBJREJLZXlEYXRhIHByaW1hcnlLZXlE
YXRhOwogICAgIHVuc2lnbmVkIGNvdW50OworICAgIEluZGV4ZWREQjo6Q3Vyc29ySXRlcmF0ZU9w
dGlvbiBvcHRpb24geyBJbmRleGVkREI6OkN1cnNvckl0ZXJhdGVPcHRpb246OlJlcGx5IH07CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCBJREJJdGVyYXRlQ3Vyc29yRGF0YSBpc29sYXRlZENvcHkoKSBj
b25zdDsKIApAQCAtNTAsNiArNTEsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBJ
REJJdGVyYXRlQ3Vyc29yRGF0YTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAg
ICAgZW5jb2RlciA8PCBrZXlEYXRhIDw8IHByaW1hcnlLZXlEYXRhIDw8IHN0YXRpY19jYXN0PHVp
bnQ2NF90Pihjb3VudCk7CisgICAgZW5jb2Rlci5lbmNvZGVFbnVtKG9wdGlvbik7CiB9CiAKIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+CkBAIC03Myw5ICs3NSwxMSBAQCBib29sIElEQkl0ZXJhdGVD
dXJzb3JEYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgSURCSXRlcmF0ZUN1cnNvckRhdGEm
IGl0ZXJhdAogCiAgICAgaWYgKGNvdW50ID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46
Om1heCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICBpdGVyYXRvckN1cnNvckRhdGEu
Y291bnQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY291bnQpOwogCisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZUVudW0oaXRlcmF0b3JDdXJzb3JEYXRhLm9wdGlvbikpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZjI0Y2EzNTRkNmM5NzQ0ZDkxOGM2
NWRmYTFhN2Q0NmMyNDA3YmQyMC4uNzdiMzYwNWJhMmEzNzRjMWQwOTNmYzUxY2EzMzc5YmRkYmM2
MjgwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMTQwMSw3ICsxNDAxLDcgQEAKIAkJNTEwRDRBMzQxMDMxNjVFRTAwNDlFQTU0
IC8qIFNvY2tldFN0cmVhbUVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTBENEEyRTEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtRXJy
b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1
MTBENEEzNzEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBENEEzMTEwMzE2NUVFMDA0
OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTEwRDRBMzgxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tl
dFN0cmVhbUhhbmRsZUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTEwRDRBMzIxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRs
ZUNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
Ci0JCTUxMTBGQ0ZDMUUwMzY0MUQwMDZGOEQwQiAvKiBJREJDdXJzb3JSZWNvcmQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMTBGQ0ZCMUUwMzYyQTUw
MDZGOEQwQiAvKiBJREJDdXJzb3JSZWNvcmQuaCAqLzsgfTsKKwkJNTExMEZDRkMxRTAzNjQxRDAw
NkY4RDBCIC8qIElEQkN1cnNvclJlY29yZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTExMEZDRkIxRTAzNjJBNTAwNkY4RDBCIC8qIElEQkN1cnNvclJl
Y29yZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTUxMUVDMTI4MUM1MEFBQ0EwMDMyRjk4MyAvKiBJREJTZXJpYWxpemF0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTFFQzEyNjFDNTBBQTU3MDAz
MkY5ODMgLyogSURCU2VyaWFsaXphdGlvbi5oICovOyB9OwogCQk1MTFFQzEyQzFDNTBBQkJGMDAz
MkY5ODMgLyogU1FMaXRlSURCVHJhbnNhY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMUVDMTJBMUM1MEFCQkEwMDMyRjk4MyAvKiBTUUxpdGVJ
REJUcmFuc2FjdGlvbi5oICovOyB9OwogCQk1MTFFQzEzMDFDNTBBQkY1MDAzMkY5ODMgLyogU1FM
aXRlSURCQ3Vyc29yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTFFQzEyRTFDNTBBQkVDMDAzMkY5ODMgLyogU1FMaXRlSURCQ3Vyc29yLmggKi87IH07
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390776</attachid>
            <date>2020-02-14 09:24:24 -0800</date>
            <delta_ts>2020-02-14 10:08:08 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-207602-20200214092423.patch</filename>
            <type>text/plain</type>
            <size>54825</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2NjE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTkzNGViZjIzYzBjMGRj
NDEyNjQ5NDc4MDJjNGVjM2RkNDAxZmVmZC4uMjJjZTFiNjg1ZTcwNjFmNjNmMjg3OWFhNzYxZjU1
NTRlYjJiY2M1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNiBAQAorMjAyMC0wMi0xNCAgU2lo
dWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBJbmRleGVkREI6IHByZWZl
dGNoIGN1cnNvciByZWNvcmRzIG9uIGNsaWVudCBzaWRlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc2MDIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzU4NDgzOTI3PgorCisgICAgICAgIFJldmlld2VkIGJ5IEJyYWR5IEVpZHNvbi4KKworICAgICAg
ICBDYWNoZSBjdXJzb3IgcmVjb3JkcyBvbiBjbGllbnQgc2lkZSBhbmQgdXNlIHRob3NlIHJlY29y
ZHMgZm9yIGl0ZXJhdGUgb3BlcmF0aW9ucy4KKworICAgICAgICBUaGlzIG1ha2VzIGN1cnNvciBj
b250aW51ZS9hZHZhbmNlIHRlc3RzIGluIFBlcmZvcm1hbmNlVGVzdHMvSW5kZXhlZERCL2Jhc2lj
cyB+M3ggZmFzdGVyLgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKworICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJz
b3I6OnNldEdldFJlc3VsdCk6IFJlY29yZCB0aGUgSUQgb2YgVHJhbnNhY3Rpb25PcGVyYXRpb24g
dGhhdCB1cGRhdGVzIGNhY2hlZCByZWNvcmQuCisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6
Oml0ZXJhdGVXaXRoUHJlZmV0Y2hlZFJlY29yZHMpOiBJREJDdXJzb3IgdXNlcyBjYWNoZWQgcmVj
b3JkcyBmb3IgaXRlcmF0ZSBvcGVydGFpb25zIGlmIAorICAgICAgICB0aGVyZSBpcyBubyB3cml0
ZSBvcGVyYXRpb24gYmV0d2VlbiBsYXN0IGNhY2hlZCByZWNvcmRzIHVwZGF0ZSBhbmQgY3VycmVu
dCBpdGVyYXRpb24gb3BlcmF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yOjpjbGVh
clByZWZldGNoZWRSZWNvcmRzKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJz
b3IuaDoKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkdldFJlc3VsdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJHZXRSZXN1bHQ6Omlzb2xhdGVkQ29weSk6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvSURCR2V0UmVzdWx0Lmg6CisgICAgICAgIChXZWJDb3JlOjpJREJH
ZXRSZXN1bHQ6OklEQkdldFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJHZXRSZXN1bHQ6
OnByZWZldGNoZWRSZWNvcmRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkdldFJlc3Vs
dDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkdldFJlc3VsdDo6ZGVjb2Rl
KToKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwOiBSZWNvcmQg
Y29ycmVzcG9uZGluZyBUcmFuc2FjdGlvbk9wZXJhdGlvbiBJRCBpbiByZXF1ZXN0LgorICAgICAg
ICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6ZGlkT3Blbk9ySXRlcmF0ZUN1cnNvcik6CisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oOgorICAgICAgICAoV2ViQ29yZTo6SURC
UmVxdWVzdDo6cGVuZGluZ0N1cnNvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1
ZXN0OjpzZXRUcmFuc2FjdGlvbk9wZXJhdGlvbklEKToKKworICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcDogSWYgYSBjdXJzb3IgaXRlcmF0ZSByZXF1ZXN0IGNh
biBiZSBoYW5kbGVkIHdpdGggY2FjaGVkIHJlY29yZHMsCisgICAgICAgIElEQkNsaWVudCBkb2Vz
IG5vdCBuZWVkIHRvIHNlbmQgcmVxdWVzdCB0byBJREJTZXJ2ZXIgYW5kIHdhaXQgZm9yIHJlc3Bv
bnNlLiBCdXQgcmVxdWVzdHMgYmVmb3JlIHRoYXQgaXRlcmF0ZSAKKyAgICAgICAgcmVxdWVzdCBt
YXkgbmVlZCB0byB3YWl0IHNlcnZlciB0byBhbnN3ZXIsIGFuZCBzcGVjIHJlcXVpcmVzIHRvIGhh
bmRsZSByZXF1ZXN0cyBpbiBvcmRlci4gVGhlcmVmb3JlLCB3ZSBub3cga2VlcAorICAgICAgICBh
bGwgdGhlIHJlc3VsdHMgaW4gbV90cmFuc2FjdGlvbk9wZXJhdGlvblJlc3VsdE1hcCBhbmQgaGFu
ZGxlIHRoZW0gYWNjb3JkaW5nIHRvIHRoZSBvcmRlcmluZyBpbiAKKyAgICAgICAgbV90cmFuc2Fj
dGlvbk9wZXJhdGlvbnNJblByb2dyZXNzUXVldWUuCisgICAgICAgIChXZWJDb3JlOjpJREJUcmFu
c2FjdGlvbjo6YWJvcnRJblByb2dyZXNzT3BlcmF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJUcmFuc2FjdGlvbjo6cmVtb3ZlUmVxdWVzdCk6IEJlY2F1c2UgcmVzdWx0IG9mIGEgY3Vyc29y
IHJlcXVlc3QgY2FuIGJlIGFuc3dlcmVkIHNvb25lciwgaXQgaXMgCisgICAgICAgIHBvc3NpYmxl
IHRoYXQgaW4gZmluaXNoZWREaXNwYXRjaEV2ZW50Rm9yUmVxdWVzdCwgbV9jdXJyZW50bHlDb21w
bGV0aW5nUmVxdWVzdCAod2hpY2ggaXMgYSBjdXJzb3IgcmVxdWVzdCkgaXMgCisgICAgICAgIHNl
dCB0byBudWxscHRyLCBhbmQgdGhlbiBpdCBpcyBzZXQgYmFjayB0byB0aGUgc2FtZSBjdXJzb3Ig
cmVxdWVzdCBpbiBoYW5kbGVPcGVyYXRpb25zQ29tcGxldGVkT25TZXJ2ZXIgcmlnaHQgCisgICAg
ICAgIGFmdGVyLiBUaGlzIGhhcHBlbnMgaW4gZGlzcGF0Y2hFdmVudCBvZiB0aGUgY3Vyc29yIHJl
cXVlc3QsIHdoZXJlIHJlcXVlc3Qgd291bGQgcmVtb3ZlIGl0c2VsZiBmcm9tIHJlcXVlc3QgbGlz
dAorICAgICAgICBvZiB0cmFuc2FjdGlvbiBhdCB0aGUgZW5kLgorICAgICAgICBJbiB0aGlzIGNh
c2UsIHdoZW4gcmVxdWVzdCBsaXN0IGJlY29tZXMgZW1wdHksIHRyYW5zYWN0aW9uIG1heSBjb21t
aXQgYXV0b21hdGljYWxseS4gQnV0IHRyYW5zYWN0aW9uIHNob3VsZCBub3QgCisgICAgICAgIGJl
Y2F1c2UgdGhhdCByZXF1ZXN0IGlzIHN0aWxsIHZhbGlkIGFzIG1fY3VycmVudGx5Q29tcGxldGlu
Z1JlcXVlc3QgYW5kIHNob3VsZCBub3QgYmUgcmVtb3ZlZCBmcm9tIGxpc3QuCisgICAgICAgIChX
ZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6c2NoZWR1bGVPcGVyYXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6SURCVHJhbnNhY3Rpb246Om9wZXJhdGlvbkNvbXBsZXRlZE9uU2VydmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpoYW5kbGVPcGVyYXRpb25zQ29tcGxldGVkT25T
ZXJ2ZXIpOiBBbGwgcmVxdWVzdHMgd2VyZSBzZW50IHRvIElEQlNlcnZlciBhbmQgdGhlCisgICAg
ICAgIHJlc3BvbnNlL3Jlc3VsdCBvcmRlcmluZyB3b3VsZCBuYXR1cmFsbHkgYmUgdGhlIHNhbWUg
YXMgcmVxdWVzdCBvcmRlci4gTm93IHRoYXQgcmVzdWx0cyBjYW4gYmUgY3JlYXRlZCBpbiBib3Ro
IAorICAgICAgICBJREJDbGllbnQgYW5kIElEQlNlcnZlciwgd2Ugbm8gbG9uZ2VyIGhhbmRsZSBy
ZXF1ZXN0cyB1c2luZyBtX2NvbXBsZXRlZE9uU2VydmVyUXVldWUuCisgICAgICAgIChXZWJDb3Jl
OjpJREJUcmFuc2FjdGlvbjo6Y3JlYXRlT2JqZWN0U3RvcmUpOiBNYXJrIGFzIHdyaXRlIG9wZXJh
dGlvbiB0byB0cmFjayBsYXN0IHdyaXRlIG9wZXJhdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OklE
QlRyYW5zYWN0aW9uOjpyZW5hbWVPYmplY3RTdG9yZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6SURCVHJhbnNhY3Rpb246OmNyZWF0ZUluZGV4KTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpJREJUcmFuc2FjdGlvbjo6cmVuYW1lSW5kZXgpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0RGVsZXRlUmVjb3JkKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cmVxdWVzdENsZWFyT2JqZWN0U3RvcmUpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0UHV0T3JBZGQpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpkZWxldGVPYmplY3RTdG9yZSk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmRlbGV0ZUluZGV4KTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6aXRlcmF0ZUN1cnNvck9u
U2VydmVyKTogT25seSB1c2UgY2FjaGVkIHJlY29yZHMgaWYgdGhlIHJlcXVlc3QgZG9lcyBub3Qg
c3BlY2lmeSB0YXJnZXQKKyAgICAgICAga2V5LiBJZiBjdXJzb3IgaXMgaXRlcmF0ZWQgc3VjY2Vz
c2Z1bGx5IHdpdGggY2FjaGUsIHNlbmQgYSBtZXNzYWdlIHRvIElEQlNlcnZlciB0byBub3RpZnkg
YWJvdXQgdGhlIHByb2dyZXNzLgorICAgICAgICBPdGhlcndpc2UsIGZhbGwgYmFjayB0byBkZXBl
bmQgb24gSURCU2VydmVyIHRvIGFuc3dlciB0aGUgcmVxdWVzdC4KKyAgICAgICAgKFdlYkNvcmU6
OklEQlRyYW5zYWN0aW9uOjpnZW5lcmF0ZU9wZXJhdGlvbklEKTogVHJhbnNhY3Rpb25PcGVyYXRp
b24gSUQgaXMgdW5pcXVlIGluIGEgdHJhbnNhY3Rpb24uCisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCVHJhbnNhY3Rpb24uaDoKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lu
ZGV4ZWREQi5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0
aW9uUHJveHkuY3BwOiAKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ29ubmVjdGlv
blByb3h5OjppdGVyYXRlQ3Vyc29yKTogRG9uJ3QgdHJhY2sgcmVzdWx0IG9mIFRyYW5zYWN0aW9u
T3BlcmF0aW9uIGluIAorICAgICAgICBJREJDb25uZWN0aW9uUHJveHkgaWYgVHJhbnNhY3Rpb25P
cGVyYXRpb24gZG9lcyBub3QgbmVlZCBhIHJlcGx5IGZyb20gSURCU2VydmVyLgorCisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb246OlRyYW5zYWN0
aW9uT3BlcmF0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvVHJhbnNh
Y3Rpb25PcGVyYXRpb24uaDogQWRkIElEIHRvIFRyYW5zYWN0aW9uT3BlcmF0aW9uLgorICAgICAg
ICAoV2ViQ29yZTo6SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbjo6b3BlcmF0aW9uSUQg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlv
bjo6VHJhbnNhY3Rpb25PcGVyYXRpb24pOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL0lEQkJhY2tpbmdTdG9yZS5oOiByZW1vdmUgcHJlZmV0Y2hDdXJzb3IgYXMgaXQgaXMg
bm90IHVzZWQgbm93LgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJ
REJCYWNraW5nU3RvcmUuaDogRGl0dG8uIEFsc28gdGhpcyBwYXRjaCBvbmx5IGRlYWxzIHdpdGgg
cHJlZmV0Y2hpbmcgaW4gCisgICAgICAgIHBlcnNpc3RlbnQgc3RvcmUuCisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5oOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZUlu
ZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3Jl
OjpnZXRBbGxJbmRleFJlY29yZHMpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxp
dGVJREJCYWNraW5nU3RvcmU6OmdldEluZGV4UmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjppdGVyYXRlQ3Vyc29yKTogT25seSBwcmVm
ZXRjaCBhdCB3aGVuIHJlcXVlc3QgbmVlZHMgdG8gYmUgYW5zd2VyZWQuCisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6cHJlZmV0Y2hDdXJzb3IpOiBE
ZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNr
aW5nU3RvcmUuaDoKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJ
REJDdXJzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJz
b3I6OmN1cnJlbnREYXRhKTogUHJvdmlkZSBhbiBvcHRpb24gdG8gaW5jbHVkZSBwcmVmZXRjaGVk
IHJlY29yZHMgaW4gcmVzdWx0LgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJ
REJDdXJzb3I6Om9iamVjdFN0b3JlUmVjb3Jkc0NoYW5nZWQpOiBSZXNldCBjb3VudCB0byBwcmVm
ZXRjaCB3aGVuIHRoZXJlIGlzIGEgCisgICAgICAgIGNoYW5nZS4gVGhpcyBpcyB1c2VkIHdpdGgg
aW5jcmVhc2VDb3VudFRvUHJlZmV0Y2ggdG8gbWFrZSBwcmVmZXRjaCBhZGFwdGl2ZS4KKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpvYmplY3RTdG9yZVJlY29y
ZHNDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29y
OjpwcmVmZXRjaE9uZVJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0
ZUlEQkN1cnNvcjo6aW5jcmVhc2VDb3VudFRvUHJlZmV0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OnByZWZldGNoKTogQ291bnQgdG8gcHJlZmV0Y2gg
aXMgZGVjaWRlZCBieSBTUUxpdGVDdXJzb3Igbm93LgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpTUUxpdGVJREJDdXJzb3I6OmludGVybmFsRmV0Y2hOZXh0UmVjb3JkKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpjdXJyZW50VmFsdWUgY29uc3Qp
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuaDoK
KworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjppdGVy
YXRlQ3Vyc29yKTogTW92ZSBjYWxsIHRvIHByZWZldGNoIGN1cnNvciB0byBTUUxpdGVJREJCYWNr
aW5nU3RvcmUuCisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNl
OjpwcmVmZXRjaEN1cnNvcik6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjppdGVyYXRlQ3Vyc29y
KToKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJDdXJzb3JSZWNvcmQu
aDogU3RvcCB1c2luZyBwb2ludGVyIGZvciBJREJWYWx1ZSBmb3IgZWFzaWVyIGVuY29kaW5nIGFu
ZCBkZWNvZGluZy4KKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvclJlY29yZDo6c2l6ZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3JSZWNvcmQ6Omlzb2xhdGVkQ29weSBjb25z
dCk6CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCSXRlcmF0ZUN1cnNv
ckRhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCSXRlcmF0ZUN1cnNvckRhdGE6Omlzb2xh
dGVkQ29weSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkl0
ZXJhdGVDdXJzb3JEYXRhLmg6IEFkZCBhbiBvcHRpb24gdG8gbGV0IElEQlNlcnZlciBrbm93IHdo
ZXRoZXIgaXQgc2hvdWxkIGFuc3dlcgorICAgICAgICB0aGUgY3Vyc29yIHJlcXVlc3QuIAorICAg
ICAgICAoV2ViQ29yZTo6SURCSXRlcmF0ZUN1cnNvckRhdGE6OmVuY29kZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJJdGVyYXRlQ3Vyc29yRGF0YTo6ZGVjb2RlKToKKworICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMC0wMi0xNCAgQW50b2lu
ZSBRdWludCAgPGdyYW91dHNAd2Via2l0Lm9yZz4KIAogICAgICAgICBbV2ViIEFuaW1hdGlvbnNd
IE1ha2UgYWxsIGFuaW1hdGlvbiBldmVudCB0eXBlcyBpbmhlcml0IGZyb20gdGhlIHNhbWUgYmFz
ZSBjbGFzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggMzMyOWFiMDc3ZDRlZjcxZjdjZDBhYzczMzkx
OGFmMThkNzFmNDZiMS4uZGMzOGQ2YmRmMWUzZTNiNzA4ZmFiYjYyNGMzYWNkYmY5MWFkNmQ4ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlCkBAIC02OCw2ICs2OCw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVf
RlJBTUVXT1JLX0hFQURFUlMKICAgICBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURC
RGF0YWJhc2VUcmFuc2FjdGlvbi5oCiAKICAgICBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURC
Q3Vyc29ySW5mby5oCisgICAgTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkN1cnNvclJlY29y
ZC5oCiAgICAgTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkRhdGFiYXNlSW5mby5oCiAgICAg
TW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkVycm9yLmgKICAgICBNb2R1bGVzL2luZGV4ZWRk
Yi9zaGFyZWQvSURCR2V0QWxsUmVjb3Jkc0RhdGEuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAKaW5kZXggMzY4ZWRjMjA0ODNiNTQxYWNkN2IzYmY1
OWJmNWNmMTdhMWM5M2EwYi4uNjViODliNTg1YjVjZWFmYWZmOWM3MDEwZjAxOWY1NWExNWU0NmE0
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3Bw
CkBAIC0zMTIsNyArMzEyLDcgQEAgRXhjZXB0aW9uT3I8UmVmPFdlYkNvcmU6OklEQlJlcXVlc3Q+
PiBJREJDdXJzb3I6OmRlbGV0ZUZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0JgogICAgIHJldHVybiBy
ZXF1ZXN0OwogfQogCi1ib29sIElEQkN1cnNvcjo6c2V0R2V0UmVzdWx0KElEQlJlcXVlc3QmIHJl
cXVlc3QsIGNvbnN0IElEQkdldFJlc3VsdCYgZ2V0UmVzdWx0KQorYm9vbCBJREJDdXJzb3I6OnNl
dEdldFJlc3VsdChJREJSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBJREJHZXRSZXN1bHQmIGdldFJl
c3VsdCwgdWludDY0X3Qgb3BlcmF0aW9uSUQpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQkN1
cnNvcjo6c2V0R2V0UmVzdWx0IC0gY3VycmVudCBrZXkgJXMiLCBnZXRSZXN1bHQua2V5RGF0YSgp
LmxvZ2dpbmdTdHJpbmcoKS5zdWJzdHJpbmcoMCwgMTAwKS51dGY4KCkuZGF0YSgpKTsKICAgICBB
U1NFUlQoY2FuQ3VycmVudFRocmVhZEFjY2Vzc1RocmVhZExvY2FsRGF0YShlZmZlY3RpdmVPYmpl
Y3RTdG9yZSgpLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWQoKSkpOwpAQCAt
MzQ5LDYgKzM0OSwxMyBAQCBib29sIElEQkN1cnNvcjo6c2V0R2V0UmVzdWx0KElEQlJlcXVlc3Qm
IHJlcXVlc3QsIGNvbnN0IElEQkdldFJlc3VsdCYgZ2V0UmVzdWx0KQogICAgICAgICBtX2tleVBh
dGggPSBnZXRSZXN1bHQua2V5UGF0aCgpOwogICAgIH0KIAorICAgIGF1dG8gcHJlZmV0Y2hlZFJl
Y29yZHMgPSBnZXRSZXN1bHQucHJlZmV0Y2hlZFJlY29yZHMoKTsKKyAgICBpZiAoIXByZWZldGNo
ZWRSZWNvcmRzLmlzRW1wdHkoKSkgeworICAgICAgICBmb3IgKGF1dG8mIHJlY29yZCA6IHByZWZl
dGNoZWRSZWNvcmRzKQorICAgICAgICAgICAgbV9wcmVmZXRjaGVkUmVjb3Jkcy5hcHBlbmQocmVj
b3JkKTsKKyAgICAgICAgbV9wcmVmZXRjaE9wZXJhdGlvbklEID0gb3BlcmF0aW9uSUQ7CisgICAg
fQorCiAgICAgbV9nb3RWYWx1ZSA9IHRydWU7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0zNjAs
NiArMzY3LDI2IEBAIHZvaWQgSURCQ3Vyc29yOjpjbGVhcldyYXBwZXJzKCkKICAgICBtX3ZhbHVl
V3JhcHBlci5jbGVhcigpOwogfQogCitPcHRpb25hbDxJREJHZXRSZXN1bHQ+IElEQkN1cnNvcjo6
aXRlcmF0ZVdpdGhQcmVmZXRjaGVkUmVjb3Jkcyh1bnNpZ25lZCBjb3VudCwgdWludDY0X3QgbGFz
dFdyaXRlT3BlcmF0aW9uSUQpCit7CisgICAgdW5zaWduZWQgc3RlcCA9IGNvdW50ID4gMCA/IGNv
dW50IDogMTsKKyAgICBpZiAoc3RlcCA+IG1fcHJlZmV0Y2hlZFJlY29yZHMuc2l6ZSgpIHx8IG1f
cHJlZmV0Y2hPcGVyYXRpb25JRCA8PSBsYXN0V3JpdGVPcGVyYXRpb25JRCkKKyAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHdoaWxlICgtLXN0ZXApCisgICAgICAgIG1fcHJlZmV0
Y2hlZFJlY29yZHMucmVtb3ZlRmlyc3QoKTsKKworICAgIGF1dG8gcmVjb3JkID0gbV9wcmVmZXRj
aGVkUmVjb3Jkcy50YWtlRmlyc3QoKTsKKworICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2Fj
dGlvbjo6aXRlcmF0ZVdpdGhQcmVmZXRjaGVkUmVjb3JkcyBjb25zdW1lcyAldSByZWNvcmRzIiwg
Y291bnQgPiAwID8gY291bnQgOiAxKTsKKyAgICByZXR1cm4gSURCR2V0UmVzdWx0KHJlY29yZC5r
ZXksIHJlY29yZC5wcmltYXJ5S2V5LCBJREJWYWx1ZShyZWNvcmQudmFsdWUpLCBlZmZlY3RpdmVP
YmplY3RTdG9yZSgpLmtleVBhdGgoKSk7Cit9CisKK3ZvaWQgSURCQ3Vyc29yOjpjbGVhclByZWZl
dGNoZWRSZWNvcmRzKCkKK3sKKyAgICBtX3ByZWZldGNoZWRSZWNvcmRzLmNsZWFyKCk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFC
QVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vy
c29yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaAppbmRl
eCA0NjIyZTcwMzM0NGIzNjA4MGE3MWRlYTMyZGY4YTUzMWRjZmM1OGFjLi43YmM4ZjhjMDE3ZGY1
MGQyNmY5OWE0YmEzYjQzMjlhZWI2NzVmOGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJDdXJzb3IuaApAQCAtODEsMTAgKzgxLDEzIEBAIHB1YmxpYzoKICAgICB2
b2lkIGNsZWFyV3JhcHBlcnMoKTsKICAgICBJREJSZXF1ZXN0KiByZXF1ZXN0KCkgeyByZXR1cm4g
bV9yZXF1ZXN0LmdldCgpOyB9CiAKLSAgICBib29sIHNldEdldFJlc3VsdChJREJSZXF1ZXN0Jiwg
Y29uc3QgSURCR2V0UmVzdWx0Jik7CisgICAgYm9vbCBzZXRHZXRSZXN1bHQoSURCUmVxdWVzdCYs
IGNvbnN0IElEQkdldFJlc3VsdCYsIHVpbnQ2NF90IG9wZXJhdGlvbklEKTsKIAogICAgIHZpcnR1
YWwgYm9vbCBpc0tleUN1cnNvcldpdGhWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAK
KyAgICBPcHRpb25hbDxJREJHZXRSZXN1bHQ+IGl0ZXJhdGVXaXRoUHJlZmV0Y2hlZFJlY29yZHMo
dW5zaWduZWQgY291bnQsIHVpbnQ2NF90IGxhc3RXcml0ZU9wZXJhdGlvbklEKTsKKyAgICB2b2lk
IGNsZWFyUHJlZmV0Y2hlZFJlY29yZHMoKTsKKwogcHJvdGVjdGVkOgogICAgIElEQkN1cnNvcihJ
REJPYmplY3RTdG9yZSYsIGNvbnN0IElEQkN1cnNvckluZm8mKTsKICAgICBJREJDdXJzb3IoSURC
SW5kZXgmLCBjb25zdCBJREJDdXJzb3JJbmZvJik7CkBAIC0xMTMsNiArMTE2LDkgQEAgcHJpdmF0
ZToKICAgICBKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0IG1fa2V5V3JhcHBlcjsKICAgICBKU1ZhbHVl
SW5XcmFwcGVkT2JqZWN0IG1fcHJpbWFyeUtleVdyYXBwZXI7CiAgICAgSlNWYWx1ZUluV3JhcHBl
ZE9iamVjdCBtX3ZhbHVlV3JhcHBlcjsKKworICAgIERlcXVlPElEQkN1cnNvclJlY29yZD4gbV9w
cmVmZXRjaGVkUmVjb3JkczsKKyAgICB1aW50NjRfdCBtX3ByZWZldGNoT3BlcmF0aW9uSUQgeyAw
IH07CiB9OwogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkdldFJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJH
ZXRSZXN1bHQuY3BwCmluZGV4IDk0OWU4MTMzOTdmMzFiZjE4ZTY1YmJjNTU4MjEyZDA4ODE2YzA2
ZmYuLjEyZWM4NzA3MzI5NzAxYTRjYTM1MDEyZGU1MmJmYjEyNzM1MjliNmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkdldFJlc3VsdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCR2V0UmVzdWx0LmNwcApAQCAtNTUs
NiArNTUsNyBAQCB2b2lkIElEQkdldFJlc3VsdDo6aXNvbGF0ZWRDb3B5KGNvbnN0IElEQkdldFJl
c3VsdCYgc291cmNlLCBJREJHZXRSZXN1bHQmIGRlc3RpbgogICAgIGRlc3RpbmF0aW9uLm1fcHJp
bWFyeUtleURhdGEgPSBzb3VyY2UubV9wcmltYXJ5S2V5RGF0YS5pc29sYXRlZENvcHkoKTsKICAg
ICBkZXN0aW5hdGlvbi5tX2tleVBhdGggPSBXZWJDb3JlOjppc29sYXRlZENvcHkoc291cmNlLm1f
a2V5UGF0aCk7CiAgICAgZGVzdGluYXRpb24ubV9pc0RlZmluZWQgPSBzb3VyY2UubV9pc0RlZmlu
ZWQ7CisgICAgZGVzdGluYXRpb24ubV9wcmVmZXRjaGVkUmVjb3JkcyA9IHNvdXJjZS5tX3ByZWZl
dGNoZWRSZWNvcmRzLmlzb2xhdGVkQ29weSgpOwogfQogCiB2b2lkIElEQkdldFJlc3VsdDo6c2V0
VmFsdWUoSURCVmFsdWUmJiB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkdldFJlc3VsdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCR2V0UmVzdWx0LmgKaW5kZXggZTg3YzM5MDEyMzM0OWQxMTUzZDFmYzA4YzllNmIy
YmY3NDUxYjI1My4uZDAzZDg5YmFjMjQ4MmNkODMxMjM4YWYzZDIyOTBmNTZmOTNhOTY4ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCR2V0UmVzdWx0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCR2V0UmVzdWx0LmgKQEAg
LTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCisjaW5jbHVk
ZSAiSURCQ3Vyc29yUmVjb3JkLmgiCiAjaW5jbHVkZSAiSURCS2V5LmgiCiAjaW5jbHVkZSAiSURC
S2V5RGF0YS5oIgogI2luY2x1ZGUgIklEQktleVBhdGguaCIKQEAgLTc2LDYgKzc3LDE1IEBAIHB1
YmxpYzoKICAgICB7CiAgICAgfQogCisgICAgSURCR2V0UmVzdWx0KGNvbnN0IElEQktleURhdGEm
IGtleURhdGEsIGNvbnN0IElEQktleURhdGEmIHByaW1hcnlLZXlEYXRhLCBJREJWYWx1ZSYmIHZh
bHVlLCBjb25zdCBPcHRpb25hbDxJREJLZXlQYXRoPiYga2V5UGF0aCwgVmVjdG9yPElEQkN1cnNv
clJlY29yZD4mJiBwcmVmZXRlY2hlZFJlY29yZHMpCisgICAgICAgIDogbV92YWx1ZShXVEZNb3Zl
KHZhbHVlKSkKKyAgICAgICAgLCBtX2tleURhdGEoa2V5RGF0YSkKKyAgICAgICAgLCBtX3ByaW1h
cnlLZXlEYXRhKHByaW1hcnlLZXlEYXRhKQorICAgICAgICAsIG1fa2V5UGF0aChrZXlQYXRoKQor
ICAgICAgICAsIG1fcHJlZmV0Y2hlZFJlY29yZHMoV1RGTW92ZShwcmVmZXRlY2hlZFJlY29yZHMp
KQorICAgIHsKKyAgICB9CisKICAgICBlbnVtIElzb2xhdGVkQ29weVRhZyB7IElzb2xhdGVkQ29w
eSB9OwogICAgIElEQkdldFJlc3VsdChjb25zdCBJREJHZXRSZXN1bHQmLCBJc29sYXRlZENvcHlU
YWcpOwogCkBAIC04Nyw2ICs5Nyw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBJREJLZXlEYXRhJiBr
ZXlEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9rZXlEYXRhOyB9CiAgICAgY29uc3QgSURCS2V5RGF0
YSYgcHJpbWFyeUtleURhdGEoKSBjb25zdCB7IHJldHVybiBtX3ByaW1hcnlLZXlEYXRhOyB9CiAg
ICAgY29uc3QgT3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgoKSBjb25zdCB7IHJldHVybiBt
X2tleVBhdGg7IH0KKyAgICBjb25zdCBWZWN0b3I8SURCQ3Vyc29yUmVjb3JkPiYgcHJlZmV0Y2hl
ZFJlY29yZHMoKSBjb25zdCB7IHJldHVybiBtX3ByZWZldGNoZWRSZWNvcmRzOyB9CiAgICAgYm9v
bCBpc0RlZmluZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRGVmaW5lZDsgfQogCiAgICAgdGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwpAQCAtMTAxLDEz
ICsxMTIsMTQgQEAgcHJpdmF0ZToKICAgICBJREJLZXlEYXRhIG1fa2V5RGF0YTsKICAgICBJREJL
ZXlEYXRhIG1fcHJpbWFyeUtleURhdGE7CiAgICAgT3B0aW9uYWw8SURCS2V5UGF0aD4gbV9rZXlQ
YXRoOworICAgIFZlY3RvcjxJREJDdXJzb3JSZWNvcmQ+IG1fcHJlZmV0Y2hlZFJlY29yZHM7CiAg
ICAgYm9vbCBtX2lzRGVmaW5lZCB7IHRydWUgfTsKIH07CiAKIHRlbXBsYXRlPGNsYXNzIEVuY29k
ZXI+CiB2b2lkIElEQkdldFJlc3VsdDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7
Ci0gICAgZW5jb2RlciA8PCBtX2tleURhdGEgPDwgbV9wcmltYXJ5S2V5RGF0YSA8PCBtX2tleVBh
dGggPDwgbV9pc0RlZmluZWQgPDwgbV92YWx1ZTsKKyAgICBlbmNvZGVyIDw8IG1fa2V5RGF0YSA8
PCBtX3ByaW1hcnlLZXlEYXRhIDw8IG1fa2V5UGF0aCA8PCBtX2lzRGVmaW5lZCA8PCBtX3ZhbHVl
IDw8IG1fcHJlZmV0Y2hlZFJlY29yZHM7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+CkBA
IC0xMzcsNiArMTQ5LDEyIEBAIGJvb2wgSURCR2V0UmVzdWx0OjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlciwgSURCR2V0UmVzdWx0JiByZXN1bHQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBy
ZXN1bHQubV92YWx1ZSA9IFdURk1vdmUoKnZhbHVlKTsKIAorICAgIE9wdGlvbmFsPFZlY3RvcjxJ
REJDdXJzb3JSZWNvcmQ+PiBwcmVmZXRjaGVkUmVjb3JkczsKKyAgICBkZWNvZGVyID4+IHByZWZl
dGNoZWRSZWNvcmRzOworICAgIGlmICghcHJlZmV0Y2hlZFJlY29yZHMpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICByZXN1bHQubV9wcmVmZXRjaGVkUmVjb3JkcyA9IFdURk1vdmUoKnByZWZl
dGNoZWRSZWNvcmRzKTsKKwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCmluZGV4IDMwZjZlNWNkZjRkOWZk
YmM2MWNlM2EyMDNjNGFkMDYzYmQ4YzUyYjMuLjNkMDIxMTljN2E1MWUxZTFmY2EwZWEyZWQ0Yzlk
MjVlODc1ZTAyNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQlJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlJlcXVlc3QuY3BwCkBAIC00OTksNyArNDk5LDcgQEAgdm9pZCBJREJSZXF1ZXN0OjpkaWRPcGVu
T3JJdGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCiAgICAgbV9y
ZXN1bHRXcmFwcGVyID0geyB9OwogCiAgICAgaWYgKHJlc3VsdERhdGEudHlwZSgpID09IElEQlJl
c3VsdFR5cGU6Okl0ZXJhdGVDdXJzb3JTdWNjZXNzIHx8IHJlc3VsdERhdGEudHlwZSgpID09IElE
QlJlc3VsdFR5cGU6Ok9wZW5DdXJzb3JTdWNjZXNzKSB7Ci0gICAgICAgIGlmIChtX3BlbmRpbmdD
dXJzb3ItPnNldEdldFJlc3VsdCgqdGhpcywgcmVzdWx0RGF0YS5nZXRSZXN1bHQoKSkgJiYgbV9j
dXJzb3JXcmFwcGVyKQorICAgICAgICBpZiAobV9wZW5kaW5nQ3Vyc29yLT5zZXRHZXRSZXN1bHQo
KnRoaXMsIHJlc3VsdERhdGEuZ2V0UmVzdWx0KCksIG1fY3VycmVudFRyYW5zYWN0aW9uT3BlcmF0
aW9uSUQpICYmIG1fY3Vyc29yV3JhcHBlcikKICAgICAgICAgICAgIG1fcmVzdWx0V3JhcHBlciA9
IG1fY3Vyc29yV3JhcHBlcjsKICAgICAgICAgaWYgKHJlc3VsdERhdGEuZ2V0UmVzdWx0KCkuaXNE
ZWZpbmVkKCkpCiAgICAgICAgICAgICBtX3Jlc3VsdCA9IG1fcGVuZGluZ0N1cnNvcjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaAppbmRleCAyNzg1MDFi
YTYwZTlkZTAzMDI4MWQ4Y2IyZjExMDY3OGIwYzliOGIzLi4yODY2MTM0NGIwZGUyMTc2ZjViZWFj
MzYxMzE1NDBmMTI1NmZkZGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCUmVxdWVzdC5oCkBAIC0xMTgsNyArMTE4LDcgQEAgcHVibGljOgogICAgIHZvaWQgd2ls
bEl0ZXJhdGVDdXJzb3IoSURCQ3Vyc29yJik7CiAgICAgdm9pZCBkaWRPcGVuT3JJdGVyYXRlQ3Vy
c29yKGNvbnN0IElEQlJlc3VsdERhdGEmKTsKIAotICAgIGNvbnN0IElEQkN1cnNvciogcGVuZGlu
Z0N1cnNvcigpIGNvbnN0IHsgcmV0dXJuIG1fcGVuZGluZ0N1cnNvci5nZXQoKTsgfQorICAgIElE
QkN1cnNvciogcGVuZGluZ0N1cnNvcigpIGNvbnN0IHsgcmV0dXJuIG1fcGVuZGluZ0N1cnNvciA/
IG1fcGVuZGluZ0N1cnNvci5nZXQoKSA6IG51bGxwdHI7IH0KIAogICAgIHZvaWQgc2V0U291cmNl
KElEQkN1cnNvciYpOwogICAgIHZvaWQgc2V0VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKElEQlRy
YW5zYWN0aW9uJik7CkBAIC0xMjcsNiArMTI3LDggQEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNQ
ZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBmaW5hbDsKIAorICAgIHZvaWQgc2V0VHJhbnNhY3Rpb25P
cGVyYXRpb25JRCh1aW50NjRfdCB0cmFuc2FjdGlvbk9wZXJhdGlvbklEKSB7IG1fY3VycmVudFRy
YW5zYWN0aW9uT3BlcmF0aW9uSUQgPSB0cmFuc2FjdGlvbk9wZXJhdGlvbklEOyB9CisKIHByb3Rl
Y3RlZDoKICAgICBJREJSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBJREJDbGllbnQ6
OklEQkNvbm5lY3Rpb25Qcm94eSYpOwogCkBAIC0xOTEsNiArMTkzLDggQEAgcHJpdmF0ZToKIAog
ICAgIGJvb2wgbV9kaXNwYXRjaGluZ0V2ZW50IHsgZmFsc2UgfTsKICAgICBib29sIG1faGFzVW5j
YXVnaHRFeGNlcHRpb24geyBmYWxzZSB9OworCisgICAgdWludDY0X3QgbV9jdXJyZW50VHJhbnNh
Y3Rpb25PcGVyYXRpb25JRCB7IDAgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNw
cAppbmRleCA0N2YyY2IwZTVmZjYzYzg0OWE5OTJjZDhkZjdjN2FkMjlkMzAxNzJkLi44ZGRmMjA3
OWFmOTU0MDJiMGE0MzQwY2MyNzllOTRiOTc1MWZhMzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCkBAIC0yNzIsMTUgKzI3
Miw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmFib3J0SW5Qcm9ncmVzc09wZXJhdGlvbnMoY29u
c3QgSURCRXJyb3ImIGVycm9yKQogICAgICAgICBvcGVyYXRpb24tPmRvQ29tcGxldGUoSURCUmVz
dWx0RGF0YTo6ZXJyb3Iob3BlcmF0aW9uLT5pZGVudGlmaWVyKCksIGVycm9yKSk7CiAgICAgfQog
Ci0gICAgVmVjdG9yPFJlZlB0cjxJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uPj4gY29t
cGxldGVkT25TZXJ2ZXJBYm9ydFZlY3RvcjsKLSAgICBjb21wbGV0ZWRPblNlcnZlckFib3J0VmVj
dG9yLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9jb21wbGV0ZWRPblNlcnZlclF1ZXVlLnNpemUo
KSk7Ci0gICAgd2hpbGUgKCFtX2NvbXBsZXRlZE9uU2VydmVyUXVldWUuaXNFbXB0eSgpKQotICAg
ICAgICBjb21wbGV0ZWRPblNlcnZlckFib3J0VmVjdG9yLnVuY2hlY2tlZEFwcGVuZChtX2NvbXBs
ZXRlZE9uU2VydmVyUXVldWUudGFrZUZpcnN0KCkuZmlyc3QpOwotCi0gICAgZm9yIChhdXRvJiBv
cGVyYXRpb24gOiBjb21wbGV0ZWRPblNlcnZlckFib3J0VmVjdG9yKSB7Ci0gICAgICAgIG1fY3Vy
cmVudGx5Q29tcGxldGluZ1JlcXVlc3QgPSBudWxscHRyOwotICAgICAgICBvcGVyYXRpb24tPmRv
Q29tcGxldGUoSURCUmVzdWx0RGF0YTo6ZXJyb3Iob3BlcmF0aW9uLT5pZGVudGlmaWVyKCksIGVy
cm9yKSk7Ci0gICAgfQorICAgIG1fdHJhbnNhY3Rpb25PcGVyYXRpb25SZXN1bHRNYXAuY2xlYXIo
KTsKIAogICAgIG1fY3VycmVudGx5Q29tcGxldGluZ1JlcXVlc3QgPSBudWxscHRyOwogICAgIGNv
bm5lY3Rpb25Qcm94eSgpLmZvcmdldEFjdGl2ZU9wZXJhdGlvbnMoaW5Qcm9ncmVzc0Fib3J0VmVj
dG9yKTsKQEAgLTM3NiwxNiArMzY4LDIyIEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmFkZFJlcXVl
c3QoSURCUmVxdWVzdCYgcmVxdWVzdCkKIHZvaWQgSURCVHJhbnNhY3Rpb246OnJlbW92ZVJlcXVl
c3QoSURCUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBBU1NFUlQoY2FuQ3VycmVudFRocmVhZEFj
Y2Vzc1RocmVhZExvY2FsRGF0YShtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSkpOworICAgIGlm
IChtX2N1cnJlbnRseUNvbXBsZXRpbmdSZXF1ZXN0ID09ICZyZXF1ZXN0KQorICAgICAgICByZXR1
cm47CisKICAgICBtX29wZW5SZXF1ZXN0cy5yZW1vdmUoJnJlcXVlc3QpOwogCiAgICAgYXV0b0Nv
bW1pdCgpOwogfQogCi12b2lkIElEQlRyYW5zYWN0aW9uOjpzY2hlZHVsZU9wZXJhdGlvbihSZWY8
SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbj4mJiBvcGVyYXRpb24pCit2b2lkIElEQlRy
YW5zYWN0aW9uOjpzY2hlZHVsZU9wZXJhdGlvbihSZWY8SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9w
ZXJhdGlvbj4mJiBvcGVyYXRpb24sIElzV3JpdGVPcGVyYXRpb24gaXNXcml0ZU9wZXJhdGlvbikK
IHsKICAgICBBU1NFUlQoIW1fdHJhbnNhY3Rpb25PcGVyYXRpb25NYXAuY29udGFpbnMob3BlcmF0
aW9uLT5pZGVudGlmaWVyKCkpKTsKICAgICBBU1NFUlQoY2FuQ3VycmVudFRocmVhZEFjY2Vzc1Ro
cmVhZExvY2FsRGF0YShtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSkpOwogCisgICAgaWYgKGlz
V3JpdGVPcGVyYXRpb24gPT0gSXNXcml0ZU9wZXJhdGlvbjo6WWVzKQorICAgICAgICBtX2xhc3RX
cml0ZU9wZXJhdGlvbklEID0gb3BlcmF0aW9uLT5vcGVyYXRpb25JRCgpOworCiAgICAgYXV0byBp
ZGVudGlmaWVyID0gb3BlcmF0aW9uLT5pZGVudGlmaWVyKCk7CiAgICAgbV9wZW5kaW5nVHJhbnNh
Y3Rpb25PcGVyYXRpb25RdWV1ZS5hcHBlbmQob3BlcmF0aW9uLmNvcHlSZWYoKSk7CiAgICAgbV90
cmFuc2FjdGlvbk9wZXJhdGlvbk1hcC5zZXQoaWRlbnRpZmllciwgV1RGTW92ZShvcGVyYXRpb24p
KTsKQEAgLTM5OCw3ICszOTYsMTAgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6b3BlcmF0aW9uQ29t
cGxldGVkT25TZXJ2ZXIoY29uc3QgSURCUmVzdWx0RGF0YSYgZGF0YSwgSURCQ2wKICAgICBBU1NF
UlQoY2FuQ3VycmVudFRocmVhZEFjY2Vzc1RocmVhZExvY2FsRGF0YShtX2RhdGFiYXNlLT5vcmln
aW5UaHJlYWQoKSkpOwogICAgIEFTU0VSVChjYW5DdXJyZW50VGhyZWFkQWNjZXNzVGhyZWFkTG9j
YWxEYXRhKG9wZXJhdGlvbi5vcmlnaW5UaHJlYWQoKSkpOwogCi0gICAgbV9jb21wbGV0ZWRPblNl
cnZlclF1ZXVlLmFwcGVuZCh7ICZvcGVyYXRpb24sIGRhdGEgfSk7CisgICAgaWYgKCFtX3RyYW5z
YWN0aW9uT3BlcmF0aW9uTWFwLmNvbnRhaW5zKG9wZXJhdGlvbi5pZGVudGlmaWVyKCkpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBtX3RyYW5zYWN0aW9uT3BlcmF0aW9uUmVzdWx0TWFwLnNldCgm
b3BlcmF0aW9uLCBJREJSZXN1bHREYXRhKGRhdGEpKTsKIAogICAgIGlmICghbV9jdXJyZW50bHlD
b21wbGV0aW5nUmVxdWVzdCkKICAgICAgICAgaGFuZGxlT3BlcmF0aW9uc0NvbXBsZXRlZE9uU2Vy
dmVyKCk7CkBAIC00MDYsMTIgKzQwNywxNSBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpvcGVyYXRp
b25Db21wbGV0ZWRPblNlcnZlcihjb25zdCBJREJSZXN1bHREYXRhJiBkYXRhLCBJREJDbAogCiB2
b2lkIElEQlRyYW5zYWN0aW9uOjpoYW5kbGVPcGVyYXRpb25zQ29tcGxldGVkT25TZXJ2ZXIoKQog
ewotICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6Y29tcGxldGVkT3BlcmF0aW9u
VGltZXJGaXJlZCAoJXApIiwgdGhpcyk7CisgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0
aW9uOjpoYW5kbGVPcGVyYXRpb25zQ29tcGxldGVkT25TZXJ2ZXIiKTsKICAgICBBU1NFUlQoY2Fu
Q3VycmVudFRocmVhZEFjY2Vzc1RocmVhZExvY2FsRGF0YShtX2RhdGFiYXNlLT5vcmlnaW5UaHJl
YWQoKSkpOwogCi0gICAgd2hpbGUgKCFtX2NvbXBsZXRlZE9uU2VydmVyUXVldWUuaXNFbXB0eSgp
ICYmICFtX2N1cnJlbnRseUNvbXBsZXRpbmdSZXF1ZXN0KSB7Ci0gICAgICAgIGF1dG8gaXRlcmF0
b3IgPSBtX2NvbXBsZXRlZE9uU2VydmVyUXVldWUudGFrZUZpcnN0KCk7Ci0gICAgICAgIGl0ZXJh
dG9yLmZpcnN0LT5kb0NvbXBsZXRlKGl0ZXJhdG9yLnNlY29uZCk7CisgICAgd2hpbGUgKCFtX3Ry
YW5zYWN0aW9uT3BlcmF0aW9uc0luUHJvZ3Jlc3NRdWV1ZS5pc0VtcHR5KCkgJiYgIW1fY3VycmVu
dGx5Q29tcGxldGluZ1JlcXVlc3QpIHsKKyAgICAgICAgUmVmUHRyPElEQkNsaWVudDo6VHJhbnNh
Y3Rpb25PcGVyYXRpb24+IGN1cnJlbnRPcGVyYXRpb24gPSBtX3RyYW5zYWN0aW9uT3BlcmF0aW9u
c0luUHJvZ3Jlc3NRdWV1ZS5maXJzdCgpOworICAgICAgICBpZiAoIW1fdHJhbnNhY3Rpb25PcGVy
YXRpb25SZXN1bHRNYXAuY29udGFpbnMoY3VycmVudE9wZXJhdGlvbikpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgY3VycmVudE9wZXJhdGlvbi0+ZG9Db21wbGV0ZShtX3RyYW5zYWN0
aW9uT3BlcmF0aW9uUmVzdWx0TWFwLnRha2UoY3VycmVudE9wZXJhdGlvbikpOwogICAgIH0KIH0K
IApAQCAtNjIyLDcgKzYyNiw3IEBAIFJlZjxJREJPYmplY3RTdG9yZT4gSURCVHJhbnNhY3Rpb246
OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYKICAgICAgICAgcHJv
dGVjdGVkVGhpcy0+ZGlkQ3JlYXRlT2JqZWN0U3RvcmVPblNlcnZlcihyZXN1bHQpOwogICAgIH0s
IFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGluZm8gPSBpbmZvLmlzb2xhdGVkQ29w
eSgpXSAoYXV0byYgb3BlcmF0aW9uKSB7CiAgICAgICAgIHByb3RlY3RlZFRoaXMtPmNyZWF0ZU9i
amVjdFN0b3JlT25TZXJ2ZXIob3BlcmF0aW9uLCBpbmZvKTsKLSAgICB9KSk7CisgICAgfSksIElz
V3JpdGVPcGVyYXRpb246Olllcyk7CiAKICAgICByZXR1cm4gKnJhd09iamVjdFN0b3JlOwogfQpA
QCAtNjY0LDcgKzY2OCw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OnJlbmFtZU9iamVjdFN0b3Jl
KElEQk9iamVjdFN0b3JlJiBvYmplY3RTdG9yZSwgY29uc3QgU3RyaW5nCiAgICAgICAgIHByb3Rl
Y3RlZFRoaXMtPmRpZFJlbmFtZU9iamVjdFN0b3JlT25TZXJ2ZXIocmVzdWx0KTsKICAgICB9LCBb
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIG5l
d05hbWUgPSBuZXdOYW1lLmlzb2xhdGVkQ29weSgpXSAoYXV0byYgb3BlcmF0aW9uKSB7CiAgICAg
ICAgIHByb3RlY3RlZFRoaXMtPnJlbmFtZU9iamVjdFN0b3JlT25TZXJ2ZXIob3BlcmF0aW9uLCBv
YmplY3RTdG9yZUlkZW50aWZpZXIsIG5ld05hbWUpOwotICAgIH0pKTsKKyAgICB9KSwgSXNXcml0
ZU9wZXJhdGlvbjo6WWVzKTsKIAogICAgIG1fcmVmZXJlbmNlZE9iamVjdFN0b3Jlcy5zZXQobmV3
TmFtZSwgbV9yZWZlcmVuY2VkT2JqZWN0U3RvcmVzLnRha2Uob2JqZWN0U3RvcmUuaW5mbygpLm5h
bWUoKSkpOwogfQpAQCAtNjk5LDcgKzcwMyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJREJJbmRleD4g
SURCVHJhbnNhY3Rpb246OmNyZWF0ZUluZGV4KElEQk9iamVjdFN0b3JlJiBvYmplY3RTdG9yCiAg
ICAgICAgIHByb3RlY3RlZFRoaXMtPmRpZENyZWF0ZUluZGV4T25TZXJ2ZXIocmVzdWx0KTsKICAg
ICB9LCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBpbmZvID0gaW5mby5pc29sYXRl
ZENvcHkoKV0gKGF1dG8mIG9wZXJhdGlvbikgewogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5jcmVh
dGVJbmRleE9uU2VydmVyKG9wZXJhdGlvbiwgaW5mbyk7Ci0gICAgfSkpOworICAgIH0pLCBJc1dy
aXRlT3BlcmF0aW9uOjpZZXMpOwogCiAgICAgcmV0dXJuIG1ha2VVbmlxdWU8SURCSW5kZXg+KCpz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGluZm8sIG9iamVjdFN0b3JlKTsKIH0KQEAgLTc1Myw3
ICs3NTcsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpyZW5hbWVJbmRleChJREJJbmRleCYgaW5k
ZXgsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSkKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGlkUmVu
YW1lSW5kZXhPblNlcnZlcihyZXN1bHQpOwogICAgIH0sIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhJZGVudGlmaWVyLCBuZXdOYW1l
ID0gbmV3TmFtZS5pc29sYXRlZENvcHkoKV0gKGF1dG8mIG9wZXJhdGlvbikgewogICAgICAgICBw
cm90ZWN0ZWRUaGlzLT5yZW5hbWVJbmRleE9uU2VydmVyKG9wZXJhdGlvbiwgb2JqZWN0U3RvcmVJ
ZGVudGlmaWVyLCBpbmRleElkZW50aWZpZXIsIG5ld05hbWUpOwotICAgIH0pKTsKKyAgICB9KSwg
SXNXcml0ZU9wZXJhdGlvbjo6WWVzKTsKIH0KIAogdm9pZCBJREJUcmFuc2FjdGlvbjo6cmVuYW1l
SW5kZXhPblNlcnZlcihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24s
IGNvbnN0IHVpbnQ2NF90JiBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IHVpbnQ2NF90JiBp
bmRleElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSkKQEAgLTg1Miw3ICs4NTYsMjMg
QEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6aXRlcmF0ZUN1cnNvck9uU2VydmVyKElEQkNsaWVudDo6
VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXIKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJh
bnNhY3Rpb246Oml0ZXJhdGVDdXJzb3JPblNlcnZlciIpOwogICAgIEFTU0VSVChjYW5DdXJyZW50
VGhyZWFkQWNjZXNzVGhyZWFkTG9jYWxEYXRhKG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZCgpKSk7
CisgICAgQVNTRVJUKG9wZXJhdGlvbi5pZGJSZXF1ZXN0KCkpOwogCisgICAgYXV0byogY3Vyc29y
ID0gb3BlcmF0aW9uLmlkYlJlcXVlc3QoKS0+cGVuZGluZ0N1cnNvcigpOworICAgIEFTU0VSVChj
dXJzb3IpOworCisgICAgaWYgKGRhdGEua2V5RGF0YS5pc051bGwoKSAmJiBkYXRhLnByaW1hcnlL
ZXlEYXRhLmlzTnVsbCgpKSB7CisgICAgICAgIGlmIChhdXRvIGdldFJlc3VsdCA9IGN1cnNvci0+
aXRlcmF0ZVdpdGhQcmVmZXRjaGVkUmVjb3JkcyhkYXRhLmNvdW50LCBtX2xhc3RXcml0ZU9wZXJh
dGlvbklEKSkgeworICAgICAgICAgICAgYXV0byByZXN1bHQgPSBJREJSZXN1bHREYXRhOjppdGVy
YXRlQ3Vyc29yU3VjY2VzcyhvcGVyYXRpb24uaWRlbnRpZmllcigpLCBnZXRSZXN1bHQudmFsdWUo
KSk7CisgICAgICAgICAgICBtX2RhdGFiYXNlLT5jb25uZWN0aW9uUHJveHkoKS5pdGVyYXRlQ3Vy
c29yKG9wZXJhdGlvbiwgeyBkYXRhLmtleURhdGEsIGRhdGEucHJpbWFyeUtleURhdGEsIGRhdGEu
Y291bnQsIEluZGV4ZWREQjo6Q3Vyc29ySXRlcmF0ZU9wdGlvbjo6RG9Ob3RSZXBseSB9KTsKKyAg
ICAgICAgICAgIG9wZXJhdGlvbkNvbXBsZXRlZE9uU2VydmVyKHJlc3VsdCwgb3BlcmF0aW9uKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGN1cnNvci0+Y2xl
YXJQcmVmZXRjaGVkUmVjb3JkcygpOworCisgICAgQVNTRVJUKGRhdGEub3B0aW9uID09IEluZGV4
ZWREQjo6Q3Vyc29ySXRlcmF0ZU9wdGlvbjo6UmVwbHkpOwogICAgIG1fZGF0YWJhc2UtPmNvbm5l
Y3Rpb25Qcm94eSgpLml0ZXJhdGVDdXJzb3Iob3BlcmF0aW9uLCBkYXRhKTsKIH0KIApAQCAtMTEy
Niw3ICsxMTQ2LDcgQEAgUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0RGVs
ZXRlUmVjb3JkKEpTR2xvYmFsT2JqZWN0JiBzdGF0ZSwgSURCT2IKICAgICAgICAgcHJvdGVjdGVk
VGhpcy0+ZGlkRGVsZXRlUmVjb3JkT25TZXJ2ZXIocmVxdWVzdC5nZXQoKSwgcmVzdWx0KTsKICAg
ICB9LCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByYW5nZSA9IHJhbmdlLmlzb2xh
dGVkQ29weSgpXSAoYXV0byYgb3BlcmF0aW9uKSB7CiAgICAgICAgIHByb3RlY3RlZFRoaXMtPmRl
bGV0ZVJlY29yZE9uU2VydmVyKG9wZXJhdGlvbiwgcmFuZ2UpOwotICAgIH0pKTsKKyAgICB9KSwg
SXNXcml0ZU9wZXJhdGlvbjo6WWVzKTsKICAgICByZXR1cm4gcmVxdWVzdDsKIH0KIApAQCAtMTE2
NSw3ICsxMTg1LDcgQEAgUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0Q2xl
YXJPYmplY3RTdG9yZShKU0dsb2JhbE9iamVjdCYgc3RhdGUsIEkKICAgICAgICAgcHJvdGVjdGVk
VGhpcy0+ZGlkQ2xlYXJPYmplY3RTdG9yZU9uU2VydmVyKHJlcXVlc3QuZ2V0KCksIHJlc3VsdCk7
CiAgICAgfSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgb2JqZWN0U3RvcmVJZGVu
dGlmaWVyXSAoYXV0byYgb3BlcmF0aW9uKSB7CiAgICAgICAgIHByb3RlY3RlZFRoaXMtPmNsZWFy
T2JqZWN0U3RvcmVPblNlcnZlcihvcGVyYXRpb24sIG9iamVjdFN0b3JlSWRlbnRpZmllcik7Ci0g
ICAgfSkpOworICAgIH0pLCBJc1dyaXRlT3BlcmF0aW9uOjpZZXMpOwogCiAgICAgcmV0dXJuIHJl
cXVlc3Q7CiB9CkBAIC0xMjA1LDcgKzEyMjUsNyBAQCBSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNh
Y3Rpb246OnJlcXVlc3RQdXRPckFkZChKU0dsb2JhbE9iamVjdCYgc3RhdGUsIElEQk9iamVjdAog
ICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kaWRQdXRPckFkZE9uU2VydmVyKHJlcXVlc3QuZ2V0KCks
IHJlc3VsdCk7CiAgICAgfSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwga2V5LCB2
YWx1ZSA9IG1ha2VSZWYodmFsdWUpLCBvdmVyd3JpdGVNb2RlXSAoYXV0byYgb3BlcmF0aW9uKSB7
CiAgICAgICAgIHByb3RlY3RlZFRoaXMtPnB1dE9yQWRkT25TZXJ2ZXIob3BlcmF0aW9uLCBrZXku
Z2V0KCksIHZhbHVlLnB0cigpLCBvdmVyd3JpdGVNb2RlKTsKLSAgICB9KSk7CisgICAgfSksIElz
V3JpdGVPcGVyYXRpb246Olllcyk7CiAKICAgICByZXR1cm4gcmVxdWVzdDsKIH0KQEAgLTEyOTMs
NyArMTMxMyw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0
IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lKQogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kaWREZWxl
dGVPYmplY3RTdG9yZU9uU2VydmVyKHJlc3VsdCk7CiAgICAgfSwgW3Byb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgb2JqZWN0U3RvcmVOYW1lID0gb2JqZWN0U3RvcmVOYW1lLmlzb2xhdGVk
Q29weSgpXSAoYXV0byYgb3BlcmF0aW9uKSB7CiAgICAgICAgIHByb3RlY3RlZFRoaXMtPmRlbGV0
ZU9iamVjdFN0b3JlT25TZXJ2ZXIob3BlcmF0aW9uLCBvYmplY3RTdG9yZU5hbWUpOwotICAgIH0p
KTsKKyAgICB9KSwgSXNXcml0ZU9wZXJhdGlvbjo6WWVzKTsKIH0KIAogdm9pZCBJREJUcmFuc2Fj
dGlvbjo6ZGVsZXRlT2JqZWN0U3RvcmVPblNlcnZlcihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3Bl
cmF0aW9uJiBvcGVyYXRpb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lKQpAQCAtMTMy
Myw3ICsxMzQzLDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGVsZXRlSW5kZXgodWludDY0X3Qg
b2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGkKICAgICAgICAgcHJvdGVjdGVk
VGhpcy0+ZGlkRGVsZXRlSW5kZXhPblNlcnZlcihyZXN1bHQpOwogICAgIH0sIFtwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhOYW1lID0g
aW5kZXhOYW1lLmlzb2xhdGVkQ29weSgpXSAoYXV0byYgb3BlcmF0aW9uKSB7CiAgICAgICAgIHBy
b3RlY3RlZFRoaXMtPmRlbGV0ZUluZGV4T25TZXJ2ZXIob3BlcmF0aW9uLCBvYmplY3RTdG9yZUlk
ZW50aWZpZXIsIGluZGV4TmFtZSk7Ci0gICAgfSkpOworICAgIH0pLCBJc1dyaXRlT3BlcmF0aW9u
OjpZZXMpOwogfQogCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpkZWxldGVJbmRleE9uU2VydmVyKElE
QkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbiwgY29uc3QgdWludDY0X3Qm
IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpbmRleE5hbWUpCkBAIC0xNDc0
LDYgKzE0OTQsMTIgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6YXV0b0NvbW1pdCgpCiAgICAgY29t
bWl0KCk7CiB9CiAKK3VpbnQ2NF90IElEQlRyYW5zYWN0aW9uOjpnZW5lcmF0ZU9wZXJhdGlvbklE
KCkKK3sKKyAgICBzdGF0aWMgc3RkOjphdG9taWM8dWludDY0X3Q+IGN1cnJlbnRPcGVyYXRpb25J
RCgxKTsKKyAgICByZXR1cm4gY3VycmVudE9wZXJhdGlvbklEICs9IDE7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKaW5k
ZXggMzU4YjAxYmMwMTRhYTYxNDQ4YTMxNjU2NTY3ZWNhMmEzNWQyYTMyNi4uZDQxNzczY2NjNWQ2
NWY4MzQ1MDgxYmNkNTdhOGY5ZGFkNmMzNDk3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCkBAIC03MSw2ICs3MSw4IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgUmVmPElEQlRyYW5zYWN0aW9uPiBjcmVhdGUoSURCRGF0YWJhc2UmLCBj
b25zdCBJREJUcmFuc2FjdGlvbkluZm8mKTsKICAgICBzdGF0aWMgUmVmPElEQlRyYW5zYWN0aW9u
PiBjcmVhdGUoSURCRGF0YWJhc2UmLCBjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mLCBJREJPcGVu
REJSZXF1ZXN0Jik7CiAKKyAgICBzdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVPcGVyYXRpb25JRCgp
OworCiAgICAgV0VCQ09SRV9FWFBPUlQgfklEQlRyYW5zYWN0aW9uKCkgZmluYWw7CiAKICAgICAv
LyBJREJUcmFuc2FjdGlvbiBJREwKQEAgLTE2NSw3ICsxNjcsOCBAQCBwcml2YXRlOgogICAgIHZv
aWQgZmluaXNoQWJvcnRPckNvbW1pdCgpOwogICAgIHZvaWQgYWJvcnRJblByb2dyZXNzT3BlcmF0
aW9ucyhjb25zdCBJREJFcnJvciYpOwogCi0gICAgdm9pZCBzY2hlZHVsZU9wZXJhdGlvbihSZWY8
SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbj4mJik7CisgICAgZW51bSBjbGFzcyBJc1dy
aXRlT3BlcmF0aW9uIDogYm9vbCB7IE5vLCBZZXMgfTsKKyAgICB2b2lkIHNjaGVkdWxlT3BlcmF0
aW9uKFJlZjxJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uPiYmLCBJc1dyaXRlT3BlcmF0
aW9uID0gSXNXcml0ZU9wZXJhdGlvbjo6Tm8pOwogICAgIHZvaWQgaGFuZGxlT3BlcmF0aW9uc0Nv
bXBsZXRlZE9uU2VydmVyKCk7CiAgICAgdm9pZCBoYW5kbGVQZW5kaW5nT3BlcmF0aW9ucygpOwog
ICAgIHZvaWQgYXV0b0NvbW1pdCgpOwpAQCAtMjQ0LDggKzI0Nyw4IEBAIHByaXZhdGU6CiAKICAg
ICBEZXF1ZTxSZWZQdHI8SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbj4+IG1fcGVuZGlu
Z1RyYW5zYWN0aW9uT3BlcmF0aW9uUXVldWU7CiAgICAgRGVxdWU8SURCQ2xpZW50OjpUcmFuc2Fj
dGlvbk9wZXJhdGlvbio+IG1fdHJhbnNhY3Rpb25PcGVyYXRpb25zSW5Qcm9ncmVzc1F1ZXVlOwot
ICAgIERlcXVlPHN0ZDo6cGFpcjxSZWZQdHI8SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlv
bj4sIElEQlJlc3VsdERhdGE+PiBtX2NvbXBsZXRlZE9uU2VydmVyUXVldWU7CiAgICAgRGVxdWU8
UmVmUHRyPElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24+PiBtX2Fib3J0UXVldWU7Cisg
ICAgSGFzaE1hcDxSZWZQdHI8SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbj4sIElEQlJl
c3VsdERhdGE+IG1fdHJhbnNhY3Rpb25PcGVyYXRpb25SZXN1bHRNYXA7CiAKICAgICBIYXNoTWFw
PElEQlJlc291cmNlSWRlbnRpZmllciwgUmVmUHRyPElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVy
YXRpb24+PiBtX3RyYW5zYWN0aW9uT3BlcmF0aW9uTWFwOwogCkBAIC0yNTgsNiArMjYxLDggQEAg
cHJpdmF0ZToKIAogICAgIGJvb2wgbV9jb250ZXh0U3RvcHBlZCB7IGZhbHNlIH07CiAgICAgYm9v
bCBtX2RpZERpc3BhdGNoQWJvcnRPckNvbW1pdCB7IGZhbHNlIH07CisKKyAgICB1aW50NjRfdCBt
X2xhc3RXcml0ZU9wZXJhdGlvbklEIHsgMCB9OwogfTsKIAogY2xhc3MgVHJhbnNhY3Rpb25BY3Rp
dmF0b3IgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSW5k
ZXhlZERCLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JbmRleGVkREIuaApp
bmRleCA1MDliYmYyNzhiM2Y5ZjM3NTdmNmYxYjUwNDBlYzc2ZDVkMmM5YTAwLi5iZjMwOGFkYTk2
YTJiMDYwOThkMzZkMmFjNzEwZWQ1YmM2MzI3N2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JbmRleGVkREIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JbmRleGVkREIuaApAQCAtMTA2LDYgKzEwNiwxMSBAQCBlbnVtIGNsYXNz
IEdldEFsbFR5cGUgewogCiBlbnVtIGNsYXNzIENvbm5lY3Rpb25DbG9zZWRPbkJlaGFsZk9mU2Vy
dmVyIDogYm9vbCB7IE5vLCBZZXMgfTsKIAorZW51bSBjbGFzcyBDdXJzb3JJdGVyYXRlT3B0aW9u
IHsKKyAgICBEb05vdFJlcGx5LAorICAgIFJlcGx5LAorfTsKKwogfSAvLyBuYW1lc3BhY2UgSW5k
ZXhlZERCCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uUHJveHkuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Qcm94eS5j
cHAKaW5kZXggNGVjNDQ3ZTI2ZjExZGZhNjJiZjA4MzY4YmYxNGY4NWE4MmVjZjUxMS4uOTU2ZGZh
ZTY0NTE3NDk4ZGUzOGU1NDgzMWI1OTFiNGY2MzU1Yzk1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Qcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Q
cm94eS5jcHAKQEAgLTIzOCw3ICsyMzgsOCBAQCB2b2lkIElEQkNvbm5lY3Rpb25Qcm94eTo6b3Bl
bkN1cnNvcihUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uLCBjb25zdCBJREJDdQogdm9p
ZCBJREJDb25uZWN0aW9uUHJveHk6Oml0ZXJhdGVDdXJzb3IoVHJhbnNhY3Rpb25PcGVyYXRpb24m
IG9wZXJhdGlvbiwgY29uc3QgSURCSXRlcmF0ZUN1cnNvckRhdGEmIGRhdGEpCiB7CiAgICAgY29u
c3QgSURCUmVxdWVzdERhdGEgcmVxdWVzdERhdGEgeyBvcGVyYXRpb24gfTsKLSAgICBzYXZlT3Bl
cmF0aW9uKG9wZXJhdGlvbik7CisgICAgaWYgKGRhdGEub3B0aW9uICE9IEluZGV4ZWREQjo6Q3Vy
c29ySXRlcmF0ZU9wdGlvbjo6RG9Ob3RSZXBseSkKKyAgICAgICAgc2F2ZU9wZXJhdGlvbihvcGVy
YXRpb24pOwogCiAgICAgY2FsbENvbm5lY3Rpb25Pbk1haW5UaHJlYWQoJklEQkNvbm5lY3Rpb25U
b1NlcnZlcjo6aXRlcmF0ZUN1cnNvciwgcmVxdWVzdERhdGEsIGRhdGEpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3Bl
cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFu
c2FjdGlvbk9wZXJhdGlvbi5jcHAKaW5kZXggOGUxZGUwNmQ3MWU4ZjBiMjIzZDY4NmU1ZTFhOGEy
MjA5Yjc0Mzg0My4uYWE1OTA2ZjQ3NWU1ZWUwYWFjZGYxMWYxN2QzZWE2OGUyOGI1MTUyOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0
aW9uT3BlcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9j
bGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uY3BwCkBAIC00NCw2ICs0NCw3IEBAIFRyYW5zYWN0
aW9uT3BlcmF0aW9uOjpUcmFuc2FjdGlvbk9wZXJhdGlvbihJREJUcmFuc2FjdGlvbiYgdHJhbnNh
Y3Rpb24sIElEQlJlcXVlCiAgICAgaWYgKGF1dG8qIGN1cnNvciA9IHJlcXVlc3QucGVuZGluZ0N1
cnNvcigpKQogICAgICAgICBtX2N1cnNvcklkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElEQlJlc291
cmNlSWRlbnRpZmllcj4oY3Vyc29yLT5pbmZvKCkuaWRlbnRpZmllcigpKTsKIAorICAgIHJlcXVl
c3Quc2V0VHJhbnNhY3Rpb25PcGVyYXRpb25JRChtX29wZXJhdGlvbklEKTsKICAgICBtX2lkYlJl
cXVlc3QgPSAmcmVxdWVzdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uaAppbmRleCBl
MmYxNDhhZWZiYjQzNDMyYTYxYzg0NjJiYjE0ZjM5ZTVhNzYwOGE2Li43YWI1NzU1NTcwOGVjNzRi
OWQxNmQxNTZjZTllOTMyNTY3ODdjZDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uaApA
QCAtMTEyLDEwICsxMTIsMTMgQEAgcHVibGljOgogICAgIGJvb2wgbmV4dFJlcXVlc3RDYW5Hb1Rv
U2VydmVyKCkgY29uc3QgeyByZXR1cm4gbV9uZXh0UmVxdWVzdENhbkdvVG9TZXJ2ZXIgJiYgbV9p
ZGJSZXF1ZXN0OyB9CiAgICAgdm9pZCBzZXROZXh0UmVxdWVzdENhbkdvVG9TZXJ2ZXIoYm9vbCBu
ZXh0UmVxdWVzdENhbkdvVG9TZXJ2ZXIpIHsgbV9uZXh0UmVxdWVzdENhbkdvVG9TZXJ2ZXIgPSBu
ZXh0UmVxdWVzdENhbkdvVG9TZXJ2ZXI7IH0KIAorICAgIHVpbnQ2NF90IG9wZXJhdGlvbklEKCkg
Y29uc3QgeyByZXR1cm4gbV9vcGVyYXRpb25JRDsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgVHJhbnNh
Y3Rpb25PcGVyYXRpb24oSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQogICAgICAgICA6IG1f
dHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pCiAgICAgICAgICwgbV9pZGVudGlmaWVyKHRyYW5zYWN0
aW9uLmNvbm5lY3Rpb25Qcm94eSgpKQorICAgICAgICAsIG1fb3BlcmF0aW9uSUQodHJhbnNhY3Rp
b24uZ2VuZXJhdGVPcGVyYXRpb25JRCgpKQogICAgIHsKICAgICB9CiAKQEAgLTE0Miw2ICsxNDUs
OCBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxJREJSZXF1ZXN0PiBtX2lkYlJlcXVlc3Q7CiAgICAg
Ym9vbCBtX25leHRSZXF1ZXN0Q2FuR29Ub1NlcnZlciB7IHRydWUgfTsKICAgICBib29sIG1fZGlk
Q29tcGxldGUgeyBmYWxzZSB9OworCisgICAgdWludDY0X3QgbV9vcGVyYXRpb25JRCB7IDAgfTsK
IH07CiAKIGNsYXNzIFRyYW5zYWN0aW9uT3BlcmF0aW9uSW1wbCBmaW5hbCA6IHB1YmxpYyBUcmFu
c2FjdGlvbk9wZXJhdGlvbiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvSURCQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvSURCQmFja2luZ1N0b3JlLmgKaW5kZXggYzQyNjQwYjNiZjZjNjBi
MDg3ZjI0NWVmZDNhZjAxYzM2NjJmYTI5ZS4uYTdkZjdhMWRjZDYwNzVkZGE0NTEwOTBhYTkzMDM3
YWU4MjFjZGJmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL0lEQkJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9JREJCYWNraW5nU3RvcmUuaApAQCAtODUsNyArODUsNiBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBJREJFcnJvciBtYXliZVVwZGF0ZUtleUdlbmVyYXRvck51bWJlcihjb25z
dCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qg
b2JqZWN0U3RvcmVJZGVudGlmaWVyLCBkb3VibGUgbmV3S2V5TnVtYmVyKSA9IDA7CiAgICAgdmly
dHVhbCBJREJFcnJvciBvcGVuQ3Vyc29yKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJh
bnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJDdXJzb3JJbmZvJiwgSURCR2V0UmVzdWx0JiBv
dXRSZXN1bHQpID0gMDsKICAgICB2aXJ0dWFsIElEQkVycm9yIGl0ZXJhdGVDdXJzb3IoY29uc3Qg
SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQlJl
c291cmNlSWRlbnRpZmllciYgY3Vyc29ySWRlbnRpZmllciwgY29uc3QgSURCSXRlcmF0ZUN1cnNv
ckRhdGEmLCBJREJHZXRSZXN1bHQmIG91dFJlc3VsdCkgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBw
cmVmZXRjaEN1cnNvcihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRl
bnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiBjdXJzb3JJZGVudGlmaWVyKSA9
IDA7CiAKICAgICB2aXJ0dWFsIElEQk9iamVjdFN0b3JlSW5mbyogaW5mb0Zvck9iamVjdFN0b3Jl
KHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBk
ZWxldGVCYWNraW5nU3RvcmUoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmgKaW5k
ZXggMzc4ZDJhNWY3YTBkNjczZjI0MzI5MzgxMDc0ZWU4YjE5NTgxMWJlZC4uNzRkYzk1MDk0NWE2
ZWY0YjhlYjU3MmE4YmQ0ZDE1ZGRhNTJiOGZiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3Rv
cmUuaApAQCAtNzQsNyArNzQsNiBAQCBwcml2YXRlOgogICAgIElEQkVycm9yIG1heWJlVXBkYXRl
S2V5R2VuZXJhdG9yTnVtYmVyKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rp
b25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGRvdWJsZSBuZXdL
ZXlOdW1iZXIpIGZpbmFsOwogICAgIElEQkVycm9yIG9wZW5DdXJzb3IoY29uc3QgSURCUmVzb3Vy
Y2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQkN1cnNvckluZm8m
LCBJREJHZXRSZXN1bHQmIG91dFJlc3VsdCkgZmluYWw7CiAgICAgSURCRXJyb3IgaXRlcmF0ZUN1
cnNvcihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwg
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiBjdXJzb3JJZGVudGlmaWVyLCBjb25zdCBJREJJ
dGVyYXRlQ3Vyc29yRGF0YSYsIElEQkdldFJlc3VsdCYgb3V0UmVzdWx0KSBmaW5hbDsKLSAgICBi
b29sIHByZWZldGNoQ3Vyc29yKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYsIGNvbnN0IElE
QlJlc291cmNlSWRlbnRpZmllciYpIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBJREJP
YmplY3RTdG9yZUluZm8qIGluZm9Gb3JPYmplY3RTdG9yZSh1aW50NjRfdCBvYmplY3RTdG9yZUlk
ZW50aWZpZXIpIGZpbmFsOwogICAgIHZvaWQgZGVsZXRlQmFja2luZ1N0b3JlKCkgZmluYWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRl
SURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDNmYTEwMmRiNjU5MjgwZDdkNmEw
NTBjZTFlYTdmYzQwODAyYmZkZDcuLjU3M2JlYzc3ZTJmMmYzZDFjMTIxMjFiYzU4ZmVjYzNmY2Yx
YTNlMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCkBAIC0xMzY2LDggKzEz
NjYsOCBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZUluZGV4KGNvbnN0
IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhYwogCiAgICAgd2hpbGUgKCFjdXJzb3ItPmN1
cnJlbnRLZXkoKS5pc051bGwoKSkgewogICAgICAgICBhdXRvJiBrZXkgPSBjdXJzb3ItPmN1cnJl
bnRLZXkoKTsKLSAgICAgICAgYXV0byogdmFsdWUgPSBjdXJzb3ItPmN1cnJlbnRWYWx1ZSgpOwot
ICAgICAgICBUaHJlYWRTYWZlRGF0YUJ1ZmZlciB2YWx1ZUJ1ZmZlciA9IHZhbHVlID8gdmFsdWUt
PmRhdGEoKSA6IFRocmVhZFNhZmVEYXRhQnVmZmVyKCk7CisgICAgICAgIGF1dG8gdmFsdWUgPSBj
dXJzb3ItPmN1cnJlbnRWYWx1ZSgpOworICAgICAgICBUaHJlYWRTYWZlRGF0YUJ1ZmZlciB2YWx1
ZUJ1ZmZlciA9IHZhbHVlLmRhdGEoKTsKIAogICAgICAgICBBU1NFUlQoY3Vyc29yLT5jdXJyZW50
UmVjb3JkUm93SUQoKSk7CiAKQEAgLTIzNTQsNyArMjM1NCw3IEBAIElEQkVycm9yIFNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6Z2V0QWxsSW5kZXhSZWNvcmRzKGNvbnN0IElEQlJlc291cmNlSWRlbnRp
ZmllciYKICAgICAgICAgSURCS2V5RGF0YSBrZXlDb3B5ID0gY3Vyc29yLT5jdXJyZW50UHJpbWFy
eUtleSgpOwogICAgICAgICByZXN1bHQuYWRkS2V5KFdURk1vdmUoa2V5Q29weSkpOwogICAgICAg
ICBpZiAoZ2V0QWxsUmVjb3Jkc0RhdGEuZ2V0QWxsVHlwZSA9PSBJbmRleGVkREI6OkdldEFsbFR5
cGU6OlZhbHVlcykKLSAgICAgICAgICAgIHJlc3VsdC5hZGRWYWx1ZShjdXJzb3ItPmN1cnJlbnRW
YWx1ZSgpID8gKmN1cnNvci0+Y3VycmVudFZhbHVlKCkgOiBJREJWYWx1ZSgpKTsKKyAgICAgICAg
ICAgIHJlc3VsdC5hZGRWYWx1ZShJREJWYWx1ZShjdXJzb3ItPmN1cnJlbnRWYWx1ZSgpKSk7CiAK
ICAgICAgICAgKytjdXJyZW50Q291bnQ7CiAgICAgICAgIGN1cnNvci0+YWR2YW5jZSgxKTsKQEAg
LTI0MDEsNyArMjQwMSw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0SW5k
ZXhSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuCiAgICAgICAgIGVsc2Ug
ewogICAgICAgICAgICAgYXV0byogb2JqZWN0U3RvcmVJbmZvID0gaW5mb0Zvck9iamVjdFN0b3Jl
KG9iamVjdFN0b3JlSUQpOwogICAgICAgICAgICAgQVNTRVJUKG9iamVjdFN0b3JlSW5mbyk7Ci0g
ICAgICAgICAgICBnZXRSZXN1bHQgPSB7IGN1cnNvci0+Y3VycmVudFByaW1hcnlLZXkoKSwgY3Vy
c29yLT5jdXJyZW50UHJpbWFyeUtleSgpLCBjdXJzb3ItPmN1cnJlbnRWYWx1ZSgpID8gKmN1cnNv
ci0+Y3VycmVudFZhbHVlKCkgOiBJREJWYWx1ZSgpLCBvYmplY3RTdG9yZUluZm8tPmtleVBhdGgo
KSB9OworICAgICAgICAgICAgZ2V0UmVzdWx0ID0geyBjdXJzb3ItPmN1cnJlbnRQcmltYXJ5S2V5
KCksIGN1cnNvci0+Y3VycmVudFByaW1hcnlLZXkoKSwgSURCVmFsdWUoY3Vyc29yLT5jdXJyZW50
VmFsdWUoKSksIG9iamVjdFN0b3JlSW5mby0+a2V5UGF0aCgpIH07CiAgICAgICAgIH0KICAgICB9
CiAKQEAgLTI3MjEsMjYgKzI3MjEsMTggQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3Jl
OjppdGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnMKICAgICAg
ICAgfQogICAgIH0KIAotICAgIGF1dG8qIG9iamVjdFN0b3JlSW5mbyA9IGluZm9Gb3JPYmplY3RT
dG9yZShjdXJzb3ItPm9iamVjdFN0b3JlSUQoKSk7Ci0gICAgQVNTRVJUKG9iamVjdFN0b3JlSW5m
byk7Ci0gICAgY3Vyc29yLT5jdXJyZW50RGF0YShyZXN1bHQsIG9iamVjdFN0b3JlSW5mby0+a2V5
UGF0aCgpKTsKLSAgICByZXR1cm4gSURCRXJyb3IgeyB9OwotfQotCi1ib29sIFNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6cHJlZmV0Y2hDdXJzb3IoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0
cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgY3Vyc29y
SWRlbnRpZmllcikKLXsKLSAgICBMT0coSW5kZXhlZERCLCAiU1FMaXRlSURCQmFja2luZ1N0b3Jl
OjpwcmVmZXRjaEN1cnNvciIpOwotCi0gICAgQVNTRVJUKG1fc3FsaXRlREIpOwotICAgIEFTU0VS
VChtX3NxbGl0ZURCLT5pc09wZW4oKSk7CisgICAgaWYgKGRhdGEub3B0aW9uID09IEluZGV4ZWRE
Qjo6Q3Vyc29ySXRlcmF0ZU9wdGlvbjo6UmVwbHkpIHsKKyAgICAgICAgYXV0byogb2JqZWN0U3Rv
cmVJbmZvID0gaW5mb0Zvck9iamVjdFN0b3JlKGN1cnNvci0+b2JqZWN0U3RvcmVJRCgpKTsKKyAg
ICAgICAgQVNTRVJUKG9iamVjdFN0b3JlSW5mbyk7CiAKLSAgICBhdXRvKiBjdXJzb3IgPSBtX2N1
cnNvcnMuZ2V0KGN1cnNvcklkZW50aWZpZXIpOwotICAgIGlmICghY3Vyc29yIHx8ICFjdXJzb3It
PnRyYW5zYWN0aW9uKCkgfHwgIWN1cnNvci0+dHJhbnNhY3Rpb24oKS0+aW5Qcm9ncmVzcygpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGJvb2wgc2hvdWxkUHJlZmV0Y2ggPSBrZXku
aXNOdWxsKCkgJiYgcHJpbWFyeUtleS5pc051bGwoKTsKKyAgICAgICAgaWYgKHNob3VsZFByZWZl
dGNoKQorICAgICAgICAgICAgY3Vyc29yLT5wcmVmZXRjaCgpOwogCi0gICAgQVNTRVJUX1VOVVNF
RCh0cmFuc2FjdGlvbklkZW50aWZpZXIsIGN1cnNvci0+dHJhbnNhY3Rpb24oKS0+dHJhbnNhY3Rp
b25JZGVudGlmaWVyKCkgPT0gdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKKyAgICAgICAgY3Vyc29y
LT5jdXJyZW50RGF0YShyZXN1bHQsIG9iamVjdFN0b3JlSW5mby0+a2V5UGF0aCgpLCBzaG91bGRQ
cmVmZXRjaCA/IFNRTGl0ZUlEQkN1cnNvcjo6U2hvdWxkSW5jbHVkZVByZWZldGNoZWRSZWNvcmRz
OjpZZXMgOiBTUUxpdGVJREJDdXJzb3I6OlNob3VsZEluY2x1ZGVQcmVmZXRjaGVkUmVjb3Jkczo6
Tm8pOworICAgIH0KIAotICAgIHJldHVybiBjdXJzb3ItPnByZWZldGNoKCk7CisgICAgcmV0dXJu
IElEQkVycm9yIHsgfTsKIH0KIAogSURCT2JqZWN0U3RvcmVJbmZvKiBTUUxpdGVJREJCYWNraW5n
U3RvcmU6OmluZm9Gb3JPYmplY3RTdG9yZSh1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FM
aXRlSURCQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmgKaW5kZXggY2UyOWQyY2ZjZmI0MWZhYjZiZDMw
NWJiZTJkY2YwNDU2ZmI2ZDgyZS4uNDk0MGMxNTE2MTEwNGFkOTY5NThmZDIzNDM3ZGFjNjk5NDBj
YzcxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaApAQCAtODAsNyArODAsNiBAQCBw
dWJsaWM6CiAgICAgSURCRXJyb3IgbWF5YmVVcGRhdGVLZXlHZW5lcmF0b3JOdW1iZXIoY29uc3Qg
SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9i
amVjdFN0b3JlSWRlbnRpZmllciwgZG91YmxlIG5ld0tleU51bWJlcikgZmluYWw7CiAgICAgSURC
RXJyb3Igb3BlbkN1cnNvcihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9u
SWRlbnRpZmllciwgY29uc3QgSURCQ3Vyc29ySW5mbyYsIElEQkdldFJlc3VsdCYgb3V0UmVzdWx0
KSBmaW5hbDsKICAgICBJREJFcnJvciBpdGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJlc291cmNlSWRl
bnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZp
ZXImIGN1cnNvcklkZW50aWZpZXIsIGNvbnN0IElEQkl0ZXJhdGVDdXJzb3JEYXRhJiwgSURCR2V0
UmVzdWx0JiBvdXRSZXN1bHQpIGZpbmFsOwotICAgIGJvb2wgcHJlZmV0Y2hDdXJzb3IoY29uc3Qg
SURCUmVzb3VyY2VJZGVudGlmaWVyJiwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJikgZmlu
YWw7CiAKICAgICBJREJPYmplY3RTdG9yZUluZm8qIGluZm9Gb3JPYmplY3RTdG9yZSh1aW50NjRf
dCBvYmplY3RTdG9yZUlkZW50aWZpZXIpIGZpbmFsOwogICAgIHZvaWQgZGVsZXRlQmFja2luZ1N0
b3JlKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwCmluZGV4IGIzNzcxNzM3NTc0ZTIyMzY2
MTdkMjQ4N2M2OTBlMTIwZWFkZDcwMGIuLmUxOWFhMTNlYjAxZTU1YmIwY2Y4MDgxZjc0M2JhYTcy
M2E2MzI1NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9TUUxpdGVJREJDdXJzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwCkBAIC00Miw4ICs0Miw4IEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgSURCU2VydmVyIHsKIAotc3RhdGljIGNvbnN0IHNp
emVfdCBwcmVmZXRjaExpbWl0ID0gMTI4Owotc3RhdGljIGNvbnN0IHNpemVfdCBwcmVmZXRjaFNp
emVMaW1pdCA9IDggKiBNQjsKK3N0YXRpYyBjb25zdCBzaXplX3QgcHJlZmV0Y2hMaW1pdCA9IDI1
NjsKK3N0YXRpYyBjb25zdCBzaXplX3QgcHJlZmV0Y2hTaXplTGltaXQgPSAxICogTUI7CiAKIHN0
ZDo6dW5pcXVlX3B0cjxTUUxpdGVJREJDdXJzb3I+IFNRTGl0ZUlEQkN1cnNvcjo6bWF5YmVDcmVh
dGUoU1FMaXRlSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBjb25zdCBJREJDdXJzb3JJbmZv
JiBpbmZvKQogewpAQCAtMTAyLDcgKzEwMiw3IEBAIFNRTGl0ZUlEQkN1cnNvcjo6flNRTGl0ZUlE
QkN1cnNvcigpCiAgICAgICAgIG1fdHJhbnNhY3Rpb24tPmNsb3NlQ3Vyc29yKCp0aGlzKTsKIH0K
IAotdm9pZCBTUUxpdGVJREJDdXJzb3I6OmN1cnJlbnREYXRhKElEQkdldFJlc3VsdCYgcmVzdWx0
LCBjb25zdCBPcHRpb25hbDxJREJLZXlQYXRoPiYga2V5UGF0aCkKK3ZvaWQgU1FMaXRlSURCQ3Vy
c29yOjpjdXJyZW50RGF0YShJREJHZXRSZXN1bHQmIHJlc3VsdCwgY29uc3QgT3B0aW9uYWw8SURC
S2V5UGF0aD4mIGtleVBhdGgsIFNob3VsZEluY2x1ZGVQcmVmZXRjaGVkUmVjb3JkcyBzaG91bGRJ
bmNsdWRlUHJlZmV0Y2hlZFJlY29yZHMpCiB7CiAgICAgQVNTRVJUKCFtX2ZldGNoZWRSZWNvcmRz
LmlzRW1wdHkoKSk7CiAKQEAgLTExMyw3ICsxMTMsMjUgQEAgdm9pZCBTUUxpdGVJREJDdXJzb3I6
OmN1cnJlbnREYXRhKElEQkdldFJlc3VsdCYgcmVzdWx0LCBjb25zdCBPcHRpb25hbDxJREJLZXlQ
YXQKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHJlc3VsdCA9IHsgY3VycmVudFJlY29y
ZC5yZWNvcmQua2V5LCBjdXJyZW50UmVjb3JkLnJlY29yZC5wcmltYXJ5S2V5LCBjdXJyZW50UmVj
b3JkLnJlY29yZC52YWx1ZSA/ICpjdXJyZW50UmVjb3JkLnJlY29yZC52YWx1ZSA6IElEQlZhbHVl
KCksIGtleVBhdGh9OworICAgIGlmIChzaG91bGRJbmNsdWRlUHJlZmV0Y2hlZFJlY29yZHMgPT0g
U2hvdWxkSW5jbHVkZVByZWZldGNoZWRSZWNvcmRzOjpObykgeworICAgICAgICByZXN1bHQgPSB7
IGN1cnJlbnRSZWNvcmQucmVjb3JkLmtleSwgY3VycmVudFJlY29yZC5yZWNvcmQucHJpbWFyeUtl
eSwgSURCVmFsdWUoY3VycmVudFJlY29yZC5yZWNvcmQudmFsdWUpLCBrZXlQYXRoIH07CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBWZWN0b3I8SURCQ3Vyc29yUmVjb3JkPiBwcmVmZXRj
aGVkUmVjb3JkczsKKyAgICBwcmVmZXRjaGVkUmVjb3Jkcy5yZXNlcnZlQ2FwYWNpdHkobV9mZXRj
aGVkUmVjb3Jkcy5zaXplKCkpOworICAgIGZvciAoYXV0byYgcmVjb3JkIDogbV9mZXRjaGVkUmVj
b3JkcykgeworICAgICAgICBpZiAocmVjb3JkLmlzVGVybWluYWxSZWNvcmQoKSkKKyAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgIHByZWZldGNoZWRSZWNvcmRzLmFwcGVuZChyZWNvcmQucmVj
b3JkKTsKKyAgICB9CisKKyAgICAvLyBGaXJzdCByZWNvcmQgd2lsbCBiZSByZXR1cm5lZCBhcyBj
dXJyZW50IHJlY29yZC4KKyAgICBpZiAoIXByZWZldGNoZWRSZWNvcmRzLmlzRW1wdHkoKSkKKyAg
ICAgICAgcHJlZmV0Y2hlZFJlY29yZHMucmVtb3ZlKDApOworCisgICAgcmVzdWx0ID0geyBjdXJy
ZW50UmVjb3JkLnJlY29yZC5rZXksIGN1cnJlbnRSZWNvcmQucmVjb3JkLnByaW1hcnlLZXksIElE
QlZhbHVlKGN1cnJlbnRSZWNvcmQucmVjb3JkLnZhbHVlKSwga2V5UGF0aCwgV1RGTW92ZShwcmVm
ZXRjaGVkUmVjb3JkcykgfTsKIH0KIAogc3RhdGljIFN0cmluZyBidWlsZFByZUluZGV4U3RhdGVt
ZW50KGJvb2wgaXNEaXJlY3Rpb25OZXh0KQpAQCAtMjYzLDYgKzI4MSw4IEBAIHZvaWQgU1FMaXRl
SURCQ3Vyc29yOjpvYmplY3RTdG9yZVJlY29yZHNDaGFuZ2VkKCkKICAgICAvLyBXZSBhbHNvIG5l
ZWQgdG8gdGhyb3cgYXdheSBhbnkgZmV0Y2hlZCByZWNvcmRzIGFzIHRoZXkgbWF5IG5vIGxvbmdl
ciBiZSB2YWxpZC4KICAgICBtX2ZldGNoZWRSZWNvcmRzLmNsZWFyKCk7CiAgICAgbV9mZXRjaGVk
UmVjb3Jkc1NpemUgPSAwOworCisgICAgbV9wcmVmZXRjaENvdW50ID0gMDsKIH0KIAogdm9pZCBT
UUxpdGVJREJDdXJzb3I6OnJlc2V0QW5kUmViaW5kU3RhdGVtZW50KCkKQEAgLTM1OSwxNyArMzc5
LDMyIEBAIGJvb2wgU1FMaXRlSURCQ3Vyc29yOjpyZXNldEFuZFJlYmluZFByZUluZGV4U3RhdGVt
ZW50SWZOZWNlc3NhcnkoKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFNRTGl0ZUlEQkN1
cnNvcjo6cHJlZmV0Y2goKQorYm9vbCBTUUxpdGVJREJDdXJzb3I6OnByZWZldGNoT25lUmVjb3Jk
KCkKIHsKLSAgICBMT0coSW5kZXhlZERCLCAiU1FMaXRlSURCQ3Vyc29yOjpwcmVmZXRjaCgpIC0g
Q3Vyc29yIGFscmVhZHkgaGFzICV6dSBmZXRjaGVkIHJlY29yZHMiLCBtX2ZldGNoZWRSZWNvcmRz
LnNpemUoKSk7CisgICAgTE9HKEluZGV4ZWREQiwgIlNRTGl0ZUlEQkN1cnNvcjo6cHJlZmV0Y2hP
bmVSZWNvcmQoKSAtIEN1cnNvciBhbHJlYWR5IGhhcyAlenUgZmV0Y2hlZCByZWNvcmRzIiwgbV9m
ZXRjaGVkUmVjb3Jkcy5zaXplKCkpOwogCiAgICAgaWYgKG1fZmV0Y2hlZFJlY29yZHNTaXplID49
IHByZWZldGNoU2l6ZUxpbWl0IHx8IG1fZmV0Y2hlZFJlY29yZHMuaXNFbXB0eSgpIHx8IG1fZmV0
Y2hlZFJlY29yZHMuc2l6ZSgpID49IHByZWZldGNoTGltaXQgfHwgbV9mZXRjaGVkUmVjb3Jkcy5s
YXN0KCkuaXNUZXJtaW5hbFJlY29yZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBt
X2N1cnJlbnRLZXlGb3JVbmlxdWVuZXNzID0gbV9mZXRjaGVkUmVjb3Jkcy5sYXN0KCkucmVjb3Jk
LmtleTsKLSAgICBmZXRjaCgpOwogCi0gICAgcmV0dXJuIG1fZmV0Y2hlZFJlY29yZHMuc2l6ZSgp
IDwgcHJlZmV0Y2hMaW1pdCAmJiBtX2ZldGNoZWRSZWNvcmRzU2l6ZSA8IHByZWZldGNoU2l6ZUxp
bWl0OworICAgIHJldHVybiBmZXRjaCgpICYmIG1fZmV0Y2hlZFJlY29yZHMuc2l6ZSgpIDwgcHJl
ZmV0Y2hMaW1pdCAmJiBtX2ZldGNoZWRSZWNvcmRzU2l6ZSA8IHByZWZldGNoU2l6ZUxpbWl0Owor
fQorCit2b2lkIFNRTGl0ZUlEQkN1cnNvcjo6aW5jcmVhc2VDb3VudFRvUHJlZmV0Y2goKQorewor
ICAgIG1fcHJlZmV0Y2hDb3VudCA9IG1fcHJlZmV0Y2hDb3VudCA/IG1fcHJlZmV0Y2hDb3VudCAq
IDIgOiAxOworfQorCitib29sIFNRTGl0ZUlEQkN1cnNvcjo6cHJlZmV0Y2goKQoreworICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3ByZWZldGNoQ291bnQ7ICsraSkgeworICAgICAgICBp
ZiAoIXByZWZldGNoT25lUmVjb3JkKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorCisgICAgaW5jcmVhc2VDb3VudFRvUHJlZmV0Y2goKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0K
IAogYm9vbCBTUUxpdGVJREJDdXJzb3I6OmFkdmFuY2UodWludDY0X3QgY291bnQpCkBAIC00ODgs
NyArNTIzLDcgQEAgU1FMaXRlSURCQ3Vyc29yOjpGZXRjaFJlc3VsdCBTUUxpdGVJREJDdXJzb3I6
OmludGVybmFsRmV0Y2hOZXh0UmVjb3JkKFNRTGl0ZUN1cnMKICAgICBBU1NFUlQoIW1fZmV0Y2hl
ZFJlY29yZHMuaXNFbXB0eSgpKTsKICAgICBBU1NFUlQoIW1fZmV0Y2hlZFJlY29yZHMubGFzdCgp
LmlzVGVybWluYWxSZWNvcmQoKSk7CiAKLSAgICByZWNvcmQucmVjb3JkLnZhbHVlID0gbnVsbHB0
cjsKKyAgICByZWNvcmQucmVjb3JkLnZhbHVlID0geyB9OwogCiAgICAgYXV0byYgZGF0YWJhc2Ug
PSBtX3RyYW5zYWN0aW9uLT5zcWxpdGVUcmFuc2FjdGlvbigpLT5kYXRhYmFzZSgpOwogICAgIFNR
TGl0ZVN0YXRlbWVudCogc3RhdGVtZW50ID0gbnVsbHB0cjsKQEAgLTU0Niw3ICs1ODEsNyBAQCBT
UUxpdGVJREJDdXJzb3I6OkZldGNoUmVzdWx0IFNRTGl0ZUlEQkN1cnNvcjo6aW50ZXJuYWxGZXRj
aE5leHRSZWNvcmQoU1FMaXRlQ3VycwogICAgICAgICB9CiAKICAgICAgICAgaWYgKG1fY3Vyc29y
VHlwZSA9PSBJbmRleGVkREI6OkN1cnNvclR5cGU6OktleUFuZFZhbHVlKQotICAgICAgICAgICAg
cmVjb3JkLnJlY29yZC52YWx1ZSA9IG1ha2VVbmlxdWU8SURCVmFsdWU+KFRocmVhZFNhZmVEYXRh
QnVmZmVyOjpjcmVhdGUoV1RGTW92ZShrZXlEYXRhKSksIGJsb2JVUkxzLCBibG9iRmlsZVBhdGhz
KTsKKyAgICAgICAgICAgIHJlY29yZC5yZWNvcmQudmFsdWUgPSB7IFRocmVhZFNhZmVEYXRhQnVm
ZmVyOjpjcmVhdGUoV1RGTW92ZShrZXlEYXRhKSksIGJsb2JVUkxzLCBibG9iRmlsZVBhdGhzIH07
CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKCFkZXNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0
YS5kYXRhKCksIGtleURhdGEuc2l6ZSgpLCByZWNvcmQucmVjb3JkLnByaW1hcnlLZXkpKSB7CiAg
ICAgICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBkZXNlcmlhbGl6ZSB2YWx1ZSBkYXRhIGZy
b20gZGF0YWJhc2Ugd2hpbGUgYWR2YW5jaW5nIGluZGV4IGN1cnNvciIpOwpAQCAtNTcyLDcgKzYw
Nyw3IEBAIFNRTGl0ZUlEQkN1cnNvcjo6RmV0Y2hSZXN1bHQgU1FMaXRlSURCQ3Vyc29yOjppbnRl
cm5hbEZldGNoTmV4dFJlY29yZChTUUxpdGVDdXJzCiAKICAgICAgICAgaWYgKHJlc3VsdCA9PSBT
UUxJVEVfUk9XKSB7CiAgICAgICAgICAgICBtX2NhY2hlZE9iamVjdFN0b3JlU3RhdGVtZW50LT5n
ZXRDb2x1bW5CbG9iQXNWZWN0b3IoMCwga2V5RGF0YSk7Ci0gICAgICAgICAgICByZWNvcmQucmVj
b3JkLnZhbHVlID0gbWFrZVVuaXF1ZTxJREJWYWx1ZT4oVGhyZWFkU2FmZURhdGFCdWZmZXI6OmNy
ZWF0ZShXVEZNb3ZlKGtleURhdGEpKSk7CisgICAgICAgICAgICByZWNvcmQucmVjb3JkLnZhbHVl
ID0geyBUaHJlYWRTYWZlRGF0YUJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoa2V5RGF0YSkpIH07CiAg
ICAgICAgIH0gZWxzZSBpZiAocmVzdWx0ID09IFNRTElURV9ET05FKSB7CiAgICAgICAgICAgICAv
LyBUaGlzIGluZGljYXRlcyB0aGF0IHRoZSByZWNvcmQgd2UncmUgdHJ5aW5nIHRvIHJldHJpZXZl
IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgb2JqZWN0IHN0b3JlLgogICAgICAgICAgICAgLy8g
U2tpcCBvdmVyIGl0LgpAQCAtNjQ1LDEwICs2ODAsMTAgQEAgY29uc3QgSURCS2V5RGF0YSYgU1FM
aXRlSURCQ3Vyc29yOjpjdXJyZW50UHJpbWFyeUtleSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fZmV0
Y2hlZFJlY29yZHMuZmlyc3QoKS5yZWNvcmQucHJpbWFyeUtleTsKIH0KIAotSURCVmFsdWUqIFNR
TGl0ZUlEQkN1cnNvcjo6Y3VycmVudFZhbHVlKCkgY29uc3QKK2NvbnN0IElEQlZhbHVlJiBTUUxp
dGVJREJDdXJzb3I6OmN1cnJlbnRWYWx1ZSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFtX2ZldGNo
ZWRSZWNvcmRzLmlzRW1wdHkoKSk7Ci0gICAgcmV0dXJuIG1fZmV0Y2hlZFJlY29yZHMuZmlyc3Qo
KS5yZWNvcmQudmFsdWUuZ2V0KCk7CisgICAgcmV0dXJuIG1fZmV0Y2hlZFJlY29yZHMuZmlyc3Qo
KS5yZWNvcmQudmFsdWU7CiB9CiAKIGJvb2wgU1FMaXRlSURCQ3Vyc29yOjpkaWRDb21wbGV0ZSgp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvU1FMaXRlSURCQ3Vyc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmgKaW5kZXggZDgxZGZiNWMzZDk1MTEwYmEzYzJkMWU5M2I2
NjMxMmMwMmQzNjI2Ny4uZmRjYTgwZWQwYjYxZjZlNTFkMzA1OGZmZjYzOWVkYmRjMmIyZjJmOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0
ZUlEQkN1cnNvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJDdXJzb3IuaApAQCAtNjYsMTAgKzY2LDExIEBAIHB1YmxpYzoKIAogICAgIGNv
bnN0IElEQktleURhdGEmIGN1cnJlbnRLZXkoKSBjb25zdDsKICAgICBjb25zdCBJREJLZXlEYXRh
JiBjdXJyZW50UHJpbWFyeUtleSgpIGNvbnN0OwotICAgIElEQlZhbHVlKiBjdXJyZW50VmFsdWUo
KSBjb25zdDsKKyAgICBjb25zdCBJREJWYWx1ZSYgY3VycmVudFZhbHVlKCkgY29uc3Q7CiAKICAg
ICBib29sIGFkdmFuY2UodWludDY0X3QgY291bnQpOwogICAgIGJvb2wgaXRlcmF0ZShjb25zdCBJ
REJLZXlEYXRhJiB0YXJnZXRLZXksIGNvbnN0IElEQktleURhdGEmIHRhcmdldFByaW1hcnlLZXkp
OworICAgIGJvb2wgcHJlZmV0Y2hPbmVSZWNvcmQoKTsKICAgICBib29sIHByZWZldGNoKCk7CiAK
ICAgICBib29sIGRpZENvbXBsZXRlKCkgY29uc3Q7CkBAIC03Nyw3ICs3OCw4IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgb2JqZWN0U3RvcmVSZWNvcmRzQ2hhbmdlZCgpOwogCi0gICAgdm9pZCBjdXJy
ZW50RGF0YShJREJHZXRSZXN1bHQmLCBjb25zdCBPcHRpb25hbDxJREJLZXlQYXRoPiYpOworICAg
IGVudW0gY2xhc3MgU2hvdWxkSW5jbHVkZVByZWZldGNoZWRSZWNvcmRzIHsgTm8sIFllcyB9Owor
ICAgIHZvaWQgY3VycmVudERhdGEoSURCR2V0UmVzdWx0JiwgY29uc3QgT3B0aW9uYWw8SURCS2V5
UGF0aD4mLCBTaG91bGRJbmNsdWRlUHJlZmV0Y2hlZFJlY29yZHMgPSBTaG91bGRJbmNsdWRlUHJl
ZmV0Y2hlZFJlY29yZHM6Ok5vKTsKIAogcHJpdmF0ZToKICAgICBib29sIGVzdGFibGlzaFN0YXRl
bWVudCgpOwpAQCAtMTA5LDYgKzExMSw4IEBAIHByaXZhdGU6CiAKICAgICBib29sIGlzRGlyZWN0
aW9uTmV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fY3Vyc29yRGlyZWN0aW9uID09IEluZGV4ZWREQjo6
Q3Vyc29yRGlyZWN0aW9uOjpOZXh0IHx8IG1fY3Vyc29yRGlyZWN0aW9uID09IEluZGV4ZWREQjo6
Q3Vyc29yRGlyZWN0aW9uOjpOZXh0dW5pcXVlOyB9CiAKKyAgICB2b2lkIGluY3JlYXNlQ291bnRU
b1ByZWZldGNoKCk7CisKICAgICBTUUxpdGVJREJUcmFuc2FjdGlvbiogbV90cmFuc2FjdGlvbjsK
ICAgICBJREJSZXNvdXJjZUlkZW50aWZpZXIgbV9jdXJzb3JJZGVudGlmaWVyOwogICAgIGludDY0
X3QgbV9vYmplY3RTdG9yZUlEOwpAQCAtMTMzLDYgKzEzNyw4IEBAIHByaXZhdGU6CiAgICAgaW50
NjRfdCBtX2JvdW5kSUQgeyAwIH07CiAKICAgICBib29sIG1fYmFja2luZ1N0b3JlQ3Vyc29yIHsg
ZmFsc2UgfTsKKworICAgIHVuc2lnbmVkIG1fcHJlZmV0Y2hDb3VudCB7IDAgfTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIElEQlNlcnZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAKaW5kZXggYTBh
MDUxNmY2ZmJjYzRlNjgwZmMyYzlhN2YwNDg3OTIzNTUzY2RkZi4uYWY1YjMxODUwODU2ZDVkMmRi
NjI5YTk2MDBhYjRmNDI2NDMxNGU0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCkBAIC04
NTQsMjIgKzg1NCw2IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6Oml0ZXJhdGVDdXJzb3IoY29u
c3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJCiAgICAgYXV0byBlcnJvciA9
IG1fYmFja2luZ1N0b3JlLT5pdGVyYXRlQ3Vyc29yKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY3Vy
c29ySWRlbnRpZmllciwgZGF0YSwgcmVzdWx0KTsKIAogICAgIGNhbGxiYWNrKGVycm9yLCByZXN1
bHQpOwotCi0gICAgaWYgKGVycm9yLmlzTnVsbCgpKQotICAgICAgICBwcmVmZXRjaEN1cnNvcih0
cmFuc2FjdGlvbklkZW50aWZpZXIsIGN1cnNvcklkZW50aWZpZXIsIGRhdGEuY291bnQgPyBkYXRh
LmNvdW50IDogMSk7Ci19Ci0KLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnByZWZldGNoQ3Vyc29y
KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25z
dCBJREJSZXNvdXJjZUlkZW50aWZpZXImIGN1cnNvcklkZW50aWZpZXIsIHVpbnQ2NF90IHN0ZXAp
Ci17Ci0gICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpwcmVmZXRjaEN1cnNv
ciIpOwotCi0gICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7Ci0KLSAgICB1aW50NjRfdCBjb3Vu
dFRvUHJlZmV0Y2ggPSBzdGVwICogMjsKLSAgICB3aGlsZSAoY291bnRUb1ByZWZldGNoIC0tKSB7
Ci0gICAgICAgIGlmICghbV9iYWNraW5nU3RvcmUtPnByZWZldGNoQ3Vyc29yKHRyYW5zYWN0aW9u
SWRlbnRpZmllciwgY3Vyc29ySWRlbnRpZmllcikpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAg
fQogfQogCiB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjb21taXRUcmFuc2FjdGlvbihVbmlxdWVJ
REJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgRXJyb3JDYWxsYmFjayBjYWxsYmFj
aykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9V
bmlxdWVJREJEYXRhYmFzZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmgKaW5kZXggMDZiZjZhNGVmMTZjNjIzMThjZGMzOTM5YjIz
MTZkYWJhNTRmMDQzYS4uMWM2ODg3MzUwNjAyNmVmZGVmYTBkNzI3OTNjZThjYTJjNzRjNDQ5OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1
ZUlEQkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmgKQEAgLTE0Miw4ICsxNDIsNiBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCBjbGVhclRyYW5zYWN0aW9uc09uQ29ubmVjdGlvbihVbmlxdWVJREJEYXRhYmFzZUNv
bm5lY3Rpb24mKTsKIAotICAgIHZvaWQgcHJlZmV0Y2hDdXJzb3IoY29uc3QgSURCUmVzb3VyY2VJ
ZGVudGlmaWVyJiwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiwgdWludDY0X3Qgc3RlcCk7
Ci0KICAgICBJREJTZXJ2ZXImIG1fc2VydmVyOwogICAgIElEQkRhdGFiYXNlSWRlbnRpZmllciBt
X2lkZW50aWZpZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9u
LmNwcAppbmRleCAwYzliYjEwZmY4OGNkNjRjOTA1NjkzZjYyY2ZhY2VlODQxYWUyZjhkLi5iZjU1
YzBkZWM2MzZjNTc4ZjZiZWRiNDc4OTdhM2ZiOTE2N2FhYzM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2Fj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1Vu
aXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uY3BwCkBAIC0zNzQsOSArMzc0LDEyIEBAIHZvaWQg
VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6aXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXF1
ZXN0RGF0YSYgcmVxdWVzdERhCiAgICAgYXV0byBkYXRhYmFzZSA9IG1fZGF0YWJhc2VDb25uZWN0
aW9uLT5kYXRhYmFzZSgpOwogICAgIEFTU0VSVChkYXRhYmFzZSk7CiAgICAgCi0gICAgZGF0YWJh
c2UtPml0ZXJhdGVDdXJzb3IocmVxdWVzdERhdGEsIGRhdGEsIFt0aGlzLCByZXF1ZXN0RGF0YV0o
YXV0byYgZXJyb3IsIGNvbnN0IElEQkdldFJlc3VsdCYgcmVzdWx0KSB7CisgICAgZGF0YWJhc2Ut
Pml0ZXJhdGVDdXJzb3IocmVxdWVzdERhdGEsIGRhdGEsIFt0aGlzLCByZXF1ZXN0RGF0YSwgb3B0
aW9uID0gZGF0YS5vcHRpb25dKGF1dG8mIGVycm9yLCBjb25zdCBJREJHZXRSZXN1bHQmIHJlc3Vs
dCkgewogICAgICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlv
bjo6aXRlcmF0ZUN1cnNvciAoY2FsbGJhY2spIik7CiAKKyAgICAgICAgaWYgKG9wdGlvbiA9PSBJ
bmRleGVkREI6OkN1cnNvckl0ZXJhdGVPcHRpb246OkRvTm90UmVwbHkpCisgICAgICAgICAgICBy
ZXR1cm47CisKICAgICAgICAgaWYgKGVycm9yLmlzTnVsbCgpKQogICAgICAgICAgICAgbV9kYXRh
YmFzZUNvbm5lY3Rpb24tPmNvbm5lY3Rpb25Ub0NsaWVudCgpLmRpZEl0ZXJhdGVDdXJzb3IoSURC
UmVzdWx0RGF0YTo6aXRlcmF0ZUN1cnNvclN1Y2Nlc3MocmVxdWVzdERhdGEucmVxdWVzdElkZW50
aWZpZXIoKSwgcmVzdWx0KSk7CiAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJDdXJzb3JSZWNvcmQuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJDdXJzb3JSZWNvcmQuaAppbmRleCA2
MTM2MDRhOGM1ZmEyZWM3ODQzYmI5OGIwNTRlMTAxZjY2M2U2MzFlLi45ZDVhYjk0YWQ1NGQ0NTlh
OTM2MDQ5Mzg3MGI3MzJjM2U3NGEwMWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCQ3Vyc29yUmVjb3JkLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkN1cnNvclJlY29yZC5oCkBAIC0zNSwxMiAr
MzUsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IElEQkN1cnNvclJlY29yZCB7CiAg
ICAgSURCS2V5RGF0YSBrZXk7CiAgICAgSURCS2V5RGF0YSBwcmltYXJ5S2V5OwotICAgIHN0ZDo6
dW5pcXVlX3B0cjxJREJWYWx1ZT4gdmFsdWU7CisgICAgSURCVmFsdWUgdmFsdWU7CiAKICAgICB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAg
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImLCBJREJD
dXJzb3JSZWNvcmQmKTsKIAotICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4ga2V5LnNp
emUoKSArIHByaW1hcnlLZXkuc2l6ZSgpICsgKHZhbHVlID8gdmFsdWUtPnNpemUoKSA6IDApOyB9
CisgICAgSURCQ3Vyc29yUmVjb3JkIGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAgIHNpemVfdCBz
aXplKCkgY29uc3QgeyByZXR1cm4ga2V5LnNpemUoKSArIHByaW1hcnlLZXkuc2l6ZSgpICsgdmFs
dWUuc2l6ZSgpOyB9CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgpAQCAtNjQsNiArNjUs
MTEgQEAgYm9vbCBJREJDdXJzb3JSZWNvcmQ6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBJREJD
dXJzb3JSZWNvcmQmIHJlY29yZCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAoraW5saW5lIElEQkN1
cnNvclJlY29yZCBJREJDdXJzb3JSZWNvcmQ6Omlzb2xhdGVkQ29weSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIHsga2V5Lmlzb2xhdGVkQ29weSgpLCBwcmltYXJ5S2V5Lmlzb2xhdGVkQ29weSgpLCB2
YWx1ZS5pc29sYXRlZENvcHkoKSB9OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNl
bmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJJdGVyYXRlQ3Vyc29yRGF0YS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCSXRlcmF0ZUN1cnNvckRh
dGEuY3BwCmluZGV4IGYxZjBiYjNiNmRiNDFlYTk3ZDMwMmZhM2RjMjcyNjZmZGU4NjE3OTcuLmFk
OWY0YTQ3NTAwMjJiYjA2NDYyZmM4ZGM5ZjUxOTJiNDZiYmFiNzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJJdGVyYXRlQ3Vyc29yRGF0YS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkl0ZXJh
dGVDdXJzb3JEYXRhLmNwcApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IElEQkl0ZXJhdGVDdXJzb3JEYXRhIElEQkl0ZXJhdGVDdXJzb3JEYXRhOjppc29sYXRlZENvcHko
KSBjb25zdAogewotICAgIHJldHVybiB7IGtleURhdGEuaXNvbGF0ZWRDb3B5KCksIHByaW1hcnlL
ZXlEYXRhLmlzb2xhdGVkQ29weSgpLCBjb3VudCB9OworICAgIHJldHVybiB7IGtleURhdGEuaXNv
bGF0ZWRDb3B5KCksIHByaW1hcnlLZXlEYXRhLmlzb2xhdGVkQ29weSgpLCBjb3VudCwgb3B0aW9u
IH07CiB9CiAKICNpZiAhTE9HX0RJU0FCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCSXRlcmF0ZUN1cnNvckRhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJJdGVyYXRlQ3Vyc29yRGF0YS5oCmlu
ZGV4IDhkMzE1YzVhNmEzMTc0ZjFlMjMxYTQwYTExNTk2Y2ZlODJmM2IxYjEuLjRkZjZjNjQ1ZjNi
MjgxZTdjYTAwYmQ5ZDkyYmI3MWQwYzRmYjQwZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJJdGVyYXRlQ3Vyc29yRGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJJdGVyYXRlQ3Vyc29yRGF0
YS5oCkBAIC0zNSw2ICszNSw3IEBAIHN0cnVjdCBJREJJdGVyYXRlQ3Vyc29yRGF0YSB7CiAgICAg
SURCS2V5RGF0YSBrZXlEYXRhOwogICAgIElEQktleURhdGEgcHJpbWFyeUtleURhdGE7CiAgICAg
dW5zaWduZWQgY291bnQ7CisgICAgSW5kZXhlZERCOjpDdXJzb3JJdGVyYXRlT3B0aW9uIG9wdGlv
biB7IEluZGV4ZWREQjo6Q3Vyc29ySXRlcmF0ZU9wdGlvbjo6UmVwbHkgfTsKIAogICAgIFdFQkNP
UkVfRVhQT1JUIElEQkl0ZXJhdGVDdXJzb3JEYXRhIGlzb2xhdGVkQ29weSgpIGNvbnN0OwogCkBA
IC01MCw2ICs1MSw3IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIElEQkl0ZXJhdGVD
dXJzb3JEYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVy
IDw8IGtleURhdGEgPDwgcHJpbWFyeUtleURhdGEgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGNv
dW50KTsKKyAgICBlbmNvZGVyLmVuY29kZUVudW0ob3B0aW9uKTsKIH0KIAogdGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4KQEAgLTczLDkgKzc1LDExIEBAIGJvb2wgSURCSXRlcmF0ZUN1cnNvckRhdGE6
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBJREJJdGVyYXRlQ3Vyc29yRGF0YSYgaXRlcmF0CiAK
ICAgICBpZiAoY291bnQgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLQogICAgIGl0ZXJhdG9yQ3Vyc29yRGF0YS5jb3VudCA9IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihjb3VudCk7CiAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51
bShpdGVyYXRvckN1cnNvckRhdGEub3B0aW9uKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzZDAyMWNlYWRlOWM1YmZjMzhkZmRlMjUwMzM5ZjUz
Y2FhNGFlNzg4Li40YTM2NDc3NzhhMWJmNTI0NjViNmJjMDhkNzI1YjA5ZWY5ZTRiZDg4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0xMzk5LDcgKzEzOTksNyBAQAogCQk1MTBENEEzNDEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0
U3RyZWFtRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxMEQ0QTJFMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1FcnJvci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxMEQ0QTM3MTAz
MTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMEQ0QTMxMTAzMTY1RUUwMDQ5RUE1NCAvKiBT
b2NrZXRTdHJlYW1IYW5kbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk1MTBENEEzODEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFu
ZGxlQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTBENEEzMjEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNTExMEZD
RkMxRTAzNjQxRDAwNkY4RDBCIC8qIElEQkN1cnNvclJlY29yZC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExMEZDRkIxRTAzNjJBNTAwNkY4RDBCIC8q
IElEQkN1cnNvclJlY29yZC5oICovOyB9OworCQk1MTEwRkNGQzFFMDM2NDFEMDA2RjhEMEIgLyog
SURCQ3Vyc29yUmVjb3JkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MTEwRkNGQjFFMDM2MkE1MDA2RjhEMEIgLyogSURCQ3Vyc29yUmVjb3JkLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTExRUMxMjgx
QzUwQUFDQTAwMzJGOTgzIC8qIElEQlNlcmlhbGl6YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMUVDMTI2MUM1MEFBNTcwMDMyRjk4MyAvKiBJ
REJTZXJpYWxpemF0aW9uLmggKi87IH07CiAJCTUxMUVDMTJDMUM1MEFCQkYwMDMyRjk4MyAvKiBT
UUxpdGVJREJUcmFuc2FjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTExRUMxMkExQzUwQUJCQTAwMzJGOTgzIC8qIFNRTGl0ZUlEQlRyYW5zYWN0
aW9uLmggKi87IH07CiAJCTUxMUVDMTMwMUM1MEFCRjUwMDMyRjk4MyAvKiBTUUxpdGVJREJDdXJz
b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMUVD
MTJFMUM1MEFCRUMwMDMyRjk4MyAvKiBTUUxpdGVJREJDdXJzb3IuaCAqLzsgfTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>