<?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>262844</bug_id>
          
          <creation_ts>2023-10-07 12:28:44 -0700</creation_ts>
          <short_desc>AX: Use more specific types in AccessibilityObject and subclasses</short_desc>
          <delta_ts>2023-10-08 00:44:07 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Accessibility</component>
          <version>Other</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="Tyler Wilcock">tyler_w</reporter>
          <assigned_to name="Tyler Wilcock">tyler_w</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>andresg_22</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cfleizach</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>samuel_white</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1983472</commentid>
    <comment_count>0</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2023-10-07 12:28:44 -0700</bug_when>
    <thetext>This improves type safety, gives the optimizer more information to work with, and generally makes more sense (an AccessibilityObject should never be able to return the other AXCoreObject variant, AXIsolatedObject).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1983473</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2023-10-07 12:28:51 -0700</bug_when>
    <thetext>&lt;rdar://problem/116625342&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1983475</commentid>
    <comment_count>2</comment_count>
      <attachid>468105</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2023-10-07 12:40:29 -0700</bug_when>
    <thetext>Created attachment 468105
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1983488</commentid>
    <comment_count>3</comment_count>
      <attachid>468108</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2023-10-07 14:35:07 -0700</bug_when>
    <thetext>Created attachment 468108
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1983523</commentid>
    <comment_count>4</comment_count>
      <attachid>468111</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2023-10-07 18:19:42 -0700</bug_when>
    <thetext>Created attachment 468111
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1983552</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2023-10-08 00:44:05 -0700</bug_when>
    <thetext>Committed 269055@main (3cf70a3a5727): &lt;https://commits.webkit.org/269055@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 468111.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>468105</attachid>
            <date>2023-10-07 12:40:29 -0700</date>
            <delta_ts>2023-10-07 14:35:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-262844-20231007124027.patch</filename>
            <type>text/plain</type>
            <size>35348</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">RnJvbSBiOWNlY2I1MTdmYmFkMmI2MTIwNjE2NzVlYzU4Mjg0MzcyMDIyYzJmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUeWxlciBXaWxjb2NrIDx0eWxlcl93QGFwcGxlLmNvbT4KRGF0
ZTogU2F0LCA3IE9jdCAyMDIzIDEyOjI5OjMwIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gQVg6IFVz
ZSBtb3JlIHNwZWNpZmljIHR5cGVzIGluIEFjY2Vzc2liaWxpdHlPYmplY3QgYW5kCiBzdWJjbGFz
c2VzIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjI4NDQKIHJkYXI6
Ly9wcm9ibGVtLzExNjYyNTM0MgoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpUaGlzIGlt
cHJvdmVzIHR5cGUgc2FmZXR5LCBnaXZlcyB0aGUgb3B0aW1pemVyIG1vcmUgaW5mb3JtYXRpb24g
dG8gd29yayB3aXRoLCBhbmQgZ2VuZXJhbGx5IG1ha2VzIG1vcmUgc2Vuc2UKKGFuIEFjY2Vzc2li
aWxpdHlPYmplY3Qgc2hvdWxkIG5ldmVyIGJlIGFibGUgdG8gcmV0dXJuIHRoZSBvdGhlciBBWENv
cmVPYmplY3QgdmFyaWFudCwgQVhJc29sYXRlZE9iamVjdCkuCgpUaGlzIHBhdGNoIGFsc28gZG9l
cyBhbm90aGVyIHVucmVsYXRlZCBjbGVhbi11cCwgcmVtb3ZpbmcgdGhlIHNob3VsZFJlbW92ZSBw
YXJhbWV0ZXIgZnJvbSBBWElzb2xhdGVkT2JqZWN0OjpzZXRQcm9wZXJ0eSwKYXMgaXQgb25seSBo
YWQgb25lIHVzZSB0aGF0IGhhcyBiZWVuIG1hZGUgcmVkdW5kYW50IGJ5IG1ha2luZyBBWElzb2xh
dGVkT2JqZWN0OjptX3Byb3BlcnR5TWFwIHNwYXJzZSBpbiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjYxOTY4LgoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FYQ29yZU9iamVjdC5oOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eUxpc3RCb3guY3BwOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUxpc3RCb3g6OmVsZW1lbnRB
Y2Nlc3NpYmlsaXR5SGl0VGVzdCBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5oOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpp
c1RhYkl0ZW1TZWxlY3RlZCBjb25zdCk6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpl
bGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3QgY29uc3QpOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6Zm9jdXNlZFVJRWxlbWVudCBjb25zdCk6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpzZWxlY3RlZENoaWxkcmVuKToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlPYmplY3QuaDoKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om92
ZXJyaWRlQXR0YWNobWVudFBhcmVudCk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3Q6OmFjY2Vzc2liaWxpdHlJbWFnZU1hcEhpdFRlc3QgY29uc3QpOgooV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6cmVtb3RlU1ZHRWxlbWVudEhpdFRlc3QgY29uc3Qp
OgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6ZWxlbWVudEFjY2Vzc2liaWxp
dHlIaXRUZXN0IGNvbnN0KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFj
Y2Vzc2liaWxpdHlIaXRUZXN0IGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaDoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmNwcDoKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlT
Y3JvbGxWaWV3OjphY2Nlc3NpYmlsaXR5SGl0VGVzdCBjb25zdCk6CiogU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oOgoqIFNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5jcHA6CihXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5U2xpZGVyOjplbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3QgY29uc3QpOgoqIFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5oOgoqIFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcDoKKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlUYWJsZTo6Y2VsbEZvckNvbHVtbkFuZFJvdyk6CiogU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuaDoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwOgooV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eVRhYmxlQ2VsbDo6Y29sdW1uSGVhZGVycyk6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFi
bGVDZWxsOjpyb3dIZWFkZXJzKToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9B
Y2Nlc3NpYmlsaXR5T2JqZWN0SU9TLm1tOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
b3ZlcnJpZGVBdHRhY2htZW50UGFyZW50KToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcDoKKFdlYkNvcmU6OkFYSXNvbGF0ZWRP
YmplY3Q6OnNldE9iamVjdFByb3BlcnR5KToKKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OnNl
dE9iamVjdFZlY3RvclByb3BlcnR5KToKKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OnNldFBy
b3BlcnR5KToKKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmVsZW1lbnRBY2Nlc3NpYmlsaXR5
SGl0VGVzdCBjb25zdCk6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
c29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcDoKKFdlYkNvcmU6OkFYSXNvbGF0
ZWRUcmVlOjpyZWxhdGVkT2JqZWN0SURzRm9yKToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW06CihXZWJDb3JlOjpjcmVhdGVJc29sYXRl
ZE9iamVjdElmTmVlZGVkKToKKFdlYkNvcmU6OnBvc3RVc2VySW5mb0ZvckNoYW5nZXMpOgoqIFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RNYWMubW06
CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpvdmVycmlkZUF0dGFjaG1lbnRQYXJlbnQp
OgotLS0KIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhDb3JlT2JqZWN0LmggICB8ICAg
MiAtCiAuLi4vYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAgICAgfCAgIDYg
Ky0KIC4uLi9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmggICAgICB8ICAgMiAr
LQogLi4uL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgICAgIHwgIDEyICst
CiAuLi4vYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmggICAgICAgfCAgMTIgKy0K
IC4uLi9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCAgICAgICAgICAgICB8ICAxMiArLQog
Li4uL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oIHwgICA4ICstCiAu
Li4vYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5jcHAgfCAgIDIgKy0KIC4u
Li9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmggICB8ICAgMiArLQogLi4u
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5jcHAgICAgIHwgICA0ICstCiAuLi4v
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmggICAgICAgfCAgIDIgKy0KIC4uLi9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAgICAgICB8ICAgMiArLQogLi4uL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmggICAgICAgIHwgICAyICstCiAuLi4vYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcCAgfCAgIDQgKy0KIC4uLi9pb3Mv
QWNjZXNzaWJpbGl0eU9iamVjdElPUy5tbSAgICAgICAgICAgICB8ICAgMiArLQogLi4uL2lzb2xh
dGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcCAgICAgICAgIHwgMTA1ICsrKysrKysrLS0tLS0t
LS0tLQogLi4uL2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmggICAgICAgICAgIHwgICAz
ICstCiAuLi4vaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcCAgICAgICAgICAgfCAgIDIg
Ky0KIC4uLi9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaCAgICAgICAgICAgICB8ICAgMiAr
LQogLi4uL2FjY2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW0gICAgIHwgICA5ICst
CiAuLi4vbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RNYWMubW0gICAgICAgICAgICAgfCAgIDIgKy0K
IDIxIGZpbGVzIGNoYW5nZWQsIDg4IGluc2VydGlvbnMoKyksIDEwOSBkZWxldGlvbnMoLSkKCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYQ29yZU9iamVjdC5oIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWENvcmVPYmplY3QuaAppbmRleCBjNTEwNDNi
MGUxNTguLjcxOWNhZTljZGIwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BWENvcmVPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FY
Q29yZU9iamVjdC5oCkBAIC0xMDkwLDggKzEwOTAsNiBAQCBwdWJsaWM6CiAKICAgICAvLyBDYWxs
ZWQgb24gdGhlIHJvb3QgQVggb2JqZWN0IHRvIHJldHVybiB0aGUgZGVlcGVzdCBhdmFpbGFibGUg
ZWxlbWVudC4KICAgICB2aXJ0dWFsIEFYQ29yZU9iamVjdCogYWNjZXNzaWJpbGl0eUhpdFRlc3Qo
Y29uc3QgSW50UG9pbnQmKSBjb25zdCA9IDA7Ci0gICAgLy8gQ2FsbGVkIG9uIHRoZSBBWCBvYmpl
Y3QgYWZ0ZXIgdGhlIHJlbmRlciB0cmVlIGRldGVybWluZXMgd2hpY2ggaXMgdGhlIHJpZ2h0IEFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuCi0gICAgdmlydHVhbCBBWENvcmVPYmplY3QqIGVsZW1l
bnRBY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0ID0gMDsKIAogICAg
IHZpcnR1YWwgQVhDb3JlT2JqZWN0KiBmb2N1c2VkVUlFbGVtZW50KCkgY29uc3QgPSAwOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0
Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RC
b3guY3BwCmluZGV4IGQ2MWJjZjQ0ZjZlZi4uYjgxM2E1NTY2YjhhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmNwcApAQCAt
MTM3LDcgKzEzNyw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlMaXN0Qm94
OjpsaXN0Qm94T3B0aW9uQWNjZXNzaWJpbGl0eU9iamVjdChIVE1MCiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAKLUFYQ29yZU9iamVjdCogQWNjZXNzaWJpbGl0eUxpc3RCb3g6OmVsZW1lbnRBY2Nl
c3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CitBY2Nlc3NpYmls
aXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5TGlzdEJveDo6ZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRU
ZXN0KGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKIHsKICAgICAvLyB0aGUgaW50ZXJuYWwg
SFRNTFNlbGVjdEVsZW1lbnQgbWV0aG9kcyBmb3IgcmV0dXJuaW5nIGEgbGlzdGJveCBvcHRpb24g
YXQgYSBwb2ludAogICAgIC8vIGlnbm9yZSBvcHRncm91cCBlbGVtZW50cy4KQEAgLTE1MCwxNCAr
MTUwLDE0IEBAIEFYQ29yZU9iamVjdCogQWNjZXNzaWJpbGl0eUxpc3RCb3g6OmVsZW1lbnRBY2Nl
c3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYKICAgICAKICAgICBMYXlvdXRSZWN0IHBh
cmVudFJlY3QgPSBib3VuZGluZ0JveFJlY3QoKTsKICAgICAKLSAgICBBWENvcmVPYmplY3QqIGxp
c3RCb3hPcHRpb24gPSBudWxscHRyOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGxpc3RCb3hP
cHRpb24gPSBudWxscHRyOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IG1fY2hpbGRyZW4uc2l6ZSgp
OwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewogICAgICAgICBM
YXlvdXRSZWN0IHJlY3QgPSBkb3duY2FzdDxSZW5kZXJMaXN0Qm94PigqbV9yZW5kZXJlcikuaXRl
bUJvdW5kaW5nQm94UmVjdChwYXJlbnRSZWN0LmxvY2F0aW9uKCksIGkpOwogICAgICAgICAvLyBU
aGUgY2FzdCB0byBIVE1MRWxlbWVudCBiZWxvdyBpcyBzYWZlIGJlY2F1c2UgdGhlIG9ubHkgb3Ro
ZXIgcG9zc2libGUgbGlzdEl0ZW0gdHlwZQogICAgICAgICAvLyB3b3VsZCBiZSBhIFdNTEVsZW1l
bnQsIGJ1dCBXTUwgYnVpbGRzIGRvbid0IHVzZSBhY2Nlc3NpYmlsaXR5IGZlYXR1cmVzIGF0IGFs
bC4KICAgICAgICAgaWYgKHJlY3QuY29udGFpbnMocG9pbnQpKSB7Ci0gICAgICAgICAgICBsaXN0
Qm94T3B0aW9uID0gbV9jaGlsZHJlbltpXS5nZXQoKTsKKyAgICAgICAgICAgIGxpc3RCb3hPcHRp
b24gPSBkeW5hbWljRG93bmNhc3Q8QWNjZXNzaWJpbGl0eU9iamVjdD4obV9jaGlsZHJlbltpXS5n
ZXQoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guaCBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guaAppbmRleCA0
YjYzZTY0YzgzOWUuLmI3ZDA0Njc3MTc4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guaApAQCAtNTIsNyArNTIsNyBAQCBwcml2
YXRlOgogCiAgICAgYm9vbCBpc0FjY2Vzc2liaWxpdHlMaXN0Qm94SW5zdGFuY2UoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogbGlzdEJv
eE9wdGlvbkFjY2Vzc2liaWxpdHlPYmplY3QoSFRNTEVsZW1lbnQqKSBjb25zdDsKLSAgICBBWENv
cmVPYmplY3QqIGVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNv
bnN0IG92ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGVsZW1lbnRBY2Nlc3NpYmls
aXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0IGZpbmFsOwogfTsKICAgICAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCmluZGV4IGMzYTliZTVmMzY5Mi4uYjNiM2VkYWFlMzdk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdC5jcHAKQEAgLTMwNDUsNyArMzA0NSw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVj
dDo6aXNUYWJJdGVtU2VsZWN0ZWQoKSBjb25zdAogICAgIC8vIFRoZSBBUklBIHNwZWMgc2F5cyBh
IHRhYiBpdGVtIGNhbiBhbHNvIGJlIHNlbGVjdGVkIGlmIGl0IGlzIGFyaWEtbGFiZWxlZCBieSBh
IHRhYnBhbmVsCiAgICAgLy8gdGhhdCBoYXMga2V5Ym9hcmQgZm9jdXMgaW5zaWRlIG9mIGl0LCBv
ciBpZiBhIHRhYnBhbmVsIGluIGl0cyBhcmlhLWNvbnRyb2xzIGxpc3QgaGFzIEtCCiAgICAgLy8g
Zm9jdXMgaW5zaWRlIG9mIGl0LgotICAgIGF1dG8qIGZvY3VzZWRFbGVtZW50ID0gc3RhdGljX2Nh
c3Q8QWNjZXNzaWJpbGl0eU9iamVjdCo+KGZvY3VzZWRVSUVsZW1lbnQoKSk7CisgICAgYXV0byog
Zm9jdXNlZEVsZW1lbnQgPSBmb2N1c2VkVUlFbGVtZW50KCk7CiAgICAgaWYgKCFmb2N1c2VkRWxl
bWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0zMTI5LDcgKzMxMjksNyBAQCBib29s
IEFjY2Vzc2liaWxpdHlPYmplY3Q6OnN1cHBvcnRzQVJJQUF0dHJpYnV0ZXMoKSBjb25zdAogICAg
ICAgICB8fCBoYXNBdHRyaWJ1dGUoYXJpYV9yZWxldmFudEF0dHIpOwogfQogICAgIAotQVhDb3Jl
T2JqZWN0KiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjplbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3Qo
Y29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAorQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNz
aWJpbGl0eU9iamVjdDo6ZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50
JiBwb2ludCkgY29uc3QKIHsgCiAgICAgLy8gU2VuZCB0aGUgaGl0IHRlc3QgYmFjayBpbnRvIHRo
ZSBzdWItZnJhbWUgaWYgbmVjZXNzYXJ5LgogICAgIGlmIChpc0F0dGFjaG1lbnQoKSkgewpAQCAt
MzE0Myw4ICszMTQzLDggQEAgQVhDb3JlT2JqZWN0KiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjplbGVt
ZW50QWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmIHAKICAgICAKICAgICAvLyBD
aGVjayBpZiB0aGVyZSBhcmUgYW55IG1vY2sgZWxlbWVudHMgdGhhdCBuZWVkIHRvIGJlIGhhbmRs
ZWQuCiAgICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZCA6IG1fY2hpbGRyZW4pIHsKLSAgICAgICAg
aWYgKGNoaWxkLT5pc01vY2tPYmplY3QoKSAmJiBjaGlsZC0+ZWxlbWVudFJlY3QoKS5jb250YWlu
cyhwb2ludCkpCi0gICAgICAgICAgICByZXR1cm4gY2hpbGQtPmVsZW1lbnRBY2Nlc3NpYmlsaXR5
SGl0VGVzdChwb2ludCk7CisgICAgICAgIGlmIChhdXRvKiBtb2NrQ2hpbGQgPSBkeW5hbWljRG93
bmNhc3Q8QWNjZXNzaWJpbGl0eU1vY2tPYmplY3Q+KGNoaWxkLmdldCgpKTsgY2hpbGQgJiYgY2hp
bGQtPmVsZW1lbnRSZWN0KCkuY29udGFpbnMocG9pbnQpKQorICAgICAgICAgICAgcmV0dXJuIG1v
Y2tDaGlsZC0+ZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KHBvaW50KTsKICAgICB9CiAKICAg
ICByZXR1cm4gY29uc3RfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4odGhpcyk7CkBAIC0zMTU2
LDcgKzMxNTYsNyBAQCBBWE9iamVjdENhY2hlKiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpheE9iamVj
dENhY2hlKCkgY29uc3QKICAgICByZXR1cm4gZG9jdW1lbnQgPyBkb2N1bWVudC0+YXhPYmplY3RD
YWNoZSgpIDogbnVsbHB0cjsKIH0KIAotQVhDb3JlT2JqZWN0KiBBY2Nlc3NpYmlsaXR5T2JqZWN0
Ojpmb2N1c2VkVUlFbGVtZW50KCkgY29uc3QKK0FjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2li
aWxpdHlPYmplY3Q6OmZvY3VzZWRVSUVsZW1lbnQoKSBjb25zdAogewogICAgIGF1dG8qIHBhZ2Ug
PSB0aGlzLT5wYWdlKCk7CiAgICAgYXV0byogYXhPYmplY3RDYWNoZSA9IHRoaXMtPmF4T2JqZWN0
Q2FjaGUoKTsKQEAgLTQyMzEsNyArNDIzMSw3IEBAIEFYQ29yZU9iamVjdDo6QWNjZXNzaWJpbGl0
eUNoaWxkcmVuVmVjdG9yIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnNlbGVjdGVkQ2hpbGRyZW4oCiAg
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUJhcjoKICAgICAgICAgaWYgKGF1dG8qIGRl
c2NlbmRhbnQgPSBhY3RpdmVEZXNjZW5kYW50KCkpCiAgICAgICAgICAgICByZXN1bHQgPSB7IGRl
c2NlbmRhbnQgfTsKLSAgICAgICAgZWxzZSBpZiAoYXV0byogZm9jdXNlZEVsZW1lbnQgPSBkeW5h
bWljRG93bmNhc3Q8QWNjZXNzaWJpbGl0eU9iamVjdD4oZm9jdXNlZFVJRWxlbWVudCgpKSkKKyAg
ICAgICAgZWxzZSBpZiAoYXV0byogZm9jdXNlZEVsZW1lbnQgPSBmb2N1c2VkVUlFbGVtZW50KCkp
CiAgICAgICAgICAgICByZXN1bHQgPSB7IGZvY3VzZWRFbGVtZW50IH07CiAgICAgICAgIGJyZWFr
OwogICAgIGRlZmF1bHQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU9iamVjdC5oCmluZGV4IDlkM2ViMGEwYWM2Ny4uYjcxYzQ5NDVmNDZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3Qu
aApAQCAtMTQ4LDcgKzE0OCw3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBjb2x1bW5Db3VudCgp
IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KICAgICB1bnNpZ25lZCByb3dDb3VudCgpIG92ZXJyaWRl
IHsgcmV0dXJuIDA7IH0KICAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgY2VsbHMoKSBv
dmVycmlkZSB7IHJldHVybiBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IoKTsgfQotICAgIEFY
Q29yZU9iamVjdCogY2VsbEZvckNvbHVtbkFuZFJvdyh1bnNpZ25lZCwgdW5zaWduZWQpIG92ZXJy
aWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjZWxsRm9y
Q29sdW1uQW5kUm93KHVuc2lnbmVkLCB1bnNpZ25lZCkgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0
cjsgfQogICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBjb2x1bW5IZWFkZXJzKCkgb3Zl
cnJpZGUgeyByZXR1cm4gQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yKCk7IH0KICAgICBBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Igcm93SGVhZGVycygpIG92ZXJyaWRlIHsgcmV0dXJuIEFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvcigpOyB9CiAgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVu
VmVjdG9yIHZpc2libGVSb3dzKCkgb3ZlcnJpZGUgeyByZXR1cm4gQWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yKCk7IH0KQEAgLTMyNSwxMSArMzI1LDExIEBAIHB1YmxpYzoKICAgICBWZWN0b3I8
U3RyaW5nPiBkZXRlcm1pbmVEcm9wRWZmZWN0cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHsg
fTsgfQogCiAgICAgLy8gQ2FsbGVkIG9uIHRoZSByb290IEFYIG9iamVjdCB0byByZXR1cm4gdGhl
IGRlZXBlc3QgYXZhaWxhYmxlIGVsZW1lbnQuCi0gICAgQVhDb3JlT2JqZWN0KiBhY2Nlc3NpYmls
aXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxw
dHI7IH0KKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBhY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25z
dCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICAvLyBD
YWxsZWQgb24gdGhlIEFYIG9iamVjdCBhZnRlciB0aGUgcmVuZGVyIHRyZWUgZGV0ZXJtaW5lcyB3
aGljaCBpcyB0aGUgcmlnaHQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC4KLSAgICBBWENvcmVP
YmplY3QqIGVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogZWxlbWVudEFjY2Vz
c2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JikgY29uc3Q7CiAKLSAgICBBWENvcmVPYmpl
Y3QqIGZvY3VzZWRVSUVsZW1lbnQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBmb2N1c2VkVUlFbGVtZW50KCkgY29uc3QgZmluYWw7CiAKICAgICB2aXJ0dWFsIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIGZpcnN0Q2hpbGQoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9
CiAgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBsYXN0Q2hpbGQoKSBjb25zdCB7IHJl
dHVybiBudWxscHRyOyB9CkBAIC03MDAsOSArNzAwLDkgQEAgcHVibGljOgogICAgIGJvb2wgaXNP
blNjcmVlbigpIGNvbnN0IG92ZXJyaWRlOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdm9p
ZCBvdmVycmlkZUF0dGFjaG1lbnRQYXJlbnQoQVhDb3JlT2JqZWN0KiBwYXJlbnQpOworICAgIHZv
aWQgb3ZlcnJpZGVBdHRhY2htZW50UGFyZW50KEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCk7
CiAjZWxzZQotICAgIHZvaWQgb3ZlcnJpZGVBdHRhY2htZW50UGFyZW50KEFYQ29yZU9iamVjdCop
IHsgfQorICAgIHZvaWQgb3ZlcnJpZGVBdHRhY2htZW50UGFyZW50KEFjY2Vzc2liaWxpdHlPYmpl
Y3QqKSB7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0LmNwcAppbmRleCAwMGFiNWYzMzZkMWUuLmE4NDg2NWZlYzI0NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuY3BwCkBAIC0xODUyLDcgKzE4NTIsNyBAQCBJbnRSZWN0IEFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3Q6OmRvQVhCb3VuZHNGb3JSYW5nZVVzaW5nQ2hhcmFjdGVyT2Zmc2V0KGNvbnN0CiAgICAg
cmV0dXJuIGJvdW5kc0ZvclJhbmdlKCpyYW5nZSk7CiB9CiAKLUFYQ29yZU9iamVjdCogQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6YWNjZXNzaWJpbGl0eUltYWdlTWFwSGl0VGVzdChIVE1MQXJl
YUVsZW1lbnQqIGFyZWEsIGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKK0FjY2Vzc2liaWxp
dHlPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFjY2Vzc2liaWxpdHlJbWFnZU1h
cEhpdFRlc3QoSFRNTEFyZWFFbGVtZW50KiBhcmVhLCBjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNv
bnN0CiB7CiAgICAgaWYgKCFhcmVhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE4Njcs
MTMgKzE4NjcsMTMgQEAgQVhDb3JlT2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojph
Y2Nlc3NpYmlsaXR5SW1hZ2VNYXBIaXRUZXN0KEhUTUxBcmVhRWwKIAogICAgIGZvciAoY29uc3Qg
YXV0byYgY2hpbGQgOiBwYXJlbnQtPmNoaWxkcmVuKCkpIHsKICAgICAgICAgaWYgKGNoaWxkLT5l
bGVtZW50UmVjdCgpLmNvbnRhaW5zKHBvaW50KSkKLSAgICAgICAgICAgIHJldHVybiBjaGlsZC5n
ZXQoKTsKKyAgICAgICAgICAgIHJldHVybiBkeW5hbWljRG93bmNhc3Q8QWNjZXNzaWJpbGl0eU9i
amVjdD4oY2hpbGQuZ2V0KCkpOwogICAgIH0KIAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1B
WENvcmVPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnJlbW90ZVNWR0VsZW1lbnRI
aXRUZXN0KGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKK0FjY2Vzc2liaWxpdHlPYmplY3Qq
IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnJlbW90ZVNWR0VsZW1lbnRIaXRUZXN0KGNvbnN0
IEludFBvaW50JiBwb2ludCkgY29uc3QKIHsKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiByZW1v
dGUgPSByZW1vdGVTVkdSb290RWxlbWVudChDcmVhdGUpOwogICAgIGlmICghcmVtb3RlKQpAQCAt
MTg4Myw3ICsxODgzLDcgQEAgQVhDb3JlT2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjpyZW1vdGVTVkdFbGVtZW50SGl0VGVzdChjb25zdCBJbnRQb2ludCYKICAgICByZXR1cm4gcmVt
b3RlLT5hY2Nlc3NpYmlsaXR5SGl0VGVzdChJbnRQb2ludChvZmZzZXQpKTsKIH0KIAotQVhDb3Jl
T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjplbGVtZW50QWNjZXNzaWJpbGl0eUhp
dFRlc3QoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAorQWNjZXNzaWJpbGl0eU9iamVjdCog
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6ZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KGNv
bnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKIHsKICAgICBpZiAoaXNTVkdJbWFnZSgpKQogICAg
ICAgICByZXR1cm4gcmVtb3RlU1ZHRWxlbWVudEhpdFRlc3QocG9pbnQpOwpAQCAtMTg5Nyw3ICsx
ODk3LDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkVXNlU2hhZG93SG9zdEZvckhpdFRlc3RpbmcoTm9k
ZSogc2hhZG93SG9zdCkKICAgICByZXR1cm4gc2hhZG93SG9zdCAmJiAhc2hhZG93SG9zdC0+aGFz
VGFnTmFtZSh2aWRlb1RhZyk7CiB9CiAKLUFYQ29yZU9iamVjdCogQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6YWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25z
dAorQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWNjZXNz
aWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAogewogICAgIGlmICgh
bV9yZW5kZXJlciB8fCAhbV9yZW5kZXJlci0+aGFzTGF5ZXIoKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CkBAIC0xOTM2LDcgKzE5MzYsNyBAQCBBWENvcmVPYmplY3QqIEFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3Q6OmFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JiBwbwogCiAg
ICAgcmVzdWx0LT51cGRhdGVDaGlsZHJlbklmTmVjZXNzYXJ5KCk7CiAgICAgLy8gQWxsb3cgdGhl
IGVsZW1lbnQgdG8gcGVyZm9ybSBhbnkgaGl0LXRlc3RpbmcgaXQgbWlnaHQgbmVlZCB0byBkbyB0
byByZWFjaCBub24tcmVuZGVyIGNoaWxkcmVuLgotICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PEFj
Y2Vzc2liaWxpdHlPYmplY3QqPihyZXN1bHQtPmVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdChw
b2ludCkpOworICAgIHJlc3VsdCA9IHJlc3VsdC0+ZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0
KHBvaW50KTsKICAgICAKICAgICBpZiAocmVzdWx0ICYmIHJlc3VsdC0+YWNjZXNzaWJpbGl0eUlz
SWdub3JlZCgpKSB7CiAgICAgICAgIC8vIElmIHRoaXMgZWxlbWVudCBpcyB0aGUgbGFiZWwgb2Yg
YSBjb250cm9sLCBhIGhpdCB0ZXN0IHNob3VsZCByZXR1cm4gdGhlIGNvbnRyb2wuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdC5oCmluZGV4IGQ1YzAzYzU1YTAzYS4uZDFjODI4NjE1NjIzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Qu
aApAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogdGl0
bGVVSUVsZW1lbnQoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIC8vIFNob3VsZCBiZSBjYWxsZWQg
b24gdGhlIHJvb3QgYWNjZXNzaWJpbGl0eSBvYmplY3QgdG8ga2ljayBvZmYgYSBoaXQgdGVzdC4K
LSAgICBBWENvcmVPYmplY3QqIGFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50Jikg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogYWNjZXNzaWJpbGl0eUhp
dFRlc3QoY29uc3QgSW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIEVsZW1lbnQqIGFu
Y2hvckVsZW1lbnQoKSBjb25zdCBvdmVycmlkZTsKICAgICAKQEAgLTE1Nyw5ICsxNTcsOSBAQCBw
cml2YXRlOgogICAgIGJvb2wgbm9kZUlzVGV4dENvbnRyb2woY29uc3QgTm9kZSopIGNvbnN0Owog
ICAgIFBhdGggZWxlbWVudFBhdGgoKSBjb25zdCBvdmVycmlkZTsKICAgICAKLSAgICBBWENvcmVP
YmplY3QqIGFjY2Vzc2liaWxpdHlJbWFnZU1hcEhpdFRlc3QoSFRNTEFyZWFFbGVtZW50KiwgY29u
c3QgSW50UG9pbnQmKSBjb25zdDsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBhY2Nlc3NpYmls
aXR5SW1hZ2VNYXBIaXRUZXN0KEhUTUxBcmVhRWxlbWVudCosIGNvbnN0IEludFBvaW50JikgY29u
c3Q7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogYWNjZXNzaWJpbGl0eVBhcmVudEZvckltYWdl
TWFwKEhUTUxNYXBFbGVtZW50KikgY29uc3Q7Ci0gICAgQVhDb3JlT2JqZWN0KiBlbGVtZW50QWNj
ZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKKyAgICBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBlbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50
UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIGJvb2wgcmVuZGVyT2JqZWN0SXNPYnNlcnZh
YmxlKFJlbmRlck9iamVjdCYpIGNvbnN0OwogICAgIFJlbmRlck9iamVjdCogcmVuZGVyUGFyZW50
T2JqZWN0KCkgY29uc3Q7CkBAIC0xNzEsNyArMTcxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRl
dGFjaFJlbW90ZVNWR1Jvb3QoKTsKICAgICBlbnVtIENyZWF0aW9uQ2hvaWNlIHsgQ3JlYXRlLCBS
ZXRyaWV2ZSB9OwogICAgIEFjY2Vzc2liaWxpdHlTVkdSb290KiByZW1vdGVTVkdSb290RWxlbWVu
dChDcmVhdGlvbkNob2ljZSBjcmVhdGVJZk5lY2Vzc2FyeSkgY29uc3Q7Ci0gICAgQVhDb3JlT2Jq
ZWN0KiByZW1vdGVTVkdFbGVtZW50SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0OworICAg
IEFjY2Vzc2liaWxpdHlPYmplY3QqIHJlbW90ZVNWR0VsZW1lbnRIaXRUZXN0KGNvbnN0IEludFBv
aW50JikgY29uc3Q7CiAgICAgdm9pZCBvZmZzZXRCb3VuZGluZ0JveEZvclJlbW90ZVNWR0VsZW1l
bnQoTGF5b3V0UmVjdCYpIGNvbnN0OwogICAgIGJvb2wgc3VwcG9ydHNQYXRoKCkgY29uc3Qgb3Zl
cnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVNjcm9sbFZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5U2Nyb2xsVmlldy5jcHAKaW5kZXggYjdmM2UwNzFkMGFkLi42YmM4NDFlYmIwNjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNj
cm9sbFZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVNjcm9sbFZpZXcuY3BwCkBAIC0yMTIsNyArMjEyLDcgQEAgQWNjZXNzaWJpbGl0eU9iamVj
dCogQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OndlYkFyZWFPYmplY3QoKSBjb25zdAogICAgIHJl
dHVybiBudWxscHRyOwogfQogCi1BWENvcmVPYmplY3QqIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3
OjphY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CitBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6YWNjZXNzaWJpbGl0eUhp
dFRlc3QoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAogewogICAgIEFjY2Vzc2liaWxpdHlP
YmplY3QqIHdlYkFyZWEgPSB3ZWJBcmVhT2JqZWN0KCk7CiAgICAgaWYgKCF3ZWJBcmVhKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xs
Vmlldy5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xs
Vmlldy5oCmluZGV4IGMxZTMxMTlmNWZjNy4uNDBhOGYxM2YzNmFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oCkBA
IC02Miw3ICs2Miw3IEBAIHByaXZhdGU6CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogc2Nyb2xs
QmFyKEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbikgb3ZlcnJpZGU7CiAgICAgdm9pZCBhZGRDaGls
ZHJlbigpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xlYXJDaGlsZHJlbigpIG92ZXJyaWRlOwotICAg
IEFYQ29yZU9iamVjdCogYWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmKSBjb25z
dCBvdmVycmlkZTsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBhY2Nlc3NpYmlsaXR5SGl0VGVz
dChjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRlQ2hpbGRy
ZW5JZk5lY2Vzc2FyeSgpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0TmVlZHNUb1VwZGF0ZUNoaWxk
cmVuKCkgb3ZlcnJpZGUgeyBtX2NoaWxkcmVuRGlydHkgPSB0cnVlOyB9CiAgICAgdm9pZCB1cGRh
dGVTY3JvbGxiYXJzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlTbGlkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5U2xpZGVyLmNwcAppbmRleCBmNWQ4NTk2MzYzYjAuLjhjM2UyYWU3Mjk0NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xp
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlT
bGlkZXIuY3BwCkBAIC0xMTIsMTIgKzExMiwxMiBAQCBjb25zdCBBdG9tU3RyaW5nJiBBY2Nlc3Np
YmlsaXR5U2xpZGVyOjpnZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidQog
ICAgIHJldHVybiBudWxsQXRvbSgpOwogfQogICAgIAotQVhDb3JlT2JqZWN0KiBBY2Nlc3NpYmls
aXR5U2xpZGVyOjplbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmIHBv
aW50KSBjb25zdAorQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVNsaWRlcjo6ZWxl
bWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKIHsK
ICAgICBpZiAobV9jaGlsZHJlbi5zaXplKCkpIHsKICAgICAgICAgQVNTRVJUKG1fY2hpbGRyZW4u
c2l6ZSgpID09IDEpOwogICAgICAgICBpZiAobV9jaGlsZHJlblswXS0+ZWxlbWVudFJlY3QoKS5j
b250YWlucyhwb2ludCkpCi0gICAgICAgICAgICByZXR1cm4gbV9jaGlsZHJlblswXS5nZXQoKTsK
KyAgICAgICAgICAgIHJldHVybiBkeW5hbWljRG93bmNhc3Q8QWNjZXNzaWJpbGl0eU9iamVjdD4o
bV9jaGlsZHJlblswXS5nZXQoKSk7CiAgICAgfQogICAgIAogICAgIHJldHVybiBheE9iamVjdENh
Y2hlKCktPmdldE9yQ3JlYXRlKHJlbmRlcmVyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuaAppbmRleCBjMTgwMmNmOTNmOTEuLmFh
MWFjZTRmN2JjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5U2xpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5U2xpZGVyLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHJvdGVjdGVkOgogCiBwcml2YXRl
OgogICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCgpIGNvbnN0OwotICAgIEFYQ29y
ZU9iamVjdCogZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JikgY29u
c3Qgb3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogZWxlbWVudEFjY2Vzc2liaWxp
dHlIaXRUZXN0KGNvbnN0IEludFBvaW50JikgY29uc3QgZmluYWw7CiAKICAgICBBY2Nlc3NpYmls
aXR5Um9sZSBkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSgpIGZpbmFsIHsgcmV0dXJuIEFjY2Vz
c2liaWxpdHlSb2xlOjpTbGlkZXI7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCmluZGV4IGVlNjFkYTAyOTJmNS4uN2YxZDA4
NzgxZTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlUYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5VGFibGUuY3BwCkBAIC03ODUsNyArNzg1LDcgQEAgdW5zaWduZWQgQWNjZXNzaWJpbGl0
eVRhYmxlOjpyb3dDb3VudCgpCiAgICAgcmV0dXJuIG1fcm93cy5zaXplKCk7CiB9CiAKLUFYQ29y
ZU9iamVjdCogQWNjZXNzaWJpbGl0eVRhYmxlOjpjZWxsRm9yQ29sdW1uQW5kUm93KHVuc2lnbmVk
IGNvbHVtbiwgdW5zaWduZWQgcm93KQorQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0
eVRhYmxlOjpjZWxsRm9yQ29sdW1uQW5kUm93KHVuc2lnbmVkIGNvbHVtbiwgdW5zaWduZWQgcm93
KQogewogICAgIHVwZGF0ZUNoaWxkcmVuSWZOZWNlc3NhcnkoKTsKICAgICBpZiAocm93ID49IG1f
Y2VsbFNsb3RzLnNpemUoKSB8fCBjb2x1bW4gPj0gbV9jZWxsU2xvdHNbcm93XS5zaXplKCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJs
ZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuaApp
bmRleCBlNDhhNzFlMmM2ZGIuLmNiZjU4Y2JjMDdlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5oCkBAIC02NSw3ICs2NSw3IEBAIHB1
YmxpYzoKIAogICAgIC8vIGFsbCB0aGUgY2VsbHMgaW4gdGhlIHRhYmxlCiAgICAgQWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yIGNlbGxzKCkgb3ZlcnJpZGU7Ci0gICAgQVhDb3JlT2JqZWN0KiBj
ZWxsRm9yQ29sdW1uQW5kUm93KHVuc2lnbmVkIGNvbHVtbiwgdW5zaWduZWQgcm93KSBvdmVycmlk
ZTsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjZWxsRm9yQ29sdW1uQW5kUm93KHVuc2lnbmVk
IGNvbHVtbiwgdW5zaWduZWQgcm93KSBvdmVycmlkZTsKIAogICAgIEFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciBjb2x1bW5IZWFkZXJzKCkgb3ZlcnJpZGU7CiAgICAgQWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yIHJvd0hlYWRlcnMoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwCmluZGV4IDM1
YzJkZjYzZmU0Ny4uNzgxNGI2ZWY4MjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5jcHAKQEAgLTI3MSw3ICsyNzEs
NyBAQCBBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBBY2Nlc3NpYmls
aXR5VGFibGVDZWxsOjpjb2x1bW5IZWFkZXJzKAogICAgICAgICBBU1NFUlQoaXM8QWNjZXNzaWJp
bGl0eU9iamVjdD4odGFibGVDZWxsKSk7CiAgICAgICAgIGlmICh0YWJsZUNlbGwtPmNlbGxTY29w
ZSgpID09ICJjb2xncm91cCJfcyAmJiBpc1RhYmxlQ2VsbEluU2FtZUNvbEdyb3VwKHRhYmxlQ2Vs
bCkpCiAgICAgICAgICAgICBoZWFkZXJzLmFwcGVuZCh0YWJsZUNlbGwpOwotICAgICAgICBlbHNl
IGlmIChkb3duY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Pih0YWJsZUNlbGwpLT5pc0NvbHVtbkhl
YWRlcigpKQorICAgICAgICBlbHNlIGlmICh0YWJsZUNlbGwtPmlzQ29sdW1uSGVhZGVyKCkpCiAg
ICAgICAgICAgICBoZWFkZXJzLmFwcGVuZCh0YWJsZUNlbGwpOwogICAgIH0KIApAQCAtMjk1LDcg
KzI5NSw3IEBAIEFYQ29yZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIEFjY2Vz
c2liaWxpdHlUYWJsZUNlbGw6OnJvd0hlYWRlcnMoKQogCiAgICAgICAgIGlmICh0YWJsZUNlbGwt
PmNlbGxTY29wZSgpID09ICJyb3dncm91cCJfcyAmJiBpc1RhYmxlQ2VsbEluU2FtZVJvd0dyb3Vw
KHRhYmxlQ2VsbCkpCiAgICAgICAgICAgICBoZWFkZXJzLmFwcGVuZCh0YWJsZUNlbGwpOwotICAg
ICAgICBlbHNlIGlmIChkb3duY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Pih0YWJsZUNlbGwpLT5p
c1Jvd0hlYWRlcigpKQorICAgICAgICBlbHNlIGlmICh0YWJsZUNlbGwtPmlzUm93SGVhZGVyKCkp
CiAgICAgICAgICAgICBoZWFkZXJzLmFwcGVuZCh0YWJsZUNlbGwpOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQWNjZXNzaWJpbGl0eU9iamVj
dElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FjY2Vzc2liaWxpdHlP
YmplY3RJT1MubW0KaW5kZXggMTc2YjY4MGMzZTZjLi5iZDQwNjFkMDE0NjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FjY2Vzc2liaWxpdHlPYmplY3RJT1Mu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQWNjZXNzaWJpbGl0eU9i
amVjdElPUy5tbQpAQCAtNzcsNyArNzcsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmZp
bGVVcGxvYWRCdXR0b25SZXR1cm5zVmFsdWVJblRpdGxlKCkgY29uc3QKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKLXZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6b3ZlcnJpZGVBdHRhY2htZW50UGFy
ZW50KEFYQ29yZU9iamVjdCopCit2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6Om92ZXJyaWRlQXR0
YWNobWVudFBhcmVudChBY2Nlc3NpYmlsaXR5T2JqZWN0KikKIHsKIH0KICAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRP
YmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJ
c29sYXRlZE9iamVjdC5jcHAKaW5kZXggN2FlNDY2MTNiNjE0Li4yZmI0YTE2OTFmZDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0
ZWRPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0
cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCkBAIC0zNzksNjkgKzM3OSw2MCBAQCB2b2lkIEFYSXNv
bGF0ZWRPYmplY3Q6OnNldE1hdGhzY3JpcHRzKEFYUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
QVhDb3JlT2JqZWN0JgogCiB2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OnNldE9iamVjdFByb3BlcnR5
KEFYUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgQVhDb3JlT2JqZWN0KiBvYmplY3QpCiB7Ci0g
ICAgaWYgKG9iamVjdCkKLSAgICAgICAgc2V0UHJvcGVydHkocHJvcGVydHlOYW1lLCBvYmplY3Qt
Pm9iamVjdElEKCkpOwotICAgIGVsc2UKLSAgICAgICAgc2V0UHJvcGVydHkocHJvcGVydHlOYW1l
LCBudWxscHRyLCB0cnVlKTsKKyAgICBzZXRQcm9wZXJ0eShwcm9wZXJ0eU5hbWUsIG9iamVjdCA/
IG9iamVjdC0+b2JqZWN0SUQoKSA6IEFYSUQoKSk7CiB9CiAKIHZvaWQgQVhJc29sYXRlZE9iamVj
dDo6c2V0T2JqZWN0VmVjdG9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBj
b25zdCBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIG9iamVjdHMpCiB7Ci0gICAgaWYgKG9i
amVjdHMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47CiAgICAgc2V0UHJvcGVydHkocHJvcGVy
dHlOYW1lLCBheElEcyhvYmplY3RzKSk7CiB9CiAKLXZvaWQgQVhJc29sYXRlZE9iamVjdDo6c2V0
UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBBWFByb3BlcnR5VmFsdWVWYXJp
YW50JiYgdmFsdWUsIGJvb2wgc2hvdWxkUmVtb3ZlKQotewotICAgIGlmIChzaG91bGRSZW1vdmUp
Ci0gICAgICAgIG1fcHJvcGVydHlNYXAucmVtb3ZlKHByb3BlcnR5TmFtZSk7Ci0gICAgZWxzZSB7
Ci0gICAgICAgIGJvb2wgaXNEZWZhdWx0VmFsdWUgPSBXVEY6OnN3aXRjaE9uKHZhbHVlLAotICAg
ICAgICAgICAgW10oc3RkOjpudWxscHRyX3QmKSB7IHJldHVybiB0cnVlOyB9LAotICAgICAgICAg
ICAgW10oQVhJRCB0eXBlZFZhbHVlKSB7IHJldHVybiAhdHlwZWRWYWx1ZS5pc1ZhbGlkKCk7IH0s
Ci0gICAgICAgICAgICBbXShTdHJpbmcmIHR5cGVkVmFsdWUpIHsgcmV0dXJuIHR5cGVkVmFsdWUg
PT0gZW1wdHlTdHJpbmcoKTsgfSwKLSAgICAgICAgICAgIFtdKGJvb2wgdHlwZWRWYWx1ZSkgeyBy
ZXR1cm4gIXR5cGVkVmFsdWU7IH0sCi0gICAgICAgICAgICBbXShpbnQgdHlwZWRWYWx1ZSkgeyBy
ZXR1cm4gIXR5cGVkVmFsdWU7IH0sCi0gICAgICAgICAgICBbXSh1bnNpZ25lZCB0eXBlZFZhbHVl
KSB7IHJldHVybiAhdHlwZWRWYWx1ZTsgfSwKLSAgICAgICAgICAgIFtdKGRvdWJsZSB0eXBlZFZh
bHVlKSB7IHJldHVybiB0eXBlZFZhbHVlID09IDAuMDsgfSwKLSAgICAgICAgICAgIFtdKGZsb2F0
IHR5cGVkVmFsdWUpIHsgcmV0dXJuIHR5cGVkVmFsdWUgPT0gMC4wOyB9LAotICAgICAgICAgICAg
W10odWludDY0X3QgdHlwZWRWYWx1ZSkgeyByZXR1cm4gIXR5cGVkVmFsdWU7IH0sCi0gICAgICAg
ICAgICBbXShBY2Nlc3NpYmlsaXR5QnV0dG9uU3RhdGUmIHR5cGVkVmFsdWUpIHsgcmV0dXJuIHR5
cGVkVmFsdWUgPT0gQWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRlOjpPZmY7IH0sCi0gICAgICAgICAg
ICBbXShDb2xvciYgdHlwZWRWYWx1ZSkgeyByZXR1cm4gdHlwZWRWYWx1ZSA9PSBDb2xvcigpOyB9
LAotICAgICAgICAgICAgW10oVVJMJiB0eXBlZFZhbHVlKSB7IHJldHVybiB0eXBlZFZhbHVlID09
IFVSTCgpOyB9LAotICAgICAgICAgICAgW10oTGF5b3V0UmVjdCYgdHlwZWRWYWx1ZSkgeyByZXR1
cm4gdHlwZWRWYWx1ZSA9PSBMYXlvdXRSZWN0KCk7IH0sCi0gICAgICAgICAgICBbXShJbnRQb2lu
dCYgdHlwZWRWYWx1ZSkgeyByZXR1cm4gdHlwZWRWYWx1ZSA9PSBJbnRQb2ludCgpOyB9LAotICAg
ICAgICAgICAgW10oSW50UmVjdCYgdHlwZWRWYWx1ZSkgeyByZXR1cm4gdHlwZWRWYWx1ZSA9PSBJ
bnRSZWN0KCk7IH0sCi0gICAgICAgICAgICBbXShzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVk
PiYgdHlwZWRWYWx1ZSkgewotICAgICAgICAgICAgICAgIC8vICgwLCAxKSBpcyB0aGUgZGVmYXVs
dCBmb3IgYW4gaW5kZXggcmFuZ2UuCi0gICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVkVmFsdWUg
PT0gc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4oMCwgMSk7Ci0gICAgICAgICAgICB9LAot
ICAgICAgICAgICAgW10oVmVjdG9yPEFjY2Vzc2liaWxpdHlUZXh0PiYgdHlwZWRWYWx1ZSkgeyBy
ZXR1cm4gdHlwZWRWYWx1ZS5pc0VtcHR5KCk7IH0sCi0gICAgICAgICAgICBbXShWZWN0b3I8QVhJ
RD4mIHR5cGVkVmFsdWUpIHsgcmV0dXJuIHR5cGVkVmFsdWUuaXNFbXB0eSgpOyB9LAotICAgICAg
ICAgICAgW10oVmVjdG9yPHN0ZDo6cGFpcjxBWElELCBBWElEPj4mIHR5cGVkVmFsdWUpIHsgcmV0
dXJuIHR5cGVkVmFsdWUuaXNFbXB0eSgpOyB9LAotICAgICAgICAgICAgW10oVmVjdG9yPFN0cmlu
Zz4mIHR5cGVkVmFsdWUpIHsgcmV0dXJuIHR5cGVkVmFsdWUuaXNFbXB0eSgpOyB9LAotICAgICAg
ICAgICAgW10oUGF0aCYgdHlwZWRWYWx1ZSkgeyByZXR1cm4gdHlwZWRWYWx1ZSA9PSBQYXRoKCk7
IH0sCi0gICAgICAgICAgICBbXShPcHRpb25TZXQ8QVhBbmNlc3RvckZsYWc+JiB0eXBlZFZhbHVl
KSB7IHJldHVybiB0eXBlZFZhbHVlLmlzRW1wdHkoKTsgfSwKK3ZvaWQgQVhJc29sYXRlZE9iamVj
dDo6c2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBBWFByb3BlcnR5VmFs
dWVWYXJpYW50JiYgdmFsdWUpCit7CisgICAgYm9vbCBpc0RlZmF1bHRWYWx1ZSA9IFdURjo6c3dp
dGNoT24odmFsdWUsCisgICAgICAgIFtdKHN0ZDo6bnVsbHB0cl90JikgeyByZXR1cm4gdHJ1ZTsg
fSwKKyAgICAgICAgW10oQVhJRCB0eXBlZFZhbHVlKSB7IHJldHVybiAhdHlwZWRWYWx1ZS5pc1Zh
bGlkKCk7IH0sCisgICAgICAgIFtdKFN0cmluZyYgdHlwZWRWYWx1ZSkgeyByZXR1cm4gdHlwZWRW
YWx1ZSA9PSBlbXB0eVN0cmluZygpOyB9LAorICAgICAgICBbXShib29sIHR5cGVkVmFsdWUpIHsg
cmV0dXJuICF0eXBlZFZhbHVlOyB9LAorICAgICAgICBbXShpbnQgdHlwZWRWYWx1ZSkgeyByZXR1
cm4gIXR5cGVkVmFsdWU7IH0sCisgICAgICAgIFtdKHVuc2lnbmVkIHR5cGVkVmFsdWUpIHsgcmV0
dXJuICF0eXBlZFZhbHVlOyB9LAorICAgICAgICBbXShkb3VibGUgdHlwZWRWYWx1ZSkgeyByZXR1
cm4gdHlwZWRWYWx1ZSA9PSAwLjA7IH0sCisgICAgICAgIFtdKGZsb2F0IHR5cGVkVmFsdWUpIHsg
cmV0dXJuIHR5cGVkVmFsdWUgPT0gMC4wOyB9LAorICAgICAgICBbXSh1aW50NjRfdCB0eXBlZFZh
bHVlKSB7IHJldHVybiAhdHlwZWRWYWx1ZTsgfSwKKyAgICAgICAgW10oQWNjZXNzaWJpbGl0eUJ1
dHRvblN0YXRlJiB0eXBlZFZhbHVlKSB7IHJldHVybiB0eXBlZFZhbHVlID09IEFjY2Vzc2liaWxp
dHlCdXR0b25TdGF0ZTo6T2ZmOyB9LAorICAgICAgICBbXShDb2xvciYgdHlwZWRWYWx1ZSkgeyBy
ZXR1cm4gdHlwZWRWYWx1ZSA9PSBDb2xvcigpOyB9LAorICAgICAgICBbXShVUkwmIHR5cGVkVmFs
dWUpIHsgcmV0dXJuIHR5cGVkVmFsdWUgPT0gVVJMKCk7IH0sCisgICAgICAgIFtdKExheW91dFJl
Y3QmIHR5cGVkVmFsdWUpIHsgcmV0dXJuIHR5cGVkVmFsdWUgPT0gTGF5b3V0UmVjdCgpOyB9LAor
ICAgICAgICBbXShJbnRQb2ludCYgdHlwZWRWYWx1ZSkgeyByZXR1cm4gdHlwZWRWYWx1ZSA9PSBJ
bnRQb2ludCgpOyB9LAorICAgICAgICBbXShJbnRSZWN0JiB0eXBlZFZhbHVlKSB7IHJldHVybiB0
eXBlZFZhbHVlID09IEludFJlY3QoKTsgfSwKKyAgICAgICAgW10oc3RkOjpwYWlyPHVuc2lnbmVk
LCB1bnNpZ25lZD4mIHR5cGVkVmFsdWUpIHsKKyAgICAgICAgICAgIC8vICgwLCAxKSBpcyB0aGUg
ZGVmYXVsdCBmb3IgYW4gaW5kZXggcmFuZ2UuCisgICAgICAgICAgICByZXR1cm4gdHlwZWRWYWx1
ZSA9PSBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPigwLCAxKTsKKyAgICAgICAgfSwKKyAg
ICAgICAgW10oVmVjdG9yPEFjY2Vzc2liaWxpdHlUZXh0PiYgdHlwZWRWYWx1ZSkgeyByZXR1cm4g
dHlwZWRWYWx1ZS5pc0VtcHR5KCk7IH0sCisgICAgICAgIFtdKFZlY3RvcjxBWElEPiYgdHlwZWRW
YWx1ZSkgeyByZXR1cm4gdHlwZWRWYWx1ZS5pc0VtcHR5KCk7IH0sCisgICAgICAgIFtdKFZlY3Rv
cjxzdGQ6OnBhaXI8QVhJRCwgQVhJRD4+JiB0eXBlZFZhbHVlKSB7IHJldHVybiB0eXBlZFZhbHVl
LmlzRW1wdHkoKTsgfSwKKyAgICAgICAgW10oVmVjdG9yPFN0cmluZz4mIHR5cGVkVmFsdWUpIHsg
cmV0dXJuIHR5cGVkVmFsdWUuaXNFbXB0eSgpOyB9LAorICAgICAgICBbXShQYXRoJiB0eXBlZFZh
bHVlKSB7IHJldHVybiB0eXBlZFZhbHVlID09IFBhdGgoKTsgfSwKKyAgICAgICAgW10oT3B0aW9u
U2V0PEFYQW5jZXN0b3JGbGFnPiYgdHlwZWRWYWx1ZSkgeyByZXR1cm4gdHlwZWRWYWx1ZS5pc0Vt
cHR5KCk7IH0sCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgICAgICAgICBbXShSZXRhaW5QdHI8
TlNBdHRyaWJ1dGVkU3RyaW5nPiYgdHlwZWRWYWx1ZSkgeyByZXR1cm4gIXR5cGVkVmFsdWU7IH0s
CisgICAgICAgIFtdKFJldGFpblB0cjxOU0F0dHJpYnV0ZWRTdHJpbmc+JiB0eXBlZFZhbHVlKSB7
IHJldHVybiAhdHlwZWRWYWx1ZTsgfSwKICNlbmRpZgotICAgICAgICAgICAgW10oSW5zaWRlTGlu
ayYgdHlwZWRWYWx1ZSkgeyByZXR1cm4gdHlwZWRWYWx1ZSA9PSBJbnNpZGVMaW5rKCk7IH0sCi0g
ICAgICAgICAgICBbXShWZWN0b3I8VmVjdG9yPEFYSUQ+PiYgdHlwZWRWYWx1ZSkgeyByZXR1cm4g
dHlwZWRWYWx1ZS5pc0VtcHR5KCk7IH0sCi0gICAgICAgICAgICBbXShDaGFyYWN0ZXJSYW5nZSYg
dHlwZWRWYWx1ZSkgeyByZXR1cm4gIXR5cGVkVmFsdWUubG9jYXRpb24gJiYgIXR5cGVkVmFsdWUu
bGVuZ3RoOyB9LAotICAgICAgICAgICAgW10oc3RkOjpwYWlyPEFYSUQsIENoYXJhY3RlclJhbmdl
PiYgdHlwZWRWYWx1ZSkgewotICAgICAgICAgICAgICAgIHJldHVybiAhdHlwZWRWYWx1ZS5maXJz
dC5pc1ZhbGlkKCkgJiYgIXR5cGVkVmFsdWUuc2Vjb25kLmxvY2F0aW9uICYmICF0eXBlZFZhbHVl
LnNlY29uZC5sZW5ndGg7Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgW10oYXV0byYpIHsK
LSAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICk7Ci0gICAgICAgIGlmIChpc0Rl
ZmF1bHRWYWx1ZSkKLSAgICAgICAgICAgIG1fcHJvcGVydHlNYXAucmVtb3ZlKHByb3BlcnR5TmFt
ZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fcHJvcGVydHlNYXAuc2V0KHByb3BlcnR5
TmFtZSwgdmFsdWUpOwotICAgIH0KKyAgICAgICAgW10oSW5zaWRlTGluayYgdHlwZWRWYWx1ZSkg
eyByZXR1cm4gdHlwZWRWYWx1ZSA9PSBJbnNpZGVMaW5rKCk7IH0sCisgICAgICAgIFtdKFZlY3Rv
cjxWZWN0b3I8QVhJRD4+JiB0eXBlZFZhbHVlKSB7IHJldHVybiB0eXBlZFZhbHVlLmlzRW1wdHko
KTsgfSwKKyAgICAgICAgW10oQ2hhcmFjdGVyUmFuZ2UmIHR5cGVkVmFsdWUpIHsgcmV0dXJuICF0
eXBlZFZhbHVlLmxvY2F0aW9uICYmICF0eXBlZFZhbHVlLmxlbmd0aDsgfSwKKyAgICAgICAgW10o
c3RkOjpwYWlyPEFYSUQsIENoYXJhY3RlclJhbmdlPiYgdHlwZWRWYWx1ZSkgeworICAgICAgICAg
ICAgcmV0dXJuICF0eXBlZFZhbHVlLmZpcnN0LmlzVmFsaWQoKSAmJiAhdHlwZWRWYWx1ZS5zZWNv
bmQubG9jYXRpb24gJiYgIXR5cGVkVmFsdWUuc2Vjb25kLmxlbmd0aDsKKyAgICAgICAgfSwKKyAg
ICAgICAgW10oYXV0byYpIHsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgKTsKKyAgICBpZiAoaXNEZWZh
dWx0VmFsdWUpCisgICAgICAgIG1fcHJvcGVydHlNYXAucmVtb3ZlKHByb3BlcnR5TmFtZSk7Cisg
ICAgZWxzZQorICAgICAgICBtX3Byb3BlcnR5TWFwLnNldChwcm9wZXJ0eU5hbWUsIHZhbHVlKTsK
IH0KIAogdm9pZCBBWElzb2xhdGVkT2JqZWN0OjpkZXRhY2hSZW1vdGVQYXJ0cyhBY2Nlc3NpYmls
aXR5RGV0YWNobWVudFR5cGUpCkBAIC0xNjc2LDEyICsxNjY3LDYgQEAgYm9vbCBBWElzb2xhdGVk
T2JqZWN0Ojppc1RhYmxlQ2VsbCgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1BWENv
cmVPYmplY3QqIEFYSXNvbGF0ZWRPYmplY3Q6OmVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdChj
b25zdCBJbnRQb2ludCYpIGNvbnN0Ci17Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
cmV0dXJuIG51bGxwdHI7Ci19Ci0KIGJvb2wgQVhJc29sYXRlZE9iamVjdDo6aXNEZXNjZW5kYW50
T2ZSb2xlKEFjY2Vzc2liaWxpdHlSb2xlKSBjb25zdAogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRy
ZWUvQVhJc29sYXRlZE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29s
YXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oCmluZGV4IGJiMTFkYmNkNTJjNy4uZGI5NzU4MTEz
NTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJl
ZS9BWElzb2xhdGVkT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
c29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oCkBAIC04MCw3ICs4MCw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBpbml0aWFsaXplUHJvcGVydGllcyhjb25zdCBSZWY8QWNjZXNzaWJpbGl0eU9i
amVjdD4mKTsKICAgICB2b2lkIGluaXRpYWxpemVQbGF0Zm9ybVByb3BlcnRpZXMoY29uc3QgUmVm
PGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3Q+Jik7CiAKLSAgICB2b2lkIHNldFByb3BlcnR5KEFY
UHJvcGVydHlOYW1lLCBBWFByb3BlcnR5VmFsdWVWYXJpYW50JiYsIGJvb2wgc2hvdWxkUmVtb3Zl
ID0gZmFsc2UpOworICAgIHZvaWQgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWUsIEFYUHJvcGVy
dHlWYWx1ZVZhcmlhbnQmJik7CiAgICAgdm9pZCBzZXRPYmplY3RQcm9wZXJ0eShBWFByb3BlcnR5
TmFtZSwgQVhDb3JlT2JqZWN0Kik7CiAgICAgdm9pZCBzZXRPYmplY3RWZWN0b3JQcm9wZXJ0eShB
WFByb3BlcnR5TmFtZSwgY29uc3QgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJik7CiAKQEAg
LTQ2OCw3ICs0NjgsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgc3VwcG9ydHNQcmVzc0FjdGlvbigp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6
U3VwcG9ydHNQcmVzc0FjdGlvbik7IH0KICAgICBib29sIHN1cHBvcnRzQ2hlY2tlZCgpIGNvbnN0
IG92ZXJyaWRlOwogICAgIGJvb2wgaXNNb2RhbE5vZGUoKSBjb25zdCBvdmVycmlkZTsKLSAgICBB
WENvcmVPYmplY3QqIGVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYp
IGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgaXNEZXNjZW5kYW50T2ZSb2xlKEFjY2Vzc2liaWxp
dHlSb2xlKSBjb25zdCBvdmVycmlkZTsKICAgICBBWENvcmVPYmplY3QqIGNvcnJlc3BvbmRpbmdM
YWJlbEZvckNvbnRyb2xFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgQVhDb3JlT2JqZWN0
KiBjb3JyZXNwb25kaW5nQ29udHJvbEZvckxhYmVsRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJ
c29sYXRlZFRyZWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRy
ZWUvQVhJc29sYXRlZFRyZWUuY3BwCmluZGV4IGQxMzliZTc0MzVkMy4uMDRiY2MyZjFiMTM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElz
b2xhdGVkVHJlZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRl
ZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwCkBAIC05MzksNyArOTM5LDcgQEAgdm9pZCBBWElzb2xh
dGVkVHJlZTo6cmVtb3ZlU3VidHJlZUZyb21Ob2RlTWFwKEFYSUQgb2JqZWN0SUQsIEFjY2Vzc2li
aWxpdHlPYmplY3QKICAgICB9CiB9CiAKLXN0ZDo6b3B0aW9uYWw8VmVjdG9yPEFYSUQ+PiBBWElz
b2xhdGVkVHJlZTo6cmVsYXRlZE9iamVjdElEc0Zvcihjb25zdCBBWENvcmVPYmplY3QmIG9iamVj
dCwgQVhSZWxhdGlvblR5cGUgcmVsYXRpb25UeXBlKQorc3RkOjpvcHRpb25hbDxWZWN0b3I8QVhJ
RD4+IEFYSXNvbGF0ZWRUcmVlOjpyZWxhdGVkT2JqZWN0SURzRm9yKGNvbnN0IEFYSXNvbGF0ZWRP
YmplY3QmIG9iamVjdCwgQVhSZWxhdGlvblR5cGUgcmVsYXRpb25UeXBlKQogewogICAgIEFTU0VS
VCghaXNNYWluVGhyZWFkKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaAppbmRleCBhMmQ4ZmJhNmQw
M2QuLmY1OTgxZGFkMTI4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCkBAIC0zMTUsNyArMzE1LDcg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0Rm9jdXNlZE5vZGVJRChBWElEKTsKIAogICAgIC8vIFJl
bGF0aW9uc2hpcHMgYmV0d2VlbiBvYmplY3RzLgotICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPEFY
SUQ+PiByZWxhdGVkT2JqZWN0SURzRm9yKGNvbnN0IEFYQ29yZU9iamVjdCYsIEFYUmVsYXRpb25U
eXBlKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxBWElEPj4gcmVsYXRlZE9iamVjdElEc0Zv
cihjb25zdCBBWElzb2xhdGVkT2JqZWN0JiwgQVhSZWxhdGlvblR5cGUpOwogICAgIHZvaWQgcmVs
YXRpb25zTmVlZFVwZGF0ZShib29sIG5lZWRVcGRhdGUpIHsgbV9yZWxhdGlvbnNOZWVkVXBkYXRl
ID0gbmVlZFVwZGF0ZTsgfQogCiAgICAgLy8gQ2FsbGVkIG9uIEFYIHRocmVhZCBmcm9tIFdlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIG1ldGhvZHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbQppbmRleCBkNzg2YzllNjE2
NDQuLmM3OWVmNzY1MTY3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tCkBAIC00NjAsMTEgKzQ2MCw4IEBAIHZvaWQgQVhP
YmplY3RDYWNoZTo6cG9zdFBsYXRmb3JtTm90aWZpY2F0aW9uKEFYQ29yZU9iamVjdCogb2JqZWN0
LCBBWE5vdGlmaWNhdGlvCiB9CiAKICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9U
UkVFKQotc3RhdGljIHZvaWQgY3JlYXRlSXNvbGF0ZWRPYmplY3RJZk5lZWRlZChBWENvcmVPYmpl
Y3QmIG9iamVjdCwgc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEKQorc3RhdGlj
IHZvaWQgY3JlYXRlSXNvbGF0ZWRPYmplY3RJZk5lZWRlZChBY2Nlc3NpYmlsaXR5T2JqZWN0JiBv
YmplY3QsIHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkKIHsKLSAgICBpZiAo
IWlzPEFjY2Vzc2liaWxpdHlPYmplY3Q+KG9iamVjdCkpCi0gICAgICAgIHJldHVybjsKLQogICAg
IC8vIFRoZSB3cmFwcGVyIGFzc29jaWF0ZWQgd2l0aCBhIHB1Ymxpc2hlZCBub3RpZmljYXRpb24g
bWF5IG5vdCBoYXZlIGFuIGlzb2xhdGVkIG9iamVjdCB5ZXQuCiAgICAgLy8gVGhpcyBzaG91bGQg
b25seSBoYXBwZW4gd2hlbiB0aGUgbGl2ZSBvYmplY3QgaXMgaWdub3JlZCwgbWVhbmluZyB3ZSB3
aWxsIG5ldmVyIGNyZWF0ZSBhbiBpc29sYXRlZCBvYmplY3QgZm9yIGl0LgogICAgIC8vIFRoaXMg
aXMgZ2VuZXJhbGx5IGNvcnJlY3QsIGJ1dCBub3QgaW4gdGhpcyBjYXNlLCBzaW5jZSBBWCBjbGll
bnRzIHdpbGwgdHJ5IHRvIHF1ZXJ5IHRoaXMgd3JhcHBlciBidXQgdGhlIHdyYXBwZXIKQEAgLTQ3
Nyw3ICs0NzQsNyBAQCBzdGF0aWMgdm9pZCBjcmVhdGVJc29sYXRlZE9iamVjdElmTmVlZGVkKEFY
Q29yZU9iamVjdCYgb2JqZWN0LCBzdGQ6Om9wdGlvbmFsPFBhZwogCiAgICAgaWYgKG9iamVjdC5h
Y2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpIHsKICAgICAgICAgaWYgKGF1dG8gdHJlZSA9IEFYSXNv
bGF0ZWRUcmVlOjp0cmVlRm9yUGFnZUlEKHBhZ2VJRCkpCi0gICAgICAgICAgICB0cmVlLT5hZGRV
bmNvbm5lY3RlZE5vZGUoZG93bmNhc3Q8QWNjZXNzaWJpbGl0eU9iamVjdD4ob2JqZWN0KSk7Cisg
ICAgICAgICAgICB0cmVlLT5hZGRVbmNvbm5lY3RlZE5vZGUob2JqZWN0KTsKICAgICB9CiB9CiAj
ZW5kaWYKQEAgLTU4MSw3ICs1NzgsNyBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0U3Rh
dGVDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KgogICAgIHBv
c3RUZXh0UmVwbGFjZW1lbnRQbGF0Zm9ybU5vdGlmaWNhdGlvbihvYmplY3QsIEFYVGV4dEVkaXRU
eXBlVW5rbm93biwgZW1wdHlTdHJpbmcoKSwgdHlwZSwgdGV4dCwgcG9zaXRpb24pOwogfQogCi1z
dGF0aWMgdm9pZCBwb3N0VXNlckluZm9Gb3JDaGFuZ2VzKEFYQ29yZU9iamVjdCYgcm9vdFdlYkFy
ZWEsIEFYQ29yZU9iamVjdCYgb2JqZWN0LCBOU011dGFibGVBcnJheSogY2hhbmdlcywgc3RkOjpv
cHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEKQorc3RhdGljIHZvaWQgcG9zdFVzZXJJbmZv
Rm9yQ2hhbmdlcyhBY2Nlc3NpYmlsaXR5T2JqZWN0JiByb290V2ViQXJlYSwgQWNjZXNzaWJpbGl0
eU9iamVjdCYgb2JqZWN0LCBOU011dGFibGVBcnJheSAqY2hhbmdlcywgc3RkOjpvcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4gcGFnZUlEKQogewogICAgIGF1dG8gdXNlckluZm8gPSBhZG9wdE5TKFtb
TlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTo0XSk7CiAgICAgW3Vz
ZXJJbmZvIHNldE9iamVjdDpAKHBsYXRmb3JtQ2hhbmdlVHlwZUZvcldlYkNvcmVDaGFuZ2VUeXBl
KEFYVGV4dFN0YXRlQ2hhbmdlVHlwZUVkaXQpKSBmb3JLZXk6TlNBY2Nlc3NpYmlsaXR5VGV4dFN0
YXRlQ2hhbmdlVHlwZUtleV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdE1hYy5tbQppbmRleCA0MDgxNTc0OWNjYmMu
LjIxMTY5NGIzOTFiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9t
YWMvQWNjZXNzaWJpbGl0eU9iamVjdE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFjLm1tCkBAIC02Niw3ICs2Niw3IEBAIHZv
aWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6ZGV0YWNoRnJvbVBhcmVudCgpCiAgICAgICAgIG92ZXJy
aWRlQXR0YWNobWVudFBhcmVudChudWxscHRyKTsKIH0KIAotdm9pZCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpvdmVycmlkZUF0dGFjaG1lbnRQYXJlbnQoQVhDb3JlT2JqZWN0KiBwYXJlbnQpCit2b2lk
IEFjY2Vzc2liaWxpdHlPYmplY3Q6Om92ZXJyaWRlQXR0YWNobWVudFBhcmVudChBY2Nlc3NpYmls
aXR5T2JqZWN0KiBwYXJlbnQpCiB7CiAgICAgaWYgKCFpc0F0dGFjaG1lbnQoKSkKICAgICAgICAg
cmV0dXJuOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>468108</attachid>
            <date>2023-10-07 14:35:07 -0700</date>
            <delta_ts>2023-10-07 18:19:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-262844-20231007143506.patch</filename>
            <type>text/plain</type>
            <size>35928</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">RnJvbSA5NWNmYTUzYzU5YWVlMDQ0YTI1MGMxNTY0MDIxZWRlY2MxZjk0OGQ4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUeWxlciBXaWxjb2NrIDx0eWxlcl93QGFwcGxlLmNvbT4KRGF0
ZTogU2F0LCA3IE9jdCAyMDIzIDEyOjI5OjMwIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gQVg6IFVz
ZSBtb3JlIHNwZWNpZmljIHR5cGVzIGluIEFjY2Vzc2liaWxpdHlPYmplY3QgYW5kCiBzdWJjbGFz
c2VzIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjI4NDQKIHJkYXI6
Ly9wcm9ibGVtLzExNjYyNTM0MgoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpUaGlzIGlt
cHJvdmVzIHR5cGUgc2FmZXR5LCBnaXZlcyB0aGUgb3B0aW1pemVyIG1vcmUgaW5mb3JtYXRpb24g
dG8gd29yayB3aXRoLCBhbmQgZ2VuZXJhbGx5IG1ha2VzIG1vcmUgc2Vuc2UKKGFuIEFjY2Vzc2li
aWxpdHlPYmplY3Qgc2hvdWxkIG5ldmVyIGJlIGFibGUgdG8gcmV0dXJuIHRoZSBvdGhlciBBWENv
cmVPYmplY3QgdmFyaWFudCwgQVhJc29sYXRlZE9iamVjdCkuCgpUaGlzIHBhdGNoIGFsc28gZG9l
cyBhbm90aGVyIHVucmVsYXRlZCBjbGVhbi11cCwgcmVtb3ZpbmcgdGhlIHNob3VsZFJlbW92ZSBw
YXJhbWV0ZXIgZnJvbSBBWElzb2xhdGVkT2JqZWN0OjpzZXRQcm9wZXJ0eSwKYXMgaXQgb25seSBo
YWQgb25lIHVzZSB0aGF0IGhhcyBiZWVuIG1hZGUgcmVkdW5kYW50IGJ5IG1ha2luZyBBWElzb2xh
dGVkT2JqZWN0OjptX3Byb3BlcnR5TWFwIHNwYXJzZSBpbiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjYxOTY4LgoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FYQ29yZU9iamVjdC5oOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eUxpc3RCb3guY3BwOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUxpc3RCb3g6OmVsZW1lbnRB
Y2Nlc3NpYmlsaXR5SGl0VGVzdCBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5oOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpp
c1RhYkl0ZW1TZWxlY3RlZCBjb25zdCk6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpl
bGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3QgY29uc3QpOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6Zm9jdXNlZFVJRWxlbWVudCBjb25zdCk6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpzZWxlY3RlZENoaWxkcmVuKToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlPYmplY3QuaDoKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om92
ZXJyaWRlQXR0YWNobWVudFBhcmVudCk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3Q6OmFjY2Vzc2liaWxpdHlJbWFnZU1hcEhpdFRlc3QgY29uc3QpOgooV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6cmVtb3RlU1ZHRWxlbWVudEhpdFRlc3QgY29uc3Qp
OgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6ZWxlbWVudEFjY2Vzc2liaWxp
dHlIaXRUZXN0IGNvbnN0KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFj
Y2Vzc2liaWxpdHlIaXRUZXN0IGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaDoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmNwcDoKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlT
Y3JvbGxWaWV3OjphY2Nlc3NpYmlsaXR5SGl0VGVzdCBjb25zdCk6CiogU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oOgoqIFNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5jcHA6CihXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5U2xpZGVyOjplbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3QgY29uc3QpOgoqIFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5oOgoqIFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcDoKKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlUYWJsZTo6Y2VsbEZvckNvbHVtbkFuZFJvdyk6CiogU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuaDoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwOgooV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eVRhYmxlQ2VsbDo6Y29sdW1uSGVhZGVycyk6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFi
bGVDZWxsOjpyb3dIZWFkZXJzKToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9B
Y2Nlc3NpYmlsaXR5T2JqZWN0SU9TLm1tOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
b3ZlcnJpZGVBdHRhY2htZW50UGFyZW50KToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcDoKKFdlYkNvcmU6OkFYSXNvbGF0ZWRP
YmplY3Q6OnNldE9iamVjdFByb3BlcnR5KToKKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OnNl
dE9iamVjdFZlY3RvclByb3BlcnR5KToKKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OnNldFBy
b3BlcnR5KToKKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmVsZW1lbnRBY2Nlc3NpYmlsaXR5
SGl0VGVzdCBjb25zdCk6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
c29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcDoKKFdlYkNvcmU6OkFYSXNvbGF0
ZWRUcmVlOjpyZWxhdGVkT2JqZWN0SURzRm9yKToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW06CihXZWJDb3JlOjpjcmVhdGVJc29sYXRl
ZE9iamVjdElmTmVlZGVkKToKKFdlYkNvcmU6OnBvc3RVc2VySW5mb0ZvckNoYW5nZXMpOgoqIFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RNYWMubW06
CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpvdmVycmlkZUF0dGFjaG1lbnRQYXJlbnQp
OgotLS0KIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhDb3JlT2JqZWN0LmggICB8ICAg
MiAtCiAuLi4vYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAgICAgfCAgIDYg
Ky0KIC4uLi9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmggICAgICB8ICAgMiAr
LQogLi4uL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgICAgIHwgIDEyICst
CiAuLi4vYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmggICAgICAgfCAgMTQgKy0t
CiAuLi4vQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgICAgICAgICAgICAgfCAgMTIgKy0K
IC4uLi9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaCB8ICAgOCArLQog
Li4uL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwIHwgICAyICstCiAu
Li4vYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oICAgfCAgIDIgKy0KIC4u
Li9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuY3BwICAgICB8ICAgNCArLQogLi4u
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5oICAgICAgIHwgICAyICstCiAuLi4v
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwICAgICAgfCAgIDIgKy0KIC4uLi9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5oICAgICAgICB8ICAgMiArLQogLi4uL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5jcHAgIHwgICA0ICstCiAuLi4vaW9z
L0FjY2Vzc2liaWxpdHlPYmplY3RJT1MubW0gICAgICAgICAgICAgfCAgIDIgKy0KIC4uLi9pc29s
YXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAgICAgICAgICB8IDEwNSArKysrKysrKy0tLS0t
LS0tLS0KIC4uLi9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oICAgICAgICAgICB8ICAg
MyArLQogLi4uL2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAgICAgICAgICAgIHwgICAy
ICstCiAuLi4vaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmggICAgICAgICAgICAgfCAgIDIg
Ky0KIC4uLi9hY2Nlc3NpYmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tICAgICB8ICAgOSAr
LQogLi4uL21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFjLm1tICAgICAgICAgICAgIHwgICAyICst
CiAyMSBmaWxlcyBjaGFuZ2VkLCA4OSBpbnNlcnRpb25zKCspLCAxMTAgZGVsZXRpb25zKC0pCgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWENvcmVPYmplY3QuaCBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhDb3JlT2JqZWN0LmgKaW5kZXggYzUxMDQz
YjBlMTU4Li43MTljYWU5Y2RiMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQVhDb3JlT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WENvcmVPYmplY3QuaApAQCAtMTA5MCw4ICsxMDkwLDYgQEAgcHVibGljOgogCiAgICAgLy8gQ2Fs
bGVkIG9uIHRoZSByb290IEFYIG9iamVjdCB0byByZXR1cm4gdGhlIGRlZXBlc3QgYXZhaWxhYmxl
IGVsZW1lbnQuCiAgICAgdmlydHVhbCBBWENvcmVPYmplY3QqIGFjY2Vzc2liaWxpdHlIaXRUZXN0
KGNvbnN0IEludFBvaW50JikgY29uc3QgPSAwOwotICAgIC8vIENhbGxlZCBvbiB0aGUgQVggb2Jq
ZWN0IGFmdGVyIHRoZSByZW5kZXIgdHJlZSBkZXRlcm1pbmVzIHdoaWNoIGlzIHRoZSByaWdodCBB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LgotICAgIHZpcnR1YWwgQVhDb3JlT2JqZWN0KiBlbGVt
ZW50QWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmKSBjb25zdCA9IDA7CiAKICAg
ICB2aXJ0dWFsIEFYQ29yZU9iamVjdCogZm9jdXNlZFVJRWxlbWVudCgpIGNvbnN0ID0gMDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlz
dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0
Qm94LmNwcAppbmRleCBkNjFiY2Y0NGY2ZWYuLmI4MTNhNTU2NmI4YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAKQEAg
LTEzNyw3ICsxMzcsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5TGlzdEJv
eDo6bGlzdEJveE9wdGlvbkFjY2Vzc2liaWxpdHlPYmplY3QoSFRNTAogICAgIHJldHVybiBudWxs
cHRyOwogfQogCi1BWENvcmVPYmplY3QqIEFjY2Vzc2liaWxpdHlMaXN0Qm94OjplbGVtZW50QWNj
ZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAorQWNjZXNzaWJp
bGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eUxpc3RCb3g6OmVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0
VGVzdChjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CiB7CiAgICAgLy8gdGhlIGludGVybmFs
IEhUTUxTZWxlY3RFbGVtZW50IG1ldGhvZHMgZm9yIHJldHVybmluZyBhIGxpc3Rib3ggb3B0aW9u
IGF0IGEgcG9pbnQKICAgICAvLyBpZ25vcmUgb3B0Z3JvdXAgZWxlbWVudHMuCkBAIC0xNTAsMTQg
KzE1MCwxNCBAQCBBWENvcmVPYmplY3QqIEFjY2Vzc2liaWxpdHlMaXN0Qm94OjplbGVtZW50QWNj
ZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmCiAgICAgCiAgICAgTGF5b3V0UmVjdCBw
YXJlbnRSZWN0ID0gYm91bmRpbmdCb3hSZWN0KCk7CiAgICAgCi0gICAgQVhDb3JlT2JqZWN0KiBs
aXN0Qm94T3B0aW9uID0gbnVsbHB0cjsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBsaXN0Qm94
T3B0aW9uID0gbnVsbHB0cjsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBtX2NoaWxkcmVuLnNpemUo
KTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKICAgICAgICAg
TGF5b3V0UmVjdCByZWN0ID0gZG93bmNhc3Q8UmVuZGVyTGlzdEJveD4oKm1fcmVuZGVyZXIpLml0
ZW1Cb3VuZGluZ0JveFJlY3QocGFyZW50UmVjdC5sb2NhdGlvbigpLCBpKTsKICAgICAgICAgLy8g
VGhlIGNhc3QgdG8gSFRNTEVsZW1lbnQgYmVsb3cgaXMgc2FmZSBiZWNhdXNlIHRoZSBvbmx5IG90
aGVyIHBvc3NpYmxlIGxpc3RJdGVtIHR5cGUKICAgICAgICAgLy8gd291bGQgYmUgYSBXTUxFbGVt
ZW50LCBidXQgV01MIGJ1aWxkcyBkb24ndCB1c2UgYWNjZXNzaWJpbGl0eSBmZWF0dXJlcyBhdCBh
bGwuCiAgICAgICAgIGlmIChyZWN0LmNvbnRhaW5zKHBvaW50KSkgewotICAgICAgICAgICAgbGlz
dEJveE9wdGlvbiA9IG1fY2hpbGRyZW5baV0uZ2V0KCk7CisgICAgICAgICAgICBsaXN0Qm94T3B0
aW9uID0gZHluYW1pY0Rvd25jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3Q+KG1fY2hpbGRyZW5baV0u
Z2V0KCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmggYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmgKaW5kZXgg
NGI2M2U2NGM4MzllLi5iN2QwNDY3NzE3ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmgKQEAgLTUyLDcgKzUyLDcgQEAgcHJp
dmF0ZToKIAogICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5TGlzdEJveEluc3RhbmNlKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGxpc3RC
b3hPcHRpb25BY2Nlc3NpYmlsaXR5T2JqZWN0KEhUTUxFbGVtZW50KikgY29uc3Q7Ci0gICAgQVhD
b3JlT2JqZWN0KiBlbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmKSBj
b25zdCBvdmVycmlkZTsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBlbGVtZW50QWNjZXNzaWJp
bGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmKSBjb25zdCBmaW5hbDsKIH07CiAgICAgCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAppbmRleCBjM2E5YmU1ZjM2OTIuLmIzYjNlZGFhZTM3
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuY3BwCkBAIC0zMDQ1LDcgKzMwNDUsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OmlzVGFiSXRlbVNlbGVjdGVkKCkgY29uc3QKICAgICAvLyBUaGUgQVJJQSBzcGVjIHNheXMg
YSB0YWIgaXRlbSBjYW4gYWxzbyBiZSBzZWxlY3RlZCBpZiBpdCBpcyBhcmlhLWxhYmVsZWQgYnkg
YSB0YWJwYW5lbAogICAgIC8vIHRoYXQgaGFzIGtleWJvYXJkIGZvY3VzIGluc2lkZSBvZiBpdCwg
b3IgaWYgYSB0YWJwYW5lbCBpbiBpdHMgYXJpYS1jb250cm9scyBsaXN0IGhhcyBLQgogICAgIC8v
IGZvY3VzIGluc2lkZSBvZiBpdC4KLSAgICBhdXRvKiBmb2N1c2VkRWxlbWVudCA9IHN0YXRpY19j
YXN0PEFjY2Vzc2liaWxpdHlPYmplY3QqPihmb2N1c2VkVUlFbGVtZW50KCkpOworICAgIGF1dG8q
IGZvY3VzZWRFbGVtZW50ID0gZm9jdXNlZFVJRWxlbWVudCgpOwogICAgIGlmICghZm9jdXNlZEVs
ZW1lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMzEyOSw3ICszMTI5LDcgQEAgYm9v
bCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzdXBwb3J0c0FSSUFBdHRyaWJ1dGVzKCkgY29uc3QKICAg
ICAgICAgfHwgaGFzQXR0cmlidXRlKGFyaWFfcmVsZXZhbnRBdHRyKTsKIH0KICAgICAKLUFYQ29y
ZU9iamVjdCogQWNjZXNzaWJpbGl0eU9iamVjdDo6ZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0
KGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKK0FjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vz
c2liaWxpdHlPYmplY3Q6OmVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2lu
dCYgcG9pbnQpIGNvbnN0CiB7IAogICAgIC8vIFNlbmQgdGhlIGhpdCB0ZXN0IGJhY2sgaW50byB0
aGUgc3ViLWZyYW1lIGlmIG5lY2Vzc2FyeS4KICAgICBpZiAoaXNBdHRhY2htZW50KCkpIHsKQEAg
LTMxNDMsOCArMzE0Myw4IEBAIEFYQ29yZU9iamVjdCogQWNjZXNzaWJpbGl0eU9iamVjdDo6ZWxl
bWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JiBwCiAgICAgCiAgICAgLy8g
Q2hlY2sgaWYgdGhlcmUgYXJlIGFueSBtb2NrIGVsZW1lbnRzIHRoYXQgbmVlZCB0byBiZSBoYW5k
bGVkLgogICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGQgOiBtX2NoaWxkcmVuKSB7Ci0gICAgICAg
IGlmIChjaGlsZC0+aXNNb2NrT2JqZWN0KCkgJiYgY2hpbGQtPmVsZW1lbnRSZWN0KCkuY29udGFp
bnMocG9pbnQpKQotICAgICAgICAgICAgcmV0dXJuIGNoaWxkLT5lbGVtZW50QWNjZXNzaWJpbGl0
eUhpdFRlc3QocG9pbnQpOworICAgICAgICBpZiAoYXV0byogbW9ja0NoaWxkID0gZHluYW1pY0Rv
d25jYXN0PEFjY2Vzc2liaWxpdHlNb2NrT2JqZWN0PihjaGlsZC5nZXQoKSk7IGNoaWxkICYmIGNo
aWxkLT5lbGVtZW50UmVjdCgpLmNvbnRhaW5zKHBvaW50KSkKKyAgICAgICAgICAgIHJldHVybiBt
b2NrQ2hpbGQtPmVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdChwb2ludCk7CiAgICAgfQogCiAg
ICAgcmV0dXJuIGNvbnN0X2Nhc3Q8QWNjZXNzaWJpbGl0eU9iamVjdCo+KHRoaXMpOwpAQCAtMzE1
Niw3ICszMTU2LDcgQEAgQVhPYmplY3RDYWNoZSogQWNjZXNzaWJpbGl0eU9iamVjdDo6YXhPYmpl
Y3RDYWNoZSgpIGNvbnN0CiAgICAgcmV0dXJuIGRvY3VtZW50ID8gZG9jdW1lbnQtPmF4T2JqZWN0
Q2FjaGUoKSA6IG51bGxwdHI7CiB9CiAKLUFYQ29yZU9iamVjdCogQWNjZXNzaWJpbGl0eU9iamVj
dDo6Zm9jdXNlZFVJRWxlbWVudCgpIGNvbnN0CitBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3Np
YmlsaXR5T2JqZWN0Ojpmb2N1c2VkVUlFbGVtZW50KCkgY29uc3QKIHsKICAgICBhdXRvKiBwYWdl
ID0gdGhpcy0+cGFnZSgpOwogICAgIGF1dG8qIGF4T2JqZWN0Q2FjaGUgPSB0aGlzLT5heE9iamVj
dENhY2hlKCk7CkBAIC00MjMxLDcgKzQyMzEsNyBAQCBBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxp
dHlDaGlsZHJlblZlY3RvciBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZWxlY3RlZENoaWxkcmVuKAog
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVCYXI6CiAgICAgICAgIGlmIChhdXRvKiBk
ZXNjZW5kYW50ID0gYWN0aXZlRGVzY2VuZGFudCgpKQogICAgICAgICAgICAgcmVzdWx0ID0geyBk
ZXNjZW5kYW50IH07Ci0gICAgICAgIGVsc2UgaWYgKGF1dG8qIGZvY3VzZWRFbGVtZW50ID0gZHlu
YW1pY0Rvd25jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3Q+KGZvY3VzZWRVSUVsZW1lbnQoKSkpCisg
ICAgICAgIGVsc2UgaWYgKGF1dG8qIGZvY3VzZWRFbGVtZW50ID0gZm9jdXNlZFVJRWxlbWVudCgp
KQogICAgICAgICAgICAgcmVzdWx0ID0geyBmb2N1c2VkRWxlbWVudCB9OwogICAgICAgICBicmVh
azsKICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlPYmplY3QuaAppbmRleCA5ZDNlYjBhMGFjNjcuLjE5MDgwODZjZWI1MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0
LmgKQEAgLTE0OCw3ICsxNDgsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgY29sdW1uQ291bnQo
KSBvdmVycmlkZSB7IHJldHVybiAwOyB9CiAgICAgdW5zaWduZWQgcm93Q291bnQoKSBvdmVycmlk
ZSB7IHJldHVybiAwOyB9CiAgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGNlbGxzKCkg
b3ZlcnJpZGUgeyByZXR1cm4gQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yKCk7IH0KLSAgICBB
WENvcmVPYmplY3QqIGNlbGxGb3JDb2x1bW5BbmRSb3codW5zaWduZWQsIHVuc2lnbmVkKSBvdmVy
cmlkZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY2VsbEZv
ckNvbHVtbkFuZFJvdyh1bnNpZ25lZCwgdW5zaWduZWQpIG92ZXJyaWRlIHsgcmV0dXJuIG51bGxw
dHI7IH0KICAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgY29sdW1uSGVhZGVycygpIG92
ZXJyaWRlIHsgcmV0dXJuIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvcigpOyB9CiAgICAgQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIHJvd0hlYWRlcnMoKSBvdmVycmlkZSB7IHJldHVybiBB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IoKTsgfQogICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJl
blZlY3RvciB2aXNpYmxlUm93cygpIG92ZXJyaWRlIHsgcmV0dXJuIEFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvcigpOyB9CkBAIC0zMjUsMTEgKzMyNSwxMSBAQCBwdWJsaWM6CiAgICAgVmVjdG9y
PFN0cmluZz4gZGV0ZXJtaW5lRHJvcEVmZmVjdHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB7
IH07IH0KIAogICAgIC8vIENhbGxlZCBvbiB0aGUgcm9vdCBBWCBvYmplY3QgdG8gcmV0dXJuIHRo
ZSBkZWVwZXN0IGF2YWlsYWJsZSBlbGVtZW50LgotICAgIEFYQ29yZU9iamVjdCogYWNjZXNzaWJp
bGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxs
cHRyOyB9CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogYWNjZXNzaWJpbGl0eUhpdFRlc3QoY29u
c3QgSW50UG9pbnQmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CiAgICAgLy8g
Q2FsbGVkIG9uIHRoZSBBWCBvYmplY3QgYWZ0ZXIgdGhlIHJlbmRlciB0cmVlIGRldGVybWluZXMg
d2hpY2ggaXMgdGhlIHJpZ2h0IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuCi0gICAgQVhDb3Jl
T2JqZWN0KiBlbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmKSBjb25z
dCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIGVsZW1lbnRBY2Nl
c3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0OwogCi0gICAgQVhDb3JlT2Jq
ZWN0KiBmb2N1c2VkVUlFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0
eU9iamVjdCogZm9jdXNlZFVJRWxlbWVudCgpIGNvbnN0IGZpbmFsOwogCiAgICAgdmlydHVhbCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBmaXJzdENoaWxkKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsg
fQogICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogbGFzdENoaWxkKCkgY29uc3QgeyBy
ZXR1cm4gbnVsbHB0cjsgfQpAQCAtNTA2LDcgKzUwNiw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGNoaWxkcmVuKGJvb2wgdXBkYXRlQ2hpbGRyZW5J
Zk5lZWRlZCA9IHRydWUpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZHJlbigp
IHsgfQogICAgIGVudW0gY2xhc3MgRGVzY2VuZElmSWdub3JlZCA6IGJvb2wgeyBObywgWWVzIH07
Ci0gICAgdmlydHVhbCB2b2lkIGFkZENoaWxkKEFYQ29yZU9iamVjdCosIERlc2NlbmRJZklnbm9y
ZWQgPSBEZXNjZW5kSWZJZ25vcmVkOjpZZXMpOworICAgIHZvaWQgYWRkQ2hpbGQoQVhDb3JlT2Jq
ZWN0KiwgRGVzY2VuZElmSWdub3JlZCA9IERlc2NlbmRJZklnbm9yZWQ6Olllcyk7CiAgICAgdmly
dHVhbCB2b2lkIGluc2VydENoaWxkKEFYQ29yZU9iamVjdCosIHVuc2lnbmVkLCBEZXNjZW5kSWZJ
Z25vcmVkID0gRGVzY2VuZElmSWdub3JlZDo6WWVzKTsKICAgICB2aXJ0dWFsIGJvb2wgY2FuSGF2
ZUNoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZvaWQgdXBkYXRlQ2hpbGRy
ZW5JZk5lY2Vzc2FyeSgpIG92ZXJyaWRlOwpAQCAtNzAwLDkgKzcwMCw5IEBAIHB1YmxpYzoKICAg
ICBib29sIGlzT25TY3JlZW4oKSBjb25zdCBvdmVycmlkZTsKIAogI2lmIFBMQVRGT1JNKENPQ09B
KQotICAgIHZvaWQgb3ZlcnJpZGVBdHRhY2htZW50UGFyZW50KEFYQ29yZU9iamVjdCogcGFyZW50
KTsKKyAgICB2b2lkIG92ZXJyaWRlQXR0YWNobWVudFBhcmVudChBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBwYXJlbnQpOwogI2Vsc2UKLSAgICB2b2lkIG92ZXJyaWRlQXR0YWNobWVudFBhcmVudChBWENv
cmVPYmplY3QqKSB7IH0KKyAgICB2b2lkIG92ZXJyaWRlQXR0YWNobWVudFBhcmVudChBY2Nlc3Np
YmlsaXR5T2JqZWN0KikgeyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdC5jcHAKaW5kZXggMDBhYjVmMzM2ZDFlLi5hODQ4NjVmZWMyNDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0LmNwcApAQCAtMTg1Miw3ICsxODUyLDcgQEAgSW50UmVjdCBBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0Ojpkb0FYQm91bmRzRm9yUmFuZ2VVc2luZ0NoYXJhY3Rlck9mZnNldChj
b25zdAogICAgIHJldHVybiBib3VuZHNGb3JSYW5nZSgqcmFuZ2UpOwogfQogCi1BWENvcmVPYmpl
Y3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFjY2Vzc2liaWxpdHlJbWFnZU1hcEhpdFRl
c3QoSFRNTEFyZWFFbGVtZW50KiBhcmVhLCBjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CitB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphY2Nlc3NpYmls
aXR5SW1hZ2VNYXBIaXRUZXN0KEhUTUxBcmVhRWxlbWVudCogYXJlYSwgY29uc3QgSW50UG9pbnQm
IHBvaW50KSBjb25zdAogewogICAgIGlmICghYXJlYSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CkBAIC0xODY3LDEzICsxODY3LDEzIEBAIEFYQ29yZU9iamVjdCogQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6YWNjZXNzaWJpbGl0eUltYWdlTWFwSGl0VGVzdChIVE1MQXJlYUVsCiAKICAgICBm
b3IgKGNvbnN0IGF1dG8mIGNoaWxkIDogcGFyZW50LT5jaGlsZHJlbigpKSB7CiAgICAgICAgIGlm
IChjaGlsZC0+ZWxlbWVudFJlY3QoKS5jb250YWlucyhwb2ludCkpCi0gICAgICAgICAgICByZXR1
cm4gY2hpbGQuZ2V0KCk7CisgICAgICAgICAgICByZXR1cm4gZHluYW1pY0Rvd25jYXN0PEFjY2Vz
c2liaWxpdHlPYmplY3Q+KGNoaWxkLmdldCgpKTsKICAgICB9CiAKICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIAotQVhDb3JlT2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpyZW1vdGVT
VkdFbGVtZW50SGl0VGVzdChjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CitBY2Nlc3NpYmls
aXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpyZW1vdGVTVkdFbGVtZW50SGl0
VGVzdChjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CiB7CiAgICAgQWNjZXNzaWJpbGl0eU9i
amVjdCogcmVtb3RlID0gcmVtb3RlU1ZHUm9vdEVsZW1lbnQoQ3JlYXRlKTsKICAgICBpZiAoIXJl
bW90ZSkKQEAgLTE4ODMsNyArMTg4Myw3IEBAIEFYQ29yZU9iamVjdCogQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6cmVtb3RlU1ZHRWxlbWVudEhpdFRlc3QoY29uc3QgSW50UG9pbnQmCiAgICAg
cmV0dXJuIHJlbW90ZS0+YWNjZXNzaWJpbGl0eUhpdFRlc3QoSW50UG9pbnQob2Zmc2V0KSk7CiB9
CiAKLUFYQ29yZU9iamVjdCogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6ZWxlbWVudEFjY2Vz
c2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKK0FjY2Vzc2liaWxp
dHlPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmVsZW1lbnRBY2Nlc3NpYmlsaXR5
SGl0VGVzdChjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CiB7CiAgICAgaWYgKGlzU1ZHSW1h
Z2UoKSkKICAgICAgICAgcmV0dXJuIHJlbW90ZVNWR0VsZW1lbnRIaXRUZXN0KHBvaW50KTsKQEAg
LTE4OTcsNyArMTg5Nyw3IEBAIHN0YXRpYyBib29sIHNob3VsZFVzZVNoYWRvd0hvc3RGb3JIaXRU
ZXN0aW5nKE5vZGUqIHNoYWRvd0hvc3QpCiAgICAgcmV0dXJuIHNoYWRvd0hvc3QgJiYgIXNoYWRv
d0hvc3QtPmhhc1RhZ05hbWUodmlkZW9UYWcpOwogfQogCi1BWENvcmVPYmplY3QqIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OmFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JiBw
b2ludCkgY29uc3QKK0FjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6OmFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKIHsK
ICAgICBpZiAoIW1fcmVuZGVyZXIgfHwgIW1fcmVuZGVyZXItPmhhc0xheWVyKCkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwpAQCAtMTkzNiw3ICsxOTM2LDcgQEAgQVhDb3JlT2JqZWN0KiBBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2lu
dCYgcG8KIAogICAgIHJlc3VsdC0+dXBkYXRlQ2hpbGRyZW5JZk5lY2Vzc2FyeSgpOwogICAgIC8v
IEFsbG93IHRoZSBlbGVtZW50IHRvIHBlcmZvcm0gYW55IGhpdC10ZXN0aW5nIGl0IG1pZ2h0IG5l
ZWQgdG8gZG8gdG8gcmVhY2ggbm9uLXJlbmRlciBjaGlsZHJlbi4KLSAgICByZXN1bHQgPSBzdGF0
aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4ocmVzdWx0LT5lbGVtZW50QWNjZXNzaWJpbGl0
eUhpdFRlc3QocG9pbnQpKTsKKyAgICByZXN1bHQgPSByZXN1bHQtPmVsZW1lbnRBY2Nlc3NpYmls
aXR5SGl0VGVzdChwb2ludCk7CiAgICAgCiAgICAgaWYgKHJlc3VsdCAmJiByZXN1bHQtPmFjY2Vz
c2liaWxpdHlJc0lnbm9yZWQoKSkgewogICAgICAgICAvLyBJZiB0aGlzIGVsZW1lbnQgaXMgdGhl
IGxhYmVsIG9mIGEgY29udHJvbCwgYSBoaXQgdGVzdCBzaG91bGQgcmV0dXJuIHRoZSBjb250cm9s
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QuaAppbmRleCBkNWMwM2M1NWEwM2EuLmQxYzgyODYxNTYyMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0LmgKQEAgLTgwLDcgKzgwLDcgQEAgcHVibGljOgogICAgIEFjY2Vzc2liaWxpdHlP
YmplY3QqIHRpdGxlVUlFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICAvLyBTaG91bGQg
YmUgY2FsbGVkIG9uIHRoZSByb290IGFjY2Vzc2liaWxpdHkgb2JqZWN0IHRvIGtpY2sgb2ZmIGEg
aGl0IHRlc3QuCi0gICAgQVhDb3JlT2JqZWN0KiBhY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJ
bnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGFjY2Vz
c2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBF
bGVtZW50KiBhbmNob3JFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgCkBAIC0xNTcsOSAr
MTU3LDkgQEAgcHJpdmF0ZToKICAgICBib29sIG5vZGVJc1RleHRDb250cm9sKGNvbnN0IE5vZGUq
KSBjb25zdDsKICAgICBQYXRoIGVsZW1lbnRQYXRoKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgCi0g
ICAgQVhDb3JlT2JqZWN0KiBhY2Nlc3NpYmlsaXR5SW1hZ2VNYXBIaXRUZXN0KEhUTUxBcmVhRWxl
bWVudCosIGNvbnN0IEludFBvaW50JikgY29uc3Q7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCog
YWNjZXNzaWJpbGl0eUltYWdlTWFwSGl0VGVzdChIVE1MQXJlYUVsZW1lbnQqLCBjb25zdCBJbnRQ
b2ludCYpIGNvbnN0OwogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGFjY2Vzc2liaWxpdHlQYXJl
bnRGb3JJbWFnZU1hcChIVE1MTWFwRWxlbWVudCopIGNvbnN0OwotICAgIEFYQ29yZU9iamVjdCog
ZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JikgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0
KGNvbnN0IEludFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBib29sIHJlbmRlck9iamVj
dElzT2JzZXJ2YWJsZShSZW5kZXJPYmplY3QmKSBjb25zdDsKICAgICBSZW5kZXJPYmplY3QqIHJl
bmRlclBhcmVudE9iamVjdCgpIGNvbnN0OwpAQCAtMTcxLDcgKzE3MSw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBkZXRhY2hSZW1vdGVTVkdSb290KCk7CiAgICAgZW51bSBDcmVhdGlvbkNob2ljZSB7
IENyZWF0ZSwgUmV0cmlldmUgfTsKICAgICBBY2Nlc3NpYmlsaXR5U1ZHUm9vdCogcmVtb3RlU1ZH
Um9vdEVsZW1lbnQoQ3JlYXRpb25DaG9pY2UgY3JlYXRlSWZOZWNlc3NhcnkpIGNvbnN0OwotICAg
IEFYQ29yZU9iamVjdCogcmVtb3RlU1ZHRWxlbWVudEhpdFRlc3QoY29uc3QgSW50UG9pbnQmKSBj
b25zdDsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiByZW1vdGVTVkdFbGVtZW50SGl0VGVzdChj
b25zdCBJbnRQb2ludCYpIGNvbnN0OwogICAgIHZvaWQgb2Zmc2V0Qm91bmRpbmdCb3hGb3JSZW1v
dGVTVkdFbGVtZW50KExheW91dFJlY3QmKSBjb25zdDsKICAgICBib29sIHN1cHBvcnRzUGF0aCgp
IGNvbnN0IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwCmluZGV4IGI3ZjNlMDcxZDBhZC4uNmJj
ODQxZWJiMDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlTY3JvbGxWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmNwcApAQCAtMjEyLDcgKzIxMiw3IEBAIEFjY2Vzc2li
aWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Ojp3ZWJBcmVhT2JqZWN0KCkgY29u
c3QKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotQVhDb3JlT2JqZWN0KiBBY2Nlc3NpYmlsaXR5
U2Nyb2xsVmlldzo6YWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmIHBvaW50KSBj
b25zdAorQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmFjY2Vz
c2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKIHsKICAgICBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiB3ZWJBcmVhID0gd2ViQXJlYU9iamVjdCgpOwogICAgIGlmICghd2Vi
QXJlYSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVNjcm9sbFZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVNjcm9sbFZpZXcuaAppbmRleCBjMWUzMTE5ZjVmYzcuLjQwYThmMTNmMzZhYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmll
dy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9s
bFZpZXcuaApAQCAtNjIsNyArNjIsNyBAQCBwcml2YXRlOgogICAgIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIHNjcm9sbEJhcihBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb24pIG92ZXJyaWRlOwogICAgIHZv
aWQgYWRkQ2hpbGRyZW4oKSBvdmVycmlkZTsKICAgICB2b2lkIGNsZWFyQ2hpbGRyZW4oKSBvdmVy
cmlkZTsKLSAgICBBWENvcmVPYmplY3QqIGFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBv
aW50JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogYWNjZXNzaWJp
bGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHVw
ZGF0ZUNoaWxkcmVuSWZOZWNlc3NhcnkoKSBvdmVycmlkZTsKICAgICB2b2lkIHNldE5lZWRzVG9V
cGRhdGVDaGlsZHJlbigpIG92ZXJyaWRlIHsgbV9jaGlsZHJlbkRpcnR5ID0gdHJ1ZTsgfQogICAg
IHZvaWQgdXBkYXRlU2Nyb2xsYmFycygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5jcHAKaW5kZXggZjVkODU5NjM2M2IwLi44YzNl
MmFlNzI5NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVNsaWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5U2xpZGVyLmNwcApAQCAtMTEyLDEyICsxMTIsMTIgQEAgY29uc3QgQXRvbVN0cmlu
ZyYgQWNjZXNzaWJpbGl0eVNsaWRlcjo6Z2V0QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJpYnUKICAgICByZXR1cm4gbnVsbEF0b20oKTsKIH0KICAgICAKLUFYQ29yZU9iamVjdCog
QWNjZXNzaWJpbGl0eVNsaWRlcjo6ZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IElu
dFBvaW50JiBwb2ludCkgY29uc3QKK0FjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlT
bGlkZXI6OmVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYgcG9pbnQp
IGNvbnN0CiB7CiAgICAgaWYgKG1fY2hpbGRyZW4uc2l6ZSgpKSB7CiAgICAgICAgIEFTU0VSVCht
X2NoaWxkcmVuLnNpemUoKSA9PSAxKTsKICAgICAgICAgaWYgKG1fY2hpbGRyZW5bMF0tPmVsZW1l
bnRSZWN0KCkuY29udGFpbnMocG9pbnQpKQotICAgICAgICAgICAgcmV0dXJuIG1fY2hpbGRyZW5b
MF0uZ2V0KCk7CisgICAgICAgICAgICByZXR1cm4gZHluYW1pY0Rvd25jYXN0PEFjY2Vzc2liaWxp
dHlPYmplY3Q+KG1fY2hpbGRyZW5bMF0uZ2V0KCkpOwogICAgIH0KICAgICAKICAgICByZXR1cm4g
YXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShyZW5kZXJlcigpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5oIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmgKaW5kZXggYzE4MDJj
ZjkzZjkxLi5hYTFhY2U0ZjdiYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5oCkBAIC00NSw3ICs0NSw3IEBAIHByb3RlY3RlZDoK
IAogcHJpdmF0ZToKICAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQoKSBjb25zdDsK
LSAgICBBWENvcmVPYmplY3QqIGVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQ
b2ludCYpIGNvbnN0IG92ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGVsZW1lbnRB
Y2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0IGZpbmFsOwogCiAgICAg
QWNjZXNzaWJpbGl0eVJvbGUgZGV0ZXJtaW5lQWNjZXNzaWJpbGl0eVJvbGUoKSBmaW5hbCB7IHJl
dHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6U2xpZGVyOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcAppbmRleCBlZTYxZGEwMjky
ZjUuLjdmMWQwODc4MWUzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcApAQCAtNzg1LDcgKzc4NSw3IEBAIHVuc2lnbmVkIEFj
Y2Vzc2liaWxpdHlUYWJsZTo6cm93Q291bnQoKQogICAgIHJldHVybiBtX3Jvd3Muc2l6ZSgpOwog
fQogCi1BWENvcmVPYmplY3QqIEFjY2Vzc2liaWxpdHlUYWJsZTo6Y2VsbEZvckNvbHVtbkFuZFJv
dyh1bnNpZ25lZCBjb2x1bW4sIHVuc2lnbmVkIHJvdykKK0FjY2Vzc2liaWxpdHlPYmplY3QqIEFj
Y2Vzc2liaWxpdHlUYWJsZTo6Y2VsbEZvckNvbHVtbkFuZFJvdyh1bnNpZ25lZCBjb2x1bW4sIHVu
c2lnbmVkIHJvdykKIHsKICAgICB1cGRhdGVDaGlsZHJlbklmTmVjZXNzYXJ5KCk7CiAgICAgaWYg
KHJvdyA+PSBtX2NlbGxTbG90cy5zaXplKCkgfHwgY29sdW1uID49IG1fY2VsbFNsb3RzW3Jvd10u
c2l6ZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5VGFibGUuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVRhYmxlLmgKaW5kZXggZTQ4YTcxZTJjNmRiLi5jYmY1OGNiYzA3ZTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuaApAQCAtNjUsNyAr
NjUsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBhbGwgdGhlIGNlbGxzIGluIHRoZSB0YWJsZQogICAg
IEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBjZWxscygpIG92ZXJyaWRlOwotICAgIEFYQ29y
ZU9iamVjdCogY2VsbEZvckNvbHVtbkFuZFJvdyh1bnNpZ25lZCBjb2x1bW4sIHVuc2lnbmVkIHJv
dykgb3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY2VsbEZvckNvbHVtbkFuZFJv
dyh1bnNpZ25lZCBjb2x1bW4sIHVuc2lnbmVkIHJvdykgb3ZlcnJpZGU7CiAKICAgICBBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3IgY29sdW1uSGVhZGVycygpIG92ZXJyaWRlOwogICAgIEFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciByb3dIZWFkZXJzKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNw
cAppbmRleCAzNWMyZGY2M2ZlNDcuLjc4MTRiNmVmODI4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwCkBAIC0y
NzEsNyArMjcxLDcgQEAgQVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Ig
QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6Y29sdW1uSGVhZGVycygKICAgICAgICAgQVNTRVJUKGlz
PEFjY2Vzc2liaWxpdHlPYmplY3Q+KHRhYmxlQ2VsbCkpOwogICAgICAgICBpZiAodGFibGVDZWxs
LT5jZWxsU2NvcGUoKSA9PSAiY29sZ3JvdXAiX3MgJiYgaXNUYWJsZUNlbGxJblNhbWVDb2xHcm91
cCh0YWJsZUNlbGwpKQogICAgICAgICAgICAgaGVhZGVycy5hcHBlbmQodGFibGVDZWxsKTsKLSAg
ICAgICAgZWxzZSBpZiAoZG93bmNhc3Q8QWNjZXNzaWJpbGl0eU9iamVjdD4odGFibGVDZWxsKS0+
aXNDb2x1bW5IZWFkZXIoKSkKKyAgICAgICAgZWxzZSBpZiAodGFibGVDZWxsLT5pc0NvbHVtbkhl
YWRlcigpKQogICAgICAgICAgICAgaGVhZGVycy5hcHBlbmQodGFibGVDZWxsKTsKICAgICB9CiAK
QEAgLTI5NSw3ICsyOTUsNyBAQCBBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpyb3dIZWFkZXJzKCkKIAogICAgICAgICBpZiAo
dGFibGVDZWxsLT5jZWxsU2NvcGUoKSA9PSAicm93Z3JvdXAiX3MgJiYgaXNUYWJsZUNlbGxJblNh
bWVSb3dHcm91cCh0YWJsZUNlbGwpKQogICAgICAgICAgICAgaGVhZGVycy5hcHBlbmQodGFibGVD
ZWxsKTsKLSAgICAgICAgZWxzZSBpZiAoZG93bmNhc3Q8QWNjZXNzaWJpbGl0eU9iamVjdD4odGFi
bGVDZWxsKS0+aXNSb3dIZWFkZXIoKSkKKyAgICAgICAgZWxzZSBpZiAodGFibGVDZWxsLT5pc1Jv
d0hlYWRlcigpKQogICAgICAgICAgICAgaGVhZGVycy5hcHBlbmQodGFibGVDZWxsKTsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FjY2Vzc2li
aWxpdHlPYmplY3RJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9BY2Nl
c3NpYmlsaXR5T2JqZWN0SU9TLm1tCmluZGV4IDE3NmI2ODBjM2U2Yy4uYmQ0MDYxZDAxNDY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9BY2Nlc3NpYmlsaXR5
T2JqZWN0SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FjY2Vz
c2liaWxpdHlPYmplY3RJT1MubW0KQEAgLTc3LDcgKzc3LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpmaWxlVXBsb2FkQnV0dG9uUmV0dXJuc1ZhbHVlSW5UaXRsZSgpIGNvbnN0CiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6Om92ZXJyaWRlQXR0
YWNobWVudFBhcmVudChBWENvcmVPYmplY3QqKQordm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpv
dmVycmlkZUF0dGFjaG1lbnRQYXJlbnQoQWNjZXNzaWJpbGl0eU9iamVjdCopCiB7CiB9CiAgICAg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9B
WElzb2xhdGVkT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0
ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCmluZGV4IDdhZTQ2NjEzYjYxNC4uMmZiNGExNjkx
ZmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJl
ZS9BWElzb2xhdGVkT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcApAQCAtMzc5LDY5ICszNzksNjAgQEAg
dm9pZCBBWElzb2xhdGVkT2JqZWN0OjpzZXRNYXRoc2NyaXB0cyhBWFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIEFYQ29yZU9iamVjdCYKIAogdm9pZCBBWElzb2xhdGVkT2JqZWN0OjpzZXRPYmpl
Y3RQcm9wZXJ0eShBWFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEFYQ29yZU9iamVjdCogb2Jq
ZWN0KQogewotICAgIGlmIChvYmplY3QpCi0gICAgICAgIHNldFByb3BlcnR5KHByb3BlcnR5TmFt
ZSwgb2JqZWN0LT5vYmplY3RJRCgpKTsKLSAgICBlbHNlCi0gICAgICAgIHNldFByb3BlcnR5KHBy
b3BlcnR5TmFtZSwgbnVsbHB0ciwgdHJ1ZSk7CisgICAgc2V0UHJvcGVydHkocHJvcGVydHlOYW1l
LCBvYmplY3QgPyBvYmplY3QtPm9iamVjdElEKCkgOiBBWElEKCkpOwogfQogCiB2b2lkIEFYSXNv
bGF0ZWRPYmplY3Q6OnNldE9iamVjdFZlY3RvclByb3BlcnR5KEFYUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgY29uc3QgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBvYmplY3RzKQogewot
ICAgIGlmIChvYmplY3RzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwogICAgIHNldFByb3Bl
cnR5KHByb3BlcnR5TmFtZSwgYXhJRHMob2JqZWN0cykpOwogfQogCi12b2lkIEFYSXNvbGF0ZWRP
YmplY3Q6OnNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgQVhQcm9wZXJ0
eVZhbHVlVmFyaWFudCYmIHZhbHVlLCBib29sIHNob3VsZFJlbW92ZSkKLXsKLSAgICBpZiAoc2hv
dWxkUmVtb3ZlKQotICAgICAgICBtX3Byb3BlcnR5TWFwLnJlbW92ZShwcm9wZXJ0eU5hbWUpOwot
ICAgIGVsc2UgewotICAgICAgICBib29sIGlzRGVmYXVsdFZhbHVlID0gV1RGOjpzd2l0Y2hPbih2
YWx1ZSwKLSAgICAgICAgICAgIFtdKHN0ZDo6bnVsbHB0cl90JikgeyByZXR1cm4gdHJ1ZTsgfSwK
LSAgICAgICAgICAgIFtdKEFYSUQgdHlwZWRWYWx1ZSkgeyByZXR1cm4gIXR5cGVkVmFsdWUuaXNW
YWxpZCgpOyB9LAotICAgICAgICAgICAgW10oU3RyaW5nJiB0eXBlZFZhbHVlKSB7IHJldHVybiB0
eXBlZFZhbHVlID09IGVtcHR5U3RyaW5nKCk7IH0sCi0gICAgICAgICAgICBbXShib29sIHR5cGVk
VmFsdWUpIHsgcmV0dXJuICF0eXBlZFZhbHVlOyB9LAotICAgICAgICAgICAgW10oaW50IHR5cGVk
VmFsdWUpIHsgcmV0dXJuICF0eXBlZFZhbHVlOyB9LAotICAgICAgICAgICAgW10odW5zaWduZWQg
dHlwZWRWYWx1ZSkgeyByZXR1cm4gIXR5cGVkVmFsdWU7IH0sCi0gICAgICAgICAgICBbXShkb3Vi
bGUgdHlwZWRWYWx1ZSkgeyByZXR1cm4gdHlwZWRWYWx1ZSA9PSAwLjA7IH0sCi0gICAgICAgICAg
ICBbXShmbG9hdCB0eXBlZFZhbHVlKSB7IHJldHVybiB0eXBlZFZhbHVlID09IDAuMDsgfSwKLSAg
ICAgICAgICAgIFtdKHVpbnQ2NF90IHR5cGVkVmFsdWUpIHsgcmV0dXJuICF0eXBlZFZhbHVlOyB9
LAotICAgICAgICAgICAgW10oQWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRlJiB0eXBlZFZhbHVlKSB7
IHJldHVybiB0eXBlZFZhbHVlID09IEFjY2Vzc2liaWxpdHlCdXR0b25TdGF0ZTo6T2ZmOyB9LAot
ICAgICAgICAgICAgW10oQ29sb3ImIHR5cGVkVmFsdWUpIHsgcmV0dXJuIHR5cGVkVmFsdWUgPT0g
Q29sb3IoKTsgfSwKLSAgICAgICAgICAgIFtdKFVSTCYgdHlwZWRWYWx1ZSkgeyByZXR1cm4gdHlw
ZWRWYWx1ZSA9PSBVUkwoKTsgfSwKLSAgICAgICAgICAgIFtdKExheW91dFJlY3QmIHR5cGVkVmFs
dWUpIHsgcmV0dXJuIHR5cGVkVmFsdWUgPT0gTGF5b3V0UmVjdCgpOyB9LAotICAgICAgICAgICAg
W10oSW50UG9pbnQmIHR5cGVkVmFsdWUpIHsgcmV0dXJuIHR5cGVkVmFsdWUgPT0gSW50UG9pbnQo
KTsgfSwKLSAgICAgICAgICAgIFtdKEludFJlY3QmIHR5cGVkVmFsdWUpIHsgcmV0dXJuIHR5cGVk
VmFsdWUgPT0gSW50UmVjdCgpOyB9LAotICAgICAgICAgICAgW10oc3RkOjpwYWlyPHVuc2lnbmVk
LCB1bnNpZ25lZD4mIHR5cGVkVmFsdWUpIHsKLSAgICAgICAgICAgICAgICAvLyAoMCwgMSkgaXMg
dGhlIGRlZmF1bHQgZm9yIGFuIGluZGV4IHJhbmdlLgotICAgICAgICAgICAgICAgIHJldHVybiB0
eXBlZFZhbHVlID09IHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+KDAsIDEpOwotICAgICAg
ICAgICAgfSwKLSAgICAgICAgICAgIFtdKFZlY3RvcjxBY2Nlc3NpYmlsaXR5VGV4dD4mIHR5cGVk
VmFsdWUpIHsgcmV0dXJuIHR5cGVkVmFsdWUuaXNFbXB0eSgpOyB9LAotICAgICAgICAgICAgW10o
VmVjdG9yPEFYSUQ+JiB0eXBlZFZhbHVlKSB7IHJldHVybiB0eXBlZFZhbHVlLmlzRW1wdHkoKTsg
fSwKLSAgICAgICAgICAgIFtdKFZlY3RvcjxzdGQ6OnBhaXI8QVhJRCwgQVhJRD4+JiB0eXBlZFZh
bHVlKSB7IHJldHVybiB0eXBlZFZhbHVlLmlzRW1wdHkoKTsgfSwKLSAgICAgICAgICAgIFtdKFZl
Y3RvcjxTdHJpbmc+JiB0eXBlZFZhbHVlKSB7IHJldHVybiB0eXBlZFZhbHVlLmlzRW1wdHkoKTsg
fSwKLSAgICAgICAgICAgIFtdKFBhdGgmIHR5cGVkVmFsdWUpIHsgcmV0dXJuIHR5cGVkVmFsdWUg
PT0gUGF0aCgpOyB9LAotICAgICAgICAgICAgW10oT3B0aW9uU2V0PEFYQW5jZXN0b3JGbGFnPiYg
dHlwZWRWYWx1ZSkgeyByZXR1cm4gdHlwZWRWYWx1ZS5pc0VtcHR5KCk7IH0sCit2b2lkIEFYSXNv
bGF0ZWRPYmplY3Q6OnNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgQVhQ
cm9wZXJ0eVZhbHVlVmFyaWFudCYmIHZhbHVlKQoreworICAgIGJvb2wgaXNEZWZhdWx0VmFsdWUg
PSBXVEY6OnN3aXRjaE9uKHZhbHVlLAorICAgICAgICBbXShzdGQ6Om51bGxwdHJfdCYpIHsgcmV0
dXJuIHRydWU7IH0sCisgICAgICAgIFtdKEFYSUQgdHlwZWRWYWx1ZSkgeyByZXR1cm4gIXR5cGVk
VmFsdWUuaXNWYWxpZCgpOyB9LAorICAgICAgICBbXShTdHJpbmcmIHR5cGVkVmFsdWUpIHsgcmV0
dXJuIHR5cGVkVmFsdWUgPT0gZW1wdHlTdHJpbmcoKTsgfSwKKyAgICAgICAgW10oYm9vbCB0eXBl
ZFZhbHVlKSB7IHJldHVybiAhdHlwZWRWYWx1ZTsgfSwKKyAgICAgICAgW10oaW50IHR5cGVkVmFs
dWUpIHsgcmV0dXJuICF0eXBlZFZhbHVlOyB9LAorICAgICAgICBbXSh1bnNpZ25lZCB0eXBlZFZh
bHVlKSB7IHJldHVybiAhdHlwZWRWYWx1ZTsgfSwKKyAgICAgICAgW10oZG91YmxlIHR5cGVkVmFs
dWUpIHsgcmV0dXJuIHR5cGVkVmFsdWUgPT0gMC4wOyB9LAorICAgICAgICBbXShmbG9hdCB0eXBl
ZFZhbHVlKSB7IHJldHVybiB0eXBlZFZhbHVlID09IDAuMDsgfSwKKyAgICAgICAgW10odWludDY0
X3QgdHlwZWRWYWx1ZSkgeyByZXR1cm4gIXR5cGVkVmFsdWU7IH0sCisgICAgICAgIFtdKEFjY2Vz
c2liaWxpdHlCdXR0b25TdGF0ZSYgdHlwZWRWYWx1ZSkgeyByZXR1cm4gdHlwZWRWYWx1ZSA9PSBB
Y2Nlc3NpYmlsaXR5QnV0dG9uU3RhdGU6Ok9mZjsgfSwKKyAgICAgICAgW10oQ29sb3ImIHR5cGVk
VmFsdWUpIHsgcmV0dXJuIHR5cGVkVmFsdWUgPT0gQ29sb3IoKTsgfSwKKyAgICAgICAgW10oVVJM
JiB0eXBlZFZhbHVlKSB7IHJldHVybiB0eXBlZFZhbHVlID09IFVSTCgpOyB9LAorICAgICAgICBb
XShMYXlvdXRSZWN0JiB0eXBlZFZhbHVlKSB7IHJldHVybiB0eXBlZFZhbHVlID09IExheW91dFJl
Y3QoKTsgfSwKKyAgICAgICAgW10oSW50UG9pbnQmIHR5cGVkVmFsdWUpIHsgcmV0dXJuIHR5cGVk
VmFsdWUgPT0gSW50UG9pbnQoKTsgfSwKKyAgICAgICAgW10oSW50UmVjdCYgdHlwZWRWYWx1ZSkg
eyByZXR1cm4gdHlwZWRWYWx1ZSA9PSBJbnRSZWN0KCk7IH0sCisgICAgICAgIFtdKHN0ZDo6cGFp
cjx1bnNpZ25lZCwgdW5zaWduZWQ+JiB0eXBlZFZhbHVlKSB7CisgICAgICAgICAgICAvLyAoMCwg
MSkgaXMgdGhlIGRlZmF1bHQgZm9yIGFuIGluZGV4IHJhbmdlLgorICAgICAgICAgICAgcmV0dXJu
IHR5cGVkVmFsdWUgPT0gc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4oMCwgMSk7CisgICAg
ICAgIH0sCisgICAgICAgIFtdKFZlY3RvcjxBY2Nlc3NpYmlsaXR5VGV4dD4mIHR5cGVkVmFsdWUp
IHsgcmV0dXJuIHR5cGVkVmFsdWUuaXNFbXB0eSgpOyB9LAorICAgICAgICBbXShWZWN0b3I8QVhJ
RD4mIHR5cGVkVmFsdWUpIHsgcmV0dXJuIHR5cGVkVmFsdWUuaXNFbXB0eSgpOyB9LAorICAgICAg
ICBbXShWZWN0b3I8c3RkOjpwYWlyPEFYSUQsIEFYSUQ+PiYgdHlwZWRWYWx1ZSkgeyByZXR1cm4g
dHlwZWRWYWx1ZS5pc0VtcHR5KCk7IH0sCisgICAgICAgIFtdKFZlY3RvcjxTdHJpbmc+JiB0eXBl
ZFZhbHVlKSB7IHJldHVybiB0eXBlZFZhbHVlLmlzRW1wdHkoKTsgfSwKKyAgICAgICAgW10oUGF0
aCYgdHlwZWRWYWx1ZSkgeyByZXR1cm4gdHlwZWRWYWx1ZSA9PSBQYXRoKCk7IH0sCisgICAgICAg
IFtdKE9wdGlvblNldDxBWEFuY2VzdG9yRmxhZz4mIHR5cGVkVmFsdWUpIHsgcmV0dXJuIHR5cGVk
VmFsdWUuaXNFbXB0eSgpOyB9LAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAgICAgICAgW10o
UmV0YWluUHRyPE5TQXR0cmlidXRlZFN0cmluZz4mIHR5cGVkVmFsdWUpIHsgcmV0dXJuICF0eXBl
ZFZhbHVlOyB9LAorICAgICAgICBbXShSZXRhaW5QdHI8TlNBdHRyaWJ1dGVkU3RyaW5nPiYgdHlw
ZWRWYWx1ZSkgeyByZXR1cm4gIXR5cGVkVmFsdWU7IH0sCiAjZW5kaWYKLSAgICAgICAgICAgIFtd
KEluc2lkZUxpbmsmIHR5cGVkVmFsdWUpIHsgcmV0dXJuIHR5cGVkVmFsdWUgPT0gSW5zaWRlTGlu
aygpOyB9LAotICAgICAgICAgICAgW10oVmVjdG9yPFZlY3RvcjxBWElEPj4mIHR5cGVkVmFsdWUp
IHsgcmV0dXJuIHR5cGVkVmFsdWUuaXNFbXB0eSgpOyB9LAotICAgICAgICAgICAgW10oQ2hhcmFj
dGVyUmFuZ2UmIHR5cGVkVmFsdWUpIHsgcmV0dXJuICF0eXBlZFZhbHVlLmxvY2F0aW9uICYmICF0
eXBlZFZhbHVlLmxlbmd0aDsgfSwKLSAgICAgICAgICAgIFtdKHN0ZDo6cGFpcjxBWElELCBDaGFy
YWN0ZXJSYW5nZT4mIHR5cGVkVmFsdWUpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gIXR5cGVk
VmFsdWUuZmlyc3QuaXNWYWxpZCgpICYmICF0eXBlZFZhbHVlLnNlY29uZC5sb2NhdGlvbiAmJiAh
dHlwZWRWYWx1ZS5zZWNvbmQubGVuZ3RoOwotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIFtd
KGF1dG8mKSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICApOwotICAgICAg
ICBpZiAoaXNEZWZhdWx0VmFsdWUpCi0gICAgICAgICAgICBtX3Byb3BlcnR5TWFwLnJlbW92ZShw
cm9wZXJ0eU5hbWUpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3Byb3BlcnR5TWFwLnNl
dChwcm9wZXJ0eU5hbWUsIHZhbHVlKTsKLSAgICB9CisgICAgICAgIFtdKEluc2lkZUxpbmsmIHR5
cGVkVmFsdWUpIHsgcmV0dXJuIHR5cGVkVmFsdWUgPT0gSW5zaWRlTGluaygpOyB9LAorICAgICAg
ICBbXShWZWN0b3I8VmVjdG9yPEFYSUQ+PiYgdHlwZWRWYWx1ZSkgeyByZXR1cm4gdHlwZWRWYWx1
ZS5pc0VtcHR5KCk7IH0sCisgICAgICAgIFtdKENoYXJhY3RlclJhbmdlJiB0eXBlZFZhbHVlKSB7
IHJldHVybiAhdHlwZWRWYWx1ZS5sb2NhdGlvbiAmJiAhdHlwZWRWYWx1ZS5sZW5ndGg7IH0sCisg
ICAgICAgIFtdKHN0ZDo6cGFpcjxBWElELCBDaGFyYWN0ZXJSYW5nZT4mIHR5cGVkVmFsdWUpIHsK
KyAgICAgICAgICAgIHJldHVybiAhdHlwZWRWYWx1ZS5maXJzdC5pc1ZhbGlkKCkgJiYgIXR5cGVk
VmFsdWUuc2Vjb25kLmxvY2F0aW9uICYmICF0eXBlZFZhbHVlLnNlY29uZC5sZW5ndGg7CisgICAg
ICAgIH0sCisgICAgICAgIFtdKGF1dG8mKSB7CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICk7CisgICAg
aWYgKGlzRGVmYXVsdFZhbHVlKQorICAgICAgICBtX3Byb3BlcnR5TWFwLnJlbW92ZShwcm9wZXJ0
eU5hbWUpOworICAgIGVsc2UKKyAgICAgICAgbV9wcm9wZXJ0eU1hcC5zZXQocHJvcGVydHlOYW1l
LCB2YWx1ZSk7CiB9CiAKIHZvaWQgQVhJc29sYXRlZE9iamVjdDo6ZGV0YWNoUmVtb3RlUGFydHMo
QWNjZXNzaWJpbGl0eURldGFjaG1lbnRUeXBlKQpAQCAtMTY3NiwxMiArMTY2Nyw2IEBAIGJvb2wg
QVhJc29sYXRlZE9iamVjdDo6aXNUYWJsZUNlbGwoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsK
IH0KIAotQVhDb3JlT2JqZWN0KiBBWElzb2xhdGVkT2JqZWN0OjplbGVtZW50QWNjZXNzaWJpbGl0
eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmKSBjb25zdAotewotICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgIHJldHVybiBudWxscHRyOwotfQotCiBib29sIEFYSXNvbGF0ZWRPYmplY3Q6Omlz
RGVzY2VuZGFudE9mUm9sZShBY2Nlc3NpYmlsaXR5Um9sZSkgY29uc3QKIHsKICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaAppbmRleCBiYjExZGJjZDUyYzcu
LmRiOTc1ODExMzUyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
c29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaApAQCAtODAsNyArODAsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgaW5pdGlhbGl6ZVByb3BlcnRpZXMoY29uc3QgUmVmPEFjY2Vz
c2liaWxpdHlPYmplY3Q+Jik7CiAgICAgdm9pZCBpbml0aWFsaXplUGxhdGZvcm1Qcm9wZXJ0aWVz
KGNvbnN0IFJlZjxjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0PiYpOwogCi0gICAgdm9pZCBzZXRQ
cm9wZXJ0eShBWFByb3BlcnR5TmFtZSwgQVhQcm9wZXJ0eVZhbHVlVmFyaWFudCYmLCBib29sIHNo
b3VsZFJlbW92ZSA9IGZhbHNlKTsKKyAgICB2b2lkIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1l
LCBBWFByb3BlcnR5VmFsdWVWYXJpYW50JiYpOwogICAgIHZvaWQgc2V0T2JqZWN0UHJvcGVydHko
QVhQcm9wZXJ0eU5hbWUsIEFYQ29yZU9iamVjdCopOwogICAgIHZvaWQgc2V0T2JqZWN0VmVjdG9y
UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWUsIGNvbnN0IEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3Rv
ciYpOwogCkBAIC00NjgsNyArNDY4LDYgQEAgcHJpdmF0ZToKICAgICBib29sIHN1cHBvcnRzUHJl
c3NBY3Rpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9w
ZXJ0eU5hbWU6OlN1cHBvcnRzUHJlc3NBY3Rpb24pOyB9CiAgICAgYm9vbCBzdXBwb3J0c0NoZWNr
ZWQoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGlzTW9kYWxOb2RlKCkgY29uc3Qgb3ZlcnJp
ZGU7Ci0gICAgQVhDb3JlT2JqZWN0KiBlbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3Qg
SW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGlzRGVzY2VuZGFudE9mUm9sZShB
Y2Nlc3NpYmlsaXR5Um9sZSkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgQVhDb3JlT2JqZWN0KiBjb3Jy
ZXNwb25kaW5nTGFiZWxGb3JDb250cm9sRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIEFY
Q29yZU9iamVjdCogY29ycmVzcG9uZGluZ0NvbnRyb2xGb3JMYWJlbEVsZW1lbnQoKSBjb25zdCBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0
ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcAppbmRleCBkMTM5YmU3NDM1ZDMuLjA0YmNj
MmYxYjEzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRl
ZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcApAQCAtOTM5LDcgKzkzOSw3IEBAIHZv
aWQgQVhJc29sYXRlZFRyZWU6OnJlbW92ZVN1YnRyZWVGcm9tTm9kZU1hcChBWElEIG9iamVjdElE
LCBBY2Nlc3NpYmlsaXR5T2JqZWN0CiAgICAgfQogfQogCi1zdGQ6Om9wdGlvbmFsPFZlY3RvcjxB
WElEPj4gQVhJc29sYXRlZFRyZWU6OnJlbGF0ZWRPYmplY3RJRHNGb3IoY29uc3QgQVhDb3JlT2Jq
ZWN0JiBvYmplY3QsIEFYUmVsYXRpb25UeXBlIHJlbGF0aW9uVHlwZSkKK3N0ZDo6b3B0aW9uYWw8
VmVjdG9yPEFYSUQ+PiBBWElzb2xhdGVkVHJlZTo6cmVsYXRlZE9iamVjdElEc0Zvcihjb25zdCBB
WElzb2xhdGVkT2JqZWN0JiBvYmplY3QsIEFYUmVsYXRpb25UeXBlIHJlbGF0aW9uVHlwZSkKIHsK
ICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgKaW5kZXgg
YTJkOGZiYTZkMDNkLi5mNTk4MWRhZDEyODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaApAQCAtMzE1
LDcgKzMxNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEZvY3VzZWROb2RlSUQoQVhJRCk7CiAK
ICAgICAvLyBSZWxhdGlvbnNoaXBzIGJldHdlZW4gb2JqZWN0cy4KLSAgICBzdGQ6Om9wdGlvbmFs
PFZlY3RvcjxBWElEPj4gcmVsYXRlZE9iamVjdElEc0Zvcihjb25zdCBBWENvcmVPYmplY3QmLCBB
WFJlbGF0aW9uVHlwZSk7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8QVhJRD4+IHJlbGF0ZWRP
YmplY3RJRHNGb3IoY29uc3QgQVhJc29sYXRlZE9iamVjdCYsIEFYUmVsYXRpb25UeXBlKTsKICAg
ICB2b2lkIHJlbGF0aW9uc05lZWRVcGRhdGUoYm9vbCBuZWVkVXBkYXRlKSB7IG1fcmVsYXRpb25z
TmVlZFVwZGF0ZSA9IG5lZWRVcGRhdGU7IH0KIAogICAgIC8vIENhbGxlZCBvbiBBWCB0aHJlYWQg
ZnJvbSBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBtZXRob2RzLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW0KaW5kZXgg
ZDc4NmM5ZTYxNjQ0Li5jNzllZjc2NTE2NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbQpAQCAtNDYwLDExICs0NjAsOCBA
QCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlvbihBWENvcmVPYmpl
Y3QqIG9iamVjdCwgQVhOb3RpZmljYXRpbwogfQogCiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlf
SVNPTEFURURfVFJFRSkKLXN0YXRpYyB2b2lkIGNyZWF0ZUlzb2xhdGVkT2JqZWN0SWZOZWVkZWQo
QVhDb3JlT2JqZWN0JiBvYmplY3QsIHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJ
RCkKK3N0YXRpYyB2b2lkIGNyZWF0ZUlzb2xhdGVkT2JqZWN0SWZOZWVkZWQoQWNjZXNzaWJpbGl0
eU9iamVjdCYgb2JqZWN0LCBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpCiB7
Ci0gICAgaWYgKCFpczxBY2Nlc3NpYmlsaXR5T2JqZWN0PihvYmplY3QpKQotICAgICAgICByZXR1
cm47Ci0KICAgICAvLyBUaGUgd3JhcHBlciBhc3NvY2lhdGVkIHdpdGggYSBwdWJsaXNoZWQgbm90
aWZpY2F0aW9uIG1heSBub3QgaGF2ZSBhbiBpc29sYXRlZCBvYmplY3QgeWV0LgogICAgIC8vIFRo
aXMgc2hvdWxkIG9ubHkgaGFwcGVuIHdoZW4gdGhlIGxpdmUgb2JqZWN0IGlzIGlnbm9yZWQsIG1l
YW5pbmcgd2Ugd2lsbCBuZXZlciBjcmVhdGUgYW4gaXNvbGF0ZWQgb2JqZWN0IGZvciBpdC4KICAg
ICAvLyBUaGlzIGlzIGdlbmVyYWxseSBjb3JyZWN0LCBidXQgbm90IGluIHRoaXMgY2FzZSwgc2lu
Y2UgQVggY2xpZW50cyB3aWxsIHRyeSB0byBxdWVyeSB0aGlzIHdyYXBwZXIgYnV0IHRoZSB3cmFw
cGVyCkBAIC00NzcsNyArNDc0LDcgQEAgc3RhdGljIHZvaWQgY3JlYXRlSXNvbGF0ZWRPYmplY3RJ
Zk5lZWRlZChBWENvcmVPYmplY3QmIG9iamVjdCwgc3RkOjpvcHRpb25hbDxQYWcKIAogICAgIGlm
IChvYmplY3QuYWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpKSB7CiAgICAgICAgIGlmIChhdXRvIHRy
ZWUgPSBBWElzb2xhdGVkVHJlZTo6dHJlZUZvclBhZ2VJRChwYWdlSUQpKQotICAgICAgICAgICAg
dHJlZS0+YWRkVW5jb25uZWN0ZWROb2RlKGRvd25jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3Q+KG9i
amVjdCkpOworICAgICAgICAgICAgdHJlZS0+YWRkVW5jb25uZWN0ZWROb2RlKG9iamVjdCk7CiAg
ICAgfQogfQogI2VuZGlmCkBAIC01ODEsNyArNTc4LDcgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpw
b3N0VGV4dFN0YXRlQ2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVj
dCoKICAgICBwb3N0VGV4dFJlcGxhY2VtZW50UGxhdGZvcm1Ob3RpZmljYXRpb24ob2JqZWN0LCBB
WFRleHRFZGl0VHlwZVVua25vd24sIGVtcHR5U3RyaW5nKCksIHR5cGUsIHRleHQsIHBvc2l0aW9u
KTsKIH0KIAotc3RhdGljIHZvaWQgcG9zdFVzZXJJbmZvRm9yQ2hhbmdlcyhBWENvcmVPYmplY3Qm
IHJvb3RXZWJBcmVhLCBBWENvcmVPYmplY3QmIG9iamVjdCwgTlNNdXRhYmxlQXJyYXkqIGNoYW5n
ZXMsIHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkKK3N0YXRpYyB2b2lkIHBv
c3RVc2VySW5mb0ZvckNoYW5nZXMoQWNjZXNzaWJpbGl0eU9iamVjdCYgcm9vdFdlYkFyZWEsIEFj
Y2Vzc2liaWxpdHlPYmplY3QmIG9iamVjdCwgTlNNdXRhYmxlQXJyYXkgKmNoYW5nZXMsIHN0ZDo6
b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkKIHsKICAgICBhdXRvIHVzZXJJbmZvID0g
YWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6NF0p
OwogICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6QChwbGF0Zm9ybUNoYW5nZVR5cGVGb3JXZWJDb3Jl
Q2hhbmdlVHlwZShBWFRleHRTdGF0ZUNoYW5nZVR5cGVFZGl0KSkgZm9yS2V5Ok5TQWNjZXNzaWJp
bGl0eVRleHRTdGF0ZUNoYW5nZVR5cGVLZXldOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdE1hYy5tbSBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RNYWMubW0KaW5kZXggNDA4
MTU3NDljY2JjLi4yMTE2OTRiMzkxYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RNYWMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdE1hYy5tbQpAQCAtNjYsNyAr
NjYsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmRldGFjaEZyb21QYXJlbnQoKQogICAg
ICAgICBvdmVycmlkZUF0dGFjaG1lbnRQYXJlbnQobnVsbHB0cik7CiB9CiAKLXZvaWQgQWNjZXNz
aWJpbGl0eU9iamVjdDo6b3ZlcnJpZGVBdHRhY2htZW50UGFyZW50KEFYQ29yZU9iamVjdCogcGFy
ZW50KQordm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpvdmVycmlkZUF0dGFjaG1lbnRQYXJlbnQo
QWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50KQogewogICAgIGlmICghaXNBdHRhY2htZW50KCkp
CiAgICAgICAgIHJldHVybjsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>468111</attachid>
            <date>2023-10-07 18:19:42 -0700</date>
            <delta_ts>2023-10-08 00:44:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-262844-20231007181942.patch</filename>
            <type>text/plain</type>
            <size>35936</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">RnJvbSA2NWNhYjRjZDZlNmU4MGU1ZjlhOTM4NjgzNTUyNDcxZTI5Yzg5NzcwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUeWxlciBXaWxjb2NrIDx0eWxlcl93QGFwcGxlLmNvbT4KRGF0
ZTogU2F0LCA3IE9jdCAyMDIzIDEyOjI5OjMwIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gQVg6IFVz
ZSBtb3JlIHNwZWNpZmljIHR5cGVzIGluIEFjY2Vzc2liaWxpdHlPYmplY3QgYW5kCiBzdWJjbGFz
c2VzIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjI4NDQKIHJkYXI6
Ly9wcm9ibGVtLzExNjYyNTM0MgoKUmV2aWV3ZWQgYnkgQ2hyaXMgRmxlaXphY2guCgpUaGlzIGlt
cHJvdmVzIHR5cGUgc2FmZXR5LCBnaXZlcyB0aGUgb3B0aW1pemVyIG1vcmUgaW5mb3JtYXRpb24g
dG8gd29yayB3aXRoLCBhbmQgZ2VuZXJhbGx5IG1ha2VzIG1vcmUgc2Vuc2UKKGFuIEFjY2Vzc2li
aWxpdHlPYmplY3Qgc2hvdWxkIG5ldmVyIGJlIGFibGUgdG8gcmV0dXJuIHRoZSBvdGhlciBBWENv
cmVPYmplY3QgdmFyaWFudCwgQVhJc29sYXRlZE9iamVjdCkuCgpUaGlzIHBhdGNoIGFsc28gZG9l
cyBhbm90aGVyIHVucmVsYXRlZCBjbGVhbi11cCwgcmVtb3ZpbmcgdGhlIHNob3VsZFJlbW92ZSBw
YXJhbWV0ZXIgZnJvbSBBWElzb2xhdGVkT2JqZWN0OjpzZXRQcm9wZXJ0eSwKYXMgaXQgb25seSBo
YWQgb25lIHVzZSB0aGF0IGhhcyBiZWVuIG1hZGUgcmVkdW5kYW50IGJ5IG1ha2luZyBBWElzb2xh
dGVkT2JqZWN0OjptX3Byb3BlcnR5TWFwIHNwYXJzZSBpbiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjYxOTY4LgoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FYQ29yZU9iamVjdC5oOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eUxpc3RCb3guY3BwOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUxpc3RCb3g6OmVsZW1lbnRB
Y2Nlc3NpYmlsaXR5SGl0VGVzdCBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5oOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpp
c1RhYkl0ZW1TZWxlY3RlZCBjb25zdCk6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpl
bGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3QgY29uc3QpOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6Zm9jdXNlZFVJRWxlbWVudCBjb25zdCk6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpzZWxlY3RlZENoaWxkcmVuKToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlPYmplY3QuaDoKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om92
ZXJyaWRlQXR0YWNobWVudFBhcmVudCk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3Q6OmFjY2Vzc2liaWxpdHlJbWFnZU1hcEhpdFRlc3QgY29uc3QpOgooV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6cmVtb3RlU1ZHRWxlbWVudEhpdFRlc3QgY29uc3Qp
OgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6ZWxlbWVudEFjY2Vzc2liaWxp
dHlIaXRUZXN0IGNvbnN0KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFj
Y2Vzc2liaWxpdHlIaXRUZXN0IGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaDoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmNwcDoKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlT
Y3JvbGxWaWV3OjphY2Nlc3NpYmlsaXR5SGl0VGVzdCBjb25zdCk6CiogU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oOgoqIFNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5jcHA6CihXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5U2xpZGVyOjplbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3QgY29uc3QpOgoqIFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5oOgoqIFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcDoKKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlUYWJsZTo6Y2VsbEZvckNvbHVtbkFuZFJvdyk6CiogU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuaDoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwOgooV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eVRhYmxlQ2VsbDo6Y29sdW1uSGVhZGVycyk6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFi
bGVDZWxsOjpyb3dIZWFkZXJzKToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9B
Y2Nlc3NpYmlsaXR5T2JqZWN0SU9TLm1tOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
b3ZlcnJpZGVBdHRhY2htZW50UGFyZW50KToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcDoKKFdlYkNvcmU6OkFYSXNvbGF0ZWRP
YmplY3Q6OnNldE9iamVjdFByb3BlcnR5KToKKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OnNl
dE9iamVjdFZlY3RvclByb3BlcnR5KToKKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OnNldFBy
b3BlcnR5KToKKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmVsZW1lbnRBY2Nlc3NpYmlsaXR5
SGl0VGVzdCBjb25zdCk6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
c29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcDoKKFdlYkNvcmU6OkFYSXNvbGF0
ZWRUcmVlOjpyZWxhdGVkT2JqZWN0SURzRm9yKToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW06CihXZWJDb3JlOjpjcmVhdGVJc29sYXRl
ZE9iamVjdElmTmVlZGVkKToKKFdlYkNvcmU6OnBvc3RVc2VySW5mb0ZvckNoYW5nZXMpOgoqIFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RNYWMubW06
CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpvdmVycmlkZUF0dGFjaG1lbnRQYXJlbnQp
OgotLS0KIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhDb3JlT2JqZWN0LmggICB8ICAg
MiAtCiAuLi4vYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAgICAgfCAgIDYg
Ky0KIC4uLi9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmggICAgICB8ICAgMiAr
LQogLi4uL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgICAgIHwgIDEyICst
CiAuLi4vYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmggICAgICAgfCAgMTQgKy0t
CiAuLi4vQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgICAgICAgICAgICAgfCAgMTIgKy0K
IC4uLi9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaCB8ICAgOCArLQog
Li4uL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwIHwgICAyICstCiAu
Li4vYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oICAgfCAgIDIgKy0KIC4u
Li9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuY3BwICAgICB8ICAgNCArLQogLi4u
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5oICAgICAgIHwgICAyICstCiAuLi4v
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwICAgICAgfCAgIDIgKy0KIC4uLi9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5oICAgICAgICB8ICAgMiArLQogLi4uL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5jcHAgIHwgICA0ICstCiAuLi4vaW9z
L0FjY2Vzc2liaWxpdHlPYmplY3RJT1MubW0gICAgICAgICAgICAgfCAgIDIgKy0KIC4uLi9pc29s
YXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAgICAgICAgICB8IDEwNSArKysrKysrKy0tLS0t
LS0tLS0KIC4uLi9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oICAgICAgICAgICB8ICAg
MyArLQogLi4uL2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAgICAgICAgICAgIHwgICAy
ICstCiAuLi4vaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmggICAgICAgICAgICAgfCAgIDIg
Ky0KIC4uLi9hY2Nlc3NpYmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tICAgICB8ICAgOSAr
LQogLi4uL21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFjLm1tICAgICAgICAgICAgIHwgICAyICst
CiAyMSBmaWxlcyBjaGFuZ2VkLCA4OSBpbnNlcnRpb25zKCspLCAxMTAgZGVsZXRpb25zKC0pCgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWENvcmVPYmplY3QuaCBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhDb3JlT2JqZWN0LmgKaW5kZXggYzUxMDQz
YjBlMTU4Li43MTljYWU5Y2RiMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQVhDb3JlT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WENvcmVPYmplY3QuaApAQCAtMTA5MCw4ICsxMDkwLDYgQEAgcHVibGljOgogCiAgICAgLy8gQ2Fs
bGVkIG9uIHRoZSByb290IEFYIG9iamVjdCB0byByZXR1cm4gdGhlIGRlZXBlc3QgYXZhaWxhYmxl
IGVsZW1lbnQuCiAgICAgdmlydHVhbCBBWENvcmVPYmplY3QqIGFjY2Vzc2liaWxpdHlIaXRUZXN0
KGNvbnN0IEludFBvaW50JikgY29uc3QgPSAwOwotICAgIC8vIENhbGxlZCBvbiB0aGUgQVggb2Jq
ZWN0IGFmdGVyIHRoZSByZW5kZXIgdHJlZSBkZXRlcm1pbmVzIHdoaWNoIGlzIHRoZSByaWdodCBB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LgotICAgIHZpcnR1YWwgQVhDb3JlT2JqZWN0KiBlbGVt
ZW50QWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmKSBjb25zdCA9IDA7CiAKICAg
ICB2aXJ0dWFsIEFYQ29yZU9iamVjdCogZm9jdXNlZFVJRWxlbWVudCgpIGNvbnN0ID0gMDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlz
dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0
Qm94LmNwcAppbmRleCBkNjFiY2Y0NGY2ZWYuLmI4MTNhNTU2NmI4YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAKQEAg
LTEzNyw3ICsxMzcsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5TGlzdEJv
eDo6bGlzdEJveE9wdGlvbkFjY2Vzc2liaWxpdHlPYmplY3QoSFRNTAogICAgIHJldHVybiBudWxs
cHRyOwogfQogCi1BWENvcmVPYmplY3QqIEFjY2Vzc2liaWxpdHlMaXN0Qm94OjplbGVtZW50QWNj
ZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAorQWNjZXNzaWJp
bGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eUxpc3RCb3g6OmVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0
VGVzdChjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CiB7CiAgICAgLy8gdGhlIGludGVybmFs
IEhUTUxTZWxlY3RFbGVtZW50IG1ldGhvZHMgZm9yIHJldHVybmluZyBhIGxpc3Rib3ggb3B0aW9u
IGF0IGEgcG9pbnQKICAgICAvLyBpZ25vcmUgb3B0Z3JvdXAgZWxlbWVudHMuCkBAIC0xNTAsMTQg
KzE1MCwxNCBAQCBBWENvcmVPYmplY3QqIEFjY2Vzc2liaWxpdHlMaXN0Qm94OjplbGVtZW50QWNj
ZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmCiAgICAgCiAgICAgTGF5b3V0UmVjdCBw
YXJlbnRSZWN0ID0gYm91bmRpbmdCb3hSZWN0KCk7CiAgICAgCi0gICAgQVhDb3JlT2JqZWN0KiBs
aXN0Qm94T3B0aW9uID0gbnVsbHB0cjsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBsaXN0Qm94
T3B0aW9uID0gbnVsbHB0cjsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBtX2NoaWxkcmVuLnNpemUo
KTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKICAgICAgICAg
TGF5b3V0UmVjdCByZWN0ID0gZG93bmNhc3Q8UmVuZGVyTGlzdEJveD4oKm1fcmVuZGVyZXIpLml0
ZW1Cb3VuZGluZ0JveFJlY3QocGFyZW50UmVjdC5sb2NhdGlvbigpLCBpKTsKICAgICAgICAgLy8g
VGhlIGNhc3QgdG8gSFRNTEVsZW1lbnQgYmVsb3cgaXMgc2FmZSBiZWNhdXNlIHRoZSBvbmx5IG90
aGVyIHBvc3NpYmxlIGxpc3RJdGVtIHR5cGUKICAgICAgICAgLy8gd291bGQgYmUgYSBXTUxFbGVt
ZW50LCBidXQgV01MIGJ1aWxkcyBkb24ndCB1c2UgYWNjZXNzaWJpbGl0eSBmZWF0dXJlcyBhdCBh
bGwuCiAgICAgICAgIGlmIChyZWN0LmNvbnRhaW5zKHBvaW50KSkgewotICAgICAgICAgICAgbGlz
dEJveE9wdGlvbiA9IG1fY2hpbGRyZW5baV0uZ2V0KCk7CisgICAgICAgICAgICBsaXN0Qm94T3B0
aW9uID0gZHluYW1pY0Rvd25jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3Q+KG1fY2hpbGRyZW5baV0u
Z2V0KCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmggYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmgKaW5kZXgg
NGI2M2U2NGM4MzllLi5iN2QwNDY3NzE3ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmgKQEAgLTUyLDcgKzUyLDcgQEAgcHJp
dmF0ZToKIAogICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5TGlzdEJveEluc3RhbmNlKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGxpc3RC
b3hPcHRpb25BY2Nlc3NpYmlsaXR5T2JqZWN0KEhUTUxFbGVtZW50KikgY29uc3Q7Ci0gICAgQVhD
b3JlT2JqZWN0KiBlbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmKSBj
b25zdCBvdmVycmlkZTsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBlbGVtZW50QWNjZXNzaWJp
bGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmKSBjb25zdCBmaW5hbDsKIH07CiAgICAgCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAppbmRleCBjM2E5YmU1ZjM2OTIuLjA0MzM5NjIzZjhl
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuY3BwCkBAIC0zMDQ1LDcgKzMwNDUsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OmlzVGFiSXRlbVNlbGVjdGVkKCkgY29uc3QKICAgICAvLyBUaGUgQVJJQSBzcGVjIHNheXMg
YSB0YWIgaXRlbSBjYW4gYWxzbyBiZSBzZWxlY3RlZCBpZiBpdCBpcyBhcmlhLWxhYmVsZWQgYnkg
YSB0YWJwYW5lbAogICAgIC8vIHRoYXQgaGFzIGtleWJvYXJkIGZvY3VzIGluc2lkZSBvZiBpdCwg
b3IgaWYgYSB0YWJwYW5lbCBpbiBpdHMgYXJpYS1jb250cm9scyBsaXN0IGhhcyBLQgogICAgIC8v
IGZvY3VzIGluc2lkZSBvZiBpdC4KLSAgICBhdXRvKiBmb2N1c2VkRWxlbWVudCA9IHN0YXRpY19j
YXN0PEFjY2Vzc2liaWxpdHlPYmplY3QqPihmb2N1c2VkVUlFbGVtZW50KCkpOworICAgIGF1dG8q
IGZvY3VzZWRFbGVtZW50ID0gZm9jdXNlZFVJRWxlbWVudCgpOwogICAgIGlmICghZm9jdXNlZEVs
ZW1lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMzEyOSw3ICszMTI5LDcgQEAgYm9v
bCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzdXBwb3J0c0FSSUFBdHRyaWJ1dGVzKCkgY29uc3QKICAg
ICAgICAgfHwgaGFzQXR0cmlidXRlKGFyaWFfcmVsZXZhbnRBdHRyKTsKIH0KICAgICAKLUFYQ29y
ZU9iamVjdCogQWNjZXNzaWJpbGl0eU9iamVjdDo6ZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0
KGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKK0FjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vz
c2liaWxpdHlPYmplY3Q6OmVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2lu
dCYgcG9pbnQpIGNvbnN0CiB7IAogICAgIC8vIFNlbmQgdGhlIGhpdCB0ZXN0IGJhY2sgaW50byB0
aGUgc3ViLWZyYW1lIGlmIG5lY2Vzc2FyeS4KICAgICBpZiAoaXNBdHRhY2htZW50KCkpIHsKQEAg
LTMxNDMsOCArMzE0Myw4IEBAIEFYQ29yZU9iamVjdCogQWNjZXNzaWJpbGl0eU9iamVjdDo6ZWxl
bWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JiBwCiAgICAgCiAgICAgLy8g
Q2hlY2sgaWYgdGhlcmUgYXJlIGFueSBtb2NrIGVsZW1lbnRzIHRoYXQgbmVlZCB0byBiZSBoYW5k
bGVkLgogICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGQgOiBtX2NoaWxkcmVuKSB7Ci0gICAgICAg
IGlmIChjaGlsZC0+aXNNb2NrT2JqZWN0KCkgJiYgY2hpbGQtPmVsZW1lbnRSZWN0KCkuY29udGFp
bnMocG9pbnQpKQotICAgICAgICAgICAgcmV0dXJuIGNoaWxkLT5lbGVtZW50QWNjZXNzaWJpbGl0
eUhpdFRlc3QocG9pbnQpOworICAgICAgICBpZiAoYXV0byogbW9ja0NoaWxkID0gZHluYW1pY0Rv
d25jYXN0PEFjY2Vzc2liaWxpdHlNb2NrT2JqZWN0PihjaGlsZC5nZXQoKSk7IG1vY2tDaGlsZCAm
JiBtb2NrQ2hpbGQtPmVsZW1lbnRSZWN0KCkuY29udGFpbnMocG9pbnQpKQorICAgICAgICAgICAg
cmV0dXJuIG1vY2tDaGlsZC0+ZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KHBvaW50KTsKICAg
ICB9CiAKICAgICByZXR1cm4gY29uc3RfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4odGhpcyk7
CkBAIC0zMTU2LDcgKzMxNTYsNyBAQCBBWE9iamVjdENhY2hlKiBBY2Nlc3NpYmlsaXR5T2JqZWN0
OjpheE9iamVjdENhY2hlKCkgY29uc3QKICAgICByZXR1cm4gZG9jdW1lbnQgPyBkb2N1bWVudC0+
YXhPYmplY3RDYWNoZSgpIDogbnVsbHB0cjsKIH0KIAotQVhDb3JlT2JqZWN0KiBBY2Nlc3NpYmls
aXR5T2JqZWN0Ojpmb2N1c2VkVUlFbGVtZW50KCkgY29uc3QKK0FjY2Vzc2liaWxpdHlPYmplY3Qq
IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmZvY3VzZWRVSUVsZW1lbnQoKSBjb25zdAogewogICAgIGF1
dG8qIHBhZ2UgPSB0aGlzLT5wYWdlKCk7CiAgICAgYXV0byogYXhPYmplY3RDYWNoZSA9IHRoaXMt
PmF4T2JqZWN0Q2FjaGUoKTsKQEAgLTQyMzEsNyArNDIzMSw3IEBAIEFYQ29yZU9iamVjdDo6QWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnNlbGVjdGVkQ2hp
bGRyZW4oCiAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUJhcjoKICAgICAgICAgaWYg
KGF1dG8qIGRlc2NlbmRhbnQgPSBhY3RpdmVEZXNjZW5kYW50KCkpCiAgICAgICAgICAgICByZXN1
bHQgPSB7IGRlc2NlbmRhbnQgfTsKLSAgICAgICAgZWxzZSBpZiAoYXV0byogZm9jdXNlZEVsZW1l
bnQgPSBkeW5hbWljRG93bmNhc3Q8QWNjZXNzaWJpbGl0eU9iamVjdD4oZm9jdXNlZFVJRWxlbWVu
dCgpKSkKKyAgICAgICAgZWxzZSBpZiAoYXV0byogZm9jdXNlZEVsZW1lbnQgPSBmb2N1c2VkVUlF
bGVtZW50KCkpCiAgICAgICAgICAgICByZXN1bHQgPSB7IGZvY3VzZWRFbGVtZW50IH07CiAgICAg
ICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCmluZGV4IDlkM2ViMGEwYWM2Ny4uMTkwODA4NmNl
YjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuaApAQCAtMTQ4LDcgKzE0OCw3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBjb2x1
bW5Db3VudCgpIG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KICAgICB1bnNpZ25lZCByb3dDb3VudCgp
IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KICAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Ig
Y2VsbHMoKSBvdmVycmlkZSB7IHJldHVybiBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IoKTsg
fQotICAgIEFYQ29yZU9iamVjdCogY2VsbEZvckNvbHVtbkFuZFJvdyh1bnNpZ25lZCwgdW5zaWdu
ZWQpIG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBjZWxsRm9yQ29sdW1uQW5kUm93KHVuc2lnbmVkLCB1bnNpZ25lZCkgb3ZlcnJpZGUgeyByZXR1
cm4gbnVsbHB0cjsgfQogICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBjb2x1bW5IZWFk
ZXJzKCkgb3ZlcnJpZGUgeyByZXR1cm4gQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yKCk7IH0K
ICAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Igcm93SGVhZGVycygpIG92ZXJyaWRlIHsg
cmV0dXJuIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvcigpOyB9CiAgICAgQWNjZXNzaWJpbGl0
eUNoaWxkcmVuVmVjdG9yIHZpc2libGVSb3dzKCkgb3ZlcnJpZGUgeyByZXR1cm4gQWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yKCk7IH0KQEAgLTMyNSwxMSArMzI1LDExIEBAIHB1YmxpYzoKICAg
ICBWZWN0b3I8U3RyaW5nPiBkZXRlcm1pbmVEcm9wRWZmZWN0cygpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHsgfTsgfQogCiAgICAgLy8gQ2FsbGVkIG9uIHRoZSByb290IEFYIG9iamVjdCB0byBy
ZXR1cm4gdGhlIGRlZXBlc3QgYXZhaWxhYmxlIGVsZW1lbnQuCi0gICAgQVhDb3JlT2JqZWN0KiBh
Y2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG51bGxwdHI7IH0KKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBhY2Nlc3NpYmlsaXR5SGl0
VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0K
ICAgICAvLyBDYWxsZWQgb24gdGhlIEFYIG9iamVjdCBhZnRlciB0aGUgcmVuZGVyIHRyZWUgZGV0
ZXJtaW5lcyB3aGljaCBpcyB0aGUgcmlnaHQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC4KLSAg
ICBBWENvcmVPYmplY3QqIGVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2lu
dCYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogZWxl
bWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JikgY29uc3Q7CiAKLSAgICBB
WENvcmVPYmplY3QqIGZvY3VzZWRVSUVsZW1lbnQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBmb2N1c2VkVUlFbGVtZW50KCkgY29uc3QgZmluYWw7CiAKICAgICB2
aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIGZpcnN0Q2hpbGQoKSBjb25zdCB7IHJldHVybiBu
dWxscHRyOyB9CiAgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBsYXN0Q2hpbGQoKSBj
b25zdCB7IHJldHVybiBudWxscHRyOyB9CkBAIC01MDYsNyArNTA2LDcgQEAgcHVibGljOgogICAg
IGNvbnN0IEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgY2hpbGRyZW4oYm9vbCB1cGRhdGVD
aGlsZHJlbklmTmVlZGVkID0gdHJ1ZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGFkZENo
aWxkcmVuKCkgeyB9CiAgICAgZW51bSBjbGFzcyBEZXNjZW5kSWZJZ25vcmVkIDogYm9vbCB7IE5v
LCBZZXMgfTsKLSAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoQVhDb3JlT2JqZWN0KiwgRGVzY2Vu
ZElmSWdub3JlZCA9IERlc2NlbmRJZklnbm9yZWQ6Olllcyk7CisgICAgdm9pZCBhZGRDaGlsZChB
WENvcmVPYmplY3QqLCBEZXNjZW5kSWZJZ25vcmVkID0gRGVzY2VuZElmSWdub3JlZDo6WWVzKTsK
ICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0Q2hpbGQoQVhDb3JlT2JqZWN0KiwgdW5zaWduZWQsIERl
c2NlbmRJZklnbm9yZWQgPSBEZXNjZW5kSWZJZ25vcmVkOjpZZXMpOwogICAgIHZpcnR1YWwgYm9v
bCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCB1cGRh
dGVDaGlsZHJlbklmTmVjZXNzYXJ5KCkgb3ZlcnJpZGU7CkBAIC03MDAsOSArNzAwLDkgQEAgcHVi
bGljOgogICAgIGJvb2wgaXNPblNjcmVlbigpIGNvbnN0IG92ZXJyaWRlOwogCiAjaWYgUExBVEZP
Uk0oQ09DT0EpCi0gICAgdm9pZCBvdmVycmlkZUF0dGFjaG1lbnRQYXJlbnQoQVhDb3JlT2JqZWN0
KiBwYXJlbnQpOworICAgIHZvaWQgb3ZlcnJpZGVBdHRhY2htZW50UGFyZW50KEFjY2Vzc2liaWxp
dHlPYmplY3QqIHBhcmVudCk7CiAjZWxzZQotICAgIHZvaWQgb3ZlcnJpZGVBdHRhY2htZW50UGFy
ZW50KEFYQ29yZU9iamVjdCopIHsgfQorICAgIHZvaWQgb3ZlcnJpZGVBdHRhY2htZW50UGFyZW50
KEFjY2Vzc2liaWxpdHlPYmplY3QqKSB7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKEFDQ0VTU0lC
SUxJVFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAppbmRleCAwMGFiNWYzMzZkMWUuLmE4NDg2NWZlYzI0
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC0xODUyLDcgKzE4NTIsNyBAQCBJbnRSZWN0IEFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmRvQVhCb3VuZHNGb3JSYW5nZVVzaW5nQ2hhcmFjdGVy
T2Zmc2V0KGNvbnN0CiAgICAgcmV0dXJuIGJvdW5kc0ZvclJhbmdlKCpyYW5nZSk7CiB9CiAKLUFY
Q29yZU9iamVjdCogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWNjZXNzaWJpbGl0eUltYWdl
TWFwSGl0VGVzdChIVE1MQXJlYUVsZW1lbnQqIGFyZWEsIGNvbnN0IEludFBvaW50JiBwb2ludCkg
Y29uc3QKK0FjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFj
Y2Vzc2liaWxpdHlJbWFnZU1hcEhpdFRlc3QoSFRNTEFyZWFFbGVtZW50KiBhcmVhLCBjb25zdCBJ
bnRQb2ludCYgcG9pbnQpIGNvbnN0CiB7CiAgICAgaWYgKCFhcmVhKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKQEAgLTE4NjcsMTMgKzE4NjcsMTMgQEAgQVhDb3JlT2JqZWN0KiBBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0OjphY2Nlc3NpYmlsaXR5SW1hZ2VNYXBIaXRUZXN0KEhUTUxBcmVhRWwK
IAogICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGQgOiBwYXJlbnQtPmNoaWxkcmVuKCkpIHsKICAg
ICAgICAgaWYgKGNoaWxkLT5lbGVtZW50UmVjdCgpLmNvbnRhaW5zKHBvaW50KSkKLSAgICAgICAg
ICAgIHJldHVybiBjaGlsZC5nZXQoKTsKKyAgICAgICAgICAgIHJldHVybiBkeW5hbWljRG93bmNh
c3Q8QWNjZXNzaWJpbGl0eU9iamVjdD4oY2hpbGQuZ2V0KCkpOwogICAgIH0KIAogICAgIHJldHVy
biBudWxscHRyOwogfQogCi1BWENvcmVPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OnJlbW90ZVNWR0VsZW1lbnRIaXRUZXN0KGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKK0Fj
Y2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnJlbW90ZVNWR0Vs
ZW1lbnRIaXRUZXN0KGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKIHsKICAgICBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiByZW1vdGUgPSByZW1vdGVTVkdSb290RWxlbWVudChDcmVhdGUpOwogICAg
IGlmICghcmVtb3RlKQpAQCAtMTg4Myw3ICsxODgzLDcgQEAgQVhDb3JlT2JqZWN0KiBBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0OjpyZW1vdGVTVkdFbGVtZW50SGl0VGVzdChjb25zdCBJbnRQb2lu
dCYKICAgICByZXR1cm4gcmVtb3RlLT5hY2Nlc3NpYmlsaXR5SGl0VGVzdChJbnRQb2ludChvZmZz
ZXQpKTsKIH0KIAotQVhDb3JlT2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjplbGVt
ZW50QWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAorQWNj
ZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6ZWxlbWVudEFjY2Vz
c2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKIHsKICAgICBpZiAo
aXNTVkdJbWFnZSgpKQogICAgICAgICByZXR1cm4gcmVtb3RlU1ZHRWxlbWVudEhpdFRlc3QocG9p
bnQpOwpAQCAtMTg5Nyw3ICsxODk3LDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkVXNlU2hhZG93SG9z
dEZvckhpdFRlc3RpbmcoTm9kZSogc2hhZG93SG9zdCkKICAgICByZXR1cm4gc2hhZG93SG9zdCAm
JiAhc2hhZG93SG9zdC0+aGFzVGFnTmFtZSh2aWRlb1RhZyk7CiB9CiAKLUFYQ29yZU9iamVjdCog
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50
UG9pbnQmIHBvaW50KSBjb25zdAorQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6YWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmIHBvaW50KSBj
b25zdAogewogICAgIGlmICghbV9yZW5kZXJlciB8fCAhbV9yZW5kZXJlci0+aGFzTGF5ZXIoKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xOTM2LDcgKzE5MzYsNyBAQCBBWENvcmVPYmpl
Y3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0
IEludFBvaW50JiBwbwogCiAgICAgcmVzdWx0LT51cGRhdGVDaGlsZHJlbklmTmVjZXNzYXJ5KCk7
CiAgICAgLy8gQWxsb3cgdGhlIGVsZW1lbnQgdG8gcGVyZm9ybSBhbnkgaGl0LXRlc3RpbmcgaXQg
bWlnaHQgbmVlZCB0byBkbyB0byByZWFjaCBub24tcmVuZGVyIGNoaWxkcmVuLgotICAgIHJlc3Vs
dCA9IHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3QqPihyZXN1bHQtPmVsZW1lbnRBY2Nl
c3NpYmlsaXR5SGl0VGVzdChwb2ludCkpOworICAgIHJlc3VsdCA9IHJlc3VsdC0+ZWxlbWVudEFj
Y2Vzc2liaWxpdHlIaXRUZXN0KHBvaW50KTsKICAgICAKICAgICBpZiAocmVzdWx0ICYmIHJlc3Vs
dC0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpKSB7CiAgICAgICAgIC8vIElmIHRoaXMgZWxlbWVu
dCBpcyB0aGUgbGFiZWwgb2YgYSBjb250cm9sLCBhIGhpdCB0ZXN0IHNob3VsZCByZXR1cm4gdGhl
IGNvbnRyb2wuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCmluZGV4IGQ1YzAzYzU1YTAzYS4uZDFjODI4NjE1NjIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QuaApAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiAgICAgQWNjZXNz
aWJpbGl0eU9iamVjdCogdGl0bGVVSUVsZW1lbnQoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIC8v
IFNob3VsZCBiZSBjYWxsZWQgb24gdGhlIHJvb3QgYWNjZXNzaWJpbGl0eSBvYmplY3QgdG8ga2lj
ayBvZmYgYSBoaXQgdGVzdC4KLSAgICBBWENvcmVPYmplY3QqIGFjY2Vzc2liaWxpdHlIaXRUZXN0
KGNvbnN0IEludFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eU9iamVj
dCogYWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsK
IAogICAgIEVsZW1lbnQqIGFuY2hvckVsZW1lbnQoKSBjb25zdCBvdmVycmlkZTsKICAgICAKQEAg
LTE1Nyw5ICsxNTcsOSBAQCBwcml2YXRlOgogICAgIGJvb2wgbm9kZUlzVGV4dENvbnRyb2woY29u
c3QgTm9kZSopIGNvbnN0OwogICAgIFBhdGggZWxlbWVudFBhdGgoKSBjb25zdCBvdmVycmlkZTsK
ICAgICAKLSAgICBBWENvcmVPYmplY3QqIGFjY2Vzc2liaWxpdHlJbWFnZU1hcEhpdFRlc3QoSFRN
TEFyZWFFbGVtZW50KiwgY29uc3QgSW50UG9pbnQmKSBjb25zdDsKKyAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBhY2Nlc3NpYmlsaXR5SW1hZ2VNYXBIaXRUZXN0KEhUTUxBcmVhRWxlbWVudCosIGNv
bnN0IEludFBvaW50JikgY29uc3Q7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogYWNjZXNzaWJp
bGl0eVBhcmVudEZvckltYWdlTWFwKEhUTUxNYXBFbGVtZW50KikgY29uc3Q7Ci0gICAgQVhDb3Jl
T2JqZWN0KiBlbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmKSBjb25z
dCBvdmVycmlkZTsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBlbGVtZW50QWNjZXNzaWJpbGl0
eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIGJvb2wgcmVu
ZGVyT2JqZWN0SXNPYnNlcnZhYmxlKFJlbmRlck9iamVjdCYpIGNvbnN0OwogICAgIFJlbmRlck9i
amVjdCogcmVuZGVyUGFyZW50T2JqZWN0KCkgY29uc3Q7CkBAIC0xNzEsNyArMTcxLDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGRldGFjaFJlbW90ZVNWR1Jvb3QoKTsKICAgICBlbnVtIENyZWF0aW9u
Q2hvaWNlIHsgQ3JlYXRlLCBSZXRyaWV2ZSB9OwogICAgIEFjY2Vzc2liaWxpdHlTVkdSb290KiBy
ZW1vdGVTVkdSb290RWxlbWVudChDcmVhdGlvbkNob2ljZSBjcmVhdGVJZk5lY2Vzc2FyeSkgY29u
c3Q7Ci0gICAgQVhDb3JlT2JqZWN0KiByZW1vdGVTVkdFbGVtZW50SGl0VGVzdChjb25zdCBJbnRQ
b2ludCYpIGNvbnN0OworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHJlbW90ZVNWR0VsZW1lbnRI
aXRUZXN0KGNvbnN0IEludFBvaW50JikgY29uc3Q7CiAgICAgdm9pZCBvZmZzZXRCb3VuZGluZ0Jv
eEZvclJlbW90ZVNWR0VsZW1lbnQoTGF5b3V0UmVjdCYpIGNvbnN0OwogICAgIGJvb2wgc3VwcG9y
dHNQYXRoKCkgY29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5jcHAKaW5kZXggYjdmM2UwNzFk
MGFkLi42YmM4NDFlYmIwNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwCkBAIC0yMTIsNyArMjEyLDcgQEAg
QWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OndlYkFyZWFPYmpl
Y3QoKSBjb25zdAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1BWENvcmVPYmplY3QqIEFjY2Vz
c2liaWxpdHlTY3JvbGxWaWV3OjphY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYg
cG9pbnQpIGNvbnN0CitBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmll
dzo6YWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAogewog
ICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHdlYkFyZWEgPSB3ZWJBcmVhT2JqZWN0KCk7CiAgICAg
aWYgKCF3ZWJBcmVhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oCmluZGV4IGMxZTMxMTlmNWZjNy4uNDBhOGYxM2YzNmFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlT
Y3JvbGxWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5U2Nyb2xsVmlldy5oCkBAIC02Miw3ICs2Miw3IEBAIHByaXZhdGU6CiAgICAgQWNjZXNzaWJp
bGl0eU9iamVjdCogc2Nyb2xsQmFyKEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBhZGRDaGlsZHJlbigpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xlYXJDaGlsZHJl
bigpIG92ZXJyaWRlOwotICAgIEFYQ29yZU9iamVjdCogYWNjZXNzaWJpbGl0eUhpdFRlc3QoY29u
c3QgSW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBh
Y2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOwogICAg
IHZvaWQgdXBkYXRlQ2hpbGRyZW5JZk5lY2Vzc2FyeSgpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0
TmVlZHNUb1VwZGF0ZUNoaWxkcmVuKCkgb3ZlcnJpZGUgeyBtX2NoaWxkcmVuRGlydHkgPSB0cnVl
OyB9CiAgICAgdm9pZCB1cGRhdGVTY3JvbGxiYXJzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmNwcAppbmRleCBmNWQ4NTk2MzYz
YjAuLjhjM2UyYWU3Mjk0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuY3BwCkBAIC0xMTIsMTIgKzExMiwxMiBAQCBjb25zdCBB
dG9tU3RyaW5nJiBBY2Nlc3NpYmlsaXR5U2xpZGVyOjpnZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0cmlidQogICAgIHJldHVybiBudWxsQXRvbSgpOwogfQogICAgIAotQVhDb3Jl
T2JqZWN0KiBBY2Nlc3NpYmlsaXR5U2xpZGVyOjplbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3Qo
Y29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAorQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNz
aWJpbGl0eVNsaWRlcjo6ZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50
JiBwb2ludCkgY29uc3QKIHsKICAgICBpZiAobV9jaGlsZHJlbi5zaXplKCkpIHsKICAgICAgICAg
QVNTRVJUKG1fY2hpbGRyZW4uc2l6ZSgpID09IDEpOwogICAgICAgICBpZiAobV9jaGlsZHJlblsw
XS0+ZWxlbWVudFJlY3QoKS5jb250YWlucyhwb2ludCkpCi0gICAgICAgICAgICByZXR1cm4gbV9j
aGlsZHJlblswXS5nZXQoKTsKKyAgICAgICAgICAgIHJldHVybiBkeW5hbWljRG93bmNhc3Q8QWNj
ZXNzaWJpbGl0eU9iamVjdD4obV9jaGlsZHJlblswXS5nZXQoKSk7CiAgICAgfQogICAgIAogICAg
IHJldHVybiBheE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKHJlbmRlcmVyKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuaAppbmRl
eCBjMTgwMmNmOTNmOTEuLmFhMWFjZTRmN2JjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHJv
dGVjdGVkOgogCiBwcml2YXRlOgogICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCgp
IGNvbnN0OwotICAgIEFYQ29yZU9iamVjdCogZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KGNv
bnN0IEludFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCog
ZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JikgY29uc3QgZmluYWw7
CiAKICAgICBBY2Nlc3NpYmlsaXR5Um9sZSBkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSgpIGZp
bmFsIHsgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpTbGlkZXI7IH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCmluZGV4IGVl
NjFkYTAyOTJmNS4uN2YxZDA4NzgxZTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCkBAIC03ODUsNyArNzg1LDcgQEAgdW5z
aWduZWQgQWNjZXNzaWJpbGl0eVRhYmxlOjpyb3dDb3VudCgpCiAgICAgcmV0dXJuIG1fcm93cy5z
aXplKCk7CiB9CiAKLUFYQ29yZU9iamVjdCogQWNjZXNzaWJpbGl0eVRhYmxlOjpjZWxsRm9yQ29s
dW1uQW5kUm93KHVuc2lnbmVkIGNvbHVtbiwgdW5zaWduZWQgcm93KQorQWNjZXNzaWJpbGl0eU9i
amVjdCogQWNjZXNzaWJpbGl0eVRhYmxlOjpjZWxsRm9yQ29sdW1uQW5kUm93KHVuc2lnbmVkIGNv
bHVtbiwgdW5zaWduZWQgcm93KQogewogICAgIHVwZGF0ZUNoaWxkcmVuSWZOZWNlc3NhcnkoKTsK
ICAgICBpZiAocm93ID49IG1fY2VsbFNsb3RzLnNpemUoKSB8fCBjb2x1bW4gPj0gbV9jZWxsU2xv
dHNbcm93XS5zaXplKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlUYWJsZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5VGFibGUuaAppbmRleCBlNDhhNzFlMmM2ZGIuLmNiZjU4Y2JjMDdlNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5oCkBA
IC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKIAogICAgIC8vIGFsbCB0aGUgY2VsbHMgaW4gdGhlIHRh
YmxlCiAgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGNlbGxzKCkgb3ZlcnJpZGU7Ci0g
ICAgQVhDb3JlT2JqZWN0KiBjZWxsRm9yQ29sdW1uQW5kUm93KHVuc2lnbmVkIGNvbHVtbiwgdW5z
aWduZWQgcm93KSBvdmVycmlkZTsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjZWxsRm9yQ29s
dW1uQW5kUm93KHVuc2lnbmVkIGNvbHVtbiwgdW5zaWduZWQgcm93KSBvdmVycmlkZTsKIAogICAg
IEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBjb2x1bW5IZWFkZXJzKCkgb3ZlcnJpZGU7CiAg
ICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIHJvd0hlYWRlcnMoKSBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxl
Q2VsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJs
ZUNlbGwuY3BwCmluZGV4IDM1YzJkZjYzZmU0Ny4uNzgxNGI2ZWY4MjhiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5j
cHAKQEAgLTI3MSw3ICsyNzEsNyBAQCBBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJl
blZlY3RvciBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpjb2x1bW5IZWFkZXJzKAogICAgICAgICBB
U1NFUlQoaXM8QWNjZXNzaWJpbGl0eU9iamVjdD4odGFibGVDZWxsKSk7CiAgICAgICAgIGlmICh0
YWJsZUNlbGwtPmNlbGxTY29wZSgpID09ICJjb2xncm91cCJfcyAmJiBpc1RhYmxlQ2VsbEluU2Ft
ZUNvbEdyb3VwKHRhYmxlQ2VsbCkpCiAgICAgICAgICAgICBoZWFkZXJzLmFwcGVuZCh0YWJsZUNl
bGwpOwotICAgICAgICBlbHNlIGlmIChkb3duY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Pih0YWJs
ZUNlbGwpLT5pc0NvbHVtbkhlYWRlcigpKQorICAgICAgICBlbHNlIGlmICh0YWJsZUNlbGwtPmlz
Q29sdW1uSGVhZGVyKCkpCiAgICAgICAgICAgICBoZWFkZXJzLmFwcGVuZCh0YWJsZUNlbGwpOwog
ICAgIH0KIApAQCAtMjk1LDcgKzI5NSw3IEBAIEFYQ29yZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OnJvd0hlYWRlcnMoKQogCiAgICAg
ICAgIGlmICh0YWJsZUNlbGwtPmNlbGxTY29wZSgpID09ICJyb3dncm91cCJfcyAmJiBpc1RhYmxl
Q2VsbEluU2FtZVJvd0dyb3VwKHRhYmxlQ2VsbCkpCiAgICAgICAgICAgICBoZWFkZXJzLmFwcGVu
ZCh0YWJsZUNlbGwpOwotICAgICAgICBlbHNlIGlmIChkb3duY2FzdDxBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Pih0YWJsZUNlbGwpLT5pc1Jvd0hlYWRlcigpKQorICAgICAgICBlbHNlIGlmICh0YWJsZUNl
bGwtPmlzUm93SGVhZGVyKCkpCiAgICAgICAgICAgICBoZWFkZXJzLmFwcGVuZCh0YWJsZUNlbGwp
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3Mv
QWNjZXNzaWJpbGl0eU9iamVjdElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aW9zL0FjY2Vzc2liaWxpdHlPYmplY3RJT1MubW0KaW5kZXggMTc2YjY4MGMzZTZjLi5iZDQwNjFk
MDE0NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FjY2Vz
c2liaWxpdHlPYmplY3RJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
b3MvQWNjZXNzaWJpbGl0eU9iamVjdElPUy5tbQpAQCAtNzcsNyArNzcsNyBAQCBib29sIEFjY2Vz
c2liaWxpdHlPYmplY3Q6OmZpbGVVcGxvYWRCdXR0b25SZXR1cm5zVmFsdWVJblRpdGxlKCkgY29u
c3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6b3Zl
cnJpZGVBdHRhY2htZW50UGFyZW50KEFYQ29yZU9iamVjdCopCit2b2lkIEFjY2Vzc2liaWxpdHlP
YmplY3Q6Om92ZXJyaWRlQXR0YWNobWVudFBhcmVudChBY2Nlc3NpYmlsaXR5T2JqZWN0KikKIHsK
IH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0
ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAKaW5kZXggN2FlNDY2MTNiNjE0Li4y
ZmI0YTE2OTFmZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNv
bGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCkBAIC0zNzksNjkgKzM3
OSw2MCBAQCB2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OnNldE1hdGhzY3JpcHRzKEFYUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgQVhDb3JlT2JqZWN0JgogCiB2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6
OnNldE9iamVjdFByb3BlcnR5KEFYUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgQVhDb3JlT2Jq
ZWN0KiBvYmplY3QpCiB7Ci0gICAgaWYgKG9iamVjdCkKLSAgICAgICAgc2V0UHJvcGVydHkocHJv
cGVydHlOYW1lLCBvYmplY3QtPm9iamVjdElEKCkpOwotICAgIGVsc2UKLSAgICAgICAgc2V0UHJv
cGVydHkocHJvcGVydHlOYW1lLCBudWxscHRyLCB0cnVlKTsKKyAgICBzZXRQcm9wZXJ0eShwcm9w
ZXJ0eU5hbWUsIG9iamVjdCA/IG9iamVjdC0+b2JqZWN0SUQoKSA6IEFYSUQoKSk7CiB9CiAKIHZv
aWQgQVhJc29sYXRlZE9iamVjdDo6c2V0T2JqZWN0VmVjdG9yUHJvcGVydHkoQVhQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBjb25zdCBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIG9iamVj
dHMpCiB7Ci0gICAgaWYgKG9iamVjdHMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47CiAgICAg
c2V0UHJvcGVydHkocHJvcGVydHlOYW1lLCBheElEcyhvYmplY3RzKSk7CiB9CiAKLXZvaWQgQVhJ
c29sYXRlZE9iamVjdDo6c2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBB
WFByb3BlcnR5VmFsdWVWYXJpYW50JiYgdmFsdWUsIGJvb2wgc2hvdWxkUmVtb3ZlKQotewotICAg
IGlmIChzaG91bGRSZW1vdmUpCi0gICAgICAgIG1fcHJvcGVydHlNYXAucmVtb3ZlKHByb3BlcnR5
TmFtZSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGJvb2wgaXNEZWZhdWx0VmFsdWUgPSBXVEY6OnN3
aXRjaE9uKHZhbHVlLAotICAgICAgICAgICAgW10oc3RkOjpudWxscHRyX3QmKSB7IHJldHVybiB0
cnVlOyB9LAotICAgICAgICAgICAgW10oQVhJRCB0eXBlZFZhbHVlKSB7IHJldHVybiAhdHlwZWRW
YWx1ZS5pc1ZhbGlkKCk7IH0sCi0gICAgICAgICAgICBbXShTdHJpbmcmIHR5cGVkVmFsdWUpIHsg
cmV0dXJuIHR5cGVkVmFsdWUgPT0gZW1wdHlTdHJpbmcoKTsgfSwKLSAgICAgICAgICAgIFtdKGJv
b2wgdHlwZWRWYWx1ZSkgeyByZXR1cm4gIXR5cGVkVmFsdWU7IH0sCi0gICAgICAgICAgICBbXShp
bnQgdHlwZWRWYWx1ZSkgeyByZXR1cm4gIXR5cGVkVmFsdWU7IH0sCi0gICAgICAgICAgICBbXSh1
bnNpZ25lZCB0eXBlZFZhbHVlKSB7IHJldHVybiAhdHlwZWRWYWx1ZTsgfSwKLSAgICAgICAgICAg
IFtdKGRvdWJsZSB0eXBlZFZhbHVlKSB7IHJldHVybiB0eXBlZFZhbHVlID09IDAuMDsgfSwKLSAg
ICAgICAgICAgIFtdKGZsb2F0IHR5cGVkVmFsdWUpIHsgcmV0dXJuIHR5cGVkVmFsdWUgPT0gMC4w
OyB9LAotICAgICAgICAgICAgW10odWludDY0X3QgdHlwZWRWYWx1ZSkgeyByZXR1cm4gIXR5cGVk
VmFsdWU7IH0sCi0gICAgICAgICAgICBbXShBY2Nlc3NpYmlsaXR5QnV0dG9uU3RhdGUmIHR5cGVk
VmFsdWUpIHsgcmV0dXJuIHR5cGVkVmFsdWUgPT0gQWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRlOjpP
ZmY7IH0sCi0gICAgICAgICAgICBbXShDb2xvciYgdHlwZWRWYWx1ZSkgeyByZXR1cm4gdHlwZWRW
YWx1ZSA9PSBDb2xvcigpOyB9LAotICAgICAgICAgICAgW10oVVJMJiB0eXBlZFZhbHVlKSB7IHJl
dHVybiB0eXBlZFZhbHVlID09IFVSTCgpOyB9LAotICAgICAgICAgICAgW10oTGF5b3V0UmVjdCYg
dHlwZWRWYWx1ZSkgeyByZXR1cm4gdHlwZWRWYWx1ZSA9PSBMYXlvdXRSZWN0KCk7IH0sCi0gICAg
ICAgICAgICBbXShJbnRQb2ludCYgdHlwZWRWYWx1ZSkgeyByZXR1cm4gdHlwZWRWYWx1ZSA9PSBJ
bnRQb2ludCgpOyB9LAotICAgICAgICAgICAgW10oSW50UmVjdCYgdHlwZWRWYWx1ZSkgeyByZXR1
cm4gdHlwZWRWYWx1ZSA9PSBJbnRSZWN0KCk7IH0sCi0gICAgICAgICAgICBbXShzdGQ6OnBhaXI8
dW5zaWduZWQsIHVuc2lnbmVkPiYgdHlwZWRWYWx1ZSkgewotICAgICAgICAgICAgICAgIC8vICgw
LCAxKSBpcyB0aGUgZGVmYXVsdCBmb3IgYW4gaW5kZXggcmFuZ2UuCi0gICAgICAgICAgICAgICAg
cmV0dXJuIHR5cGVkVmFsdWUgPT0gc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4oMCwgMSk7
Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgW10oVmVjdG9yPEFjY2Vzc2liaWxpdHlUZXh0
PiYgdHlwZWRWYWx1ZSkgeyByZXR1cm4gdHlwZWRWYWx1ZS5pc0VtcHR5KCk7IH0sCi0gICAgICAg
ICAgICBbXShWZWN0b3I8QVhJRD4mIHR5cGVkVmFsdWUpIHsgcmV0dXJuIHR5cGVkVmFsdWUuaXNF
bXB0eSgpOyB9LAotICAgICAgICAgICAgW10oVmVjdG9yPHN0ZDo6cGFpcjxBWElELCBBWElEPj4m
IHR5cGVkVmFsdWUpIHsgcmV0dXJuIHR5cGVkVmFsdWUuaXNFbXB0eSgpOyB9LAotICAgICAgICAg
ICAgW10oVmVjdG9yPFN0cmluZz4mIHR5cGVkVmFsdWUpIHsgcmV0dXJuIHR5cGVkVmFsdWUuaXNF
bXB0eSgpOyB9LAotICAgICAgICAgICAgW10oUGF0aCYgdHlwZWRWYWx1ZSkgeyByZXR1cm4gdHlw
ZWRWYWx1ZSA9PSBQYXRoKCk7IH0sCi0gICAgICAgICAgICBbXShPcHRpb25TZXQ8QVhBbmNlc3Rv
ckZsYWc+JiB0eXBlZFZhbHVlKSB7IHJldHVybiB0eXBlZFZhbHVlLmlzRW1wdHkoKTsgfSwKK3Zv
aWQgQVhJc29sYXRlZE9iamVjdDo6c2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBBWFByb3BlcnR5VmFsdWVWYXJpYW50JiYgdmFsdWUpCit7CisgICAgYm9vbCBpc0RlZmF1
bHRWYWx1ZSA9IFdURjo6c3dpdGNoT24odmFsdWUsCisgICAgICAgIFtdKHN0ZDo6bnVsbHB0cl90
JikgeyByZXR1cm4gdHJ1ZTsgfSwKKyAgICAgICAgW10oQVhJRCB0eXBlZFZhbHVlKSB7IHJldHVy
biAhdHlwZWRWYWx1ZS5pc1ZhbGlkKCk7IH0sCisgICAgICAgIFtdKFN0cmluZyYgdHlwZWRWYWx1
ZSkgeyByZXR1cm4gdHlwZWRWYWx1ZSA9PSBlbXB0eVN0cmluZygpOyB9LAorICAgICAgICBbXShi
b29sIHR5cGVkVmFsdWUpIHsgcmV0dXJuICF0eXBlZFZhbHVlOyB9LAorICAgICAgICBbXShpbnQg
dHlwZWRWYWx1ZSkgeyByZXR1cm4gIXR5cGVkVmFsdWU7IH0sCisgICAgICAgIFtdKHVuc2lnbmVk
IHR5cGVkVmFsdWUpIHsgcmV0dXJuICF0eXBlZFZhbHVlOyB9LAorICAgICAgICBbXShkb3VibGUg
dHlwZWRWYWx1ZSkgeyByZXR1cm4gdHlwZWRWYWx1ZSA9PSAwLjA7IH0sCisgICAgICAgIFtdKGZs
b2F0IHR5cGVkVmFsdWUpIHsgcmV0dXJuIHR5cGVkVmFsdWUgPT0gMC4wOyB9LAorICAgICAgICBb
XSh1aW50NjRfdCB0eXBlZFZhbHVlKSB7IHJldHVybiAhdHlwZWRWYWx1ZTsgfSwKKyAgICAgICAg
W10oQWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRlJiB0eXBlZFZhbHVlKSB7IHJldHVybiB0eXBlZFZh
bHVlID09IEFjY2Vzc2liaWxpdHlCdXR0b25TdGF0ZTo6T2ZmOyB9LAorICAgICAgICBbXShDb2xv
ciYgdHlwZWRWYWx1ZSkgeyByZXR1cm4gdHlwZWRWYWx1ZSA9PSBDb2xvcigpOyB9LAorICAgICAg
ICBbXShVUkwmIHR5cGVkVmFsdWUpIHsgcmV0dXJuIHR5cGVkVmFsdWUgPT0gVVJMKCk7IH0sCisg
ICAgICAgIFtdKExheW91dFJlY3QmIHR5cGVkVmFsdWUpIHsgcmV0dXJuIHR5cGVkVmFsdWUgPT0g
TGF5b3V0UmVjdCgpOyB9LAorICAgICAgICBbXShJbnRQb2ludCYgdHlwZWRWYWx1ZSkgeyByZXR1
cm4gdHlwZWRWYWx1ZSA9PSBJbnRQb2ludCgpOyB9LAorICAgICAgICBbXShJbnRSZWN0JiB0eXBl
ZFZhbHVlKSB7IHJldHVybiB0eXBlZFZhbHVlID09IEludFJlY3QoKTsgfSwKKyAgICAgICAgW10o
c3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4mIHR5cGVkVmFsdWUpIHsKKyAgICAgICAgICAg
IC8vICgwLCAxKSBpcyB0aGUgZGVmYXVsdCBmb3IgYW4gaW5kZXggcmFuZ2UuCisgICAgICAgICAg
ICByZXR1cm4gdHlwZWRWYWx1ZSA9PSBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPigwLCAx
KTsKKyAgICAgICAgfSwKKyAgICAgICAgW10oVmVjdG9yPEFjY2Vzc2liaWxpdHlUZXh0PiYgdHlw
ZWRWYWx1ZSkgeyByZXR1cm4gdHlwZWRWYWx1ZS5pc0VtcHR5KCk7IH0sCisgICAgICAgIFtdKFZl
Y3RvcjxBWElEPiYgdHlwZWRWYWx1ZSkgeyByZXR1cm4gdHlwZWRWYWx1ZS5pc0VtcHR5KCk7IH0s
CisgICAgICAgIFtdKFZlY3RvcjxzdGQ6OnBhaXI8QVhJRCwgQVhJRD4+JiB0eXBlZFZhbHVlKSB7
IHJldHVybiB0eXBlZFZhbHVlLmlzRW1wdHkoKTsgfSwKKyAgICAgICAgW10oVmVjdG9yPFN0cmlu
Zz4mIHR5cGVkVmFsdWUpIHsgcmV0dXJuIHR5cGVkVmFsdWUuaXNFbXB0eSgpOyB9LAorICAgICAg
ICBbXShQYXRoJiB0eXBlZFZhbHVlKSB7IHJldHVybiB0eXBlZFZhbHVlID09IFBhdGgoKTsgfSwK
KyAgICAgICAgW10oT3B0aW9uU2V0PEFYQW5jZXN0b3JGbGFnPiYgdHlwZWRWYWx1ZSkgeyByZXR1
cm4gdHlwZWRWYWx1ZS5pc0VtcHR5KCk7IH0sCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgICAg
ICAgICBbXShSZXRhaW5QdHI8TlNBdHRyaWJ1dGVkU3RyaW5nPiYgdHlwZWRWYWx1ZSkgeyByZXR1
cm4gIXR5cGVkVmFsdWU7IH0sCisgICAgICAgIFtdKFJldGFpblB0cjxOU0F0dHJpYnV0ZWRTdHJp
bmc+JiB0eXBlZFZhbHVlKSB7IHJldHVybiAhdHlwZWRWYWx1ZTsgfSwKICNlbmRpZgotICAgICAg
ICAgICAgW10oSW5zaWRlTGluayYgdHlwZWRWYWx1ZSkgeyByZXR1cm4gdHlwZWRWYWx1ZSA9PSBJ
bnNpZGVMaW5rKCk7IH0sCi0gICAgICAgICAgICBbXShWZWN0b3I8VmVjdG9yPEFYSUQ+PiYgdHlw
ZWRWYWx1ZSkgeyByZXR1cm4gdHlwZWRWYWx1ZS5pc0VtcHR5KCk7IH0sCi0gICAgICAgICAgICBb
XShDaGFyYWN0ZXJSYW5nZSYgdHlwZWRWYWx1ZSkgeyByZXR1cm4gIXR5cGVkVmFsdWUubG9jYXRp
b24gJiYgIXR5cGVkVmFsdWUubGVuZ3RoOyB9LAotICAgICAgICAgICAgW10oc3RkOjpwYWlyPEFY
SUQsIENoYXJhY3RlclJhbmdlPiYgdHlwZWRWYWx1ZSkgewotICAgICAgICAgICAgICAgIHJldHVy
biAhdHlwZWRWYWx1ZS5maXJzdC5pc1ZhbGlkKCkgJiYgIXR5cGVkVmFsdWUuc2Vjb25kLmxvY2F0
aW9uICYmICF0eXBlZFZhbHVlLnNlY29uZC5sZW5ndGg7Ci0gICAgICAgICAgICB9LAotICAgICAg
ICAgICAgW10oYXV0byYpIHsKLSAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICk7
Ci0gICAgICAgIGlmIChpc0RlZmF1bHRWYWx1ZSkKLSAgICAgICAgICAgIG1fcHJvcGVydHlNYXAu
cmVtb3ZlKHByb3BlcnR5TmFtZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fcHJvcGVy
dHlNYXAuc2V0KHByb3BlcnR5TmFtZSwgdmFsdWUpOwotICAgIH0KKyAgICAgICAgW10oSW5zaWRl
TGluayYgdHlwZWRWYWx1ZSkgeyByZXR1cm4gdHlwZWRWYWx1ZSA9PSBJbnNpZGVMaW5rKCk7IH0s
CisgICAgICAgIFtdKFZlY3RvcjxWZWN0b3I8QVhJRD4+JiB0eXBlZFZhbHVlKSB7IHJldHVybiB0
eXBlZFZhbHVlLmlzRW1wdHkoKTsgfSwKKyAgICAgICAgW10oQ2hhcmFjdGVyUmFuZ2UmIHR5cGVk
VmFsdWUpIHsgcmV0dXJuICF0eXBlZFZhbHVlLmxvY2F0aW9uICYmICF0eXBlZFZhbHVlLmxlbmd0
aDsgfSwKKyAgICAgICAgW10oc3RkOjpwYWlyPEFYSUQsIENoYXJhY3RlclJhbmdlPiYgdHlwZWRW
YWx1ZSkgeworICAgICAgICAgICAgcmV0dXJuICF0eXBlZFZhbHVlLmZpcnN0LmlzVmFsaWQoKSAm
JiAhdHlwZWRWYWx1ZS5zZWNvbmQubG9jYXRpb24gJiYgIXR5cGVkVmFsdWUuc2Vjb25kLmxlbmd0
aDsKKyAgICAgICAgfSwKKyAgICAgICAgW10oYXV0byYpIHsKKyAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAg
KTsKKyAgICBpZiAoaXNEZWZhdWx0VmFsdWUpCisgICAgICAgIG1fcHJvcGVydHlNYXAucmVtb3Zl
KHByb3BlcnR5TmFtZSk7CisgICAgZWxzZQorICAgICAgICBtX3Byb3BlcnR5TWFwLnNldChwcm9w
ZXJ0eU5hbWUsIHZhbHVlKTsKIH0KIAogdm9pZCBBWElzb2xhdGVkT2JqZWN0OjpkZXRhY2hSZW1v
dGVQYXJ0cyhBY2Nlc3NpYmlsaXR5RGV0YWNobWVudFR5cGUpCkBAIC0xNjc2LDEyICsxNjY3LDYg
QEAgYm9vbCBBWElzb2xhdGVkT2JqZWN0Ojppc1RhYmxlQ2VsbCgpIGNvbnN0CiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCi1BWENvcmVPYmplY3QqIEFYSXNvbGF0ZWRPYmplY3Q6OmVsZW1lbnRBY2Nl
c3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0Ci17Ci0gICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KIGJvb2wgQVhJc29sYXRlZE9i
amVjdDo6aXNEZXNjZW5kYW50T2ZSb2xlKEFjY2Vzc2liaWxpdHlSb2xlKSBjb25zdAogewogICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oCmluZGV4IGJiMTFk
YmNkNTJjNy4uZGI5NzU4MTEzNTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oCkBAIC04MCw3
ICs4MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbml0aWFsaXplUHJvcGVydGllcyhjb25zdCBS
ZWY8QWNjZXNzaWJpbGl0eU9iamVjdD4mKTsKICAgICB2b2lkIGluaXRpYWxpemVQbGF0Zm9ybVBy
b3BlcnRpZXMoY29uc3QgUmVmPGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3Q+Jik7CiAKLSAgICB2
b2lkIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lLCBBWFByb3BlcnR5VmFsdWVWYXJpYW50JiYs
IGJvb2wgc2hvdWxkUmVtb3ZlID0gZmFsc2UpOworICAgIHZvaWQgc2V0UHJvcGVydHkoQVhQcm9w
ZXJ0eU5hbWUsIEFYUHJvcGVydHlWYWx1ZVZhcmlhbnQmJik7CiAgICAgdm9pZCBzZXRPYmplY3RQ
cm9wZXJ0eShBWFByb3BlcnR5TmFtZSwgQVhDb3JlT2JqZWN0Kik7CiAgICAgdm9pZCBzZXRPYmpl
Y3RWZWN0b3JQcm9wZXJ0eShBWFByb3BlcnR5TmFtZSwgY29uc3QgQWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yJik7CiAKQEAgLTQ2OCw3ICs0NjgsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgc3Vw
cG9ydHNQcmVzc0FjdGlvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1
ZShBWFByb3BlcnR5TmFtZTo6U3VwcG9ydHNQcmVzc0FjdGlvbik7IH0KICAgICBib29sIHN1cHBv
cnRzQ2hlY2tlZCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgaXNNb2RhbE5vZGUoKSBjb25z
dCBvdmVycmlkZTsKLSAgICBBWENvcmVPYmplY3QqIGVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVz
dChjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgaXNEZXNjZW5kYW50
T2ZSb2xlKEFjY2Vzc2liaWxpdHlSb2xlKSBjb25zdCBvdmVycmlkZTsKICAgICBBWENvcmVPYmpl
Y3QqIGNvcnJlc3BvbmRpbmdMYWJlbEZvckNvbnRyb2xFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgQVhDb3JlT2JqZWN0KiBjb3JyZXNwb25kaW5nQ29udHJvbEZvckxhYmVsRWxlbWVudCgp
IGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwCmluZGV4IGQxMzliZTc0MzVk
My4uMDRiY2MyZjFiMTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwCkBAIC05MzksNyArOTM5
LDcgQEAgdm9pZCBBWElzb2xhdGVkVHJlZTo6cmVtb3ZlU3VidHJlZUZyb21Ob2RlTWFwKEFYSUQg
b2JqZWN0SUQsIEFjY2Vzc2liaWxpdHlPYmplY3QKICAgICB9CiB9CiAKLXN0ZDo6b3B0aW9uYWw8
VmVjdG9yPEFYSUQ+PiBBWElzb2xhdGVkVHJlZTo6cmVsYXRlZE9iamVjdElEc0Zvcihjb25zdCBB
WENvcmVPYmplY3QmIG9iamVjdCwgQVhSZWxhdGlvblR5cGUgcmVsYXRpb25UeXBlKQorc3RkOjpv
cHRpb25hbDxWZWN0b3I8QVhJRD4+IEFYSXNvbGF0ZWRUcmVlOjpyZWxhdGVkT2JqZWN0SURzRm9y
KGNvbnN0IEFYSXNvbGF0ZWRPYmplY3QmIG9iamVjdCwgQVhSZWxhdGlvblR5cGUgcmVsYXRpb25U
eXBlKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUu
aAppbmRleCBhMmQ4ZmJhNmQwM2QuLmY1OTgxZGFkMTI4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5o
CkBAIC0zMTUsNyArMzE1LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Rm9jdXNlZE5vZGVJRChB
WElEKTsKIAogICAgIC8vIFJlbGF0aW9uc2hpcHMgYmV0d2VlbiBvYmplY3RzLgotICAgIHN0ZDo6
b3B0aW9uYWw8VmVjdG9yPEFYSUQ+PiByZWxhdGVkT2JqZWN0SURzRm9yKGNvbnN0IEFYQ29yZU9i
amVjdCYsIEFYUmVsYXRpb25UeXBlKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxBWElEPj4g
cmVsYXRlZE9iamVjdElEc0Zvcihjb25zdCBBWElzb2xhdGVkT2JqZWN0JiwgQVhSZWxhdGlvblR5
cGUpOwogICAgIHZvaWQgcmVsYXRpb25zTmVlZFVwZGF0ZShib29sIG5lZWRVcGRhdGUpIHsgbV9y
ZWxhdGlvbnNOZWVkVXBkYXRlID0gbmVlZFVwZGF0ZTsgfQogCiAgICAgLy8gQ2FsbGVkIG9uIEFY
IHRocmVhZCBmcm9tIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIG1ldGhvZHMuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5t
bQppbmRleCBkNzg2YzllNjE2NDQuLmM3OWVmNzY1MTY3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tCkBAIC00NjAsMTEg
KzQ2MCw4IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6cG9zdFBsYXRmb3JtTm90aWZpY2F0aW9uKEFY
Q29yZU9iamVjdCogb2JqZWN0LCBBWE5vdGlmaWNhdGlvCiB9CiAKICNpZiBFTkFCTEUoQUNDRVNT
SUJJTElUWV9JU09MQVRFRF9UUkVFKQotc3RhdGljIHZvaWQgY3JlYXRlSXNvbGF0ZWRPYmplY3RJ
Zk5lZWRlZChBWENvcmVPYmplY3QmIG9iamVjdCwgc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmll
cj4gcGFnZUlEKQorc3RhdGljIHZvaWQgY3JlYXRlSXNvbGF0ZWRPYmplY3RJZk5lZWRlZChBY2Nl
c3NpYmlsaXR5T2JqZWN0JiBvYmplY3QsIHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBh
Z2VJRCkKIHsKLSAgICBpZiAoIWlzPEFjY2Vzc2liaWxpdHlPYmplY3Q+KG9iamVjdCkpCi0gICAg
ICAgIHJldHVybjsKLQogICAgIC8vIFRoZSB3cmFwcGVyIGFzc29jaWF0ZWQgd2l0aCBhIHB1Ymxp
c2hlZCBub3RpZmljYXRpb24gbWF5IG5vdCBoYXZlIGFuIGlzb2xhdGVkIG9iamVjdCB5ZXQuCiAg
ICAgLy8gVGhpcyBzaG91bGQgb25seSBoYXBwZW4gd2hlbiB0aGUgbGl2ZSBvYmplY3QgaXMgaWdu
b3JlZCwgbWVhbmluZyB3ZSB3aWxsIG5ldmVyIGNyZWF0ZSBhbiBpc29sYXRlZCBvYmplY3QgZm9y
IGl0LgogICAgIC8vIFRoaXMgaXMgZ2VuZXJhbGx5IGNvcnJlY3QsIGJ1dCBub3QgaW4gdGhpcyBj
YXNlLCBzaW5jZSBBWCBjbGllbnRzIHdpbGwgdHJ5IHRvIHF1ZXJ5IHRoaXMgd3JhcHBlciBidXQg
dGhlIHdyYXBwZXIKQEAgLTQ3Nyw3ICs0NzQsNyBAQCBzdGF0aWMgdm9pZCBjcmVhdGVJc29sYXRl
ZE9iamVjdElmTmVlZGVkKEFYQ29yZU9iamVjdCYgb2JqZWN0LCBzdGQ6Om9wdGlvbmFsPFBhZwog
CiAgICAgaWYgKG9iamVjdC5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpIHsKICAgICAgICAgaWYg
KGF1dG8gdHJlZSA9IEFYSXNvbGF0ZWRUcmVlOjp0cmVlRm9yUGFnZUlEKHBhZ2VJRCkpCi0gICAg
ICAgICAgICB0cmVlLT5hZGRVbmNvbm5lY3RlZE5vZGUoZG93bmNhc3Q8QWNjZXNzaWJpbGl0eU9i
amVjdD4ob2JqZWN0KSk7CisgICAgICAgICAgICB0cmVlLT5hZGRVbmNvbm5lY3RlZE5vZGUob2Jq
ZWN0KTsKICAgICB9CiB9CiAjZW5kaWYKQEAgLTU4MSw3ICs1NzgsNyBAQCB2b2lkIEFYT2JqZWN0
Q2FjaGU6OnBvc3RUZXh0U3RhdGVDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nlc3NpYmls
aXR5T2JqZWN0KgogICAgIHBvc3RUZXh0UmVwbGFjZW1lbnRQbGF0Zm9ybU5vdGlmaWNhdGlvbihv
YmplY3QsIEFYVGV4dEVkaXRUeXBlVW5rbm93biwgZW1wdHlTdHJpbmcoKSwgdHlwZSwgdGV4dCwg
cG9zaXRpb24pOwogfQogCi1zdGF0aWMgdm9pZCBwb3N0VXNlckluZm9Gb3JDaGFuZ2VzKEFYQ29y
ZU9iamVjdCYgcm9vdFdlYkFyZWEsIEFYQ29yZU9iamVjdCYgb2JqZWN0LCBOU011dGFibGVBcnJh
eSogY2hhbmdlcywgc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEKQorc3RhdGlj
IHZvaWQgcG9zdFVzZXJJbmZvRm9yQ2hhbmdlcyhBY2Nlc3NpYmlsaXR5T2JqZWN0JiByb290V2Vi
QXJlYSwgQWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0LCBOU011dGFibGVBcnJheSAqY2hhbmdl
cywgc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEKQogewogICAgIGF1dG8gdXNl
ckluZm8gPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhDYXBh
Y2l0eTo0XSk7CiAgICAgW3VzZXJJbmZvIHNldE9iamVjdDpAKHBsYXRmb3JtQ2hhbmdlVHlwZUZv
cldlYkNvcmVDaGFuZ2VUeXBlKEFYVGV4dFN0YXRlQ2hhbmdlVHlwZUVkaXQpKSBmb3JLZXk6TlNB
Y2Nlc3NpYmlsaXR5VGV4dFN0YXRlQ2hhbmdlVHlwZUtleV07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFjLm1tIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdE1hYy5tbQpp
bmRleCA0MDgxNTc0OWNjYmMuLjIxMTY5NGIzOTFiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdE1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFjLm1tCkBA
IC02Niw3ICs2Niw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6ZGV0YWNoRnJvbVBhcmVu
dCgpCiAgICAgICAgIG92ZXJyaWRlQXR0YWNobWVudFBhcmVudChudWxscHRyKTsKIH0KIAotdm9p
ZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpvdmVycmlkZUF0dGFjaG1lbnRQYXJlbnQoQVhDb3JlT2Jq
ZWN0KiBwYXJlbnQpCit2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6Om92ZXJyaWRlQXR0YWNobWVu
dFBhcmVudChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQpCiB7CiAgICAgaWYgKCFpc0F0dGFj
aG1lbnQoKSkKICAgICAgICAgcmV0dXJuOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>