<?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>251608</bug_id>
          
          <creation_ts>2023-02-02 10:20:37 -0800</creation_ts>
          <short_desc>[RTL/bidi/vertical] Incorrect content truncation when &quot;text-overflow&quot; is &quot;ellipsis&quot;</short_desc>
          <delta_ts>2023-02-03 18:51:22 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>koivisto</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1930541</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2023-02-02 10:20:37 -0800</bug_when>
    <thetext>ssia</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1930585</commentid>
    <comment_count>1</comment_count>
      <attachid>464816</attachid>
    <who name="alan">zalan</who>
    <bug_when>2023-02-02 11:38:15 -0800</bug_when>
    <thetext>Created attachment 464816
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1930701</commentid>
    <comment_count>2</comment_count>
      <attachid>464818</attachid>
    <who name="alan">zalan</who>
    <bug_when>2023-02-02 17:10:34 -0800</bug_when>
    <thetext>Created attachment 464818
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1930860</commentid>
    <comment_count>3</comment_count>
      <attachid>464822</attachid>
    <who name="alan">zalan</who>
    <bug_when>2023-02-03 07:16:52 -0800</bug_when>
    <thetext>Created attachment 464822
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1930902</commentid>
    <comment_count>4</comment_count>
      <attachid>464825</attachid>
    <who name="alan">zalan</who>
    <bug_when>2023-02-03 09:37:15 -0800</bug_when>
    <thetext>Created attachment 464825
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1931044</commentid>
    <comment_count>5</comment_count>
      <attachid>464829</attachid>
    <who name="alan">zalan</who>
    <bug_when>2023-02-03 16:42:18 -0800</bug_when>
    <thetext>Created attachment 464829
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1931068</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2023-02-03 18:50:59 -0800</bug_when>
    <thetext>Committed 259850@main (ff75ee6b051e): &lt;https://commits.webkit.org/259850@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 464829.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1931069</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2023-02-03 18:51:22 -0800</bug_when>
    <thetext>&lt;rdar://problem/105029885&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>464816</attachid>
            <date>2023-02-02 11:38:15 -0800</date>
            <delta_ts>2023-02-02 17:33:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-251608-20230202113813.patch</filename>
            <type>text/plain</type>
            <size>53025</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSBjMzYyMzI4ZGJiMjdkOTBhNmM1YTkwZTU0NmQ2NjdmYWM0ZDE3NzllIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFRodSwgMiBGZWIgMjAyMyAxMDoyNDozNyAtMDgwMApTdWJqZWN0OiBbUEFUQ0hdIFtSVEwvYmlk
aS92ZXJ0aWNhbF0gSW5jb3JyZWN0IGNvbnRlbnQgdHJ1bmNhdGlvbiB3aGVuCiAidGV4dC1vdmVy
ZmxvdyIgaXMgImVsbGlwc2lzIiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjUxNjA4CgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCkluIHRoaXMgcGF0Y2ggaW5s
aW5lIGNvbnRlbnQgdHJ1bmNhdGlvbiAob3ZlcmZsb3c6IGhpZGRlbiArIHRleHQtb3ZlcmZsb3c6
IGVsbGlwc2lzKSBpcyBtb3ZlZCBmcm9tIGxvZ2ljYWwgdG8gdmlzdWFsIHNwYWNlLgpJdCBlbnN1
cmVzIHRoYXQgdGhlIHRydW5jYXRpb24gaGFwcGVucyBfYWZ0ZXJfIGJpZGkgcmVvcmRlcmluZyBh
bmQgYWxzbyBfYWZ0ZXJfIGFwcGx5aW5nIHdyaXRpbmctbW9kZS4KCk5vdyBpbnN0ZWFkIG9mIHJ1
bm5pbmcgdHJ1bmNhdGlvbiBhcyBwYXJ0IG9mIHRoZSB0cmFpbGluZyBjb250ZW50IGhhbmRsaW5n
IGluIExpbmVCdWlsZGVyOjpjbG9zZSByaWdodCBhZnRlciB3ZSBmaWd1cmVkIHRoZSBicmVha2lu
ZyBwb3NpdGlvbiBmb3IKdGhlIGlubGluZSBjb250ZW50LCB3ZSBkbyBpdCBhZnRlciBjb25zdHJ1
Y3RpbmcgdGhlIGRpc3BsYXkgYm94ZXMgKGFuZCB0aGUgYXNzb2NpYXRlZCBkaXNwbGF5IGxpbmUp
LgoKMSwgUmVtb3ZlIHRydW5jYXRpb24gY29kZSBmcm9tIExpbmU6OlJ1biBhbmQgYWxsIHRoZSBy
ZWxhdGVkIGNvZGUgYWxsIHRoZSB3YXkgdG8gZGlzcGxheSBsaW5lIGNvbnN0cnVjdGlvbgoyLiBJ
bnRyb2R1Y2UgdHJ1bmNhdGVPdmVyZmxvd2luZ0Rpc3BsYXlCb3hlcy4gSXQgYXBwbGllcyB0cnVu
Y2F0aW9uIG9uIGRpc3BsYXkgYm94IGluIHZpc3VhbCBvcmRlciAodGhlIHRydW5jYXRpb24gbG9n
aWMgaXMgYWN0dWFsbHkgbW92ZWQgZnJvbSBMaW5lOjpSdW4sIG5vdGhpbmcgcmVhbGx5IG5ldyBo
ZXJlKS4KCiogTGF5b3V0VGVzdHMvZmFzdC9pbmxpbmUvdGV4dF9vdmVyZmxvd19lbGxpcHNpc19z
aW1wbGUtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCiogTGF5b3V0VGVzdHMvZmFzdC9pbmxpbmUvdGV4
dF9vdmVyZmxvd19lbGxpcHNpc19zaW1wbGUuaHRtbDogQWRkZWQuCiogU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQu
Y3BwOgooV2ViQ29yZTo6TGF5b3V0OjpsaW5lRW5kaW5nRWxsaXBzaXNQb2xpY3kpOgooV2ViQ29y
ZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGluZUxheW91dCk6CihXZWJDb3Jl
OjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0OjpjcmVhdGVEaXNwbGF5Q29udGVudEZv
ckxpbmUpOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L0lubGluZUZvcm1hdHRpbmdDb250ZXh0Lmg6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6Okxp
bmU6OmluaXRpYWxpemUpOgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lOjpSdW46OmRldGFjaFRyYWls
aW5nV2hpdGVzcGFjZSk6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmU6OnRydW5jYXRlKTogRGVsZXRl
ZC4KKFdlYkNvcmU6OkxheW91dDo6TGluZTo6UnVuOjp0cnVuY2F0ZSk6IERlbGV0ZWQuCiogU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5o
OgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lOjppc0NvbnRlbnRUcnVuY2F0ZWQgY29uc3QpOiBEZWxl
dGVkLgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lOjpSdW46OmlzVHJ1bmNhdGVkIGNvbnN0KTogRGVs
ZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9J
bmxpbmVMaW5lQnVpbGRlci5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjpsYXlv
dXRJbmxpbmVDb250ZW50KToKKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OmNvbXB1dGVk
SW50cmluc2ljV2lkdGgpOgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6Y2xvc2UpOgoq
IFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxp
bmVCdWlsZGVyLmg6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5Qm94Lmg6CihXZWJDb3JlOjpJbmxpbmVEaXNwbGF5
OjpCb3g6OlRleHQ6OnNldFBhcnRpYWxseVZpc2libGVDb250ZW50TGVuZ3RoKToKKFdlYkNvcmU6
OklubGluZURpc3BsYXk6OkJveDo6Qm94KToKKFdlYkNvcmU6OklubGluZURpc3BsYXk6OkJveDo6
c2V0TGVmdCk6CihXZWJDb3JlOjpJbmxpbmVEaXNwbGF5OjpCb3g6OnNldElzRnVsbHlUcnVuY2F0
ZWQpOgooV2ViQ29yZTo6SW5saW5lRGlzcGxheTo6Qm94OjpUZXh0OjpUZXh0KToKKiBTb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURp
c3BsYXlDb250ZW50QnVpbGRlci5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZURpc3BsYXlD
b250ZW50QnVpbGRlcjo6YXBwZW5kVGV4dERpc3BsYXlCb3gpOgooV2ViQ29yZTo6TGF5b3V0OjpJ
bmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OmFwcGVuZEF0b21pY0lubGluZUxldmVsRGlzcGxh
eUJveCk6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6YXBw
ZW5kSW5saW5lQm94RGlzcGxheUJveCk6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZURpc3BsYXlD
b250ZW50QnVpbGRlcjo6YXBwZW5kU3Bhbm5pbmdJbmxpbmVCb3hEaXNwbGF5Qm94KToKKiBTb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGlu
ZURpc3BsYXlDb250ZW50QnVpbGRlci5oOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVEaXNwbGF5
Q29udGVudEJ1aWxkZXI6OnJvb3RTdHlsZSBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5TGluZS5oOgoo
V2ViQ29yZTo6SW5saW5lRGlzcGxheTo6TGluZTo6c2V0RWxsaXBzaXNWaXN1YWxSZWN0KToKKFdl
YkNvcmU6OklubGluZURpc3BsYXk6OkxpbmU6OkxpbmUpOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUxpbmVCdWls
ZGVyLmNwcDoKKFdlYkNvcmU6OkxheW91dDo6ZmxpcExvZ2ljYWxMaW5lUmVjdFRvVmlzdWFsRm9y
V3JpdGluZ01vZGUpOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXI6
OmJ1aWxkIGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6dHJ1bmNhdGVPdmVyZmxvd2luZ0Rpc3Bs
YXlCb3hlcyk6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZURpc3BsYXlMaW5lQnVpbGRlcjo6dHJh
aWxpbmdFbGxpcHNpc1Zpc3VhbFJlY3QpOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVEaXNwbGF5
TGluZUJ1aWxkZXI6OnRyYWlsaW5nRWxsaXBzaXNSZWN0IGNvbnN0KTogRGVsZXRlZC4KKFdlYkNv
cmU6OkxheW91dDo6SW5saW5lRGlzcGxheUxpbmVCdWlsZGVyOjpmbGlwTG9naWNhbExpbmVSZWN0
VG9WaXN1YWxGb3JXcml0aW5nTW9kZSBjb25zdCk6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5TGlu
ZUJ1aWxkZXIuaDoKLS0tCiAuLi4vaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcCAg
ICAgICAgfCAgMjIgKystCiAuLi4vaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmggICAg
ICAgICAgfCAgIDIgKy0KIC4uLi9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmUu
Y3BwICB8ICA0OCArLS0tLQogLi4uL2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGlu
ZS5oICAgIHwgIDEzIC0tCiAuLi4vaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNwcCAgICAgICAg
ICAgICAgfCAgNDQgKy0tLS0KIC4uLi9pbmxpbmUvSW5saW5lTGluZUJ1aWxkZXIuaCAgICAgICAg
ICAgICAgICB8ICAyMCArLQogLi4uL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlCb3guaCAg
ICAgICAgIHwgIDIwICstCiAuLi4vZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIu
Y3BwICAgfCAgIDkgKy0KIC4uLi9kaXNwbGF5L0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5o
ICAgICB8ICAgMiArCiAuLi4vaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUxpbmUuaCAgICAg
ICAgfCAgIDYgKy0KIC4uLi9kaXNwbGF5L0lubGluZURpc3BsYXlMaW5lQnVpbGRlci5jcHAgICAg
ICB8IDE4MSArKysrKysrKysrKysrKy0tLS0KIC4uLi9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNw
bGF5TGluZUJ1aWxkZXIuaCB8ICAgNCArLQogLi4uZXh0X292ZXJmbG93X2VsbGlwc2lzX3NpbXBs
ZS1leHBlY3RlZC5odG1sIHwgIDE2ICsrCiAuLi4vaW5saW5lL3RleHRfb3ZlcmZsb3dfZWxsaXBz
aXNfc2ltcGxlLmh0bWwgfCAgMjQgKysrCiAxNCBmaWxlcyBjaGFuZ2VkLCAyMzIgaW5zZXJ0aW9u
cygrKSwgMTc5IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2Zh
c3QvaW5saW5lL3RleHRfb3ZlcmZsb3dfZWxsaXBzaXNfc2ltcGxlLWV4cGVjdGVkLmh0bWwKIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9mYXN0L2lubGluZS90ZXh0X292ZXJmbG93X2Vs
bGlwc2lzX3NpbXBsZS5odG1sCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0
dGluZ0NvbnRleHQuY3BwCmluZGV4IDRiODBjN2M4MGVmMS4uOWRlMWFlMTk5OTFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9Jbmxp
bmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC0yMDIs
MTkgKzIwMiwxOSBAQCBzdGF0aWMgc2l6ZV90IGluZGV4T2ZGaXJzdElubGluZUl0ZW1Gb3JOZXh0
TGluZShjb25zdCBMaW5lQnVpbGRlcjo6TGluZUNvbnRlbnQmCiAgICAgcmV0dXJuIGxpbmVDb250
ZW50UmFuZ2UuZW5kOwogfQogCi1zdGF0aWMgTGluZUJ1aWxkZXI6OkxpbmVJbnB1dDo6TGluZUVu
ZGluZ0VsbGlwc2lzUG9saWN5IGxpbmVFbmRpbmdFbGxpcHNpc1BvbGljeShjb25zdCBSZW5kZXJT
dHlsZSYgcm9vdFN0eWxlLCBzaXplX3QgbnVtYmVyT2ZMaW5lcywgc3RkOjpvcHRpb25hbDxzaXpl
X3Q+IG1heGltdW1OdW1iZXJPZlZpc2libGVMaW5lcykKK3N0YXRpYyBMaW5lQnVpbGRlcjo6TGlu
ZUVuZGluZ0VsbGlwc2lzUG9saWN5IGxpbmVFbmRpbmdFbGxpcHNpc1BvbGljeShjb25zdCBSZW5k
ZXJTdHlsZSYgcm9vdFN0eWxlLCBzaXplX3QgbnVtYmVyT2ZMaW5lcywgc3RkOjpvcHRpb25hbDxz
aXplX3Q+IG1heGltdW1OdW1iZXJPZlZpc2libGVMaW5lcykKIHsKICAgICAvLyBXZSBtYXkgaGF2
ZSBwYXNzZWQgdGhlIGxpbmUtY2xhbXAgbGluZSB3aXRoIG92ZXJmbG93IHZpc2libGUuCiAgICAg
aWYgKG1heGltdW1OdW1iZXJPZlZpc2libGVMaW5lcyAmJiBudW1iZXJPZkxpbmVzIDwgKm1heGlt
dW1OdW1iZXJPZlZpc2libGVMaW5lcykgewogICAgICAgICAvLyBJZiB0aGUgbmV4dCBjYWxsIHRv
IGxheW91dElubGluZUNvbnRlbnQoKSB3b24ndCBwcm9kdWNlIGEgbGluZSB3aXRoIGNvbnRlbnQg
KGUuZy4gb25seSBmbG9hdHMpLCB3ZSdsbCBlbmQgdXAgaGVyZSBhZ2Fpbi4KICAgICAgICAgYXV0
byBzaG91bGRBcHBseUNsYW1wV2hlbkFwcGxpY2FibGUgPSAqbWF4aW11bU51bWJlck9mVmlzaWJs
ZUxpbmVzIC0gbnVtYmVyT2ZMaW5lcyA9PSAxOwogICAgICAgICBpZiAoc2hvdWxkQXBwbHlDbGFt
cFdoZW5BcHBsaWNhYmxlKQotICAgICAgICAgICAgcmV0dXJuIExpbmVCdWlsZGVyOjpMaW5lSW5w
dXQ6OkxpbmVFbmRpbmdFbGxpcHNpc1BvbGljeTo6V2hlbkNvbnRlbnRPdmVyZmxvd3NJbkJsb2Nr
RGlyZWN0aW9uOworICAgICAgICAgICAgcmV0dXJuIExpbmVCdWlsZGVyOjpMaW5lRW5kaW5nRWxs
aXBzaXNQb2xpY3k6OldoZW5Db250ZW50T3ZlcmZsb3dzSW5CbG9ja0RpcmVjdGlvbjsKICAgICB9
CiAgICAgLy8gVHJ1bmNhdGlvbiBpcyBpbiBlZmZlY3Qgd2hlbiB0aGUgYmxvY2sgY29udGFpbmVy
IGhhcyBvdmVyZmxvdyBvdGhlciB0aGFuIHZpc2libGUuCiAgICAgaWYgKHJvb3RTdHlsZS5vdmVy
Zmxvd1goKSA9PSBPdmVyZmxvdzo6SGlkZGVuICYmIHJvb3RTdHlsZS50ZXh0T3ZlcmZsb3coKSA9
PSBUZXh0T3ZlcmZsb3c6OkVsbGlwc2lzKQotICAgICAgICByZXR1cm4gTGluZUJ1aWxkZXI6Okxp
bmVJbnB1dDo6TGluZUVuZGluZ0VsbGlwc2lzUG9saWN5OjpXaGVuQ29udGVudE92ZXJmbG93c0lu
SW5saW5lRGlyZWN0aW9uOwotICAgIHJldHVybiBMaW5lQnVpbGRlcjo6TGluZUlucHV0OjpMaW5l
RW5kaW5nRWxsaXBzaXNQb2xpY3k6Ok5vOworICAgICAgICByZXR1cm4gTGluZUJ1aWxkZXI6Okxp
bmVFbmRpbmdFbGxpcHNpc1BvbGljeTo6V2hlbkNvbnRlbnRPdmVyZmxvd3NJbklubGluZURpcmVj
dGlvbjsKKyAgICByZXR1cm4gTGluZUJ1aWxkZXI6OkxpbmVFbmRpbmdFbGxpcHNpc1BvbGljeTo6
Tm87CiB9CiAKIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxpbmVMYXlvdXQoSW5saW5l
SXRlbXMmIGlubGluZUl0ZW1zLCBjb25zdCBMaW5lQnVpbGRlcjo6SW5saW5lSXRlbVJhbmdlJiBu
ZWVkc0xheW91dFJhbmdlLCBjb25zdCBDb25zdHJhaW50c0ZvcklubGluZUNvbnRlbnQmIGNvbnN0
cmFpbnRzLCBCbG9ja0xheW91dFN0YXRlJiBibG9ja0xheW91dFN0YXRlKQpAQCAtMjQzLDEwICsy
NDMsMTAgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGluZUxheW91dChJbmxpbmVJ
dGVtcyYgaW5saW5lSXRlbXMsIGNvbnN0IExpbmVCdWkKICAgICB3aGlsZSAodHJ1ZSkgewogCiAg
ICAgICAgIGF1dG8gbGluZUluaXRpYWxSZWN0ID0gSW5saW5lUmVjdCB7IGxpbmVMb2dpY2FsVG9w
LCBjb25zdHJhaW50cy5ob3Jpem9udGFsKCkubG9naWNhbExlZnQsIGNvbnN0cmFpbnRzLmhvcml6
b250YWwoKS5sb2dpY2FsV2lkdGgsIGZvcm1hdHRpbmdHZW9tZXRyeSgpLmluaXRpYWxMaW5lSGVp
Z2h0KCFwcmV2aW91c0xpbmUuaGFzX3ZhbHVlKCkpIH07Ci0gICAgICAgIGF1dG8gZWxsaXBzaXNQ
b2xpY3kgPSBsaW5lRW5kaW5nRWxsaXBzaXNQb2xpY3kocm9vdFN0eWxlLCBudW1iZXJPZkxpbmVz
LCBtYXhpbXVtTnVtYmVyT2ZWaXNpYmxlTGluZXNGb3JUaGlzSW5saW5lQ29udGVudCk7Ci0gICAg
ICAgIGF1dG8gbGluZUNvbnRlbnQgPSBsaW5lQnVpbGRlci5sYXlvdXRJbmxpbmVDb250ZW50KHsg
eyBmaXJzdElubGluZUl0ZW1OZWVkc0xheW91dCwgbmVlZHNMYXlvdXRSYW5nZS5lbmQgfSwgbGlu
ZUluaXRpYWxSZWN0LCBlbGxpcHNpc1BvbGljeSB9LCBwcmV2aW91c0xpbmUpOworICAgICAgICBh
dXRvIGxpbmVDb250ZW50ID0gbGluZUJ1aWxkZXIubGF5b3V0SW5saW5lQ29udGVudCh7IHsgZmly
c3RJbmxpbmVJdGVtTmVlZHNMYXlvdXQsIG5lZWRzTGF5b3V0UmFuZ2UuZW5kIH0sIGxpbmVJbml0
aWFsUmVjdCB9LCBwcmV2aW91c0xpbmUpOwogCi0gICAgICAgIGF1dG8gbGluZUxvZ2ljYWxSZWN0
ID0gY3JlYXRlRGlzcGxheUNvbnRlbnRGb3JMaW5lKGxpbmVDb250ZW50LCBjb25zdHJhaW50cywg
YmxvY2tMYXlvdXRTdGF0ZSk7CisgICAgICAgIGF1dG8gZWxsaXBzaXNQb2xpY3kgPSBsaW5lRW5k
aW5nRWxsaXBzaXNQb2xpY3kocm9vdFN0eWxlLCBudW1iZXJPZkxpbmVzLCBtYXhpbXVtTnVtYmVy
T2ZWaXNpYmxlTGluZXNGb3JUaGlzSW5saW5lQ29udGVudCk7CisgICAgICAgIGF1dG8gbGluZUxv
Z2ljYWxSZWN0ID0gY3JlYXRlRGlzcGxheUNvbnRlbnRGb3JMaW5lKGxpbmVDb250ZW50LCBjb25z
dHJhaW50cywgZWxsaXBzaXNQb2xpY3ksIGJsb2NrTGF5b3V0U3RhdGUpOwogICAgICAgICBpZiAo
bGluZUNvbnRlbnQuaXNMYXN0TGluZVdpdGhJbmxpbmVDb250ZW50KQogICAgICAgICAgICAgZm9y
bWF0dGluZ1N0YXRlLnNldENsZWFyR2FwQWZ0ZXJMYXN0TGluZShmb3JtYXR0aW5nR2VvbWV0cnko
KS5sb2dpY2FsVG9wRm9yTmV4dExpbmUobGluZUNvbnRlbnQsIGxpbmVMb2dpY2FsUmVjdCwgZmxv
YXRpbmdDb250ZXh0KSAtIGxpbmVMb2dpY2FsUmVjdC5ib3R0b20oKSk7CiAKQEAgLTQ1NywxNCAr
NDU3LDE4IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbGxlY3RDb250ZW50SWZO
ZWVkZWQoKQogICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVJdGVtcyhpbmxpbmVJdGVtc0J1
aWxkZXIuYnVpbGQoKSk7CiB9CiAKLUlubGluZVJlY3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6
OmNyZWF0ZURpc3BsYXlDb250ZW50Rm9yTGluZShjb25zdCBMaW5lQnVpbGRlcjo6TGluZUNvbnRl
bnQmIGxpbmVDb250ZW50LCBjb25zdCBDb25zdHJhaW50c0ZvcklubGluZUNvbnRlbnQmIGNvbnN0
cmFpbnRzLCBjb25zdCBCbG9ja0xheW91dFN0YXRlJiBibG9ja0xheW91dFN0YXRlKQorSW5saW5l
UmVjdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y3JlYXRlRGlzcGxheUNvbnRlbnRGb3JMaW5l
KGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lQ29udGVudCYgbGluZUNvbnRlbnQsIGNvbnN0IENvbnN0
cmFpbnRzRm9ySW5saW5lQ29udGVudCYgY29uc3RyYWludHMsIExpbmVCdWlsZGVyOjpMaW5lRW5k
aW5nRWxsaXBzaXNQb2xpY3kgbGluZUVuZGluZ0VsbGlwc2lzUG9saWN5LCBjb25zdCBCbG9ja0xh
eW91dFN0YXRlJiBibG9ja0xheW91dFN0YXRlKQogewogICAgIGF1dG8mIGZvcm1hdHRpbmdTdGF0
ZSA9IHRoaXMtPmZvcm1hdHRpbmdTdGF0ZSgpOwogICAgIGF1dG8gY3VycmVudExpbmVJbmRleCA9
IGZvcm1hdHRpbmdTdGF0ZS5saW5lcygpLnNpemUoKTsKIAogICAgIGF1dG8gbGluZUJveCA9IExp
bmVCb3hCdWlsZGVyIHsgKnRoaXMsIGxpbmVDb250ZW50LCBibG9ja0xheW91dFN0YXRlIH0uYnVp
bGQoY3VycmVudExpbmVJbmRleCk7CiAgICAgYXV0byBkaXNwbGF5TGluZSA9IElubGluZURpc3Bs
YXlMaW5lQnVpbGRlciB7ICp0aGlzIH0uYnVpbGQobGluZUNvbnRlbnQsIGxpbmVCb3gsIGNvbnN0
cmFpbnRzKTsKLSAgICBmb3JtYXR0aW5nU3RhdGUuYWRkQm94ZXMoSW5saW5lRGlzcGxheUNvbnRl
bnRCdWlsZGVyIHsgKnRoaXMsIGZvcm1hdHRpbmdTdGF0ZSB9LmJ1aWxkKGxpbmVDb250ZW50LCBs
aW5lQm94LCBkaXNwbGF5TGluZSwgY3VycmVudExpbmVJbmRleCkpOworICAgIGF1dG8gYm94ZXMg
PSBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIgeyAqdGhpcywgZm9ybWF0dGluZ1N0YXRlIH0u
YnVpbGQobGluZUNvbnRlbnQsIGxpbmVCb3gsIGRpc3BsYXlMaW5lLCBjdXJyZW50TGluZUluZGV4
KTsKKyAgICBpZiAoYXV0byBlbGxpcHNpc1JlY3QgPSBJbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXI6
OnRyYWlsaW5nRWxsaXBzaXNWaXN1YWxSZWN0QWZ0ZXJUcnVuY2F0aW9uKGxpbmVFbmRpbmdFbGxp
cHNpc1BvbGljeSwgZGlzcGxheUxpbmUsIGJveGVzLCBsaW5lQ29udGVudC5pc0xhc3RMaW5lV2l0
aElubGluZUNvbnRlbnQpKQorICAgICAgICBkaXNwbGF5TGluZS5zZXRFbGxpcHNpc1Zpc3VhbFJl
Y3QoKmVsbGlwc2lzUmVjdCk7CisKKyAgICBmb3JtYXR0aW5nU3RhdGUuYWRkQm94ZXMoV1RGTW92
ZShib3hlcykpOwogICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRMaW5lQm94KFdURk1vdmUobGluZUJv
eCkpOwogICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRMaW5lKGRpc3BsYXlMaW5lKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmgKaW5kZXggNzEwNjE0MGQ1
ZDFhLi4xNjI0N2MwNzc3OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0
dGluZ0NvbnRleHQuaApAQCAtNzIsNyArNzIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcHV0
ZVdpZHRoQW5kTWFyZ2luKGNvbnN0IEJveCYsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYp
OwogCiAgICAgdm9pZCBjb2xsZWN0Q29udGVudElmTmVlZGVkKCk7Ci0gICAgSW5saW5lUmVjdCBj
cmVhdGVEaXNwbGF5Q29udGVudEZvckxpbmUoY29uc3QgTGluZUJ1aWxkZXI6OkxpbmVDb250ZW50
JiwgY29uc3QgQ29uc3RyYWludHNGb3JJbmxpbmVDb250ZW50JiwgY29uc3QgQmxvY2tMYXlvdXRT
dGF0ZSYpOworICAgIElubGluZVJlY3QgY3JlYXRlRGlzcGxheUNvbnRlbnRGb3JMaW5lKGNvbnN0
IExpbmVCdWlsZGVyOjpMaW5lQ29udGVudCYsIGNvbnN0IENvbnN0cmFpbnRzRm9ySW5saW5lQ29u
dGVudCYsIExpbmVCdWlsZGVyOjpMaW5lRW5kaW5nRWxsaXBzaXNQb2xpY3ksIGNvbnN0IEJsb2Nr
TGF5b3V0U3RhdGUmKTsKICAgICB2b2lkIHJlc2V0R2VvbWV0cnlGb3JDbGFtcGVkQ29udGVudChj
b25zdCBMaW5lQnVpbGRlcjo6SW5saW5lSXRlbVJhbmdlJiBuZWVkc0Rpc3BsYXlDb250ZW50UmFu
Z2UsIGNvbnN0IExpbmVCdWlsZGVyOjpGbG9hdExpc3QmIG92ZXJmbG93aW5nRmxvYXRzLCBMYXlv
dXRQb2ludCB0b3BsZWZ0KTsKIAogICAgIHZvaWQgaW52YWxpZGF0ZUZvcm1hdHRpbmdTdGF0ZSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvSW5saW5lTGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2lubGluZS9JbmxpbmVMaW5lLmNwcAppbmRleCA4ZjAwMTc4ZDM4ZTIuLmY4NTc1YTIy
MzFlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9pbmxpbmUvSW5saW5lTGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5jcHAKQEAgLTUwLDcgKzUwLDYgQEAgTGlu
ZTo6fkxpbmUoKQogdm9pZCBMaW5lOjppbml0aWFsaXplKGNvbnN0IFZlY3RvcjxJbmxpbmVJdGVt
PiYgbGluZVNwYW5uaW5nSW5saW5lQm94ZXMsIGJvb2wgaXNGaXJzdEZvcm1hdHRlZExpbmUpCiB7
CiAgICAgbV9pc0ZpcnN0Rm9ybWF0dGVkTGluZSA9IGlzRmlyc3RGb3JtYXR0ZWRMaW5lOwotICAg
IG1fY29udGVudElzVHJ1bmNhdGVkID0gZmFsc2U7CiAgICAgbV9pbmxpbmVCb3hMaXN0V2l0aENs
b25lZERlY29yYXRpb25FbmQuY2xlYXIoKTsKICAgICBtX2Nsb25lZEVuZERlY29yYXRpb25XaWR0
aEZvcklubGluZUJveFJ1bnMgPSB7IH07CiAgICAgbV9ub25TcGFubmluZ0lubGluZUxldmVsQm94
Q291bnQgPSAwOwpAQCAtMTgxLDI3ICsxODAsNiBAQCB2b2lkIExpbmU6OmFwcGx5UnVuRXhwYW5z
aW9uKElubGluZUxheW91dFVuaXQgaG9yaXpvbnRhbEF2YWlsYWJsZVNwYWNlKQogICAgIG1fY29u
dGVudExvZ2ljYWxXaWR0aCArPSBhY2N1bXVsYXRlZEV4cGFuc2lvbjsKIH0KIAotdm9pZCBMaW5l
Ojp0cnVuY2F0ZShJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxSaWdodCkKLXsKLSAgICBBU1NFUlQo
IW1fY29udGVudElzVHJ1bmNhdGVkKTsKLSAgICBBU1NFUlQobV9jb250ZW50TG9naWNhbFdpZHRo
ID4gbG9naWNhbFJpZ2h0KTsKLSAgICBhdXRvIGlzRmlyc3RSdW4gPSB0cnVlOwotICAgIGZvciAo
YXV0byYgcnVuIDogbV9ydW5zKSB7Ci0gICAgICAgIGlmIChydW4uaXNJbmxpbmVCb3goKSkKLSAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAocnVuLmxvZ2ljYWxSaWdodCgpID4gbG9n
aWNhbFJpZ2h0KSB7Ci0gICAgICAgICAgICAvLyBUaGUgZmlyc3QgY2hhcmFjdGVyIG9yIGF0b21p
YyBpbmxpbmUtbGV2ZWwgZWxlbWVudCBvbiBhIGxpbmUgbXVzdCBiZSBjbGlwcGVkIHJhdGhlciB0
aGFuIGVsbGlwc2VkLgotICAgICAgICAgICAgaWYgKGlzRmlyc3RSdW4pCi0gICAgICAgICAgICAg
ICAgbV9jb250ZW50SXNUcnVuY2F0ZWQgPSBydW4udHJ1bmNhdGUobG9naWNhbFJpZ2h0IC0gcnVu
LmxvZ2ljYWxMZWZ0KCksIFJ1bjo6Q2FuRnVsbHlUcnVuY2F0ZTo6Tm8pOwotICAgICAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgcnVuLnRydW5jYXRlKGxvZ2ljYWxSaWdodCAtIHJ1bi5s
b2dpY2FsTGVmdCgpKTsKLSAgICAgICAgICAgICAgICBtX2NvbnRlbnRJc1RydW5jYXRlZCA9IHRy
dWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaXNGaXJzdFJ1biA9IGZhbHNl
OwotICAgIH0KLX0KLQogdm9pZCBMaW5lOjpoYW5kbGVUcmFpbGluZ1RyaW1tYWJsZUNvbnRlbnQo
VHJhaWxpbmdDb250ZW50QWN0aW9uIHRyYWlsaW5nVHJpbW1hYmxlQ29udGVudEFjdGlvbikKIHsK
ICAgICBpZiAobV90cmltbWFibGVUcmFpbGluZ0NvbnRlbnQuaXNFbXB0eSgpIHx8IG1fcnVucy5p
c0VtcHR5KCkpCkBAIC04NTEsNyArODI5LDcgQEAgc3RkOjpvcHRpb25hbDxMaW5lOjpSdW4+IExp
bmU6OlJ1bjo6ZGV0YWNoVHJhaWxpbmdXaGl0ZXNwYWNlKCkKICAgICBhdXRvIHRyYWlsaW5nV2hp
dGVzcGFjZVJ1biA9ICp0aGlzOwogCiAgICAgYXV0byBsZWFkaW5nTm9uV2hpdGVzcGFjZUNvbnRl
bnRMZW5ndGggPSBtX3RleHRDb250ZW50LT5sZW5ndGggLSBtX3RyYWlsaW5nV2hpdGVzcGFjZS0+
bGVuZ3RoOwotICAgIHRyYWlsaW5nV2hpdGVzcGFjZVJ1bi5tX3RleHRDb250ZW50ID0geyBtX3Rl
eHRDb250ZW50LT5zdGFydCArIGxlYWRpbmdOb25XaGl0ZXNwYWNlQ29udGVudExlbmd0aCwgbV90
cmFpbGluZ1doaXRlc3BhY2UtPmxlbmd0aCwgeyB9LCBmYWxzZSB9OworICAgIHRyYWlsaW5nV2hp
dGVzcGFjZVJ1bi5tX3RleHRDb250ZW50ID0geyBtX3RleHRDb250ZW50LT5zdGFydCArIGxlYWRp
bmdOb25XaGl0ZXNwYWNlQ29udGVudExlbmd0aCwgbV90cmFpbGluZ1doaXRlc3BhY2UtPmxlbmd0
aCwgZmFsc2UgfTsKIAogICAgIHRyYWlsaW5nV2hpdGVzcGFjZVJ1bi5tX2xvZ2ljYWxXaWR0aCA9
IG1fdHJhaWxpbmdXaGl0ZXNwYWNlLT53aWR0aDsKICAgICB0cmFpbGluZ1doaXRlc3BhY2VSdW4u
bV9sb2dpY2FsTGVmdCA9IGxvZ2ljYWxSaWdodCgpIC0gbV90cmFpbGluZ1doaXRlc3BhY2UtPndp
ZHRoOwpAQCAtOTEzLDMwICs4OTEsNiBAQCBJbmxpbmVMYXlvdXRVbml0IExpbmU6OlJ1bjo6cmVt
b3ZlVHJhaWxpbmdXaGl0ZXNwYWNlKCkKICAgICByZXR1cm4gdHJpbW1lZFdpZHRoOwogfQogCi1i
b29sIExpbmU6OlJ1bjo6dHJ1bmNhdGUoSW5saW5lTGF5b3V0VW5pdCB2aXNpYmxlV2lkdGgsIENh
bkZ1bGx5VHJ1bmNhdGUgY2FuRnVsbHlUcnVuY2F0ZSkKLXsKLSAgICBBU1NFUlQoIXZpc2libGVX
aWR0aCB8fCB2aXNpYmxlV2lkdGggPCBtX2xvZ2ljYWxXaWR0aCk7Ci0KLSAgICBpZiAoaXNUZXh0
KCkpIHsKLSAgICAgICAgbV9pc1RydW5jYXRlZCA9IHRydWU7Ci0gICAgICAgIGF1dG8mIGlubGlu
ZVRleHRCb3ggPSBkb3duY2FzdDxJbmxpbmVUZXh0Qm94PigqbV9sYXlvdXRCb3gpOwotICAgICAg
ICBhdXRvIGxlZnRTaWRlID0gVGV4dFV0aWw6OldvcmRCcmVha0xlZnQgeyB9OwotICAgICAgICBp
ZiAodmlzaWJsZVdpZHRoID4gMC5mKQotICAgICAgICAgICAgbGVmdFNpZGUgPSBUZXh0VXRpbDo6
YnJlYWtXb3JkKGlubGluZVRleHRCb3gsIG1fdGV4dENvbnRlbnQtPnN0YXJ0LCBtX3RleHRDb250
ZW50LT5sZW5ndGgsIG1fbG9naWNhbFdpZHRoLCB2aXNpYmxlV2lkdGgsIG1fbG9naWNhbExlZnQs
IG1fc3R5bGUuZm9udENhc2NhZGUoKSk7Ci0KLSAgICAgICAgaWYgKGxlZnRTaWRlLmxlbmd0aCkK
LSAgICAgICAgICAgIG1fdGV4dENvbnRlbnQtPnBhcnRpYWxseVZpc2libGVDb250ZW50ID0geyBs
ZWZ0U2lkZS5sZW5ndGgsIGxlZnRTaWRlLmxvZ2ljYWxXaWR0aCB9OwotICAgICAgICBlbHNlIGlm
IChjYW5GdWxseVRydW5jYXRlID09IENhbkZ1bGx5VHJ1bmNhdGU6Ok5vKSB7Ci0gICAgICAgICAg
ICBhdXRvIGZpcnN0Q2hhcmFjdGVyTGVuZ3RoID0gVGV4dFV0aWw6OmZpcnN0VXNlclBlcmNlaXZl
ZENoYXJhY3Rlckxlbmd0aChpbmxpbmVUZXh0Qm94LCBtX3RleHRDb250ZW50LT5zdGFydCwgbV90
ZXh0Q29udGVudC0+bGVuZ3RoKTsKLSAgICAgICAgICAgIGF1dG8gZmlyc3RDaGFyYWN0ZXJXaWR0
aCA9IFRleHRVdGlsOjp3aWR0aChpbmxpbmVUZXh0Qm94LCBpbmxpbmVUZXh0Qm94LnN0eWxlKCku
Zm9udENhc2NhZGUoKSwgbV90ZXh0Q29udGVudC0+c3RhcnQsIG1fdGV4dENvbnRlbnQtPnN0YXJ0
ICsgZmlyc3RDaGFyYWN0ZXJMZW5ndGgsIHsgfSwgVGV4dFV0aWw6OlVzZVRyYWlsaW5nV2hpdGVz
cGFjZU1lYXN1cmluZ09wdGltaXphdGlvbjo6Tm8pOwotICAgICAgICAgICAgbV90ZXh0Q29udGVu
dC0+cGFydGlhbGx5VmlzaWJsZUNvbnRlbnQgPSB7IGZpcnN0Q2hhcmFjdGVyTGVuZ3RoLCBmaXJz
dENoYXJhY3RlcldpZHRoIH07Ci0gICAgICAgIH0KLSAgICB9IGVsc2UKLSAgICAgICAgbV9pc1Ry
dW5jYXRlZCA9IGNhbkZ1bGx5VHJ1bmNhdGUgPT0gQ2FuRnVsbHlUcnVuY2F0ZTo6WWVzOwotCi0g
ICAgcmV0dXJuIG1faXNUcnVuY2F0ZWQ7Ci19Ci0KIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5oIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGlu
ZS5oCmluZGV4IGE4MjIzYWI3YTBkZS4uNDE0NGJmYmE0Y2NhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5l
TGluZS5oCkBAIC00Nyw3ICs0Nyw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZChjb25zdCBJ
bmxpbmVJdGVtJiwgY29uc3QgUmVuZGVyU3R5bGUmLCBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxX
aWR0aCk7CiAKICAgICBib29sIGhhc0NvbnRlbnQoKSBjb25zdDsKLSAgICBib29sIGlzQ29udGVu
dFRydW5jYXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudElzVHJ1bmNhdGVkOyB9CiAKICAg
ICBib29sIGNvbnRlbnROZWVkc0JpZGlSZW9yZGVyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9oYXNO
b25EZWZhdWx0QmlkaUxldmVsUnVuOyB9CiAKQEAgLTcwLDcgKzY5LDYgQEAgcHVibGljOgogICAg
IHZvaWQgaGFuZGxlT3ZlcmZsb3dpbmdOb25CcmVha2luZ1NwYWNlKFRyYWlsaW5nQ29udGVudEFj
dGlvbiwgSW5saW5lTGF5b3V0VW5pdCBvdmVyZmxvd2luZ1dpZHRoKTsKICAgICB2b2lkIHJlc2V0
QmlkaUxldmVsRm9yVHJhaWxpbmdXaGl0ZXNwYWNlKFVCaURpTGV2ZWwgcm9vdEJpZGlMZXZlbCk7
CiAgICAgdm9pZCBhcHBseVJ1bkV4cGFuc2lvbihJbmxpbmVMYXlvdXRVbml0IGhvcml6b250YWxB
dmFpbGFibGVTcGFjZSk7Ci0gICAgdm9pZCB0cnVuY2F0ZShJbmxpbmVMYXlvdXRVbml0IGxvZ2lj
YWxSaWdodCk7CiAKICAgICBzdHJ1Y3QgUnVuIHsKICAgICAgICAgZW51bSBjbGFzcyBUeXBlIDog
dWludDhfdCB7CkBAIC0xMDQsMTcgKzEwMiwxMCBAQCBwdWJsaWM6CiAgICAgICAgIGJvb2wgaXND
b250ZW50ZnVsKCkgY29uc3QgeyByZXR1cm4gKGlzVGV4dCgpICYmIHRleHRDb250ZW50KCktPmxl
bmd0aCkgfHwgaXNCb3goKSB8fCBpc0xpbmVCcmVhaygpIHx8IGlzTGlzdE1hcmtlcigpOyB9CiAg
ICAgICAgIGJvb2wgaXNHZW5lcmF0ZWQoKSBjb25zdCB7IHJldHVybiBpc0xpc3RNYXJrZXIoKTsg
fQogCi0gICAgICAgIGJvb2wgaXNUcnVuY2F0ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzVHJ1bmNh
dGVkOyB9Ci0KICAgICAgICAgY29uc3QgQm94JiBsYXlvdXRCb3goKSBjb25zdCB7IHJldHVybiAq
bV9sYXlvdXRCb3g7IH0KICAgICAgICAgc3RydWN0IFRleHQgewogICAgICAgICAgICAgc2l6ZV90
IHN0YXJ0IHsgMCB9OwogICAgICAgICAgICAgc2l6ZV90IGxlbmd0aCB7IDAgfTsKLSAgICAgICAg
ICAgIHN0cnVjdCBQYXJ0aWFsbHlWaXNpYmxlQ29udGVudCB7Ci0gICAgICAgICAgICAgICAgc2l6
ZV90IGxlbmd0aCB7IDAgfTsKLSAgICAgICAgICAgICAgICBJbmxpbmVMYXlvdXRVbml0IHdpZHRo
IHsgMC5mIH07Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxQYXJ0
aWFsbHlWaXNpYmxlQ29udGVudD4gcGFydGlhbGx5VmlzaWJsZUNvbnRlbnQgeyB9OwogICAgICAg
ICAgICAgYm9vbCBuZWVkc0h5cGhlbiB7IGZhbHNlIH07CiAgICAgICAgIH07CiAgICAgICAgIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8VGV4dD4mIHRleHRDb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV90
ZXh0Q29udGVudDsgfQpAQCAtMTcyLDggKzE2Myw2IEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBo
YXNUcmFpbGluZ0xldHRlclNwYWNpbmcoKSBjb25zdDsKICAgICAgICAgSW5saW5lTGF5b3V0VW5p
dCB0cmFpbGluZ0xldHRlclNwYWNpbmcoKSBjb25zdDsKICAgICAgICAgSW5saW5lTGF5b3V0VW5p
dCByZW1vdmVUcmFpbGluZ0xldHRlclNwYWNpbmcoKTsKLSAgICAgICAgZW51bSBjbGFzcyBDYW5G
dWxseVRydW5jYXRlIDogdWludDhfdCB7IFllcywgTm8gfTsKLSAgICAgICAgYm9vbCB0cnVuY2F0
ZShJbmxpbmVMYXlvdXRVbml0IHRydW5jYXRlZFdpZHRoLCBDYW5GdWxseVRydW5jYXRlID0gQ2Fu
RnVsbHlUcnVuY2F0ZTo6WWVzKTsKIAogICAgICAgICBUeXBlIG1fdHlwZSB7IFR5cGU6OlRleHQg
fTsKICAgICAgICAgY29uc3QgQm94KiBtX2xheW91dEJveCB7IG51bGxwdHIgfTsKQEAgLTE4NSw3
ICsxNzQsNiBAQCBwdWJsaWM6CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8VHJhaWxpbmdXaGl0ZXNw
YWNlPiBtX3RyYWlsaW5nV2hpdGVzcGFjZSB7IH07CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8c2l6
ZV90PiBtX2xhc3ROb25XaGl0ZXNwYWNlQ29udGVudFN0YXJ0IHsgfTsKICAgICAgICAgc3RkOjpv
cHRpb25hbDxUZXh0PiBtX3RleHRDb250ZW50OwotICAgICAgICBib29sIG1faXNUcnVuY2F0ZWQg
eyBmYWxzZSB9OwogICAgIH07CiAgICAgdXNpbmcgUnVuTGlzdCA9IFZlY3RvcjxSdW4sIDEwPjsK
ICAgICBjb25zdCBSdW5MaXN0JiBydW5zKCkgY29uc3QgeyByZXR1cm4gbV9ydW5zOyB9CkBAIC0y
ODEsNyArMjY5LDYgQEAgcHJpdmF0ZToKICAgICBJbmxpbmVCb3hMaXN0V2l0aENsb25lZERlY29y
YXRpb25FbmQgbV9pbmxpbmVCb3hMaXN0V2l0aENsb25lZERlY29yYXRpb25FbmQ7CiAgICAgSW5s
aW5lTGF5b3V0VW5pdCBtX2Nsb25lZEVuZERlY29yYXRpb25XaWR0aEZvcklubGluZUJveFJ1bnMg
eyAwIH07CiAgICAgYm9vbCBtX2hhc05vbkRlZmF1bHRCaWRpTGV2ZWxSdW4geyBmYWxzZSB9Owot
ICAgIGJvb2wgbV9jb250ZW50SXNUcnVuY2F0ZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc0Zp
cnN0Rm9ybWF0dGVkTGluZSB7IGZhbHNlIH07CiAgICAgVmVjdG9yPElubGluZUxheW91dFVuaXQ+
IG1faW5saW5lQm94TG9naWNhbExlZnRTdGFjazsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQnVpbGRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9Jbmxp
bmVMaW5lQnVpbGRlci5jcHAKaW5kZXggNjk5N2JlMDI1MDA2Li42N2FkNzk4OGY2YWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lu
bGluZUxpbmVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQnVpbGRlci5jcHAKQEAgLTM0OSwxNCArMzQ5LDEy
IEBAIExpbmVCdWlsZGVyOjpMaW5lQ29udGVudCBMaW5lQnVpbGRlcjo6bGF5b3V0SW5saW5lQ29u
dGVudChjb25zdCBMaW5lSW5wdXQmIGxpbmVJCiAgICAgaW5pdGlhbGl6ZShsaW5lSW5wdXQuaW5p
dGlhbExvZ2ljYWxSZWN0LCBpbml0aWFsQ29uc3RyYWludHNGb3JMaW5lKGxpbmVJbnB1dC5pbml0
aWFsTG9naWNhbFJlY3QsIHByZXZpb3VzTGluZUVuZHNXaXRoTGluZUJyZWFrKSwgbGluZUlucHV0
Lm5lZWRzTGF5b3V0UmFuZ2UsIHByZXZpb3VzTGluZSk7CiAKICAgICBhdXRvIGNvbW1pdHRlZENv
bnRlbnQgPSBwbGFjZUlubGluZUNvbnRlbnQobGluZUlucHV0Lm5lZWRzTGF5b3V0UmFuZ2UpOwot
ICAgIGF1dG8gY29tbWl0dGVkUmFuZ2UgPSBjbG9zZShsaW5lSW5wdXQubmVlZHNMYXlvdXRSYW5n
ZSwgbGluZUlucHV0LmVsbGlwc2lzUG9saWN5LCBjb21taXR0ZWRDb250ZW50KTsKKyAgICBhdXRv
IGNvbW1pdHRlZFJhbmdlID0gY2xvc2UobGluZUlucHV0Lm5lZWRzTGF5b3V0UmFuZ2UsIGNvbW1p
dHRlZENvbnRlbnQpOwogCiAgICAgYXV0byBpc0xhc3RMaW5lID0gaXNMYXN0TGluZVdpdGhJbmxp
bmVDb250ZW50KGNvbW1pdHRlZFJhbmdlLCBsaW5lSW5wdXQubmVlZHNMYXlvdXRSYW5nZS5lbmQs
IGNvbW1pdHRlZENvbnRlbnQucGFydGlhbFRyYWlsaW5nQ29udGVudExlbmd0aCk7CiAgICAgYXV0
byBwYXJ0aWFsT3ZlcmZsb3dpbmdDb250ZW50ID0gY29tbWl0dGVkQ29udGVudC5wYXJ0aWFsVHJh
aWxpbmdDb250ZW50TGVuZ3RoID8gc3RkOjptYWtlX29wdGlvbmFsPFBhcnRpYWxDb250ZW50Pihj
b21taXR0ZWRDb250ZW50LnBhcnRpYWxUcmFpbGluZ0NvbnRlbnRMZW5ndGgsIGNvbW1pdHRlZENv
bnRlbnQub3ZlcmZsb3dMb2dpY2FsV2lkdGgpIDogc3RkOjpudWxsb3B0OwogICAgIGF1dG8gaW5s
aW5lQmFzZURpcmVjdGlvbiA9IG1fbGluZS5ydW5zKCkuaXNFbXB0eSgpID8gVGV4dERpcmVjdGlv
bjo6TFRSIDogaW5saW5lQmFzZURpcmVjdGlvbkZvckxpbmVDb250ZW50KCk7CiAgICAgYXV0byBj
b250ZW50TG9naWNhbExlZnQgPSBob3Jpem9udGFsQWxpZ25tZW50T2Zmc2V0KGlzTGFzdExpbmUp
OwotICAgIGF1dG8gY29udGVudElzVHJ1bmNhdGVkSW5CbG9ja0RpcmVjdGlvbiA9ICghaXNMYXN0
TGluZSAmJiBsaW5lSW5wdXQuZWxsaXBzaXNQb2xpY3kgPT0gTGluZUJ1aWxkZXI6OkxpbmVJbnB1
dDo6TGluZUVuZGluZ0VsbGlwc2lzUG9saWN5OjpXaGVuQ29udGVudE92ZXJmbG93c0luQmxvY2tE
aXJlY3Rpb24pIHx8IGxpbmVJbnB1dC5lbGxpcHNpc1BvbGljeSA9PSBMaW5lQnVpbGRlcjo6TGlu
ZUlucHV0OjpMaW5lRW5kaW5nRWxsaXBzaXNQb2xpY3k6OkFsd2F5czsKLSAgICBhdXRvIGxpbmVO
ZWVkc1RyYWlsaW5nRWxsaXBzaXMgPSBtX2xpbmUuaXNDb250ZW50VHJ1bmNhdGVkKCkgfHwgY29u
dGVudElzVHJ1bmNhdGVkSW5CbG9ja0RpcmVjdGlvbjsKIAogICAgIHJldHVybiB7IGNvbW1pdHRl
ZFJhbmdlCiAgICAgICAgICwgcGFydGlhbE92ZXJmbG93aW5nQ29udGVudApAQCAtMzc2LDcgKzM3
NCw2IEBAIExpbmVCdWlsZGVyOjpMaW5lQ29udGVudCBMaW5lQnVpbGRlcjo6bGF5b3V0SW5saW5l
Q29udGVudChjb25zdCBMaW5lSW5wdXQmIGxpbmVJCiAgICAgICAgICwgbV9saW5lLm5vblNwYW5u
aW5nSW5saW5lTGV2ZWxCb3hDb3VudCgpCiAgICAgICAgICwgY29tcHV0ZWRWaXN1YWxPcmRlciht
X2xpbmUpCiAgICAgICAgICwgaW5saW5lQmFzZURpcmVjdGlvbgotICAgICAgICAsIGxpbmVOZWVk
c1RyYWlsaW5nRWxsaXBzaXMKICAgICAgICAgLCBtX2xpbmUucnVucygpIH07CiB9CiAKQEAgLTM5
MCw3ICszODcsNyBAQCBMaW5lQnVpbGRlcjo6SW50cmluc2ljQ29udGVudCBMaW5lQnVpbGRlcjo6
Y29tcHV0ZWRJbnRyaW5zaWNXaWR0aChjb25zdCBJbmxpbmVJdAogICAgIGluaXRpYWxpemUoaW5p
dGlhbFJlY3QsIGxpbmVDb25zdHJhaW50cywgbmVlZHNMYXlvdXRSYW5nZSwgcHJldmlvdXNMaW5l
KTsKIAogICAgIGF1dG8gY29tbWl0dGVkQ29udGVudCA9IHBsYWNlSW5saW5lQ29udGVudChuZWVk
c0xheW91dFJhbmdlKTsKLSAgICBhdXRvIGNvbW1pdHRlZFJhbmdlID0gY2xvc2UobmVlZHNMYXlv
dXRSYW5nZSwgTGluZUlucHV0OjpMaW5lRW5kaW5nRWxsaXBzaXNQb2xpY3k6Ok5vLCBjb21taXR0
ZWRDb250ZW50KTsKKyAgICBhdXRvIGNvbW1pdHRlZFJhbmdlID0gY2xvc2UobmVlZHNMYXlvdXRS
YW5nZSwgY29tbWl0dGVkQ29udGVudCk7CiAgICAgYXV0byBsaW5lV2lkdGggPSBsaW5lQ29uc3Ry
YWludHMubG9naWNhbFJlY3QubGVmdCgpICsgbGluZUNvbnN0cmFpbnRzLm1hcmdpblN0YXJ0ICsg
bV9saW5lLmNvbnRlbnRMb2dpY2FsV2lkdGgoKTsKICAgICBhdXRvIG92ZXJmbG93ID0gc3RkOjpv
cHRpb25hbDxQYXJ0aWFsQ29udGVudD4geyB9OwogICAgIGlmIChjb21taXR0ZWRDb250ZW50LnBh
cnRpYWxUcmFpbGluZ0NvbnRlbnRMZW5ndGgpCkBAIC01MzksNyArNTM2LDcgQEAgTGluZUJ1aWxk
ZXI6OkNvbW1pdHRlZENvbnRlbnQgTGluZUJ1aWxkZXI6OnBsYWNlSW5saW5lQ29udGVudChjb25z
dCBJbmxpbmVJdGVtUmEKICAgICByZXR1cm4geyBjb21taXR0ZWRJdGVtQ291bnQsIHsgfSB9Owog
fQogCi1MaW5lQnVpbGRlcjo6SW5saW5lSXRlbVJhbmdlIExpbmVCdWlsZGVyOjpjbG9zZShjb25z
dCBJbmxpbmVJdGVtUmFuZ2UmIG5lZWRzTGF5b3V0UmFuZ2UsIExpbmVJbnB1dDo6TGluZUVuZGlu
Z0VsbGlwc2lzUG9saWN5IGVsbGlwc2lzUG9saWN5LCBjb25zdCBDb21taXR0ZWRDb250ZW50JiBj
b21taXR0ZWRDb250ZW50KQorTGluZUJ1aWxkZXI6OklubGluZUl0ZW1SYW5nZSBMaW5lQnVpbGRl
cjo6Y2xvc2UoY29uc3QgSW5saW5lSXRlbVJhbmdlJiBuZWVkc0xheW91dFJhbmdlLCBjb25zdCBD
b21taXR0ZWRDb250ZW50JiBjb21taXR0ZWRDb250ZW50KQogewogICAgIEFTU0VSVChjb21taXR0
ZWRDb250ZW50Lml0ZW1Db3VudCB8fCAhbV9wbGFjZWRGbG9hdHMuaXNFbXB0eSgpIHx8IG1fbGlu
ZUlzQ29uc3RyYWluZWRCeUZsb2F0KTsKICAgICBhdXRvJiByb290U3R5bGUgPSB0aGlzLT5yb290
U3R5bGUoKTsKQEAgLTU4OSw0MSArNTg2LDYgQEAgTGluZUJ1aWxkZXI6OklubGluZUl0ZW1SYW5n
ZSBMaW5lQnVpbGRlcjo6Y2xvc2UoY29uc3QgSW5saW5lSXRlbVJhbmdlJiBuZWVkc0xheW8KICAg
ICAgICAgbGluZUVuZHNXaXRoSHlwaGVuID0gbGFzdFRleHRDb250ZW50ICYmIGxhc3RUZXh0Q29u
dGVudC0+bmVlZHNIeXBoZW47CiAgICAgfQogICAgIG1fc3VjY2Vzc2l2ZUh5cGhlbmF0ZWRMaW5l
Q291bnQgPSBsaW5lRW5kc1dpdGhIeXBoZW4gPyBtX3N1Y2Nlc3NpdmVIeXBoZW5hdGVkTGluZUNv
dW50ICsgMSA6IDA7Ci0KLSAgICBhdXRvIGhhbmRsZUxpbmVFbmRpbmdFbGxpcHNpc1BvbGljeSA9
IFsmXSB7Ci0gICAgICAgIHN3aXRjaCAoZWxsaXBzaXNQb2xpY3kpIHsKLSAgICAgICAgY2FzZSBM
aW5lSW5wdXQ6OkxpbmVFbmRpbmdFbGxpcHNpc1BvbGljeTo6Tm86Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBMaW5lSW5wdXQ6OkxpbmVFbmRpbmdFbGxpcHNpc1BvbGljeTo6V2hl
bkNvbnRlbnRPdmVyZmxvd3NJbklubGluZURpcmVjdGlvbjoKLSAgICAgICAgICAgIGlmIChtX2xp
bmUuY29udGVudExvZ2ljYWxXaWR0aCgpID4gaG9yaXpvbnRhbEF2YWlsYWJsZVNwYWNlKSB7Ci0g
ICAgICAgICAgICAgICAgYXV0byBlbGxpcHNpc1dpZHRoID0gcm9vdFN0eWxlLmZvbnRDYXNjYWRl
KCkud2lkdGgoVGV4dFV0aWw6OmVsbGlwc2lzVGV4dFJ1bigpKTsKLSAgICAgICAgICAgICAgICBh
dXRvIGxvZ2ljYWxSaWdodEZvckNvbnRlbnRXaXRob3V0RWxsaXBzaXMgPSBzdGQ6Om1heCgwLmYs
IGhvcml6b250YWxBdmFpbGFibGVTcGFjZSAtIGVsbGlwc2lzV2lkdGgpOwotICAgICAgICAgICAg
ICAgIG1fbGluZS50cnVuY2F0ZShsb2dpY2FsUmlnaHRGb3JDb250ZW50V2l0aG91dEVsbGlwc2lz
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIExpbmVJ
bnB1dDo6TGluZUVuZGluZ0VsbGlwc2lzUG9saWN5OjpXaGVuQ29udGVudE92ZXJmbG93c0luQmxv
Y2tEaXJlY3Rpb246Ci0gICAgICAgICAgICBpZiAoaXNMYXN0TGluZSkKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIEZBTExUSFJPVUdIOwotICAgICAgICBjYXNlIExpbmVJbnB1
dDo6TGluZUVuZGluZ0VsbGlwc2lzUG9saWN5OjpBbHdheXM6IHsKLSAgICAgICAgICAgIGF1dG8g
YXZhaWxhYmxlU3BhY2VBZnRlckNvbnRlbnQgPSBob3Jpem9udGFsQXZhaWxhYmxlU3BhY2U7Ci0g
ICAgICAgICAgICBpZiAoYXV0byBjb250ZW50TG9naWNhbExlZnQgPSBob3Jpem9udGFsQWxpZ25t
ZW50T2Zmc2V0KGlzTGFzdExpbmUpKSB7Ci0gICAgICAgICAgICAgICAgLy8gQWxpZ25tZW50IG1h
eSBtb3ZlIGNvbnRlbnQgd2l0aGluIHRoZSBsaW5lIGJveCBsZWF2bmlnIGxlc3MgKG9yIHplcm8p
IHNwYWNlIGZvciBlbGxpcHNpcyAoZS5nLiB0ZXh0LWFsaWduOiByaWdodCkuCi0gICAgICAgICAg
ICAgICAgYXZhaWxhYmxlU3BhY2VBZnRlckNvbnRlbnQgLT0gY29udGVudExvZ2ljYWxMZWZ0Owot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgYXV0byBlbGxpcHNpc1dpZHRoID0gcm9vdFN0eWxl
LmZvbnRDYXNjYWRlKCkud2lkdGgoVGV4dFV0aWw6OmVsbGlwc2lzVGV4dFJ1bigpKTsKLSAgICAg
ICAgICAgIGlmIChtX2xpbmUuY29udGVudExvZ2ljYWxXaWR0aCgpICYmIG1fbGluZS5jb250ZW50
TG9naWNhbFdpZHRoKCkgKyBlbGxpcHNpc1dpZHRoID4gYXZhaWxhYmxlU3BhY2VBZnRlckNvbnRl
bnQpIHsKLSAgICAgICAgICAgICAgICBhdXRvIGxvZ2ljYWxSaWdodEZvckNvbnRlbnRXaXRob3V0
RWxsaXBzaXMgPSBzdGQ6Om1heCgwLmYsIGF2YWlsYWJsZVNwYWNlQWZ0ZXJDb250ZW50IC0gZWxs
aXBzaXNXaWR0aCk7Ci0gICAgICAgICAgICAgICAgbV9saW5lLnRydW5jYXRlKGxvZ2ljYWxSaWdo
dEZvckNvbnRlbnRXaXRob3V0RWxsaXBzaXMpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9OwotICAg
IGhhbmRsZUxpbmVFbmRpbmdFbGxpcHNpc1BvbGljeSgpOwogICAgIHJldHVybiBsaW5lUmFuZ2U7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQnVpbGRlci5oCmluZGV4IDQ4NjExZDU0
MWRmOC4uNjE2YjdmNDY4MmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQnVpbGRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVy
LmgKQEAgLTQyLDYgKzQyLDE0IEBAIHB1YmxpYzoKICAgICBMaW5lQnVpbGRlcihJbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dCYsIEJsb2NrTGF5b3V0U3RhdGUmLCBIb3Jpem9udGFsQ29uc3RyYWludHMg
cm9vdEhvcml6b250YWxDb25zdHJhaW50cywgY29uc3QgSW5saW5lSXRlbXMmLCBzdGQ6Om9wdGlv
bmFsPEludHJpbnNpY1dpZHRoTW9kZT4gPSBzdGQ6Om51bGxvcHQpOwogICAgIExpbmVCdWlsZGVy
KGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0JiwgY29uc3QgSW5saW5lSXRlbXMmLCBzdGQ6
Om9wdGlvbmFsPEludHJpbnNpY1dpZHRoTW9kZT4pOwogCisgICAgZW51bSBjbGFzcyBMaW5lRW5k
aW5nRWxsaXBzaXNQb2xpY3kgOiB1aW50OF90IHsKKyAgICAgICAgTm8sCisgICAgICAgIFdoZW5D
b250ZW50T3ZlcmZsb3dzSW5JbmxpbmVEaXJlY3Rpb24sCisgICAgICAgIFdoZW5Db250ZW50T3Zl
cmZsb3dzSW5CbG9ja0RpcmVjdGlvbiwKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJl
IHVzZWQgd2hlbiB3ZSByZWFsaXplIHRoZSBsYXN0IGxpbmUgb2YgdGhpcyBJRkMgaXMgd2hlcmUg
dGhlIGNvbnRlbnQgaXMgdHJ1bmNhdGVkIChzaWJsaW5nIElGQyBoYXMgbW9yZSBsaW5lcykuCisg
ICAgICAgIEFsd2F5cworICAgIH07CisKICAgICBzdHJ1Y3QgSW5saW5lSXRlbVJhbmdlIHsKICAg
ICAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gc3RhcnQgPT0gZW5kOyB9CiAgICAg
ICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gZW5kIC0gc3RhcnQ7IH0KQEAgLTUxLDE1
ICs1OSw2IEBAIHB1YmxpYzoKICAgICBzdHJ1Y3QgTGluZUlucHV0IHsKICAgICAgICAgSW5saW5l
SXRlbVJhbmdlIG5lZWRzTGF5b3V0UmFuZ2U7CiAgICAgICAgIElubGluZVJlY3QgaW5pdGlhbExv
Z2ljYWxSZWN0OwotCi0gICAgICAgIGVudW0gY2xhc3MgTGluZUVuZGluZ0VsbGlwc2lzUG9saWN5
IDogdWludDhfdCB7Ci0gICAgICAgICAgICBObywKLSAgICAgICAgICAgIFdoZW5Db250ZW50T3Zl
cmZsb3dzSW5JbmxpbmVEaXJlY3Rpb24sCi0gICAgICAgICAgICBXaGVuQ29udGVudE92ZXJmbG93
c0luQmxvY2tEaXJlY3Rpb24sCi0gICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUg
dXNlZCB3aGVuIHdlIHJlYWxpemUgdGhlIGxhc3QgbGluZSBvZiB0aGlzIElGQyBpcyB3aGVyZSB0
aGUgY29udGVudCBpcyB0cnVuY2F0ZWQgKHNpYmxpbmcgSUZDIGhhcyBtb3JlIGxpbmVzKS4KLSAg
ICAgICAgICAgIEFsd2F5cwotICAgICAgICB9OwotICAgICAgICBMaW5lRW5kaW5nRWxsaXBzaXNQ
b2xpY3kgZWxsaXBzaXNQb2xpY3kgeyBMaW5lRW5kaW5nRWxsaXBzaXNQb2xpY3k6Ok5vIH07CiAg
ICAgfTsKICAgICBzdHJ1Y3QgUGFydGlhbENvbnRlbnQgewogICAgICAgICBQYXJ0aWFsQ29udGVu
dChzaXplX3QsIHN0ZDo6b3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4pOwpAQCAtMTA0LDcgKzEw
Myw2IEBAIHB1YmxpYzoKICAgICAgICAgc2l6ZV90IG5vblNwYW5uaW5nSW5saW5lTGV2ZWxCb3hD
b3VudCB7IDAgfTsKICAgICAgICAgVmVjdG9yPGludDMyX3Q+IHZpc3VhbE9yZGVyTGlzdDsKICAg
ICAgICAgVGV4dERpcmVjdGlvbiBpbmxpbmVCYXNlRGlyZWN0aW9uIHsgVGV4dERpcmVjdGlvbjo6
TFRSIH07Ci0gICAgICAgIGJvb2wgbGluZU5lZWRzVHJhaWxpbmdFbGxpcHNpcyB7IGZhbHNlIH07
CiAgICAgICAgIGNvbnN0IExpbmU6OlJ1bkxpc3QmIHJ1bnM7CiAgICAgfTsKICAgICBMaW5lQ29u
dGVudCBsYXlvdXRJbmxpbmVDb250ZW50KGNvbnN0IExpbmVJbnB1dCYsIGNvbnN0IHN0ZDo6b3B0
aW9uYWw8UHJldmlvdXNMaW5lPiYpOwpAQCAtMTU2LDcgKzE1NCw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4gb3ZlcmZsb3dMb2dpY2FsV2lkdGgg
eyB9OwogICAgIH07CiAgICAgQ29tbWl0dGVkQ29udGVudCBwbGFjZUlubGluZUNvbnRlbnQoY29u
c3QgSW5saW5lSXRlbVJhbmdlJik7Ci0gICAgSW5saW5lSXRlbVJhbmdlIGNsb3NlKGNvbnN0IElu
bGluZUl0ZW1SYW5nZSYgbmVlZHNMYXlvdXRSYW5nZSwgTGluZUlucHV0OjpMaW5lRW5kaW5nRWxs
aXBzaXNQb2xpY3ksIGNvbnN0IENvbW1pdHRlZENvbnRlbnQmKTsKKyAgICBJbmxpbmVJdGVtUmFu
Z2UgY2xvc2UoY29uc3QgSW5saW5lSXRlbVJhbmdlJiBuZWVkc0xheW91dFJhbmdlLCBjb25zdCBD
b21taXR0ZWRDb250ZW50Jik7CiAKICAgICBJbmxpbmVMYXlvdXRVbml0IGlubGluZUl0ZW1XaWR0
aChjb25zdCBJbmxpbmVJdGVtJiwgSW5saW5lTGF5b3V0VW5pdCBjb250ZW50TG9naWNhbExlZnQp
IGNvbnN0OwogICAgIGJvb2wgaXNMYXN0TGluZVdpdGhJbmxpbmVDb250ZW50KGNvbnN0IElubGlu
ZUl0ZW1SYW5nZSYgbGluZVJhbmdlLCBzaXplX3QgbGFzdElubGluZUl0ZW1JbmRleCwgYm9vbCBo
YXNQYXJ0aWFsVHJhaWxpbmdDb250ZW50KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxh
eUJveC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
ZGlzcGxheS9JbmxpbmVEaXNwbGF5Qm94LmgKaW5kZXggZDg3MTA5ZDUzYmMxLi4zN2I4Y2YxZjBk
YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUJveC5o
CkBAIC0zOSw3ICszOSw3IEBAIHN0cnVjdCBCb3ggewogICAgIHN0cnVjdCBUZXh0IHsKICAgICAg
ICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKLSAgICAgICAg
VGV4dChzaXplX3QgcG9zaXRpb24sIHNpemVfdCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgb3JpZ2lu
YWxDb250ZW50LCBTdHJpbmcgYWRqdXN0ZWRDb250ZW50VG9SZW5kZXIgPSBTdHJpbmcoKSwgYm9v
bCBoYXNIeXBoZW4gPSBmYWxzZSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHBhcnRpYWxseVZpc2li
bGVDb250ZW50TGVuZ3RoID0gc3RkOjpudWxsb3B0KTsKKyAgICAgICAgVGV4dChzaXplX3QgcG9z
aXRpb24sIHNpemVfdCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxDb250ZW50LCBTdHJp
bmcgYWRqdXN0ZWRDb250ZW50VG9SZW5kZXIgPSBTdHJpbmcoKSwgYm9vbCBoYXNIeXBoZW4gPSBm
YWxzZSk7CiAKICAgICAgICAgc2l6ZV90IHN0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9zdGFydDsg
fQogICAgICAgICBzaXplX3QgZW5kKCkgY29uc3QgeyByZXR1cm4gc3RhcnQoKSArIGxlbmd0aCgp
OyB9CkBAIC01MCw2ICs1MCw4IEBAIHN0cnVjdCBCb3ggewogCiAgICAgICAgIGJvb2wgaGFzSHlw
aGVuKCkgY29uc3QgeyByZXR1cm4gbV9oYXNIeXBoZW47IH0KIAorICAgICAgICB2b2lkIHNldFBh
cnRpYWxseVZpc2libGVDb250ZW50TGVuZ3RoKHNpemVfdCB0cnVuY2F0ZWRMZW5ndGgpIHsgbV9w
YXJ0aWFsbHlWaXNpYmxlQ29udGVudExlbmd0aCA9IHRydW5jYXRlZExlbmd0aDsgfQorCiAgICAg
cHJpdmF0ZToKICAgICAgICAgZnJpZW5kIHN0cnVjdCBCb3g7CiAKQEAgLTc3LDcgKzc5LDcgQEAg
c3RydWN0IEJveCB7CiAgICAgICAgIEZpcnN0ID0gMSA8PCAwLAogICAgICAgICBMYXN0ICA9IDEg
PDwgMQogICAgIH07Ci0gICAgQm94KHNpemVfdCBsaW5lSW5kZXgsIFR5cGUsIGNvbnN0IExheW91
dDo6Qm94JiwgVUJpRGlMZXZlbCwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiBp
bmtPdmVyZmxvdywgRXhwYW5zaW9uLCBzdGQ6Om9wdGlvbmFsPFRleHQ+ID0gc3RkOjpudWxsb3B0
LCBib29sIGhhc0NvbnRlbnQgPSB0cnVlLCBib29sIGlzRnVsbHlUcnVuY2F0ZWQgPSBmYWxzZSwg
T3B0aW9uU2V0PFBvc2l0aW9uV2l0aGluSW5saW5lTGV2ZWxCb3g+ID0geyB9KTsKKyAgICBCb3go
c2l6ZV90IGxpbmVJbmRleCwgVHlwZSwgY29uc3QgTGF5b3V0OjpCb3gmLCBVQmlEaUxldmVsLCBj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmIGlua092ZXJmbG93LCBFeHBhbnNpb24s
IHN0ZDo6b3B0aW9uYWw8VGV4dD4gPSBzdGQ6Om51bGxvcHQsIGJvb2wgaGFzQ29udGVudCA9IHRy
dWUsIE9wdGlvblNldDxQb3NpdGlvbldpdGhpbklubGluZUxldmVsQm94PiA9IHsgfSk7CiAKICAg
ICBib29sIGlzVGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBUeXBlOjpUZXh0IHx8IGlz
V29yZFNlcGFyYXRvcigpOyB9CiAgICAgYm9vbCBpc1dvcmRTZXBhcmF0b3IoKSBjb25zdCB7IHJl
dHVybiBtX3R5cGUgPT0gVHlwZTo6V29yZFNlcGFyYXRvcjsgfQpAQCAtMTI0LDExICsxMjYsMTIg
QEAgc3RydWN0IEJveCB7CiAgICAgICAgIG1fdW5mbGlwcGVkVmlzdWFsUmVjdC5tb3ZlKHsgb2Zm
c2V0LCB7IH0gfSk7CiAgICAgICAgIG1faW5rT3ZlcmZsb3cubW92ZSh7IG9mZnNldCwgeyB9IH0p
OwogICAgIH0KKwogICAgIHZvaWQgYWRqdXN0SW5rT3ZlcmZsb3coY29uc3QgRmxvYXRSZWN0JiBj
aGlsZEJvcmRlckJveCkgeyByZXR1cm4gbV9pbmtPdmVyZmxvdy51bml0ZUV2ZW5JZkVtcHR5KGNo
aWxkQm9yZGVyQm94KTsgfQotICAgIHZvaWQgc2V0TGVmdChmbG9hdCBweXNpY2FsTGVmdCkKKyAg
ICB2b2lkIHNldExlZnQoZmxvYXQgcGh5c2ljYWxMZWZ0KQogICAgIHsKLSAgICAgICAgYXV0byBv
ZmZzZXQgPSBweXNpY2FsTGVmdCAtIGxlZnQoKTsKLSAgICAgICAgbV91bmZsaXBwZWRWaXN1YWxS
ZWN0LnNldFgocHlzaWNhbExlZnQpOworICAgICAgICBhdXRvIG9mZnNldCA9IHBoeXNpY2FsTGVm
dCAtIGxlZnQoKTsKKyAgICAgICAgbV91bmZsaXBwZWRWaXN1YWxSZWN0LnNldFgocGh5c2ljYWxM
ZWZ0KTsKICAgICAgICAgbV9pbmtPdmVyZmxvdy5zZXRYKG1faW5rT3ZlcmZsb3cueCgpICsgb2Zm
c2V0KTsKICAgICB9CiAgICAgdm9pZCBzZXRSaWdodChmbG9hdCBwaHlzaWNhbFJpZ2h0KQpAQCAt
MTU1LDYgKzE1OCw3IEBAIHN0cnVjdCBCb3ggewogICAgICAgICBtX2lua092ZXJmbG93ID0gaW5r
T3ZlcmZsb3c7CiAgICAgfQogICAgIHZvaWQgc2V0SGFzQ29udGVudCgpIHsgbV9oYXNDb250ZW50
ID0gdHJ1ZTsgfQorICAgIHZvaWQgc2V0SXNGdWxseVRydW5jYXRlZCgpIHsgbV9pc0Z1bGx5VHJ1
bmNhdGVkID0gdHJ1ZTsgfQogCiAgICAgc3RkOjpvcHRpb25hbDxUZXh0PiYgdGV4dCgpIHsgcmV0
dXJuIG1fdGV4dDsgfQogICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8VGV4dD4mIHRleHQoKSBjb25z
dCB7IHJldHVybiBtX3RleHQ7IH0KQEAgLTE5Miw3ICsxOTYsNyBAQCBwcml2YXRlOgogICAgIHN0
ZDo6b3B0aW9uYWw8VGV4dD4gbV90ZXh0OwogfTsKIAotaW5saW5lIEJveDo6Qm94KHNpemVfdCBs
aW5lSW5kZXgsIFR5cGUgdHlwZSwgY29uc3QgTGF5b3V0OjpCb3gmIGxheW91dEJveCwgVUJpRGlM
ZXZlbCBiaWRpTGV2ZWwsIGNvbnN0IEZsb2F0UmVjdCYgcGh5c2ljYWxSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIGlua092ZXJmbG93LCBFeHBhbnNpb24gZXhwYW5zaW9uLCBzdGQ6Om9wdGlvbmFsPFRl
eHQ+IHRleHQsIGJvb2wgaGFzQ29udGVudCwgYm9vbCBpc0Z1bGx5VHJ1bmNhdGVkLCBPcHRpb25T
ZXQ8UG9zaXRpb25XaXRoaW5JbmxpbmVMZXZlbEJveD4gcG9zaXRpb25XaXRoaW5JbmxpbmVMZXZl
bEJveCkKK2lubGluZSBCb3g6OkJveChzaXplX3QgbGluZUluZGV4LCBUeXBlIHR5cGUsIGNvbnN0
IExheW91dDo6Qm94JiBsYXlvdXRCb3gsIFVCaURpTGV2ZWwgYmlkaUxldmVsLCBjb25zdCBGbG9h
dFJlY3QmIHBoeXNpY2FsUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBpbmtPdmVyZmxvdywgRXhwYW5z
aW9uIGV4cGFuc2lvbiwgc3RkOjpvcHRpb25hbDxUZXh0PiB0ZXh0LCBib29sIGhhc0NvbnRlbnQs
IE9wdGlvblNldDxQb3NpdGlvbldpdGhpbklubGluZUxldmVsQm94PiBwb3NpdGlvbldpdGhpbklu
bGluZUxldmVsQm94KQogICAgIDogbV9saW5lSW5kZXgobGluZUluZGV4KQogICAgICwgbV90eXBl
KHR5cGUpCiAgICAgLCBtX2xheW91dEJveChsYXlvdXRCb3gpCkBAIC0yMDIsMTYgKzIwNiwxNCBA
QCBpbmxpbmUgQm94OjpCb3goc2l6ZV90IGxpbmVJbmRleCwgVHlwZSB0eXBlLCBjb25zdCBMYXlv
dXQ6OkJveCYgbGF5b3V0Qm94LCBVQmlEaQogICAgICwgbV9oYXNDb250ZW50KGhhc0NvbnRlbnQp
CiAgICAgLCBtX2lzRmlyc3RGb3JMYXlvdXRCb3gocG9zaXRpb25XaXRoaW5JbmxpbmVMZXZlbEJv
eC5jb250YWlucyhQb3NpdGlvbldpdGhpbklubGluZUxldmVsQm94OjpGaXJzdCkpCiAgICAgLCBt
X2lzTGFzdEZvckxheW91dEJveChwb3NpdGlvbldpdGhpbklubGluZUxldmVsQm94LmNvbnRhaW5z
KFBvc2l0aW9uV2l0aGluSW5saW5lTGV2ZWxCb3g6Okxhc3QpKQotICAgICwgbV9pc0Z1bGx5VHJ1
bmNhdGVkKGlzRnVsbHlUcnVuY2F0ZWQpCiAgICAgLCBtX2V4cGFuc2lvbihleHBhbnNpb24pCiAg
ICAgLCBtX3RleHQodGV4dCkKIHsKIH0KIAotaW5saW5lIEJveDo6VGV4dDo6VGV4dChzaXplX3Qg
c3RhcnQsIHNpemVfdCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxDb250ZW50LCBTdHJp
bmcgYWRqdXN0ZWRDb250ZW50VG9SZW5kZXIsIGJvb2wgaGFzSHlwaGVuLCBzdGQ6Om9wdGlvbmFs
PHNpemVfdD4gcGFydGlhbGx5VmlzaWJsZUNvbnRlbnRMZW5ndGgpCitpbmxpbmUgQm94OjpUZXh0
OjpUZXh0KHNpemVfdCBzdGFydCwgc2l6ZV90IGxlbmd0aCwgY29uc3QgU3RyaW5nJiBvcmlnaW5h
bENvbnRlbnQsIFN0cmluZyBhZGp1c3RlZENvbnRlbnRUb1JlbmRlciwgYm9vbCBoYXNIeXBoZW4p
CiAgICAgOiBtX3N0YXJ0KHN0YXJ0KQogICAgICwgbV9sZW5ndGgobGVuZ3RoKQotICAgICwgbV9w
YXJ0aWFsbHlWaXNpYmxlQ29udGVudExlbmd0aChwYXJ0aWFsbHlWaXNpYmxlQ29udGVudExlbmd0
aCkKICAgICAsIG1faGFzSHlwaGVuKGhhc0h5cGhlbikKICAgICAsIG1fb3JpZ2luYWxDb250ZW50
KG9yaWdpbmFsQ29udGVudCkKICAgICAsIG1fYWRqdXN0ZWRDb250ZW50VG9SZW5kZXIoYWRqdXN0
ZWRDb250ZW50VG9SZW5kZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlDb250ZW50QnVpbGRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9k
aXNwbGF5L0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5jcHAKaW5kZXggYWQ5OWU1N2JhNzBh
Li4yY2IxOWVjNGIxY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9k
aXNwbGF5L0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5jcHAKQEAgLTIyMiw5ICsyMjIsNiBA
QCB2b2lkIElubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6YXBwZW5kVGV4dERpc3BsYXlCb3go
Y29uc3QgTGluZTo6UnVuJiBsaW5lUnVuLAogICAgIGF1dG8gYWRqdXN0ZWRDb250ZW50VG9SZW5k
ZXIgPSBbJl0gewogICAgICAgICByZXR1cm4gdGV4dC0+bmVlZHNIeXBoZW4gPyBtYWtlU3RyaW5n
KFN0cmluZ1ZpZXcoY29udGVudCkuc3Vic3RyaW5nKHRleHQtPnN0YXJ0LCB0ZXh0LT5sZW5ndGgp
LCBzdHlsZS5oeXBoZW5TdHJpbmcoKSkgOiBTdHJpbmcoKTsKICAgICB9OwotICAgIGF1dG8gaXNG
dWxseVRydW5jYXRlZCA9IGxpbmVSdW4uaXNUcnVuY2F0ZWQoKSAmJiAhdGV4dC0+cGFydGlhbGx5
VmlzaWJsZUNvbnRlbnQ7Ci0gICAgYXV0byBwYXJ0aWFsbHlWaXNpYmxlQ29udGVudExlbmd0aCA9
ICFpc0Z1bGx5VHJ1bmNhdGVkICYmIHRleHQtPnBhcnRpYWxseVZpc2libGVDb250ZW50ID8gc3Rk
OjptYWtlX29wdGlvbmFsKHRleHQtPnBhcnRpYWxseVZpc2libGVDb250ZW50LT5sZW5ndGgpOiBz
dGQ6Om51bGxvcHQ7Ci0KICAgICBib3hlcy5hcHBlbmQoeyBtX2xpbmVJbmRleAogICAgICAgICAs
IGxpbmVSdW4uaXNXb3JkU2VwYXJhdG9yKCkgPyBJbmxpbmVEaXNwbGF5OjpCb3g6OlR5cGU6Oldv
cmRTZXBhcmF0b3IgOiBJbmxpbmVEaXNwbGF5OjpCb3g6OlR5cGU6OlRleHQKICAgICAgICAgLCBp
bmxpbmVUZXh0Qm94CkBAIC0yMzIsOSArMjI5LDggQEAgdm9pZCBJbmxpbmVEaXNwbGF5Q29udGVu
dEJ1aWxkZXI6OmFwcGVuZFRleHREaXNwbGF5Qm94KGNvbnN0IExpbmU6OlJ1biYgbGluZVJ1biwK
ICAgICAgICAgLCB0ZXh0UnVuUmVjdAogICAgICAgICAsIGlua092ZXJmbG93KCkKICAgICAgICAg
LCBsaW5lUnVuLmV4cGFuc2lvbigpCi0gICAgICAgICwgSW5saW5lRGlzcGxheTo6Qm94OjpUZXh0
IHsgdGV4dC0+c3RhcnQsIHRleHQtPmxlbmd0aCwgY29udGVudCwgYWRqdXN0ZWRDb250ZW50VG9S
ZW5kZXIoKSwgdGV4dC0+bmVlZHNIeXBoZW4sIHBhcnRpYWxseVZpc2libGVDb250ZW50TGVuZ3Ro
IH0KKyAgICAgICAgLCBJbmxpbmVEaXNwbGF5OjpCb3g6OlRleHQgeyB0ZXh0LT5zdGFydCwgdGV4
dC0+bGVuZ3RoLCBjb250ZW50LCBhZGp1c3RlZENvbnRlbnRUb1JlbmRlcigpLCB0ZXh0LT5uZWVk
c0h5cGhlbiB9CiAgICAgICAgICwgdHJ1ZQotICAgICAgICAsIGlzRnVsbHlUcnVuY2F0ZWQKICAg
ICAgICAgLCB7IH0KICAgICB9KTsKIH0KQEAgLTI5OSw3ICsyOTUsNiBAQCB2b2lkIElubGluZURp
c3BsYXlDb250ZW50QnVpbGRlcjo6YXBwZW5kQXRvbWljSW5saW5lTGV2ZWxEaXNwbGF5Qm94KGNv
bnN0IExpbmU6OgogICAgICAgICAsIGxpbmVSdW4uZXhwYW5zaW9uKCkKICAgICAgICAgLCB7IH0K
ICAgICAgICAgLCB0cnVlCi0gICAgICAgICwgbGluZVJ1bi5pc1RydW5jYXRlZCgpCiAgICAgfSk7
CiAgICAgLy8gTm90ZSB0aGF0IGlubGluZSBib3hlcyBhcmUgcmVsYXRpdmUgdG8gdGhlIGxpbmUg
YW5kIHRoZWlyIHRvcCBwb3NpdGlvbiBjYW4gYmUgbmVnYXRpdmUuCiAgICAgLy8gQXRvbWljIGlu
bGluZSBib3hlcyBhcmUgYWxsIHNldC4gVGhlaXIgbWFyZ2luL2JvcmRlci9jb250ZW50IGJveCBn
ZW9tZXRyaWVzIGFyZSBhbHJlYWR5IGNvbXB1dGVkLiBXZSBqdXN0IGhhdmUgdG8gcG9zaXRpb24g
dGhlbSBoZXJlLgpAQCAtMzY4LDcgKzM2Myw2IEBAIHZvaWQgSW5saW5lRGlzcGxheUNvbnRlbnRC
dWlsZGVyOjphcHBlbmRJbmxpbmVCb3hEaXNwbGF5Qm94KGNvbnN0IExpbmU6OlJ1biYgbGluCiAg
ICAgICAgICwgeyB9CiAgICAgICAgICwgeyB9CiAgICAgICAgICwgaW5saW5lQm94Lmhhc0NvbnRl
bnQoKQotICAgICAgICAsIGxpbmVSdW4uaXNUcnVuY2F0ZWQoKQogICAgICAgICAsIGlzRmlyc3RM
YXN0Qm94KGlubGluZUJveCkKICAgICB9KTsKIH0KQEAgLTQwNSw3ICszOTksNiBAQCB2b2lkIElu
bGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6YXBwZW5kU3Bhbm5pbmdJbmxpbmVCb3hEaXNwbGF5
Qm94KGNvbnN0IExpbmU6OgogICAgICAgICAsIHsgfQogICAgICAgICAsIHsgfQogICAgICAgICAs
IGlubGluZUJveC5oYXNDb250ZW50KCkKLSAgICAgICAgLCBsaW5lUnVuLmlzVHJ1bmNhdGVkKCkK
ICAgICAgICAgLCBpc0ZpcnN0TGFzdEJveChpbmxpbmVCb3gpCiAgICAgfSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNw
bGF5L0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1
aWxkZXIuaAppbmRleCBjZmUxMzQyYTUxZjUuLmM3Mzk3M2NiOWRmMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9Jbmxp
bmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlDb250ZW50QnVpbGRl
ci5oCkBAIC01NCw2ICs1NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwcm9jZXNzRmxvYXRCb3hl
cyhjb25zdCBMaW5lQnVpbGRlcjo6TGluZUNvbnRlbnQmKTsKICAgICB2b2lkIGNvbGxlY3RJbmtP
dmVyZmxvd0ZvcklubGluZUJveGVzKERpc3BsYXlCb3hlcyYpOwogICAgIHZvaWQgY29sbGVjdElu
a092ZXJmbG93Rm9yVGV4dERlY29yYXRpb25zKERpc3BsYXlCb3hlcyYsIGNvbnN0IElubGluZURp
c3BsYXk6OkxpbmUmKTsKKyAgICB2b2lkIHRydW5jYXRlRm9yRWxsaXBzaXNQb2xpY3koTGluZUJ1
aWxkZXI6OkxpbmVFbmRpbmdFbGxpcHNpc1BvbGljeSwgY29uc3QgTGluZUJ1aWxkZXI6OkxpbmVD
b250ZW50JiwgY29uc3QgSW5saW5lRGlzcGxheTo6TGluZSYsIERpc3BsYXlCb3hlcyYpOwogCiAg
ICAgdm9pZCBhcHBlbmRUZXh0RGlzcGxheUJveChjb25zdCBMaW5lOjpSdW4mLCBjb25zdCBJbmxp
bmVSZWN0JiwgRGlzcGxheUJveGVzJik7CiAgICAgdm9pZCBhcHBlbmRTb2Z0TGluZUJyZWFrRGlz
cGxheUJveChjb25zdCBMaW5lOjpSdW4mLCBjb25zdCBJbmxpbmVSZWN0JiwgRGlzcGxheUJveGVz
Jik7CkBAIC03Nyw2ICs3OCw3IEBAIHByaXZhdGU6CiAgICAgSW5saW5lTGF5b3V0VW5pdCBvdXRz
aWRlTGlzdE1hcmtlclZpc3VhbFBvc2l0aW9uKGNvbnN0IEVsZW1lbnRCb3gmLCBjb25zdCBJbmxp
bmVEaXNwbGF5OjpMaW5lJikgY29uc3Q7CiAKICAgICBjb25zdCBFbGVtZW50Qm94JiByb290KCkg
Y29uc3QgeyByZXR1cm4gZm9ybWF0dGluZ0NvbnRleHQoKS5yb290KCk7IH0KKyAgICBjb25zdCBS
ZW5kZXJTdHlsZSYgcm9vdFN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9saW5lSW5kZXggPyByb290
KCkuc3R5bGUoKSA6IHJvb3QoKS5maXJzdExpbmVTdHlsZSgpOyB9CiAgICAgY29uc3QgSW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQmIGZvcm1hdHRpbmdDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9m
b3JtYXR0aW5nQ29udGV4dDsgfQogICAgIGNvbnN0IElubGluZUZvcm1hdHRpbmdHZW9tZXRyeSYg
Zm9ybWF0dGluZ0dlb21ldHJ5KCkgY29uc3QgeyByZXR1cm4gZm9ybWF0dGluZ0NvbnRleHQoKS5m
b3JtYXR0aW5nR2VvbWV0cnkoKTsgfQogICAgIElubGluZUZvcm1hdHRpbmdTdGF0ZSYgZm9ybWF0
dGluZ1N0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9mb3JtYXR0aW5nU3RhdGU7IH0gCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNw
bGF5L0lubGluZURpc3BsYXlMaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlMaW5lLmgKaW5kZXggNmI2YTRl
ODgyMGFiLi40MmU0ODVjNjg4YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUxpbmUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5
L0lubGluZURpc3BsYXlMaW5lLmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgICAgICBm
bG9hdCB0b3AgeyAwIH07CiAgICAgICAgIGZsb2F0IGJvdHRvbSB7IDAgfTsKICAgICB9OwotICAg
IExpbmUoY29uc3QgRmxvYXRSZWN0JiBsaW5lQm94TG9naWNhbFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgbGluZUJveFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc2Nyb2xsYWJsZU92ZXJmbG93LCBFbmNs
b3NpbmdUb3BBbmRCb3R0b20sIGZsb2F0IGFsaWdtZW50QmFzZWxpbmUsIEZvbnRCYXNlbGluZSBi
YXNlbGluZVR5cGUsIGZsb2F0IGNvbnRlbnRMb2dpY2FsTGVmdCwgZmxvYXQgY29udGVudExvZ2lj
YWxMZWZ0SWdub3JpbmdJbmxpbmVEaXJlY3Rpb24sIGZsb2F0IGNvbnRlbnRMb2dpY2FsV2lkdGgs
IGJvb2wgaXNIb3Jpem9udGFsLCBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gZWxsaXBzaXNWaXN1
YWxSZWN0KTsKKyAgICBMaW5lKGNvbnN0IEZsb2F0UmVjdCYgbGluZUJveExvZ2ljYWxSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIGxpbmVCb3hSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNjcm9sbGFibGVP
dmVyZmxvdywgRW5jbG9zaW5nVG9wQW5kQm90dG9tLCBmbG9hdCBhbGlnbWVudEJhc2VsaW5lLCBG
b250QmFzZWxpbmUgYmFzZWxpbmVUeXBlLCBmbG9hdCBjb250ZW50TG9naWNhbExlZnQsIGZsb2F0
IGNvbnRlbnRMb2dpY2FsTGVmdElnbm9yaW5nSW5saW5lRGlyZWN0aW9uLCBmbG9hdCBjb250ZW50
TG9naWNhbFdpZHRoLCBib29sIGlzSG9yaXpvbnRhbCk7CiAKICAgICBmbG9hdCBsZWZ0KCkgY29u
c3QgeyByZXR1cm4gbV9saW5lQm94UmVjdC54KCk7IH0KICAgICBmbG9hdCByaWdodCgpIGNvbnN0
IHsgcmV0dXJuIG1fbGluZUJveFJlY3QubWF4WCgpOyB9CkBAIC02Nyw2ICs2Nyw3IEBAIHB1Ymxp
YzoKICAgICBmbG9hdCBjb250ZW50TG9naWNhbFdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9jb250
ZW50TG9naWNhbFdpZHRoOyB9CiAKICAgICB2b2lkIG1vdmVWZXJ0aWNhbGx5KGZsb2F0IG9mZnNl
dCkgeyBtX2xpbmVCb3hSZWN0Lm1vdmUoeyB7IH0sIG9mZnNldCB9KTsgfQorICAgIHZvaWQgc2V0
RWxsaXBzaXNWaXN1YWxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgZWxsaXBzaXNWaXN1YWxSZWN0KSB7
IG1fZWxsaXBzaXNWaXN1YWxSZWN0ID0gZWxsaXBzaXNWaXN1YWxSZWN0OyB9CiAKIHByaXZhdGU6
CiAgICAgLy8gVGhpcyBpcyBsaW5lIGJveCBnZW9tZXRyeSAoc2VlIGh0dHBzOi8vd3d3LnczLm9y
Zy9UUi9jc3MtaW5saW5lLTMvI2xpbmUtYm94KS4KQEAgLTg4LDcgKzg5LDcgQEAgcHJpdmF0ZToK
ICAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gbV9lbGxpcHNpc1Zpc3VhbFJlY3QgeyB9Owog
fTsKIAotaW5saW5lIExpbmU6OkxpbmUoY29uc3QgRmxvYXRSZWN0JiBsaW5lQm94TG9naWNhbFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgbGluZUJveFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc2Nyb2xs
YWJsZU92ZXJmbG93LCBFbmNsb3NpbmdUb3BBbmRCb3R0b20gZW5jbG9zaW5nTG9naWNhbFRvcEFu
ZEJvdHRvbSwgZmxvYXQgYWxpZ21lbnRCYXNlbGluZSwgRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlw
ZSwgZmxvYXQgY29udGVudExvZ2ljYWxMZWZ0LCBmbG9hdCBjb250ZW50TG9naWNhbExlZnRJZ25v
cmluZ0lubGluZURpcmVjdGlvbiwgZmxvYXQgY29udGVudExvZ2ljYWxXaWR0aCwgYm9vbCBpc0hv
cml6b250YWwsIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBlbGxpcHNpc1Zpc3VhbFJlY3QpCitp
bmxpbmUgTGluZTo6TGluZShjb25zdCBGbG9hdFJlY3QmIGxpbmVCb3hMb2dpY2FsUmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBsaW5lQm94UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzY3JvbGxhYmxlT3Zl
cmZsb3csIEVuY2xvc2luZ1RvcEFuZEJvdHRvbSBlbmNsb3NpbmdMb2dpY2FsVG9wQW5kQm90dG9t
LCBmbG9hdCBhbGlnbWVudEJhc2VsaW5lLCBGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlLCBmbG9h
dCBjb250ZW50TG9naWNhbExlZnQsIGZsb2F0IGNvbnRlbnRMb2dpY2FsTGVmdElnbm9yaW5nSW5s
aW5lRGlyZWN0aW9uLCBmbG9hdCBjb250ZW50TG9naWNhbFdpZHRoLCBib29sIGlzSG9yaXpvbnRh
bCkKICAgICA6IG1fbGluZUJveFJlY3QobGluZUJveFJlY3QpCiAgICAgLCBtX2xpbmVCb3hMb2dp
Y2FsUmVjdChsaW5lQm94TG9naWNhbFJlY3QpCiAgICAgLCBtX3Njcm9sbGFibGVPdmVyZmxvdyhz
Y3JvbGxhYmxlT3ZlcmZsb3cpCkBAIC05OSw3ICsxMDAsNiBAQCBpbmxpbmUgTGluZTo6TGluZShj
b25zdCBGbG9hdFJlY3QmIGxpbmVCb3hMb2dpY2FsUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBsaW5l
Qm94UgogICAgICwgbV9jb250ZW50TG9naWNhbFdpZHRoKGNvbnRlbnRMb2dpY2FsV2lkdGgpCiAg
ICAgLCBtX2Jhc2VsaW5lVHlwZShiYXNlbGluZVR5cGUpCiAgICAgLCBtX2lzSG9yaXpvbnRhbChp
c0hvcml6b250YWwpCi0gICAgLCBtX2VsbGlwc2lzVmlzdWFsUmVjdChlbGxpcHNpc1Zpc3VhbFJl
Y3QpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5s
aW5lRGlzcGxheUxpbmVCdWlsZGVyLmNwcAppbmRleCAzYmYxMjZkNWFmMDEuLmYyNzJlNjRiOTdl
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlz
cGxheUxpbmVCdWlsZGVyLmNwcApAQCAtMzMsNiArMzMsMjIgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIG5hbWVzcGFjZSBMYXlvdXQgewogCitzdGF0aWMgSW5saW5lUmVjdCBmbGlwTG9naWNhbExp
bmVSZWN0VG9WaXN1YWxGb3JXcml0aW5nTW9kZShjb25zdCBJbmxpbmVSZWN0JiBsaW5lTG9naWNh
bFJlY3QsIFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKQoreworICAgIHN3aXRjaCAod3JpdGluZ01v
ZGUpIHsKKyAgICBjYXNlIFdyaXRpbmdNb2RlOjpUb3BUb0JvdHRvbToKKyAgICAgICAgcmV0dXJu
IGxpbmVMb2dpY2FsUmVjdDsKKyAgICBjYXNlIFdyaXRpbmdNb2RlOjpMZWZ0VG9SaWdodDoKKyAg
ICBjYXNlIFdyaXRpbmdNb2RlOjpSaWdodFRvTGVmdDoKKyAgICAgICAgLy8gU2VlIElubGluZUZv
cm1hdHRpbmdHZW9tZXRyeSBmb3IgbW9yZSBpbmZvLgorICAgICAgICByZXR1cm4geyBsaW5lTG9n
aWNhbFJlY3QubGVmdCgpLCBsaW5lTG9naWNhbFJlY3QudG9wKCksIGxpbmVMb2dpY2FsUmVjdC5o
ZWlnaHQoKSwgbGluZUxvZ2ljYWxSZWN0LndpZHRoKCkgfTsKKyAgICBkZWZhdWx0OgorICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVy
biBsaW5lTG9naWNhbFJlY3Q7Cit9CisKIElubGluZURpc3BsYXlMaW5lQnVpbGRlcjo6SW5saW5l
RGlzcGxheUxpbmVCdWlsZGVyKGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0JiBpbmxpbmVG
b3JtYXR0aW5nQ29udGV4dCkKICAgICA6IG1faW5saW5lRm9ybWF0dGluZ0NvbnRleHQoaW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQpCiB7CkBAIC0xMzAsNTIgKzE0NiwxNDcgQEAgSW5saW5lRGlzcGxh
eTo6TGluZSBJbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXI6OmJ1aWxkKGNvbnN0IExpbmVCdWlsZGVy
OjpMaW5lQ29udGUKICAgICAgICAgLCBjb250ZW50VmlzdWFsT2Zmc2V0SW5JbmxpbmVEaXJlY3Rp
b24KICAgICAgICAgLCByb290SW5saW5lQm94LmxvZ2ljYWxXaWR0aCgpCiAgICAgICAgICwgbGlu
ZUJveC5pc0hvcml6b250YWwoKQotICAgICAgICAsIHRyYWlsaW5nRWxsaXBzaXNSZWN0KGxpbmVD
b250ZW50LCBsaW5lQm94LCBsaW5lQm94VmlzdWFsUmVjdEluSW5saW5lRGlyZWN0aW9uKQogICAg
IH07CiB9CiAKLS8vIEZJWE1FOiBmb3IgYmlkaSBjb250ZW50LCB3ZSBtYXkgbmVlZCB0byBydW4g
dGhpcyBjb2RlIGFmdGVyIHdlIGZpbmlzaGVkIGNvbnN0cnVjdGluZyB0aGUgZGlzcGxheSBib3hl
cwotLy8gYW5kIGFsc28gcnVuIHRydW5jYXRpb24gb24gdGhlICh2aXN1YWwpZGlzcGxheSBib3gg
bGlzdCBhbmQgbm90IG9uIHRoZSAobG9naWNhbClsaW5lIHJ1bnMuCi1zdGQ6Om9wdGlvbmFsPEZs
b2F0UmVjdD4gSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyOjp0cmFpbGluZ0VsbGlwc2lzUmVjdChj
b25zdCBMaW5lQnVpbGRlcjo6TGluZUNvbnRlbnQmIGxpbmVDb250ZW50LCBjb25zdCBMaW5lQm94
JiBsaW5lQm94LCBjb25zdCBGbG9hdFJlY3QmIGxpbmVCb3hWaXN1YWxSZWN0KSBjb25zdAorc3Rh
dGljIGZsb2F0IHRydW5jYXRlT3ZlcmZsb3dpbmdEaXNwbGF5Qm94ZXMoY29uc3QgSW5saW5lRGlz
cGxheTo6TGluZSYgZGlzcGxheUxpbmUsIERpc3BsYXlCb3hlcyYgYm94ZXMsIGZsb2F0IGVsbGlw
c2lzV2lkdGgsIGNvbnN0IFJlbmRlclN0eWxlJiByb290U3R5bGUpCiB7Ci0gICAgaWYgKCFsaW5l
Q29udGVudC5saW5lTmVlZHNUcmFpbGluZ0VsbGlwc2lzKQotICAgICAgICByZXR1cm4geyB9Owor
ICAgIC8vIFdlIGdvdHRhIHRydW5jYXRlIHNvbWUgcnVucy4KKyAgICBBU1NFUlQoZGlzcGxheUxp
bmUuY29udGVudExvZ2ljYWxXaWR0aCgpICsgZWxsaXBzaXNXaWR0aCA+IGRpc3BsYXlMaW5lLmxp
bmVCb3hMb2dpY2FsUmVjdCgpLndpZHRoKCkpOworICAgIGF1dG8gaXNMZWZ0VG9SaWdodERpcmVj
dGlvbiA9IHJvb3RTdHlsZS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCk7CisgICAgYXV0byBpc0hv
cml6b250YWwgPSByb290U3R5bGUuaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKTsKKyAgICBhdXRv
IGxlZnQgPSBbJl0gKGF1dG8mIGRpc3BsYXlCb3gpIHsKKyAgICAgICAgcmV0dXJuIGlzSG9yaXpv
bnRhbCA/IGRpc3BsYXlCb3gubGVmdCgpIDogZGlzcGxheUJveC50b3AoKTsKKyAgICB9OworICAg
IGF1dG8gcmlnaHQgPSBbJl0gKGF1dG8mIGRpc3BsYXlCb3gpIHsKKyAgICAgICAgcmV0dXJuIGlz
SG9yaXpvbnRhbCA/IGRpc3BsYXlCb3gucmlnaHQoKSA6IGRpc3BsYXlCb3guYm90dG9tKCk7Cisg
ICAgfTsKKyAgICBhdXRvIHdpZHRoID0gWyZdIChhdXRvJiBkaXNwbGF5Qm94KSB7CisgICAgICAg
IHJldHVybiBpc0hvcml6b250YWwgPyBkaXNwbGF5Qm94LndpZHRoKCkgOiBkaXNwbGF5Qm94Lmhl
aWdodCgpOworICAgIH07CisgICAgYXV0byB0cnVuY2F0ZSA9IFsmXSAoYXV0byYgZGlzcGxheUJv
eCwgYXV0byB2aXNpYmxlV2lkdGgsIGF1dG8gY2FuRnVsbHlUcnVuY2F0ZSkgeworICAgICAgICBp
ZiAoZGlzcGxheUJveC5pc1RleHQoKSkgeworICAgICAgICAgICAgaWYgKCF2aXNpYmxlV2lkdGgg
JiYgY2FuRnVsbHlUcnVuY2F0ZSkgeworICAgICAgICAgICAgICAgIGRpc3BsYXlCb3guc2V0SXNG
dWxseVRydW5jYXRlZCgpOworICAgICAgICAgICAgICAgIHJldHVybiBpc0xlZnRUb1JpZ2h0RGly
ZWN0aW9uID8gbGVmdChkaXNwbGF5Qm94KSA6IHJpZ2h0KGRpc3BsYXlCb3gpOworICAgICAgICAg
ICAgfQogCi0gICAgYXV0byBlbGxpcHNpc1N0YXJ0ID0gMC5mOwotICAgIGZvciAoYXV0byYgbGlu
ZVJ1biA6IGxpbmVDb250ZW50LnJ1bnMpIHsKLSAgICAgICAgaWYgKGxpbmVSdW4uaXNJbmxpbmVC
b3goKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAobGluZVJ1bi5pc1RydW5j
YXRlZCgpKSB7Ci0gICAgICAgICAgICBpZiAobGluZVJ1bi5pc1RleHQoKSAmJiBsaW5lUnVuLnRl
eHRDb250ZW50KCktPnBhcnRpYWxseVZpc2libGVDb250ZW50KQotICAgICAgICAgICAgICAgIGVs
bGlwc2lzU3RhcnQgPSBzdGQ6Om1heChlbGxpcHNpc1N0YXJ0LCBsaW5lUnVuLmxvZ2ljYWxMZWZ0
KCkgKyBsaW5lUnVuLnRleHRDb250ZW50KCktPnBhcnRpYWxseVZpc2libGVDb250ZW50LT53aWR0
aCk7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGF1dG8mIGlubGluZVRleHRCb3gg
PSBkb3duY2FzdDxJbmxpbmVUZXh0Qm94PihkaXNwbGF5Qm94LmxheW91dEJveCgpKTsKKyAgICAg
ICAgICAgIGF1dG8mIHRleHRDb250ZW50ID0gZGlzcGxheUJveC50ZXh0KCk7CisgICAgICAgICAg
ICBhdXRvIGxlZnRTaWRlID0gVGV4dFV0aWw6OmJyZWFrV29yZChpbmxpbmVUZXh0Qm94LCB0ZXh0
Q29udGVudC0+c3RhcnQoKSwgdGV4dENvbnRlbnQtPmxlbmd0aCgpLCB3aWR0aChkaXNwbGF5Qm94
KSwgdmlzaWJsZVdpZHRoLCB7IH0sIGRpc3BsYXlCb3guc3R5bGUoKS5mb250Q2FzY2FkZSgpKTsK
KyAgICAgICAgICAgIGlmIChsZWZ0U2lkZS5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICB0ZXh0
Q29udGVudC0+c2V0UGFydGlhbGx5VmlzaWJsZUNvbnRlbnRMZW5ndGgobGVmdFNpZGUubGVuZ3Ro
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gaXNMZWZ0VG9SaWdodERpcmVjdGlvbiA/IGxlZnQo
ZGlzcGxheUJveCkgKyBsZWZ0U2lkZS5sb2dpY2FsV2lkdGggOiByaWdodChkaXNwbGF5Qm94KSAt
IGxlZnRTaWRlLmxvZ2ljYWxXaWR0aDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChj
YW5GdWxseVRydW5jYXRlKSB7CisgICAgICAgICAgICAgICAgZGlzcGxheUJveC5zZXRJc0Z1bGx5
VHJ1bmNhdGVkKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGlzTGVmdFRvUmlnaHREaXJlY3Rp
b24gPyBsZWZ0KGRpc3BsYXlCb3gpIDogcmlnaHQoZGlzcGxheUJveCk7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBhdXRvIGZpcnN0Q2hhcmFjdGVyTGVuZ3RoID0gVGV4dFV0aWw6OmZpcnN0
VXNlclBlcmNlaXZlZENoYXJhY3Rlckxlbmd0aChpbmxpbmVUZXh0Qm94LCB0ZXh0Q29udGVudC0+
c3RhcnQoKSwgdGV4dENvbnRlbnQtPmxlbmd0aCgpKTsKKyAgICAgICAgICAgIGF1dG8gZmlyc3RD
aGFyYWN0ZXJXaWR0aCA9IFRleHRVdGlsOjp3aWR0aChpbmxpbmVUZXh0Qm94LCBkaXNwbGF5Qm94
LnN0eWxlKCkuZm9udENhc2NhZGUoKSwgdGV4dENvbnRlbnQtPnN0YXJ0KCksIHRleHRDb250ZW50
LT5zdGFydCgpICsgZmlyc3RDaGFyYWN0ZXJMZW5ndGgsIHsgfSwgVGV4dFV0aWw6OlVzZVRyYWls
aW5nV2hpdGVzcGFjZU1lYXN1cmluZ09wdGltaXphdGlvbjo6Tm8pOworICAgICAgICAgICAgdGV4
dENvbnRlbnQtPnNldFBhcnRpYWxseVZpc2libGVDb250ZW50TGVuZ3RoKGZpcnN0Q2hhcmFjdGVy
TGVuZ3RoKTsKKyAgICAgICAgICAgIHJldHVybiBpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uID8gbGVm
dChkaXNwbGF5Qm94KSArIGZpcnN0Q2hhcmFjdGVyV2lkdGggOiByaWdodChkaXNwbGF5Qm94KSAt
IGZpcnN0Q2hhcmFjdGVyV2lkdGg7CiAgICAgICAgIH0KLSAgICAgICAgZWxsaXBzaXNTdGFydCA9
IHN0ZDo6bWF4KGVsbGlwc2lzU3RhcnQsIGxpbmVSdW4ubG9naWNhbFJpZ2h0KCkpOworICAgICAg
ICBpZiAoY2FuRnVsbHlUcnVuY2F0ZSkgeworICAgICAgICAgICAgLy8gQXRvbWljIGlubGluZSBs
ZXZlbCBib3hlcyBhcmUgbmV2ZXIgcGFydGlhbGx5IHRydW5jYXRlZC4KKyAgICAgICAgICAgIGRp
c3BsYXlCb3guc2V0SXNGdWxseVRydW5jYXRlZCgpOworICAgICAgICAgICAgcmV0dXJuIGlzTGVm
dFRvUmlnaHREaXJlY3Rpb24gPyBsZWZ0KGRpc3BsYXlCb3gpIDogcmlnaHQoZGlzcGxheUJveCk7
CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGlzTGVmdFRvUmlnaHREaXJlY3Rpb24gPyByaWdo
dChkaXNwbGF5Qm94KSA6IGxlZnQoZGlzcGxheUJveCk7CisgICAgfTsKKworICAgIC8vIFRoZSBs
b2dpY2FsbHkgZmlyc3QgY2hhcmFjdGVyIG9yIGF0b21pYyBpbmxpbmUtbGV2ZWwgZWxlbWVudCBv
biBhIGxpbmUgbXVzdCBiZSBjbGlwcGVkIHJhdGhlciB0aGFuIGVsbGlwc2VkLgorICAgIGF1dG8g
aXNGaXJzdENvbnRlbnRSdW4gPSB0cnVlOworICAgIGlmIChpc0xlZnRUb1JpZ2h0RGlyZWN0aW9u
KSB7CisgICAgICAgIGF1dG8gdmlzdWFsUmlnaHRGb3JDb250ZW50RW5kID0gc3RkOjptYXgoMC5m
LCByaWdodChkaXNwbGF5TGluZSkgLSBlbGxpcHNpc1dpZHRoKTsKKyAgICAgICAgYXV0byB0cnVu
Y2F0ZVJpZ2h0ID0gc3RkOjpvcHRpb25hbDxmbG9hdD4geyB9OworICAgICAgICBmb3IgKGF1dG8m
IGRpc3BsYXlCb3ggOiBib3hlcykgeworICAgICAgICAgICAgaWYgKGRpc3BsYXlCb3guaXNJbmxp
bmVCb3goKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGlmIChyaWdo
dChkaXNwbGF5Qm94KSA+IHZpc3VhbFJpZ2h0Rm9yQ29udGVudEVuZCkgeworICAgICAgICAgICAg
ICAgIGF1dG8gdHJ1bmNhdGVQb3NpdGlvbiA9IHRydW5jYXRlKGRpc3BsYXlCb3gsIHN0ZDo6bWF4
KDAuZiwgdmlzdWFsUmlnaHRGb3JDb250ZW50RW5kIC0gbGVmdChkaXNwbGF5Qm94KSksICFpc0Zp
cnN0Q29udGVudFJ1bik7CisgICAgICAgICAgICAgICAgdHJ1bmNhdGVSaWdodCA9IHRydW5jYXRl
UmlnaHQudmFsdWVfb3IodHJ1bmNhdGVQb3NpdGlvbik7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBpc0ZpcnN0Q29udGVudFJ1biA9IGZhbHNlOworICAgICAgICB9CisgICAgICAgIEFTU0VS
VCh0cnVuY2F0ZVJpZ2h0Lmhhc192YWx1ZSgpKTsKKyAgICAgICAgcmV0dXJuIHRydW5jYXRlUmln
aHQudmFsdWVfb3IoMC5mKTsKICAgICB9Ci0gICAgYXV0byBlbGxpcHNpc1dpZHRoID0gIWxpbmVC
b3gubGluZUluZGV4KCkgPyByb290KCkuZmlyc3RMaW5lU3R5bGUoKS5mb250Q2FzY2FkZSgpLndp
ZHRoKFRleHRVdGlsOjplbGxpcHNpc1RleHRSdW4oKSkgOiByb290KCkuc3R5bGUoKS5mb250Q2Fz
Y2FkZSgpLndpZHRoKFRleHRVdGlsOjplbGxpcHNpc1RleHRSdW4oKSk7Ci0gICAgYXV0byByb290
SW5saW5lQm94UmVjdCA9IGxpbmVCb3gubG9naWNhbFJlY3RGb3JSb290SW5saW5lQm94KCk7Ci0g
ICAgYXV0byBlbGxpcHNpc1JlY3QgPSBGbG9hdFJlY3QgeyBsaW5lQm94VmlzdWFsUmVjdC54KCkg
KyByb290SW5saW5lQm94UmVjdC5sZWZ0KCkgKyBlbGxpcHNpc1N0YXJ0LCBsaW5lQm94VmlzdWFs
UmVjdC55KCkgKyByb290SW5saW5lQm94UmVjdC50b3AoKSwgZWxsaXBzaXNXaWR0aCwgcm9vdElu
bGluZUJveFJlY3QuaGVpZ2h0KCkgfTsKIAotICAgIGlmIChyb290KCkuc3R5bGUoKS5pc0xlZnRU
b1JpZ2h0RGlyZWN0aW9uKCkpCi0gICAgICAgIHJldHVybiBlbGxpcHNpc1JlY3Q7Ci0gICAgZWxs
aXBzaXNSZWN0LnNldFgobGluZUJveFZpc3VhbFJlY3QubWF4WCgpIC0gKGVsbGlwc2lzU3RhcnQg
KyBlbGxpcHNpc1JlY3Qud2lkdGgoKSkpOwotICAgIHJldHVybiBlbGxpcHNpc1JlY3Q7CisgICAg
YXV0byB0cnVuY2F0ZUxlZnQgPSBzdGQ6Om9wdGlvbmFsPGZsb2F0PiB7IH07CisgICAgYXV0byB2
aXN1YWxMZWZ0Rm9yQ29udGVudEVuZCA9IHN0ZDo6bWF4KDAuZiwgbGVmdChkaXNwbGF5TGluZSkg
KyBlbGxpcHNpc1dpZHRoKTsKKyAgICBmb3IgKGF1dG8mIGRpc3BsYXlCb3ggOiBtYWtlUmV2ZXJz
ZWRSYW5nZShib3hlcykpIHsKKyAgICAgICAgaWYgKGRpc3BsYXlCb3guaXNJbmxpbmVCb3goKSkK
KyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAobGVmdChkaXNwbGF5Qm94KSA8IHZp
c3VhbExlZnRGb3JDb250ZW50RW5kKSB7CisgICAgICAgICAgICBhdXRvIHRydW5jYXRlUG9zaXRp
b24gPSB0cnVuY2F0ZShkaXNwbGF5Qm94LCBzdGQ6Om1heCgwLmYsIHJpZ2h0KGRpc3BsYXlCb3gp
IC0gdmlzdWFsTGVmdEZvckNvbnRlbnRFbmQpLCAhaXNGaXJzdENvbnRlbnRSdW4pOworICAgICAg
ICAgICAgdHJ1bmNhdGVMZWZ0ID0gdHJ1bmNhdGVMZWZ0LnZhbHVlX29yKHRydW5jYXRlUG9zaXRp
b24pOworICAgICAgICB9CisgICAgICAgIGlzRmlyc3RDb250ZW50UnVuID0gZmFsc2U7CisgICAg
fQorICAgIEFTU0VSVCh0cnVuY2F0ZUxlZnQuaGFzX3ZhbHVlKCkpOworICAgIHJldHVybiB0cnVu
Y2F0ZUxlZnQudmFsdWVfb3IoZWxsaXBzaXNXaWR0aCkgLSBlbGxpcHNpc1dpZHRoOwogfQogCi1J
bmxpbmVSZWN0IElubGluZURpc3BsYXlMaW5lQnVpbGRlcjo6ZmxpcExvZ2ljYWxMaW5lUmVjdFRv
VmlzdWFsRm9yV3JpdGluZ01vZGUoY29uc3QgSW5saW5lUmVjdCYgbGluZUxvZ2ljYWxSZWN0LCBX
cml0aW5nTW9kZSB3cml0aW5nTW9kZSkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBJ
bmxpbmVEaXNwbGF5TGluZUJ1aWxkZXI6OnRyYWlsaW5nRWxsaXBzaXNWaXN1YWxSZWN0QWZ0ZXJU
cnVuY2F0aW9uKExpbmVCdWlsZGVyOjpMaW5lRW5kaW5nRWxsaXBzaXNQb2xpY3kgbGluZUVuZGlu
Z0VsbGlwc2lzUG9saWN5LCBjb25zdCBJbmxpbmVEaXNwbGF5OjpMaW5lJiBkaXNwbGF5TGluZSwg
RGlzcGxheUJveGVzJiBkaXNwbGF5Qm94ZXMsIGJvb2wgaXNMYXN0TGluZVdpdGhJbmxpbmVDb250
ZW50KQogewotICAgIHN3aXRjaCAod3JpdGluZ01vZGUpIHsKLSAgICBjYXNlIFdyaXRpbmdNb2Rl
OjpUb3BUb0JvdHRvbToKLSAgICAgICAgcmV0dXJuIGxpbmVMb2dpY2FsUmVjdDsKLSAgICBjYXNl
IFdyaXRpbmdNb2RlOjpMZWZ0VG9SaWdodDoKLSAgICBjYXNlIFdyaXRpbmdNb2RlOjpSaWdodFRv
TGVmdDoKLSAgICAgICAgLy8gU2VlIElubGluZUZvcm1hdHRpbmdHZW9tZXRyeSBmb3IgbW9yZSBp
bmZvLgotICAgICAgICByZXR1cm4geyBsaW5lTG9naWNhbFJlY3QubGVmdCgpLCBsaW5lTG9naWNh
bFJlY3QudG9wKCksIGxpbmVMb2dpY2FsUmVjdC5oZWlnaHQoKSwgbGluZUxvZ2ljYWxSZWN0Lndp
ZHRoKCkgfTsKLSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgfQotICAgIHJldHVybiBsaW5lTG9naWNhbFJlY3Q7CisgICAgaWYg
KGRpc3BsYXlCb3hlcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBhdXRv
IGNvbnRlbnROZWVkc0VsbGlwc2lzID0gWyZdIHsKKyAgICAgICAgc3dpdGNoIChsaW5lRW5kaW5n
RWxsaXBzaXNQb2xpY3kpIHsKKyAgICAgICAgY2FzZSBMaW5lQnVpbGRlcjo6TGluZUVuZGluZ0Vs
bGlwc2lzUG9saWN5OjpObzoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgY2Fz
ZSBMaW5lQnVpbGRlcjo6TGluZUVuZGluZ0VsbGlwc2lzUG9saWN5OjpXaGVuQ29udGVudE92ZXJm
bG93c0luSW5saW5lRGlyZWN0aW9uOgorICAgICAgICAgICAgcmV0dXJuIGRpc3BsYXlMaW5lLmNv
bnRlbnRMb2dpY2FsV2lkdGgoKSA+IGRpc3BsYXlMaW5lLmxpbmVCb3hMb2dpY2FsUmVjdCgpLndp
ZHRoKCk7CisgICAgICAgIGNhc2UgTGluZUJ1aWxkZXI6OkxpbmVFbmRpbmdFbGxpcHNpc1BvbGlj
eTo6V2hlbkNvbnRlbnRPdmVyZmxvd3NJbkJsb2NrRGlyZWN0aW9uOgorICAgICAgICAgICAgaWYg
KGlzTGFzdExpbmVXaXRoSW5saW5lQ29udGVudCkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICBGQUxMVEhST1VHSDsKKyAgICAgICAgY2FzZSBMaW5lQnVpbGRlcjo6
TGluZUVuZGluZ0VsbGlwc2lzUG9saWN5OjpBbHdheXM6CisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfTsKKyAgICBpZiAoIWNv
bnRlbnROZWVkc0VsbGlwc2lzKCkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBBU1NFUlQo
ZGlzcGxheUJveGVzWzBdLmlzUm9vdElubGluZUJveCgpKTsKKyAgICBhdXRvJiByb290SW5saW5l
Qm94ID0gZGlzcGxheUJveGVzWzBdOworICAgIGF1dG8mIHJvb3RTdHlsZSA9IHJvb3RJbmxpbmVC
b3guc3R5bGUoKTsKKyAgICBhdXRvIGVsbGlwc2lzV2lkdGggPSByb290U3R5bGUuZm9udENhc2Nh
ZGUoKS53aWR0aChUZXh0VXRpbDo6ZWxsaXBzaXNUZXh0UnVuKCkpOworCisgICAgYXV0byBjb250
ZW50TmVlZHNUcnVuY2F0aW9uID0gWyZdIHsKKyAgICAgICAgc3dpdGNoIChsaW5lRW5kaW5nRWxs
aXBzaXNQb2xpY3kpIHsKKyAgICAgICAgY2FzZSBMaW5lQnVpbGRlcjo6TGluZUVuZGluZ0VsbGlw
c2lzUG9saWN5OjpXaGVuQ29udGVudE92ZXJmbG93c0luSW5saW5lRGlyZWN0aW9uOgorICAgICAg
ICAgICAgQVNTRVJUKGRpc3BsYXlMaW5lLmNvbnRlbnRMb2dpY2FsV2lkdGgoKSA+IGRpc3BsYXlM
aW5lLmxpbmVCb3hMb2dpY2FsUmVjdCgpLndpZHRoKCkpOworICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIGNhc2UgTGluZUJ1aWxkZXI6OkxpbmVFbmRpbmdFbGxpcHNpc1BvbGljeTo6
V2hlbkNvbnRlbnRPdmVyZmxvd3NJbkJsb2NrRGlyZWN0aW9uOgorICAgICAgICBjYXNlIExpbmVC
dWlsZGVyOjpMaW5lRW5kaW5nRWxsaXBzaXNQb2xpY3k6OkFsd2F5czoKKyAgICAgICAgICAgIHJl
dHVybiBkaXNwbGF5TGluZS5jb250ZW50TG9naWNhbFdpZHRoKCkgJiYgZGlzcGxheUxpbmUuY29u
dGVudExvZ2ljYWxXaWR0aCgpICsgZWxsaXBzaXNXaWR0aCA+IGRpc3BsYXlMaW5lLmxpbmVCb3hM
b2dpY2FsUmVjdCgpLndpZHRoKCk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQor
ICAgIH07CisKKyAgICBhdXRvIGVsbGlwc2lzU3RhcnQgPSAwLmY7CisgICAgaWYgKCFjb250ZW50
TmVlZHNUcnVuY2F0aW9uKCkpIHsKKyAgICAgICAgLy8gVGhlIGNvbnRlbnQgZG9lcyBub3Qgb3Zl
cmZsb3cgdGhlIGxpbmUgYm94LiBUaGUgZWxsaXBzaXMgaXMgc3VwcG9zZWQgdG8gYmUgZWl0aGVy
IHZpc3VhbGx5IHRyYWlsaW5nIG9yIGxlYWRpbmcgZGVwZW5kaW5nIG9uIHRoZSBpbmxpbmUgZGly
ZWN0aW9uLgorICAgICAgICBpZiAoZGlzcGxheUJveGVzLnNpemUoKSA+IDEpCisgICAgICAgICAg
ICBlbGxpcHNpc1N0YXJ0ID0gcm9vdFN0eWxlLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IGRp
c3BsYXlCb3hlcy5sYXN0KCkucmlnaHQoKSA6IGRpc3BsYXlCb3hlc1sxXS5sZWZ0KCkgLSBlbGxp
cHNpc1dpZHRoOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8vIEFsbCB3ZSBoYXZlIGlz
IHRoZSByb290IGlubGluZSBib3guCisgICAgICAgICAgICBlbGxpcHNpc1N0YXJ0ID0gZGlzcGxh
eUJveGVzLmZpcnN0KCkubGVmdCgpOworICAgICAgICB9CisgICAgfSBlbHNlCisgICAgICAgIGVs
bGlwc2lzU3RhcnQgPSB0cnVuY2F0ZU92ZXJmbG93aW5nRGlzcGxheUJveGVzKGRpc3BsYXlMaW5l
LCBkaXNwbGF5Qm94ZXMsIGVsbGlwc2lzV2lkdGgsIHJvb3RTdHlsZSk7CisKKyAgICBpZiAocm9v
dFN0eWxlLmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCisgICAgICAgIHJldHVybiBGbG9hdFJl
Y3QgeyBlbGxpcHNpc1N0YXJ0LCByb290SW5saW5lQm94LnRvcCgpLCBlbGxpcHNpc1dpZHRoLCBy
b290SW5saW5lQm94LmhlaWdodCgpIH07CisgICAgcmV0dXJuIEZsb2F0UmVjdCB7IHJvb3RJbmxp
bmVCb3gubGVmdCgpLCBlbGxpcHNpc1N0YXJ0LCByb290SW5saW5lQm94LndpZHRoKCksIGVsbGlw
c2lzV2lkdGggfTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3Bs
YXkvSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyLmgKaW5kZXggMTNjNDk0YTdmMDEyLi42NGFkZDIx
NjE5NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVE
aXNwbGF5TGluZUJ1aWxkZXIuaApAQCAtNDAsMTQgKzQwLDE0IEBAIHB1YmxpYzoKIAogICAgIElu
bGluZURpc3BsYXk6OkxpbmUgYnVpbGQoY29uc3QgTGluZUJ1aWxkZXI6OkxpbmVDb250ZW50Jiwg
Y29uc3QgTGluZUJveCYsIGNvbnN0IENvbnN0cmFpbnRzRm9ySW5saW5lQ29udGVudCYpIGNvbnN0
OwogCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiB0cmFpbGluZ0VsbGlwc2lz
VmlzdWFsUmVjdEFmdGVyVHJ1bmNhdGlvbihMaW5lQnVpbGRlcjo6TGluZUVuZGluZ0VsbGlwc2lz
UG9saWN5LCBjb25zdCBJbmxpbmVEaXNwbGF5OjpMaW5lJiwgRGlzcGxheUJveGVzJiwgYm9vbCBp
c0xhc3RMaW5lV2l0aElubGluZUNvbnRlbnQpOworCiBwcml2YXRlOgogICAgIHN0cnVjdCBFbmNs
b3NpbmdMaW5lR2VvbWV0cnkgewogICAgICAgICBJbmxpbmVEaXNwbGF5OjpMaW5lOjpFbmNsb3Np
bmdUb3BBbmRCb3R0b20gZW5jbG9zaW5nVG9wQW5kQm90dG9tOwogICAgICAgICBJbmxpbmVSZWN0
IHNjcm9sbGFibGVPdmVyZmxvd1JlY3Q7CiAgICAgfTsKICAgICBFbmNsb3NpbmdMaW5lR2VvbWV0
cnkgY29sbGVjdEVuY2xvc2luZ0xpbmVHZW9tZXRyeShjb25zdCBMaW5lQnVpbGRlcjo6TGluZUNv
bnRlbnQmLCBjb25zdCBMaW5lQm94JiwgY29uc3QgSW5saW5lUmVjdCYgbGluZUJveFJlY3QpIGNv
bnN0OwotICAgIElubGluZVJlY3QgZmxpcExvZ2ljYWxMaW5lUmVjdFRvVmlzdWFsRm9yV3JpdGlu
Z01vZGUoY29uc3QgSW5saW5lUmVjdCYsIFdyaXRpbmdNb2RlKSBjb25zdDsKLSAgICBzdGQ6Om9w
dGlvbmFsPEZsb2F0UmVjdD4gdHJhaWxpbmdFbGxpcHNpc1JlY3QoY29uc3QgTGluZUJ1aWxkZXI6
OkxpbmVDb250ZW50JiwgY29uc3QgTGluZUJveCYsIGNvbnN0IEZsb2F0UmVjdCYgbGluZUJveFZp
c3VhbFJlY3QpIGNvbnN0OwogCiAgICAgY29uc3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQmIGZv
cm1hdHRpbmdDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pbmxpbmVGb3JtYXR0aW5nQ29udGV4
dDsgfQogICAgIGNvbnN0IEJveCYgcm9vdCgpIGNvbnN0IHsgcmV0dXJuIGZvcm1hdHRpbmdDb250
ZXh0KCkucm9vdCgpOyB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2lubGluZS90ZXh0
X292ZXJmbG93X2VsbGlwc2lzX3NpbXBsZS1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9pbmxpbmUvdGV4dF9vdmVyZmxvd19lbGxpcHNpc19zaW1wbGUtZXhwZWN0ZWQuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjczNDlmNDFmNDBlYgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaW5saW5lL3RleHRfb3ZlcmZsb3dfZWxsaXBz
aXNfc2ltcGxlLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxNiBAQAorPHN0eWxlPgorZGl2IHsK
KyAgZm9udC1zaXplOiAyMHB4OworICBvdmVyZmxvdzogaGlkZGVuOworICB3aGl0ZS1zcGFjZTog
cHJlOworICB3aWR0aDogNTBweDsKK30KKzwvc3R5bGU+Cis8ZGl2PkFCJiM4MjMwOzwvZGl2Pgor
PGRpdiBzdHlsZT0iYm9yZGVyLWxlZnQ6IDEwcHggc29saWQiPkFCJiM4MjMwOzwvZGl2PgorPGRp
diBzdHlsZT0iYm9yZGVyLWxlZnQ6IDEwcHggc29saWQ7IHBhZGRpbmctbGVmdDogMjBweDsiPkFC
JiM4MjMwOzwvZGl2PgorPGRpdiBzdHlsZT0iYm9yZGVyOiAxMHB4IHNvbGlkOyBwYWRkaW5nOiAy
MHB4OyI+QUImIzgyMzA7PC9kaXY+Cis8ZGl2IHN0eWxlPSJkaXJlY3Rpb246IHJ0bDsiPkVGJiM4
MjMwOzwvZGl2PgorPGRpdiBzdHlsZT0iZGlyZWN0aW9uOiBydGw7IGJvcmRlci1sZWZ0OiAxMHB4
IHNvbGlkIj5FRiYjODIzMDs8L2Rpdj4KKzxkaXYgc3R5bGU9ImRpcmVjdGlvbjogcnRsOyBib3Jk
ZXItbGVmdDogMTBweCBzb2xpZDsgcGFkZGluZy1sZWZ0OiAyMHB4OyI+RUYmIzgyMzA7PC9kaXY+
Cis8ZGl2IHN0eWxlPSJkaXJlY3Rpb246IHJ0bDsgYm9yZGVyOiAxMHB4IHNvbGlkOyBwYWRkaW5n
OiAyMHB4OyI+RUYmIzgyMzA7PC9kaXY+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2lu
bGluZS90ZXh0X292ZXJmbG93X2VsbGlwc2lzX3NpbXBsZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9pbmxpbmUvdGV4dF9vdmVyZmxvd19lbGxpcHNpc19zaW1wbGUuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmYwNzJkMWU1OWIxNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvaW5saW5lL3RleHRfb3ZlcmZsb3dfZWxsaXBzaXNfc2ltcGxl
Lmh0bWwKQEAgLTAsMCArMSwyNCBAQAorPHN0eWxlPgorZGl2IHsKKyAgZm9udC1zaXplOiAyMHB4
OworICBvdmVyZmxvdzogaGlkZGVuOworICB3aGl0ZS1zcGFjZTogcHJlOworICB3aWR0aDogNTBw
eDsKKyAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7Cit9Cis8L3N0eWxlPgorPGRpdj5BQkNEIEVG
R0g8L2Rpdj4KKzxkaXYgc3R5bGU9ImJvcmRlci1sZWZ0OiAxMHB4IHNvbGlkIj5BQkNEIEVGR0g8
L2Rpdj4KKzxkaXYgc3R5bGU9ImJvcmRlci1sZWZ0OiAxMHB4IHNvbGlkOyBwYWRkaW5nLWxlZnQ6
IDIwcHg7Ij5BQkNEIEVGR0g8L2Rpdj4KKzxkaXYgc3R5bGU9ImJvcmRlcjogMTBweCBzb2xpZDsg
cGFkZGluZzogMjBweDsiPkFCQ0QgRUZHSDwvZGl2PgorCis8ZGl2IHN0eWxlPSJkaXJlY3Rpb246
IHJ0bDsiPkFCQ0QgRUZHSDwvZGl2PgorPGRpdiBzdHlsZT0iZGlyZWN0aW9uOiBydGw7IGJvcmRl
ci1sZWZ0OiAxMHB4IHNvbGlkIj5BQkNEIEVGR0g8L2Rpdj4KKzxkaXYgc3R5bGU9ImRpcmVjdGlv
bjogcnRsOyBib3JkZXItbGVmdDogMTBweCBzb2xpZDsgcGFkZGluZy1sZWZ0OiAyMHB4OyI+QUJD
RCBFRkdIPC9kaXY+Cis8ZGl2IHN0eWxlPSJkaXJlY3Rpb246IHJ0bDsgYm9yZGVyOiAxMHB4IHNv
bGlkOyBwYWRkaW5nOiAyMHB4OyI+QUJDRCBFRkdIPC9kaXY+CisKKworPCEtLSBOZWVkcyBzb21l
IHBhaW50aW5nIHdvcmssIHNlZSB3ZWJraXQub3JnL2IvMjUxNjEwCis8ZGl2IHN0eWxlPSJ3cml0
aW5nLW1vZGU6IHZlcnRpY2FsLWxyOyB3aWR0aDogYXV0bzsgaGVpZ2h0OiA1MHB4OyBib3JkZXI6
IDEwcHggc29saWQ7IHBhZGRpbmc6IDIwcHg7Ij5BQkNEIEVGR0g8L2Rpdj4KKzxkaXYgc3R5bGU9
IndyaXRpbmctbW9kZTogdmVydGljYWwtbHI7IGRpcmVjdGlvbjogcnRsOyB3aWR0aDogYXV0bzsg
aGVpZ2h0OiA1MHB4OyBib3JkZXI6IDEwcHggc29saWQ7IHBhZGRpbmc6IDIwcHg7Ij5BQkNEIEVG
R0g8L2Rpdj4KKyAtLT4K
</data>
<flag name="commit-queue"
          id="492992"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>464818</attachid>
            <date>2023-02-02 17:10:34 -0800</date>
            <delta_ts>2023-02-03 07:16:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-251608-20230202171033.patch</filename>
            <type>text/plain</type>
            <size>53056</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSA0ZTlmMmNhYTFlZmQ5NjEzNzE1OTA1ODMxNTE5ZmQyMDBiZTNjYTY1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFRodSwgMiBGZWIgMjAyMyAxMDoyNDozNyAtMDgwMApTdWJqZWN0OiBbUEFUQ0hdIFtSVEwvYmlk
aS92ZXJ0aWNhbF0gSW5jb3JyZWN0IGNvbnRlbnQgdHJ1bmNhdGlvbiB3aGVuCiAidGV4dC1vdmVy
ZmxvdyIgaXMgImVsbGlwc2lzIiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjUxNjA4CgpSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KCkluIHRoaXMgcGF0Y2ggaW5s
aW5lIGNvbnRlbnQgdHJ1bmNhdGlvbiAob3ZlcmZsb3c6IGhpZGRlbiArIHRleHQtb3ZlcmZsb3c6
IGVsbGlwc2lzKSBpcyBtb3ZlZCBmcm9tIGxvZ2ljYWwgdG8gdmlzdWFsIHNwYWNlLgpJdCBlbnN1
cmVzIHRoYXQgdGhlIHRydW5jYXRpb24gaGFwcGVucyBfYWZ0ZXJfIGJpZGkgcmVvcmRlcmluZyBh
bmQgYWxzbyBfYWZ0ZXJfIGFwcGx5aW5nIHdyaXRpbmctbW9kZS4KCk5vdyBpbnN0ZWFkIG9mIHJ1
bm5pbmcgdHJ1bmNhdGlvbiBhcyBwYXJ0IG9mIHRoZSB0cmFpbGluZyBjb250ZW50IGhhbmRsaW5n
IGluIExpbmVCdWlsZGVyOjpjbG9zZSByaWdodCBhZnRlciB3ZSBmaWd1cmVkIHRoZSBicmVha2lu
ZyBwb3NpdGlvbiBmb3IKdGhlIGlubGluZSBjb250ZW50LCB3ZSBkbyBpdCBhZnRlciBjb25zdHJ1
Y3RpbmcgdGhlIGRpc3BsYXkgYm94ZXMgKGFuZCB0aGUgYXNzb2NpYXRlZCBkaXNwbGF5IGxpbmUp
LgoKMSwgUmVtb3ZlIHRydW5jYXRpb24gY29kZSBmcm9tIExpbmU6OlJ1biBhbmQgYWxsIHRoZSBy
ZWxhdGVkIGNvZGUgYWxsIHRoZSB3YXkgdG8gZGlzcGxheSBsaW5lIGNvbnN0cnVjdGlvbgoyLiBJ
bnRyb2R1Y2UgdHJ1bmNhdGVPdmVyZmxvd2luZ0Rpc3BsYXlCb3hlcy4gSXQgYXBwbGllcyB0cnVu
Y2F0aW9uIG9uIGRpc3BsYXkgYm94IGluIHZpc3VhbCBvcmRlciAodGhlIHRydW5jYXRpb24gbG9n
aWMgaXMgYWN0dWFsbHkgbW92ZWQgZnJvbSBMaW5lOjpSdW4sIG5vdGhpbmcgcmVhbGx5IG5ldyBo
ZXJlKS4KCiogTGF5b3V0VGVzdHMvZmFzdC9pbmxpbmUvdGV4dF9vdmVyZmxvd19lbGxpcHNpc19z
aW1wbGUtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCiogTGF5b3V0VGVzdHMvZmFzdC9pbmxpbmUvdGV4
dF9vdmVyZmxvd19lbGxpcHNpc19zaW1wbGUuaHRtbDogQWRkZWQuCiogU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQu
Y3BwOgooV2ViQ29yZTo6TGF5b3V0OjpsaW5lRW5kaW5nRWxsaXBzaXNQb2xpY3kpOgooV2ViQ29y
ZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGluZUxheW91dCk6CihXZWJDb3Jl
OjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0OjpjcmVhdGVEaXNwbGF5Q29udGVudEZv
ckxpbmUpOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L0lubGluZUZvcm1hdHRpbmdDb250ZXh0Lmg6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6Okxp
bmU6OmluaXRpYWxpemUpOgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lOjpSdW46OmRldGFjaFRyYWls
aW5nV2hpdGVzcGFjZSk6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmU6OnRydW5jYXRlKTogRGVsZXRl
ZC4KKFdlYkNvcmU6OkxheW91dDo6TGluZTo6UnVuOjp0cnVuY2F0ZSk6IERlbGV0ZWQuCiogU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5o
OgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lOjppc0NvbnRlbnRUcnVuY2F0ZWQgY29uc3QpOiBEZWxl
dGVkLgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lOjpSdW46OmlzVHJ1bmNhdGVkIGNvbnN0KTogRGVs
ZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9J
bmxpbmVMaW5lQnVpbGRlci5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjpsYXlv
dXRJbmxpbmVDb250ZW50KToKKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OmNvbXB1dGVk
SW50cmluc2ljV2lkdGgpOgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6Y2xvc2UpOgoq
IFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxp
bmVCdWlsZGVyLmg6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5Qm94Lmg6CihXZWJDb3JlOjpJbmxpbmVEaXNwbGF5
OjpCb3g6OlRleHQ6OnNldFBhcnRpYWxseVZpc2libGVDb250ZW50TGVuZ3RoKToKKFdlYkNvcmU6
OklubGluZURpc3BsYXk6OkJveDo6Qm94KToKKFdlYkNvcmU6OklubGluZURpc3BsYXk6OkJveDo6
c2V0TGVmdCk6CihXZWJDb3JlOjpJbmxpbmVEaXNwbGF5OjpCb3g6OnNldElzRnVsbHlUcnVuY2F0
ZWQpOgooV2ViQ29yZTo6SW5saW5lRGlzcGxheTo6Qm94OjpUZXh0OjpUZXh0KToKKiBTb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURp
c3BsYXlDb250ZW50QnVpbGRlci5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZURpc3BsYXlD
b250ZW50QnVpbGRlcjo6YXBwZW5kVGV4dERpc3BsYXlCb3gpOgooV2ViQ29yZTo6TGF5b3V0OjpJ
bmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OmFwcGVuZEF0b21pY0lubGluZUxldmVsRGlzcGxh
eUJveCk6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6YXBw
ZW5kSW5saW5lQm94RGlzcGxheUJveCk6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZURpc3BsYXlD
b250ZW50QnVpbGRlcjo6YXBwZW5kU3Bhbm5pbmdJbmxpbmVCb3hEaXNwbGF5Qm94KToKKiBTb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGlu
ZURpc3BsYXlDb250ZW50QnVpbGRlci5oOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVEaXNwbGF5
Q29udGVudEJ1aWxkZXI6OnJvb3RTdHlsZSBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5TGluZS5oOgoo
V2ViQ29yZTo6SW5saW5lRGlzcGxheTo6TGluZTo6c2V0RWxsaXBzaXNWaXN1YWxSZWN0KToKKFdl
YkNvcmU6OklubGluZURpc3BsYXk6OkxpbmU6OkxpbmUpOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUxpbmVCdWls
ZGVyLmNwcDoKKFdlYkNvcmU6OkxheW91dDo6ZmxpcExvZ2ljYWxMaW5lUmVjdFRvVmlzdWFsRm9y
V3JpdGluZ01vZGUpOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXI6
OmJ1aWxkIGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6dHJ1bmNhdGVPdmVyZmxvd2luZ0Rpc3Bs
YXlCb3hlcyk6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZURpc3BsYXlMaW5lQnVpbGRlcjo6dHJh
aWxpbmdFbGxpcHNpc1Zpc3VhbFJlY3QpOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVEaXNwbGF5
TGluZUJ1aWxkZXI6OnRyYWlsaW5nRWxsaXBzaXNSZWN0IGNvbnN0KTogRGVsZXRlZC4KKFdlYkNv
cmU6OkxheW91dDo6SW5saW5lRGlzcGxheUxpbmVCdWlsZGVyOjpmbGlwTG9naWNhbExpbmVSZWN0
VG9WaXN1YWxGb3JXcml0aW5nTW9kZSBjb25zdCk6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5TGlu
ZUJ1aWxkZXIuaDoKLS0tCiAuLi4vaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcCAg
ICAgICAgfCAgMjIgKystCiAuLi4vaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmggICAg
ICAgICAgfCAgIDIgKy0KIC4uLi9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmUu
Y3BwICB8ICA0OCArLS0tLQogLi4uL2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGlu
ZS5oICAgIHwgIDEzIC0tCiAuLi4vaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNwcCAgICAgICAg
ICAgICAgfCAgNDQgKy0tLS0KIC4uLi9pbmxpbmUvSW5saW5lTGluZUJ1aWxkZXIuaCAgICAgICAg
ICAgICAgICB8ICAyMCArLQogLi4uL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlCb3guaCAg
ICAgICAgIHwgIDIwICstCiAuLi4vZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIu
Y3BwICAgfCAgIDkgKy0KIC4uLi9kaXNwbGF5L0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5o
ICAgICB8ICAgMiArCiAuLi4vaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUxpbmUuaCAgICAg
ICAgfCAgIDYgKy0KIC4uLi9kaXNwbGF5L0lubGluZURpc3BsYXlMaW5lQnVpbGRlci5jcHAgICAg
ICB8IDE4MSArKysrKysrKysrKysrKy0tLS0KIC4uLi9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNw
bGF5TGluZUJ1aWxkZXIuaCB8ICAgNCArLQogLi4uZXh0X292ZXJmbG93X2VsbGlwc2lzX3NpbXBs
ZS1leHBlY3RlZC5odG1sIHwgIDE2ICsrCiAuLi4vaW5saW5lL3RleHRfb3ZlcmZsb3dfZWxsaXBz
aXNfc2ltcGxlLmh0bWwgfCAgMjQgKysrCiAxNCBmaWxlcyBjaGFuZ2VkLCAyMzIgaW5zZXJ0aW9u
cygrKSwgMTc5IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2Zh
c3QvaW5saW5lL3RleHRfb3ZlcmZsb3dfZWxsaXBzaXNfc2ltcGxlLWV4cGVjdGVkLmh0bWwKIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9mYXN0L2lubGluZS90ZXh0X292ZXJmbG93X2Vs
bGlwc2lzX3NpbXBsZS5odG1sCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0
dGluZ0NvbnRleHQuY3BwCmluZGV4IDRiODBjN2M4MGVmMS4uOWRlMWFlMTk5OTFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9Jbmxp
bmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC0yMDIs
MTkgKzIwMiwxOSBAQCBzdGF0aWMgc2l6ZV90IGluZGV4T2ZGaXJzdElubGluZUl0ZW1Gb3JOZXh0
TGluZShjb25zdCBMaW5lQnVpbGRlcjo6TGluZUNvbnRlbnQmCiAgICAgcmV0dXJuIGxpbmVDb250
ZW50UmFuZ2UuZW5kOwogfQogCi1zdGF0aWMgTGluZUJ1aWxkZXI6OkxpbmVJbnB1dDo6TGluZUVu
ZGluZ0VsbGlwc2lzUG9saWN5IGxpbmVFbmRpbmdFbGxpcHNpc1BvbGljeShjb25zdCBSZW5kZXJT
dHlsZSYgcm9vdFN0eWxlLCBzaXplX3QgbnVtYmVyT2ZMaW5lcywgc3RkOjpvcHRpb25hbDxzaXpl
X3Q+IG1heGltdW1OdW1iZXJPZlZpc2libGVMaW5lcykKK3N0YXRpYyBMaW5lQnVpbGRlcjo6TGlu
ZUVuZGluZ0VsbGlwc2lzUG9saWN5IGxpbmVFbmRpbmdFbGxpcHNpc1BvbGljeShjb25zdCBSZW5k
ZXJTdHlsZSYgcm9vdFN0eWxlLCBzaXplX3QgbnVtYmVyT2ZMaW5lcywgc3RkOjpvcHRpb25hbDxz
aXplX3Q+IG1heGltdW1OdW1iZXJPZlZpc2libGVMaW5lcykKIHsKICAgICAvLyBXZSBtYXkgaGF2
ZSBwYXNzZWQgdGhlIGxpbmUtY2xhbXAgbGluZSB3aXRoIG92ZXJmbG93IHZpc2libGUuCiAgICAg
aWYgKG1heGltdW1OdW1iZXJPZlZpc2libGVMaW5lcyAmJiBudW1iZXJPZkxpbmVzIDwgKm1heGlt
dW1OdW1iZXJPZlZpc2libGVMaW5lcykgewogICAgICAgICAvLyBJZiB0aGUgbmV4dCBjYWxsIHRv
IGxheW91dElubGluZUNvbnRlbnQoKSB3b24ndCBwcm9kdWNlIGEgbGluZSB3aXRoIGNvbnRlbnQg
KGUuZy4gb25seSBmbG9hdHMpLCB3ZSdsbCBlbmQgdXAgaGVyZSBhZ2Fpbi4KICAgICAgICAgYXV0
byBzaG91bGRBcHBseUNsYW1wV2hlbkFwcGxpY2FibGUgPSAqbWF4aW11bU51bWJlck9mVmlzaWJs
ZUxpbmVzIC0gbnVtYmVyT2ZMaW5lcyA9PSAxOwogICAgICAgICBpZiAoc2hvdWxkQXBwbHlDbGFt
cFdoZW5BcHBsaWNhYmxlKQotICAgICAgICAgICAgcmV0dXJuIExpbmVCdWlsZGVyOjpMaW5lSW5w
dXQ6OkxpbmVFbmRpbmdFbGxpcHNpc1BvbGljeTo6V2hlbkNvbnRlbnRPdmVyZmxvd3NJbkJsb2Nr
RGlyZWN0aW9uOworICAgICAgICAgICAgcmV0dXJuIExpbmVCdWlsZGVyOjpMaW5lRW5kaW5nRWxs
aXBzaXNQb2xpY3k6OldoZW5Db250ZW50T3ZlcmZsb3dzSW5CbG9ja0RpcmVjdGlvbjsKICAgICB9
CiAgICAgLy8gVHJ1bmNhdGlvbiBpcyBpbiBlZmZlY3Qgd2hlbiB0aGUgYmxvY2sgY29udGFpbmVy
IGhhcyBvdmVyZmxvdyBvdGhlciB0aGFuIHZpc2libGUuCiAgICAgaWYgKHJvb3RTdHlsZS5vdmVy
Zmxvd1goKSA9PSBPdmVyZmxvdzo6SGlkZGVuICYmIHJvb3RTdHlsZS50ZXh0T3ZlcmZsb3coKSA9
PSBUZXh0T3ZlcmZsb3c6OkVsbGlwc2lzKQotICAgICAgICByZXR1cm4gTGluZUJ1aWxkZXI6Okxp
bmVJbnB1dDo6TGluZUVuZGluZ0VsbGlwc2lzUG9saWN5OjpXaGVuQ29udGVudE92ZXJmbG93c0lu
SW5saW5lRGlyZWN0aW9uOwotICAgIHJldHVybiBMaW5lQnVpbGRlcjo6TGluZUlucHV0OjpMaW5l
RW5kaW5nRWxsaXBzaXNQb2xpY3k6Ok5vOworICAgICAgICByZXR1cm4gTGluZUJ1aWxkZXI6Okxp
bmVFbmRpbmdFbGxpcHNpc1BvbGljeTo6V2hlbkNvbnRlbnRPdmVyZmxvd3NJbklubGluZURpcmVj
dGlvbjsKKyAgICByZXR1cm4gTGluZUJ1aWxkZXI6OkxpbmVFbmRpbmdFbGxpcHNpc1BvbGljeTo6
Tm87CiB9CiAKIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxpbmVMYXlvdXQoSW5saW5l
SXRlbXMmIGlubGluZUl0ZW1zLCBjb25zdCBMaW5lQnVpbGRlcjo6SW5saW5lSXRlbVJhbmdlJiBu
ZWVkc0xheW91dFJhbmdlLCBjb25zdCBDb25zdHJhaW50c0ZvcklubGluZUNvbnRlbnQmIGNvbnN0
cmFpbnRzLCBCbG9ja0xheW91dFN0YXRlJiBibG9ja0xheW91dFN0YXRlKQpAQCAtMjQzLDEwICsy
NDMsMTAgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGluZUxheW91dChJbmxpbmVJ
dGVtcyYgaW5saW5lSXRlbXMsIGNvbnN0IExpbmVCdWkKICAgICB3aGlsZSAodHJ1ZSkgewogCiAg
ICAgICAgIGF1dG8gbGluZUluaXRpYWxSZWN0ID0gSW5saW5lUmVjdCB7IGxpbmVMb2dpY2FsVG9w
LCBjb25zdHJhaW50cy5ob3Jpem9udGFsKCkubG9naWNhbExlZnQsIGNvbnN0cmFpbnRzLmhvcml6
b250YWwoKS5sb2dpY2FsV2lkdGgsIGZvcm1hdHRpbmdHZW9tZXRyeSgpLmluaXRpYWxMaW5lSGVp
Z2h0KCFwcmV2aW91c0xpbmUuaGFzX3ZhbHVlKCkpIH07Ci0gICAgICAgIGF1dG8gZWxsaXBzaXNQ
b2xpY3kgPSBsaW5lRW5kaW5nRWxsaXBzaXNQb2xpY3kocm9vdFN0eWxlLCBudW1iZXJPZkxpbmVz
LCBtYXhpbXVtTnVtYmVyT2ZWaXNpYmxlTGluZXNGb3JUaGlzSW5saW5lQ29udGVudCk7Ci0gICAg
ICAgIGF1dG8gbGluZUNvbnRlbnQgPSBsaW5lQnVpbGRlci5sYXlvdXRJbmxpbmVDb250ZW50KHsg
eyBmaXJzdElubGluZUl0ZW1OZWVkc0xheW91dCwgbmVlZHNMYXlvdXRSYW5nZS5lbmQgfSwgbGlu
ZUluaXRpYWxSZWN0LCBlbGxpcHNpc1BvbGljeSB9LCBwcmV2aW91c0xpbmUpOworICAgICAgICBh
dXRvIGxpbmVDb250ZW50ID0gbGluZUJ1aWxkZXIubGF5b3V0SW5saW5lQ29udGVudCh7IHsgZmly
c3RJbmxpbmVJdGVtTmVlZHNMYXlvdXQsIG5lZWRzTGF5b3V0UmFuZ2UuZW5kIH0sIGxpbmVJbml0
aWFsUmVjdCB9LCBwcmV2aW91c0xpbmUpOwogCi0gICAgICAgIGF1dG8gbGluZUxvZ2ljYWxSZWN0
ID0gY3JlYXRlRGlzcGxheUNvbnRlbnRGb3JMaW5lKGxpbmVDb250ZW50LCBjb25zdHJhaW50cywg
YmxvY2tMYXlvdXRTdGF0ZSk7CisgICAgICAgIGF1dG8gZWxsaXBzaXNQb2xpY3kgPSBsaW5lRW5k
aW5nRWxsaXBzaXNQb2xpY3kocm9vdFN0eWxlLCBudW1iZXJPZkxpbmVzLCBtYXhpbXVtTnVtYmVy
T2ZWaXNpYmxlTGluZXNGb3JUaGlzSW5saW5lQ29udGVudCk7CisgICAgICAgIGF1dG8gbGluZUxv
Z2ljYWxSZWN0ID0gY3JlYXRlRGlzcGxheUNvbnRlbnRGb3JMaW5lKGxpbmVDb250ZW50LCBjb25z
dHJhaW50cywgZWxsaXBzaXNQb2xpY3ksIGJsb2NrTGF5b3V0U3RhdGUpOwogICAgICAgICBpZiAo
bGluZUNvbnRlbnQuaXNMYXN0TGluZVdpdGhJbmxpbmVDb250ZW50KQogICAgICAgICAgICAgZm9y
bWF0dGluZ1N0YXRlLnNldENsZWFyR2FwQWZ0ZXJMYXN0TGluZShmb3JtYXR0aW5nR2VvbWV0cnko
KS5sb2dpY2FsVG9wRm9yTmV4dExpbmUobGluZUNvbnRlbnQsIGxpbmVMb2dpY2FsUmVjdCwgZmxv
YXRpbmdDb250ZXh0KSAtIGxpbmVMb2dpY2FsUmVjdC5ib3R0b20oKSk7CiAKQEAgLTQ1NywxNCAr
NDU3LDE4IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbGxlY3RDb250ZW50SWZO
ZWVkZWQoKQogICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVJdGVtcyhpbmxpbmVJdGVtc0J1
aWxkZXIuYnVpbGQoKSk7CiB9CiAKLUlubGluZVJlY3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6
OmNyZWF0ZURpc3BsYXlDb250ZW50Rm9yTGluZShjb25zdCBMaW5lQnVpbGRlcjo6TGluZUNvbnRl
bnQmIGxpbmVDb250ZW50LCBjb25zdCBDb25zdHJhaW50c0ZvcklubGluZUNvbnRlbnQmIGNvbnN0
cmFpbnRzLCBjb25zdCBCbG9ja0xheW91dFN0YXRlJiBibG9ja0xheW91dFN0YXRlKQorSW5saW5l
UmVjdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y3JlYXRlRGlzcGxheUNvbnRlbnRGb3JMaW5l
KGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lQ29udGVudCYgbGluZUNvbnRlbnQsIGNvbnN0IENvbnN0
cmFpbnRzRm9ySW5saW5lQ29udGVudCYgY29uc3RyYWludHMsIExpbmVCdWlsZGVyOjpMaW5lRW5k
aW5nRWxsaXBzaXNQb2xpY3kgbGluZUVuZGluZ0VsbGlwc2lzUG9saWN5LCBjb25zdCBCbG9ja0xh
eW91dFN0YXRlJiBibG9ja0xheW91dFN0YXRlKQogewogICAgIGF1dG8mIGZvcm1hdHRpbmdTdGF0
ZSA9IHRoaXMtPmZvcm1hdHRpbmdTdGF0ZSgpOwogICAgIGF1dG8gY3VycmVudExpbmVJbmRleCA9
IGZvcm1hdHRpbmdTdGF0ZS5saW5lcygpLnNpemUoKTsKIAogICAgIGF1dG8gbGluZUJveCA9IExp
bmVCb3hCdWlsZGVyIHsgKnRoaXMsIGxpbmVDb250ZW50LCBibG9ja0xheW91dFN0YXRlIH0uYnVp
bGQoY3VycmVudExpbmVJbmRleCk7CiAgICAgYXV0byBkaXNwbGF5TGluZSA9IElubGluZURpc3Bs
YXlMaW5lQnVpbGRlciB7ICp0aGlzIH0uYnVpbGQobGluZUNvbnRlbnQsIGxpbmVCb3gsIGNvbnN0
cmFpbnRzKTsKLSAgICBmb3JtYXR0aW5nU3RhdGUuYWRkQm94ZXMoSW5saW5lRGlzcGxheUNvbnRl
bnRCdWlsZGVyIHsgKnRoaXMsIGZvcm1hdHRpbmdTdGF0ZSB9LmJ1aWxkKGxpbmVDb250ZW50LCBs
aW5lQm94LCBkaXNwbGF5TGluZSwgY3VycmVudExpbmVJbmRleCkpOworICAgIGF1dG8gYm94ZXMg
PSBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIgeyAqdGhpcywgZm9ybWF0dGluZ1N0YXRlIH0u
YnVpbGQobGluZUNvbnRlbnQsIGxpbmVCb3gsIGRpc3BsYXlMaW5lLCBjdXJyZW50TGluZUluZGV4
KTsKKyAgICBpZiAoYXV0byBlbGxpcHNpc1JlY3QgPSBJbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXI6
OnRyYWlsaW5nRWxsaXBzaXNWaXN1YWxSZWN0QWZ0ZXJUcnVuY2F0aW9uKGxpbmVFbmRpbmdFbGxp
cHNpc1BvbGljeSwgZGlzcGxheUxpbmUsIGJveGVzLCBsaW5lQ29udGVudC5pc0xhc3RMaW5lV2l0
aElubGluZUNvbnRlbnQpKQorICAgICAgICBkaXNwbGF5TGluZS5zZXRFbGxpcHNpc1Zpc3VhbFJl
Y3QoKmVsbGlwc2lzUmVjdCk7CisKKyAgICBmb3JtYXR0aW5nU3RhdGUuYWRkQm94ZXMoV1RGTW92
ZShib3hlcykpOwogICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRMaW5lQm94KFdURk1vdmUobGluZUJv
eCkpOwogICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRMaW5lKGRpc3BsYXlMaW5lKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmgKaW5kZXggNzEwNjE0MGQ1
ZDFhLi4xNjI0N2MwNzc3OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0
dGluZ0NvbnRleHQuaApAQCAtNzIsNyArNzIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcHV0
ZVdpZHRoQW5kTWFyZ2luKGNvbnN0IEJveCYsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYp
OwogCiAgICAgdm9pZCBjb2xsZWN0Q29udGVudElmTmVlZGVkKCk7Ci0gICAgSW5saW5lUmVjdCBj
cmVhdGVEaXNwbGF5Q29udGVudEZvckxpbmUoY29uc3QgTGluZUJ1aWxkZXI6OkxpbmVDb250ZW50
JiwgY29uc3QgQ29uc3RyYWludHNGb3JJbmxpbmVDb250ZW50JiwgY29uc3QgQmxvY2tMYXlvdXRT
dGF0ZSYpOworICAgIElubGluZVJlY3QgY3JlYXRlRGlzcGxheUNvbnRlbnRGb3JMaW5lKGNvbnN0
IExpbmVCdWlsZGVyOjpMaW5lQ29udGVudCYsIGNvbnN0IENvbnN0cmFpbnRzRm9ySW5saW5lQ29u
dGVudCYsIExpbmVCdWlsZGVyOjpMaW5lRW5kaW5nRWxsaXBzaXNQb2xpY3ksIGNvbnN0IEJsb2Nr
TGF5b3V0U3RhdGUmKTsKICAgICB2b2lkIHJlc2V0R2VvbWV0cnlGb3JDbGFtcGVkQ29udGVudChj
b25zdCBMaW5lQnVpbGRlcjo6SW5saW5lSXRlbVJhbmdlJiBuZWVkc0Rpc3BsYXlDb250ZW50UmFu
Z2UsIGNvbnN0IExpbmVCdWlsZGVyOjpGbG9hdExpc3QmIG92ZXJmbG93aW5nRmxvYXRzLCBMYXlv
dXRQb2ludCB0b3BsZWZ0KTsKIAogICAgIHZvaWQgaW52YWxpZGF0ZUZvcm1hdHRpbmdTdGF0ZSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvSW5saW5lTGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2lubGluZS9JbmxpbmVMaW5lLmNwcAppbmRleCA4ZjAwMTc4ZDM4ZTIuLmY4NTc1YTIy
MzFlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9pbmxpbmUvSW5saW5lTGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5jcHAKQEAgLTUwLDcgKzUwLDYgQEAgTGlu
ZTo6fkxpbmUoKQogdm9pZCBMaW5lOjppbml0aWFsaXplKGNvbnN0IFZlY3RvcjxJbmxpbmVJdGVt
PiYgbGluZVNwYW5uaW5nSW5saW5lQm94ZXMsIGJvb2wgaXNGaXJzdEZvcm1hdHRlZExpbmUpCiB7
CiAgICAgbV9pc0ZpcnN0Rm9ybWF0dGVkTGluZSA9IGlzRmlyc3RGb3JtYXR0ZWRMaW5lOwotICAg
IG1fY29udGVudElzVHJ1bmNhdGVkID0gZmFsc2U7CiAgICAgbV9pbmxpbmVCb3hMaXN0V2l0aENs
b25lZERlY29yYXRpb25FbmQuY2xlYXIoKTsKICAgICBtX2Nsb25lZEVuZERlY29yYXRpb25XaWR0
aEZvcklubGluZUJveFJ1bnMgPSB7IH07CiAgICAgbV9ub25TcGFubmluZ0lubGluZUxldmVsQm94
Q291bnQgPSAwOwpAQCAtMTgxLDI3ICsxODAsNiBAQCB2b2lkIExpbmU6OmFwcGx5UnVuRXhwYW5z
aW9uKElubGluZUxheW91dFVuaXQgaG9yaXpvbnRhbEF2YWlsYWJsZVNwYWNlKQogICAgIG1fY29u
dGVudExvZ2ljYWxXaWR0aCArPSBhY2N1bXVsYXRlZEV4cGFuc2lvbjsKIH0KIAotdm9pZCBMaW5l
Ojp0cnVuY2F0ZShJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxSaWdodCkKLXsKLSAgICBBU1NFUlQo
IW1fY29udGVudElzVHJ1bmNhdGVkKTsKLSAgICBBU1NFUlQobV9jb250ZW50TG9naWNhbFdpZHRo
ID4gbG9naWNhbFJpZ2h0KTsKLSAgICBhdXRvIGlzRmlyc3RSdW4gPSB0cnVlOwotICAgIGZvciAo
YXV0byYgcnVuIDogbV9ydW5zKSB7Ci0gICAgICAgIGlmIChydW4uaXNJbmxpbmVCb3goKSkKLSAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAocnVuLmxvZ2ljYWxSaWdodCgpID4gbG9n
aWNhbFJpZ2h0KSB7Ci0gICAgICAgICAgICAvLyBUaGUgZmlyc3QgY2hhcmFjdGVyIG9yIGF0b21p
YyBpbmxpbmUtbGV2ZWwgZWxlbWVudCBvbiBhIGxpbmUgbXVzdCBiZSBjbGlwcGVkIHJhdGhlciB0
aGFuIGVsbGlwc2VkLgotICAgICAgICAgICAgaWYgKGlzRmlyc3RSdW4pCi0gICAgICAgICAgICAg
ICAgbV9jb250ZW50SXNUcnVuY2F0ZWQgPSBydW4udHJ1bmNhdGUobG9naWNhbFJpZ2h0IC0gcnVu
LmxvZ2ljYWxMZWZ0KCksIFJ1bjo6Q2FuRnVsbHlUcnVuY2F0ZTo6Tm8pOwotICAgICAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgcnVuLnRydW5jYXRlKGxvZ2ljYWxSaWdodCAtIHJ1bi5s
b2dpY2FsTGVmdCgpKTsKLSAgICAgICAgICAgICAgICBtX2NvbnRlbnRJc1RydW5jYXRlZCA9IHRy
dWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaXNGaXJzdFJ1biA9IGZhbHNl
OwotICAgIH0KLX0KLQogdm9pZCBMaW5lOjpoYW5kbGVUcmFpbGluZ1RyaW1tYWJsZUNvbnRlbnQo
VHJhaWxpbmdDb250ZW50QWN0aW9uIHRyYWlsaW5nVHJpbW1hYmxlQ29udGVudEFjdGlvbikKIHsK
ICAgICBpZiAobV90cmltbWFibGVUcmFpbGluZ0NvbnRlbnQuaXNFbXB0eSgpIHx8IG1fcnVucy5p
c0VtcHR5KCkpCkBAIC04NTEsNyArODI5LDcgQEAgc3RkOjpvcHRpb25hbDxMaW5lOjpSdW4+IExp
bmU6OlJ1bjo6ZGV0YWNoVHJhaWxpbmdXaGl0ZXNwYWNlKCkKICAgICBhdXRvIHRyYWlsaW5nV2hp
dGVzcGFjZVJ1biA9ICp0aGlzOwogCiAgICAgYXV0byBsZWFkaW5nTm9uV2hpdGVzcGFjZUNvbnRl
bnRMZW5ndGggPSBtX3RleHRDb250ZW50LT5sZW5ndGggLSBtX3RyYWlsaW5nV2hpdGVzcGFjZS0+
bGVuZ3RoOwotICAgIHRyYWlsaW5nV2hpdGVzcGFjZVJ1bi5tX3RleHRDb250ZW50ID0geyBtX3Rl
eHRDb250ZW50LT5zdGFydCArIGxlYWRpbmdOb25XaGl0ZXNwYWNlQ29udGVudExlbmd0aCwgbV90
cmFpbGluZ1doaXRlc3BhY2UtPmxlbmd0aCwgeyB9LCBmYWxzZSB9OworICAgIHRyYWlsaW5nV2hp
dGVzcGFjZVJ1bi5tX3RleHRDb250ZW50ID0geyBtX3RleHRDb250ZW50LT5zdGFydCArIGxlYWRp
bmdOb25XaGl0ZXNwYWNlQ29udGVudExlbmd0aCwgbV90cmFpbGluZ1doaXRlc3BhY2UtPmxlbmd0
aCwgZmFsc2UgfTsKIAogICAgIHRyYWlsaW5nV2hpdGVzcGFjZVJ1bi5tX2xvZ2ljYWxXaWR0aCA9
IG1fdHJhaWxpbmdXaGl0ZXNwYWNlLT53aWR0aDsKICAgICB0cmFpbGluZ1doaXRlc3BhY2VSdW4u
bV9sb2dpY2FsTGVmdCA9IGxvZ2ljYWxSaWdodCgpIC0gbV90cmFpbGluZ1doaXRlc3BhY2UtPndp
ZHRoOwpAQCAtOTEzLDMwICs4OTEsNiBAQCBJbmxpbmVMYXlvdXRVbml0IExpbmU6OlJ1bjo6cmVt
b3ZlVHJhaWxpbmdXaGl0ZXNwYWNlKCkKICAgICByZXR1cm4gdHJpbW1lZFdpZHRoOwogfQogCi1i
b29sIExpbmU6OlJ1bjo6dHJ1bmNhdGUoSW5saW5lTGF5b3V0VW5pdCB2aXNpYmxlV2lkdGgsIENh
bkZ1bGx5VHJ1bmNhdGUgY2FuRnVsbHlUcnVuY2F0ZSkKLXsKLSAgICBBU1NFUlQoIXZpc2libGVX
aWR0aCB8fCB2aXNpYmxlV2lkdGggPCBtX2xvZ2ljYWxXaWR0aCk7Ci0KLSAgICBpZiAoaXNUZXh0
KCkpIHsKLSAgICAgICAgbV9pc1RydW5jYXRlZCA9IHRydWU7Ci0gICAgICAgIGF1dG8mIGlubGlu
ZVRleHRCb3ggPSBkb3duY2FzdDxJbmxpbmVUZXh0Qm94PigqbV9sYXlvdXRCb3gpOwotICAgICAg
ICBhdXRvIGxlZnRTaWRlID0gVGV4dFV0aWw6OldvcmRCcmVha0xlZnQgeyB9OwotICAgICAgICBp
ZiAodmlzaWJsZVdpZHRoID4gMC5mKQotICAgICAgICAgICAgbGVmdFNpZGUgPSBUZXh0VXRpbDo6
YnJlYWtXb3JkKGlubGluZVRleHRCb3gsIG1fdGV4dENvbnRlbnQtPnN0YXJ0LCBtX3RleHRDb250
ZW50LT5sZW5ndGgsIG1fbG9naWNhbFdpZHRoLCB2aXNpYmxlV2lkdGgsIG1fbG9naWNhbExlZnQs
IG1fc3R5bGUuZm9udENhc2NhZGUoKSk7Ci0KLSAgICAgICAgaWYgKGxlZnRTaWRlLmxlbmd0aCkK
LSAgICAgICAgICAgIG1fdGV4dENvbnRlbnQtPnBhcnRpYWxseVZpc2libGVDb250ZW50ID0geyBs
ZWZ0U2lkZS5sZW5ndGgsIGxlZnRTaWRlLmxvZ2ljYWxXaWR0aCB9OwotICAgICAgICBlbHNlIGlm
IChjYW5GdWxseVRydW5jYXRlID09IENhbkZ1bGx5VHJ1bmNhdGU6Ok5vKSB7Ci0gICAgICAgICAg
ICBhdXRvIGZpcnN0Q2hhcmFjdGVyTGVuZ3RoID0gVGV4dFV0aWw6OmZpcnN0VXNlclBlcmNlaXZl
ZENoYXJhY3Rlckxlbmd0aChpbmxpbmVUZXh0Qm94LCBtX3RleHRDb250ZW50LT5zdGFydCwgbV90
ZXh0Q29udGVudC0+bGVuZ3RoKTsKLSAgICAgICAgICAgIGF1dG8gZmlyc3RDaGFyYWN0ZXJXaWR0
aCA9IFRleHRVdGlsOjp3aWR0aChpbmxpbmVUZXh0Qm94LCBpbmxpbmVUZXh0Qm94LnN0eWxlKCku
Zm9udENhc2NhZGUoKSwgbV90ZXh0Q29udGVudC0+c3RhcnQsIG1fdGV4dENvbnRlbnQtPnN0YXJ0
ICsgZmlyc3RDaGFyYWN0ZXJMZW5ndGgsIHsgfSwgVGV4dFV0aWw6OlVzZVRyYWlsaW5nV2hpdGVz
cGFjZU1lYXN1cmluZ09wdGltaXphdGlvbjo6Tm8pOwotICAgICAgICAgICAgbV90ZXh0Q29udGVu
dC0+cGFydGlhbGx5VmlzaWJsZUNvbnRlbnQgPSB7IGZpcnN0Q2hhcmFjdGVyTGVuZ3RoLCBmaXJz
dENoYXJhY3RlcldpZHRoIH07Ci0gICAgICAgIH0KLSAgICB9IGVsc2UKLSAgICAgICAgbV9pc1Ry
dW5jYXRlZCA9IGNhbkZ1bGx5VHJ1bmNhdGUgPT0gQ2FuRnVsbHlUcnVuY2F0ZTo6WWVzOwotCi0g
ICAgcmV0dXJuIG1faXNUcnVuY2F0ZWQ7Ci19Ci0KIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5oIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGlu
ZS5oCmluZGV4IGE4MjIzYWI3YTBkZS4uNDE0NGJmYmE0Y2NhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5l
TGluZS5oCkBAIC00Nyw3ICs0Nyw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZChjb25zdCBJ
bmxpbmVJdGVtJiwgY29uc3QgUmVuZGVyU3R5bGUmLCBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxX
aWR0aCk7CiAKICAgICBib29sIGhhc0NvbnRlbnQoKSBjb25zdDsKLSAgICBib29sIGlzQ29udGVu
dFRydW5jYXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudElzVHJ1bmNhdGVkOyB9CiAKICAg
ICBib29sIGNvbnRlbnROZWVkc0JpZGlSZW9yZGVyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9oYXNO
b25EZWZhdWx0QmlkaUxldmVsUnVuOyB9CiAKQEAgLTcwLDcgKzY5LDYgQEAgcHVibGljOgogICAg
IHZvaWQgaGFuZGxlT3ZlcmZsb3dpbmdOb25CcmVha2luZ1NwYWNlKFRyYWlsaW5nQ29udGVudEFj
dGlvbiwgSW5saW5lTGF5b3V0VW5pdCBvdmVyZmxvd2luZ1dpZHRoKTsKICAgICB2b2lkIHJlc2V0
QmlkaUxldmVsRm9yVHJhaWxpbmdXaGl0ZXNwYWNlKFVCaURpTGV2ZWwgcm9vdEJpZGlMZXZlbCk7
CiAgICAgdm9pZCBhcHBseVJ1bkV4cGFuc2lvbihJbmxpbmVMYXlvdXRVbml0IGhvcml6b250YWxB
dmFpbGFibGVTcGFjZSk7Ci0gICAgdm9pZCB0cnVuY2F0ZShJbmxpbmVMYXlvdXRVbml0IGxvZ2lj
YWxSaWdodCk7CiAKICAgICBzdHJ1Y3QgUnVuIHsKICAgICAgICAgZW51bSBjbGFzcyBUeXBlIDog
dWludDhfdCB7CkBAIC0xMDQsMTcgKzEwMiwxMCBAQCBwdWJsaWM6CiAgICAgICAgIGJvb2wgaXND
b250ZW50ZnVsKCkgY29uc3QgeyByZXR1cm4gKGlzVGV4dCgpICYmIHRleHRDb250ZW50KCktPmxl
bmd0aCkgfHwgaXNCb3goKSB8fCBpc0xpbmVCcmVhaygpIHx8IGlzTGlzdE1hcmtlcigpOyB9CiAg
ICAgICAgIGJvb2wgaXNHZW5lcmF0ZWQoKSBjb25zdCB7IHJldHVybiBpc0xpc3RNYXJrZXIoKTsg
fQogCi0gICAgICAgIGJvb2wgaXNUcnVuY2F0ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzVHJ1bmNh
dGVkOyB9Ci0KICAgICAgICAgY29uc3QgQm94JiBsYXlvdXRCb3goKSBjb25zdCB7IHJldHVybiAq
bV9sYXlvdXRCb3g7IH0KICAgICAgICAgc3RydWN0IFRleHQgewogICAgICAgICAgICAgc2l6ZV90
IHN0YXJ0IHsgMCB9OwogICAgICAgICAgICAgc2l6ZV90IGxlbmd0aCB7IDAgfTsKLSAgICAgICAg
ICAgIHN0cnVjdCBQYXJ0aWFsbHlWaXNpYmxlQ29udGVudCB7Ci0gICAgICAgICAgICAgICAgc2l6
ZV90IGxlbmd0aCB7IDAgfTsKLSAgICAgICAgICAgICAgICBJbmxpbmVMYXlvdXRVbml0IHdpZHRo
IHsgMC5mIH07Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxQYXJ0
aWFsbHlWaXNpYmxlQ29udGVudD4gcGFydGlhbGx5VmlzaWJsZUNvbnRlbnQgeyB9OwogICAgICAg
ICAgICAgYm9vbCBuZWVkc0h5cGhlbiB7IGZhbHNlIH07CiAgICAgICAgIH07CiAgICAgICAgIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8VGV4dD4mIHRleHRDb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV90
ZXh0Q29udGVudDsgfQpAQCAtMTcyLDggKzE2Myw2IEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBo
YXNUcmFpbGluZ0xldHRlclNwYWNpbmcoKSBjb25zdDsKICAgICAgICAgSW5saW5lTGF5b3V0VW5p
dCB0cmFpbGluZ0xldHRlclNwYWNpbmcoKSBjb25zdDsKICAgICAgICAgSW5saW5lTGF5b3V0VW5p
dCByZW1vdmVUcmFpbGluZ0xldHRlclNwYWNpbmcoKTsKLSAgICAgICAgZW51bSBjbGFzcyBDYW5G
dWxseVRydW5jYXRlIDogdWludDhfdCB7IFllcywgTm8gfTsKLSAgICAgICAgYm9vbCB0cnVuY2F0
ZShJbmxpbmVMYXlvdXRVbml0IHRydW5jYXRlZFdpZHRoLCBDYW5GdWxseVRydW5jYXRlID0gQ2Fu
RnVsbHlUcnVuY2F0ZTo6WWVzKTsKIAogICAgICAgICBUeXBlIG1fdHlwZSB7IFR5cGU6OlRleHQg
fTsKICAgICAgICAgY29uc3QgQm94KiBtX2xheW91dEJveCB7IG51bGxwdHIgfTsKQEAgLTE4NSw3
ICsxNzQsNiBAQCBwdWJsaWM6CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8VHJhaWxpbmdXaGl0ZXNw
YWNlPiBtX3RyYWlsaW5nV2hpdGVzcGFjZSB7IH07CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8c2l6
ZV90PiBtX2xhc3ROb25XaGl0ZXNwYWNlQ29udGVudFN0YXJ0IHsgfTsKICAgICAgICAgc3RkOjpv
cHRpb25hbDxUZXh0PiBtX3RleHRDb250ZW50OwotICAgICAgICBib29sIG1faXNUcnVuY2F0ZWQg
eyBmYWxzZSB9OwogICAgIH07CiAgICAgdXNpbmcgUnVuTGlzdCA9IFZlY3RvcjxSdW4sIDEwPjsK
ICAgICBjb25zdCBSdW5MaXN0JiBydW5zKCkgY29uc3QgeyByZXR1cm4gbV9ydW5zOyB9CkBAIC0y
ODEsNyArMjY5LDYgQEAgcHJpdmF0ZToKICAgICBJbmxpbmVCb3hMaXN0V2l0aENsb25lZERlY29y
YXRpb25FbmQgbV9pbmxpbmVCb3hMaXN0V2l0aENsb25lZERlY29yYXRpb25FbmQ7CiAgICAgSW5s
aW5lTGF5b3V0VW5pdCBtX2Nsb25lZEVuZERlY29yYXRpb25XaWR0aEZvcklubGluZUJveFJ1bnMg
eyAwIH07CiAgICAgYm9vbCBtX2hhc05vbkRlZmF1bHRCaWRpTGV2ZWxSdW4geyBmYWxzZSB9Owot
ICAgIGJvb2wgbV9jb250ZW50SXNUcnVuY2F0ZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc0Zp
cnN0Rm9ybWF0dGVkTGluZSB7IGZhbHNlIH07CiAgICAgVmVjdG9yPElubGluZUxheW91dFVuaXQ+
IG1faW5saW5lQm94TG9naWNhbExlZnRTdGFjazsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQnVpbGRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9Jbmxp
bmVMaW5lQnVpbGRlci5jcHAKaW5kZXggNjk5N2JlMDI1MDA2Li42N2FkNzk4OGY2YWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lu
bGluZUxpbmVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQnVpbGRlci5jcHAKQEAgLTM0OSwxNCArMzQ5LDEy
IEBAIExpbmVCdWlsZGVyOjpMaW5lQ29udGVudCBMaW5lQnVpbGRlcjo6bGF5b3V0SW5saW5lQ29u
dGVudChjb25zdCBMaW5lSW5wdXQmIGxpbmVJCiAgICAgaW5pdGlhbGl6ZShsaW5lSW5wdXQuaW5p
dGlhbExvZ2ljYWxSZWN0LCBpbml0aWFsQ29uc3RyYWludHNGb3JMaW5lKGxpbmVJbnB1dC5pbml0
aWFsTG9naWNhbFJlY3QsIHByZXZpb3VzTGluZUVuZHNXaXRoTGluZUJyZWFrKSwgbGluZUlucHV0
Lm5lZWRzTGF5b3V0UmFuZ2UsIHByZXZpb3VzTGluZSk7CiAKICAgICBhdXRvIGNvbW1pdHRlZENv
bnRlbnQgPSBwbGFjZUlubGluZUNvbnRlbnQobGluZUlucHV0Lm5lZWRzTGF5b3V0UmFuZ2UpOwot
ICAgIGF1dG8gY29tbWl0dGVkUmFuZ2UgPSBjbG9zZShsaW5lSW5wdXQubmVlZHNMYXlvdXRSYW5n
ZSwgbGluZUlucHV0LmVsbGlwc2lzUG9saWN5LCBjb21taXR0ZWRDb250ZW50KTsKKyAgICBhdXRv
IGNvbW1pdHRlZFJhbmdlID0gY2xvc2UobGluZUlucHV0Lm5lZWRzTGF5b3V0UmFuZ2UsIGNvbW1p
dHRlZENvbnRlbnQpOwogCiAgICAgYXV0byBpc0xhc3RMaW5lID0gaXNMYXN0TGluZVdpdGhJbmxp
bmVDb250ZW50KGNvbW1pdHRlZFJhbmdlLCBsaW5lSW5wdXQubmVlZHNMYXlvdXRSYW5nZS5lbmQs
IGNvbW1pdHRlZENvbnRlbnQucGFydGlhbFRyYWlsaW5nQ29udGVudExlbmd0aCk7CiAgICAgYXV0
byBwYXJ0aWFsT3ZlcmZsb3dpbmdDb250ZW50ID0gY29tbWl0dGVkQ29udGVudC5wYXJ0aWFsVHJh
aWxpbmdDb250ZW50TGVuZ3RoID8gc3RkOjptYWtlX29wdGlvbmFsPFBhcnRpYWxDb250ZW50Pihj
b21taXR0ZWRDb250ZW50LnBhcnRpYWxUcmFpbGluZ0NvbnRlbnRMZW5ndGgsIGNvbW1pdHRlZENv
bnRlbnQub3ZlcmZsb3dMb2dpY2FsV2lkdGgpIDogc3RkOjpudWxsb3B0OwogICAgIGF1dG8gaW5s
aW5lQmFzZURpcmVjdGlvbiA9IG1fbGluZS5ydW5zKCkuaXNFbXB0eSgpID8gVGV4dERpcmVjdGlv
bjo6TFRSIDogaW5saW5lQmFzZURpcmVjdGlvbkZvckxpbmVDb250ZW50KCk7CiAgICAgYXV0byBj
b250ZW50TG9naWNhbExlZnQgPSBob3Jpem9udGFsQWxpZ25tZW50T2Zmc2V0KGlzTGFzdExpbmUp
OwotICAgIGF1dG8gY29udGVudElzVHJ1bmNhdGVkSW5CbG9ja0RpcmVjdGlvbiA9ICghaXNMYXN0
TGluZSAmJiBsaW5lSW5wdXQuZWxsaXBzaXNQb2xpY3kgPT0gTGluZUJ1aWxkZXI6OkxpbmVJbnB1
dDo6TGluZUVuZGluZ0VsbGlwc2lzUG9saWN5OjpXaGVuQ29udGVudE92ZXJmbG93c0luQmxvY2tE
aXJlY3Rpb24pIHx8IGxpbmVJbnB1dC5lbGxpcHNpc1BvbGljeSA9PSBMaW5lQnVpbGRlcjo6TGlu
ZUlucHV0OjpMaW5lRW5kaW5nRWxsaXBzaXNQb2xpY3k6OkFsd2F5czsKLSAgICBhdXRvIGxpbmVO
ZWVkc1RyYWlsaW5nRWxsaXBzaXMgPSBtX2xpbmUuaXNDb250ZW50VHJ1bmNhdGVkKCkgfHwgY29u
dGVudElzVHJ1bmNhdGVkSW5CbG9ja0RpcmVjdGlvbjsKIAogICAgIHJldHVybiB7IGNvbW1pdHRl
ZFJhbmdlCiAgICAgICAgICwgcGFydGlhbE92ZXJmbG93aW5nQ29udGVudApAQCAtMzc2LDcgKzM3
NCw2IEBAIExpbmVCdWlsZGVyOjpMaW5lQ29udGVudCBMaW5lQnVpbGRlcjo6bGF5b3V0SW5saW5l
Q29udGVudChjb25zdCBMaW5lSW5wdXQmIGxpbmVJCiAgICAgICAgICwgbV9saW5lLm5vblNwYW5u
aW5nSW5saW5lTGV2ZWxCb3hDb3VudCgpCiAgICAgICAgICwgY29tcHV0ZWRWaXN1YWxPcmRlciht
X2xpbmUpCiAgICAgICAgICwgaW5saW5lQmFzZURpcmVjdGlvbgotICAgICAgICAsIGxpbmVOZWVk
c1RyYWlsaW5nRWxsaXBzaXMKICAgICAgICAgLCBtX2xpbmUucnVucygpIH07CiB9CiAKQEAgLTM5
MCw3ICszODcsNyBAQCBMaW5lQnVpbGRlcjo6SW50cmluc2ljQ29udGVudCBMaW5lQnVpbGRlcjo6
Y29tcHV0ZWRJbnRyaW5zaWNXaWR0aChjb25zdCBJbmxpbmVJdAogICAgIGluaXRpYWxpemUoaW5p
dGlhbFJlY3QsIGxpbmVDb25zdHJhaW50cywgbmVlZHNMYXlvdXRSYW5nZSwgcHJldmlvdXNMaW5l
KTsKIAogICAgIGF1dG8gY29tbWl0dGVkQ29udGVudCA9IHBsYWNlSW5saW5lQ29udGVudChuZWVk
c0xheW91dFJhbmdlKTsKLSAgICBhdXRvIGNvbW1pdHRlZFJhbmdlID0gY2xvc2UobmVlZHNMYXlv
dXRSYW5nZSwgTGluZUlucHV0OjpMaW5lRW5kaW5nRWxsaXBzaXNQb2xpY3k6Ok5vLCBjb21taXR0
ZWRDb250ZW50KTsKKyAgICBhdXRvIGNvbW1pdHRlZFJhbmdlID0gY2xvc2UobmVlZHNMYXlvdXRS
YW5nZSwgY29tbWl0dGVkQ29udGVudCk7CiAgICAgYXV0byBsaW5lV2lkdGggPSBsaW5lQ29uc3Ry
YWludHMubG9naWNhbFJlY3QubGVmdCgpICsgbGluZUNvbnN0cmFpbnRzLm1hcmdpblN0YXJ0ICsg
bV9saW5lLmNvbnRlbnRMb2dpY2FsV2lkdGgoKTsKICAgICBhdXRvIG92ZXJmbG93ID0gc3RkOjpv
cHRpb25hbDxQYXJ0aWFsQ29udGVudD4geyB9OwogICAgIGlmIChjb21taXR0ZWRDb250ZW50LnBh
cnRpYWxUcmFpbGluZ0NvbnRlbnRMZW5ndGgpCkBAIC01MzksNyArNTM2LDcgQEAgTGluZUJ1aWxk
ZXI6OkNvbW1pdHRlZENvbnRlbnQgTGluZUJ1aWxkZXI6OnBsYWNlSW5saW5lQ29udGVudChjb25z
dCBJbmxpbmVJdGVtUmEKICAgICByZXR1cm4geyBjb21taXR0ZWRJdGVtQ291bnQsIHsgfSB9Owog
fQogCi1MaW5lQnVpbGRlcjo6SW5saW5lSXRlbVJhbmdlIExpbmVCdWlsZGVyOjpjbG9zZShjb25z
dCBJbmxpbmVJdGVtUmFuZ2UmIG5lZWRzTGF5b3V0UmFuZ2UsIExpbmVJbnB1dDo6TGluZUVuZGlu
Z0VsbGlwc2lzUG9saWN5IGVsbGlwc2lzUG9saWN5LCBjb25zdCBDb21taXR0ZWRDb250ZW50JiBj
b21taXR0ZWRDb250ZW50KQorTGluZUJ1aWxkZXI6OklubGluZUl0ZW1SYW5nZSBMaW5lQnVpbGRl
cjo6Y2xvc2UoY29uc3QgSW5saW5lSXRlbVJhbmdlJiBuZWVkc0xheW91dFJhbmdlLCBjb25zdCBD
b21taXR0ZWRDb250ZW50JiBjb21taXR0ZWRDb250ZW50KQogewogICAgIEFTU0VSVChjb21taXR0
ZWRDb250ZW50Lml0ZW1Db3VudCB8fCAhbV9wbGFjZWRGbG9hdHMuaXNFbXB0eSgpIHx8IG1fbGlu
ZUlzQ29uc3RyYWluZWRCeUZsb2F0KTsKICAgICBhdXRvJiByb290U3R5bGUgPSB0aGlzLT5yb290
U3R5bGUoKTsKQEAgLTU4OSw0MSArNTg2LDYgQEAgTGluZUJ1aWxkZXI6OklubGluZUl0ZW1SYW5n
ZSBMaW5lQnVpbGRlcjo6Y2xvc2UoY29uc3QgSW5saW5lSXRlbVJhbmdlJiBuZWVkc0xheW8KICAg
ICAgICAgbGluZUVuZHNXaXRoSHlwaGVuID0gbGFzdFRleHRDb250ZW50ICYmIGxhc3RUZXh0Q29u
dGVudC0+bmVlZHNIeXBoZW47CiAgICAgfQogICAgIG1fc3VjY2Vzc2l2ZUh5cGhlbmF0ZWRMaW5l
Q291bnQgPSBsaW5lRW5kc1dpdGhIeXBoZW4gPyBtX3N1Y2Nlc3NpdmVIeXBoZW5hdGVkTGluZUNv
dW50ICsgMSA6IDA7Ci0KLSAgICBhdXRvIGhhbmRsZUxpbmVFbmRpbmdFbGxpcHNpc1BvbGljeSA9
IFsmXSB7Ci0gICAgICAgIHN3aXRjaCAoZWxsaXBzaXNQb2xpY3kpIHsKLSAgICAgICAgY2FzZSBM
aW5lSW5wdXQ6OkxpbmVFbmRpbmdFbGxpcHNpc1BvbGljeTo6Tm86Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBMaW5lSW5wdXQ6OkxpbmVFbmRpbmdFbGxpcHNpc1BvbGljeTo6V2hl
bkNvbnRlbnRPdmVyZmxvd3NJbklubGluZURpcmVjdGlvbjoKLSAgICAgICAgICAgIGlmIChtX2xp
bmUuY29udGVudExvZ2ljYWxXaWR0aCgpID4gaG9yaXpvbnRhbEF2YWlsYWJsZVNwYWNlKSB7Ci0g
ICAgICAgICAgICAgICAgYXV0byBlbGxpcHNpc1dpZHRoID0gcm9vdFN0eWxlLmZvbnRDYXNjYWRl
KCkud2lkdGgoVGV4dFV0aWw6OmVsbGlwc2lzVGV4dFJ1bigpKTsKLSAgICAgICAgICAgICAgICBh
dXRvIGxvZ2ljYWxSaWdodEZvckNvbnRlbnRXaXRob3V0RWxsaXBzaXMgPSBzdGQ6Om1heCgwLmYs
IGhvcml6b250YWxBdmFpbGFibGVTcGFjZSAtIGVsbGlwc2lzV2lkdGgpOwotICAgICAgICAgICAg
ICAgIG1fbGluZS50cnVuY2F0ZShsb2dpY2FsUmlnaHRGb3JDb250ZW50V2l0aG91dEVsbGlwc2lz
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIExpbmVJ
bnB1dDo6TGluZUVuZGluZ0VsbGlwc2lzUG9saWN5OjpXaGVuQ29udGVudE92ZXJmbG93c0luQmxv
Y2tEaXJlY3Rpb246Ci0gICAgICAgICAgICBpZiAoaXNMYXN0TGluZSkKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIEZBTExUSFJPVUdIOwotICAgICAgICBjYXNlIExpbmVJbnB1
dDo6TGluZUVuZGluZ0VsbGlwc2lzUG9saWN5OjpBbHdheXM6IHsKLSAgICAgICAgICAgIGF1dG8g
YXZhaWxhYmxlU3BhY2VBZnRlckNvbnRlbnQgPSBob3Jpem9udGFsQXZhaWxhYmxlU3BhY2U7Ci0g
ICAgICAgICAgICBpZiAoYXV0byBjb250ZW50TG9naWNhbExlZnQgPSBob3Jpem9udGFsQWxpZ25t
ZW50T2Zmc2V0KGlzTGFzdExpbmUpKSB7Ci0gICAgICAgICAgICAgICAgLy8gQWxpZ25tZW50IG1h
eSBtb3ZlIGNvbnRlbnQgd2l0aGluIHRoZSBsaW5lIGJveCBsZWF2bmlnIGxlc3MgKG9yIHplcm8p
IHNwYWNlIGZvciBlbGxpcHNpcyAoZS5nLiB0ZXh0LWFsaWduOiByaWdodCkuCi0gICAgICAgICAg
ICAgICAgYXZhaWxhYmxlU3BhY2VBZnRlckNvbnRlbnQgLT0gY29udGVudExvZ2ljYWxMZWZ0Owot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgYXV0byBlbGxpcHNpc1dpZHRoID0gcm9vdFN0eWxl
LmZvbnRDYXNjYWRlKCkud2lkdGgoVGV4dFV0aWw6OmVsbGlwc2lzVGV4dFJ1bigpKTsKLSAgICAg
ICAgICAgIGlmIChtX2xpbmUuY29udGVudExvZ2ljYWxXaWR0aCgpICYmIG1fbGluZS5jb250ZW50
TG9naWNhbFdpZHRoKCkgKyBlbGxpcHNpc1dpZHRoID4gYXZhaWxhYmxlU3BhY2VBZnRlckNvbnRl
bnQpIHsKLSAgICAgICAgICAgICAgICBhdXRvIGxvZ2ljYWxSaWdodEZvckNvbnRlbnRXaXRob3V0
RWxsaXBzaXMgPSBzdGQ6Om1heCgwLmYsIGF2YWlsYWJsZVNwYWNlQWZ0ZXJDb250ZW50IC0gZWxs
aXBzaXNXaWR0aCk7Ci0gICAgICAgICAgICAgICAgbV9saW5lLnRydW5jYXRlKGxvZ2ljYWxSaWdo
dEZvckNvbnRlbnRXaXRob3V0RWxsaXBzaXMpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9OwotICAg
IGhhbmRsZUxpbmVFbmRpbmdFbGxpcHNpc1BvbGljeSgpOwogICAgIHJldHVybiBsaW5lUmFuZ2U7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQnVpbGRlci5oCmluZGV4IDQ4NjExZDU0
MWRmOC4uNjE2YjdmNDY4MmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQnVpbGRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVy
LmgKQEAgLTQyLDYgKzQyLDE0IEBAIHB1YmxpYzoKICAgICBMaW5lQnVpbGRlcihJbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dCYsIEJsb2NrTGF5b3V0U3RhdGUmLCBIb3Jpem9udGFsQ29uc3RyYWludHMg
cm9vdEhvcml6b250YWxDb25zdHJhaW50cywgY29uc3QgSW5saW5lSXRlbXMmLCBzdGQ6Om9wdGlv
bmFsPEludHJpbnNpY1dpZHRoTW9kZT4gPSBzdGQ6Om51bGxvcHQpOwogICAgIExpbmVCdWlsZGVy
KGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0JiwgY29uc3QgSW5saW5lSXRlbXMmLCBzdGQ6
Om9wdGlvbmFsPEludHJpbnNpY1dpZHRoTW9kZT4pOwogCisgICAgZW51bSBjbGFzcyBMaW5lRW5k
aW5nRWxsaXBzaXNQb2xpY3kgOiB1aW50OF90IHsKKyAgICAgICAgTm8sCisgICAgICAgIFdoZW5D
b250ZW50T3ZlcmZsb3dzSW5JbmxpbmVEaXJlY3Rpb24sCisgICAgICAgIFdoZW5Db250ZW50T3Zl
cmZsb3dzSW5CbG9ja0RpcmVjdGlvbiwKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJl
IHVzZWQgd2hlbiB3ZSByZWFsaXplIHRoZSBsYXN0IGxpbmUgb2YgdGhpcyBJRkMgaXMgd2hlcmUg
dGhlIGNvbnRlbnQgaXMgdHJ1bmNhdGVkIChzaWJsaW5nIElGQyBoYXMgbW9yZSBsaW5lcykuCisg
ICAgICAgIEFsd2F5cworICAgIH07CisKICAgICBzdHJ1Y3QgSW5saW5lSXRlbVJhbmdlIHsKICAg
ICAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gc3RhcnQgPT0gZW5kOyB9CiAgICAg
ICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gZW5kIC0gc3RhcnQ7IH0KQEAgLTUxLDE1
ICs1OSw2IEBAIHB1YmxpYzoKICAgICBzdHJ1Y3QgTGluZUlucHV0IHsKICAgICAgICAgSW5saW5l
SXRlbVJhbmdlIG5lZWRzTGF5b3V0UmFuZ2U7CiAgICAgICAgIElubGluZVJlY3QgaW5pdGlhbExv
Z2ljYWxSZWN0OwotCi0gICAgICAgIGVudW0gY2xhc3MgTGluZUVuZGluZ0VsbGlwc2lzUG9saWN5
IDogdWludDhfdCB7Ci0gICAgICAgICAgICBObywKLSAgICAgICAgICAgIFdoZW5Db250ZW50T3Zl
cmZsb3dzSW5JbmxpbmVEaXJlY3Rpb24sCi0gICAgICAgICAgICBXaGVuQ29udGVudE92ZXJmbG93
c0luQmxvY2tEaXJlY3Rpb24sCi0gICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUg
dXNlZCB3aGVuIHdlIHJlYWxpemUgdGhlIGxhc3QgbGluZSBvZiB0aGlzIElGQyBpcyB3aGVyZSB0
aGUgY29udGVudCBpcyB0cnVuY2F0ZWQgKHNpYmxpbmcgSUZDIGhhcyBtb3JlIGxpbmVzKS4KLSAg
ICAgICAgICAgIEFsd2F5cwotICAgICAgICB9OwotICAgICAgICBMaW5lRW5kaW5nRWxsaXBzaXNQ
b2xpY3kgZWxsaXBzaXNQb2xpY3kgeyBMaW5lRW5kaW5nRWxsaXBzaXNQb2xpY3k6Ok5vIH07CiAg
ICAgfTsKICAgICBzdHJ1Y3QgUGFydGlhbENvbnRlbnQgewogICAgICAgICBQYXJ0aWFsQ29udGVu
dChzaXplX3QsIHN0ZDo6b3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4pOwpAQCAtMTA0LDcgKzEw
Myw2IEBAIHB1YmxpYzoKICAgICAgICAgc2l6ZV90IG5vblNwYW5uaW5nSW5saW5lTGV2ZWxCb3hD
b3VudCB7IDAgfTsKICAgICAgICAgVmVjdG9yPGludDMyX3Q+IHZpc3VhbE9yZGVyTGlzdDsKICAg
ICAgICAgVGV4dERpcmVjdGlvbiBpbmxpbmVCYXNlRGlyZWN0aW9uIHsgVGV4dERpcmVjdGlvbjo6
TFRSIH07Ci0gICAgICAgIGJvb2wgbGluZU5lZWRzVHJhaWxpbmdFbGxpcHNpcyB7IGZhbHNlIH07
CiAgICAgICAgIGNvbnN0IExpbmU6OlJ1bkxpc3QmIHJ1bnM7CiAgICAgfTsKICAgICBMaW5lQ29u
dGVudCBsYXlvdXRJbmxpbmVDb250ZW50KGNvbnN0IExpbmVJbnB1dCYsIGNvbnN0IHN0ZDo6b3B0
aW9uYWw8UHJldmlvdXNMaW5lPiYpOwpAQCAtMTU2LDcgKzE1NCw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4gb3ZlcmZsb3dMb2dpY2FsV2lkdGgg
eyB9OwogICAgIH07CiAgICAgQ29tbWl0dGVkQ29udGVudCBwbGFjZUlubGluZUNvbnRlbnQoY29u
c3QgSW5saW5lSXRlbVJhbmdlJik7Ci0gICAgSW5saW5lSXRlbVJhbmdlIGNsb3NlKGNvbnN0IElu
bGluZUl0ZW1SYW5nZSYgbmVlZHNMYXlvdXRSYW5nZSwgTGluZUlucHV0OjpMaW5lRW5kaW5nRWxs
aXBzaXNQb2xpY3ksIGNvbnN0IENvbW1pdHRlZENvbnRlbnQmKTsKKyAgICBJbmxpbmVJdGVtUmFu
Z2UgY2xvc2UoY29uc3QgSW5saW5lSXRlbVJhbmdlJiBuZWVkc0xheW91dFJhbmdlLCBjb25zdCBD
b21taXR0ZWRDb250ZW50Jik7CiAKICAgICBJbmxpbmVMYXlvdXRVbml0IGlubGluZUl0ZW1XaWR0
aChjb25zdCBJbmxpbmVJdGVtJiwgSW5saW5lTGF5b3V0VW5pdCBjb250ZW50TG9naWNhbExlZnQp
IGNvbnN0OwogICAgIGJvb2wgaXNMYXN0TGluZVdpdGhJbmxpbmVDb250ZW50KGNvbnN0IElubGlu
ZUl0ZW1SYW5nZSYgbGluZVJhbmdlLCBzaXplX3QgbGFzdElubGluZUl0ZW1JbmRleCwgYm9vbCBo
YXNQYXJ0aWFsVHJhaWxpbmdDb250ZW50KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxh
eUJveC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
ZGlzcGxheS9JbmxpbmVEaXNwbGF5Qm94LmgKaW5kZXggZDg3MTA5ZDUzYmMxLi4zN2I4Y2YxZjBk
YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUJveC5o
CkBAIC0zOSw3ICszOSw3IEBAIHN0cnVjdCBCb3ggewogICAgIHN0cnVjdCBUZXh0IHsKICAgICAg
ICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKLSAgICAgICAg
VGV4dChzaXplX3QgcG9zaXRpb24sIHNpemVfdCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgb3JpZ2lu
YWxDb250ZW50LCBTdHJpbmcgYWRqdXN0ZWRDb250ZW50VG9SZW5kZXIgPSBTdHJpbmcoKSwgYm9v
bCBoYXNIeXBoZW4gPSBmYWxzZSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHBhcnRpYWxseVZpc2li
bGVDb250ZW50TGVuZ3RoID0gc3RkOjpudWxsb3B0KTsKKyAgICAgICAgVGV4dChzaXplX3QgcG9z
aXRpb24sIHNpemVfdCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxDb250ZW50LCBTdHJp
bmcgYWRqdXN0ZWRDb250ZW50VG9SZW5kZXIgPSBTdHJpbmcoKSwgYm9vbCBoYXNIeXBoZW4gPSBm
YWxzZSk7CiAKICAgICAgICAgc2l6ZV90IHN0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9zdGFydDsg
fQogICAgICAgICBzaXplX3QgZW5kKCkgY29uc3QgeyByZXR1cm4gc3RhcnQoKSArIGxlbmd0aCgp
OyB9CkBAIC01MCw2ICs1MCw4IEBAIHN0cnVjdCBCb3ggewogCiAgICAgICAgIGJvb2wgaGFzSHlw
aGVuKCkgY29uc3QgeyByZXR1cm4gbV9oYXNIeXBoZW47IH0KIAorICAgICAgICB2b2lkIHNldFBh
cnRpYWxseVZpc2libGVDb250ZW50TGVuZ3RoKHNpemVfdCB0cnVuY2F0ZWRMZW5ndGgpIHsgbV9w
YXJ0aWFsbHlWaXNpYmxlQ29udGVudExlbmd0aCA9IHRydW5jYXRlZExlbmd0aDsgfQorCiAgICAg
cHJpdmF0ZToKICAgICAgICAgZnJpZW5kIHN0cnVjdCBCb3g7CiAKQEAgLTc3LDcgKzc5LDcgQEAg
c3RydWN0IEJveCB7CiAgICAgICAgIEZpcnN0ID0gMSA8PCAwLAogICAgICAgICBMYXN0ICA9IDEg
PDwgMQogICAgIH07Ci0gICAgQm94KHNpemVfdCBsaW5lSW5kZXgsIFR5cGUsIGNvbnN0IExheW91
dDo6Qm94JiwgVUJpRGlMZXZlbCwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiBp
bmtPdmVyZmxvdywgRXhwYW5zaW9uLCBzdGQ6Om9wdGlvbmFsPFRleHQ+ID0gc3RkOjpudWxsb3B0
LCBib29sIGhhc0NvbnRlbnQgPSB0cnVlLCBib29sIGlzRnVsbHlUcnVuY2F0ZWQgPSBmYWxzZSwg
T3B0aW9uU2V0PFBvc2l0aW9uV2l0aGluSW5saW5lTGV2ZWxCb3g+ID0geyB9KTsKKyAgICBCb3go
c2l6ZV90IGxpbmVJbmRleCwgVHlwZSwgY29uc3QgTGF5b3V0OjpCb3gmLCBVQmlEaUxldmVsLCBj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmIGlua092ZXJmbG93LCBFeHBhbnNpb24s
IHN0ZDo6b3B0aW9uYWw8VGV4dD4gPSBzdGQ6Om51bGxvcHQsIGJvb2wgaGFzQ29udGVudCA9IHRy
dWUsIE9wdGlvblNldDxQb3NpdGlvbldpdGhpbklubGluZUxldmVsQm94PiA9IHsgfSk7CiAKICAg
ICBib29sIGlzVGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBUeXBlOjpUZXh0IHx8IGlz
V29yZFNlcGFyYXRvcigpOyB9CiAgICAgYm9vbCBpc1dvcmRTZXBhcmF0b3IoKSBjb25zdCB7IHJl
dHVybiBtX3R5cGUgPT0gVHlwZTo6V29yZFNlcGFyYXRvcjsgfQpAQCAtMTI0LDExICsxMjYsMTIg
QEAgc3RydWN0IEJveCB7CiAgICAgICAgIG1fdW5mbGlwcGVkVmlzdWFsUmVjdC5tb3ZlKHsgb2Zm
c2V0LCB7IH0gfSk7CiAgICAgICAgIG1faW5rT3ZlcmZsb3cubW92ZSh7IG9mZnNldCwgeyB9IH0p
OwogICAgIH0KKwogICAgIHZvaWQgYWRqdXN0SW5rT3ZlcmZsb3coY29uc3QgRmxvYXRSZWN0JiBj
aGlsZEJvcmRlckJveCkgeyByZXR1cm4gbV9pbmtPdmVyZmxvdy51bml0ZUV2ZW5JZkVtcHR5KGNo
aWxkQm9yZGVyQm94KTsgfQotICAgIHZvaWQgc2V0TGVmdChmbG9hdCBweXNpY2FsTGVmdCkKKyAg
ICB2b2lkIHNldExlZnQoZmxvYXQgcGh5c2ljYWxMZWZ0KQogICAgIHsKLSAgICAgICAgYXV0byBv
ZmZzZXQgPSBweXNpY2FsTGVmdCAtIGxlZnQoKTsKLSAgICAgICAgbV91bmZsaXBwZWRWaXN1YWxS
ZWN0LnNldFgocHlzaWNhbExlZnQpOworICAgICAgICBhdXRvIG9mZnNldCA9IHBoeXNpY2FsTGVm
dCAtIGxlZnQoKTsKKyAgICAgICAgbV91bmZsaXBwZWRWaXN1YWxSZWN0LnNldFgocGh5c2ljYWxM
ZWZ0KTsKICAgICAgICAgbV9pbmtPdmVyZmxvdy5zZXRYKG1faW5rT3ZlcmZsb3cueCgpICsgb2Zm
c2V0KTsKICAgICB9CiAgICAgdm9pZCBzZXRSaWdodChmbG9hdCBwaHlzaWNhbFJpZ2h0KQpAQCAt
MTU1LDYgKzE1OCw3IEBAIHN0cnVjdCBCb3ggewogICAgICAgICBtX2lua092ZXJmbG93ID0gaW5r
T3ZlcmZsb3c7CiAgICAgfQogICAgIHZvaWQgc2V0SGFzQ29udGVudCgpIHsgbV9oYXNDb250ZW50
ID0gdHJ1ZTsgfQorICAgIHZvaWQgc2V0SXNGdWxseVRydW5jYXRlZCgpIHsgbV9pc0Z1bGx5VHJ1
bmNhdGVkID0gdHJ1ZTsgfQogCiAgICAgc3RkOjpvcHRpb25hbDxUZXh0PiYgdGV4dCgpIHsgcmV0
dXJuIG1fdGV4dDsgfQogICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8VGV4dD4mIHRleHQoKSBjb25z
dCB7IHJldHVybiBtX3RleHQ7IH0KQEAgLTE5Miw3ICsxOTYsNyBAQCBwcml2YXRlOgogICAgIHN0
ZDo6b3B0aW9uYWw8VGV4dD4gbV90ZXh0OwogfTsKIAotaW5saW5lIEJveDo6Qm94KHNpemVfdCBs
aW5lSW5kZXgsIFR5cGUgdHlwZSwgY29uc3QgTGF5b3V0OjpCb3gmIGxheW91dEJveCwgVUJpRGlM
ZXZlbCBiaWRpTGV2ZWwsIGNvbnN0IEZsb2F0UmVjdCYgcGh5c2ljYWxSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIGlua092ZXJmbG93LCBFeHBhbnNpb24gZXhwYW5zaW9uLCBzdGQ6Om9wdGlvbmFsPFRl
eHQ+IHRleHQsIGJvb2wgaGFzQ29udGVudCwgYm9vbCBpc0Z1bGx5VHJ1bmNhdGVkLCBPcHRpb25T
ZXQ8UG9zaXRpb25XaXRoaW5JbmxpbmVMZXZlbEJveD4gcG9zaXRpb25XaXRoaW5JbmxpbmVMZXZl
bEJveCkKK2lubGluZSBCb3g6OkJveChzaXplX3QgbGluZUluZGV4LCBUeXBlIHR5cGUsIGNvbnN0
IExheW91dDo6Qm94JiBsYXlvdXRCb3gsIFVCaURpTGV2ZWwgYmlkaUxldmVsLCBjb25zdCBGbG9h
dFJlY3QmIHBoeXNpY2FsUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBpbmtPdmVyZmxvdywgRXhwYW5z
aW9uIGV4cGFuc2lvbiwgc3RkOjpvcHRpb25hbDxUZXh0PiB0ZXh0LCBib29sIGhhc0NvbnRlbnQs
IE9wdGlvblNldDxQb3NpdGlvbldpdGhpbklubGluZUxldmVsQm94PiBwb3NpdGlvbldpdGhpbklu
bGluZUxldmVsQm94KQogICAgIDogbV9saW5lSW5kZXgobGluZUluZGV4KQogICAgICwgbV90eXBl
KHR5cGUpCiAgICAgLCBtX2xheW91dEJveChsYXlvdXRCb3gpCkBAIC0yMDIsMTYgKzIwNiwxNCBA
QCBpbmxpbmUgQm94OjpCb3goc2l6ZV90IGxpbmVJbmRleCwgVHlwZSB0eXBlLCBjb25zdCBMYXlv
dXQ6OkJveCYgbGF5b3V0Qm94LCBVQmlEaQogICAgICwgbV9oYXNDb250ZW50KGhhc0NvbnRlbnQp
CiAgICAgLCBtX2lzRmlyc3RGb3JMYXlvdXRCb3gocG9zaXRpb25XaXRoaW5JbmxpbmVMZXZlbEJv
eC5jb250YWlucyhQb3NpdGlvbldpdGhpbklubGluZUxldmVsQm94OjpGaXJzdCkpCiAgICAgLCBt
X2lzTGFzdEZvckxheW91dEJveChwb3NpdGlvbldpdGhpbklubGluZUxldmVsQm94LmNvbnRhaW5z
KFBvc2l0aW9uV2l0aGluSW5saW5lTGV2ZWxCb3g6Okxhc3QpKQotICAgICwgbV9pc0Z1bGx5VHJ1
bmNhdGVkKGlzRnVsbHlUcnVuY2F0ZWQpCiAgICAgLCBtX2V4cGFuc2lvbihleHBhbnNpb24pCiAg
ICAgLCBtX3RleHQodGV4dCkKIHsKIH0KIAotaW5saW5lIEJveDo6VGV4dDo6VGV4dChzaXplX3Qg
c3RhcnQsIHNpemVfdCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxDb250ZW50LCBTdHJp
bmcgYWRqdXN0ZWRDb250ZW50VG9SZW5kZXIsIGJvb2wgaGFzSHlwaGVuLCBzdGQ6Om9wdGlvbmFs
PHNpemVfdD4gcGFydGlhbGx5VmlzaWJsZUNvbnRlbnRMZW5ndGgpCitpbmxpbmUgQm94OjpUZXh0
OjpUZXh0KHNpemVfdCBzdGFydCwgc2l6ZV90IGxlbmd0aCwgY29uc3QgU3RyaW5nJiBvcmlnaW5h
bENvbnRlbnQsIFN0cmluZyBhZGp1c3RlZENvbnRlbnRUb1JlbmRlciwgYm9vbCBoYXNIeXBoZW4p
CiAgICAgOiBtX3N0YXJ0KHN0YXJ0KQogICAgICwgbV9sZW5ndGgobGVuZ3RoKQotICAgICwgbV9w
YXJ0aWFsbHlWaXNpYmxlQ29udGVudExlbmd0aChwYXJ0aWFsbHlWaXNpYmxlQ29udGVudExlbmd0
aCkKICAgICAsIG1faGFzSHlwaGVuKGhhc0h5cGhlbikKICAgICAsIG1fb3JpZ2luYWxDb250ZW50
KG9yaWdpbmFsQ29udGVudCkKICAgICAsIG1fYWRqdXN0ZWRDb250ZW50VG9SZW5kZXIoYWRqdXN0
ZWRDb250ZW50VG9SZW5kZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlDb250ZW50QnVpbGRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9k
aXNwbGF5L0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5jcHAKaW5kZXggYWQ5OWU1N2JhNzBh
Li4yY2IxOWVjNGIxY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9k
aXNwbGF5L0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5jcHAKQEAgLTIyMiw5ICsyMjIsNiBA
QCB2b2lkIElubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6YXBwZW5kVGV4dERpc3BsYXlCb3go
Y29uc3QgTGluZTo6UnVuJiBsaW5lUnVuLAogICAgIGF1dG8gYWRqdXN0ZWRDb250ZW50VG9SZW5k
ZXIgPSBbJl0gewogICAgICAgICByZXR1cm4gdGV4dC0+bmVlZHNIeXBoZW4gPyBtYWtlU3RyaW5n
KFN0cmluZ1ZpZXcoY29udGVudCkuc3Vic3RyaW5nKHRleHQtPnN0YXJ0LCB0ZXh0LT5sZW5ndGgp
LCBzdHlsZS5oeXBoZW5TdHJpbmcoKSkgOiBTdHJpbmcoKTsKICAgICB9OwotICAgIGF1dG8gaXNG
dWxseVRydW5jYXRlZCA9IGxpbmVSdW4uaXNUcnVuY2F0ZWQoKSAmJiAhdGV4dC0+cGFydGlhbGx5
VmlzaWJsZUNvbnRlbnQ7Ci0gICAgYXV0byBwYXJ0aWFsbHlWaXNpYmxlQ29udGVudExlbmd0aCA9
ICFpc0Z1bGx5VHJ1bmNhdGVkICYmIHRleHQtPnBhcnRpYWxseVZpc2libGVDb250ZW50ID8gc3Rk
OjptYWtlX29wdGlvbmFsKHRleHQtPnBhcnRpYWxseVZpc2libGVDb250ZW50LT5sZW5ndGgpOiBz
dGQ6Om51bGxvcHQ7Ci0KICAgICBib3hlcy5hcHBlbmQoeyBtX2xpbmVJbmRleAogICAgICAgICAs
IGxpbmVSdW4uaXNXb3JkU2VwYXJhdG9yKCkgPyBJbmxpbmVEaXNwbGF5OjpCb3g6OlR5cGU6Oldv
cmRTZXBhcmF0b3IgOiBJbmxpbmVEaXNwbGF5OjpCb3g6OlR5cGU6OlRleHQKICAgICAgICAgLCBp
bmxpbmVUZXh0Qm94CkBAIC0yMzIsOSArMjI5LDggQEAgdm9pZCBJbmxpbmVEaXNwbGF5Q29udGVu
dEJ1aWxkZXI6OmFwcGVuZFRleHREaXNwbGF5Qm94KGNvbnN0IExpbmU6OlJ1biYgbGluZVJ1biwK
ICAgICAgICAgLCB0ZXh0UnVuUmVjdAogICAgICAgICAsIGlua092ZXJmbG93KCkKICAgICAgICAg
LCBsaW5lUnVuLmV4cGFuc2lvbigpCi0gICAgICAgICwgSW5saW5lRGlzcGxheTo6Qm94OjpUZXh0
IHsgdGV4dC0+c3RhcnQsIHRleHQtPmxlbmd0aCwgY29udGVudCwgYWRqdXN0ZWRDb250ZW50VG9S
ZW5kZXIoKSwgdGV4dC0+bmVlZHNIeXBoZW4sIHBhcnRpYWxseVZpc2libGVDb250ZW50TGVuZ3Ro
IH0KKyAgICAgICAgLCBJbmxpbmVEaXNwbGF5OjpCb3g6OlRleHQgeyB0ZXh0LT5zdGFydCwgdGV4
dC0+bGVuZ3RoLCBjb250ZW50LCBhZGp1c3RlZENvbnRlbnRUb1JlbmRlcigpLCB0ZXh0LT5uZWVk
c0h5cGhlbiB9CiAgICAgICAgICwgdHJ1ZQotICAgICAgICAsIGlzRnVsbHlUcnVuY2F0ZWQKICAg
ICAgICAgLCB7IH0KICAgICB9KTsKIH0KQEAgLTI5OSw3ICsyOTUsNiBAQCB2b2lkIElubGluZURp
c3BsYXlDb250ZW50QnVpbGRlcjo6YXBwZW5kQXRvbWljSW5saW5lTGV2ZWxEaXNwbGF5Qm94KGNv
bnN0IExpbmU6OgogICAgICAgICAsIGxpbmVSdW4uZXhwYW5zaW9uKCkKICAgICAgICAgLCB7IH0K
ICAgICAgICAgLCB0cnVlCi0gICAgICAgICwgbGluZVJ1bi5pc1RydW5jYXRlZCgpCiAgICAgfSk7
CiAgICAgLy8gTm90ZSB0aGF0IGlubGluZSBib3hlcyBhcmUgcmVsYXRpdmUgdG8gdGhlIGxpbmUg
YW5kIHRoZWlyIHRvcCBwb3NpdGlvbiBjYW4gYmUgbmVnYXRpdmUuCiAgICAgLy8gQXRvbWljIGlu
bGluZSBib3hlcyBhcmUgYWxsIHNldC4gVGhlaXIgbWFyZ2luL2JvcmRlci9jb250ZW50IGJveCBn
ZW9tZXRyaWVzIGFyZSBhbHJlYWR5IGNvbXB1dGVkLiBXZSBqdXN0IGhhdmUgdG8gcG9zaXRpb24g
dGhlbSBoZXJlLgpAQCAtMzY4LDcgKzM2Myw2IEBAIHZvaWQgSW5saW5lRGlzcGxheUNvbnRlbnRC
dWlsZGVyOjphcHBlbmRJbmxpbmVCb3hEaXNwbGF5Qm94KGNvbnN0IExpbmU6OlJ1biYgbGluCiAg
ICAgICAgICwgeyB9CiAgICAgICAgICwgeyB9CiAgICAgICAgICwgaW5saW5lQm94Lmhhc0NvbnRl
bnQoKQotICAgICAgICAsIGxpbmVSdW4uaXNUcnVuY2F0ZWQoKQogICAgICAgICAsIGlzRmlyc3RM
YXN0Qm94KGlubGluZUJveCkKICAgICB9KTsKIH0KQEAgLTQwNSw3ICszOTksNiBAQCB2b2lkIElu
bGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6YXBwZW5kU3Bhbm5pbmdJbmxpbmVCb3hEaXNwbGF5
Qm94KGNvbnN0IExpbmU6OgogICAgICAgICAsIHsgfQogICAgICAgICAsIHsgfQogICAgICAgICAs
IGlubGluZUJveC5oYXNDb250ZW50KCkKLSAgICAgICAgLCBsaW5lUnVuLmlzVHJ1bmNhdGVkKCkK
ICAgICAgICAgLCBpc0ZpcnN0TGFzdEJveChpbmxpbmVCb3gpCiAgICAgfSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNw
bGF5L0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1
aWxkZXIuaAppbmRleCBjZmUxMzQyYTUxZjUuLmM3Mzk3M2NiOWRmMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9Jbmxp
bmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlDb250ZW50QnVpbGRl
ci5oCkBAIC01NCw2ICs1NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwcm9jZXNzRmxvYXRCb3hl
cyhjb25zdCBMaW5lQnVpbGRlcjo6TGluZUNvbnRlbnQmKTsKICAgICB2b2lkIGNvbGxlY3RJbmtP
dmVyZmxvd0ZvcklubGluZUJveGVzKERpc3BsYXlCb3hlcyYpOwogICAgIHZvaWQgY29sbGVjdElu
a092ZXJmbG93Rm9yVGV4dERlY29yYXRpb25zKERpc3BsYXlCb3hlcyYsIGNvbnN0IElubGluZURp
c3BsYXk6OkxpbmUmKTsKKyAgICB2b2lkIHRydW5jYXRlRm9yRWxsaXBzaXNQb2xpY3koTGluZUJ1
aWxkZXI6OkxpbmVFbmRpbmdFbGxpcHNpc1BvbGljeSwgY29uc3QgTGluZUJ1aWxkZXI6OkxpbmVD
b250ZW50JiwgY29uc3QgSW5saW5lRGlzcGxheTo6TGluZSYsIERpc3BsYXlCb3hlcyYpOwogCiAg
ICAgdm9pZCBhcHBlbmRUZXh0RGlzcGxheUJveChjb25zdCBMaW5lOjpSdW4mLCBjb25zdCBJbmxp
bmVSZWN0JiwgRGlzcGxheUJveGVzJik7CiAgICAgdm9pZCBhcHBlbmRTb2Z0TGluZUJyZWFrRGlz
cGxheUJveChjb25zdCBMaW5lOjpSdW4mLCBjb25zdCBJbmxpbmVSZWN0JiwgRGlzcGxheUJveGVz
Jik7CkBAIC03Nyw2ICs3OCw3IEBAIHByaXZhdGU6CiAgICAgSW5saW5lTGF5b3V0VW5pdCBvdXRz
aWRlTGlzdE1hcmtlclZpc3VhbFBvc2l0aW9uKGNvbnN0IEVsZW1lbnRCb3gmLCBjb25zdCBJbmxp
bmVEaXNwbGF5OjpMaW5lJikgY29uc3Q7CiAKICAgICBjb25zdCBFbGVtZW50Qm94JiByb290KCkg
Y29uc3QgeyByZXR1cm4gZm9ybWF0dGluZ0NvbnRleHQoKS5yb290KCk7IH0KKyAgICBjb25zdCBS
ZW5kZXJTdHlsZSYgcm9vdFN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9saW5lSW5kZXggPyByb290
KCkuc3R5bGUoKSA6IHJvb3QoKS5maXJzdExpbmVTdHlsZSgpOyB9CiAgICAgY29uc3QgSW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQmIGZvcm1hdHRpbmdDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9m
b3JtYXR0aW5nQ29udGV4dDsgfQogICAgIGNvbnN0IElubGluZUZvcm1hdHRpbmdHZW9tZXRyeSYg
Zm9ybWF0dGluZ0dlb21ldHJ5KCkgY29uc3QgeyByZXR1cm4gZm9ybWF0dGluZ0NvbnRleHQoKS5m
b3JtYXR0aW5nR2VvbWV0cnkoKTsgfQogICAgIElubGluZUZvcm1hdHRpbmdTdGF0ZSYgZm9ybWF0
dGluZ1N0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9mb3JtYXR0aW5nU3RhdGU7IH0gCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNw
bGF5L0lubGluZURpc3BsYXlMaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlMaW5lLmgKaW5kZXggNmI2YTRl
ODgyMGFiLi40MmU0ODVjNjg4YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUxpbmUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5
L0lubGluZURpc3BsYXlMaW5lLmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgICAgICBm
bG9hdCB0b3AgeyAwIH07CiAgICAgICAgIGZsb2F0IGJvdHRvbSB7IDAgfTsKICAgICB9OwotICAg
IExpbmUoY29uc3QgRmxvYXRSZWN0JiBsaW5lQm94TG9naWNhbFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgbGluZUJveFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc2Nyb2xsYWJsZU92ZXJmbG93LCBFbmNs
b3NpbmdUb3BBbmRCb3R0b20sIGZsb2F0IGFsaWdtZW50QmFzZWxpbmUsIEZvbnRCYXNlbGluZSBi
YXNlbGluZVR5cGUsIGZsb2F0IGNvbnRlbnRMb2dpY2FsTGVmdCwgZmxvYXQgY29udGVudExvZ2lj
YWxMZWZ0SWdub3JpbmdJbmxpbmVEaXJlY3Rpb24sIGZsb2F0IGNvbnRlbnRMb2dpY2FsV2lkdGgs
IGJvb2wgaXNIb3Jpem9udGFsLCBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gZWxsaXBzaXNWaXN1
YWxSZWN0KTsKKyAgICBMaW5lKGNvbnN0IEZsb2F0UmVjdCYgbGluZUJveExvZ2ljYWxSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIGxpbmVCb3hSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNjcm9sbGFibGVP
dmVyZmxvdywgRW5jbG9zaW5nVG9wQW5kQm90dG9tLCBmbG9hdCBhbGlnbWVudEJhc2VsaW5lLCBG
b250QmFzZWxpbmUgYmFzZWxpbmVUeXBlLCBmbG9hdCBjb250ZW50TG9naWNhbExlZnQsIGZsb2F0
IGNvbnRlbnRMb2dpY2FsTGVmdElnbm9yaW5nSW5saW5lRGlyZWN0aW9uLCBmbG9hdCBjb250ZW50
TG9naWNhbFdpZHRoLCBib29sIGlzSG9yaXpvbnRhbCk7CiAKICAgICBmbG9hdCBsZWZ0KCkgY29u
c3QgeyByZXR1cm4gbV9saW5lQm94UmVjdC54KCk7IH0KICAgICBmbG9hdCByaWdodCgpIGNvbnN0
IHsgcmV0dXJuIG1fbGluZUJveFJlY3QubWF4WCgpOyB9CkBAIC02Nyw2ICs2Nyw3IEBAIHB1Ymxp
YzoKICAgICBmbG9hdCBjb250ZW50TG9naWNhbFdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9jb250
ZW50TG9naWNhbFdpZHRoOyB9CiAKICAgICB2b2lkIG1vdmVWZXJ0aWNhbGx5KGZsb2F0IG9mZnNl
dCkgeyBtX2xpbmVCb3hSZWN0Lm1vdmUoeyB7IH0sIG9mZnNldCB9KTsgfQorICAgIHZvaWQgc2V0
RWxsaXBzaXNWaXN1YWxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgZWxsaXBzaXNWaXN1YWxSZWN0KSB7
IG1fZWxsaXBzaXNWaXN1YWxSZWN0ID0gZWxsaXBzaXNWaXN1YWxSZWN0OyB9CiAKIHByaXZhdGU6
CiAgICAgLy8gVGhpcyBpcyBsaW5lIGJveCBnZW9tZXRyeSAoc2VlIGh0dHBzOi8vd3d3LnczLm9y
Zy9UUi9jc3MtaW5saW5lLTMvI2xpbmUtYm94KS4KQEAgLTg4LDcgKzg5LDcgQEAgcHJpdmF0ZToK
ICAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gbV9lbGxpcHNpc1Zpc3VhbFJlY3QgeyB9Owog
fTsKIAotaW5saW5lIExpbmU6OkxpbmUoY29uc3QgRmxvYXRSZWN0JiBsaW5lQm94TG9naWNhbFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgbGluZUJveFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc2Nyb2xs
YWJsZU92ZXJmbG93LCBFbmNsb3NpbmdUb3BBbmRCb3R0b20gZW5jbG9zaW5nTG9naWNhbFRvcEFu
ZEJvdHRvbSwgZmxvYXQgYWxpZ21lbnRCYXNlbGluZSwgRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlw
ZSwgZmxvYXQgY29udGVudExvZ2ljYWxMZWZ0LCBmbG9hdCBjb250ZW50TG9naWNhbExlZnRJZ25v
cmluZ0lubGluZURpcmVjdGlvbiwgZmxvYXQgY29udGVudExvZ2ljYWxXaWR0aCwgYm9vbCBpc0hv
cml6b250YWwsIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBlbGxpcHNpc1Zpc3VhbFJlY3QpCitp
bmxpbmUgTGluZTo6TGluZShjb25zdCBGbG9hdFJlY3QmIGxpbmVCb3hMb2dpY2FsUmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBsaW5lQm94UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzY3JvbGxhYmxlT3Zl
cmZsb3csIEVuY2xvc2luZ1RvcEFuZEJvdHRvbSBlbmNsb3NpbmdMb2dpY2FsVG9wQW5kQm90dG9t
LCBmbG9hdCBhbGlnbWVudEJhc2VsaW5lLCBGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlLCBmbG9h
dCBjb250ZW50TG9naWNhbExlZnQsIGZsb2F0IGNvbnRlbnRMb2dpY2FsTGVmdElnbm9yaW5nSW5s
aW5lRGlyZWN0aW9uLCBmbG9hdCBjb250ZW50TG9naWNhbFdpZHRoLCBib29sIGlzSG9yaXpvbnRh
bCkKICAgICA6IG1fbGluZUJveFJlY3QobGluZUJveFJlY3QpCiAgICAgLCBtX2xpbmVCb3hMb2dp
Y2FsUmVjdChsaW5lQm94TG9naWNhbFJlY3QpCiAgICAgLCBtX3Njcm9sbGFibGVPdmVyZmxvdyhz
Y3JvbGxhYmxlT3ZlcmZsb3cpCkBAIC05OSw3ICsxMDAsNiBAQCBpbmxpbmUgTGluZTo6TGluZShj
b25zdCBGbG9hdFJlY3QmIGxpbmVCb3hMb2dpY2FsUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBsaW5l
Qm94UgogICAgICwgbV9jb250ZW50TG9naWNhbFdpZHRoKGNvbnRlbnRMb2dpY2FsV2lkdGgpCiAg
ICAgLCBtX2Jhc2VsaW5lVHlwZShiYXNlbGluZVR5cGUpCiAgICAgLCBtX2lzSG9yaXpvbnRhbChp
c0hvcml6b250YWwpCi0gICAgLCBtX2VsbGlwc2lzVmlzdWFsUmVjdChlbGxpcHNpc1Zpc3VhbFJl
Y3QpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5s
aW5lRGlzcGxheUxpbmVCdWlsZGVyLmNwcAppbmRleCBlODM0YTk4ZWZjODIuLjFjMTcxMTBhZDNj
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlz
cGxheUxpbmVCdWlsZGVyLmNwcApAQCAtMzMsNiArMzMsMjIgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIG5hbWVzcGFjZSBMYXlvdXQgewogCitzdGF0aWMgSW5saW5lUmVjdCBmbGlwTG9naWNhbExp
bmVSZWN0VG9WaXN1YWxGb3JXcml0aW5nTW9kZShjb25zdCBJbmxpbmVSZWN0JiBsaW5lTG9naWNh
bFJlY3QsIFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKQoreworICAgIHN3aXRjaCAod3JpdGluZ01v
ZGUpIHsKKyAgICBjYXNlIFdyaXRpbmdNb2RlOjpUb3BUb0JvdHRvbToKKyAgICAgICAgcmV0dXJu
IGxpbmVMb2dpY2FsUmVjdDsKKyAgICBjYXNlIFdyaXRpbmdNb2RlOjpMZWZ0VG9SaWdodDoKKyAg
ICBjYXNlIFdyaXRpbmdNb2RlOjpSaWdodFRvTGVmdDoKKyAgICAgICAgLy8gU2VlIElubGluZUZv
cm1hdHRpbmdHZW9tZXRyeSBmb3IgbW9yZSBpbmZvLgorICAgICAgICByZXR1cm4geyBsaW5lTG9n
aWNhbFJlY3QubGVmdCgpLCBsaW5lTG9naWNhbFJlY3QudG9wKCksIGxpbmVMb2dpY2FsUmVjdC5o
ZWlnaHQoKSwgbGluZUxvZ2ljYWxSZWN0LndpZHRoKCkgfTsKKyAgICBkZWZhdWx0OgorICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVy
biBsaW5lTG9naWNhbFJlY3Q7Cit9CisKIElubGluZURpc3BsYXlMaW5lQnVpbGRlcjo6SW5saW5l
RGlzcGxheUxpbmVCdWlsZGVyKGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0JiBpbmxpbmVG
b3JtYXR0aW5nQ29udGV4dCkKICAgICA6IG1faW5saW5lRm9ybWF0dGluZ0NvbnRleHQoaW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQpCiB7CkBAIC0xMjEsNTIgKzEzNywxNDcgQEAgSW5saW5lRGlzcGxh
eTo6TGluZSBJbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXI6OmJ1aWxkKGNvbnN0IExpbmVCdWlsZGVy
OjpMaW5lQ29udGUKICAgICAgICAgLCBjb250ZW50VmlzdWFsT2Zmc2V0SW5JbmxpbmVEaXJlY3Rp
b24KICAgICAgICAgLCByb290SW5saW5lQm94LmxvZ2ljYWxXaWR0aCgpCiAgICAgICAgICwgbGlu
ZUJveC5pc0hvcml6b250YWwoKQotICAgICAgICAsIHRyYWlsaW5nRWxsaXBzaXNSZWN0KGxpbmVD
b250ZW50LCBsaW5lQm94LCBsaW5lQm94VmlzdWFsUmVjdEluSW5saW5lRGlyZWN0aW9uKQogICAg
IH07CiB9CiAKLS8vIEZJWE1FOiBmb3IgYmlkaSBjb250ZW50LCB3ZSBtYXkgbmVlZCB0byBydW4g
dGhpcyBjb2RlIGFmdGVyIHdlIGZpbmlzaGVkIGNvbnN0cnVjdGluZyB0aGUgZGlzcGxheSBib3hl
cwotLy8gYW5kIGFsc28gcnVuIHRydW5jYXRpb24gb24gdGhlICh2aXN1YWwpZGlzcGxheSBib3gg
bGlzdCBhbmQgbm90IG9uIHRoZSAobG9naWNhbClsaW5lIHJ1bnMuCi1zdGQ6Om9wdGlvbmFsPEZs
b2F0UmVjdD4gSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyOjp0cmFpbGluZ0VsbGlwc2lzUmVjdChj
b25zdCBMaW5lQnVpbGRlcjo6TGluZUNvbnRlbnQmIGxpbmVDb250ZW50LCBjb25zdCBMaW5lQm94
JiBsaW5lQm94LCBjb25zdCBGbG9hdFJlY3QmIGxpbmVCb3hWaXN1YWxSZWN0KSBjb25zdAorc3Rh
dGljIGZsb2F0IHRydW5jYXRlT3ZlcmZsb3dpbmdEaXNwbGF5Qm94ZXMoY29uc3QgSW5saW5lRGlz
cGxheTo6TGluZSYgZGlzcGxheUxpbmUsIERpc3BsYXlCb3hlcyYgYm94ZXMsIGZsb2F0IGVsbGlw
c2lzV2lkdGgsIGNvbnN0IFJlbmRlclN0eWxlJiByb290U3R5bGUpCiB7Ci0gICAgaWYgKCFsaW5l
Q29udGVudC5saW5lTmVlZHNUcmFpbGluZ0VsbGlwc2lzKQotICAgICAgICByZXR1cm4geyB9Owor
ICAgIC8vIFdlIGdvdHRhIHRydW5jYXRlIHNvbWUgcnVucy4KKyAgICBBU1NFUlQoZGlzcGxheUxp
bmUuY29udGVudExvZ2ljYWxMZWZ0KCkgKyBkaXNwbGF5TGluZS5jb250ZW50TG9naWNhbFdpZHRo
KCkgKyBlbGxpcHNpc1dpZHRoID4gZGlzcGxheUxpbmUubGluZUJveExvZ2ljYWxSZWN0KCkubWF4
WCgpKTsKKyAgICBhdXRvIGlzTGVmdFRvUmlnaHREaXJlY3Rpb24gPSByb290U3R5bGUuaXNMZWZ0
VG9SaWdodERpcmVjdGlvbigpOworICAgIGF1dG8gaXNIb3Jpem9udGFsID0gcm9vdFN0eWxlLmlz
SG9yaXpvbnRhbFdyaXRpbmdNb2RlKCk7CisgICAgYXV0byBsZWZ0ID0gWyZdIChhdXRvJiBkaXNw
bGF5Qm94KSB7CisgICAgICAgIHJldHVybiBpc0hvcml6b250YWwgPyBkaXNwbGF5Qm94LmxlZnQo
KSA6IGRpc3BsYXlCb3gudG9wKCk7CisgICAgfTsKKyAgICBhdXRvIHJpZ2h0ID0gWyZdIChhdXRv
JiBkaXNwbGF5Qm94KSB7CisgICAgICAgIHJldHVybiBpc0hvcml6b250YWwgPyBkaXNwbGF5Qm94
LnJpZ2h0KCkgOiBkaXNwbGF5Qm94LmJvdHRvbSgpOworICAgIH07CisgICAgYXV0byB3aWR0aCA9
IFsmXSAoYXV0byYgZGlzcGxheUJveCkgeworICAgICAgICByZXR1cm4gaXNIb3Jpem9udGFsID8g
ZGlzcGxheUJveC53aWR0aCgpIDogZGlzcGxheUJveC5oZWlnaHQoKTsKKyAgICB9OworICAgIGF1
dG8gdHJ1bmNhdGUgPSBbJl0gKGF1dG8mIGRpc3BsYXlCb3gsIGF1dG8gdmlzaWJsZVdpZHRoLCBh
dXRvIGNhbkZ1bGx5VHJ1bmNhdGUpIHsKKyAgICAgICAgaWYgKGRpc3BsYXlCb3guaXNUZXh0KCkp
IHsKKyAgICAgICAgICAgIGlmICghdmlzaWJsZVdpZHRoICYmIGNhbkZ1bGx5VHJ1bmNhdGUpIHsK
KyAgICAgICAgICAgICAgICBkaXNwbGF5Qm94LnNldElzRnVsbHlUcnVuY2F0ZWQoKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gaXNMZWZ0VG9SaWdodERpcmVjdGlvbiA/IGxlZnQoZGlzcGxheUJv
eCkgOiByaWdodChkaXNwbGF5Qm94KTsKKyAgICAgICAgICAgIH0KIAotICAgIGF1dG8gZWxsaXBz
aXNTdGFydCA9IDAuZjsKLSAgICBmb3IgKGF1dG8mIGxpbmVSdW4gOiBsaW5lQ29udGVudC5ydW5z
KSB7Ci0gICAgICAgIGlmIChsaW5lUnVuLmlzSW5saW5lQm94KCkpCi0gICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgaWYgKGxpbmVSdW4uaXNUcnVuY2F0ZWQoKSkgewotICAgICAgICAgICAg
aWYgKGxpbmVSdW4uaXNUZXh0KCkgJiYgbGluZVJ1bi50ZXh0Q29udGVudCgpLT5wYXJ0aWFsbHlW
aXNpYmxlQ29udGVudCkKLSAgICAgICAgICAgICAgICBlbGxpcHNpc1N0YXJ0ID0gc3RkOjptYXgo
ZWxsaXBzaXNTdGFydCwgbGluZVJ1bi5sb2dpY2FsTGVmdCgpICsgbGluZVJ1bi50ZXh0Q29udGVu
dCgpLT5wYXJ0aWFsbHlWaXNpYmxlQ29udGVudC0+d2lkdGgpOwotICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBhdXRvJiBpbmxpbmVUZXh0Qm94ID0gZG93bmNhc3Q8SW5saW5lVGV4dEJv
eD4oZGlzcGxheUJveC5sYXlvdXRCb3goKSk7CisgICAgICAgICAgICBhdXRvJiB0ZXh0Q29udGVu
dCA9IGRpc3BsYXlCb3gudGV4dCgpOworICAgICAgICAgICAgYXV0byBsZWZ0U2lkZSA9IFRleHRV
dGlsOjpicmVha1dvcmQoaW5saW5lVGV4dEJveCwgdGV4dENvbnRlbnQtPnN0YXJ0KCksIHRleHRD
b250ZW50LT5sZW5ndGgoKSwgd2lkdGgoZGlzcGxheUJveCksIHZpc2libGVXaWR0aCwgeyB9LCBk
aXNwbGF5Qm94LnN0eWxlKCkuZm9udENhc2NhZGUoKSk7CisgICAgICAgICAgICBpZiAobGVmdFNp
ZGUubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgdGV4dENvbnRlbnQtPnNldFBhcnRpYWxseVZp
c2libGVDb250ZW50TGVuZ3RoKGxlZnRTaWRlLmxlbmd0aCk7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGlzTGVmdFRvUmlnaHREaXJlY3Rpb24gPyBsZWZ0KGRpc3BsYXlCb3gpICsgbGVmdFNpZGUu
bG9naWNhbFdpZHRoIDogcmlnaHQoZGlzcGxheUJveCkgLSBsZWZ0U2lkZS5sb2dpY2FsV2lkdGg7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoY2FuRnVsbHlUcnVuY2F0ZSkgeworICAg
ICAgICAgICAgICAgIGRpc3BsYXlCb3guc2V0SXNGdWxseVRydW5jYXRlZCgpOworICAgICAgICAg
ICAgICAgIHJldHVybiBpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uID8gbGVmdChkaXNwbGF5Qm94KSA6
IHJpZ2h0KGRpc3BsYXlCb3gpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYXV0byBmaXJz
dENoYXJhY3Rlckxlbmd0aCA9IFRleHRVdGlsOjpmaXJzdFVzZXJQZXJjZWl2ZWRDaGFyYWN0ZXJM
ZW5ndGgoaW5saW5lVGV4dEJveCwgdGV4dENvbnRlbnQtPnN0YXJ0KCksIHRleHRDb250ZW50LT5s
ZW5ndGgoKSk7CisgICAgICAgICAgICBhdXRvIGZpcnN0Q2hhcmFjdGVyV2lkdGggPSBUZXh0VXRp
bDo6d2lkdGgoaW5saW5lVGV4dEJveCwgZGlzcGxheUJveC5zdHlsZSgpLmZvbnRDYXNjYWRlKCks
IHRleHRDb250ZW50LT5zdGFydCgpLCB0ZXh0Q29udGVudC0+c3RhcnQoKSArIGZpcnN0Q2hhcmFj
dGVyTGVuZ3RoLCB7IH0sIFRleHRVdGlsOjpVc2VUcmFpbGluZ1doaXRlc3BhY2VNZWFzdXJpbmdP
cHRpbWl6YXRpb246Ok5vKTsKKyAgICAgICAgICAgIHRleHRDb250ZW50LT5zZXRQYXJ0aWFsbHlW
aXNpYmxlQ29udGVudExlbmd0aChmaXJzdENoYXJhY3Rlckxlbmd0aCk7CisgICAgICAgICAgICBy
ZXR1cm4gaXNMZWZ0VG9SaWdodERpcmVjdGlvbiA/IGxlZnQoZGlzcGxheUJveCkgKyBmaXJzdENo
YXJhY3RlcldpZHRoIDogcmlnaHQoZGlzcGxheUJveCkgLSBmaXJzdENoYXJhY3RlcldpZHRoOwog
ICAgICAgICB9Ci0gICAgICAgIGVsbGlwc2lzU3RhcnQgPSBzdGQ6Om1heChlbGxpcHNpc1N0YXJ0
LCBsaW5lUnVuLmxvZ2ljYWxSaWdodCgpKTsKKyAgICAgICAgaWYgKGNhbkZ1bGx5VHJ1bmNhdGUp
IHsKKyAgICAgICAgICAgIC8vIEF0b21pYyBpbmxpbmUgbGV2ZWwgYm94ZXMgYXJlIG5ldmVyIHBh
cnRpYWxseSB0cnVuY2F0ZWQuCisgICAgICAgICAgICBkaXNwbGF5Qm94LnNldElzRnVsbHlUcnVu
Y2F0ZWQoKTsKKyAgICAgICAgICAgIHJldHVybiBpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uID8gbGVm
dChkaXNwbGF5Qm94KSA6IHJpZ2h0KGRpc3BsYXlCb3gpOworICAgICAgICB9CisgICAgICAgIHJl
dHVybiBpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uID8gcmlnaHQoZGlzcGxheUJveCkgOiBsZWZ0KGRp
c3BsYXlCb3gpOworICAgIH07CisKKyAgICAvLyBUaGUgbG9naWNhbGx5IGZpcnN0IGNoYXJhY3Rl
ciBvciBhdG9taWMgaW5saW5lLWxldmVsIGVsZW1lbnQgb24gYSBsaW5lIG11c3QgYmUgY2xpcHBl
ZCByYXRoZXIgdGhhbiBlbGxpcHNlZC4KKyAgICBhdXRvIGlzRmlyc3RDb250ZW50UnVuID0gdHJ1
ZTsKKyAgICBpZiAoaXNMZWZ0VG9SaWdodERpcmVjdGlvbikgeworICAgICAgICBhdXRvIHZpc3Vh
bFJpZ2h0Rm9yQ29udGVudEVuZCA9IHN0ZDo6bWF4KDAuZiwgcmlnaHQoZGlzcGxheUxpbmUpIC0g
ZWxsaXBzaXNXaWR0aCk7CisgICAgICAgIGF1dG8gdHJ1bmNhdGVSaWdodCA9IHN0ZDo6b3B0aW9u
YWw8ZmxvYXQ+IHsgfTsKKyAgICAgICAgZm9yIChhdXRvJiBkaXNwbGF5Qm94IDogYm94ZXMpIHsK
KyAgICAgICAgICAgIGlmIChkaXNwbGF5Qm94LmlzSW5saW5lQm94KCkpCisgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICBpZiAocmlnaHQoZGlzcGxheUJveCkgPiB2aXN1YWxS
aWdodEZvckNvbnRlbnRFbmQpIHsKKyAgICAgICAgICAgICAgICBhdXRvIHRydW5jYXRlUG9zaXRp
b24gPSB0cnVuY2F0ZShkaXNwbGF5Qm94LCBzdGQ6Om1heCgwLmYsIHZpc3VhbFJpZ2h0Rm9yQ29u
dGVudEVuZCAtIGxlZnQoZGlzcGxheUJveCkpLCAhaXNGaXJzdENvbnRlbnRSdW4pOworICAgICAg
ICAgICAgICAgIHRydW5jYXRlUmlnaHQgPSB0cnVuY2F0ZVJpZ2h0LnZhbHVlX29yKHRydW5jYXRl
UG9zaXRpb24pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaXNGaXJzdENvbnRlbnRSdW4g
PSBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQodHJ1bmNhdGVSaWdodC5oYXNfdmFs
dWUoKSk7CisgICAgICAgIHJldHVybiB0cnVuY2F0ZVJpZ2h0LnZhbHVlX29yKDAuZik7CiAgICAg
fQotICAgIGF1dG8gZWxsaXBzaXNXaWR0aCA9ICFsaW5lQm94LmxpbmVJbmRleCgpID8gcm9vdCgp
LmZpcnN0TGluZVN0eWxlKCkuZm9udENhc2NhZGUoKS53aWR0aChUZXh0VXRpbDo6ZWxsaXBzaXNU
ZXh0UnVuKCkpIDogcm9vdCgpLnN0eWxlKCkuZm9udENhc2NhZGUoKS53aWR0aChUZXh0VXRpbDo6
ZWxsaXBzaXNUZXh0UnVuKCkpOwotICAgIGF1dG8gcm9vdElubGluZUJveFJlY3QgPSBsaW5lQm94
LmxvZ2ljYWxSZWN0Rm9yUm9vdElubGluZUJveCgpOwotICAgIGF1dG8gZWxsaXBzaXNSZWN0ID0g
RmxvYXRSZWN0IHsgbGluZUJveFZpc3VhbFJlY3QueCgpICsgcm9vdElubGluZUJveFJlY3QubGVm
dCgpICsgZWxsaXBzaXNTdGFydCwgbGluZUJveFZpc3VhbFJlY3QueSgpICsgcm9vdElubGluZUJv
eFJlY3QudG9wKCksIGVsbGlwc2lzV2lkdGgsIHJvb3RJbmxpbmVCb3hSZWN0LmhlaWdodCgpIH07
CiAKLSAgICBpZiAocm9vdCgpLnN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKQotICAg
ICAgICByZXR1cm4gZWxsaXBzaXNSZWN0OwotICAgIGVsbGlwc2lzUmVjdC5zZXRYKGxpbmVCb3hW
aXN1YWxSZWN0Lm1heFgoKSAtIChlbGxpcHNpc1N0YXJ0ICsgZWxsaXBzaXNSZWN0LndpZHRoKCkp
KTsKLSAgICByZXR1cm4gZWxsaXBzaXNSZWN0OworICAgIGF1dG8gdHJ1bmNhdGVMZWZ0ID0gc3Rk
OjpvcHRpb25hbDxmbG9hdD4geyB9OworICAgIGF1dG8gdmlzdWFsTGVmdEZvckNvbnRlbnRFbmQg
PSBzdGQ6Om1heCgwLmYsIGxlZnQoZGlzcGxheUxpbmUpICsgZWxsaXBzaXNXaWR0aCk7CisgICAg
Zm9yIChhdXRvJiBkaXNwbGF5Qm94IDogbWFrZVJldmVyc2VkUmFuZ2UoYm94ZXMpKSB7CisgICAg
ICAgIGlmIChkaXNwbGF5Qm94LmlzSW5saW5lQm94KCkpCisgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgaWYgKGxlZnQoZGlzcGxheUJveCkgPCB2aXN1YWxMZWZ0Rm9yQ29udGVudEVuZCkg
eworICAgICAgICAgICAgYXV0byB0cnVuY2F0ZVBvc2l0aW9uID0gdHJ1bmNhdGUoZGlzcGxheUJv
eCwgc3RkOjptYXgoMC5mLCByaWdodChkaXNwbGF5Qm94KSAtIHZpc3VhbExlZnRGb3JDb250ZW50
RW5kKSwgIWlzRmlyc3RDb250ZW50UnVuKTsKKyAgICAgICAgICAgIHRydW5jYXRlTGVmdCA9IHRy
dW5jYXRlTGVmdC52YWx1ZV9vcih0cnVuY2F0ZVBvc2l0aW9uKTsKKyAgICAgICAgfQorICAgICAg
ICBpc0ZpcnN0Q29udGVudFJ1biA9IGZhbHNlOworICAgIH0KKyAgICBBU1NFUlQodHJ1bmNhdGVM
ZWZ0Lmhhc192YWx1ZSgpKTsKKyAgICByZXR1cm4gdHJ1bmNhdGVMZWZ0LnZhbHVlX29yKGVsbGlw
c2lzV2lkdGgpIC0gZWxsaXBzaXNXaWR0aDsKIH0KIAotSW5saW5lUmVjdCBJbmxpbmVEaXNwbGF5
TGluZUJ1aWxkZXI6OmZsaXBMb2dpY2FsTGluZVJlY3RUb1Zpc3VhbEZvcldyaXRpbmdNb2RlKGNv
bnN0IElubGluZVJlY3QmIGxpbmVMb2dpY2FsUmVjdCwgV3JpdGluZ01vZGUgd3JpdGluZ01vZGUp
IGNvbnN0CitzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gSW5saW5lRGlzcGxheUxpbmVCdWlsZGVy
Ojp0cmFpbGluZ0VsbGlwc2lzVmlzdWFsUmVjdEFmdGVyVHJ1bmNhdGlvbihMaW5lQnVpbGRlcjo6
TGluZUVuZGluZ0VsbGlwc2lzUG9saWN5IGxpbmVFbmRpbmdFbGxpcHNpc1BvbGljeSwgY29uc3Qg
SW5saW5lRGlzcGxheTo6TGluZSYgZGlzcGxheUxpbmUsIERpc3BsYXlCb3hlcyYgZGlzcGxheUJv
eGVzLCBib29sIGlzTGFzdExpbmVXaXRoSW5saW5lQ29udGVudCkKIHsKLSAgICBzd2l0Y2ggKHdy
aXRpbmdNb2RlKSB7Ci0gICAgY2FzZSBXcml0aW5nTW9kZTo6VG9wVG9Cb3R0b206Ci0gICAgICAg
IHJldHVybiBsaW5lTG9naWNhbFJlY3Q7Ci0gICAgY2FzZSBXcml0aW5nTW9kZTo6TGVmdFRvUmln
aHQ6Ci0gICAgY2FzZSBXcml0aW5nTW9kZTo6UmlnaHRUb0xlZnQ6Ci0gICAgICAgIC8vIFNlZSBJ
bmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkgZm9yIG1vcmUgaW5mby4KLSAgICAgICAgcmV0dXJuIHsg
bGluZUxvZ2ljYWxSZWN0LmxlZnQoKSwgbGluZUxvZ2ljYWxSZWN0LnRvcCgpLCBsaW5lTG9naWNh
bFJlY3QuaGVpZ2h0KCksIGxpbmVMb2dpY2FsUmVjdC53aWR0aCgpIH07Ci0gICAgZGVmYXVsdDoK
LSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAg
ICByZXR1cm4gbGluZUxvZ2ljYWxSZWN0OworICAgIGlmIChkaXNwbGF5Qm94ZXMuaXNFbXB0eSgp
KQorICAgICAgICByZXR1cm4geyB9OworCisgICAgYXV0byBjb250ZW50TmVlZHNFbGxpcHNpcyA9
IFsmXSB7CisgICAgICAgIHN3aXRjaCAobGluZUVuZGluZ0VsbGlwc2lzUG9saWN5KSB7CisgICAg
ICAgIGNhc2UgTGluZUJ1aWxkZXI6OkxpbmVFbmRpbmdFbGxpcHNpc1BvbGljeTo6Tm86CisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGNhc2UgTGluZUJ1aWxkZXI6OkxpbmVFbmRp
bmdFbGxpcHNpc1BvbGljeTo6V2hlbkNvbnRlbnRPdmVyZmxvd3NJbklubGluZURpcmVjdGlvbjoK
KyAgICAgICAgICAgIHJldHVybiBkaXNwbGF5TGluZS5jb250ZW50TG9naWNhbFdpZHRoKCkgPiBk
aXNwbGF5TGluZS5saW5lQm94TG9naWNhbFJlY3QoKS53aWR0aCgpOworICAgICAgICBjYXNlIExp
bmVCdWlsZGVyOjpMaW5lRW5kaW5nRWxsaXBzaXNQb2xpY3k6OldoZW5Db250ZW50T3ZlcmZsb3dz
SW5CbG9ja0RpcmVjdGlvbjoKKyAgICAgICAgICAgIGlmIChpc0xhc3RMaW5lV2l0aElubGluZUNv
bnRlbnQpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgRkFMTFRI
Uk9VR0g7CisgICAgICAgIGNhc2UgTGluZUJ1aWxkZXI6OkxpbmVFbmRpbmdFbGxpcHNpc1BvbGlj
eTo6QWx3YXlzOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgfQorICAgIH07CisgICAgaWYgKCFjb250ZW50TmVlZHNFbGxpcHNpcygpKQor
ICAgICAgICByZXR1cm4geyB9OworCisgICAgQVNTRVJUKGRpc3BsYXlCb3hlc1swXS5pc1Jvb3RJ
bmxpbmVCb3goKSk7CisgICAgYXV0byYgcm9vdElubGluZUJveCA9IGRpc3BsYXlCb3hlc1swXTsK
KyAgICBhdXRvJiByb290U3R5bGUgPSByb290SW5saW5lQm94LnN0eWxlKCk7CisgICAgYXV0byBl
bGxpcHNpc1dpZHRoID0gcm9vdFN0eWxlLmZvbnRDYXNjYWRlKCkud2lkdGgoVGV4dFV0aWw6OmVs
bGlwc2lzVGV4dFJ1bigpKTsKKworICAgIGF1dG8gY29udGVudE5lZWRzVHJ1bmNhdGlvbiA9IFsm
XSB7CisgICAgICAgIHN3aXRjaCAobGluZUVuZGluZ0VsbGlwc2lzUG9saWN5KSB7CisgICAgICAg
IGNhc2UgTGluZUJ1aWxkZXI6OkxpbmVFbmRpbmdFbGxpcHNpc1BvbGljeTo6V2hlbkNvbnRlbnRP
dmVyZmxvd3NJbklubGluZURpcmVjdGlvbjoKKyAgICAgICAgICAgIEFTU0VSVChkaXNwbGF5TGlu
ZS5jb250ZW50TG9naWNhbFdpZHRoKCkgPiBkaXNwbGF5TGluZS5saW5lQm94TG9naWNhbFJlY3Qo
KS53aWR0aCgpKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBjYXNlIExpbmVC
dWlsZGVyOjpMaW5lRW5kaW5nRWxsaXBzaXNQb2xpY3k6OldoZW5Db250ZW50T3ZlcmZsb3dzSW5C
bG9ja0RpcmVjdGlvbjoKKyAgICAgICAgY2FzZSBMaW5lQnVpbGRlcjo6TGluZUVuZGluZ0VsbGlw
c2lzUG9saWN5OjpBbHdheXM6CisgICAgICAgICAgICByZXR1cm4gZGlzcGxheUxpbmUuY29udGVu
dExvZ2ljYWxMZWZ0KCkgKyBkaXNwbGF5TGluZS5jb250ZW50TG9naWNhbFdpZHRoKCkgKyBlbGxp
cHNpc1dpZHRoID4gZGlzcGxheUxpbmUubGluZUJveExvZ2ljYWxSZWN0KCkubWF4WCgpOworICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9OworCisgICAgYXV0byBlbGxpcHNp
c1N0YXJ0ID0gMC5mOworICAgIGlmICghY29udGVudE5lZWRzVHJ1bmNhdGlvbigpKSB7CisgICAg
ICAgIC8vIFRoZSBjb250ZW50IGRvZXMgbm90IG92ZXJmbG93IHRoZSBsaW5lIGJveC4gVGhlIGVs
bGlwc2lzIGlzIHN1cHBvc2VkIHRvIGJlIGVpdGhlciB2aXN1YWxseSB0cmFpbGluZyBvciBsZWFk
aW5nIGRlcGVuZGluZyBvbiB0aGUgaW5saW5lIGRpcmVjdGlvbi4KKyAgICAgICAgaWYgKGRpc3Bs
YXlCb3hlcy5zaXplKCkgPiAxKQorICAgICAgICAgICAgZWxsaXBzaXNTdGFydCA9IHJvb3RTdHls
ZS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBkaXNwbGF5Qm94ZXMubGFzdCgpLnJpZ2h0KCkg
OiBkaXNwbGF5Qm94ZXNbMV0ubGVmdCgpIC0gZWxsaXBzaXNXaWR0aDsKKyAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICAvLyBBbGwgd2UgaGF2ZSBpcyB0aGUgcm9vdCBpbmxpbmUgYm94LgorICAg
ICAgICAgICAgZWxsaXBzaXNTdGFydCA9IGRpc3BsYXlCb3hlcy5maXJzdCgpLmxlZnQoKTsKKyAg
ICAgICAgfQorICAgIH0gZWxzZQorICAgICAgICBlbGxpcHNpc1N0YXJ0ID0gdHJ1bmNhdGVPdmVy
Zmxvd2luZ0Rpc3BsYXlCb3hlcyhkaXNwbGF5TGluZSwgZGlzcGxheUJveGVzLCBlbGxpcHNpc1dp
ZHRoLCByb290U3R5bGUpOworCisgICAgaWYgKHJvb3RTdHlsZS5pc0hvcml6b250YWxXcml0aW5n
TW9kZSgpKQorICAgICAgICByZXR1cm4gRmxvYXRSZWN0IHsgZWxsaXBzaXNTdGFydCwgcm9vdElu
bGluZUJveC50b3AoKSwgZWxsaXBzaXNXaWR0aCwgcm9vdElubGluZUJveC5oZWlnaHQoKSB9Owor
ICAgIHJldHVybiBGbG9hdFJlY3QgeyByb290SW5saW5lQm94LmxlZnQoKSwgZWxsaXBzaXNTdGFy
dCwgcm9vdElubGluZUJveC53aWR0aCgpLCBlbGxpcHNpc1dpZHRoIH07CiB9CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rp
c3BsYXkvSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlMaW5lQnVpbGRl
ci5oCmluZGV4IDEzYzQ5NGE3ZjAxMi4uNjRhZGQyMTYxOTRiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURp
c3BsYXlMaW5lQnVpbGRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyLmgKQEAgLTQw
LDE0ICs0MCwxNCBAQCBwdWJsaWM6CiAKICAgICBJbmxpbmVEaXNwbGF5OjpMaW5lIGJ1aWxkKGNv
bnN0IExpbmVCdWlsZGVyOjpMaW5lQ29udGVudCYsIGNvbnN0IExpbmVCb3gmLCBjb25zdCBDb25z
dHJhaW50c0ZvcklubGluZUNvbnRlbnQmKSBjb25zdDsKIAorICAgIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPEZsb2F0UmVjdD4gdHJhaWxpbmdFbGxpcHNpc1Zpc3VhbFJlY3RBZnRlclRydW5jYXRpb24o
TGluZUJ1aWxkZXI6OkxpbmVFbmRpbmdFbGxpcHNpc1BvbGljeSwgY29uc3QgSW5saW5lRGlzcGxh
eTo6TGluZSYsIERpc3BsYXlCb3hlcyYsIGJvb2wgaXNMYXN0TGluZVdpdGhJbmxpbmVDb250ZW50
KTsKKwogcHJpdmF0ZToKICAgICBzdHJ1Y3QgRW5jbG9zaW5nTGluZUdlb21ldHJ5IHsKICAgICAg
ICAgSW5saW5lRGlzcGxheTo6TGluZTo6RW5jbG9zaW5nVG9wQW5kQm90dG9tIGVuY2xvc2luZ1Rv
cEFuZEJvdHRvbTsKICAgICAgICAgSW5saW5lUmVjdCBzY3JvbGxhYmxlT3ZlcmZsb3dSZWN0Owog
ICAgIH07CiAgICAgRW5jbG9zaW5nTGluZUdlb21ldHJ5IGNvbGxlY3RFbmNsb3NpbmdMaW5lR2Vv
bWV0cnkoY29uc3QgTGluZUJ1aWxkZXI6OkxpbmVDb250ZW50JiwgY29uc3QgTGluZUJveCYsIGNv
bnN0IElubGluZVJlY3QmIGxpbmVCb3hSZWN0KSBjb25zdDsKLSAgICBJbmxpbmVSZWN0IGZsaXBM
b2dpY2FsTGluZVJlY3RUb1Zpc3VhbEZvcldyaXRpbmdNb2RlKGNvbnN0IElubGluZVJlY3QmLCBX
cml0aW5nTW9kZSkgY29uc3Q7Ci0gICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IHRyYWlsaW5n
RWxsaXBzaXNSZWN0KGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lQ29udGVudCYsIGNvbnN0IExpbmVC
b3gmLCBjb25zdCBGbG9hdFJlY3QmIGxpbmVCb3hWaXN1YWxSZWN0KSBjb25zdDsKIAogICAgIGNv
bnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0JiBmb3JtYXR0aW5nQ29udGV4dCgpIGNvbnN0IHsg
cmV0dXJuIG1faW5saW5lRm9ybWF0dGluZ0NvbnRleHQ7IH0KICAgICBjb25zdCBCb3gmIHJvb3Qo
KSBjb25zdCB7IHJldHVybiBmb3JtYXR0aW5nQ29udGV4dCgpLnJvb3QoKTsgfQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9pbmxpbmUvdGV4dF9vdmVyZmxvd19lbGxpcHNpc19zaW1wbGUt
ZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvaW5saW5lL3RleHRfb3ZlcmZsb3dfZWxs
aXBzaXNfc2ltcGxlLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwLi43MzQ5ZjQxZjQwZWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2lubGluZS90ZXh0X292ZXJmbG93X2VsbGlwc2lzX3NpbXBsZS1leHBlY3RlZC5odG1sCkBA
IC0wLDAgKzEsMTYgQEAKKzxzdHlsZT4KK2RpdiB7CisgIGZvbnQtc2l6ZTogMjBweDsKKyAgb3Zl
cmZsb3c6IGhpZGRlbjsKKyAgd2hpdGUtc3BhY2U6IHByZTsKKyAgd2lkdGg6IDUwcHg7Cit9Cis8
L3N0eWxlPgorPGRpdj5BQiYjODIzMDs8L2Rpdj4KKzxkaXYgc3R5bGU9ImJvcmRlci1sZWZ0OiAx
MHB4IHNvbGlkIj5BQiYjODIzMDs8L2Rpdj4KKzxkaXYgc3R5bGU9ImJvcmRlci1sZWZ0OiAxMHB4
IHNvbGlkOyBwYWRkaW5nLWxlZnQ6IDIwcHg7Ij5BQiYjODIzMDs8L2Rpdj4KKzxkaXYgc3R5bGU9
ImJvcmRlcjogMTBweCBzb2xpZDsgcGFkZGluZzogMjBweDsiPkFCJiM4MjMwOzwvZGl2PgorPGRp
diBzdHlsZT0iZGlyZWN0aW9uOiBydGw7Ij5FRiYjODIzMDs8L2Rpdj4KKzxkaXYgc3R5bGU9ImRp
cmVjdGlvbjogcnRsOyBib3JkZXItbGVmdDogMTBweCBzb2xpZCI+RUYmIzgyMzA7PC9kaXY+Cis8
ZGl2IHN0eWxlPSJkaXJlY3Rpb246IHJ0bDsgYm9yZGVyLWxlZnQ6IDEwcHggc29saWQ7IHBhZGRp
bmctbGVmdDogMjBweDsiPkVGJiM4MjMwOzwvZGl2PgorPGRpdiBzdHlsZT0iZGlyZWN0aW9uOiBy
dGw7IGJvcmRlcjogMTBweCBzb2xpZDsgcGFkZGluZzogMjBweDsiPkVGJiM4MjMwOzwvZGl2Pgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9pbmxpbmUvdGV4dF9vdmVyZmxvd19lbGxpcHNp
c19zaW1wbGUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvaW5saW5lL3RleHRfb3ZlcmZsb3dfZWxs
aXBzaXNfc2ltcGxlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
Li5mMDcyZDFlNTliMTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2lubGlu
ZS90ZXh0X292ZXJmbG93X2VsbGlwc2lzX3NpbXBsZS5odG1sCkBAIC0wLDAgKzEsMjQgQEAKKzxz
dHlsZT4KK2RpdiB7CisgIGZvbnQtc2l6ZTogMjBweDsKKyAgb3ZlcmZsb3c6IGhpZGRlbjsKKyAg
d2hpdGUtc3BhY2U6IHByZTsKKyAgd2lkdGg6IDUwcHg7CisgIHRleHQtb3ZlcmZsb3c6IGVsbGlw
c2lzOworfQorPC9zdHlsZT4KKzxkaXY+QUJDRCBFRkdIPC9kaXY+Cis8ZGl2IHN0eWxlPSJib3Jk
ZXItbGVmdDogMTBweCBzb2xpZCI+QUJDRCBFRkdIPC9kaXY+Cis8ZGl2IHN0eWxlPSJib3JkZXIt
bGVmdDogMTBweCBzb2xpZDsgcGFkZGluZy1sZWZ0OiAyMHB4OyI+QUJDRCBFRkdIPC9kaXY+Cis8
ZGl2IHN0eWxlPSJib3JkZXI6IDEwcHggc29saWQ7IHBhZGRpbmc6IDIwcHg7Ij5BQkNEIEVGR0g8
L2Rpdj4KKworPGRpdiBzdHlsZT0iZGlyZWN0aW9uOiBydGw7Ij5BQkNEIEVGR0g8L2Rpdj4KKzxk
aXYgc3R5bGU9ImRpcmVjdGlvbjogcnRsOyBib3JkZXItbGVmdDogMTBweCBzb2xpZCI+QUJDRCBF
RkdIPC9kaXY+Cis8ZGl2IHN0eWxlPSJkaXJlY3Rpb246IHJ0bDsgYm9yZGVyLWxlZnQ6IDEwcHgg
c29saWQ7IHBhZGRpbmctbGVmdDogMjBweDsiPkFCQ0QgRUZHSDwvZGl2PgorPGRpdiBzdHlsZT0i
ZGlyZWN0aW9uOiBydGw7IGJvcmRlcjogMTBweCBzb2xpZDsgcGFkZGluZzogMjBweDsiPkFCQ0Qg
RUZHSDwvZGl2PgorCisKKzwhLS0gTmVlZHMgc29tZSBwYWludGluZyB3b3JrLCBzZWUgd2Via2l0
Lm9yZy9iLzI1MTYxMAorPGRpdiBzdHlsZT0id3JpdGluZy1tb2RlOiB2ZXJ0aWNhbC1scjsgd2lk
dGg6IGF1dG87IGhlaWdodDogNTBweDsgYm9yZGVyOiAxMHB4IHNvbGlkOyBwYWRkaW5nOiAyMHB4
OyI+QUJDRCBFRkdIPC9kaXY+Cis8ZGl2IHN0eWxlPSJ3cml0aW5nLW1vZGU6IHZlcnRpY2FsLWxy
OyBkaXJlY3Rpb246IHJ0bDsgd2lkdGg6IGF1dG87IGhlaWdodDogNTBweDsgYm9yZGVyOiAxMHB4
IHNvbGlkOyBwYWRkaW5nOiAyMHB4OyI+QUJDRCBFRkdIPC9kaXY+CisgLS0+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>464822</attachid>
            <date>2023-02-03 07:16:52 -0800</date>
            <delta_ts>2023-02-03 09:37:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-251608-20230203071651.patch</filename>
            <type>text/plain</type>
            <size>53056</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSA5YzhiM2FlNWQyMzM1YzgxNjVlZWJiYzE4ZDk2YmJhMWNlZGU3MTVjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFRodSwgMiBGZWIgMjAyMyAxMDoyNDozNyAtMDgwMApTdWJqZWN0OiBbUEFUQ0hdIFtSVEwvYmlk
aS92ZXJ0aWNhbF0gSW5jb3JyZWN0IGNvbnRlbnQgdHJ1bmNhdGlvbiB3aGVuCiAidGV4dC1vdmVy
ZmxvdyIgaXMgImVsbGlwc2lzIiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjUxNjA4CgpSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KCkluIHRoaXMgcGF0Y2ggaW5s
aW5lIGNvbnRlbnQgdHJ1bmNhdGlvbiAob3ZlcmZsb3c6IGhpZGRlbiArIHRleHQtb3ZlcmZsb3c6
IGVsbGlwc2lzKSBpcyBtb3ZlZCBmcm9tIGxvZ2ljYWwgdG8gdmlzdWFsIHNwYWNlLgpJdCBlbnN1
cmVzIHRoYXQgdGhlIHRydW5jYXRpb24gaGFwcGVucyBfYWZ0ZXJfIGJpZGkgcmVvcmRlcmluZyBh
bmQgYWxzbyBfYWZ0ZXJfIGFwcGx5aW5nIHdyaXRpbmctbW9kZS4KCk5vdyBpbnN0ZWFkIG9mIHJ1
bm5pbmcgdHJ1bmNhdGlvbiBhcyBwYXJ0IG9mIHRoZSB0cmFpbGluZyBjb250ZW50IGhhbmRsaW5n
IGluIExpbmVCdWlsZGVyOjpjbG9zZSByaWdodCBhZnRlciB3ZSBmaWd1cmVkIHRoZSBicmVha2lu
ZyBwb3NpdGlvbiBmb3IKdGhlIGlubGluZSBjb250ZW50LCB3ZSBkbyBpdCBhZnRlciBjb25zdHJ1
Y3RpbmcgdGhlIGRpc3BsYXkgYm94ZXMgKGFuZCB0aGUgYXNzb2NpYXRlZCBkaXNwbGF5IGxpbmUp
LgoKMSwgUmVtb3ZlIHRydW5jYXRpb24gY29kZSBmcm9tIExpbmU6OlJ1biBhbmQgYWxsIHRoZSBy
ZWxhdGVkIGNvZGUgYWxsIHRoZSB3YXkgdG8gZGlzcGxheSBsaW5lIGNvbnN0cnVjdGlvbgoyLiBJ
bnRyb2R1Y2UgdHJ1bmNhdGVPdmVyZmxvd2luZ0Rpc3BsYXlCb3hlcy4gSXQgYXBwbGllcyB0cnVu
Y2F0aW9uIG9uIGRpc3BsYXkgYm94IGluIHZpc3VhbCBvcmRlciAodGhlIHRydW5jYXRpb24gbG9n
aWMgaXMgYWN0dWFsbHkgbW92ZWQgZnJvbSBMaW5lOjpSdW4sIG5vdGhpbmcgcmVhbGx5IG5ldyBo
ZXJlKS4KCiogTGF5b3V0VGVzdHMvZmFzdC9pbmxpbmUvdGV4dF9vdmVyZmxvd19lbGxpcHNpc19z
aW1wbGUtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCiogTGF5b3V0VGVzdHMvZmFzdC9pbmxpbmUvdGV4
dF9vdmVyZmxvd19lbGxpcHNpc19zaW1wbGUuaHRtbDogQWRkZWQuCiogU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQu
Y3BwOgooV2ViQ29yZTo6TGF5b3V0OjpsaW5lRW5kaW5nRWxsaXBzaXNQb2xpY3kpOgooV2ViQ29y
ZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGluZUxheW91dCk6CihXZWJDb3Jl
OjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0OjpjcmVhdGVEaXNwbGF5Q29udGVudEZv
ckxpbmUpOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L0lubGluZUZvcm1hdHRpbmdDb250ZXh0Lmg6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6Okxp
bmU6OmluaXRpYWxpemUpOgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lOjpSdW46OmRldGFjaFRyYWls
aW5nV2hpdGVzcGFjZSk6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmU6OnRydW5jYXRlKTogRGVsZXRl
ZC4KKFdlYkNvcmU6OkxheW91dDo6TGluZTo6UnVuOjp0cnVuY2F0ZSk6IERlbGV0ZWQuCiogU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5o
OgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lOjppc0NvbnRlbnRUcnVuY2F0ZWQgY29uc3QpOiBEZWxl
dGVkLgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lOjpSdW46OmlzVHJ1bmNhdGVkIGNvbnN0KTogRGVs
ZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9J
bmxpbmVMaW5lQnVpbGRlci5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjpsYXlv
dXRJbmxpbmVDb250ZW50KToKKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OmNvbXB1dGVk
SW50cmluc2ljV2lkdGgpOgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6Y2xvc2UpOgoq
IFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxp
bmVCdWlsZGVyLmg6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5Qm94Lmg6CihXZWJDb3JlOjpJbmxpbmVEaXNwbGF5
OjpCb3g6OlRleHQ6OnNldFBhcnRpYWxseVZpc2libGVDb250ZW50TGVuZ3RoKToKKFdlYkNvcmU6
OklubGluZURpc3BsYXk6OkJveDo6Qm94KToKKFdlYkNvcmU6OklubGluZURpc3BsYXk6OkJveDo6
c2V0TGVmdCk6CihXZWJDb3JlOjpJbmxpbmVEaXNwbGF5OjpCb3g6OnNldElzRnVsbHlUcnVuY2F0
ZWQpOgooV2ViQ29yZTo6SW5saW5lRGlzcGxheTo6Qm94OjpUZXh0OjpUZXh0KToKKiBTb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURp
c3BsYXlDb250ZW50QnVpbGRlci5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZURpc3BsYXlD
b250ZW50QnVpbGRlcjo6YXBwZW5kVGV4dERpc3BsYXlCb3gpOgooV2ViQ29yZTo6TGF5b3V0OjpJ
bmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OmFwcGVuZEF0b21pY0lubGluZUxldmVsRGlzcGxh
eUJveCk6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6YXBw
ZW5kSW5saW5lQm94RGlzcGxheUJveCk6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZURpc3BsYXlD
b250ZW50QnVpbGRlcjo6YXBwZW5kU3Bhbm5pbmdJbmxpbmVCb3hEaXNwbGF5Qm94KToKKiBTb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGlu
ZURpc3BsYXlDb250ZW50QnVpbGRlci5oOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVEaXNwbGF5
Q29udGVudEJ1aWxkZXI6OnJvb3RTdHlsZSBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5TGluZS5oOgoo
V2ViQ29yZTo6SW5saW5lRGlzcGxheTo6TGluZTo6c2V0RWxsaXBzaXNWaXN1YWxSZWN0KToKKFdl
YkNvcmU6OklubGluZURpc3BsYXk6OkxpbmU6OkxpbmUpOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUxpbmVCdWls
ZGVyLmNwcDoKKFdlYkNvcmU6OkxheW91dDo6ZmxpcExvZ2ljYWxMaW5lUmVjdFRvVmlzdWFsRm9y
V3JpdGluZ01vZGUpOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXI6
OmJ1aWxkIGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6dHJ1bmNhdGVPdmVyZmxvd2luZ0Rpc3Bs
YXlCb3hlcyk6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZURpc3BsYXlMaW5lQnVpbGRlcjo6dHJh
aWxpbmdFbGxpcHNpc1Zpc3VhbFJlY3QpOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVEaXNwbGF5
TGluZUJ1aWxkZXI6OnRyYWlsaW5nRWxsaXBzaXNSZWN0IGNvbnN0KTogRGVsZXRlZC4KKFdlYkNv
cmU6OkxheW91dDo6SW5saW5lRGlzcGxheUxpbmVCdWlsZGVyOjpmbGlwTG9naWNhbExpbmVSZWN0
VG9WaXN1YWxGb3JXcml0aW5nTW9kZSBjb25zdCk6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5TGlu
ZUJ1aWxkZXIuaDoKLS0tCiAuLi4vaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcCAg
ICAgICAgfCAgMjIgKystCiAuLi4vaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmggICAg
ICAgICAgfCAgIDIgKy0KIC4uLi9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmUu
Y3BwICB8ICA0OCArLS0tLQogLi4uL2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGlu
ZS5oICAgIHwgIDEzIC0tCiAuLi4vaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNwcCAgICAgICAg
ICAgICAgfCAgNDQgKy0tLS0KIC4uLi9pbmxpbmUvSW5saW5lTGluZUJ1aWxkZXIuaCAgICAgICAg
ICAgICAgICB8ICAyMCArLQogLi4uL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlCb3guaCAg
ICAgICAgIHwgIDIwICstCiAuLi4vZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIu
Y3BwICAgfCAgIDkgKy0KIC4uLi9kaXNwbGF5L0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5o
ICAgICB8ICAgMiArCiAuLi4vaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUxpbmUuaCAgICAg
ICAgfCAgIDYgKy0KIC4uLi9kaXNwbGF5L0lubGluZURpc3BsYXlMaW5lQnVpbGRlci5jcHAgICAg
ICB8IDE4MSArKysrKysrKysrKysrKy0tLS0KIC4uLi9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNw
bGF5TGluZUJ1aWxkZXIuaCB8ICAgNCArLQogLi4uZXh0X292ZXJmbG93X2VsbGlwc2lzX3NpbXBs
ZS1leHBlY3RlZC5odG1sIHwgIDE2ICsrCiAuLi4vaW5saW5lL3RleHRfb3ZlcmZsb3dfZWxsaXBz
aXNfc2ltcGxlLmh0bWwgfCAgMjQgKysrCiAxNCBmaWxlcyBjaGFuZ2VkLCAyMzIgaW5zZXJ0aW9u
cygrKSwgMTc5IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2Zh
c3QvaW5saW5lL3RleHRfb3ZlcmZsb3dfZWxsaXBzaXNfc2ltcGxlLWV4cGVjdGVkLmh0bWwKIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9mYXN0L2lubGluZS90ZXh0X292ZXJmbG93X2Vs
bGlwc2lzX3NpbXBsZS5odG1sCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0
dGluZ0NvbnRleHQuY3BwCmluZGV4IDRiODBjN2M4MGVmMS4uOWRlMWFlMTk5OTFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9Jbmxp
bmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC0yMDIs
MTkgKzIwMiwxOSBAQCBzdGF0aWMgc2l6ZV90IGluZGV4T2ZGaXJzdElubGluZUl0ZW1Gb3JOZXh0
TGluZShjb25zdCBMaW5lQnVpbGRlcjo6TGluZUNvbnRlbnQmCiAgICAgcmV0dXJuIGxpbmVDb250
ZW50UmFuZ2UuZW5kOwogfQogCi1zdGF0aWMgTGluZUJ1aWxkZXI6OkxpbmVJbnB1dDo6TGluZUVu
ZGluZ0VsbGlwc2lzUG9saWN5IGxpbmVFbmRpbmdFbGxpcHNpc1BvbGljeShjb25zdCBSZW5kZXJT
dHlsZSYgcm9vdFN0eWxlLCBzaXplX3QgbnVtYmVyT2ZMaW5lcywgc3RkOjpvcHRpb25hbDxzaXpl
X3Q+IG1heGltdW1OdW1iZXJPZlZpc2libGVMaW5lcykKK3N0YXRpYyBMaW5lQnVpbGRlcjo6TGlu
ZUVuZGluZ0VsbGlwc2lzUG9saWN5IGxpbmVFbmRpbmdFbGxpcHNpc1BvbGljeShjb25zdCBSZW5k
ZXJTdHlsZSYgcm9vdFN0eWxlLCBzaXplX3QgbnVtYmVyT2ZMaW5lcywgc3RkOjpvcHRpb25hbDxz
aXplX3Q+IG1heGltdW1OdW1iZXJPZlZpc2libGVMaW5lcykKIHsKICAgICAvLyBXZSBtYXkgaGF2
ZSBwYXNzZWQgdGhlIGxpbmUtY2xhbXAgbGluZSB3aXRoIG92ZXJmbG93IHZpc2libGUuCiAgICAg
aWYgKG1heGltdW1OdW1iZXJPZlZpc2libGVMaW5lcyAmJiBudW1iZXJPZkxpbmVzIDwgKm1heGlt
dW1OdW1iZXJPZlZpc2libGVMaW5lcykgewogICAgICAgICAvLyBJZiB0aGUgbmV4dCBjYWxsIHRv
IGxheW91dElubGluZUNvbnRlbnQoKSB3b24ndCBwcm9kdWNlIGEgbGluZSB3aXRoIGNvbnRlbnQg
KGUuZy4gb25seSBmbG9hdHMpLCB3ZSdsbCBlbmQgdXAgaGVyZSBhZ2Fpbi4KICAgICAgICAgYXV0
byBzaG91bGRBcHBseUNsYW1wV2hlbkFwcGxpY2FibGUgPSAqbWF4aW11bU51bWJlck9mVmlzaWJs
ZUxpbmVzIC0gbnVtYmVyT2ZMaW5lcyA9PSAxOwogICAgICAgICBpZiAoc2hvdWxkQXBwbHlDbGFt
cFdoZW5BcHBsaWNhYmxlKQotICAgICAgICAgICAgcmV0dXJuIExpbmVCdWlsZGVyOjpMaW5lSW5w
dXQ6OkxpbmVFbmRpbmdFbGxpcHNpc1BvbGljeTo6V2hlbkNvbnRlbnRPdmVyZmxvd3NJbkJsb2Nr
RGlyZWN0aW9uOworICAgICAgICAgICAgcmV0dXJuIExpbmVCdWlsZGVyOjpMaW5lRW5kaW5nRWxs
aXBzaXNQb2xpY3k6OldoZW5Db250ZW50T3ZlcmZsb3dzSW5CbG9ja0RpcmVjdGlvbjsKICAgICB9
CiAgICAgLy8gVHJ1bmNhdGlvbiBpcyBpbiBlZmZlY3Qgd2hlbiB0aGUgYmxvY2sgY29udGFpbmVy
IGhhcyBvdmVyZmxvdyBvdGhlciB0aGFuIHZpc2libGUuCiAgICAgaWYgKHJvb3RTdHlsZS5vdmVy
Zmxvd1goKSA9PSBPdmVyZmxvdzo6SGlkZGVuICYmIHJvb3RTdHlsZS50ZXh0T3ZlcmZsb3coKSA9
PSBUZXh0T3ZlcmZsb3c6OkVsbGlwc2lzKQotICAgICAgICByZXR1cm4gTGluZUJ1aWxkZXI6Okxp
bmVJbnB1dDo6TGluZUVuZGluZ0VsbGlwc2lzUG9saWN5OjpXaGVuQ29udGVudE92ZXJmbG93c0lu
SW5saW5lRGlyZWN0aW9uOwotICAgIHJldHVybiBMaW5lQnVpbGRlcjo6TGluZUlucHV0OjpMaW5l
RW5kaW5nRWxsaXBzaXNQb2xpY3k6Ok5vOworICAgICAgICByZXR1cm4gTGluZUJ1aWxkZXI6Okxp
bmVFbmRpbmdFbGxpcHNpc1BvbGljeTo6V2hlbkNvbnRlbnRPdmVyZmxvd3NJbklubGluZURpcmVj
dGlvbjsKKyAgICByZXR1cm4gTGluZUJ1aWxkZXI6OkxpbmVFbmRpbmdFbGxpcHNpc1BvbGljeTo6
Tm87CiB9CiAKIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxpbmVMYXlvdXQoSW5saW5l
SXRlbXMmIGlubGluZUl0ZW1zLCBjb25zdCBMaW5lQnVpbGRlcjo6SW5saW5lSXRlbVJhbmdlJiBu
ZWVkc0xheW91dFJhbmdlLCBjb25zdCBDb25zdHJhaW50c0ZvcklubGluZUNvbnRlbnQmIGNvbnN0
cmFpbnRzLCBCbG9ja0xheW91dFN0YXRlJiBibG9ja0xheW91dFN0YXRlKQpAQCAtMjQzLDEwICsy
NDMsMTAgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGluZUxheW91dChJbmxpbmVJ
dGVtcyYgaW5saW5lSXRlbXMsIGNvbnN0IExpbmVCdWkKICAgICB3aGlsZSAodHJ1ZSkgewogCiAg
ICAgICAgIGF1dG8gbGluZUluaXRpYWxSZWN0ID0gSW5saW5lUmVjdCB7IGxpbmVMb2dpY2FsVG9w
LCBjb25zdHJhaW50cy5ob3Jpem9udGFsKCkubG9naWNhbExlZnQsIGNvbnN0cmFpbnRzLmhvcml6
b250YWwoKS5sb2dpY2FsV2lkdGgsIGZvcm1hdHRpbmdHZW9tZXRyeSgpLmluaXRpYWxMaW5lSGVp
Z2h0KCFwcmV2aW91c0xpbmUuaGFzX3ZhbHVlKCkpIH07Ci0gICAgICAgIGF1dG8gZWxsaXBzaXNQ
b2xpY3kgPSBsaW5lRW5kaW5nRWxsaXBzaXNQb2xpY3kocm9vdFN0eWxlLCBudW1iZXJPZkxpbmVz
LCBtYXhpbXVtTnVtYmVyT2ZWaXNpYmxlTGluZXNGb3JUaGlzSW5saW5lQ29udGVudCk7Ci0gICAg
ICAgIGF1dG8gbGluZUNvbnRlbnQgPSBsaW5lQnVpbGRlci5sYXlvdXRJbmxpbmVDb250ZW50KHsg
eyBmaXJzdElubGluZUl0ZW1OZWVkc0xheW91dCwgbmVlZHNMYXlvdXRSYW5nZS5lbmQgfSwgbGlu
ZUluaXRpYWxSZWN0LCBlbGxpcHNpc1BvbGljeSB9LCBwcmV2aW91c0xpbmUpOworICAgICAgICBh
dXRvIGxpbmVDb250ZW50ID0gbGluZUJ1aWxkZXIubGF5b3V0SW5saW5lQ29udGVudCh7IHsgZmly
c3RJbmxpbmVJdGVtTmVlZHNMYXlvdXQsIG5lZWRzTGF5b3V0UmFuZ2UuZW5kIH0sIGxpbmVJbml0
aWFsUmVjdCB9LCBwcmV2aW91c0xpbmUpOwogCi0gICAgICAgIGF1dG8gbGluZUxvZ2ljYWxSZWN0
ID0gY3JlYXRlRGlzcGxheUNvbnRlbnRGb3JMaW5lKGxpbmVDb250ZW50LCBjb25zdHJhaW50cywg
YmxvY2tMYXlvdXRTdGF0ZSk7CisgICAgICAgIGF1dG8gZWxsaXBzaXNQb2xpY3kgPSBsaW5lRW5k
aW5nRWxsaXBzaXNQb2xpY3kocm9vdFN0eWxlLCBudW1iZXJPZkxpbmVzLCBtYXhpbXVtTnVtYmVy
T2ZWaXNpYmxlTGluZXNGb3JUaGlzSW5saW5lQ29udGVudCk7CisgICAgICAgIGF1dG8gbGluZUxv
Z2ljYWxSZWN0ID0gY3JlYXRlRGlzcGxheUNvbnRlbnRGb3JMaW5lKGxpbmVDb250ZW50LCBjb25z
dHJhaW50cywgZWxsaXBzaXNQb2xpY3ksIGJsb2NrTGF5b3V0U3RhdGUpOwogICAgICAgICBpZiAo
bGluZUNvbnRlbnQuaXNMYXN0TGluZVdpdGhJbmxpbmVDb250ZW50KQogICAgICAgICAgICAgZm9y
bWF0dGluZ1N0YXRlLnNldENsZWFyR2FwQWZ0ZXJMYXN0TGluZShmb3JtYXR0aW5nR2VvbWV0cnko
KS5sb2dpY2FsVG9wRm9yTmV4dExpbmUobGluZUNvbnRlbnQsIGxpbmVMb2dpY2FsUmVjdCwgZmxv
YXRpbmdDb250ZXh0KSAtIGxpbmVMb2dpY2FsUmVjdC5ib3R0b20oKSk7CiAKQEAgLTQ1NywxNCAr
NDU3LDE4IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbGxlY3RDb250ZW50SWZO
ZWVkZWQoKQogICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVJdGVtcyhpbmxpbmVJdGVtc0J1
aWxkZXIuYnVpbGQoKSk7CiB9CiAKLUlubGluZVJlY3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6
OmNyZWF0ZURpc3BsYXlDb250ZW50Rm9yTGluZShjb25zdCBMaW5lQnVpbGRlcjo6TGluZUNvbnRl
bnQmIGxpbmVDb250ZW50LCBjb25zdCBDb25zdHJhaW50c0ZvcklubGluZUNvbnRlbnQmIGNvbnN0
cmFpbnRzLCBjb25zdCBCbG9ja0xheW91dFN0YXRlJiBibG9ja0xheW91dFN0YXRlKQorSW5saW5l
UmVjdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y3JlYXRlRGlzcGxheUNvbnRlbnRGb3JMaW5l
KGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lQ29udGVudCYgbGluZUNvbnRlbnQsIGNvbnN0IENvbnN0
cmFpbnRzRm9ySW5saW5lQ29udGVudCYgY29uc3RyYWludHMsIExpbmVCdWlsZGVyOjpMaW5lRW5k
aW5nRWxsaXBzaXNQb2xpY3kgbGluZUVuZGluZ0VsbGlwc2lzUG9saWN5LCBjb25zdCBCbG9ja0xh
eW91dFN0YXRlJiBibG9ja0xheW91dFN0YXRlKQogewogICAgIGF1dG8mIGZvcm1hdHRpbmdTdGF0
ZSA9IHRoaXMtPmZvcm1hdHRpbmdTdGF0ZSgpOwogICAgIGF1dG8gY3VycmVudExpbmVJbmRleCA9
IGZvcm1hdHRpbmdTdGF0ZS5saW5lcygpLnNpemUoKTsKIAogICAgIGF1dG8gbGluZUJveCA9IExp
bmVCb3hCdWlsZGVyIHsgKnRoaXMsIGxpbmVDb250ZW50LCBibG9ja0xheW91dFN0YXRlIH0uYnVp
bGQoY3VycmVudExpbmVJbmRleCk7CiAgICAgYXV0byBkaXNwbGF5TGluZSA9IElubGluZURpc3Bs
YXlMaW5lQnVpbGRlciB7ICp0aGlzIH0uYnVpbGQobGluZUNvbnRlbnQsIGxpbmVCb3gsIGNvbnN0
cmFpbnRzKTsKLSAgICBmb3JtYXR0aW5nU3RhdGUuYWRkQm94ZXMoSW5saW5lRGlzcGxheUNvbnRl
bnRCdWlsZGVyIHsgKnRoaXMsIGZvcm1hdHRpbmdTdGF0ZSB9LmJ1aWxkKGxpbmVDb250ZW50LCBs
aW5lQm94LCBkaXNwbGF5TGluZSwgY3VycmVudExpbmVJbmRleCkpOworICAgIGF1dG8gYm94ZXMg
PSBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIgeyAqdGhpcywgZm9ybWF0dGluZ1N0YXRlIH0u
YnVpbGQobGluZUNvbnRlbnQsIGxpbmVCb3gsIGRpc3BsYXlMaW5lLCBjdXJyZW50TGluZUluZGV4
KTsKKyAgICBpZiAoYXV0byBlbGxpcHNpc1JlY3QgPSBJbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXI6
OnRyYWlsaW5nRWxsaXBzaXNWaXN1YWxSZWN0QWZ0ZXJUcnVuY2F0aW9uKGxpbmVFbmRpbmdFbGxp
cHNpc1BvbGljeSwgZGlzcGxheUxpbmUsIGJveGVzLCBsaW5lQ29udGVudC5pc0xhc3RMaW5lV2l0
aElubGluZUNvbnRlbnQpKQorICAgICAgICBkaXNwbGF5TGluZS5zZXRFbGxpcHNpc1Zpc3VhbFJl
Y3QoKmVsbGlwc2lzUmVjdCk7CisKKyAgICBmb3JtYXR0aW5nU3RhdGUuYWRkQm94ZXMoV1RGTW92
ZShib3hlcykpOwogICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRMaW5lQm94KFdURk1vdmUobGluZUJv
eCkpOwogICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRMaW5lKGRpc3BsYXlMaW5lKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmgKaW5kZXggNzEwNjE0MGQ1
ZDFhLi4xNjI0N2MwNzc3OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0
dGluZ0NvbnRleHQuaApAQCAtNzIsNyArNzIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcHV0
ZVdpZHRoQW5kTWFyZ2luKGNvbnN0IEJveCYsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYp
OwogCiAgICAgdm9pZCBjb2xsZWN0Q29udGVudElmTmVlZGVkKCk7Ci0gICAgSW5saW5lUmVjdCBj
cmVhdGVEaXNwbGF5Q29udGVudEZvckxpbmUoY29uc3QgTGluZUJ1aWxkZXI6OkxpbmVDb250ZW50
JiwgY29uc3QgQ29uc3RyYWludHNGb3JJbmxpbmVDb250ZW50JiwgY29uc3QgQmxvY2tMYXlvdXRT
dGF0ZSYpOworICAgIElubGluZVJlY3QgY3JlYXRlRGlzcGxheUNvbnRlbnRGb3JMaW5lKGNvbnN0
IExpbmVCdWlsZGVyOjpMaW5lQ29udGVudCYsIGNvbnN0IENvbnN0cmFpbnRzRm9ySW5saW5lQ29u
dGVudCYsIExpbmVCdWlsZGVyOjpMaW5lRW5kaW5nRWxsaXBzaXNQb2xpY3ksIGNvbnN0IEJsb2Nr
TGF5b3V0U3RhdGUmKTsKICAgICB2b2lkIHJlc2V0R2VvbWV0cnlGb3JDbGFtcGVkQ29udGVudChj
b25zdCBMaW5lQnVpbGRlcjo6SW5saW5lSXRlbVJhbmdlJiBuZWVkc0Rpc3BsYXlDb250ZW50UmFu
Z2UsIGNvbnN0IExpbmVCdWlsZGVyOjpGbG9hdExpc3QmIG92ZXJmbG93aW5nRmxvYXRzLCBMYXlv
dXRQb2ludCB0b3BsZWZ0KTsKIAogICAgIHZvaWQgaW52YWxpZGF0ZUZvcm1hdHRpbmdTdGF0ZSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvSW5saW5lTGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2lubGluZS9JbmxpbmVMaW5lLmNwcAppbmRleCA4ZjAwMTc4ZDM4ZTIuLmY4NTc1YTIy
MzFlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9pbmxpbmUvSW5saW5lTGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5jcHAKQEAgLTUwLDcgKzUwLDYgQEAgTGlu
ZTo6fkxpbmUoKQogdm9pZCBMaW5lOjppbml0aWFsaXplKGNvbnN0IFZlY3RvcjxJbmxpbmVJdGVt
PiYgbGluZVNwYW5uaW5nSW5saW5lQm94ZXMsIGJvb2wgaXNGaXJzdEZvcm1hdHRlZExpbmUpCiB7
CiAgICAgbV9pc0ZpcnN0Rm9ybWF0dGVkTGluZSA9IGlzRmlyc3RGb3JtYXR0ZWRMaW5lOwotICAg
IG1fY29udGVudElzVHJ1bmNhdGVkID0gZmFsc2U7CiAgICAgbV9pbmxpbmVCb3hMaXN0V2l0aENs
b25lZERlY29yYXRpb25FbmQuY2xlYXIoKTsKICAgICBtX2Nsb25lZEVuZERlY29yYXRpb25XaWR0
aEZvcklubGluZUJveFJ1bnMgPSB7IH07CiAgICAgbV9ub25TcGFubmluZ0lubGluZUxldmVsQm94
Q291bnQgPSAwOwpAQCAtMTgxLDI3ICsxODAsNiBAQCB2b2lkIExpbmU6OmFwcGx5UnVuRXhwYW5z
aW9uKElubGluZUxheW91dFVuaXQgaG9yaXpvbnRhbEF2YWlsYWJsZVNwYWNlKQogICAgIG1fY29u
dGVudExvZ2ljYWxXaWR0aCArPSBhY2N1bXVsYXRlZEV4cGFuc2lvbjsKIH0KIAotdm9pZCBMaW5l
Ojp0cnVuY2F0ZShJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxSaWdodCkKLXsKLSAgICBBU1NFUlQo
IW1fY29udGVudElzVHJ1bmNhdGVkKTsKLSAgICBBU1NFUlQobV9jb250ZW50TG9naWNhbFdpZHRo
ID4gbG9naWNhbFJpZ2h0KTsKLSAgICBhdXRvIGlzRmlyc3RSdW4gPSB0cnVlOwotICAgIGZvciAo
YXV0byYgcnVuIDogbV9ydW5zKSB7Ci0gICAgICAgIGlmIChydW4uaXNJbmxpbmVCb3goKSkKLSAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAocnVuLmxvZ2ljYWxSaWdodCgpID4gbG9n
aWNhbFJpZ2h0KSB7Ci0gICAgICAgICAgICAvLyBUaGUgZmlyc3QgY2hhcmFjdGVyIG9yIGF0b21p
YyBpbmxpbmUtbGV2ZWwgZWxlbWVudCBvbiBhIGxpbmUgbXVzdCBiZSBjbGlwcGVkIHJhdGhlciB0
aGFuIGVsbGlwc2VkLgotICAgICAgICAgICAgaWYgKGlzRmlyc3RSdW4pCi0gICAgICAgICAgICAg
ICAgbV9jb250ZW50SXNUcnVuY2F0ZWQgPSBydW4udHJ1bmNhdGUobG9naWNhbFJpZ2h0IC0gcnVu
LmxvZ2ljYWxMZWZ0KCksIFJ1bjo6Q2FuRnVsbHlUcnVuY2F0ZTo6Tm8pOwotICAgICAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgcnVuLnRydW5jYXRlKGxvZ2ljYWxSaWdodCAtIHJ1bi5s
b2dpY2FsTGVmdCgpKTsKLSAgICAgICAgICAgICAgICBtX2NvbnRlbnRJc1RydW5jYXRlZCA9IHRy
dWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaXNGaXJzdFJ1biA9IGZhbHNl
OwotICAgIH0KLX0KLQogdm9pZCBMaW5lOjpoYW5kbGVUcmFpbGluZ1RyaW1tYWJsZUNvbnRlbnQo
VHJhaWxpbmdDb250ZW50QWN0aW9uIHRyYWlsaW5nVHJpbW1hYmxlQ29udGVudEFjdGlvbikKIHsK
ICAgICBpZiAobV90cmltbWFibGVUcmFpbGluZ0NvbnRlbnQuaXNFbXB0eSgpIHx8IG1fcnVucy5p
c0VtcHR5KCkpCkBAIC04NTEsNyArODI5LDcgQEAgc3RkOjpvcHRpb25hbDxMaW5lOjpSdW4+IExp
bmU6OlJ1bjo6ZGV0YWNoVHJhaWxpbmdXaGl0ZXNwYWNlKCkKICAgICBhdXRvIHRyYWlsaW5nV2hp
dGVzcGFjZVJ1biA9ICp0aGlzOwogCiAgICAgYXV0byBsZWFkaW5nTm9uV2hpdGVzcGFjZUNvbnRl
bnRMZW5ndGggPSBtX3RleHRDb250ZW50LT5sZW5ndGggLSBtX3RyYWlsaW5nV2hpdGVzcGFjZS0+
bGVuZ3RoOwotICAgIHRyYWlsaW5nV2hpdGVzcGFjZVJ1bi5tX3RleHRDb250ZW50ID0geyBtX3Rl
eHRDb250ZW50LT5zdGFydCArIGxlYWRpbmdOb25XaGl0ZXNwYWNlQ29udGVudExlbmd0aCwgbV90
cmFpbGluZ1doaXRlc3BhY2UtPmxlbmd0aCwgeyB9LCBmYWxzZSB9OworICAgIHRyYWlsaW5nV2hp
dGVzcGFjZVJ1bi5tX3RleHRDb250ZW50ID0geyBtX3RleHRDb250ZW50LT5zdGFydCArIGxlYWRp
bmdOb25XaGl0ZXNwYWNlQ29udGVudExlbmd0aCwgbV90cmFpbGluZ1doaXRlc3BhY2UtPmxlbmd0
aCwgZmFsc2UgfTsKIAogICAgIHRyYWlsaW5nV2hpdGVzcGFjZVJ1bi5tX2xvZ2ljYWxXaWR0aCA9
IG1fdHJhaWxpbmdXaGl0ZXNwYWNlLT53aWR0aDsKICAgICB0cmFpbGluZ1doaXRlc3BhY2VSdW4u
bV9sb2dpY2FsTGVmdCA9IGxvZ2ljYWxSaWdodCgpIC0gbV90cmFpbGluZ1doaXRlc3BhY2UtPndp
ZHRoOwpAQCAtOTEzLDMwICs4OTEsNiBAQCBJbmxpbmVMYXlvdXRVbml0IExpbmU6OlJ1bjo6cmVt
b3ZlVHJhaWxpbmdXaGl0ZXNwYWNlKCkKICAgICByZXR1cm4gdHJpbW1lZFdpZHRoOwogfQogCi1i
b29sIExpbmU6OlJ1bjo6dHJ1bmNhdGUoSW5saW5lTGF5b3V0VW5pdCB2aXNpYmxlV2lkdGgsIENh
bkZ1bGx5VHJ1bmNhdGUgY2FuRnVsbHlUcnVuY2F0ZSkKLXsKLSAgICBBU1NFUlQoIXZpc2libGVX
aWR0aCB8fCB2aXNpYmxlV2lkdGggPCBtX2xvZ2ljYWxXaWR0aCk7Ci0KLSAgICBpZiAoaXNUZXh0
KCkpIHsKLSAgICAgICAgbV9pc1RydW5jYXRlZCA9IHRydWU7Ci0gICAgICAgIGF1dG8mIGlubGlu
ZVRleHRCb3ggPSBkb3duY2FzdDxJbmxpbmVUZXh0Qm94PigqbV9sYXlvdXRCb3gpOwotICAgICAg
ICBhdXRvIGxlZnRTaWRlID0gVGV4dFV0aWw6OldvcmRCcmVha0xlZnQgeyB9OwotICAgICAgICBp
ZiAodmlzaWJsZVdpZHRoID4gMC5mKQotICAgICAgICAgICAgbGVmdFNpZGUgPSBUZXh0VXRpbDo6
YnJlYWtXb3JkKGlubGluZVRleHRCb3gsIG1fdGV4dENvbnRlbnQtPnN0YXJ0LCBtX3RleHRDb250
ZW50LT5sZW5ndGgsIG1fbG9naWNhbFdpZHRoLCB2aXNpYmxlV2lkdGgsIG1fbG9naWNhbExlZnQs
IG1fc3R5bGUuZm9udENhc2NhZGUoKSk7Ci0KLSAgICAgICAgaWYgKGxlZnRTaWRlLmxlbmd0aCkK
LSAgICAgICAgICAgIG1fdGV4dENvbnRlbnQtPnBhcnRpYWxseVZpc2libGVDb250ZW50ID0geyBs
ZWZ0U2lkZS5sZW5ndGgsIGxlZnRTaWRlLmxvZ2ljYWxXaWR0aCB9OwotICAgICAgICBlbHNlIGlm
IChjYW5GdWxseVRydW5jYXRlID09IENhbkZ1bGx5VHJ1bmNhdGU6Ok5vKSB7Ci0gICAgICAgICAg
ICBhdXRvIGZpcnN0Q2hhcmFjdGVyTGVuZ3RoID0gVGV4dFV0aWw6OmZpcnN0VXNlclBlcmNlaXZl
ZENoYXJhY3Rlckxlbmd0aChpbmxpbmVUZXh0Qm94LCBtX3RleHRDb250ZW50LT5zdGFydCwgbV90
ZXh0Q29udGVudC0+bGVuZ3RoKTsKLSAgICAgICAgICAgIGF1dG8gZmlyc3RDaGFyYWN0ZXJXaWR0
aCA9IFRleHRVdGlsOjp3aWR0aChpbmxpbmVUZXh0Qm94LCBpbmxpbmVUZXh0Qm94LnN0eWxlKCku
Zm9udENhc2NhZGUoKSwgbV90ZXh0Q29udGVudC0+c3RhcnQsIG1fdGV4dENvbnRlbnQtPnN0YXJ0
ICsgZmlyc3RDaGFyYWN0ZXJMZW5ndGgsIHsgfSwgVGV4dFV0aWw6OlVzZVRyYWlsaW5nV2hpdGVz
cGFjZU1lYXN1cmluZ09wdGltaXphdGlvbjo6Tm8pOwotICAgICAgICAgICAgbV90ZXh0Q29udGVu
dC0+cGFydGlhbGx5VmlzaWJsZUNvbnRlbnQgPSB7IGZpcnN0Q2hhcmFjdGVyTGVuZ3RoLCBmaXJz
dENoYXJhY3RlcldpZHRoIH07Ci0gICAgICAgIH0KLSAgICB9IGVsc2UKLSAgICAgICAgbV9pc1Ry
dW5jYXRlZCA9IGNhbkZ1bGx5VHJ1bmNhdGUgPT0gQ2FuRnVsbHlUcnVuY2F0ZTo6WWVzOwotCi0g
ICAgcmV0dXJuIG1faXNUcnVuY2F0ZWQ7Ci19Ci0KIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5oIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGlu
ZS5oCmluZGV4IGE4MjIzYWI3YTBkZS4uNDE0NGJmYmE0Y2NhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5l
TGluZS5oCkBAIC00Nyw3ICs0Nyw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZChjb25zdCBJ
bmxpbmVJdGVtJiwgY29uc3QgUmVuZGVyU3R5bGUmLCBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxX
aWR0aCk7CiAKICAgICBib29sIGhhc0NvbnRlbnQoKSBjb25zdDsKLSAgICBib29sIGlzQ29udGVu
dFRydW5jYXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudElzVHJ1bmNhdGVkOyB9CiAKICAg
ICBib29sIGNvbnRlbnROZWVkc0JpZGlSZW9yZGVyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9oYXNO
b25EZWZhdWx0QmlkaUxldmVsUnVuOyB9CiAKQEAgLTcwLDcgKzY5LDYgQEAgcHVibGljOgogICAg
IHZvaWQgaGFuZGxlT3ZlcmZsb3dpbmdOb25CcmVha2luZ1NwYWNlKFRyYWlsaW5nQ29udGVudEFj
dGlvbiwgSW5saW5lTGF5b3V0VW5pdCBvdmVyZmxvd2luZ1dpZHRoKTsKICAgICB2b2lkIHJlc2V0
QmlkaUxldmVsRm9yVHJhaWxpbmdXaGl0ZXNwYWNlKFVCaURpTGV2ZWwgcm9vdEJpZGlMZXZlbCk7
CiAgICAgdm9pZCBhcHBseVJ1bkV4cGFuc2lvbihJbmxpbmVMYXlvdXRVbml0IGhvcml6b250YWxB
dmFpbGFibGVTcGFjZSk7Ci0gICAgdm9pZCB0cnVuY2F0ZShJbmxpbmVMYXlvdXRVbml0IGxvZ2lj
YWxSaWdodCk7CiAKICAgICBzdHJ1Y3QgUnVuIHsKICAgICAgICAgZW51bSBjbGFzcyBUeXBlIDog
dWludDhfdCB7CkBAIC0xMDQsMTcgKzEwMiwxMCBAQCBwdWJsaWM6CiAgICAgICAgIGJvb2wgaXND
b250ZW50ZnVsKCkgY29uc3QgeyByZXR1cm4gKGlzVGV4dCgpICYmIHRleHRDb250ZW50KCktPmxl
bmd0aCkgfHwgaXNCb3goKSB8fCBpc0xpbmVCcmVhaygpIHx8IGlzTGlzdE1hcmtlcigpOyB9CiAg
ICAgICAgIGJvb2wgaXNHZW5lcmF0ZWQoKSBjb25zdCB7IHJldHVybiBpc0xpc3RNYXJrZXIoKTsg
fQogCi0gICAgICAgIGJvb2wgaXNUcnVuY2F0ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzVHJ1bmNh
dGVkOyB9Ci0KICAgICAgICAgY29uc3QgQm94JiBsYXlvdXRCb3goKSBjb25zdCB7IHJldHVybiAq
bV9sYXlvdXRCb3g7IH0KICAgICAgICAgc3RydWN0IFRleHQgewogICAgICAgICAgICAgc2l6ZV90
IHN0YXJ0IHsgMCB9OwogICAgICAgICAgICAgc2l6ZV90IGxlbmd0aCB7IDAgfTsKLSAgICAgICAg
ICAgIHN0cnVjdCBQYXJ0aWFsbHlWaXNpYmxlQ29udGVudCB7Ci0gICAgICAgICAgICAgICAgc2l6
ZV90IGxlbmd0aCB7IDAgfTsKLSAgICAgICAgICAgICAgICBJbmxpbmVMYXlvdXRVbml0IHdpZHRo
IHsgMC5mIH07Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxQYXJ0
aWFsbHlWaXNpYmxlQ29udGVudD4gcGFydGlhbGx5VmlzaWJsZUNvbnRlbnQgeyB9OwogICAgICAg
ICAgICAgYm9vbCBuZWVkc0h5cGhlbiB7IGZhbHNlIH07CiAgICAgICAgIH07CiAgICAgICAgIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8VGV4dD4mIHRleHRDb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV90
ZXh0Q29udGVudDsgfQpAQCAtMTcyLDggKzE2Myw2IEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBo
YXNUcmFpbGluZ0xldHRlclNwYWNpbmcoKSBjb25zdDsKICAgICAgICAgSW5saW5lTGF5b3V0VW5p
dCB0cmFpbGluZ0xldHRlclNwYWNpbmcoKSBjb25zdDsKICAgICAgICAgSW5saW5lTGF5b3V0VW5p
dCByZW1vdmVUcmFpbGluZ0xldHRlclNwYWNpbmcoKTsKLSAgICAgICAgZW51bSBjbGFzcyBDYW5G
dWxseVRydW5jYXRlIDogdWludDhfdCB7IFllcywgTm8gfTsKLSAgICAgICAgYm9vbCB0cnVuY2F0
ZShJbmxpbmVMYXlvdXRVbml0IHRydW5jYXRlZFdpZHRoLCBDYW5GdWxseVRydW5jYXRlID0gQ2Fu
RnVsbHlUcnVuY2F0ZTo6WWVzKTsKIAogICAgICAgICBUeXBlIG1fdHlwZSB7IFR5cGU6OlRleHQg
fTsKICAgICAgICAgY29uc3QgQm94KiBtX2xheW91dEJveCB7IG51bGxwdHIgfTsKQEAgLTE4NSw3
ICsxNzQsNiBAQCBwdWJsaWM6CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8VHJhaWxpbmdXaGl0ZXNw
YWNlPiBtX3RyYWlsaW5nV2hpdGVzcGFjZSB7IH07CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8c2l6
ZV90PiBtX2xhc3ROb25XaGl0ZXNwYWNlQ29udGVudFN0YXJ0IHsgfTsKICAgICAgICAgc3RkOjpv
cHRpb25hbDxUZXh0PiBtX3RleHRDb250ZW50OwotICAgICAgICBib29sIG1faXNUcnVuY2F0ZWQg
eyBmYWxzZSB9OwogICAgIH07CiAgICAgdXNpbmcgUnVuTGlzdCA9IFZlY3RvcjxSdW4sIDEwPjsK
ICAgICBjb25zdCBSdW5MaXN0JiBydW5zKCkgY29uc3QgeyByZXR1cm4gbV9ydW5zOyB9CkBAIC0y
ODEsNyArMjY5LDYgQEAgcHJpdmF0ZToKICAgICBJbmxpbmVCb3hMaXN0V2l0aENsb25lZERlY29y
YXRpb25FbmQgbV9pbmxpbmVCb3hMaXN0V2l0aENsb25lZERlY29yYXRpb25FbmQ7CiAgICAgSW5s
aW5lTGF5b3V0VW5pdCBtX2Nsb25lZEVuZERlY29yYXRpb25XaWR0aEZvcklubGluZUJveFJ1bnMg
eyAwIH07CiAgICAgYm9vbCBtX2hhc05vbkRlZmF1bHRCaWRpTGV2ZWxSdW4geyBmYWxzZSB9Owot
ICAgIGJvb2wgbV9jb250ZW50SXNUcnVuY2F0ZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc0Zp
cnN0Rm9ybWF0dGVkTGluZSB7IGZhbHNlIH07CiAgICAgVmVjdG9yPElubGluZUxheW91dFVuaXQ+
IG1faW5saW5lQm94TG9naWNhbExlZnRTdGFjazsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQnVpbGRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9Jbmxp
bmVMaW5lQnVpbGRlci5jcHAKaW5kZXggNjk5N2JlMDI1MDA2Li42N2FkNzk4OGY2YWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lu
bGluZUxpbmVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQnVpbGRlci5jcHAKQEAgLTM0OSwxNCArMzQ5LDEy
IEBAIExpbmVCdWlsZGVyOjpMaW5lQ29udGVudCBMaW5lQnVpbGRlcjo6bGF5b3V0SW5saW5lQ29u
dGVudChjb25zdCBMaW5lSW5wdXQmIGxpbmVJCiAgICAgaW5pdGlhbGl6ZShsaW5lSW5wdXQuaW5p
dGlhbExvZ2ljYWxSZWN0LCBpbml0aWFsQ29uc3RyYWludHNGb3JMaW5lKGxpbmVJbnB1dC5pbml0
aWFsTG9naWNhbFJlY3QsIHByZXZpb3VzTGluZUVuZHNXaXRoTGluZUJyZWFrKSwgbGluZUlucHV0
Lm5lZWRzTGF5b3V0UmFuZ2UsIHByZXZpb3VzTGluZSk7CiAKICAgICBhdXRvIGNvbW1pdHRlZENv
bnRlbnQgPSBwbGFjZUlubGluZUNvbnRlbnQobGluZUlucHV0Lm5lZWRzTGF5b3V0UmFuZ2UpOwot
ICAgIGF1dG8gY29tbWl0dGVkUmFuZ2UgPSBjbG9zZShsaW5lSW5wdXQubmVlZHNMYXlvdXRSYW5n
ZSwgbGluZUlucHV0LmVsbGlwc2lzUG9saWN5LCBjb21taXR0ZWRDb250ZW50KTsKKyAgICBhdXRv
IGNvbW1pdHRlZFJhbmdlID0gY2xvc2UobGluZUlucHV0Lm5lZWRzTGF5b3V0UmFuZ2UsIGNvbW1p
dHRlZENvbnRlbnQpOwogCiAgICAgYXV0byBpc0xhc3RMaW5lID0gaXNMYXN0TGluZVdpdGhJbmxp
bmVDb250ZW50KGNvbW1pdHRlZFJhbmdlLCBsaW5lSW5wdXQubmVlZHNMYXlvdXRSYW5nZS5lbmQs
IGNvbW1pdHRlZENvbnRlbnQucGFydGlhbFRyYWlsaW5nQ29udGVudExlbmd0aCk7CiAgICAgYXV0
byBwYXJ0aWFsT3ZlcmZsb3dpbmdDb250ZW50ID0gY29tbWl0dGVkQ29udGVudC5wYXJ0aWFsVHJh
aWxpbmdDb250ZW50TGVuZ3RoID8gc3RkOjptYWtlX29wdGlvbmFsPFBhcnRpYWxDb250ZW50Pihj
b21taXR0ZWRDb250ZW50LnBhcnRpYWxUcmFpbGluZ0NvbnRlbnRMZW5ndGgsIGNvbW1pdHRlZENv
bnRlbnQub3ZlcmZsb3dMb2dpY2FsV2lkdGgpIDogc3RkOjpudWxsb3B0OwogICAgIGF1dG8gaW5s
aW5lQmFzZURpcmVjdGlvbiA9IG1fbGluZS5ydW5zKCkuaXNFbXB0eSgpID8gVGV4dERpcmVjdGlv
bjo6TFRSIDogaW5saW5lQmFzZURpcmVjdGlvbkZvckxpbmVDb250ZW50KCk7CiAgICAgYXV0byBj
b250ZW50TG9naWNhbExlZnQgPSBob3Jpem9udGFsQWxpZ25tZW50T2Zmc2V0KGlzTGFzdExpbmUp
OwotICAgIGF1dG8gY29udGVudElzVHJ1bmNhdGVkSW5CbG9ja0RpcmVjdGlvbiA9ICghaXNMYXN0
TGluZSAmJiBsaW5lSW5wdXQuZWxsaXBzaXNQb2xpY3kgPT0gTGluZUJ1aWxkZXI6OkxpbmVJbnB1
dDo6TGluZUVuZGluZ0VsbGlwc2lzUG9saWN5OjpXaGVuQ29udGVudE92ZXJmbG93c0luQmxvY2tE
aXJlY3Rpb24pIHx8IGxpbmVJbnB1dC5lbGxpcHNpc1BvbGljeSA9PSBMaW5lQnVpbGRlcjo6TGlu
ZUlucHV0OjpMaW5lRW5kaW5nRWxsaXBzaXNQb2xpY3k6OkFsd2F5czsKLSAgICBhdXRvIGxpbmVO
ZWVkc1RyYWlsaW5nRWxsaXBzaXMgPSBtX2xpbmUuaXNDb250ZW50VHJ1bmNhdGVkKCkgfHwgY29u
dGVudElzVHJ1bmNhdGVkSW5CbG9ja0RpcmVjdGlvbjsKIAogICAgIHJldHVybiB7IGNvbW1pdHRl
ZFJhbmdlCiAgICAgICAgICwgcGFydGlhbE92ZXJmbG93aW5nQ29udGVudApAQCAtMzc2LDcgKzM3
NCw2IEBAIExpbmVCdWlsZGVyOjpMaW5lQ29udGVudCBMaW5lQnVpbGRlcjo6bGF5b3V0SW5saW5l
Q29udGVudChjb25zdCBMaW5lSW5wdXQmIGxpbmVJCiAgICAgICAgICwgbV9saW5lLm5vblNwYW5u
aW5nSW5saW5lTGV2ZWxCb3hDb3VudCgpCiAgICAgICAgICwgY29tcHV0ZWRWaXN1YWxPcmRlciht
X2xpbmUpCiAgICAgICAgICwgaW5saW5lQmFzZURpcmVjdGlvbgotICAgICAgICAsIGxpbmVOZWVk
c1RyYWlsaW5nRWxsaXBzaXMKICAgICAgICAgLCBtX2xpbmUucnVucygpIH07CiB9CiAKQEAgLTM5
MCw3ICszODcsNyBAQCBMaW5lQnVpbGRlcjo6SW50cmluc2ljQ29udGVudCBMaW5lQnVpbGRlcjo6
Y29tcHV0ZWRJbnRyaW5zaWNXaWR0aChjb25zdCBJbmxpbmVJdAogICAgIGluaXRpYWxpemUoaW5p
dGlhbFJlY3QsIGxpbmVDb25zdHJhaW50cywgbmVlZHNMYXlvdXRSYW5nZSwgcHJldmlvdXNMaW5l
KTsKIAogICAgIGF1dG8gY29tbWl0dGVkQ29udGVudCA9IHBsYWNlSW5saW5lQ29udGVudChuZWVk
c0xheW91dFJhbmdlKTsKLSAgICBhdXRvIGNvbW1pdHRlZFJhbmdlID0gY2xvc2UobmVlZHNMYXlv
dXRSYW5nZSwgTGluZUlucHV0OjpMaW5lRW5kaW5nRWxsaXBzaXNQb2xpY3k6Ok5vLCBjb21taXR0
ZWRDb250ZW50KTsKKyAgICBhdXRvIGNvbW1pdHRlZFJhbmdlID0gY2xvc2UobmVlZHNMYXlvdXRS
YW5nZSwgY29tbWl0dGVkQ29udGVudCk7CiAgICAgYXV0byBsaW5lV2lkdGggPSBsaW5lQ29uc3Ry
YWludHMubG9naWNhbFJlY3QubGVmdCgpICsgbGluZUNvbnN0cmFpbnRzLm1hcmdpblN0YXJ0ICsg
bV9saW5lLmNvbnRlbnRMb2dpY2FsV2lkdGgoKTsKICAgICBhdXRvIG92ZXJmbG93ID0gc3RkOjpv
cHRpb25hbDxQYXJ0aWFsQ29udGVudD4geyB9OwogICAgIGlmIChjb21taXR0ZWRDb250ZW50LnBh
cnRpYWxUcmFpbGluZ0NvbnRlbnRMZW5ndGgpCkBAIC01MzksNyArNTM2LDcgQEAgTGluZUJ1aWxk
ZXI6OkNvbW1pdHRlZENvbnRlbnQgTGluZUJ1aWxkZXI6OnBsYWNlSW5saW5lQ29udGVudChjb25z
dCBJbmxpbmVJdGVtUmEKICAgICByZXR1cm4geyBjb21taXR0ZWRJdGVtQ291bnQsIHsgfSB9Owog
fQogCi1MaW5lQnVpbGRlcjo6SW5saW5lSXRlbVJhbmdlIExpbmVCdWlsZGVyOjpjbG9zZShjb25z
dCBJbmxpbmVJdGVtUmFuZ2UmIG5lZWRzTGF5b3V0UmFuZ2UsIExpbmVJbnB1dDo6TGluZUVuZGlu
Z0VsbGlwc2lzUG9saWN5IGVsbGlwc2lzUG9saWN5LCBjb25zdCBDb21taXR0ZWRDb250ZW50JiBj
b21taXR0ZWRDb250ZW50KQorTGluZUJ1aWxkZXI6OklubGluZUl0ZW1SYW5nZSBMaW5lQnVpbGRl
cjo6Y2xvc2UoY29uc3QgSW5saW5lSXRlbVJhbmdlJiBuZWVkc0xheW91dFJhbmdlLCBjb25zdCBD
b21taXR0ZWRDb250ZW50JiBjb21taXR0ZWRDb250ZW50KQogewogICAgIEFTU0VSVChjb21taXR0
ZWRDb250ZW50Lml0ZW1Db3VudCB8fCAhbV9wbGFjZWRGbG9hdHMuaXNFbXB0eSgpIHx8IG1fbGlu
ZUlzQ29uc3RyYWluZWRCeUZsb2F0KTsKICAgICBhdXRvJiByb290U3R5bGUgPSB0aGlzLT5yb290
U3R5bGUoKTsKQEAgLTU4OSw0MSArNTg2LDYgQEAgTGluZUJ1aWxkZXI6OklubGluZUl0ZW1SYW5n
ZSBMaW5lQnVpbGRlcjo6Y2xvc2UoY29uc3QgSW5saW5lSXRlbVJhbmdlJiBuZWVkc0xheW8KICAg
ICAgICAgbGluZUVuZHNXaXRoSHlwaGVuID0gbGFzdFRleHRDb250ZW50ICYmIGxhc3RUZXh0Q29u
dGVudC0+bmVlZHNIeXBoZW47CiAgICAgfQogICAgIG1fc3VjY2Vzc2l2ZUh5cGhlbmF0ZWRMaW5l
Q291bnQgPSBsaW5lRW5kc1dpdGhIeXBoZW4gPyBtX3N1Y2Nlc3NpdmVIeXBoZW5hdGVkTGluZUNv
dW50ICsgMSA6IDA7Ci0KLSAgICBhdXRvIGhhbmRsZUxpbmVFbmRpbmdFbGxpcHNpc1BvbGljeSA9
IFsmXSB7Ci0gICAgICAgIHN3aXRjaCAoZWxsaXBzaXNQb2xpY3kpIHsKLSAgICAgICAgY2FzZSBM
aW5lSW5wdXQ6OkxpbmVFbmRpbmdFbGxpcHNpc1BvbGljeTo6Tm86Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBMaW5lSW5wdXQ6OkxpbmVFbmRpbmdFbGxpcHNpc1BvbGljeTo6V2hl
bkNvbnRlbnRPdmVyZmxvd3NJbklubGluZURpcmVjdGlvbjoKLSAgICAgICAgICAgIGlmIChtX2xp
bmUuY29udGVudExvZ2ljYWxXaWR0aCgpID4gaG9yaXpvbnRhbEF2YWlsYWJsZVNwYWNlKSB7Ci0g
ICAgICAgICAgICAgICAgYXV0byBlbGxpcHNpc1dpZHRoID0gcm9vdFN0eWxlLmZvbnRDYXNjYWRl
KCkud2lkdGgoVGV4dFV0aWw6OmVsbGlwc2lzVGV4dFJ1bigpKTsKLSAgICAgICAgICAgICAgICBh
dXRvIGxvZ2ljYWxSaWdodEZvckNvbnRlbnRXaXRob3V0RWxsaXBzaXMgPSBzdGQ6Om1heCgwLmYs
IGhvcml6b250YWxBdmFpbGFibGVTcGFjZSAtIGVsbGlwc2lzV2lkdGgpOwotICAgICAgICAgICAg
ICAgIG1fbGluZS50cnVuY2F0ZShsb2dpY2FsUmlnaHRGb3JDb250ZW50V2l0aG91dEVsbGlwc2lz
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIExpbmVJ
bnB1dDo6TGluZUVuZGluZ0VsbGlwc2lzUG9saWN5OjpXaGVuQ29udGVudE92ZXJmbG93c0luQmxv
Y2tEaXJlY3Rpb246Ci0gICAgICAgICAgICBpZiAoaXNMYXN0TGluZSkKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIEZBTExUSFJPVUdIOwotICAgICAgICBjYXNlIExpbmVJbnB1
dDo6TGluZUVuZGluZ0VsbGlwc2lzUG9saWN5OjpBbHdheXM6IHsKLSAgICAgICAgICAgIGF1dG8g
YXZhaWxhYmxlU3BhY2VBZnRlckNvbnRlbnQgPSBob3Jpem9udGFsQXZhaWxhYmxlU3BhY2U7Ci0g
ICAgICAgICAgICBpZiAoYXV0byBjb250ZW50TG9naWNhbExlZnQgPSBob3Jpem9udGFsQWxpZ25t
ZW50T2Zmc2V0KGlzTGFzdExpbmUpKSB7Ci0gICAgICAgICAgICAgICAgLy8gQWxpZ25tZW50IG1h
eSBtb3ZlIGNvbnRlbnQgd2l0aGluIHRoZSBsaW5lIGJveCBsZWF2bmlnIGxlc3MgKG9yIHplcm8p
IHNwYWNlIGZvciBlbGxpcHNpcyAoZS5nLiB0ZXh0LWFsaWduOiByaWdodCkuCi0gICAgICAgICAg
ICAgICAgYXZhaWxhYmxlU3BhY2VBZnRlckNvbnRlbnQgLT0gY29udGVudExvZ2ljYWxMZWZ0Owot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgYXV0byBlbGxpcHNpc1dpZHRoID0gcm9vdFN0eWxl
LmZvbnRDYXNjYWRlKCkud2lkdGgoVGV4dFV0aWw6OmVsbGlwc2lzVGV4dFJ1bigpKTsKLSAgICAg
ICAgICAgIGlmIChtX2xpbmUuY29udGVudExvZ2ljYWxXaWR0aCgpICYmIG1fbGluZS5jb250ZW50
TG9naWNhbFdpZHRoKCkgKyBlbGxpcHNpc1dpZHRoID4gYXZhaWxhYmxlU3BhY2VBZnRlckNvbnRl
bnQpIHsKLSAgICAgICAgICAgICAgICBhdXRvIGxvZ2ljYWxSaWdodEZvckNvbnRlbnRXaXRob3V0
RWxsaXBzaXMgPSBzdGQ6Om1heCgwLmYsIGF2YWlsYWJsZVNwYWNlQWZ0ZXJDb250ZW50IC0gZWxs
aXBzaXNXaWR0aCk7Ci0gICAgICAgICAgICAgICAgbV9saW5lLnRydW5jYXRlKGxvZ2ljYWxSaWdo
dEZvckNvbnRlbnRXaXRob3V0RWxsaXBzaXMpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9OwotICAg
IGhhbmRsZUxpbmVFbmRpbmdFbGxpcHNpc1BvbGljeSgpOwogICAgIHJldHVybiBsaW5lUmFuZ2U7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQnVpbGRlci5oCmluZGV4IDQ4NjExZDU0
MWRmOC4uNjE2YjdmNDY4MmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQnVpbGRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVy
LmgKQEAgLTQyLDYgKzQyLDE0IEBAIHB1YmxpYzoKICAgICBMaW5lQnVpbGRlcihJbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dCYsIEJsb2NrTGF5b3V0U3RhdGUmLCBIb3Jpem9udGFsQ29uc3RyYWludHMg
cm9vdEhvcml6b250YWxDb25zdHJhaW50cywgY29uc3QgSW5saW5lSXRlbXMmLCBzdGQ6Om9wdGlv
bmFsPEludHJpbnNpY1dpZHRoTW9kZT4gPSBzdGQ6Om51bGxvcHQpOwogICAgIExpbmVCdWlsZGVy
KGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0JiwgY29uc3QgSW5saW5lSXRlbXMmLCBzdGQ6
Om9wdGlvbmFsPEludHJpbnNpY1dpZHRoTW9kZT4pOwogCisgICAgZW51bSBjbGFzcyBMaW5lRW5k
aW5nRWxsaXBzaXNQb2xpY3kgOiB1aW50OF90IHsKKyAgICAgICAgTm8sCisgICAgICAgIFdoZW5D
b250ZW50T3ZlcmZsb3dzSW5JbmxpbmVEaXJlY3Rpb24sCisgICAgICAgIFdoZW5Db250ZW50T3Zl
cmZsb3dzSW5CbG9ja0RpcmVjdGlvbiwKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJl
IHVzZWQgd2hlbiB3ZSByZWFsaXplIHRoZSBsYXN0IGxpbmUgb2YgdGhpcyBJRkMgaXMgd2hlcmUg
dGhlIGNvbnRlbnQgaXMgdHJ1bmNhdGVkIChzaWJsaW5nIElGQyBoYXMgbW9yZSBsaW5lcykuCisg
ICAgICAgIEFsd2F5cworICAgIH07CisKICAgICBzdHJ1Y3QgSW5saW5lSXRlbVJhbmdlIHsKICAg
ICAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gc3RhcnQgPT0gZW5kOyB9CiAgICAg
ICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gZW5kIC0gc3RhcnQ7IH0KQEAgLTUxLDE1
ICs1OSw2IEBAIHB1YmxpYzoKICAgICBzdHJ1Y3QgTGluZUlucHV0IHsKICAgICAgICAgSW5saW5l
SXRlbVJhbmdlIG5lZWRzTGF5b3V0UmFuZ2U7CiAgICAgICAgIElubGluZVJlY3QgaW5pdGlhbExv
Z2ljYWxSZWN0OwotCi0gICAgICAgIGVudW0gY2xhc3MgTGluZUVuZGluZ0VsbGlwc2lzUG9saWN5
IDogdWludDhfdCB7Ci0gICAgICAgICAgICBObywKLSAgICAgICAgICAgIFdoZW5Db250ZW50T3Zl
cmZsb3dzSW5JbmxpbmVEaXJlY3Rpb24sCi0gICAgICAgICAgICBXaGVuQ29udGVudE92ZXJmbG93
c0luQmxvY2tEaXJlY3Rpb24sCi0gICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUg
dXNlZCB3aGVuIHdlIHJlYWxpemUgdGhlIGxhc3QgbGluZSBvZiB0aGlzIElGQyBpcyB3aGVyZSB0
aGUgY29udGVudCBpcyB0cnVuY2F0ZWQgKHNpYmxpbmcgSUZDIGhhcyBtb3JlIGxpbmVzKS4KLSAg
ICAgICAgICAgIEFsd2F5cwotICAgICAgICB9OwotICAgICAgICBMaW5lRW5kaW5nRWxsaXBzaXNQ
b2xpY3kgZWxsaXBzaXNQb2xpY3kgeyBMaW5lRW5kaW5nRWxsaXBzaXNQb2xpY3k6Ok5vIH07CiAg
ICAgfTsKICAgICBzdHJ1Y3QgUGFydGlhbENvbnRlbnQgewogICAgICAgICBQYXJ0aWFsQ29udGVu
dChzaXplX3QsIHN0ZDo6b3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4pOwpAQCAtMTA0LDcgKzEw
Myw2IEBAIHB1YmxpYzoKICAgICAgICAgc2l6ZV90IG5vblNwYW5uaW5nSW5saW5lTGV2ZWxCb3hD
b3VudCB7IDAgfTsKICAgICAgICAgVmVjdG9yPGludDMyX3Q+IHZpc3VhbE9yZGVyTGlzdDsKICAg
ICAgICAgVGV4dERpcmVjdGlvbiBpbmxpbmVCYXNlRGlyZWN0aW9uIHsgVGV4dERpcmVjdGlvbjo6
TFRSIH07Ci0gICAgICAgIGJvb2wgbGluZU5lZWRzVHJhaWxpbmdFbGxpcHNpcyB7IGZhbHNlIH07
CiAgICAgICAgIGNvbnN0IExpbmU6OlJ1bkxpc3QmIHJ1bnM7CiAgICAgfTsKICAgICBMaW5lQ29u
dGVudCBsYXlvdXRJbmxpbmVDb250ZW50KGNvbnN0IExpbmVJbnB1dCYsIGNvbnN0IHN0ZDo6b3B0
aW9uYWw8UHJldmlvdXNMaW5lPiYpOwpAQCAtMTU2LDcgKzE1NCw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4gb3ZlcmZsb3dMb2dpY2FsV2lkdGgg
eyB9OwogICAgIH07CiAgICAgQ29tbWl0dGVkQ29udGVudCBwbGFjZUlubGluZUNvbnRlbnQoY29u
c3QgSW5saW5lSXRlbVJhbmdlJik7Ci0gICAgSW5saW5lSXRlbVJhbmdlIGNsb3NlKGNvbnN0IElu
bGluZUl0ZW1SYW5nZSYgbmVlZHNMYXlvdXRSYW5nZSwgTGluZUlucHV0OjpMaW5lRW5kaW5nRWxs
aXBzaXNQb2xpY3ksIGNvbnN0IENvbW1pdHRlZENvbnRlbnQmKTsKKyAgICBJbmxpbmVJdGVtUmFu
Z2UgY2xvc2UoY29uc3QgSW5saW5lSXRlbVJhbmdlJiBuZWVkc0xheW91dFJhbmdlLCBjb25zdCBD
b21taXR0ZWRDb250ZW50Jik7CiAKICAgICBJbmxpbmVMYXlvdXRVbml0IGlubGluZUl0ZW1XaWR0
aChjb25zdCBJbmxpbmVJdGVtJiwgSW5saW5lTGF5b3V0VW5pdCBjb250ZW50TG9naWNhbExlZnQp
IGNvbnN0OwogICAgIGJvb2wgaXNMYXN0TGluZVdpdGhJbmxpbmVDb250ZW50KGNvbnN0IElubGlu
ZUl0ZW1SYW5nZSYgbGluZVJhbmdlLCBzaXplX3QgbGFzdElubGluZUl0ZW1JbmRleCwgYm9vbCBo
YXNQYXJ0aWFsVHJhaWxpbmdDb250ZW50KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxh
eUJveC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
ZGlzcGxheS9JbmxpbmVEaXNwbGF5Qm94LmgKaW5kZXggZDg3MTA5ZDUzYmMxLi4zN2I4Y2YxZjBk
YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUJveC5o
CkBAIC0zOSw3ICszOSw3IEBAIHN0cnVjdCBCb3ggewogICAgIHN0cnVjdCBUZXh0IHsKICAgICAg
ICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKLSAgICAgICAg
VGV4dChzaXplX3QgcG9zaXRpb24sIHNpemVfdCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgb3JpZ2lu
YWxDb250ZW50LCBTdHJpbmcgYWRqdXN0ZWRDb250ZW50VG9SZW5kZXIgPSBTdHJpbmcoKSwgYm9v
bCBoYXNIeXBoZW4gPSBmYWxzZSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHBhcnRpYWxseVZpc2li
bGVDb250ZW50TGVuZ3RoID0gc3RkOjpudWxsb3B0KTsKKyAgICAgICAgVGV4dChzaXplX3QgcG9z
aXRpb24sIHNpemVfdCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxDb250ZW50LCBTdHJp
bmcgYWRqdXN0ZWRDb250ZW50VG9SZW5kZXIgPSBTdHJpbmcoKSwgYm9vbCBoYXNIeXBoZW4gPSBm
YWxzZSk7CiAKICAgICAgICAgc2l6ZV90IHN0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9zdGFydDsg
fQogICAgICAgICBzaXplX3QgZW5kKCkgY29uc3QgeyByZXR1cm4gc3RhcnQoKSArIGxlbmd0aCgp
OyB9CkBAIC01MCw2ICs1MCw4IEBAIHN0cnVjdCBCb3ggewogCiAgICAgICAgIGJvb2wgaGFzSHlw
aGVuKCkgY29uc3QgeyByZXR1cm4gbV9oYXNIeXBoZW47IH0KIAorICAgICAgICB2b2lkIHNldFBh
cnRpYWxseVZpc2libGVDb250ZW50TGVuZ3RoKHNpemVfdCB0cnVuY2F0ZWRMZW5ndGgpIHsgbV9w
YXJ0aWFsbHlWaXNpYmxlQ29udGVudExlbmd0aCA9IHRydW5jYXRlZExlbmd0aDsgfQorCiAgICAg
cHJpdmF0ZToKICAgICAgICAgZnJpZW5kIHN0cnVjdCBCb3g7CiAKQEAgLTc3LDcgKzc5LDcgQEAg
c3RydWN0IEJveCB7CiAgICAgICAgIEZpcnN0ID0gMSA8PCAwLAogICAgICAgICBMYXN0ICA9IDEg
PDwgMQogICAgIH07Ci0gICAgQm94KHNpemVfdCBsaW5lSW5kZXgsIFR5cGUsIGNvbnN0IExheW91
dDo6Qm94JiwgVUJpRGlMZXZlbCwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiBp
bmtPdmVyZmxvdywgRXhwYW5zaW9uLCBzdGQ6Om9wdGlvbmFsPFRleHQ+ID0gc3RkOjpudWxsb3B0
LCBib29sIGhhc0NvbnRlbnQgPSB0cnVlLCBib29sIGlzRnVsbHlUcnVuY2F0ZWQgPSBmYWxzZSwg
T3B0aW9uU2V0PFBvc2l0aW9uV2l0aGluSW5saW5lTGV2ZWxCb3g+ID0geyB9KTsKKyAgICBCb3go
c2l6ZV90IGxpbmVJbmRleCwgVHlwZSwgY29uc3QgTGF5b3V0OjpCb3gmLCBVQmlEaUxldmVsLCBj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmIGlua092ZXJmbG93LCBFeHBhbnNpb24s
IHN0ZDo6b3B0aW9uYWw8VGV4dD4gPSBzdGQ6Om51bGxvcHQsIGJvb2wgaGFzQ29udGVudCA9IHRy
dWUsIE9wdGlvblNldDxQb3NpdGlvbldpdGhpbklubGluZUxldmVsQm94PiA9IHsgfSk7CiAKICAg
ICBib29sIGlzVGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBUeXBlOjpUZXh0IHx8IGlz
V29yZFNlcGFyYXRvcigpOyB9CiAgICAgYm9vbCBpc1dvcmRTZXBhcmF0b3IoKSBjb25zdCB7IHJl
dHVybiBtX3R5cGUgPT0gVHlwZTo6V29yZFNlcGFyYXRvcjsgfQpAQCAtMTI0LDExICsxMjYsMTIg
QEAgc3RydWN0IEJveCB7CiAgICAgICAgIG1fdW5mbGlwcGVkVmlzdWFsUmVjdC5tb3ZlKHsgb2Zm
c2V0LCB7IH0gfSk7CiAgICAgICAgIG1faW5rT3ZlcmZsb3cubW92ZSh7IG9mZnNldCwgeyB9IH0p
OwogICAgIH0KKwogICAgIHZvaWQgYWRqdXN0SW5rT3ZlcmZsb3coY29uc3QgRmxvYXRSZWN0JiBj
aGlsZEJvcmRlckJveCkgeyByZXR1cm4gbV9pbmtPdmVyZmxvdy51bml0ZUV2ZW5JZkVtcHR5KGNo
aWxkQm9yZGVyQm94KTsgfQotICAgIHZvaWQgc2V0TGVmdChmbG9hdCBweXNpY2FsTGVmdCkKKyAg
ICB2b2lkIHNldExlZnQoZmxvYXQgcGh5c2ljYWxMZWZ0KQogICAgIHsKLSAgICAgICAgYXV0byBv
ZmZzZXQgPSBweXNpY2FsTGVmdCAtIGxlZnQoKTsKLSAgICAgICAgbV91bmZsaXBwZWRWaXN1YWxS
ZWN0LnNldFgocHlzaWNhbExlZnQpOworICAgICAgICBhdXRvIG9mZnNldCA9IHBoeXNpY2FsTGVm
dCAtIGxlZnQoKTsKKyAgICAgICAgbV91bmZsaXBwZWRWaXN1YWxSZWN0LnNldFgocGh5c2ljYWxM
ZWZ0KTsKICAgICAgICAgbV9pbmtPdmVyZmxvdy5zZXRYKG1faW5rT3ZlcmZsb3cueCgpICsgb2Zm
c2V0KTsKICAgICB9CiAgICAgdm9pZCBzZXRSaWdodChmbG9hdCBwaHlzaWNhbFJpZ2h0KQpAQCAt
MTU1LDYgKzE1OCw3IEBAIHN0cnVjdCBCb3ggewogICAgICAgICBtX2lua092ZXJmbG93ID0gaW5r
T3ZlcmZsb3c7CiAgICAgfQogICAgIHZvaWQgc2V0SGFzQ29udGVudCgpIHsgbV9oYXNDb250ZW50
ID0gdHJ1ZTsgfQorICAgIHZvaWQgc2V0SXNGdWxseVRydW5jYXRlZCgpIHsgbV9pc0Z1bGx5VHJ1
bmNhdGVkID0gdHJ1ZTsgfQogCiAgICAgc3RkOjpvcHRpb25hbDxUZXh0PiYgdGV4dCgpIHsgcmV0
dXJuIG1fdGV4dDsgfQogICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8VGV4dD4mIHRleHQoKSBjb25z
dCB7IHJldHVybiBtX3RleHQ7IH0KQEAgLTE5Miw3ICsxOTYsNyBAQCBwcml2YXRlOgogICAgIHN0
ZDo6b3B0aW9uYWw8VGV4dD4gbV90ZXh0OwogfTsKIAotaW5saW5lIEJveDo6Qm94KHNpemVfdCBs
aW5lSW5kZXgsIFR5cGUgdHlwZSwgY29uc3QgTGF5b3V0OjpCb3gmIGxheW91dEJveCwgVUJpRGlM
ZXZlbCBiaWRpTGV2ZWwsIGNvbnN0IEZsb2F0UmVjdCYgcGh5c2ljYWxSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIGlua092ZXJmbG93LCBFeHBhbnNpb24gZXhwYW5zaW9uLCBzdGQ6Om9wdGlvbmFsPFRl
eHQ+IHRleHQsIGJvb2wgaGFzQ29udGVudCwgYm9vbCBpc0Z1bGx5VHJ1bmNhdGVkLCBPcHRpb25T
ZXQ8UG9zaXRpb25XaXRoaW5JbmxpbmVMZXZlbEJveD4gcG9zaXRpb25XaXRoaW5JbmxpbmVMZXZl
bEJveCkKK2lubGluZSBCb3g6OkJveChzaXplX3QgbGluZUluZGV4LCBUeXBlIHR5cGUsIGNvbnN0
IExheW91dDo6Qm94JiBsYXlvdXRCb3gsIFVCaURpTGV2ZWwgYmlkaUxldmVsLCBjb25zdCBGbG9h
dFJlY3QmIHBoeXNpY2FsUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBpbmtPdmVyZmxvdywgRXhwYW5z
aW9uIGV4cGFuc2lvbiwgc3RkOjpvcHRpb25hbDxUZXh0PiB0ZXh0LCBib29sIGhhc0NvbnRlbnQs
IE9wdGlvblNldDxQb3NpdGlvbldpdGhpbklubGluZUxldmVsQm94PiBwb3NpdGlvbldpdGhpbklu
bGluZUxldmVsQm94KQogICAgIDogbV9saW5lSW5kZXgobGluZUluZGV4KQogICAgICwgbV90eXBl
KHR5cGUpCiAgICAgLCBtX2xheW91dEJveChsYXlvdXRCb3gpCkBAIC0yMDIsMTYgKzIwNiwxNCBA
QCBpbmxpbmUgQm94OjpCb3goc2l6ZV90IGxpbmVJbmRleCwgVHlwZSB0eXBlLCBjb25zdCBMYXlv
dXQ6OkJveCYgbGF5b3V0Qm94LCBVQmlEaQogICAgICwgbV9oYXNDb250ZW50KGhhc0NvbnRlbnQp
CiAgICAgLCBtX2lzRmlyc3RGb3JMYXlvdXRCb3gocG9zaXRpb25XaXRoaW5JbmxpbmVMZXZlbEJv
eC5jb250YWlucyhQb3NpdGlvbldpdGhpbklubGluZUxldmVsQm94OjpGaXJzdCkpCiAgICAgLCBt
X2lzTGFzdEZvckxheW91dEJveChwb3NpdGlvbldpdGhpbklubGluZUxldmVsQm94LmNvbnRhaW5z
KFBvc2l0aW9uV2l0aGluSW5saW5lTGV2ZWxCb3g6Okxhc3QpKQotICAgICwgbV9pc0Z1bGx5VHJ1
bmNhdGVkKGlzRnVsbHlUcnVuY2F0ZWQpCiAgICAgLCBtX2V4cGFuc2lvbihleHBhbnNpb24pCiAg
ICAgLCBtX3RleHQodGV4dCkKIHsKIH0KIAotaW5saW5lIEJveDo6VGV4dDo6VGV4dChzaXplX3Qg
c3RhcnQsIHNpemVfdCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxDb250ZW50LCBTdHJp
bmcgYWRqdXN0ZWRDb250ZW50VG9SZW5kZXIsIGJvb2wgaGFzSHlwaGVuLCBzdGQ6Om9wdGlvbmFs
PHNpemVfdD4gcGFydGlhbGx5VmlzaWJsZUNvbnRlbnRMZW5ndGgpCitpbmxpbmUgQm94OjpUZXh0
OjpUZXh0KHNpemVfdCBzdGFydCwgc2l6ZV90IGxlbmd0aCwgY29uc3QgU3RyaW5nJiBvcmlnaW5h
bENvbnRlbnQsIFN0cmluZyBhZGp1c3RlZENvbnRlbnRUb1JlbmRlciwgYm9vbCBoYXNIeXBoZW4p
CiAgICAgOiBtX3N0YXJ0KHN0YXJ0KQogICAgICwgbV9sZW5ndGgobGVuZ3RoKQotICAgICwgbV9w
YXJ0aWFsbHlWaXNpYmxlQ29udGVudExlbmd0aChwYXJ0aWFsbHlWaXNpYmxlQ29udGVudExlbmd0
aCkKICAgICAsIG1faGFzSHlwaGVuKGhhc0h5cGhlbikKICAgICAsIG1fb3JpZ2luYWxDb250ZW50
KG9yaWdpbmFsQ29udGVudCkKICAgICAsIG1fYWRqdXN0ZWRDb250ZW50VG9SZW5kZXIoYWRqdXN0
ZWRDb250ZW50VG9SZW5kZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlDb250ZW50QnVpbGRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9k
aXNwbGF5L0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5jcHAKaW5kZXggYWQ5OWU1N2JhNzBh
Li4yY2IxOWVjNGIxY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9k
aXNwbGF5L0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5jcHAKQEAgLTIyMiw5ICsyMjIsNiBA
QCB2b2lkIElubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6YXBwZW5kVGV4dERpc3BsYXlCb3go
Y29uc3QgTGluZTo6UnVuJiBsaW5lUnVuLAogICAgIGF1dG8gYWRqdXN0ZWRDb250ZW50VG9SZW5k
ZXIgPSBbJl0gewogICAgICAgICByZXR1cm4gdGV4dC0+bmVlZHNIeXBoZW4gPyBtYWtlU3RyaW5n
KFN0cmluZ1ZpZXcoY29udGVudCkuc3Vic3RyaW5nKHRleHQtPnN0YXJ0LCB0ZXh0LT5sZW5ndGgp
LCBzdHlsZS5oeXBoZW5TdHJpbmcoKSkgOiBTdHJpbmcoKTsKICAgICB9OwotICAgIGF1dG8gaXNG
dWxseVRydW5jYXRlZCA9IGxpbmVSdW4uaXNUcnVuY2F0ZWQoKSAmJiAhdGV4dC0+cGFydGlhbGx5
VmlzaWJsZUNvbnRlbnQ7Ci0gICAgYXV0byBwYXJ0aWFsbHlWaXNpYmxlQ29udGVudExlbmd0aCA9
ICFpc0Z1bGx5VHJ1bmNhdGVkICYmIHRleHQtPnBhcnRpYWxseVZpc2libGVDb250ZW50ID8gc3Rk
OjptYWtlX29wdGlvbmFsKHRleHQtPnBhcnRpYWxseVZpc2libGVDb250ZW50LT5sZW5ndGgpOiBz
dGQ6Om51bGxvcHQ7Ci0KICAgICBib3hlcy5hcHBlbmQoeyBtX2xpbmVJbmRleAogICAgICAgICAs
IGxpbmVSdW4uaXNXb3JkU2VwYXJhdG9yKCkgPyBJbmxpbmVEaXNwbGF5OjpCb3g6OlR5cGU6Oldv
cmRTZXBhcmF0b3IgOiBJbmxpbmVEaXNwbGF5OjpCb3g6OlR5cGU6OlRleHQKICAgICAgICAgLCBp
bmxpbmVUZXh0Qm94CkBAIC0yMzIsOSArMjI5LDggQEAgdm9pZCBJbmxpbmVEaXNwbGF5Q29udGVu
dEJ1aWxkZXI6OmFwcGVuZFRleHREaXNwbGF5Qm94KGNvbnN0IExpbmU6OlJ1biYgbGluZVJ1biwK
ICAgICAgICAgLCB0ZXh0UnVuUmVjdAogICAgICAgICAsIGlua092ZXJmbG93KCkKICAgICAgICAg
LCBsaW5lUnVuLmV4cGFuc2lvbigpCi0gICAgICAgICwgSW5saW5lRGlzcGxheTo6Qm94OjpUZXh0
IHsgdGV4dC0+c3RhcnQsIHRleHQtPmxlbmd0aCwgY29udGVudCwgYWRqdXN0ZWRDb250ZW50VG9S
ZW5kZXIoKSwgdGV4dC0+bmVlZHNIeXBoZW4sIHBhcnRpYWxseVZpc2libGVDb250ZW50TGVuZ3Ro
IH0KKyAgICAgICAgLCBJbmxpbmVEaXNwbGF5OjpCb3g6OlRleHQgeyB0ZXh0LT5zdGFydCwgdGV4
dC0+bGVuZ3RoLCBjb250ZW50LCBhZGp1c3RlZENvbnRlbnRUb1JlbmRlcigpLCB0ZXh0LT5uZWVk
c0h5cGhlbiB9CiAgICAgICAgICwgdHJ1ZQotICAgICAgICAsIGlzRnVsbHlUcnVuY2F0ZWQKICAg
ICAgICAgLCB7IH0KICAgICB9KTsKIH0KQEAgLTI5OSw3ICsyOTUsNiBAQCB2b2lkIElubGluZURp
c3BsYXlDb250ZW50QnVpbGRlcjo6YXBwZW5kQXRvbWljSW5saW5lTGV2ZWxEaXNwbGF5Qm94KGNv
bnN0IExpbmU6OgogICAgICAgICAsIGxpbmVSdW4uZXhwYW5zaW9uKCkKICAgICAgICAgLCB7IH0K
ICAgICAgICAgLCB0cnVlCi0gICAgICAgICwgbGluZVJ1bi5pc1RydW5jYXRlZCgpCiAgICAgfSk7
CiAgICAgLy8gTm90ZSB0aGF0IGlubGluZSBib3hlcyBhcmUgcmVsYXRpdmUgdG8gdGhlIGxpbmUg
YW5kIHRoZWlyIHRvcCBwb3NpdGlvbiBjYW4gYmUgbmVnYXRpdmUuCiAgICAgLy8gQXRvbWljIGlu
bGluZSBib3hlcyBhcmUgYWxsIHNldC4gVGhlaXIgbWFyZ2luL2JvcmRlci9jb250ZW50IGJveCBn
ZW9tZXRyaWVzIGFyZSBhbHJlYWR5IGNvbXB1dGVkLiBXZSBqdXN0IGhhdmUgdG8gcG9zaXRpb24g
dGhlbSBoZXJlLgpAQCAtMzY4LDcgKzM2Myw2IEBAIHZvaWQgSW5saW5lRGlzcGxheUNvbnRlbnRC
dWlsZGVyOjphcHBlbmRJbmxpbmVCb3hEaXNwbGF5Qm94KGNvbnN0IExpbmU6OlJ1biYgbGluCiAg
ICAgICAgICwgeyB9CiAgICAgICAgICwgeyB9CiAgICAgICAgICwgaW5saW5lQm94Lmhhc0NvbnRl
bnQoKQotICAgICAgICAsIGxpbmVSdW4uaXNUcnVuY2F0ZWQoKQogICAgICAgICAsIGlzRmlyc3RM
YXN0Qm94KGlubGluZUJveCkKICAgICB9KTsKIH0KQEAgLTQwNSw3ICszOTksNiBAQCB2b2lkIElu
bGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6YXBwZW5kU3Bhbm5pbmdJbmxpbmVCb3hEaXNwbGF5
Qm94KGNvbnN0IExpbmU6OgogICAgICAgICAsIHsgfQogICAgICAgICAsIHsgfQogICAgICAgICAs
IGlubGluZUJveC5oYXNDb250ZW50KCkKLSAgICAgICAgLCBsaW5lUnVuLmlzVHJ1bmNhdGVkKCkK
ICAgICAgICAgLCBpc0ZpcnN0TGFzdEJveChpbmxpbmVCb3gpCiAgICAgfSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNw
bGF5L0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1
aWxkZXIuaAppbmRleCBjZmUxMzQyYTUxZjUuLmM3Mzk3M2NiOWRmMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9Jbmxp
bmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlDb250ZW50QnVpbGRl
ci5oCkBAIC01NCw2ICs1NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwcm9jZXNzRmxvYXRCb3hl
cyhjb25zdCBMaW5lQnVpbGRlcjo6TGluZUNvbnRlbnQmKTsKICAgICB2b2lkIGNvbGxlY3RJbmtP
dmVyZmxvd0ZvcklubGluZUJveGVzKERpc3BsYXlCb3hlcyYpOwogICAgIHZvaWQgY29sbGVjdElu
a092ZXJmbG93Rm9yVGV4dERlY29yYXRpb25zKERpc3BsYXlCb3hlcyYsIGNvbnN0IElubGluZURp
c3BsYXk6OkxpbmUmKTsKKyAgICB2b2lkIHRydW5jYXRlRm9yRWxsaXBzaXNQb2xpY3koTGluZUJ1
aWxkZXI6OkxpbmVFbmRpbmdFbGxpcHNpc1BvbGljeSwgY29uc3QgTGluZUJ1aWxkZXI6OkxpbmVD
b250ZW50JiwgY29uc3QgSW5saW5lRGlzcGxheTo6TGluZSYsIERpc3BsYXlCb3hlcyYpOwogCiAg
ICAgdm9pZCBhcHBlbmRUZXh0RGlzcGxheUJveChjb25zdCBMaW5lOjpSdW4mLCBjb25zdCBJbmxp
bmVSZWN0JiwgRGlzcGxheUJveGVzJik7CiAgICAgdm9pZCBhcHBlbmRTb2Z0TGluZUJyZWFrRGlz
cGxheUJveChjb25zdCBMaW5lOjpSdW4mLCBjb25zdCBJbmxpbmVSZWN0JiwgRGlzcGxheUJveGVz
Jik7CkBAIC03Nyw2ICs3OCw3IEBAIHByaXZhdGU6CiAgICAgSW5saW5lTGF5b3V0VW5pdCBvdXRz
aWRlTGlzdE1hcmtlclZpc3VhbFBvc2l0aW9uKGNvbnN0IEVsZW1lbnRCb3gmLCBjb25zdCBJbmxp
bmVEaXNwbGF5OjpMaW5lJikgY29uc3Q7CiAKICAgICBjb25zdCBFbGVtZW50Qm94JiByb290KCkg
Y29uc3QgeyByZXR1cm4gZm9ybWF0dGluZ0NvbnRleHQoKS5yb290KCk7IH0KKyAgICBjb25zdCBS
ZW5kZXJTdHlsZSYgcm9vdFN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9saW5lSW5kZXggPyByb290
KCkuc3R5bGUoKSA6IHJvb3QoKS5maXJzdExpbmVTdHlsZSgpOyB9CiAgICAgY29uc3QgSW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQmIGZvcm1hdHRpbmdDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9m
b3JtYXR0aW5nQ29udGV4dDsgfQogICAgIGNvbnN0IElubGluZUZvcm1hdHRpbmdHZW9tZXRyeSYg
Zm9ybWF0dGluZ0dlb21ldHJ5KCkgY29uc3QgeyByZXR1cm4gZm9ybWF0dGluZ0NvbnRleHQoKS5m
b3JtYXR0aW5nR2VvbWV0cnkoKTsgfQogICAgIElubGluZUZvcm1hdHRpbmdTdGF0ZSYgZm9ybWF0
dGluZ1N0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9mb3JtYXR0aW5nU3RhdGU7IH0gCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNw
bGF5L0lubGluZURpc3BsYXlMaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlMaW5lLmgKaW5kZXggNmI2YTRl
ODgyMGFiLi40MmU0ODVjNjg4YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUxpbmUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5
L0lubGluZURpc3BsYXlMaW5lLmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgICAgICBm
bG9hdCB0b3AgeyAwIH07CiAgICAgICAgIGZsb2F0IGJvdHRvbSB7IDAgfTsKICAgICB9OwotICAg
IExpbmUoY29uc3QgRmxvYXRSZWN0JiBsaW5lQm94TG9naWNhbFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgbGluZUJveFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc2Nyb2xsYWJsZU92ZXJmbG93LCBFbmNs
b3NpbmdUb3BBbmRCb3R0b20sIGZsb2F0IGFsaWdtZW50QmFzZWxpbmUsIEZvbnRCYXNlbGluZSBi
YXNlbGluZVR5cGUsIGZsb2F0IGNvbnRlbnRMb2dpY2FsTGVmdCwgZmxvYXQgY29udGVudExvZ2lj
YWxMZWZ0SWdub3JpbmdJbmxpbmVEaXJlY3Rpb24sIGZsb2F0IGNvbnRlbnRMb2dpY2FsV2lkdGgs
IGJvb2wgaXNIb3Jpem9udGFsLCBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gZWxsaXBzaXNWaXN1
YWxSZWN0KTsKKyAgICBMaW5lKGNvbnN0IEZsb2F0UmVjdCYgbGluZUJveExvZ2ljYWxSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIGxpbmVCb3hSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNjcm9sbGFibGVP
dmVyZmxvdywgRW5jbG9zaW5nVG9wQW5kQm90dG9tLCBmbG9hdCBhbGlnbWVudEJhc2VsaW5lLCBG
b250QmFzZWxpbmUgYmFzZWxpbmVUeXBlLCBmbG9hdCBjb250ZW50TG9naWNhbExlZnQsIGZsb2F0
IGNvbnRlbnRMb2dpY2FsTGVmdElnbm9yaW5nSW5saW5lRGlyZWN0aW9uLCBmbG9hdCBjb250ZW50
TG9naWNhbFdpZHRoLCBib29sIGlzSG9yaXpvbnRhbCk7CiAKICAgICBmbG9hdCBsZWZ0KCkgY29u
c3QgeyByZXR1cm4gbV9saW5lQm94UmVjdC54KCk7IH0KICAgICBmbG9hdCByaWdodCgpIGNvbnN0
IHsgcmV0dXJuIG1fbGluZUJveFJlY3QubWF4WCgpOyB9CkBAIC02Nyw2ICs2Nyw3IEBAIHB1Ymxp
YzoKICAgICBmbG9hdCBjb250ZW50TG9naWNhbFdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9jb250
ZW50TG9naWNhbFdpZHRoOyB9CiAKICAgICB2b2lkIG1vdmVWZXJ0aWNhbGx5KGZsb2F0IG9mZnNl
dCkgeyBtX2xpbmVCb3hSZWN0Lm1vdmUoeyB7IH0sIG9mZnNldCB9KTsgfQorICAgIHZvaWQgc2V0
RWxsaXBzaXNWaXN1YWxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgZWxsaXBzaXNWaXN1YWxSZWN0KSB7
IG1fZWxsaXBzaXNWaXN1YWxSZWN0ID0gZWxsaXBzaXNWaXN1YWxSZWN0OyB9CiAKIHByaXZhdGU6
CiAgICAgLy8gVGhpcyBpcyBsaW5lIGJveCBnZW9tZXRyeSAoc2VlIGh0dHBzOi8vd3d3LnczLm9y
Zy9UUi9jc3MtaW5saW5lLTMvI2xpbmUtYm94KS4KQEAgLTg4LDcgKzg5LDcgQEAgcHJpdmF0ZToK
ICAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gbV9lbGxpcHNpc1Zpc3VhbFJlY3QgeyB9Owog
fTsKIAotaW5saW5lIExpbmU6OkxpbmUoY29uc3QgRmxvYXRSZWN0JiBsaW5lQm94TG9naWNhbFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgbGluZUJveFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc2Nyb2xs
YWJsZU92ZXJmbG93LCBFbmNsb3NpbmdUb3BBbmRCb3R0b20gZW5jbG9zaW5nTG9naWNhbFRvcEFu
ZEJvdHRvbSwgZmxvYXQgYWxpZ21lbnRCYXNlbGluZSwgRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlw
ZSwgZmxvYXQgY29udGVudExvZ2ljYWxMZWZ0LCBmbG9hdCBjb250ZW50TG9naWNhbExlZnRJZ25v
cmluZ0lubGluZURpcmVjdGlvbiwgZmxvYXQgY29udGVudExvZ2ljYWxXaWR0aCwgYm9vbCBpc0hv
cml6b250YWwsIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBlbGxpcHNpc1Zpc3VhbFJlY3QpCitp
bmxpbmUgTGluZTo6TGluZShjb25zdCBGbG9hdFJlY3QmIGxpbmVCb3hMb2dpY2FsUmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBsaW5lQm94UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzY3JvbGxhYmxlT3Zl
cmZsb3csIEVuY2xvc2luZ1RvcEFuZEJvdHRvbSBlbmNsb3NpbmdMb2dpY2FsVG9wQW5kQm90dG9t
LCBmbG9hdCBhbGlnbWVudEJhc2VsaW5lLCBGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlLCBmbG9h
dCBjb250ZW50TG9naWNhbExlZnQsIGZsb2F0IGNvbnRlbnRMb2dpY2FsTGVmdElnbm9yaW5nSW5s
aW5lRGlyZWN0aW9uLCBmbG9hdCBjb250ZW50TG9naWNhbFdpZHRoLCBib29sIGlzSG9yaXpvbnRh
bCkKICAgICA6IG1fbGluZUJveFJlY3QobGluZUJveFJlY3QpCiAgICAgLCBtX2xpbmVCb3hMb2dp
Y2FsUmVjdChsaW5lQm94TG9naWNhbFJlY3QpCiAgICAgLCBtX3Njcm9sbGFibGVPdmVyZmxvdyhz
Y3JvbGxhYmxlT3ZlcmZsb3cpCkBAIC05OSw3ICsxMDAsNiBAQCBpbmxpbmUgTGluZTo6TGluZShj
b25zdCBGbG9hdFJlY3QmIGxpbmVCb3hMb2dpY2FsUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBsaW5l
Qm94UgogICAgICwgbV9jb250ZW50TG9naWNhbFdpZHRoKGNvbnRlbnRMb2dpY2FsV2lkdGgpCiAg
ICAgLCBtX2Jhc2VsaW5lVHlwZShiYXNlbGluZVR5cGUpCiAgICAgLCBtX2lzSG9yaXpvbnRhbChp
c0hvcml6b250YWwpCi0gICAgLCBtX2VsbGlwc2lzVmlzdWFsUmVjdChlbGxpcHNpc1Zpc3VhbFJl
Y3QpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5s
aW5lRGlzcGxheUxpbmVCdWlsZGVyLmNwcAppbmRleCAzYmYxMjZkNWFmMDEuLmZlZTcyYTA1MmQ5
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlz
cGxheUxpbmVCdWlsZGVyLmNwcApAQCAtMzMsNiArMzMsMjIgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIG5hbWVzcGFjZSBMYXlvdXQgewogCitzdGF0aWMgSW5saW5lUmVjdCBmbGlwTG9naWNhbExp
bmVSZWN0VG9WaXN1YWxGb3JXcml0aW5nTW9kZShjb25zdCBJbmxpbmVSZWN0JiBsaW5lTG9naWNh
bFJlY3QsIFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKQoreworICAgIHN3aXRjaCAod3JpdGluZ01v
ZGUpIHsKKyAgICBjYXNlIFdyaXRpbmdNb2RlOjpUb3BUb0JvdHRvbToKKyAgICAgICAgcmV0dXJu
IGxpbmVMb2dpY2FsUmVjdDsKKyAgICBjYXNlIFdyaXRpbmdNb2RlOjpMZWZ0VG9SaWdodDoKKyAg
ICBjYXNlIFdyaXRpbmdNb2RlOjpSaWdodFRvTGVmdDoKKyAgICAgICAgLy8gU2VlIElubGluZUZv
cm1hdHRpbmdHZW9tZXRyeSBmb3IgbW9yZSBpbmZvLgorICAgICAgICByZXR1cm4geyBsaW5lTG9n
aWNhbFJlY3QubGVmdCgpLCBsaW5lTG9naWNhbFJlY3QudG9wKCksIGxpbmVMb2dpY2FsUmVjdC5o
ZWlnaHQoKSwgbGluZUxvZ2ljYWxSZWN0LndpZHRoKCkgfTsKKyAgICBkZWZhdWx0OgorICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVy
biBsaW5lTG9naWNhbFJlY3Q7Cit9CisKIElubGluZURpc3BsYXlMaW5lQnVpbGRlcjo6SW5saW5l
RGlzcGxheUxpbmVCdWlsZGVyKGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0JiBpbmxpbmVG
b3JtYXR0aW5nQ29udGV4dCkKICAgICA6IG1faW5saW5lRm9ybWF0dGluZ0NvbnRleHQoaW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQpCiB7CkBAIC0xMzAsNTIgKzE0NiwxNDcgQEAgSW5saW5lRGlzcGxh
eTo6TGluZSBJbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXI6OmJ1aWxkKGNvbnN0IExpbmVCdWlsZGVy
OjpMaW5lQ29udGUKICAgICAgICAgLCBjb250ZW50VmlzdWFsT2Zmc2V0SW5JbmxpbmVEaXJlY3Rp
b24KICAgICAgICAgLCByb290SW5saW5lQm94LmxvZ2ljYWxXaWR0aCgpCiAgICAgICAgICwgbGlu
ZUJveC5pc0hvcml6b250YWwoKQotICAgICAgICAsIHRyYWlsaW5nRWxsaXBzaXNSZWN0KGxpbmVD
b250ZW50LCBsaW5lQm94LCBsaW5lQm94VmlzdWFsUmVjdEluSW5saW5lRGlyZWN0aW9uKQogICAg
IH07CiB9CiAKLS8vIEZJWE1FOiBmb3IgYmlkaSBjb250ZW50LCB3ZSBtYXkgbmVlZCB0byBydW4g
dGhpcyBjb2RlIGFmdGVyIHdlIGZpbmlzaGVkIGNvbnN0cnVjdGluZyB0aGUgZGlzcGxheSBib3hl
cwotLy8gYW5kIGFsc28gcnVuIHRydW5jYXRpb24gb24gdGhlICh2aXN1YWwpZGlzcGxheSBib3gg
bGlzdCBhbmQgbm90IG9uIHRoZSAobG9naWNhbClsaW5lIHJ1bnMuCi1zdGQ6Om9wdGlvbmFsPEZs
b2F0UmVjdD4gSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyOjp0cmFpbGluZ0VsbGlwc2lzUmVjdChj
b25zdCBMaW5lQnVpbGRlcjo6TGluZUNvbnRlbnQmIGxpbmVDb250ZW50LCBjb25zdCBMaW5lQm94
JiBsaW5lQm94LCBjb25zdCBGbG9hdFJlY3QmIGxpbmVCb3hWaXN1YWxSZWN0KSBjb25zdAorc3Rh
dGljIGZsb2F0IHRydW5jYXRlT3ZlcmZsb3dpbmdEaXNwbGF5Qm94ZXMoY29uc3QgSW5saW5lRGlz
cGxheTo6TGluZSYgZGlzcGxheUxpbmUsIERpc3BsYXlCb3hlcyYgYm94ZXMsIGZsb2F0IGVsbGlw
c2lzV2lkdGgsIGNvbnN0IFJlbmRlclN0eWxlJiByb290U3R5bGUpCiB7Ci0gICAgaWYgKCFsaW5l
Q29udGVudC5saW5lTmVlZHNUcmFpbGluZ0VsbGlwc2lzKQotICAgICAgICByZXR1cm4geyB9Owor
ICAgIC8vIFdlIGdvdHRhIHRydW5jYXRlIHNvbWUgcnVucy4KKyAgICBBU1NFUlQoZGlzcGxheUxp
bmUuY29udGVudExvZ2ljYWxMZWZ0KCkgKyBkaXNwbGF5TGluZS5jb250ZW50TG9naWNhbFdpZHRo
KCkgKyBlbGxpcHNpc1dpZHRoID4gZGlzcGxheUxpbmUubGluZUJveExvZ2ljYWxSZWN0KCkubWF4
WCgpKTsKKyAgICBhdXRvIGlzTGVmdFRvUmlnaHREaXJlY3Rpb24gPSByb290U3R5bGUuaXNMZWZ0
VG9SaWdodERpcmVjdGlvbigpOworICAgIGF1dG8gaXNIb3Jpem9udGFsID0gcm9vdFN0eWxlLmlz
SG9yaXpvbnRhbFdyaXRpbmdNb2RlKCk7CisgICAgYXV0byBsZWZ0ID0gWyZdIChhdXRvJiBkaXNw
bGF5Qm94KSB7CisgICAgICAgIHJldHVybiBpc0hvcml6b250YWwgPyBkaXNwbGF5Qm94LmxlZnQo
KSA6IGRpc3BsYXlCb3gudG9wKCk7CisgICAgfTsKKyAgICBhdXRvIHJpZ2h0ID0gWyZdIChhdXRv
JiBkaXNwbGF5Qm94KSB7CisgICAgICAgIHJldHVybiBpc0hvcml6b250YWwgPyBkaXNwbGF5Qm94
LnJpZ2h0KCkgOiBkaXNwbGF5Qm94LmJvdHRvbSgpOworICAgIH07CisgICAgYXV0byB3aWR0aCA9
IFsmXSAoYXV0byYgZGlzcGxheUJveCkgeworICAgICAgICByZXR1cm4gaXNIb3Jpem9udGFsID8g
ZGlzcGxheUJveC53aWR0aCgpIDogZGlzcGxheUJveC5oZWlnaHQoKTsKKyAgICB9OworICAgIGF1
dG8gdHJ1bmNhdGUgPSBbJl0gKGF1dG8mIGRpc3BsYXlCb3gsIGF1dG8gdmlzaWJsZVdpZHRoLCBh
dXRvIGNhbkZ1bGx5VHJ1bmNhdGUpIHsKKyAgICAgICAgaWYgKGRpc3BsYXlCb3guaXNUZXh0KCkp
IHsKKyAgICAgICAgICAgIGlmICghdmlzaWJsZVdpZHRoICYmIGNhbkZ1bGx5VHJ1bmNhdGUpIHsK
KyAgICAgICAgICAgICAgICBkaXNwbGF5Qm94LnNldElzRnVsbHlUcnVuY2F0ZWQoKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gaXNMZWZ0VG9SaWdodERpcmVjdGlvbiA/IGxlZnQoZGlzcGxheUJv
eCkgOiByaWdodChkaXNwbGF5Qm94KTsKKyAgICAgICAgICAgIH0KIAotICAgIGF1dG8gZWxsaXBz
aXNTdGFydCA9IDAuZjsKLSAgICBmb3IgKGF1dG8mIGxpbmVSdW4gOiBsaW5lQ29udGVudC5ydW5z
KSB7Ci0gICAgICAgIGlmIChsaW5lUnVuLmlzSW5saW5lQm94KCkpCi0gICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgaWYgKGxpbmVSdW4uaXNUcnVuY2F0ZWQoKSkgewotICAgICAgICAgICAg
aWYgKGxpbmVSdW4uaXNUZXh0KCkgJiYgbGluZVJ1bi50ZXh0Q29udGVudCgpLT5wYXJ0aWFsbHlW
aXNpYmxlQ29udGVudCkKLSAgICAgICAgICAgICAgICBlbGxpcHNpc1N0YXJ0ID0gc3RkOjptYXgo
ZWxsaXBzaXNTdGFydCwgbGluZVJ1bi5sb2dpY2FsTGVmdCgpICsgbGluZVJ1bi50ZXh0Q29udGVu
dCgpLT5wYXJ0aWFsbHlWaXNpYmxlQ29udGVudC0+d2lkdGgpOwotICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBhdXRvJiBpbmxpbmVUZXh0Qm94ID0gZG93bmNhc3Q8SW5saW5lVGV4dEJv
eD4oZGlzcGxheUJveC5sYXlvdXRCb3goKSk7CisgICAgICAgICAgICBhdXRvJiB0ZXh0Q29udGVu
dCA9IGRpc3BsYXlCb3gudGV4dCgpOworICAgICAgICAgICAgYXV0byBsZWZ0U2lkZSA9IFRleHRV
dGlsOjpicmVha1dvcmQoaW5saW5lVGV4dEJveCwgdGV4dENvbnRlbnQtPnN0YXJ0KCksIHRleHRD
b250ZW50LT5sZW5ndGgoKSwgd2lkdGgoZGlzcGxheUJveCksIHZpc2libGVXaWR0aCwgeyB9LCBk
aXNwbGF5Qm94LnN0eWxlKCkuZm9udENhc2NhZGUoKSk7CisgICAgICAgICAgICBpZiAobGVmdFNp
ZGUubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgdGV4dENvbnRlbnQtPnNldFBhcnRpYWxseVZp
c2libGVDb250ZW50TGVuZ3RoKGxlZnRTaWRlLmxlbmd0aCk7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGlzTGVmdFRvUmlnaHREaXJlY3Rpb24gPyBsZWZ0KGRpc3BsYXlCb3gpICsgbGVmdFNpZGUu
bG9naWNhbFdpZHRoIDogcmlnaHQoZGlzcGxheUJveCkgLSBsZWZ0U2lkZS5sb2dpY2FsV2lkdGg7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoY2FuRnVsbHlUcnVuY2F0ZSkgeworICAg
ICAgICAgICAgICAgIGRpc3BsYXlCb3guc2V0SXNGdWxseVRydW5jYXRlZCgpOworICAgICAgICAg
ICAgICAgIHJldHVybiBpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uID8gbGVmdChkaXNwbGF5Qm94KSA6
IHJpZ2h0KGRpc3BsYXlCb3gpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYXV0byBmaXJz
dENoYXJhY3Rlckxlbmd0aCA9IFRleHRVdGlsOjpmaXJzdFVzZXJQZXJjZWl2ZWRDaGFyYWN0ZXJM
ZW5ndGgoaW5saW5lVGV4dEJveCwgdGV4dENvbnRlbnQtPnN0YXJ0KCksIHRleHRDb250ZW50LT5s
ZW5ndGgoKSk7CisgICAgICAgICAgICBhdXRvIGZpcnN0Q2hhcmFjdGVyV2lkdGggPSBUZXh0VXRp
bDo6d2lkdGgoaW5saW5lVGV4dEJveCwgZGlzcGxheUJveC5zdHlsZSgpLmZvbnRDYXNjYWRlKCks
IHRleHRDb250ZW50LT5zdGFydCgpLCB0ZXh0Q29udGVudC0+c3RhcnQoKSArIGZpcnN0Q2hhcmFj
dGVyTGVuZ3RoLCB7IH0sIFRleHRVdGlsOjpVc2VUcmFpbGluZ1doaXRlc3BhY2VNZWFzdXJpbmdP
cHRpbWl6YXRpb246Ok5vKTsKKyAgICAgICAgICAgIHRleHRDb250ZW50LT5zZXRQYXJ0aWFsbHlW
aXNpYmxlQ29udGVudExlbmd0aChmaXJzdENoYXJhY3Rlckxlbmd0aCk7CisgICAgICAgICAgICBy
ZXR1cm4gaXNMZWZ0VG9SaWdodERpcmVjdGlvbiA/IGxlZnQoZGlzcGxheUJveCkgKyBmaXJzdENo
YXJhY3RlcldpZHRoIDogcmlnaHQoZGlzcGxheUJveCkgLSBmaXJzdENoYXJhY3RlcldpZHRoOwog
ICAgICAgICB9Ci0gICAgICAgIGVsbGlwc2lzU3RhcnQgPSBzdGQ6Om1heChlbGxpcHNpc1N0YXJ0
LCBsaW5lUnVuLmxvZ2ljYWxSaWdodCgpKTsKKyAgICAgICAgaWYgKGNhbkZ1bGx5VHJ1bmNhdGUp
IHsKKyAgICAgICAgICAgIC8vIEF0b21pYyBpbmxpbmUgbGV2ZWwgYm94ZXMgYXJlIG5ldmVyIHBh
cnRpYWxseSB0cnVuY2F0ZWQuCisgICAgICAgICAgICBkaXNwbGF5Qm94LnNldElzRnVsbHlUcnVu
Y2F0ZWQoKTsKKyAgICAgICAgICAgIHJldHVybiBpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uID8gbGVm
dChkaXNwbGF5Qm94KSA6IHJpZ2h0KGRpc3BsYXlCb3gpOworICAgICAgICB9CisgICAgICAgIHJl
dHVybiBpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uID8gcmlnaHQoZGlzcGxheUJveCkgOiBsZWZ0KGRp
c3BsYXlCb3gpOworICAgIH07CisKKyAgICAvLyBUaGUgbG9naWNhbGx5IGZpcnN0IGNoYXJhY3Rl
ciBvciBhdG9taWMgaW5saW5lLWxldmVsIGVsZW1lbnQgb24gYSBsaW5lIG11c3QgYmUgY2xpcHBl
ZCByYXRoZXIgdGhhbiBlbGxpcHNlZC4KKyAgICBhdXRvIGlzRmlyc3RDb250ZW50UnVuID0gdHJ1
ZTsKKyAgICBpZiAoaXNMZWZ0VG9SaWdodERpcmVjdGlvbikgeworICAgICAgICBhdXRvIHZpc3Vh
bFJpZ2h0Rm9yQ29udGVudEVuZCA9IHN0ZDo6bWF4KDAuZiwgcmlnaHQoZGlzcGxheUxpbmUpIC0g
ZWxsaXBzaXNXaWR0aCk7CisgICAgICAgIGF1dG8gdHJ1bmNhdGVSaWdodCA9IHN0ZDo6b3B0aW9u
YWw8ZmxvYXQ+IHsgfTsKKyAgICAgICAgZm9yIChhdXRvJiBkaXNwbGF5Qm94IDogYm94ZXMpIHsK
KyAgICAgICAgICAgIGlmIChkaXNwbGF5Qm94LmlzSW5saW5lQm94KCkpCisgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICBpZiAocmlnaHQoZGlzcGxheUJveCkgPiB2aXN1YWxS
aWdodEZvckNvbnRlbnRFbmQpIHsKKyAgICAgICAgICAgICAgICBhdXRvIHRydW5jYXRlUG9zaXRp
b24gPSB0cnVuY2F0ZShkaXNwbGF5Qm94LCBzdGQ6Om1heCgwLmYsIHZpc3VhbFJpZ2h0Rm9yQ29u
dGVudEVuZCAtIGxlZnQoZGlzcGxheUJveCkpLCAhaXNGaXJzdENvbnRlbnRSdW4pOworICAgICAg
ICAgICAgICAgIHRydW5jYXRlUmlnaHQgPSB0cnVuY2F0ZVJpZ2h0LnZhbHVlX29yKHRydW5jYXRl
UG9zaXRpb24pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaXNGaXJzdENvbnRlbnRSdW4g
PSBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQodHJ1bmNhdGVSaWdodC5oYXNfdmFs
dWUoKSk7CisgICAgICAgIHJldHVybiB0cnVuY2F0ZVJpZ2h0LnZhbHVlX29yKDAuZik7CiAgICAg
fQotICAgIGF1dG8gZWxsaXBzaXNXaWR0aCA9ICFsaW5lQm94LmxpbmVJbmRleCgpID8gcm9vdCgp
LmZpcnN0TGluZVN0eWxlKCkuZm9udENhc2NhZGUoKS53aWR0aChUZXh0VXRpbDo6ZWxsaXBzaXNU
ZXh0UnVuKCkpIDogcm9vdCgpLnN0eWxlKCkuZm9udENhc2NhZGUoKS53aWR0aChUZXh0VXRpbDo6
ZWxsaXBzaXNUZXh0UnVuKCkpOwotICAgIGF1dG8gcm9vdElubGluZUJveFJlY3QgPSBsaW5lQm94
LmxvZ2ljYWxSZWN0Rm9yUm9vdElubGluZUJveCgpOwotICAgIGF1dG8gZWxsaXBzaXNSZWN0ID0g
RmxvYXRSZWN0IHsgbGluZUJveFZpc3VhbFJlY3QueCgpICsgcm9vdElubGluZUJveFJlY3QubGVm
dCgpICsgZWxsaXBzaXNTdGFydCwgbGluZUJveFZpc3VhbFJlY3QueSgpICsgcm9vdElubGluZUJv
eFJlY3QudG9wKCksIGVsbGlwc2lzV2lkdGgsIHJvb3RJbmxpbmVCb3hSZWN0LmhlaWdodCgpIH07
CiAKLSAgICBpZiAocm9vdCgpLnN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKQotICAg
ICAgICByZXR1cm4gZWxsaXBzaXNSZWN0OwotICAgIGVsbGlwc2lzUmVjdC5zZXRYKGxpbmVCb3hW
aXN1YWxSZWN0Lm1heFgoKSAtIChlbGxpcHNpc1N0YXJ0ICsgZWxsaXBzaXNSZWN0LndpZHRoKCkp
KTsKLSAgICByZXR1cm4gZWxsaXBzaXNSZWN0OworICAgIGF1dG8gdHJ1bmNhdGVMZWZ0ID0gc3Rk
OjpvcHRpb25hbDxmbG9hdD4geyB9OworICAgIGF1dG8gdmlzdWFsTGVmdEZvckNvbnRlbnRFbmQg
PSBzdGQ6Om1heCgwLmYsIGxlZnQoZGlzcGxheUxpbmUpICsgZWxsaXBzaXNXaWR0aCk7CisgICAg
Zm9yIChhdXRvJiBkaXNwbGF5Qm94IDogbWFrZVJldmVyc2VkUmFuZ2UoYm94ZXMpKSB7CisgICAg
ICAgIGlmIChkaXNwbGF5Qm94LmlzSW5saW5lQm94KCkpCisgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgaWYgKGxlZnQoZGlzcGxheUJveCkgPCB2aXN1YWxMZWZ0Rm9yQ29udGVudEVuZCkg
eworICAgICAgICAgICAgYXV0byB0cnVuY2F0ZVBvc2l0aW9uID0gdHJ1bmNhdGUoZGlzcGxheUJv
eCwgc3RkOjptYXgoMC5mLCByaWdodChkaXNwbGF5Qm94KSAtIHZpc3VhbExlZnRGb3JDb250ZW50
RW5kKSwgIWlzRmlyc3RDb250ZW50UnVuKTsKKyAgICAgICAgICAgIHRydW5jYXRlTGVmdCA9IHRy
dW5jYXRlTGVmdC52YWx1ZV9vcih0cnVuY2F0ZVBvc2l0aW9uKTsKKyAgICAgICAgfQorICAgICAg
ICBpc0ZpcnN0Q29udGVudFJ1biA9IGZhbHNlOworICAgIH0KKyAgICBBU1NFUlQodHJ1bmNhdGVM
ZWZ0Lmhhc192YWx1ZSgpKTsKKyAgICByZXR1cm4gdHJ1bmNhdGVMZWZ0LnZhbHVlX29yKGVsbGlw
c2lzV2lkdGgpIC0gZWxsaXBzaXNXaWR0aDsKIH0KIAotSW5saW5lUmVjdCBJbmxpbmVEaXNwbGF5
TGluZUJ1aWxkZXI6OmZsaXBMb2dpY2FsTGluZVJlY3RUb1Zpc3VhbEZvcldyaXRpbmdNb2RlKGNv
bnN0IElubGluZVJlY3QmIGxpbmVMb2dpY2FsUmVjdCwgV3JpdGluZ01vZGUgd3JpdGluZ01vZGUp
IGNvbnN0CitzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gSW5saW5lRGlzcGxheUxpbmVCdWlsZGVy
Ojp0cmFpbGluZ0VsbGlwc2lzVmlzdWFsUmVjdEFmdGVyVHJ1bmNhdGlvbihMaW5lQnVpbGRlcjo6
TGluZUVuZGluZ0VsbGlwc2lzUG9saWN5IGxpbmVFbmRpbmdFbGxpcHNpc1BvbGljeSwgY29uc3Qg
SW5saW5lRGlzcGxheTo6TGluZSYgZGlzcGxheUxpbmUsIERpc3BsYXlCb3hlcyYgZGlzcGxheUJv
eGVzLCBib29sIGlzTGFzdExpbmVXaXRoSW5saW5lQ29udGVudCkKIHsKLSAgICBzd2l0Y2ggKHdy
aXRpbmdNb2RlKSB7Ci0gICAgY2FzZSBXcml0aW5nTW9kZTo6VG9wVG9Cb3R0b206Ci0gICAgICAg
IHJldHVybiBsaW5lTG9naWNhbFJlY3Q7Ci0gICAgY2FzZSBXcml0aW5nTW9kZTo6TGVmdFRvUmln
aHQ6Ci0gICAgY2FzZSBXcml0aW5nTW9kZTo6UmlnaHRUb0xlZnQ6Ci0gICAgICAgIC8vIFNlZSBJ
bmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkgZm9yIG1vcmUgaW5mby4KLSAgICAgICAgcmV0dXJuIHsg
bGluZUxvZ2ljYWxSZWN0LmxlZnQoKSwgbGluZUxvZ2ljYWxSZWN0LnRvcCgpLCBsaW5lTG9naWNh
bFJlY3QuaGVpZ2h0KCksIGxpbmVMb2dpY2FsUmVjdC53aWR0aCgpIH07Ci0gICAgZGVmYXVsdDoK
LSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAg
ICByZXR1cm4gbGluZUxvZ2ljYWxSZWN0OworICAgIGlmIChkaXNwbGF5Qm94ZXMuaXNFbXB0eSgp
KQorICAgICAgICByZXR1cm4geyB9OworCisgICAgYXV0byBjb250ZW50TmVlZHNFbGxpcHNpcyA9
IFsmXSB7CisgICAgICAgIHN3aXRjaCAobGluZUVuZGluZ0VsbGlwc2lzUG9saWN5KSB7CisgICAg
ICAgIGNhc2UgTGluZUJ1aWxkZXI6OkxpbmVFbmRpbmdFbGxpcHNpc1BvbGljeTo6Tm86CisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGNhc2UgTGluZUJ1aWxkZXI6OkxpbmVFbmRp
bmdFbGxpcHNpc1BvbGljeTo6V2hlbkNvbnRlbnRPdmVyZmxvd3NJbklubGluZURpcmVjdGlvbjoK
KyAgICAgICAgICAgIHJldHVybiBkaXNwbGF5TGluZS5jb250ZW50TG9naWNhbFdpZHRoKCkgPiBk
aXNwbGF5TGluZS5saW5lQm94TG9naWNhbFJlY3QoKS53aWR0aCgpOworICAgICAgICBjYXNlIExp
bmVCdWlsZGVyOjpMaW5lRW5kaW5nRWxsaXBzaXNQb2xpY3k6OldoZW5Db250ZW50T3ZlcmZsb3dz
SW5CbG9ja0RpcmVjdGlvbjoKKyAgICAgICAgICAgIGlmIChpc0xhc3RMaW5lV2l0aElubGluZUNv
bnRlbnQpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgRkFMTFRI
Uk9VR0g7CisgICAgICAgIGNhc2UgTGluZUJ1aWxkZXI6OkxpbmVFbmRpbmdFbGxpcHNpc1BvbGlj
eTo6QWx3YXlzOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgfQorICAgIH07CisgICAgaWYgKCFjb250ZW50TmVlZHNFbGxpcHNpcygpKQor
ICAgICAgICByZXR1cm4geyB9OworCisgICAgQVNTRVJUKGRpc3BsYXlCb3hlc1swXS5pc1Jvb3RJ
bmxpbmVCb3goKSk7CisgICAgYXV0byYgcm9vdElubGluZUJveCA9IGRpc3BsYXlCb3hlc1swXTsK
KyAgICBhdXRvJiByb290U3R5bGUgPSByb290SW5saW5lQm94LnN0eWxlKCk7CisgICAgYXV0byBl
bGxpcHNpc1dpZHRoID0gcm9vdFN0eWxlLmZvbnRDYXNjYWRlKCkud2lkdGgoVGV4dFV0aWw6OmVs
bGlwc2lzVGV4dFJ1bigpKTsKKworICAgIGF1dG8gY29udGVudE5lZWRzVHJ1bmNhdGlvbiA9IFsm
XSB7CisgICAgICAgIHN3aXRjaCAobGluZUVuZGluZ0VsbGlwc2lzUG9saWN5KSB7CisgICAgICAg
IGNhc2UgTGluZUJ1aWxkZXI6OkxpbmVFbmRpbmdFbGxpcHNpc1BvbGljeTo6V2hlbkNvbnRlbnRP
dmVyZmxvd3NJbklubGluZURpcmVjdGlvbjoKKyAgICAgICAgICAgIEFTU0VSVChkaXNwbGF5TGlu
ZS5jb250ZW50TG9naWNhbFdpZHRoKCkgPiBkaXNwbGF5TGluZS5saW5lQm94TG9naWNhbFJlY3Qo
KS53aWR0aCgpKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBjYXNlIExpbmVC
dWlsZGVyOjpMaW5lRW5kaW5nRWxsaXBzaXNQb2xpY3k6OldoZW5Db250ZW50T3ZlcmZsb3dzSW5C
bG9ja0RpcmVjdGlvbjoKKyAgICAgICAgY2FzZSBMaW5lQnVpbGRlcjo6TGluZUVuZGluZ0VsbGlw
c2lzUG9saWN5OjpBbHdheXM6CisgICAgICAgICAgICByZXR1cm4gZGlzcGxheUxpbmUuY29udGVu
dExvZ2ljYWxMZWZ0KCkgKyBkaXNwbGF5TGluZS5jb250ZW50TG9naWNhbFdpZHRoKCkgKyBlbGxp
cHNpc1dpZHRoID4gZGlzcGxheUxpbmUubGluZUJveExvZ2ljYWxSZWN0KCkubWF4WCgpOworICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9OworCisgICAgYXV0byBlbGxpcHNp
c1N0YXJ0ID0gMC5mOworICAgIGlmICghY29udGVudE5lZWRzVHJ1bmNhdGlvbigpKSB7CisgICAg
ICAgIC8vIFRoZSBjb250ZW50IGRvZXMgbm90IG92ZXJmbG93IHRoZSBsaW5lIGJveC4gVGhlIGVs
bGlwc2lzIGlzIHN1cHBvc2VkIHRvIGJlIGVpdGhlciB2aXN1YWxseSB0cmFpbGluZyBvciBsZWFk
aW5nIGRlcGVuZGluZyBvbiB0aGUgaW5saW5lIGRpcmVjdGlvbi4KKyAgICAgICAgaWYgKGRpc3Bs
YXlCb3hlcy5zaXplKCkgPiAxKQorICAgICAgICAgICAgZWxsaXBzaXNTdGFydCA9IHJvb3RTdHls
ZS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBkaXNwbGF5Qm94ZXMubGFzdCgpLnJpZ2h0KCkg
OiBkaXNwbGF5Qm94ZXNbMV0ubGVmdCgpIC0gZWxsaXBzaXNXaWR0aDsKKyAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICAvLyBBbGwgd2UgaGF2ZSBpcyB0aGUgcm9vdCBpbmxpbmUgYm94LgorICAg
ICAgICAgICAgZWxsaXBzaXNTdGFydCA9IGRpc3BsYXlCb3hlcy5maXJzdCgpLmxlZnQoKTsKKyAg
ICAgICAgfQorICAgIH0gZWxzZQorICAgICAgICBlbGxpcHNpc1N0YXJ0ID0gdHJ1bmNhdGVPdmVy
Zmxvd2luZ0Rpc3BsYXlCb3hlcyhkaXNwbGF5TGluZSwgZGlzcGxheUJveGVzLCBlbGxpcHNpc1dp
ZHRoLCByb290U3R5bGUpOworCisgICAgaWYgKHJvb3RTdHlsZS5pc0hvcml6b250YWxXcml0aW5n
TW9kZSgpKQorICAgICAgICByZXR1cm4gRmxvYXRSZWN0IHsgZWxsaXBzaXNTdGFydCwgcm9vdElu
bGluZUJveC50b3AoKSwgZWxsaXBzaXNXaWR0aCwgcm9vdElubGluZUJveC5oZWlnaHQoKSB9Owor
ICAgIHJldHVybiBGbG9hdFJlY3QgeyByb290SW5saW5lQm94LmxlZnQoKSwgZWxsaXBzaXNTdGFy
dCwgcm9vdElubGluZUJveC53aWR0aCgpLCBlbGxpcHNpc1dpZHRoIH07CiB9CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rp
c3BsYXkvSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlMaW5lQnVpbGRl
ci5oCmluZGV4IDEzYzQ5NGE3ZjAxMi4uNjRhZGQyMTYxOTRiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURp
c3BsYXlMaW5lQnVpbGRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyLmgKQEAgLTQw
LDE0ICs0MCwxNCBAQCBwdWJsaWM6CiAKICAgICBJbmxpbmVEaXNwbGF5OjpMaW5lIGJ1aWxkKGNv
bnN0IExpbmVCdWlsZGVyOjpMaW5lQ29udGVudCYsIGNvbnN0IExpbmVCb3gmLCBjb25zdCBDb25z
dHJhaW50c0ZvcklubGluZUNvbnRlbnQmKSBjb25zdDsKIAorICAgIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPEZsb2F0UmVjdD4gdHJhaWxpbmdFbGxpcHNpc1Zpc3VhbFJlY3RBZnRlclRydW5jYXRpb24o
TGluZUJ1aWxkZXI6OkxpbmVFbmRpbmdFbGxpcHNpc1BvbGljeSwgY29uc3QgSW5saW5lRGlzcGxh
eTo6TGluZSYsIERpc3BsYXlCb3hlcyYsIGJvb2wgaXNMYXN0TGluZVdpdGhJbmxpbmVDb250ZW50
KTsKKwogcHJpdmF0ZToKICAgICBzdHJ1Y3QgRW5jbG9zaW5nTGluZUdlb21ldHJ5IHsKICAgICAg
ICAgSW5saW5lRGlzcGxheTo6TGluZTo6RW5jbG9zaW5nVG9wQW5kQm90dG9tIGVuY2xvc2luZ1Rv
cEFuZEJvdHRvbTsKICAgICAgICAgSW5saW5lUmVjdCBzY3JvbGxhYmxlT3ZlcmZsb3dSZWN0Owog
ICAgIH07CiAgICAgRW5jbG9zaW5nTGluZUdlb21ldHJ5IGNvbGxlY3RFbmNsb3NpbmdMaW5lR2Vv
bWV0cnkoY29uc3QgTGluZUJ1aWxkZXI6OkxpbmVDb250ZW50JiwgY29uc3QgTGluZUJveCYsIGNv
bnN0IElubGluZVJlY3QmIGxpbmVCb3hSZWN0KSBjb25zdDsKLSAgICBJbmxpbmVSZWN0IGZsaXBM
b2dpY2FsTGluZVJlY3RUb1Zpc3VhbEZvcldyaXRpbmdNb2RlKGNvbnN0IElubGluZVJlY3QmLCBX
cml0aW5nTW9kZSkgY29uc3Q7Ci0gICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IHRyYWlsaW5n
RWxsaXBzaXNSZWN0KGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lQ29udGVudCYsIGNvbnN0IExpbmVC
b3gmLCBjb25zdCBGbG9hdFJlY3QmIGxpbmVCb3hWaXN1YWxSZWN0KSBjb25zdDsKIAogICAgIGNv
bnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0JiBmb3JtYXR0aW5nQ29udGV4dCgpIGNvbnN0IHsg
cmV0dXJuIG1faW5saW5lRm9ybWF0dGluZ0NvbnRleHQ7IH0KICAgICBjb25zdCBCb3gmIHJvb3Qo
KSBjb25zdCB7IHJldHVybiBmb3JtYXR0aW5nQ29udGV4dCgpLnJvb3QoKTsgfQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9pbmxpbmUvdGV4dF9vdmVyZmxvd19lbGxpcHNpc19zaW1wbGUt
ZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvaW5saW5lL3RleHRfb3ZlcmZsb3dfZWxs
aXBzaXNfc2ltcGxlLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwLi43MzQ5ZjQxZjQwZWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2lubGluZS90ZXh0X292ZXJmbG93X2VsbGlwc2lzX3NpbXBsZS1leHBlY3RlZC5odG1sCkBA
IC0wLDAgKzEsMTYgQEAKKzxzdHlsZT4KK2RpdiB7CisgIGZvbnQtc2l6ZTogMjBweDsKKyAgb3Zl
cmZsb3c6IGhpZGRlbjsKKyAgd2hpdGUtc3BhY2U6IHByZTsKKyAgd2lkdGg6IDUwcHg7Cit9Cis8
L3N0eWxlPgorPGRpdj5BQiYjODIzMDs8L2Rpdj4KKzxkaXYgc3R5bGU9ImJvcmRlci1sZWZ0OiAx
MHB4IHNvbGlkIj5BQiYjODIzMDs8L2Rpdj4KKzxkaXYgc3R5bGU9ImJvcmRlci1sZWZ0OiAxMHB4
IHNvbGlkOyBwYWRkaW5nLWxlZnQ6IDIwcHg7Ij5BQiYjODIzMDs8L2Rpdj4KKzxkaXYgc3R5bGU9
ImJvcmRlcjogMTBweCBzb2xpZDsgcGFkZGluZzogMjBweDsiPkFCJiM4MjMwOzwvZGl2PgorPGRp
diBzdHlsZT0iZGlyZWN0aW9uOiBydGw7Ij5FRiYjODIzMDs8L2Rpdj4KKzxkaXYgc3R5bGU9ImRp
cmVjdGlvbjogcnRsOyBib3JkZXItbGVmdDogMTBweCBzb2xpZCI+RUYmIzgyMzA7PC9kaXY+Cis8
ZGl2IHN0eWxlPSJkaXJlY3Rpb246IHJ0bDsgYm9yZGVyLWxlZnQ6IDEwcHggc29saWQ7IHBhZGRp
bmctbGVmdDogMjBweDsiPkVGJiM4MjMwOzwvZGl2PgorPGRpdiBzdHlsZT0iZGlyZWN0aW9uOiBy
dGw7IGJvcmRlcjogMTBweCBzb2xpZDsgcGFkZGluZzogMjBweDsiPkVGJiM4MjMwOzwvZGl2Pgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9pbmxpbmUvdGV4dF9vdmVyZmxvd19lbGxpcHNp
c19zaW1wbGUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvaW5saW5lL3RleHRfb3ZlcmZsb3dfZWxs
aXBzaXNfc2ltcGxlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
Li5mMDcyZDFlNTliMTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2lubGlu
ZS90ZXh0X292ZXJmbG93X2VsbGlwc2lzX3NpbXBsZS5odG1sCkBAIC0wLDAgKzEsMjQgQEAKKzxz
dHlsZT4KK2RpdiB7CisgIGZvbnQtc2l6ZTogMjBweDsKKyAgb3ZlcmZsb3c6IGhpZGRlbjsKKyAg
d2hpdGUtc3BhY2U6IHByZTsKKyAgd2lkdGg6IDUwcHg7CisgIHRleHQtb3ZlcmZsb3c6IGVsbGlw
c2lzOworfQorPC9zdHlsZT4KKzxkaXY+QUJDRCBFRkdIPC9kaXY+Cis8ZGl2IHN0eWxlPSJib3Jk
ZXItbGVmdDogMTBweCBzb2xpZCI+QUJDRCBFRkdIPC9kaXY+Cis8ZGl2IHN0eWxlPSJib3JkZXIt
bGVmdDogMTBweCBzb2xpZDsgcGFkZGluZy1sZWZ0OiAyMHB4OyI+QUJDRCBFRkdIPC9kaXY+Cis8
ZGl2IHN0eWxlPSJib3JkZXI6IDEwcHggc29saWQ7IHBhZGRpbmc6IDIwcHg7Ij5BQkNEIEVGR0g8
L2Rpdj4KKworPGRpdiBzdHlsZT0iZGlyZWN0aW9uOiBydGw7Ij5BQkNEIEVGR0g8L2Rpdj4KKzxk
aXYgc3R5bGU9ImRpcmVjdGlvbjogcnRsOyBib3JkZXItbGVmdDogMTBweCBzb2xpZCI+QUJDRCBF
RkdIPC9kaXY+Cis8ZGl2IHN0eWxlPSJkaXJlY3Rpb246IHJ0bDsgYm9yZGVyLWxlZnQ6IDEwcHgg
c29saWQ7IHBhZGRpbmctbGVmdDogMjBweDsiPkFCQ0QgRUZHSDwvZGl2PgorPGRpdiBzdHlsZT0i
ZGlyZWN0aW9uOiBydGw7IGJvcmRlcjogMTBweCBzb2xpZDsgcGFkZGluZzogMjBweDsiPkFCQ0Qg
RUZHSDwvZGl2PgorCisKKzwhLS0gTmVlZHMgc29tZSBwYWludGluZyB3b3JrLCBzZWUgd2Via2l0
Lm9yZy9iLzI1MTYxMAorPGRpdiBzdHlsZT0id3JpdGluZy1tb2RlOiB2ZXJ0aWNhbC1scjsgd2lk
dGg6IGF1dG87IGhlaWdodDogNTBweDsgYm9yZGVyOiAxMHB4IHNvbGlkOyBwYWRkaW5nOiAyMHB4
OyI+QUJDRCBFRkdIPC9kaXY+Cis8ZGl2IHN0eWxlPSJ3cml0aW5nLW1vZGU6IHZlcnRpY2FsLWxy
OyBkaXJlY3Rpb246IHJ0bDsgd2lkdGg6IGF1dG87IGhlaWdodDogNTBweDsgYm9yZGVyOiAxMHB4
IHNvbGlkOyBwYWRkaW5nOiAyMHB4OyI+QUJDRCBFRkdIPC9kaXY+CisgLS0+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>464825</attachid>
            <date>2023-02-03 09:37:15 -0800</date>
            <delta_ts>2023-02-03 16:42:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-251608-20230203093714.patch</filename>
            <type>text/plain</type>
            <size>53089</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSAzNTllOGEzYjlmZmJhOWM1MzY5YjJhYWIyNDE3MTYwMjIxYzE5ZTIyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFRodSwgMiBGZWIgMjAyMyAxMDoyNDozNyAtMDgwMApTdWJqZWN0OiBbUEFUQ0hdIFtSVEwvYmlk
aS92ZXJ0aWNhbF0gSW5jb3JyZWN0IGNvbnRlbnQgdHJ1bmNhdGlvbiB3aGVuCiAidGV4dC1vdmVy
ZmxvdyIgaXMgImVsbGlwc2lzIiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjUxNjA4CgpSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KCkluIHRoaXMgcGF0Y2ggaW5s
aW5lIGNvbnRlbnQgdHJ1bmNhdGlvbiAob3ZlcmZsb3c6IGhpZGRlbiArIHRleHQtb3ZlcmZsb3c6
IGVsbGlwc2lzKSBpcyBtb3ZlZCBmcm9tIGxvZ2ljYWwgdG8gdmlzdWFsIHNwYWNlLgpJdCBlbnN1
cmVzIHRoYXQgdGhlIHRydW5jYXRpb24gaGFwcGVucyBfYWZ0ZXJfIGJpZGkgcmVvcmRlcmluZyBh
bmQgYWxzbyBfYWZ0ZXJfIGFwcGx5aW5nIHdyaXRpbmctbW9kZS4KCk5vdyBpbnN0ZWFkIG9mIHJ1
bm5pbmcgdHJ1bmNhdGlvbiBhcyBwYXJ0IG9mIHRoZSB0cmFpbGluZyBjb250ZW50IGhhbmRsaW5n
IGluIExpbmVCdWlsZGVyOjpjbG9zZSByaWdodCBhZnRlciB3ZSBmaWd1cmVkIHRoZSBicmVha2lu
ZyBwb3NpdGlvbiBmb3IKdGhlIGlubGluZSBjb250ZW50LCB3ZSBkbyBpdCBhZnRlciBjb25zdHJ1
Y3RpbmcgdGhlIGRpc3BsYXkgYm94ZXMgKGFuZCB0aGUgYXNzb2NpYXRlZCBkaXNwbGF5IGxpbmUp
LgoKMSwgUmVtb3ZlIHRydW5jYXRpb24gY29kZSBmcm9tIExpbmU6OlJ1biBhbmQgYWxsIHRoZSBy
ZWxhdGVkIGNvZGUgYWxsIHRoZSB3YXkgdG8gZGlzcGxheSBsaW5lIGNvbnN0cnVjdGlvbgoyLiBJ
bnRyb2R1Y2UgdHJ1bmNhdGVPdmVyZmxvd2luZ0Rpc3BsYXlCb3hlcy4gSXQgYXBwbGllcyB0cnVu
Y2F0aW9uIG9uIGRpc3BsYXkgYm94IGluIHZpc3VhbCBvcmRlciAodGhlIHRydW5jYXRpb24gbG9n
aWMgaXMgYWN0dWFsbHkgbW92ZWQgZnJvbSBMaW5lOjpSdW4sIG5vdGhpbmcgcmVhbGx5IG5ldyBo
ZXJlKS4KCiogTGF5b3V0VGVzdHMvZmFzdC9pbmxpbmUvdGV4dF9vdmVyZmxvd19lbGxpcHNpc19z
aW1wbGUtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCiogTGF5b3V0VGVzdHMvZmFzdC9pbmxpbmUvdGV4
dF9vdmVyZmxvd19lbGxpcHNpc19zaW1wbGUuaHRtbDogQWRkZWQuCiogU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQu
Y3BwOgooV2ViQ29yZTo6TGF5b3V0OjpsaW5lRW5kaW5nRWxsaXBzaXNQb2xpY3kpOgooV2ViQ29y
ZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGluZUxheW91dCk6CihXZWJDb3Jl
OjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0OjpjcmVhdGVEaXNwbGF5Q29udGVudEZv
ckxpbmUpOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L0lubGluZUZvcm1hdHRpbmdDb250ZXh0Lmg6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6Okxp
bmU6OmluaXRpYWxpemUpOgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lOjpSdW46OmRldGFjaFRyYWls
aW5nV2hpdGVzcGFjZSk6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmU6OnRydW5jYXRlKTogRGVsZXRl
ZC4KKFdlYkNvcmU6OkxheW91dDo6TGluZTo6UnVuOjp0cnVuY2F0ZSk6IERlbGV0ZWQuCiogU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5o
OgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lOjppc0NvbnRlbnRUcnVuY2F0ZWQgY29uc3QpOiBEZWxl
dGVkLgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lOjpSdW46OmlzVHJ1bmNhdGVkIGNvbnN0KTogRGVs
ZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9J
bmxpbmVMaW5lQnVpbGRlci5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjpsYXlv
dXRJbmxpbmVDb250ZW50KToKKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OmNvbXB1dGVk
SW50cmluc2ljV2lkdGgpOgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6Y2xvc2UpOgoq
IFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxp
bmVCdWlsZGVyLmg6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5Qm94Lmg6CihXZWJDb3JlOjpJbmxpbmVEaXNwbGF5
OjpCb3g6OlRleHQ6OnNldFBhcnRpYWxseVZpc2libGVDb250ZW50TGVuZ3RoKToKKFdlYkNvcmU6
OklubGluZURpc3BsYXk6OkJveDo6Qm94KToKKFdlYkNvcmU6OklubGluZURpc3BsYXk6OkJveDo6
c2V0TGVmdCk6CihXZWJDb3JlOjpJbmxpbmVEaXNwbGF5OjpCb3g6OnNldElzRnVsbHlUcnVuY2F0
ZWQpOgooV2ViQ29yZTo6SW5saW5lRGlzcGxheTo6Qm94OjpUZXh0OjpUZXh0KToKKiBTb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURp
c3BsYXlDb250ZW50QnVpbGRlci5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZURpc3BsYXlD
b250ZW50QnVpbGRlcjo6YXBwZW5kVGV4dERpc3BsYXlCb3gpOgooV2ViQ29yZTo6TGF5b3V0OjpJ
bmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OmFwcGVuZEF0b21pY0lubGluZUxldmVsRGlzcGxh
eUJveCk6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6YXBw
ZW5kSW5saW5lQm94RGlzcGxheUJveCk6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZURpc3BsYXlD
b250ZW50QnVpbGRlcjo6YXBwZW5kU3Bhbm5pbmdJbmxpbmVCb3hEaXNwbGF5Qm94KToKKiBTb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGlu
ZURpc3BsYXlDb250ZW50QnVpbGRlci5oOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVEaXNwbGF5
Q29udGVudEJ1aWxkZXI6OnJvb3RTdHlsZSBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5TGluZS5oOgoo
V2ViQ29yZTo6SW5saW5lRGlzcGxheTo6TGluZTo6c2V0RWxsaXBzaXNWaXN1YWxSZWN0KToKKFdl
YkNvcmU6OklubGluZURpc3BsYXk6OkxpbmU6OkxpbmUpOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUxpbmVCdWls
ZGVyLmNwcDoKKFdlYkNvcmU6OkxheW91dDo6ZmxpcExvZ2ljYWxMaW5lUmVjdFRvVmlzdWFsRm9y
V3JpdGluZ01vZGUpOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXI6
OmJ1aWxkIGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6dHJ1bmNhdGVPdmVyZmxvd2luZ0Rpc3Bs
YXlCb3hlcyk6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZURpc3BsYXlMaW5lQnVpbGRlcjo6dHJh
aWxpbmdFbGxpcHNpc1Zpc3VhbFJlY3QpOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVEaXNwbGF5
TGluZUJ1aWxkZXI6OnRyYWlsaW5nRWxsaXBzaXNSZWN0IGNvbnN0KTogRGVsZXRlZC4KKFdlYkNv
cmU6OkxheW91dDo6SW5saW5lRGlzcGxheUxpbmVCdWlsZGVyOjpmbGlwTG9naWNhbExpbmVSZWN0
VG9WaXN1YWxGb3JXcml0aW5nTW9kZSBjb25zdCk6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5TGlu
ZUJ1aWxkZXIuaDoKLS0tCiAuLi4vaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcCAg
ICAgICAgfCAgMjIgKystCiAuLi4vaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmggICAg
ICAgICAgfCAgIDIgKy0KIC4uLi9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmUu
Y3BwICB8ICA0OCArLS0tLQogLi4uL2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGlu
ZS5oICAgIHwgIDEzIC0tCiAuLi4vaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNwcCAgICAgICAg
ICAgICAgfCAgNDQgKy0tLS0KIC4uLi9pbmxpbmUvSW5saW5lTGluZUJ1aWxkZXIuaCAgICAgICAg
ICAgICAgICB8ICAyMCArLQogLi4uL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlCb3guaCAg
ICAgICAgIHwgIDIxICstCiAuLi4vZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIu
Y3BwICAgfCAgIDkgKy0KIC4uLi9kaXNwbGF5L0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5o
ICAgICB8ICAgMiArCiAuLi4vaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUxpbmUuaCAgICAg
ICAgfCAgIDYgKy0KIC4uLi9kaXNwbGF5L0lubGluZURpc3BsYXlMaW5lQnVpbGRlci5jcHAgICAg
ICB8IDE4MSArKysrKysrKysrKysrKy0tLS0KIC4uLi9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNw
bGF5TGluZUJ1aWxkZXIuaCB8ICAgNCArLQogLi4uZXh0X292ZXJmbG93X2VsbGlwc2lzX3NpbXBs
ZS1leHBlY3RlZC5odG1sIHwgIDE2ICsrCiAuLi4vaW5saW5lL3RleHRfb3ZlcmZsb3dfZWxsaXBz
aXNfc2ltcGxlLmh0bWwgfCAgMjQgKysrCiAxNCBmaWxlcyBjaGFuZ2VkLCAyMzMgaW5zZXJ0aW9u
cygrKSwgMTc5IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2Zh
c3QvaW5saW5lL3RleHRfb3ZlcmZsb3dfZWxsaXBzaXNfc2ltcGxlLWV4cGVjdGVkLmh0bWwKIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9mYXN0L2lubGluZS90ZXh0X292ZXJmbG93X2Vs
bGlwc2lzX3NpbXBsZS5odG1sCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0
dGluZ0NvbnRleHQuY3BwCmluZGV4IDRiODBjN2M4MGVmMS4uOWRlMWFlMTk5OTFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9Jbmxp
bmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC0yMDIs
MTkgKzIwMiwxOSBAQCBzdGF0aWMgc2l6ZV90IGluZGV4T2ZGaXJzdElubGluZUl0ZW1Gb3JOZXh0
TGluZShjb25zdCBMaW5lQnVpbGRlcjo6TGluZUNvbnRlbnQmCiAgICAgcmV0dXJuIGxpbmVDb250
ZW50UmFuZ2UuZW5kOwogfQogCi1zdGF0aWMgTGluZUJ1aWxkZXI6OkxpbmVJbnB1dDo6TGluZUVu
ZGluZ0VsbGlwc2lzUG9saWN5IGxpbmVFbmRpbmdFbGxpcHNpc1BvbGljeShjb25zdCBSZW5kZXJT
dHlsZSYgcm9vdFN0eWxlLCBzaXplX3QgbnVtYmVyT2ZMaW5lcywgc3RkOjpvcHRpb25hbDxzaXpl
X3Q+IG1heGltdW1OdW1iZXJPZlZpc2libGVMaW5lcykKK3N0YXRpYyBMaW5lQnVpbGRlcjo6TGlu
ZUVuZGluZ0VsbGlwc2lzUG9saWN5IGxpbmVFbmRpbmdFbGxpcHNpc1BvbGljeShjb25zdCBSZW5k
ZXJTdHlsZSYgcm9vdFN0eWxlLCBzaXplX3QgbnVtYmVyT2ZMaW5lcywgc3RkOjpvcHRpb25hbDxz
aXplX3Q+IG1heGltdW1OdW1iZXJPZlZpc2libGVMaW5lcykKIHsKICAgICAvLyBXZSBtYXkgaGF2
ZSBwYXNzZWQgdGhlIGxpbmUtY2xhbXAgbGluZSB3aXRoIG92ZXJmbG93IHZpc2libGUuCiAgICAg
aWYgKG1heGltdW1OdW1iZXJPZlZpc2libGVMaW5lcyAmJiBudW1iZXJPZkxpbmVzIDwgKm1heGlt
dW1OdW1iZXJPZlZpc2libGVMaW5lcykgewogICAgICAgICAvLyBJZiB0aGUgbmV4dCBjYWxsIHRv
IGxheW91dElubGluZUNvbnRlbnQoKSB3b24ndCBwcm9kdWNlIGEgbGluZSB3aXRoIGNvbnRlbnQg
KGUuZy4gb25seSBmbG9hdHMpLCB3ZSdsbCBlbmQgdXAgaGVyZSBhZ2Fpbi4KICAgICAgICAgYXV0
byBzaG91bGRBcHBseUNsYW1wV2hlbkFwcGxpY2FibGUgPSAqbWF4aW11bU51bWJlck9mVmlzaWJs
ZUxpbmVzIC0gbnVtYmVyT2ZMaW5lcyA9PSAxOwogICAgICAgICBpZiAoc2hvdWxkQXBwbHlDbGFt
cFdoZW5BcHBsaWNhYmxlKQotICAgICAgICAgICAgcmV0dXJuIExpbmVCdWlsZGVyOjpMaW5lSW5w
dXQ6OkxpbmVFbmRpbmdFbGxpcHNpc1BvbGljeTo6V2hlbkNvbnRlbnRPdmVyZmxvd3NJbkJsb2Nr
RGlyZWN0aW9uOworICAgICAgICAgICAgcmV0dXJuIExpbmVCdWlsZGVyOjpMaW5lRW5kaW5nRWxs
aXBzaXNQb2xpY3k6OldoZW5Db250ZW50T3ZlcmZsb3dzSW5CbG9ja0RpcmVjdGlvbjsKICAgICB9
CiAgICAgLy8gVHJ1bmNhdGlvbiBpcyBpbiBlZmZlY3Qgd2hlbiB0aGUgYmxvY2sgY29udGFpbmVy
IGhhcyBvdmVyZmxvdyBvdGhlciB0aGFuIHZpc2libGUuCiAgICAgaWYgKHJvb3RTdHlsZS5vdmVy
Zmxvd1goKSA9PSBPdmVyZmxvdzo6SGlkZGVuICYmIHJvb3RTdHlsZS50ZXh0T3ZlcmZsb3coKSA9
PSBUZXh0T3ZlcmZsb3c6OkVsbGlwc2lzKQotICAgICAgICByZXR1cm4gTGluZUJ1aWxkZXI6Okxp
bmVJbnB1dDo6TGluZUVuZGluZ0VsbGlwc2lzUG9saWN5OjpXaGVuQ29udGVudE92ZXJmbG93c0lu
SW5saW5lRGlyZWN0aW9uOwotICAgIHJldHVybiBMaW5lQnVpbGRlcjo6TGluZUlucHV0OjpMaW5l
RW5kaW5nRWxsaXBzaXNQb2xpY3k6Ok5vOworICAgICAgICByZXR1cm4gTGluZUJ1aWxkZXI6Okxp
bmVFbmRpbmdFbGxpcHNpc1BvbGljeTo6V2hlbkNvbnRlbnRPdmVyZmxvd3NJbklubGluZURpcmVj
dGlvbjsKKyAgICByZXR1cm4gTGluZUJ1aWxkZXI6OkxpbmVFbmRpbmdFbGxpcHNpc1BvbGljeTo6
Tm87CiB9CiAKIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxpbmVMYXlvdXQoSW5saW5l
SXRlbXMmIGlubGluZUl0ZW1zLCBjb25zdCBMaW5lQnVpbGRlcjo6SW5saW5lSXRlbVJhbmdlJiBu
ZWVkc0xheW91dFJhbmdlLCBjb25zdCBDb25zdHJhaW50c0ZvcklubGluZUNvbnRlbnQmIGNvbnN0
cmFpbnRzLCBCbG9ja0xheW91dFN0YXRlJiBibG9ja0xheW91dFN0YXRlKQpAQCAtMjQzLDEwICsy
NDMsMTAgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGluZUxheW91dChJbmxpbmVJ
dGVtcyYgaW5saW5lSXRlbXMsIGNvbnN0IExpbmVCdWkKICAgICB3aGlsZSAodHJ1ZSkgewogCiAg
ICAgICAgIGF1dG8gbGluZUluaXRpYWxSZWN0ID0gSW5saW5lUmVjdCB7IGxpbmVMb2dpY2FsVG9w
LCBjb25zdHJhaW50cy5ob3Jpem9udGFsKCkubG9naWNhbExlZnQsIGNvbnN0cmFpbnRzLmhvcml6
b250YWwoKS5sb2dpY2FsV2lkdGgsIGZvcm1hdHRpbmdHZW9tZXRyeSgpLmluaXRpYWxMaW5lSGVp
Z2h0KCFwcmV2aW91c0xpbmUuaGFzX3ZhbHVlKCkpIH07Ci0gICAgICAgIGF1dG8gZWxsaXBzaXNQ
b2xpY3kgPSBsaW5lRW5kaW5nRWxsaXBzaXNQb2xpY3kocm9vdFN0eWxlLCBudW1iZXJPZkxpbmVz
LCBtYXhpbXVtTnVtYmVyT2ZWaXNpYmxlTGluZXNGb3JUaGlzSW5saW5lQ29udGVudCk7Ci0gICAg
ICAgIGF1dG8gbGluZUNvbnRlbnQgPSBsaW5lQnVpbGRlci5sYXlvdXRJbmxpbmVDb250ZW50KHsg
eyBmaXJzdElubGluZUl0ZW1OZWVkc0xheW91dCwgbmVlZHNMYXlvdXRSYW5nZS5lbmQgfSwgbGlu
ZUluaXRpYWxSZWN0LCBlbGxpcHNpc1BvbGljeSB9LCBwcmV2aW91c0xpbmUpOworICAgICAgICBh
dXRvIGxpbmVDb250ZW50ID0gbGluZUJ1aWxkZXIubGF5b3V0SW5saW5lQ29udGVudCh7IHsgZmly
c3RJbmxpbmVJdGVtTmVlZHNMYXlvdXQsIG5lZWRzTGF5b3V0UmFuZ2UuZW5kIH0sIGxpbmVJbml0
aWFsUmVjdCB9LCBwcmV2aW91c0xpbmUpOwogCi0gICAgICAgIGF1dG8gbGluZUxvZ2ljYWxSZWN0
ID0gY3JlYXRlRGlzcGxheUNvbnRlbnRGb3JMaW5lKGxpbmVDb250ZW50LCBjb25zdHJhaW50cywg
YmxvY2tMYXlvdXRTdGF0ZSk7CisgICAgICAgIGF1dG8gZWxsaXBzaXNQb2xpY3kgPSBsaW5lRW5k
aW5nRWxsaXBzaXNQb2xpY3kocm9vdFN0eWxlLCBudW1iZXJPZkxpbmVzLCBtYXhpbXVtTnVtYmVy
T2ZWaXNpYmxlTGluZXNGb3JUaGlzSW5saW5lQ29udGVudCk7CisgICAgICAgIGF1dG8gbGluZUxv
Z2ljYWxSZWN0ID0gY3JlYXRlRGlzcGxheUNvbnRlbnRGb3JMaW5lKGxpbmVDb250ZW50LCBjb25z
dHJhaW50cywgZWxsaXBzaXNQb2xpY3ksIGJsb2NrTGF5b3V0U3RhdGUpOwogICAgICAgICBpZiAo
bGluZUNvbnRlbnQuaXNMYXN0TGluZVdpdGhJbmxpbmVDb250ZW50KQogICAgICAgICAgICAgZm9y
bWF0dGluZ1N0YXRlLnNldENsZWFyR2FwQWZ0ZXJMYXN0TGluZShmb3JtYXR0aW5nR2VvbWV0cnko
KS5sb2dpY2FsVG9wRm9yTmV4dExpbmUobGluZUNvbnRlbnQsIGxpbmVMb2dpY2FsUmVjdCwgZmxv
YXRpbmdDb250ZXh0KSAtIGxpbmVMb2dpY2FsUmVjdC5ib3R0b20oKSk7CiAKQEAgLTQ1NywxNCAr
NDU3LDE4IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbGxlY3RDb250ZW50SWZO
ZWVkZWQoKQogICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVJdGVtcyhpbmxpbmVJdGVtc0J1
aWxkZXIuYnVpbGQoKSk7CiB9CiAKLUlubGluZVJlY3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6
OmNyZWF0ZURpc3BsYXlDb250ZW50Rm9yTGluZShjb25zdCBMaW5lQnVpbGRlcjo6TGluZUNvbnRl
bnQmIGxpbmVDb250ZW50LCBjb25zdCBDb25zdHJhaW50c0ZvcklubGluZUNvbnRlbnQmIGNvbnN0
cmFpbnRzLCBjb25zdCBCbG9ja0xheW91dFN0YXRlJiBibG9ja0xheW91dFN0YXRlKQorSW5saW5l
UmVjdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y3JlYXRlRGlzcGxheUNvbnRlbnRGb3JMaW5l
KGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lQ29udGVudCYgbGluZUNvbnRlbnQsIGNvbnN0IENvbnN0
cmFpbnRzRm9ySW5saW5lQ29udGVudCYgY29uc3RyYWludHMsIExpbmVCdWlsZGVyOjpMaW5lRW5k
aW5nRWxsaXBzaXNQb2xpY3kgbGluZUVuZGluZ0VsbGlwc2lzUG9saWN5LCBjb25zdCBCbG9ja0xh
eW91dFN0YXRlJiBibG9ja0xheW91dFN0YXRlKQogewogICAgIGF1dG8mIGZvcm1hdHRpbmdTdGF0
ZSA9IHRoaXMtPmZvcm1hdHRpbmdTdGF0ZSgpOwogICAgIGF1dG8gY3VycmVudExpbmVJbmRleCA9
IGZvcm1hdHRpbmdTdGF0ZS5saW5lcygpLnNpemUoKTsKIAogICAgIGF1dG8gbGluZUJveCA9IExp
bmVCb3hCdWlsZGVyIHsgKnRoaXMsIGxpbmVDb250ZW50LCBibG9ja0xheW91dFN0YXRlIH0uYnVp
bGQoY3VycmVudExpbmVJbmRleCk7CiAgICAgYXV0byBkaXNwbGF5TGluZSA9IElubGluZURpc3Bs
YXlMaW5lQnVpbGRlciB7ICp0aGlzIH0uYnVpbGQobGluZUNvbnRlbnQsIGxpbmVCb3gsIGNvbnN0
cmFpbnRzKTsKLSAgICBmb3JtYXR0aW5nU3RhdGUuYWRkQm94ZXMoSW5saW5lRGlzcGxheUNvbnRl
bnRCdWlsZGVyIHsgKnRoaXMsIGZvcm1hdHRpbmdTdGF0ZSB9LmJ1aWxkKGxpbmVDb250ZW50LCBs
aW5lQm94LCBkaXNwbGF5TGluZSwgY3VycmVudExpbmVJbmRleCkpOworICAgIGF1dG8gYm94ZXMg
PSBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIgeyAqdGhpcywgZm9ybWF0dGluZ1N0YXRlIH0u
YnVpbGQobGluZUNvbnRlbnQsIGxpbmVCb3gsIGRpc3BsYXlMaW5lLCBjdXJyZW50TGluZUluZGV4
KTsKKyAgICBpZiAoYXV0byBlbGxpcHNpc1JlY3QgPSBJbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXI6
OnRyYWlsaW5nRWxsaXBzaXNWaXN1YWxSZWN0QWZ0ZXJUcnVuY2F0aW9uKGxpbmVFbmRpbmdFbGxp
cHNpc1BvbGljeSwgZGlzcGxheUxpbmUsIGJveGVzLCBsaW5lQ29udGVudC5pc0xhc3RMaW5lV2l0
aElubGluZUNvbnRlbnQpKQorICAgICAgICBkaXNwbGF5TGluZS5zZXRFbGxpcHNpc1Zpc3VhbFJl
Y3QoKmVsbGlwc2lzUmVjdCk7CisKKyAgICBmb3JtYXR0aW5nU3RhdGUuYWRkQm94ZXMoV1RGTW92
ZShib3hlcykpOwogICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRMaW5lQm94KFdURk1vdmUobGluZUJv
eCkpOwogICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRMaW5lKGRpc3BsYXlMaW5lKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmgKaW5kZXggNzEwNjE0MGQ1
ZDFhLi4xNjI0N2MwNzc3OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0
dGluZ0NvbnRleHQuaApAQCAtNzIsNyArNzIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcHV0
ZVdpZHRoQW5kTWFyZ2luKGNvbnN0IEJveCYsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYp
OwogCiAgICAgdm9pZCBjb2xsZWN0Q29udGVudElmTmVlZGVkKCk7Ci0gICAgSW5saW5lUmVjdCBj
cmVhdGVEaXNwbGF5Q29udGVudEZvckxpbmUoY29uc3QgTGluZUJ1aWxkZXI6OkxpbmVDb250ZW50
JiwgY29uc3QgQ29uc3RyYWludHNGb3JJbmxpbmVDb250ZW50JiwgY29uc3QgQmxvY2tMYXlvdXRT
dGF0ZSYpOworICAgIElubGluZVJlY3QgY3JlYXRlRGlzcGxheUNvbnRlbnRGb3JMaW5lKGNvbnN0
IExpbmVCdWlsZGVyOjpMaW5lQ29udGVudCYsIGNvbnN0IENvbnN0cmFpbnRzRm9ySW5saW5lQ29u
dGVudCYsIExpbmVCdWlsZGVyOjpMaW5lRW5kaW5nRWxsaXBzaXNQb2xpY3ksIGNvbnN0IEJsb2Nr
TGF5b3V0U3RhdGUmKTsKICAgICB2b2lkIHJlc2V0R2VvbWV0cnlGb3JDbGFtcGVkQ29udGVudChj
b25zdCBMaW5lQnVpbGRlcjo6SW5saW5lSXRlbVJhbmdlJiBuZWVkc0Rpc3BsYXlDb250ZW50UmFu
Z2UsIGNvbnN0IExpbmVCdWlsZGVyOjpGbG9hdExpc3QmIG92ZXJmbG93aW5nRmxvYXRzLCBMYXlv
dXRQb2ludCB0b3BsZWZ0KTsKIAogICAgIHZvaWQgaW52YWxpZGF0ZUZvcm1hdHRpbmdTdGF0ZSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvSW5saW5lTGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2lubGluZS9JbmxpbmVMaW5lLmNwcAppbmRleCA4ZjAwMTc4ZDM4ZTIuLmY4NTc1YTIy
MzFlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9pbmxpbmUvSW5saW5lTGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5jcHAKQEAgLTUwLDcgKzUwLDYgQEAgTGlu
ZTo6fkxpbmUoKQogdm9pZCBMaW5lOjppbml0aWFsaXplKGNvbnN0IFZlY3RvcjxJbmxpbmVJdGVt
PiYgbGluZVNwYW5uaW5nSW5saW5lQm94ZXMsIGJvb2wgaXNGaXJzdEZvcm1hdHRlZExpbmUpCiB7
CiAgICAgbV9pc0ZpcnN0Rm9ybWF0dGVkTGluZSA9IGlzRmlyc3RGb3JtYXR0ZWRMaW5lOwotICAg
IG1fY29udGVudElzVHJ1bmNhdGVkID0gZmFsc2U7CiAgICAgbV9pbmxpbmVCb3hMaXN0V2l0aENs
b25lZERlY29yYXRpb25FbmQuY2xlYXIoKTsKICAgICBtX2Nsb25lZEVuZERlY29yYXRpb25XaWR0
aEZvcklubGluZUJveFJ1bnMgPSB7IH07CiAgICAgbV9ub25TcGFubmluZ0lubGluZUxldmVsQm94
Q291bnQgPSAwOwpAQCAtMTgxLDI3ICsxODAsNiBAQCB2b2lkIExpbmU6OmFwcGx5UnVuRXhwYW5z
aW9uKElubGluZUxheW91dFVuaXQgaG9yaXpvbnRhbEF2YWlsYWJsZVNwYWNlKQogICAgIG1fY29u
dGVudExvZ2ljYWxXaWR0aCArPSBhY2N1bXVsYXRlZEV4cGFuc2lvbjsKIH0KIAotdm9pZCBMaW5l
Ojp0cnVuY2F0ZShJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxSaWdodCkKLXsKLSAgICBBU1NFUlQo
IW1fY29udGVudElzVHJ1bmNhdGVkKTsKLSAgICBBU1NFUlQobV9jb250ZW50TG9naWNhbFdpZHRo
ID4gbG9naWNhbFJpZ2h0KTsKLSAgICBhdXRvIGlzRmlyc3RSdW4gPSB0cnVlOwotICAgIGZvciAo
YXV0byYgcnVuIDogbV9ydW5zKSB7Ci0gICAgICAgIGlmIChydW4uaXNJbmxpbmVCb3goKSkKLSAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAocnVuLmxvZ2ljYWxSaWdodCgpID4gbG9n
aWNhbFJpZ2h0KSB7Ci0gICAgICAgICAgICAvLyBUaGUgZmlyc3QgY2hhcmFjdGVyIG9yIGF0b21p
YyBpbmxpbmUtbGV2ZWwgZWxlbWVudCBvbiBhIGxpbmUgbXVzdCBiZSBjbGlwcGVkIHJhdGhlciB0
aGFuIGVsbGlwc2VkLgotICAgICAgICAgICAgaWYgKGlzRmlyc3RSdW4pCi0gICAgICAgICAgICAg
ICAgbV9jb250ZW50SXNUcnVuY2F0ZWQgPSBydW4udHJ1bmNhdGUobG9naWNhbFJpZ2h0IC0gcnVu
LmxvZ2ljYWxMZWZ0KCksIFJ1bjo6Q2FuRnVsbHlUcnVuY2F0ZTo6Tm8pOwotICAgICAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgcnVuLnRydW5jYXRlKGxvZ2ljYWxSaWdodCAtIHJ1bi5s
b2dpY2FsTGVmdCgpKTsKLSAgICAgICAgICAgICAgICBtX2NvbnRlbnRJc1RydW5jYXRlZCA9IHRy
dWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaXNGaXJzdFJ1biA9IGZhbHNl
OwotICAgIH0KLX0KLQogdm9pZCBMaW5lOjpoYW5kbGVUcmFpbGluZ1RyaW1tYWJsZUNvbnRlbnQo
VHJhaWxpbmdDb250ZW50QWN0aW9uIHRyYWlsaW5nVHJpbW1hYmxlQ29udGVudEFjdGlvbikKIHsK
ICAgICBpZiAobV90cmltbWFibGVUcmFpbGluZ0NvbnRlbnQuaXNFbXB0eSgpIHx8IG1fcnVucy5p
c0VtcHR5KCkpCkBAIC04NTEsNyArODI5LDcgQEAgc3RkOjpvcHRpb25hbDxMaW5lOjpSdW4+IExp
bmU6OlJ1bjo6ZGV0YWNoVHJhaWxpbmdXaGl0ZXNwYWNlKCkKICAgICBhdXRvIHRyYWlsaW5nV2hp
dGVzcGFjZVJ1biA9ICp0aGlzOwogCiAgICAgYXV0byBsZWFkaW5nTm9uV2hpdGVzcGFjZUNvbnRl
bnRMZW5ndGggPSBtX3RleHRDb250ZW50LT5sZW5ndGggLSBtX3RyYWlsaW5nV2hpdGVzcGFjZS0+
bGVuZ3RoOwotICAgIHRyYWlsaW5nV2hpdGVzcGFjZVJ1bi5tX3RleHRDb250ZW50ID0geyBtX3Rl
eHRDb250ZW50LT5zdGFydCArIGxlYWRpbmdOb25XaGl0ZXNwYWNlQ29udGVudExlbmd0aCwgbV90
cmFpbGluZ1doaXRlc3BhY2UtPmxlbmd0aCwgeyB9LCBmYWxzZSB9OworICAgIHRyYWlsaW5nV2hp
dGVzcGFjZVJ1bi5tX3RleHRDb250ZW50ID0geyBtX3RleHRDb250ZW50LT5zdGFydCArIGxlYWRp
bmdOb25XaGl0ZXNwYWNlQ29udGVudExlbmd0aCwgbV90cmFpbGluZ1doaXRlc3BhY2UtPmxlbmd0
aCwgZmFsc2UgfTsKIAogICAgIHRyYWlsaW5nV2hpdGVzcGFjZVJ1bi5tX2xvZ2ljYWxXaWR0aCA9
IG1fdHJhaWxpbmdXaGl0ZXNwYWNlLT53aWR0aDsKICAgICB0cmFpbGluZ1doaXRlc3BhY2VSdW4u
bV9sb2dpY2FsTGVmdCA9IGxvZ2ljYWxSaWdodCgpIC0gbV90cmFpbGluZ1doaXRlc3BhY2UtPndp
ZHRoOwpAQCAtOTEzLDMwICs4OTEsNiBAQCBJbmxpbmVMYXlvdXRVbml0IExpbmU6OlJ1bjo6cmVt
b3ZlVHJhaWxpbmdXaGl0ZXNwYWNlKCkKICAgICByZXR1cm4gdHJpbW1lZFdpZHRoOwogfQogCi1i
b29sIExpbmU6OlJ1bjo6dHJ1bmNhdGUoSW5saW5lTGF5b3V0VW5pdCB2aXNpYmxlV2lkdGgsIENh
bkZ1bGx5VHJ1bmNhdGUgY2FuRnVsbHlUcnVuY2F0ZSkKLXsKLSAgICBBU1NFUlQoIXZpc2libGVX
aWR0aCB8fCB2aXNpYmxlV2lkdGggPCBtX2xvZ2ljYWxXaWR0aCk7Ci0KLSAgICBpZiAoaXNUZXh0
KCkpIHsKLSAgICAgICAgbV9pc1RydW5jYXRlZCA9IHRydWU7Ci0gICAgICAgIGF1dG8mIGlubGlu
ZVRleHRCb3ggPSBkb3duY2FzdDxJbmxpbmVUZXh0Qm94PigqbV9sYXlvdXRCb3gpOwotICAgICAg
ICBhdXRvIGxlZnRTaWRlID0gVGV4dFV0aWw6OldvcmRCcmVha0xlZnQgeyB9OwotICAgICAgICBp
ZiAodmlzaWJsZVdpZHRoID4gMC5mKQotICAgICAgICAgICAgbGVmdFNpZGUgPSBUZXh0VXRpbDo6
YnJlYWtXb3JkKGlubGluZVRleHRCb3gsIG1fdGV4dENvbnRlbnQtPnN0YXJ0LCBtX3RleHRDb250
ZW50LT5sZW5ndGgsIG1fbG9naWNhbFdpZHRoLCB2aXNpYmxlV2lkdGgsIG1fbG9naWNhbExlZnQs
IG1fc3R5bGUuZm9udENhc2NhZGUoKSk7Ci0KLSAgICAgICAgaWYgKGxlZnRTaWRlLmxlbmd0aCkK
LSAgICAgICAgICAgIG1fdGV4dENvbnRlbnQtPnBhcnRpYWxseVZpc2libGVDb250ZW50ID0geyBs
ZWZ0U2lkZS5sZW5ndGgsIGxlZnRTaWRlLmxvZ2ljYWxXaWR0aCB9OwotICAgICAgICBlbHNlIGlm
IChjYW5GdWxseVRydW5jYXRlID09IENhbkZ1bGx5VHJ1bmNhdGU6Ok5vKSB7Ci0gICAgICAgICAg
ICBhdXRvIGZpcnN0Q2hhcmFjdGVyTGVuZ3RoID0gVGV4dFV0aWw6OmZpcnN0VXNlclBlcmNlaXZl
ZENoYXJhY3Rlckxlbmd0aChpbmxpbmVUZXh0Qm94LCBtX3RleHRDb250ZW50LT5zdGFydCwgbV90
ZXh0Q29udGVudC0+bGVuZ3RoKTsKLSAgICAgICAgICAgIGF1dG8gZmlyc3RDaGFyYWN0ZXJXaWR0
aCA9IFRleHRVdGlsOjp3aWR0aChpbmxpbmVUZXh0Qm94LCBpbmxpbmVUZXh0Qm94LnN0eWxlKCku
Zm9udENhc2NhZGUoKSwgbV90ZXh0Q29udGVudC0+c3RhcnQsIG1fdGV4dENvbnRlbnQtPnN0YXJ0
ICsgZmlyc3RDaGFyYWN0ZXJMZW5ndGgsIHsgfSwgVGV4dFV0aWw6OlVzZVRyYWlsaW5nV2hpdGVz
cGFjZU1lYXN1cmluZ09wdGltaXphdGlvbjo6Tm8pOwotICAgICAgICAgICAgbV90ZXh0Q29udGVu
dC0+cGFydGlhbGx5VmlzaWJsZUNvbnRlbnQgPSB7IGZpcnN0Q2hhcmFjdGVyTGVuZ3RoLCBmaXJz
dENoYXJhY3RlcldpZHRoIH07Ci0gICAgICAgIH0KLSAgICB9IGVsc2UKLSAgICAgICAgbV9pc1Ry
dW5jYXRlZCA9IGNhbkZ1bGx5VHJ1bmNhdGUgPT0gQ2FuRnVsbHlUcnVuY2F0ZTo6WWVzOwotCi0g
ICAgcmV0dXJuIG1faXNUcnVuY2F0ZWQ7Ci19Ci0KIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5oIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGlu
ZS5oCmluZGV4IGE4MjIzYWI3YTBkZS4uNDE0NGJmYmE0Y2NhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5l
TGluZS5oCkBAIC00Nyw3ICs0Nyw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZChjb25zdCBJ
bmxpbmVJdGVtJiwgY29uc3QgUmVuZGVyU3R5bGUmLCBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxX
aWR0aCk7CiAKICAgICBib29sIGhhc0NvbnRlbnQoKSBjb25zdDsKLSAgICBib29sIGlzQ29udGVu
dFRydW5jYXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudElzVHJ1bmNhdGVkOyB9CiAKICAg
ICBib29sIGNvbnRlbnROZWVkc0JpZGlSZW9yZGVyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9oYXNO
b25EZWZhdWx0QmlkaUxldmVsUnVuOyB9CiAKQEAgLTcwLDcgKzY5LDYgQEAgcHVibGljOgogICAg
IHZvaWQgaGFuZGxlT3ZlcmZsb3dpbmdOb25CcmVha2luZ1NwYWNlKFRyYWlsaW5nQ29udGVudEFj
dGlvbiwgSW5saW5lTGF5b3V0VW5pdCBvdmVyZmxvd2luZ1dpZHRoKTsKICAgICB2b2lkIHJlc2V0
QmlkaUxldmVsRm9yVHJhaWxpbmdXaGl0ZXNwYWNlKFVCaURpTGV2ZWwgcm9vdEJpZGlMZXZlbCk7
CiAgICAgdm9pZCBhcHBseVJ1bkV4cGFuc2lvbihJbmxpbmVMYXlvdXRVbml0IGhvcml6b250YWxB
dmFpbGFibGVTcGFjZSk7Ci0gICAgdm9pZCB0cnVuY2F0ZShJbmxpbmVMYXlvdXRVbml0IGxvZ2lj
YWxSaWdodCk7CiAKICAgICBzdHJ1Y3QgUnVuIHsKICAgICAgICAgZW51bSBjbGFzcyBUeXBlIDog
dWludDhfdCB7CkBAIC0xMDQsMTcgKzEwMiwxMCBAQCBwdWJsaWM6CiAgICAgICAgIGJvb2wgaXND
b250ZW50ZnVsKCkgY29uc3QgeyByZXR1cm4gKGlzVGV4dCgpICYmIHRleHRDb250ZW50KCktPmxl
bmd0aCkgfHwgaXNCb3goKSB8fCBpc0xpbmVCcmVhaygpIHx8IGlzTGlzdE1hcmtlcigpOyB9CiAg
ICAgICAgIGJvb2wgaXNHZW5lcmF0ZWQoKSBjb25zdCB7IHJldHVybiBpc0xpc3RNYXJrZXIoKTsg
fQogCi0gICAgICAgIGJvb2wgaXNUcnVuY2F0ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzVHJ1bmNh
dGVkOyB9Ci0KICAgICAgICAgY29uc3QgQm94JiBsYXlvdXRCb3goKSBjb25zdCB7IHJldHVybiAq
bV9sYXlvdXRCb3g7IH0KICAgICAgICAgc3RydWN0IFRleHQgewogICAgICAgICAgICAgc2l6ZV90
IHN0YXJ0IHsgMCB9OwogICAgICAgICAgICAgc2l6ZV90IGxlbmd0aCB7IDAgfTsKLSAgICAgICAg
ICAgIHN0cnVjdCBQYXJ0aWFsbHlWaXNpYmxlQ29udGVudCB7Ci0gICAgICAgICAgICAgICAgc2l6
ZV90IGxlbmd0aCB7IDAgfTsKLSAgICAgICAgICAgICAgICBJbmxpbmVMYXlvdXRVbml0IHdpZHRo
IHsgMC5mIH07Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxQYXJ0
aWFsbHlWaXNpYmxlQ29udGVudD4gcGFydGlhbGx5VmlzaWJsZUNvbnRlbnQgeyB9OwogICAgICAg
ICAgICAgYm9vbCBuZWVkc0h5cGhlbiB7IGZhbHNlIH07CiAgICAgICAgIH07CiAgICAgICAgIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8VGV4dD4mIHRleHRDb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV90
ZXh0Q29udGVudDsgfQpAQCAtMTcyLDggKzE2Myw2IEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBo
YXNUcmFpbGluZ0xldHRlclNwYWNpbmcoKSBjb25zdDsKICAgICAgICAgSW5saW5lTGF5b3V0VW5p
dCB0cmFpbGluZ0xldHRlclNwYWNpbmcoKSBjb25zdDsKICAgICAgICAgSW5saW5lTGF5b3V0VW5p
dCByZW1vdmVUcmFpbGluZ0xldHRlclNwYWNpbmcoKTsKLSAgICAgICAgZW51bSBjbGFzcyBDYW5G
dWxseVRydW5jYXRlIDogdWludDhfdCB7IFllcywgTm8gfTsKLSAgICAgICAgYm9vbCB0cnVuY2F0
ZShJbmxpbmVMYXlvdXRVbml0IHRydW5jYXRlZFdpZHRoLCBDYW5GdWxseVRydW5jYXRlID0gQ2Fu
RnVsbHlUcnVuY2F0ZTo6WWVzKTsKIAogICAgICAgICBUeXBlIG1fdHlwZSB7IFR5cGU6OlRleHQg
fTsKICAgICAgICAgY29uc3QgQm94KiBtX2xheW91dEJveCB7IG51bGxwdHIgfTsKQEAgLTE4NSw3
ICsxNzQsNiBAQCBwdWJsaWM6CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8VHJhaWxpbmdXaGl0ZXNw
YWNlPiBtX3RyYWlsaW5nV2hpdGVzcGFjZSB7IH07CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8c2l6
ZV90PiBtX2xhc3ROb25XaGl0ZXNwYWNlQ29udGVudFN0YXJ0IHsgfTsKICAgICAgICAgc3RkOjpv
cHRpb25hbDxUZXh0PiBtX3RleHRDb250ZW50OwotICAgICAgICBib29sIG1faXNUcnVuY2F0ZWQg
eyBmYWxzZSB9OwogICAgIH07CiAgICAgdXNpbmcgUnVuTGlzdCA9IFZlY3RvcjxSdW4sIDEwPjsK
ICAgICBjb25zdCBSdW5MaXN0JiBydW5zKCkgY29uc3QgeyByZXR1cm4gbV9ydW5zOyB9CkBAIC0y
ODEsNyArMjY5LDYgQEAgcHJpdmF0ZToKICAgICBJbmxpbmVCb3hMaXN0V2l0aENsb25lZERlY29y
YXRpb25FbmQgbV9pbmxpbmVCb3hMaXN0V2l0aENsb25lZERlY29yYXRpb25FbmQ7CiAgICAgSW5s
aW5lTGF5b3V0VW5pdCBtX2Nsb25lZEVuZERlY29yYXRpb25XaWR0aEZvcklubGluZUJveFJ1bnMg
eyAwIH07CiAgICAgYm9vbCBtX2hhc05vbkRlZmF1bHRCaWRpTGV2ZWxSdW4geyBmYWxzZSB9Owot
ICAgIGJvb2wgbV9jb250ZW50SXNUcnVuY2F0ZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc0Zp
cnN0Rm9ybWF0dGVkTGluZSB7IGZhbHNlIH07CiAgICAgVmVjdG9yPElubGluZUxheW91dFVuaXQ+
IG1faW5saW5lQm94TG9naWNhbExlZnRTdGFjazsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQnVpbGRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9Jbmxp
bmVMaW5lQnVpbGRlci5jcHAKaW5kZXggNjk5N2JlMDI1MDA2Li42N2FkNzk4OGY2YWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lu
bGluZUxpbmVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQnVpbGRlci5jcHAKQEAgLTM0OSwxNCArMzQ5LDEy
IEBAIExpbmVCdWlsZGVyOjpMaW5lQ29udGVudCBMaW5lQnVpbGRlcjo6bGF5b3V0SW5saW5lQ29u
dGVudChjb25zdCBMaW5lSW5wdXQmIGxpbmVJCiAgICAgaW5pdGlhbGl6ZShsaW5lSW5wdXQuaW5p
dGlhbExvZ2ljYWxSZWN0LCBpbml0aWFsQ29uc3RyYWludHNGb3JMaW5lKGxpbmVJbnB1dC5pbml0
aWFsTG9naWNhbFJlY3QsIHByZXZpb3VzTGluZUVuZHNXaXRoTGluZUJyZWFrKSwgbGluZUlucHV0
Lm5lZWRzTGF5b3V0UmFuZ2UsIHByZXZpb3VzTGluZSk7CiAKICAgICBhdXRvIGNvbW1pdHRlZENv
bnRlbnQgPSBwbGFjZUlubGluZUNvbnRlbnQobGluZUlucHV0Lm5lZWRzTGF5b3V0UmFuZ2UpOwot
ICAgIGF1dG8gY29tbWl0dGVkUmFuZ2UgPSBjbG9zZShsaW5lSW5wdXQubmVlZHNMYXlvdXRSYW5n
ZSwgbGluZUlucHV0LmVsbGlwc2lzUG9saWN5LCBjb21taXR0ZWRDb250ZW50KTsKKyAgICBhdXRv
IGNvbW1pdHRlZFJhbmdlID0gY2xvc2UobGluZUlucHV0Lm5lZWRzTGF5b3V0UmFuZ2UsIGNvbW1p
dHRlZENvbnRlbnQpOwogCiAgICAgYXV0byBpc0xhc3RMaW5lID0gaXNMYXN0TGluZVdpdGhJbmxp
bmVDb250ZW50KGNvbW1pdHRlZFJhbmdlLCBsaW5lSW5wdXQubmVlZHNMYXlvdXRSYW5nZS5lbmQs
IGNvbW1pdHRlZENvbnRlbnQucGFydGlhbFRyYWlsaW5nQ29udGVudExlbmd0aCk7CiAgICAgYXV0
byBwYXJ0aWFsT3ZlcmZsb3dpbmdDb250ZW50ID0gY29tbWl0dGVkQ29udGVudC5wYXJ0aWFsVHJh
aWxpbmdDb250ZW50TGVuZ3RoID8gc3RkOjptYWtlX29wdGlvbmFsPFBhcnRpYWxDb250ZW50Pihj
b21taXR0ZWRDb250ZW50LnBhcnRpYWxUcmFpbGluZ0NvbnRlbnRMZW5ndGgsIGNvbW1pdHRlZENv
bnRlbnQub3ZlcmZsb3dMb2dpY2FsV2lkdGgpIDogc3RkOjpudWxsb3B0OwogICAgIGF1dG8gaW5s
aW5lQmFzZURpcmVjdGlvbiA9IG1fbGluZS5ydW5zKCkuaXNFbXB0eSgpID8gVGV4dERpcmVjdGlv
bjo6TFRSIDogaW5saW5lQmFzZURpcmVjdGlvbkZvckxpbmVDb250ZW50KCk7CiAgICAgYXV0byBj
b250ZW50TG9naWNhbExlZnQgPSBob3Jpem9udGFsQWxpZ25tZW50T2Zmc2V0KGlzTGFzdExpbmUp
OwotICAgIGF1dG8gY29udGVudElzVHJ1bmNhdGVkSW5CbG9ja0RpcmVjdGlvbiA9ICghaXNMYXN0
TGluZSAmJiBsaW5lSW5wdXQuZWxsaXBzaXNQb2xpY3kgPT0gTGluZUJ1aWxkZXI6OkxpbmVJbnB1
dDo6TGluZUVuZGluZ0VsbGlwc2lzUG9saWN5OjpXaGVuQ29udGVudE92ZXJmbG93c0luQmxvY2tE
aXJlY3Rpb24pIHx8IGxpbmVJbnB1dC5lbGxpcHNpc1BvbGljeSA9PSBMaW5lQnVpbGRlcjo6TGlu
ZUlucHV0OjpMaW5lRW5kaW5nRWxsaXBzaXNQb2xpY3k6OkFsd2F5czsKLSAgICBhdXRvIGxpbmVO
ZWVkc1RyYWlsaW5nRWxsaXBzaXMgPSBtX2xpbmUuaXNDb250ZW50VHJ1bmNhdGVkKCkgfHwgY29u
dGVudElzVHJ1bmNhdGVkSW5CbG9ja0RpcmVjdGlvbjsKIAogICAgIHJldHVybiB7IGNvbW1pdHRl
ZFJhbmdlCiAgICAgICAgICwgcGFydGlhbE92ZXJmbG93aW5nQ29udGVudApAQCAtMzc2LDcgKzM3
NCw2IEBAIExpbmVCdWlsZGVyOjpMaW5lQ29udGVudCBMaW5lQnVpbGRlcjo6bGF5b3V0SW5saW5l
Q29udGVudChjb25zdCBMaW5lSW5wdXQmIGxpbmVJCiAgICAgICAgICwgbV9saW5lLm5vblNwYW5u
aW5nSW5saW5lTGV2ZWxCb3hDb3VudCgpCiAgICAgICAgICwgY29tcHV0ZWRWaXN1YWxPcmRlciht
X2xpbmUpCiAgICAgICAgICwgaW5saW5lQmFzZURpcmVjdGlvbgotICAgICAgICAsIGxpbmVOZWVk
c1RyYWlsaW5nRWxsaXBzaXMKICAgICAgICAgLCBtX2xpbmUucnVucygpIH07CiB9CiAKQEAgLTM5
MCw3ICszODcsNyBAQCBMaW5lQnVpbGRlcjo6SW50cmluc2ljQ29udGVudCBMaW5lQnVpbGRlcjo6
Y29tcHV0ZWRJbnRyaW5zaWNXaWR0aChjb25zdCBJbmxpbmVJdAogICAgIGluaXRpYWxpemUoaW5p
dGlhbFJlY3QsIGxpbmVDb25zdHJhaW50cywgbmVlZHNMYXlvdXRSYW5nZSwgcHJldmlvdXNMaW5l
KTsKIAogICAgIGF1dG8gY29tbWl0dGVkQ29udGVudCA9IHBsYWNlSW5saW5lQ29udGVudChuZWVk
c0xheW91dFJhbmdlKTsKLSAgICBhdXRvIGNvbW1pdHRlZFJhbmdlID0gY2xvc2UobmVlZHNMYXlv
dXRSYW5nZSwgTGluZUlucHV0OjpMaW5lRW5kaW5nRWxsaXBzaXNQb2xpY3k6Ok5vLCBjb21taXR0
ZWRDb250ZW50KTsKKyAgICBhdXRvIGNvbW1pdHRlZFJhbmdlID0gY2xvc2UobmVlZHNMYXlvdXRS
YW5nZSwgY29tbWl0dGVkQ29udGVudCk7CiAgICAgYXV0byBsaW5lV2lkdGggPSBsaW5lQ29uc3Ry
YWludHMubG9naWNhbFJlY3QubGVmdCgpICsgbGluZUNvbnN0cmFpbnRzLm1hcmdpblN0YXJ0ICsg
bV9saW5lLmNvbnRlbnRMb2dpY2FsV2lkdGgoKTsKICAgICBhdXRvIG92ZXJmbG93ID0gc3RkOjpv
cHRpb25hbDxQYXJ0aWFsQ29udGVudD4geyB9OwogICAgIGlmIChjb21taXR0ZWRDb250ZW50LnBh
cnRpYWxUcmFpbGluZ0NvbnRlbnRMZW5ndGgpCkBAIC01MzksNyArNTM2LDcgQEAgTGluZUJ1aWxk
ZXI6OkNvbW1pdHRlZENvbnRlbnQgTGluZUJ1aWxkZXI6OnBsYWNlSW5saW5lQ29udGVudChjb25z
dCBJbmxpbmVJdGVtUmEKICAgICByZXR1cm4geyBjb21taXR0ZWRJdGVtQ291bnQsIHsgfSB9Owog
fQogCi1MaW5lQnVpbGRlcjo6SW5saW5lSXRlbVJhbmdlIExpbmVCdWlsZGVyOjpjbG9zZShjb25z
dCBJbmxpbmVJdGVtUmFuZ2UmIG5lZWRzTGF5b3V0UmFuZ2UsIExpbmVJbnB1dDo6TGluZUVuZGlu
Z0VsbGlwc2lzUG9saWN5IGVsbGlwc2lzUG9saWN5LCBjb25zdCBDb21taXR0ZWRDb250ZW50JiBj
b21taXR0ZWRDb250ZW50KQorTGluZUJ1aWxkZXI6OklubGluZUl0ZW1SYW5nZSBMaW5lQnVpbGRl
cjo6Y2xvc2UoY29uc3QgSW5saW5lSXRlbVJhbmdlJiBuZWVkc0xheW91dFJhbmdlLCBjb25zdCBD
b21taXR0ZWRDb250ZW50JiBjb21taXR0ZWRDb250ZW50KQogewogICAgIEFTU0VSVChjb21taXR0
ZWRDb250ZW50Lml0ZW1Db3VudCB8fCAhbV9wbGFjZWRGbG9hdHMuaXNFbXB0eSgpIHx8IG1fbGlu
ZUlzQ29uc3RyYWluZWRCeUZsb2F0KTsKICAgICBhdXRvJiByb290U3R5bGUgPSB0aGlzLT5yb290
U3R5bGUoKTsKQEAgLTU4OSw0MSArNTg2LDYgQEAgTGluZUJ1aWxkZXI6OklubGluZUl0ZW1SYW5n
ZSBMaW5lQnVpbGRlcjo6Y2xvc2UoY29uc3QgSW5saW5lSXRlbVJhbmdlJiBuZWVkc0xheW8KICAg
ICAgICAgbGluZUVuZHNXaXRoSHlwaGVuID0gbGFzdFRleHRDb250ZW50ICYmIGxhc3RUZXh0Q29u
dGVudC0+bmVlZHNIeXBoZW47CiAgICAgfQogICAgIG1fc3VjY2Vzc2l2ZUh5cGhlbmF0ZWRMaW5l
Q291bnQgPSBsaW5lRW5kc1dpdGhIeXBoZW4gPyBtX3N1Y2Nlc3NpdmVIeXBoZW5hdGVkTGluZUNv
dW50ICsgMSA6IDA7Ci0KLSAgICBhdXRvIGhhbmRsZUxpbmVFbmRpbmdFbGxpcHNpc1BvbGljeSA9
IFsmXSB7Ci0gICAgICAgIHN3aXRjaCAoZWxsaXBzaXNQb2xpY3kpIHsKLSAgICAgICAgY2FzZSBM
aW5lSW5wdXQ6OkxpbmVFbmRpbmdFbGxpcHNpc1BvbGljeTo6Tm86Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBMaW5lSW5wdXQ6OkxpbmVFbmRpbmdFbGxpcHNpc1BvbGljeTo6V2hl
bkNvbnRlbnRPdmVyZmxvd3NJbklubGluZURpcmVjdGlvbjoKLSAgICAgICAgICAgIGlmIChtX2xp
bmUuY29udGVudExvZ2ljYWxXaWR0aCgpID4gaG9yaXpvbnRhbEF2YWlsYWJsZVNwYWNlKSB7Ci0g
ICAgICAgICAgICAgICAgYXV0byBlbGxpcHNpc1dpZHRoID0gcm9vdFN0eWxlLmZvbnRDYXNjYWRl
KCkud2lkdGgoVGV4dFV0aWw6OmVsbGlwc2lzVGV4dFJ1bigpKTsKLSAgICAgICAgICAgICAgICBh
dXRvIGxvZ2ljYWxSaWdodEZvckNvbnRlbnRXaXRob3V0RWxsaXBzaXMgPSBzdGQ6Om1heCgwLmYs
IGhvcml6b250YWxBdmFpbGFibGVTcGFjZSAtIGVsbGlwc2lzV2lkdGgpOwotICAgICAgICAgICAg
ICAgIG1fbGluZS50cnVuY2F0ZShsb2dpY2FsUmlnaHRGb3JDb250ZW50V2l0aG91dEVsbGlwc2lz
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIExpbmVJ
bnB1dDo6TGluZUVuZGluZ0VsbGlwc2lzUG9saWN5OjpXaGVuQ29udGVudE92ZXJmbG93c0luQmxv
Y2tEaXJlY3Rpb246Ci0gICAgICAgICAgICBpZiAoaXNMYXN0TGluZSkKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIEZBTExUSFJPVUdIOwotICAgICAgICBjYXNlIExpbmVJbnB1
dDo6TGluZUVuZGluZ0VsbGlwc2lzUG9saWN5OjpBbHdheXM6IHsKLSAgICAgICAgICAgIGF1dG8g
YXZhaWxhYmxlU3BhY2VBZnRlckNvbnRlbnQgPSBob3Jpem9udGFsQXZhaWxhYmxlU3BhY2U7Ci0g
ICAgICAgICAgICBpZiAoYXV0byBjb250ZW50TG9naWNhbExlZnQgPSBob3Jpem9udGFsQWxpZ25t
ZW50T2Zmc2V0KGlzTGFzdExpbmUpKSB7Ci0gICAgICAgICAgICAgICAgLy8gQWxpZ25tZW50IG1h
eSBtb3ZlIGNvbnRlbnQgd2l0aGluIHRoZSBsaW5lIGJveCBsZWF2bmlnIGxlc3MgKG9yIHplcm8p
IHNwYWNlIGZvciBlbGxpcHNpcyAoZS5nLiB0ZXh0LWFsaWduOiByaWdodCkuCi0gICAgICAgICAg
ICAgICAgYXZhaWxhYmxlU3BhY2VBZnRlckNvbnRlbnQgLT0gY29udGVudExvZ2ljYWxMZWZ0Owot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgYXV0byBlbGxpcHNpc1dpZHRoID0gcm9vdFN0eWxl
LmZvbnRDYXNjYWRlKCkud2lkdGgoVGV4dFV0aWw6OmVsbGlwc2lzVGV4dFJ1bigpKTsKLSAgICAg
ICAgICAgIGlmIChtX2xpbmUuY29udGVudExvZ2ljYWxXaWR0aCgpICYmIG1fbGluZS5jb250ZW50
TG9naWNhbFdpZHRoKCkgKyBlbGxpcHNpc1dpZHRoID4gYXZhaWxhYmxlU3BhY2VBZnRlckNvbnRl
bnQpIHsKLSAgICAgICAgICAgICAgICBhdXRvIGxvZ2ljYWxSaWdodEZvckNvbnRlbnRXaXRob3V0
RWxsaXBzaXMgPSBzdGQ6Om1heCgwLmYsIGF2YWlsYWJsZVNwYWNlQWZ0ZXJDb250ZW50IC0gZWxs
aXBzaXNXaWR0aCk7Ci0gICAgICAgICAgICAgICAgbV9saW5lLnRydW5jYXRlKGxvZ2ljYWxSaWdo
dEZvckNvbnRlbnRXaXRob3V0RWxsaXBzaXMpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9OwotICAg
IGhhbmRsZUxpbmVFbmRpbmdFbGxpcHNpc1BvbGljeSgpOwogICAgIHJldHVybiBsaW5lUmFuZ2U7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQnVpbGRlci5oCmluZGV4IDQ4NjExZDU0
MWRmOC4uNjE2YjdmNDY4MmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQnVpbGRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVy
LmgKQEAgLTQyLDYgKzQyLDE0IEBAIHB1YmxpYzoKICAgICBMaW5lQnVpbGRlcihJbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dCYsIEJsb2NrTGF5b3V0U3RhdGUmLCBIb3Jpem9udGFsQ29uc3RyYWludHMg
cm9vdEhvcml6b250YWxDb25zdHJhaW50cywgY29uc3QgSW5saW5lSXRlbXMmLCBzdGQ6Om9wdGlv
bmFsPEludHJpbnNpY1dpZHRoTW9kZT4gPSBzdGQ6Om51bGxvcHQpOwogICAgIExpbmVCdWlsZGVy
KGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0JiwgY29uc3QgSW5saW5lSXRlbXMmLCBzdGQ6
Om9wdGlvbmFsPEludHJpbnNpY1dpZHRoTW9kZT4pOwogCisgICAgZW51bSBjbGFzcyBMaW5lRW5k
aW5nRWxsaXBzaXNQb2xpY3kgOiB1aW50OF90IHsKKyAgICAgICAgTm8sCisgICAgICAgIFdoZW5D
b250ZW50T3ZlcmZsb3dzSW5JbmxpbmVEaXJlY3Rpb24sCisgICAgICAgIFdoZW5Db250ZW50T3Zl
cmZsb3dzSW5CbG9ja0RpcmVjdGlvbiwKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJl
IHVzZWQgd2hlbiB3ZSByZWFsaXplIHRoZSBsYXN0IGxpbmUgb2YgdGhpcyBJRkMgaXMgd2hlcmUg
dGhlIGNvbnRlbnQgaXMgdHJ1bmNhdGVkIChzaWJsaW5nIElGQyBoYXMgbW9yZSBsaW5lcykuCisg
ICAgICAgIEFsd2F5cworICAgIH07CisKICAgICBzdHJ1Y3QgSW5saW5lSXRlbVJhbmdlIHsKICAg
ICAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gc3RhcnQgPT0gZW5kOyB9CiAgICAg
ICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gZW5kIC0gc3RhcnQ7IH0KQEAgLTUxLDE1
ICs1OSw2IEBAIHB1YmxpYzoKICAgICBzdHJ1Y3QgTGluZUlucHV0IHsKICAgICAgICAgSW5saW5l
SXRlbVJhbmdlIG5lZWRzTGF5b3V0UmFuZ2U7CiAgICAgICAgIElubGluZVJlY3QgaW5pdGlhbExv
Z2ljYWxSZWN0OwotCi0gICAgICAgIGVudW0gY2xhc3MgTGluZUVuZGluZ0VsbGlwc2lzUG9saWN5
IDogdWludDhfdCB7Ci0gICAgICAgICAgICBObywKLSAgICAgICAgICAgIFdoZW5Db250ZW50T3Zl
cmZsb3dzSW5JbmxpbmVEaXJlY3Rpb24sCi0gICAgICAgICAgICBXaGVuQ29udGVudE92ZXJmbG93
c0luQmxvY2tEaXJlY3Rpb24sCi0gICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUg
dXNlZCB3aGVuIHdlIHJlYWxpemUgdGhlIGxhc3QgbGluZSBvZiB0aGlzIElGQyBpcyB3aGVyZSB0
aGUgY29udGVudCBpcyB0cnVuY2F0ZWQgKHNpYmxpbmcgSUZDIGhhcyBtb3JlIGxpbmVzKS4KLSAg
ICAgICAgICAgIEFsd2F5cwotICAgICAgICB9OwotICAgICAgICBMaW5lRW5kaW5nRWxsaXBzaXNQ
b2xpY3kgZWxsaXBzaXNQb2xpY3kgeyBMaW5lRW5kaW5nRWxsaXBzaXNQb2xpY3k6Ok5vIH07CiAg
ICAgfTsKICAgICBzdHJ1Y3QgUGFydGlhbENvbnRlbnQgewogICAgICAgICBQYXJ0aWFsQ29udGVu
dChzaXplX3QsIHN0ZDo6b3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4pOwpAQCAtMTA0LDcgKzEw
Myw2IEBAIHB1YmxpYzoKICAgICAgICAgc2l6ZV90IG5vblNwYW5uaW5nSW5saW5lTGV2ZWxCb3hD
b3VudCB7IDAgfTsKICAgICAgICAgVmVjdG9yPGludDMyX3Q+IHZpc3VhbE9yZGVyTGlzdDsKICAg
ICAgICAgVGV4dERpcmVjdGlvbiBpbmxpbmVCYXNlRGlyZWN0aW9uIHsgVGV4dERpcmVjdGlvbjo6
TFRSIH07Ci0gICAgICAgIGJvb2wgbGluZU5lZWRzVHJhaWxpbmdFbGxpcHNpcyB7IGZhbHNlIH07
CiAgICAgICAgIGNvbnN0IExpbmU6OlJ1bkxpc3QmIHJ1bnM7CiAgICAgfTsKICAgICBMaW5lQ29u
dGVudCBsYXlvdXRJbmxpbmVDb250ZW50KGNvbnN0IExpbmVJbnB1dCYsIGNvbnN0IHN0ZDo6b3B0
aW9uYWw8UHJldmlvdXNMaW5lPiYpOwpAQCAtMTU2LDcgKzE1NCw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4gb3ZlcmZsb3dMb2dpY2FsV2lkdGgg
eyB9OwogICAgIH07CiAgICAgQ29tbWl0dGVkQ29udGVudCBwbGFjZUlubGluZUNvbnRlbnQoY29u
c3QgSW5saW5lSXRlbVJhbmdlJik7Ci0gICAgSW5saW5lSXRlbVJhbmdlIGNsb3NlKGNvbnN0IElu
bGluZUl0ZW1SYW5nZSYgbmVlZHNMYXlvdXRSYW5nZSwgTGluZUlucHV0OjpMaW5lRW5kaW5nRWxs
aXBzaXNQb2xpY3ksIGNvbnN0IENvbW1pdHRlZENvbnRlbnQmKTsKKyAgICBJbmxpbmVJdGVtUmFu
Z2UgY2xvc2UoY29uc3QgSW5saW5lSXRlbVJhbmdlJiBuZWVkc0xheW91dFJhbmdlLCBjb25zdCBD
b21taXR0ZWRDb250ZW50Jik7CiAKICAgICBJbmxpbmVMYXlvdXRVbml0IGlubGluZUl0ZW1XaWR0
aChjb25zdCBJbmxpbmVJdGVtJiwgSW5saW5lTGF5b3V0VW5pdCBjb250ZW50TG9naWNhbExlZnQp
IGNvbnN0OwogICAgIGJvb2wgaXNMYXN0TGluZVdpdGhJbmxpbmVDb250ZW50KGNvbnN0IElubGlu
ZUl0ZW1SYW5nZSYgbGluZVJhbmdlLCBzaXplX3QgbGFzdElubGluZUl0ZW1JbmRleCwgYm9vbCBo
YXNQYXJ0aWFsVHJhaWxpbmdDb250ZW50KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxh
eUJveC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
ZGlzcGxheS9JbmxpbmVEaXNwbGF5Qm94LmgKaW5kZXggZDg3MTA5ZDUzYmMxLi45ZTQ4MzA0YTc4
OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUJveC5o
CkBAIC0zOSw3ICszOSw3IEBAIHN0cnVjdCBCb3ggewogICAgIHN0cnVjdCBUZXh0IHsKICAgICAg
ICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKLSAgICAgICAg
VGV4dChzaXplX3QgcG9zaXRpb24sIHNpemVfdCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgb3JpZ2lu
YWxDb250ZW50LCBTdHJpbmcgYWRqdXN0ZWRDb250ZW50VG9SZW5kZXIgPSBTdHJpbmcoKSwgYm9v
bCBoYXNIeXBoZW4gPSBmYWxzZSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHBhcnRpYWxseVZpc2li
bGVDb250ZW50TGVuZ3RoID0gc3RkOjpudWxsb3B0KTsKKyAgICAgICAgVGV4dChzaXplX3QgcG9z
aXRpb24sIHNpemVfdCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxDb250ZW50LCBTdHJp
bmcgYWRqdXN0ZWRDb250ZW50VG9SZW5kZXIgPSBTdHJpbmcoKSwgYm9vbCBoYXNIeXBoZW4gPSBm
YWxzZSk7CiAKICAgICAgICAgc2l6ZV90IHN0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9zdGFydDsg
fQogICAgICAgICBzaXplX3QgZW5kKCkgY29uc3QgeyByZXR1cm4gc3RhcnQoKSArIGxlbmd0aCgp
OyB9CkBAIC01MCw2ICs1MCw4IEBAIHN0cnVjdCBCb3ggewogCiAgICAgICAgIGJvb2wgaGFzSHlw
aGVuKCkgY29uc3QgeyByZXR1cm4gbV9oYXNIeXBoZW47IH0KIAorICAgICAgICB2b2lkIHNldFBh
cnRpYWxseVZpc2libGVDb250ZW50TGVuZ3RoKHNpemVfdCB0cnVuY2F0ZWRMZW5ndGgpIHsgbV9w
YXJ0aWFsbHlWaXNpYmxlQ29udGVudExlbmd0aCA9IHRydW5jYXRlZExlbmd0aDsgfQorCiAgICAg
cHJpdmF0ZToKICAgICAgICAgZnJpZW5kIHN0cnVjdCBCb3g7CiAKQEAgLTc3LDcgKzc5LDcgQEAg
c3RydWN0IEJveCB7CiAgICAgICAgIEZpcnN0ID0gMSA8PCAwLAogICAgICAgICBMYXN0ICA9IDEg
PDwgMQogICAgIH07Ci0gICAgQm94KHNpemVfdCBsaW5lSW5kZXgsIFR5cGUsIGNvbnN0IExheW91
dDo6Qm94JiwgVUJpRGlMZXZlbCwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiBp
bmtPdmVyZmxvdywgRXhwYW5zaW9uLCBzdGQ6Om9wdGlvbmFsPFRleHQ+ID0gc3RkOjpudWxsb3B0
LCBib29sIGhhc0NvbnRlbnQgPSB0cnVlLCBib29sIGlzRnVsbHlUcnVuY2F0ZWQgPSBmYWxzZSwg
T3B0aW9uU2V0PFBvc2l0aW9uV2l0aGluSW5saW5lTGV2ZWxCb3g+ID0geyB9KTsKKyAgICBCb3go
c2l6ZV90IGxpbmVJbmRleCwgVHlwZSwgY29uc3QgTGF5b3V0OjpCb3gmLCBVQmlEaUxldmVsLCBj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmIGlua092ZXJmbG93LCBFeHBhbnNpb24s
IHN0ZDo6b3B0aW9uYWw8VGV4dD4gPSBzdGQ6Om51bGxvcHQsIGJvb2wgaGFzQ29udGVudCA9IHRy
dWUsIE9wdGlvblNldDxQb3NpdGlvbldpdGhpbklubGluZUxldmVsQm94PiA9IHsgfSk7CiAKICAg
ICBib29sIGlzVGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBUeXBlOjpUZXh0IHx8IGlz
V29yZFNlcGFyYXRvcigpOyB9CiAgICAgYm9vbCBpc1dvcmRTZXBhcmF0b3IoKSBjb25zdCB7IHJl
dHVybiBtX3R5cGUgPT0gVHlwZTo6V29yZFNlcGFyYXRvcjsgfQpAQCAtMTI0LDExICsxMjYsMTIg
QEAgc3RydWN0IEJveCB7CiAgICAgICAgIG1fdW5mbGlwcGVkVmlzdWFsUmVjdC5tb3ZlKHsgb2Zm
c2V0LCB7IH0gfSk7CiAgICAgICAgIG1faW5rT3ZlcmZsb3cubW92ZSh7IG9mZnNldCwgeyB9IH0p
OwogICAgIH0KKwogICAgIHZvaWQgYWRqdXN0SW5rT3ZlcmZsb3coY29uc3QgRmxvYXRSZWN0JiBj
aGlsZEJvcmRlckJveCkgeyByZXR1cm4gbV9pbmtPdmVyZmxvdy51bml0ZUV2ZW5JZkVtcHR5KGNo
aWxkQm9yZGVyQm94KTsgfQotICAgIHZvaWQgc2V0TGVmdChmbG9hdCBweXNpY2FsTGVmdCkKKyAg
ICB2b2lkIHNldExlZnQoZmxvYXQgcGh5c2ljYWxMZWZ0KQogICAgIHsKLSAgICAgICAgYXV0byBv
ZmZzZXQgPSBweXNpY2FsTGVmdCAtIGxlZnQoKTsKLSAgICAgICAgbV91bmZsaXBwZWRWaXN1YWxS
ZWN0LnNldFgocHlzaWNhbExlZnQpOworICAgICAgICBhdXRvIG9mZnNldCA9IHBoeXNpY2FsTGVm
dCAtIGxlZnQoKTsKKyAgICAgICAgbV91bmZsaXBwZWRWaXN1YWxSZWN0LnNldFgocGh5c2ljYWxM
ZWZ0KTsKICAgICAgICAgbV9pbmtPdmVyZmxvdy5zZXRYKG1faW5rT3ZlcmZsb3cueCgpICsgb2Zm
c2V0KTsKICAgICB9CiAgICAgdm9pZCBzZXRSaWdodChmbG9hdCBwaHlzaWNhbFJpZ2h0KQpAQCAt
MTU1LDYgKzE1OCw3IEBAIHN0cnVjdCBCb3ggewogICAgICAgICBtX2lua092ZXJmbG93ID0gaW5r
T3ZlcmZsb3c7CiAgICAgfQogICAgIHZvaWQgc2V0SGFzQ29udGVudCgpIHsgbV9oYXNDb250ZW50
ID0gdHJ1ZTsgfQorICAgIHZvaWQgc2V0SXNGdWxseVRydW5jYXRlZCgpIHsgbV9pc0Z1bGx5VHJ1
bmNhdGVkID0gdHJ1ZTsgfQogCiAgICAgc3RkOjpvcHRpb25hbDxUZXh0PiYgdGV4dCgpIHsgcmV0
dXJuIG1fdGV4dDsgfQogICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8VGV4dD4mIHRleHQoKSBjb25z
dCB7IHJldHVybiBtX3RleHQ7IH0KQEAgLTE5Miw3ICsxOTYsNyBAQCBwcml2YXRlOgogICAgIHN0
ZDo6b3B0aW9uYWw8VGV4dD4gbV90ZXh0OwogfTsKIAotaW5saW5lIEJveDo6Qm94KHNpemVfdCBs
aW5lSW5kZXgsIFR5cGUgdHlwZSwgY29uc3QgTGF5b3V0OjpCb3gmIGxheW91dEJveCwgVUJpRGlM
ZXZlbCBiaWRpTGV2ZWwsIGNvbnN0IEZsb2F0UmVjdCYgcGh5c2ljYWxSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIGlua092ZXJmbG93LCBFeHBhbnNpb24gZXhwYW5zaW9uLCBzdGQ6Om9wdGlvbmFsPFRl
eHQ+IHRleHQsIGJvb2wgaGFzQ29udGVudCwgYm9vbCBpc0Z1bGx5VHJ1bmNhdGVkLCBPcHRpb25T
ZXQ8UG9zaXRpb25XaXRoaW5JbmxpbmVMZXZlbEJveD4gcG9zaXRpb25XaXRoaW5JbmxpbmVMZXZl
bEJveCkKK2lubGluZSBCb3g6OkJveChzaXplX3QgbGluZUluZGV4LCBUeXBlIHR5cGUsIGNvbnN0
IExheW91dDo6Qm94JiBsYXlvdXRCb3gsIFVCaURpTGV2ZWwgYmlkaUxldmVsLCBjb25zdCBGbG9h
dFJlY3QmIHBoeXNpY2FsUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBpbmtPdmVyZmxvdywgRXhwYW5z
aW9uIGV4cGFuc2lvbiwgc3RkOjpvcHRpb25hbDxUZXh0PiB0ZXh0LCBib29sIGhhc0NvbnRlbnQs
IE9wdGlvblNldDxQb3NpdGlvbldpdGhpbklubGluZUxldmVsQm94PiBwb3NpdGlvbldpdGhpbklu
bGluZUxldmVsQm94KQogICAgIDogbV9saW5lSW5kZXgobGluZUluZGV4KQogICAgICwgbV90eXBl
KHR5cGUpCiAgICAgLCBtX2xheW91dEJveChsYXlvdXRCb3gpCkBAIC0yMDIsMTYgKzIwNiwxNSBA
QCBpbmxpbmUgQm94OjpCb3goc2l6ZV90IGxpbmVJbmRleCwgVHlwZSB0eXBlLCBjb25zdCBMYXlv
dXQ6OkJveCYgbGF5b3V0Qm94LCBVQmlEaQogICAgICwgbV9oYXNDb250ZW50KGhhc0NvbnRlbnQp
CiAgICAgLCBtX2lzRmlyc3RGb3JMYXlvdXRCb3gocG9zaXRpb25XaXRoaW5JbmxpbmVMZXZlbEJv
eC5jb250YWlucyhQb3NpdGlvbldpdGhpbklubGluZUxldmVsQm94OjpGaXJzdCkpCiAgICAgLCBt
X2lzTGFzdEZvckxheW91dEJveChwb3NpdGlvbldpdGhpbklubGluZUxldmVsQm94LmNvbnRhaW5z
KFBvc2l0aW9uV2l0aGluSW5saW5lTGV2ZWxCb3g6Okxhc3QpKQotICAgICwgbV9pc0Z1bGx5VHJ1
bmNhdGVkKGlzRnVsbHlUcnVuY2F0ZWQpCisgICAgLCBtX2lzRnVsbHlUcnVuY2F0ZWQoZmFsc2Up
CiAgICAgLCBtX2V4cGFuc2lvbihleHBhbnNpb24pCiAgICAgLCBtX3RleHQodGV4dCkKIHsKIH0K
IAotaW5saW5lIEJveDo6VGV4dDo6VGV4dChzaXplX3Qgc3RhcnQsIHNpemVfdCBsZW5ndGgsIGNv
bnN0IFN0cmluZyYgb3JpZ2luYWxDb250ZW50LCBTdHJpbmcgYWRqdXN0ZWRDb250ZW50VG9SZW5k
ZXIsIGJvb2wgaGFzSHlwaGVuLCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gcGFydGlhbGx5VmlzaWJs
ZUNvbnRlbnRMZW5ndGgpCitpbmxpbmUgQm94OjpUZXh0OjpUZXh0KHNpemVfdCBzdGFydCwgc2l6
ZV90IGxlbmd0aCwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbENvbnRlbnQsIFN0cmluZyBhZGp1c3Rl
ZENvbnRlbnRUb1JlbmRlciwgYm9vbCBoYXNIeXBoZW4pCiAgICAgOiBtX3N0YXJ0KHN0YXJ0KQog
ICAgICwgbV9sZW5ndGgobGVuZ3RoKQotICAgICwgbV9wYXJ0aWFsbHlWaXNpYmxlQ29udGVudExl
bmd0aChwYXJ0aWFsbHlWaXNpYmxlQ29udGVudExlbmd0aCkKICAgICAsIG1faGFzSHlwaGVuKGhh
c0h5cGhlbikKICAgICAsIG1fb3JpZ2luYWxDb250ZW50KG9yaWdpbmFsQ29udGVudCkKICAgICAs
IG1fYWRqdXN0ZWRDb250ZW50VG9SZW5kZXIoYWRqdXN0ZWRDb250ZW50VG9SZW5kZXIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9k
aXNwbGF5L0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlDb250
ZW50QnVpbGRlci5jcHAKaW5kZXggYWQ5OWU1N2JhNzBhLi4yY2IxOWVjNGIxY2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3Bs
YXkvSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlDb250
ZW50QnVpbGRlci5jcHAKQEAgLTIyMiw5ICsyMjIsNiBAQCB2b2lkIElubGluZURpc3BsYXlDb250
ZW50QnVpbGRlcjo6YXBwZW5kVGV4dERpc3BsYXlCb3goY29uc3QgTGluZTo6UnVuJiBsaW5lUnVu
LAogICAgIGF1dG8gYWRqdXN0ZWRDb250ZW50VG9SZW5kZXIgPSBbJl0gewogICAgICAgICByZXR1
cm4gdGV4dC0+bmVlZHNIeXBoZW4gPyBtYWtlU3RyaW5nKFN0cmluZ1ZpZXcoY29udGVudCkuc3Vi
c3RyaW5nKHRleHQtPnN0YXJ0LCB0ZXh0LT5sZW5ndGgpLCBzdHlsZS5oeXBoZW5TdHJpbmcoKSkg
OiBTdHJpbmcoKTsKICAgICB9OwotICAgIGF1dG8gaXNGdWxseVRydW5jYXRlZCA9IGxpbmVSdW4u
aXNUcnVuY2F0ZWQoKSAmJiAhdGV4dC0+cGFydGlhbGx5VmlzaWJsZUNvbnRlbnQ7Ci0gICAgYXV0
byBwYXJ0aWFsbHlWaXNpYmxlQ29udGVudExlbmd0aCA9ICFpc0Z1bGx5VHJ1bmNhdGVkICYmIHRl
eHQtPnBhcnRpYWxseVZpc2libGVDb250ZW50ID8gc3RkOjptYWtlX29wdGlvbmFsKHRleHQtPnBh
cnRpYWxseVZpc2libGVDb250ZW50LT5sZW5ndGgpOiBzdGQ6Om51bGxvcHQ7Ci0KICAgICBib3hl
cy5hcHBlbmQoeyBtX2xpbmVJbmRleAogICAgICAgICAsIGxpbmVSdW4uaXNXb3JkU2VwYXJhdG9y
KCkgPyBJbmxpbmVEaXNwbGF5OjpCb3g6OlR5cGU6OldvcmRTZXBhcmF0b3IgOiBJbmxpbmVEaXNw
bGF5OjpCb3g6OlR5cGU6OlRleHQKICAgICAgICAgLCBpbmxpbmVUZXh0Qm94CkBAIC0yMzIsOSAr
MjI5LDggQEAgdm9pZCBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OmFwcGVuZFRleHREaXNw
bGF5Qm94KGNvbnN0IExpbmU6OlJ1biYgbGluZVJ1biwKICAgICAgICAgLCB0ZXh0UnVuUmVjdAog
ICAgICAgICAsIGlua092ZXJmbG93KCkKICAgICAgICAgLCBsaW5lUnVuLmV4cGFuc2lvbigpCi0g
ICAgICAgICwgSW5saW5lRGlzcGxheTo6Qm94OjpUZXh0IHsgdGV4dC0+c3RhcnQsIHRleHQtPmxl
bmd0aCwgY29udGVudCwgYWRqdXN0ZWRDb250ZW50VG9SZW5kZXIoKSwgdGV4dC0+bmVlZHNIeXBo
ZW4sIHBhcnRpYWxseVZpc2libGVDb250ZW50TGVuZ3RoIH0KKyAgICAgICAgLCBJbmxpbmVEaXNw
bGF5OjpCb3g6OlRleHQgeyB0ZXh0LT5zdGFydCwgdGV4dC0+bGVuZ3RoLCBjb250ZW50LCBhZGp1
c3RlZENvbnRlbnRUb1JlbmRlcigpLCB0ZXh0LT5uZWVkc0h5cGhlbiB9CiAgICAgICAgICwgdHJ1
ZQotICAgICAgICAsIGlzRnVsbHlUcnVuY2F0ZWQKICAgICAgICAgLCB7IH0KICAgICB9KTsKIH0K
QEAgLTI5OSw3ICsyOTUsNiBAQCB2b2lkIElubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6YXBw
ZW5kQXRvbWljSW5saW5lTGV2ZWxEaXNwbGF5Qm94KGNvbnN0IExpbmU6OgogICAgICAgICAsIGxp
bmVSdW4uZXhwYW5zaW9uKCkKICAgICAgICAgLCB7IH0KICAgICAgICAgLCB0cnVlCi0gICAgICAg
ICwgbGluZVJ1bi5pc1RydW5jYXRlZCgpCiAgICAgfSk7CiAgICAgLy8gTm90ZSB0aGF0IGlubGlu
ZSBib3hlcyBhcmUgcmVsYXRpdmUgdG8gdGhlIGxpbmUgYW5kIHRoZWlyIHRvcCBwb3NpdGlvbiBj
YW4gYmUgbmVnYXRpdmUuCiAgICAgLy8gQXRvbWljIGlubGluZSBib3hlcyBhcmUgYWxsIHNldC4g
VGhlaXIgbWFyZ2luL2JvcmRlci9jb250ZW50IGJveCBnZW9tZXRyaWVzIGFyZSBhbHJlYWR5IGNv
bXB1dGVkLiBXZSBqdXN0IGhhdmUgdG8gcG9zaXRpb24gdGhlbSBoZXJlLgpAQCAtMzY4LDcgKzM2
Myw2IEBAIHZvaWQgSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyOjphcHBlbmRJbmxpbmVCb3hE
aXNwbGF5Qm94KGNvbnN0IExpbmU6OlJ1biYgbGluCiAgICAgICAgICwgeyB9CiAgICAgICAgICwg
eyB9CiAgICAgICAgICwgaW5saW5lQm94Lmhhc0NvbnRlbnQoKQotICAgICAgICAsIGxpbmVSdW4u
aXNUcnVuY2F0ZWQoKQogICAgICAgICAsIGlzRmlyc3RMYXN0Qm94KGlubGluZUJveCkKICAgICB9
KTsKIH0KQEAgLTQwNSw3ICszOTksNiBAQCB2b2lkIElubGluZURpc3BsYXlDb250ZW50QnVpbGRl
cjo6YXBwZW5kU3Bhbm5pbmdJbmxpbmVCb3hEaXNwbGF5Qm94KGNvbnN0IExpbmU6OgogICAgICAg
ICAsIHsgfQogICAgICAgICAsIHsgfQogICAgICAgICAsIGlubGluZUJveC5oYXNDb250ZW50KCkK
LSAgICAgICAgLCBsaW5lUnVuLmlzVHJ1bmNhdGVkKCkKICAgICAgICAgLCBpc0ZpcnN0TGFzdEJv
eChpbmxpbmVCb3gpCiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlDb250ZW50
QnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuaAppbmRleCBjZmUxMzQyYTUx
ZjUuLmM3Mzk3M2NiOWRmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9k
aXNwbGF5L0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5oCkBAIC01NCw2ICs1NCw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBwcm9jZXNzRmxvYXRCb3hlcyhjb25zdCBMaW5lQnVpbGRlcjo6TGlu
ZUNvbnRlbnQmKTsKICAgICB2b2lkIGNvbGxlY3RJbmtPdmVyZmxvd0ZvcklubGluZUJveGVzKERp
c3BsYXlCb3hlcyYpOwogICAgIHZvaWQgY29sbGVjdElua092ZXJmbG93Rm9yVGV4dERlY29yYXRp
b25zKERpc3BsYXlCb3hlcyYsIGNvbnN0IElubGluZURpc3BsYXk6OkxpbmUmKTsKKyAgICB2b2lk
IHRydW5jYXRlRm9yRWxsaXBzaXNQb2xpY3koTGluZUJ1aWxkZXI6OkxpbmVFbmRpbmdFbGxpcHNp
c1BvbGljeSwgY29uc3QgTGluZUJ1aWxkZXI6OkxpbmVDb250ZW50JiwgY29uc3QgSW5saW5lRGlz
cGxheTo6TGluZSYsIERpc3BsYXlCb3hlcyYpOwogCiAgICAgdm9pZCBhcHBlbmRUZXh0RGlzcGxh
eUJveChjb25zdCBMaW5lOjpSdW4mLCBjb25zdCBJbmxpbmVSZWN0JiwgRGlzcGxheUJveGVzJik7
CiAgICAgdm9pZCBhcHBlbmRTb2Z0TGluZUJyZWFrRGlzcGxheUJveChjb25zdCBMaW5lOjpSdW4m
LCBjb25zdCBJbmxpbmVSZWN0JiwgRGlzcGxheUJveGVzJik7CkBAIC03Nyw2ICs3OCw3IEBAIHBy
aXZhdGU6CiAgICAgSW5saW5lTGF5b3V0VW5pdCBvdXRzaWRlTGlzdE1hcmtlclZpc3VhbFBvc2l0
aW9uKGNvbnN0IEVsZW1lbnRCb3gmLCBjb25zdCBJbmxpbmVEaXNwbGF5OjpMaW5lJikgY29uc3Q7
CiAKICAgICBjb25zdCBFbGVtZW50Qm94JiByb290KCkgY29uc3QgeyByZXR1cm4gZm9ybWF0dGlu
Z0NvbnRleHQoKS5yb290KCk7IH0KKyAgICBjb25zdCBSZW5kZXJTdHlsZSYgcm9vdFN0eWxlKCkg
Y29uc3QgeyByZXR1cm4gbV9saW5lSW5kZXggPyByb290KCkuc3R5bGUoKSA6IHJvb3QoKS5maXJz
dExpbmVTdHlsZSgpOyB9CiAgICAgY29uc3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQmIGZvcm1h
dHRpbmdDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9mb3JtYXR0aW5nQ29udGV4dDsgfQogICAg
IGNvbnN0IElubGluZUZvcm1hdHRpbmdHZW9tZXRyeSYgZm9ybWF0dGluZ0dlb21ldHJ5KCkgY29u
c3QgeyByZXR1cm4gZm9ybWF0dGluZ0NvbnRleHQoKS5mb3JtYXR0aW5nR2VvbWV0cnkoKTsgfQog
ICAgIElubGluZUZvcm1hdHRpbmdTdGF0ZSYgZm9ybWF0dGluZ1N0YXRlKCkgY29uc3QgeyByZXR1
cm4gbV9mb3JtYXR0aW5nU3RhdGU7IH0gCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlMaW5lLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5
L0lubGluZURpc3BsYXlMaW5lLmgKaW5kZXggNmI2YTRlODgyMGFiLi40MmU0ODVjNjg4YmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L2Rpc3BsYXkvSW5saW5lRGlzcGxheUxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlMaW5lLmgKQEAg
LTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgICAgICBmbG9hdCB0b3AgeyAwIH07CiAgICAgICAg
IGZsb2F0IGJvdHRvbSB7IDAgfTsKICAgICB9OwotICAgIExpbmUoY29uc3QgRmxvYXRSZWN0JiBs
aW5lQm94TG9naWNhbFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgbGluZUJveFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc2Nyb2xsYWJsZU92ZXJmbG93LCBFbmNsb3NpbmdUb3BBbmRCb3R0b20sIGZsb2F0
IGFsaWdtZW50QmFzZWxpbmUsIEZvbnRCYXNlbGluZSBiYXNlbGluZVR5cGUsIGZsb2F0IGNvbnRl
bnRMb2dpY2FsTGVmdCwgZmxvYXQgY29udGVudExvZ2ljYWxMZWZ0SWdub3JpbmdJbmxpbmVEaXJl
Y3Rpb24sIGZsb2F0IGNvbnRlbnRMb2dpY2FsV2lkdGgsIGJvb2wgaXNIb3Jpem9udGFsLCBzdGQ6
Om9wdGlvbmFsPEZsb2F0UmVjdD4gZWxsaXBzaXNWaXN1YWxSZWN0KTsKKyAgICBMaW5lKGNvbnN0
IEZsb2F0UmVjdCYgbGluZUJveExvZ2ljYWxSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGxpbmVCb3hS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNjcm9sbGFibGVPdmVyZmxvdywgRW5jbG9zaW5nVG9wQW5k
Qm90dG9tLCBmbG9hdCBhbGlnbWVudEJhc2VsaW5lLCBGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBl
LCBmbG9hdCBjb250ZW50TG9naWNhbExlZnQsIGZsb2F0IGNvbnRlbnRMb2dpY2FsTGVmdElnbm9y
aW5nSW5saW5lRGlyZWN0aW9uLCBmbG9hdCBjb250ZW50TG9naWNhbFdpZHRoLCBib29sIGlzSG9y
aXpvbnRhbCk7CiAKICAgICBmbG9hdCBsZWZ0KCkgY29uc3QgeyByZXR1cm4gbV9saW5lQm94UmVj
dC54KCk7IH0KICAgICBmbG9hdCByaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fbGluZUJveFJlY3Qu
bWF4WCgpOyB9CkBAIC02Nyw2ICs2Nyw3IEBAIHB1YmxpYzoKICAgICBmbG9hdCBjb250ZW50TG9n
aWNhbFdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50TG9naWNhbFdpZHRoOyB9CiAKICAg
ICB2b2lkIG1vdmVWZXJ0aWNhbGx5KGZsb2F0IG9mZnNldCkgeyBtX2xpbmVCb3hSZWN0Lm1vdmUo
eyB7IH0sIG9mZnNldCB9KTsgfQorICAgIHZvaWQgc2V0RWxsaXBzaXNWaXN1YWxSZWN0KGNvbnN0
IEZsb2F0UmVjdCYgZWxsaXBzaXNWaXN1YWxSZWN0KSB7IG1fZWxsaXBzaXNWaXN1YWxSZWN0ID0g
ZWxsaXBzaXNWaXN1YWxSZWN0OyB9CiAKIHByaXZhdGU6CiAgICAgLy8gVGhpcyBpcyBsaW5lIGJv
eCBnZW9tZXRyeSAoc2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3MtaW5saW5lLTMvI2xpbmUt
Ym94KS4KQEAgLTg4LDcgKzg5LDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0
UmVjdD4gbV9lbGxpcHNpc1Zpc3VhbFJlY3QgeyB9OwogfTsKIAotaW5saW5lIExpbmU6OkxpbmUo
Y29uc3QgRmxvYXRSZWN0JiBsaW5lQm94TG9naWNhbFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgbGlu
ZUJveFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc2Nyb2xsYWJsZU92ZXJmbG93LCBFbmNsb3NpbmdU
b3BBbmRCb3R0b20gZW5jbG9zaW5nTG9naWNhbFRvcEFuZEJvdHRvbSwgZmxvYXQgYWxpZ21lbnRC
YXNlbGluZSwgRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSwgZmxvYXQgY29udGVudExvZ2ljYWxM
ZWZ0LCBmbG9hdCBjb250ZW50TG9naWNhbExlZnRJZ25vcmluZ0lubGluZURpcmVjdGlvbiwgZmxv
YXQgY29udGVudExvZ2ljYWxXaWR0aCwgYm9vbCBpc0hvcml6b250YWwsIHN0ZDo6b3B0aW9uYWw8
RmxvYXRSZWN0PiBlbGxpcHNpc1Zpc3VhbFJlY3QpCitpbmxpbmUgTGluZTo6TGluZShjb25zdCBG
bG9hdFJlY3QmIGxpbmVCb3hMb2dpY2FsUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBsaW5lQm94UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzY3JvbGxhYmxlT3ZlcmZsb3csIEVuY2xvc2luZ1RvcEFuZEJv
dHRvbSBlbmNsb3NpbmdMb2dpY2FsVG9wQW5kQm90dG9tLCBmbG9hdCBhbGlnbWVudEJhc2VsaW5l
LCBGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlLCBmbG9hdCBjb250ZW50TG9naWNhbExlZnQsIGZs
b2F0IGNvbnRlbnRMb2dpY2FsTGVmdElnbm9yaW5nSW5saW5lRGlyZWN0aW9uLCBmbG9hdCBjb250
ZW50TG9naWNhbFdpZHRoLCBib29sIGlzSG9yaXpvbnRhbCkKICAgICA6IG1fbGluZUJveFJlY3Qo
bGluZUJveFJlY3QpCiAgICAgLCBtX2xpbmVCb3hMb2dpY2FsUmVjdChsaW5lQm94TG9naWNhbFJl
Y3QpCiAgICAgLCBtX3Njcm9sbGFibGVPdmVyZmxvdyhzY3JvbGxhYmxlT3ZlcmZsb3cpCkBAIC05
OSw3ICsxMDAsNiBAQCBpbmxpbmUgTGluZTo6TGluZShjb25zdCBGbG9hdFJlY3QmIGxpbmVCb3hM
b2dpY2FsUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBsaW5lQm94UgogICAgICwgbV9jb250ZW50TG9n
aWNhbFdpZHRoKGNvbnRlbnRMb2dpY2FsV2lkdGgpCiAgICAgLCBtX2Jhc2VsaW5lVHlwZShiYXNl
bGluZVR5cGUpCiAgICAgLCBtX2lzSG9yaXpvbnRhbChpc0hvcml6b250YWwpCi0gICAgLCBtX2Vs
bGlwc2lzVmlzdWFsUmVjdChlbGxpcHNpc1Zpc3VhbFJlY3QpCiB7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkv
SW5saW5lRGlzcGxheUxpbmVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyLmNw
cAppbmRleCAzYmYxMjZkNWFmMDEuLmZlZTcyYTA1MmQ5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNw
bGF5TGluZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyLmNwcApAQCAt
MzMsNiArMzMsMjIgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBMYXlvdXQgewog
CitzdGF0aWMgSW5saW5lUmVjdCBmbGlwTG9naWNhbExpbmVSZWN0VG9WaXN1YWxGb3JXcml0aW5n
TW9kZShjb25zdCBJbmxpbmVSZWN0JiBsaW5lTG9naWNhbFJlY3QsIFdyaXRpbmdNb2RlIHdyaXRp
bmdNb2RlKQoreworICAgIHN3aXRjaCAod3JpdGluZ01vZGUpIHsKKyAgICBjYXNlIFdyaXRpbmdN
b2RlOjpUb3BUb0JvdHRvbToKKyAgICAgICAgcmV0dXJuIGxpbmVMb2dpY2FsUmVjdDsKKyAgICBj
YXNlIFdyaXRpbmdNb2RlOjpMZWZ0VG9SaWdodDoKKyAgICBjYXNlIFdyaXRpbmdNb2RlOjpSaWdo
dFRvTGVmdDoKKyAgICAgICAgLy8gU2VlIElubGluZUZvcm1hdHRpbmdHZW9tZXRyeSBmb3IgbW9y
ZSBpbmZvLgorICAgICAgICByZXR1cm4geyBsaW5lTG9naWNhbFJlY3QubGVmdCgpLCBsaW5lTG9n
aWNhbFJlY3QudG9wKCksIGxpbmVMb2dpY2FsUmVjdC5oZWlnaHQoKSwgbGluZUxvZ2ljYWxSZWN0
LndpZHRoKCkgfTsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiBsaW5lTG9naWNhbFJlY3Q7Cit9CisK
IElubGluZURpc3BsYXlMaW5lQnVpbGRlcjo6SW5saW5lRGlzcGxheUxpbmVCdWlsZGVyKGNvbnN0
IElubGluZUZvcm1hdHRpbmdDb250ZXh0JiBpbmxpbmVGb3JtYXR0aW5nQ29udGV4dCkKICAgICA6
IG1faW5saW5lRm9ybWF0dGluZ0NvbnRleHQoaW5saW5lRm9ybWF0dGluZ0NvbnRleHQpCiB7CkBA
IC0xMzAsNTIgKzE0NiwxNDcgQEAgSW5saW5lRGlzcGxheTo6TGluZSBJbmxpbmVEaXNwbGF5TGlu
ZUJ1aWxkZXI6OmJ1aWxkKGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lQ29udGUKICAgICAgICAgLCBj
b250ZW50VmlzdWFsT2Zmc2V0SW5JbmxpbmVEaXJlY3Rpb24KICAgICAgICAgLCByb290SW5saW5l
Qm94LmxvZ2ljYWxXaWR0aCgpCiAgICAgICAgICwgbGluZUJveC5pc0hvcml6b250YWwoKQotICAg
ICAgICAsIHRyYWlsaW5nRWxsaXBzaXNSZWN0KGxpbmVDb250ZW50LCBsaW5lQm94LCBsaW5lQm94
VmlzdWFsUmVjdEluSW5saW5lRGlyZWN0aW9uKQogICAgIH07CiB9CiAKLS8vIEZJWE1FOiBmb3Ig
YmlkaSBjb250ZW50LCB3ZSBtYXkgbmVlZCB0byBydW4gdGhpcyBjb2RlIGFmdGVyIHdlIGZpbmlz
aGVkIGNvbnN0cnVjdGluZyB0aGUgZGlzcGxheSBib3hlcwotLy8gYW5kIGFsc28gcnVuIHRydW5j
YXRpb24gb24gdGhlICh2aXN1YWwpZGlzcGxheSBib3ggbGlzdCBhbmQgbm90IG9uIHRoZSAobG9n
aWNhbClsaW5lIHJ1bnMuCi1zdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gSW5saW5lRGlzcGxheUxp
bmVCdWlsZGVyOjp0cmFpbGluZ0VsbGlwc2lzUmVjdChjb25zdCBMaW5lQnVpbGRlcjo6TGluZUNv
bnRlbnQmIGxpbmVDb250ZW50LCBjb25zdCBMaW5lQm94JiBsaW5lQm94LCBjb25zdCBGbG9hdFJl
Y3QmIGxpbmVCb3hWaXN1YWxSZWN0KSBjb25zdAorc3RhdGljIGZsb2F0IHRydW5jYXRlT3ZlcmZs
b3dpbmdEaXNwbGF5Qm94ZXMoY29uc3QgSW5saW5lRGlzcGxheTo6TGluZSYgZGlzcGxheUxpbmUs
IERpc3BsYXlCb3hlcyYgYm94ZXMsIGZsb2F0IGVsbGlwc2lzV2lkdGgsIGNvbnN0IFJlbmRlclN0
eWxlJiByb290U3R5bGUpCiB7Ci0gICAgaWYgKCFsaW5lQ29udGVudC5saW5lTmVlZHNUcmFpbGlu
Z0VsbGlwc2lzKQotICAgICAgICByZXR1cm4geyB9OworICAgIC8vIFdlIGdvdHRhIHRydW5jYXRl
IHNvbWUgcnVucy4KKyAgICBBU1NFUlQoZGlzcGxheUxpbmUuY29udGVudExvZ2ljYWxMZWZ0KCkg
KyBkaXNwbGF5TGluZS5jb250ZW50TG9naWNhbFdpZHRoKCkgKyBlbGxpcHNpc1dpZHRoID4gZGlz
cGxheUxpbmUubGluZUJveExvZ2ljYWxSZWN0KCkubWF4WCgpKTsKKyAgICBhdXRvIGlzTGVmdFRv
UmlnaHREaXJlY3Rpb24gPSByb290U3R5bGUuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpOworICAg
IGF1dG8gaXNIb3Jpem9udGFsID0gcm9vdFN0eWxlLmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCk7
CisgICAgYXV0byBsZWZ0ID0gWyZdIChhdXRvJiBkaXNwbGF5Qm94KSB7CisgICAgICAgIHJldHVy
biBpc0hvcml6b250YWwgPyBkaXNwbGF5Qm94LmxlZnQoKSA6IGRpc3BsYXlCb3gudG9wKCk7Cisg
ICAgfTsKKyAgICBhdXRvIHJpZ2h0ID0gWyZdIChhdXRvJiBkaXNwbGF5Qm94KSB7CisgICAgICAg
IHJldHVybiBpc0hvcml6b250YWwgPyBkaXNwbGF5Qm94LnJpZ2h0KCkgOiBkaXNwbGF5Qm94LmJv
dHRvbSgpOworICAgIH07CisgICAgYXV0byB3aWR0aCA9IFsmXSAoYXV0byYgZGlzcGxheUJveCkg
eworICAgICAgICByZXR1cm4gaXNIb3Jpem9udGFsID8gZGlzcGxheUJveC53aWR0aCgpIDogZGlz
cGxheUJveC5oZWlnaHQoKTsKKyAgICB9OworICAgIGF1dG8gdHJ1bmNhdGUgPSBbJl0gKGF1dG8m
IGRpc3BsYXlCb3gsIGF1dG8gdmlzaWJsZVdpZHRoLCBhdXRvIGNhbkZ1bGx5VHJ1bmNhdGUpIHsK
KyAgICAgICAgaWYgKGRpc3BsYXlCb3guaXNUZXh0KCkpIHsKKyAgICAgICAgICAgIGlmICghdmlz
aWJsZVdpZHRoICYmIGNhbkZ1bGx5VHJ1bmNhdGUpIHsKKyAgICAgICAgICAgICAgICBkaXNwbGF5
Qm94LnNldElzRnVsbHlUcnVuY2F0ZWQoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gaXNMZWZ0
VG9SaWdodERpcmVjdGlvbiA/IGxlZnQoZGlzcGxheUJveCkgOiByaWdodChkaXNwbGF5Qm94KTsK
KyAgICAgICAgICAgIH0KIAotICAgIGF1dG8gZWxsaXBzaXNTdGFydCA9IDAuZjsKLSAgICBmb3Ig
KGF1dG8mIGxpbmVSdW4gOiBsaW5lQ29udGVudC5ydW5zKSB7Ci0gICAgICAgIGlmIChsaW5lUnVu
LmlzSW5saW5lQm94KCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKGxpbmVS
dW4uaXNUcnVuY2F0ZWQoKSkgewotICAgICAgICAgICAgaWYgKGxpbmVSdW4uaXNUZXh0KCkgJiYg
bGluZVJ1bi50ZXh0Q29udGVudCgpLT5wYXJ0aWFsbHlWaXNpYmxlQ29udGVudCkKLSAgICAgICAg
ICAgICAgICBlbGxpcHNpc1N0YXJ0ID0gc3RkOjptYXgoZWxsaXBzaXNTdGFydCwgbGluZVJ1bi5s
b2dpY2FsTGVmdCgpICsgbGluZVJ1bi50ZXh0Q29udGVudCgpLT5wYXJ0aWFsbHlWaXNpYmxlQ29u
dGVudC0+d2lkdGgpOwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBhdXRvJiBpbmxp
bmVUZXh0Qm94ID0gZG93bmNhc3Q8SW5saW5lVGV4dEJveD4oZGlzcGxheUJveC5sYXlvdXRCb3go
KSk7CisgICAgICAgICAgICBhdXRvJiB0ZXh0Q29udGVudCA9IGRpc3BsYXlCb3gudGV4dCgpOwor
ICAgICAgICAgICAgYXV0byBsZWZ0U2lkZSA9IFRleHRVdGlsOjpicmVha1dvcmQoaW5saW5lVGV4
dEJveCwgdGV4dENvbnRlbnQtPnN0YXJ0KCksIHRleHRDb250ZW50LT5sZW5ndGgoKSwgd2lkdGgo
ZGlzcGxheUJveCksIHZpc2libGVXaWR0aCwgeyB9LCBkaXNwbGF5Qm94LnN0eWxlKCkuZm9udENh
c2NhZGUoKSk7CisgICAgICAgICAgICBpZiAobGVmdFNpZGUubGVuZ3RoKSB7CisgICAgICAgICAg
ICAgICAgdGV4dENvbnRlbnQtPnNldFBhcnRpYWxseVZpc2libGVDb250ZW50TGVuZ3RoKGxlZnRT
aWRlLmxlbmd0aCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGlzTGVmdFRvUmlnaHREaXJlY3Rp
b24gPyBsZWZ0KGRpc3BsYXlCb3gpICsgbGVmdFNpZGUubG9naWNhbFdpZHRoIDogcmlnaHQoZGlz
cGxheUJveCkgLSBsZWZ0U2lkZS5sb2dpY2FsV2lkdGg7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBpZiAoY2FuRnVsbHlUcnVuY2F0ZSkgeworICAgICAgICAgICAgICAgIGRpc3BsYXlCb3gu
c2V0SXNGdWxseVRydW5jYXRlZCgpOworICAgICAgICAgICAgICAgIHJldHVybiBpc0xlZnRUb1Jp
Z2h0RGlyZWN0aW9uID8gbGVmdChkaXNwbGF5Qm94KSA6IHJpZ2h0KGRpc3BsYXlCb3gpOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgYXV0byBmaXJzdENoYXJhY3Rlckxlbmd0aCA9IFRleHRV
dGlsOjpmaXJzdFVzZXJQZXJjZWl2ZWRDaGFyYWN0ZXJMZW5ndGgoaW5saW5lVGV4dEJveCwgdGV4
dENvbnRlbnQtPnN0YXJ0KCksIHRleHRDb250ZW50LT5sZW5ndGgoKSk7CisgICAgICAgICAgICBh
dXRvIGZpcnN0Q2hhcmFjdGVyV2lkdGggPSBUZXh0VXRpbDo6d2lkdGgoaW5saW5lVGV4dEJveCwg
ZGlzcGxheUJveC5zdHlsZSgpLmZvbnRDYXNjYWRlKCksIHRleHRDb250ZW50LT5zdGFydCgpLCB0
ZXh0Q29udGVudC0+c3RhcnQoKSArIGZpcnN0Q2hhcmFjdGVyTGVuZ3RoLCB7IH0sIFRleHRVdGls
OjpVc2VUcmFpbGluZ1doaXRlc3BhY2VNZWFzdXJpbmdPcHRpbWl6YXRpb246Ok5vKTsKKyAgICAg
ICAgICAgIHRleHRDb250ZW50LT5zZXRQYXJ0aWFsbHlWaXNpYmxlQ29udGVudExlbmd0aChmaXJz
dENoYXJhY3Rlckxlbmd0aCk7CisgICAgICAgICAgICByZXR1cm4gaXNMZWZ0VG9SaWdodERpcmVj
dGlvbiA/IGxlZnQoZGlzcGxheUJveCkgKyBmaXJzdENoYXJhY3RlcldpZHRoIDogcmlnaHQoZGlz
cGxheUJveCkgLSBmaXJzdENoYXJhY3RlcldpZHRoOwogICAgICAgICB9Ci0gICAgICAgIGVsbGlw
c2lzU3RhcnQgPSBzdGQ6Om1heChlbGxpcHNpc1N0YXJ0LCBsaW5lUnVuLmxvZ2ljYWxSaWdodCgp
KTsKKyAgICAgICAgaWYgKGNhbkZ1bGx5VHJ1bmNhdGUpIHsKKyAgICAgICAgICAgIC8vIEF0b21p
YyBpbmxpbmUgbGV2ZWwgYm94ZXMgYXJlIG5ldmVyIHBhcnRpYWxseSB0cnVuY2F0ZWQuCisgICAg
ICAgICAgICBkaXNwbGF5Qm94LnNldElzRnVsbHlUcnVuY2F0ZWQoKTsKKyAgICAgICAgICAgIHJl
dHVybiBpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uID8gbGVmdChkaXNwbGF5Qm94KSA6IHJpZ2h0KGRp
c3BsYXlCb3gpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBpc0xlZnRUb1JpZ2h0RGlyZWN0
aW9uID8gcmlnaHQoZGlzcGxheUJveCkgOiBsZWZ0KGRpc3BsYXlCb3gpOworICAgIH07CisKKyAg
ICAvLyBUaGUgbG9naWNhbGx5IGZpcnN0IGNoYXJhY3RlciBvciBhdG9taWMgaW5saW5lLWxldmVs
IGVsZW1lbnQgb24gYSBsaW5lIG11c3QgYmUgY2xpcHBlZCByYXRoZXIgdGhhbiBlbGxpcHNlZC4K
KyAgICBhdXRvIGlzRmlyc3RDb250ZW50UnVuID0gdHJ1ZTsKKyAgICBpZiAoaXNMZWZ0VG9SaWdo
dERpcmVjdGlvbikgeworICAgICAgICBhdXRvIHZpc3VhbFJpZ2h0Rm9yQ29udGVudEVuZCA9IHN0
ZDo6bWF4KDAuZiwgcmlnaHQoZGlzcGxheUxpbmUpIC0gZWxsaXBzaXNXaWR0aCk7CisgICAgICAg
IGF1dG8gdHJ1bmNhdGVSaWdodCA9IHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IHsgfTsKKyAgICAgICAg
Zm9yIChhdXRvJiBkaXNwbGF5Qm94IDogYm94ZXMpIHsKKyAgICAgICAgICAgIGlmIChkaXNwbGF5
Qm94LmlzSW5saW5lQm94KCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICBpZiAocmlnaHQoZGlzcGxheUJveCkgPiB2aXN1YWxSaWdodEZvckNvbnRlbnRFbmQpIHsKKyAg
ICAgICAgICAgICAgICBhdXRvIHRydW5jYXRlUG9zaXRpb24gPSB0cnVuY2F0ZShkaXNwbGF5Qm94
LCBzdGQ6Om1heCgwLmYsIHZpc3VhbFJpZ2h0Rm9yQ29udGVudEVuZCAtIGxlZnQoZGlzcGxheUJv
eCkpLCAhaXNGaXJzdENvbnRlbnRSdW4pOworICAgICAgICAgICAgICAgIHRydW5jYXRlUmlnaHQg
PSB0cnVuY2F0ZVJpZ2h0LnZhbHVlX29yKHRydW5jYXRlUG9zaXRpb24pOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgaXNGaXJzdENvbnRlbnRSdW4gPSBmYWxzZTsKKyAgICAgICAgfQorICAg
ICAgICBBU1NFUlQodHJ1bmNhdGVSaWdodC5oYXNfdmFsdWUoKSk7CisgICAgICAgIHJldHVybiB0
cnVuY2F0ZVJpZ2h0LnZhbHVlX29yKDAuZik7CiAgICAgfQotICAgIGF1dG8gZWxsaXBzaXNXaWR0
aCA9ICFsaW5lQm94LmxpbmVJbmRleCgpID8gcm9vdCgpLmZpcnN0TGluZVN0eWxlKCkuZm9udENh
c2NhZGUoKS53aWR0aChUZXh0VXRpbDo6ZWxsaXBzaXNUZXh0UnVuKCkpIDogcm9vdCgpLnN0eWxl
KCkuZm9udENhc2NhZGUoKS53aWR0aChUZXh0VXRpbDo6ZWxsaXBzaXNUZXh0UnVuKCkpOwotICAg
IGF1dG8gcm9vdElubGluZUJveFJlY3QgPSBsaW5lQm94LmxvZ2ljYWxSZWN0Rm9yUm9vdElubGlu
ZUJveCgpOwotICAgIGF1dG8gZWxsaXBzaXNSZWN0ID0gRmxvYXRSZWN0IHsgbGluZUJveFZpc3Vh
bFJlY3QueCgpICsgcm9vdElubGluZUJveFJlY3QubGVmdCgpICsgZWxsaXBzaXNTdGFydCwgbGlu
ZUJveFZpc3VhbFJlY3QueSgpICsgcm9vdElubGluZUJveFJlY3QudG9wKCksIGVsbGlwc2lzV2lk
dGgsIHJvb3RJbmxpbmVCb3hSZWN0LmhlaWdodCgpIH07CiAKLSAgICBpZiAocm9vdCgpLnN0eWxl
KCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKQotICAgICAgICByZXR1cm4gZWxsaXBzaXNSZWN0
OwotICAgIGVsbGlwc2lzUmVjdC5zZXRYKGxpbmVCb3hWaXN1YWxSZWN0Lm1heFgoKSAtIChlbGxp
cHNpc1N0YXJ0ICsgZWxsaXBzaXNSZWN0LndpZHRoKCkpKTsKLSAgICByZXR1cm4gZWxsaXBzaXNS
ZWN0OworICAgIGF1dG8gdHJ1bmNhdGVMZWZ0ID0gc3RkOjpvcHRpb25hbDxmbG9hdD4geyB9Owor
ICAgIGF1dG8gdmlzdWFsTGVmdEZvckNvbnRlbnRFbmQgPSBzdGQ6Om1heCgwLmYsIGxlZnQoZGlz
cGxheUxpbmUpICsgZWxsaXBzaXNXaWR0aCk7CisgICAgZm9yIChhdXRvJiBkaXNwbGF5Qm94IDog
bWFrZVJldmVyc2VkUmFuZ2UoYm94ZXMpKSB7CisgICAgICAgIGlmIChkaXNwbGF5Qm94LmlzSW5s
aW5lQm94KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKGxlZnQoZGlzcGxh
eUJveCkgPCB2aXN1YWxMZWZ0Rm9yQ29udGVudEVuZCkgeworICAgICAgICAgICAgYXV0byB0cnVu
Y2F0ZVBvc2l0aW9uID0gdHJ1bmNhdGUoZGlzcGxheUJveCwgc3RkOjptYXgoMC5mLCByaWdodChk
aXNwbGF5Qm94KSAtIHZpc3VhbExlZnRGb3JDb250ZW50RW5kKSwgIWlzRmlyc3RDb250ZW50UnVu
KTsKKyAgICAgICAgICAgIHRydW5jYXRlTGVmdCA9IHRydW5jYXRlTGVmdC52YWx1ZV9vcih0cnVu
Y2F0ZVBvc2l0aW9uKTsKKyAgICAgICAgfQorICAgICAgICBpc0ZpcnN0Q29udGVudFJ1biA9IGZh
bHNlOworICAgIH0KKyAgICBBU1NFUlQodHJ1bmNhdGVMZWZ0Lmhhc192YWx1ZSgpKTsKKyAgICBy
ZXR1cm4gdHJ1bmNhdGVMZWZ0LnZhbHVlX29yKGVsbGlwc2lzV2lkdGgpIC0gZWxsaXBzaXNXaWR0
aDsKIH0KIAotSW5saW5lUmVjdCBJbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXI6OmZsaXBMb2dpY2Fs
TGluZVJlY3RUb1Zpc3VhbEZvcldyaXRpbmdNb2RlKGNvbnN0IElubGluZVJlY3QmIGxpbmVMb2dp
Y2FsUmVjdCwgV3JpdGluZ01vZGUgd3JpdGluZ01vZGUpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPEZs
b2F0UmVjdD4gSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyOjp0cmFpbGluZ0VsbGlwc2lzVmlzdWFs
UmVjdEFmdGVyVHJ1bmNhdGlvbihMaW5lQnVpbGRlcjo6TGluZUVuZGluZ0VsbGlwc2lzUG9saWN5
IGxpbmVFbmRpbmdFbGxpcHNpc1BvbGljeSwgY29uc3QgSW5saW5lRGlzcGxheTo6TGluZSYgZGlz
cGxheUxpbmUsIERpc3BsYXlCb3hlcyYgZGlzcGxheUJveGVzLCBib29sIGlzTGFzdExpbmVXaXRo
SW5saW5lQ29udGVudCkKIHsKLSAgICBzd2l0Y2ggKHdyaXRpbmdNb2RlKSB7Ci0gICAgY2FzZSBX
cml0aW5nTW9kZTo6VG9wVG9Cb3R0b206Ci0gICAgICAgIHJldHVybiBsaW5lTG9naWNhbFJlY3Q7
Ci0gICAgY2FzZSBXcml0aW5nTW9kZTo6TGVmdFRvUmlnaHQ6Ci0gICAgY2FzZSBXcml0aW5nTW9k
ZTo6UmlnaHRUb0xlZnQ6Ci0gICAgICAgIC8vIFNlZSBJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkg
Zm9yIG1vcmUgaW5mby4KLSAgICAgICAgcmV0dXJuIHsgbGluZUxvZ2ljYWxSZWN0LmxlZnQoKSwg
bGluZUxvZ2ljYWxSZWN0LnRvcCgpLCBsaW5lTG9naWNhbFJlY3QuaGVpZ2h0KCksIGxpbmVMb2dp
Y2FsUmVjdC53aWR0aCgpIH07Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICByZXR1cm4gbGluZUxvZ2ljYWxSZWN0
OworICAgIGlmIChkaXNwbGF5Qm94ZXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4geyB9Owor
CisgICAgYXV0byBjb250ZW50TmVlZHNFbGxpcHNpcyA9IFsmXSB7CisgICAgICAgIHN3aXRjaCAo
bGluZUVuZGluZ0VsbGlwc2lzUG9saWN5KSB7CisgICAgICAgIGNhc2UgTGluZUJ1aWxkZXI6Okxp
bmVFbmRpbmdFbGxpcHNpc1BvbGljeTo6Tm86CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIGNhc2UgTGluZUJ1aWxkZXI6OkxpbmVFbmRpbmdFbGxpcHNpc1BvbGljeTo6V2hlbkNv
bnRlbnRPdmVyZmxvd3NJbklubGluZURpcmVjdGlvbjoKKyAgICAgICAgICAgIHJldHVybiBkaXNw
bGF5TGluZS5jb250ZW50TG9naWNhbFdpZHRoKCkgPiBkaXNwbGF5TGluZS5saW5lQm94TG9naWNh
bFJlY3QoKS53aWR0aCgpOworICAgICAgICBjYXNlIExpbmVCdWlsZGVyOjpMaW5lRW5kaW5nRWxs
aXBzaXNQb2xpY3k6OldoZW5Db250ZW50T3ZlcmZsb3dzSW5CbG9ja0RpcmVjdGlvbjoKKyAgICAg
ICAgICAgIGlmIChpc0xhc3RMaW5lV2l0aElubGluZUNvbnRlbnQpCisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgRkFMTFRIUk9VR0g7CisgICAgICAgIGNhc2UgTGlu
ZUJ1aWxkZXI6OkxpbmVFbmRpbmdFbGxpcHNpc1BvbGljeTo6QWx3YXlzOgorICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH07Cisg
ICAgaWYgKCFjb250ZW50TmVlZHNFbGxpcHNpcygpKQorICAgICAgICByZXR1cm4geyB9OworCisg
ICAgQVNTRVJUKGRpc3BsYXlCb3hlc1swXS5pc1Jvb3RJbmxpbmVCb3goKSk7CisgICAgYXV0byYg
cm9vdElubGluZUJveCA9IGRpc3BsYXlCb3hlc1swXTsKKyAgICBhdXRvJiByb290U3R5bGUgPSBy
b290SW5saW5lQm94LnN0eWxlKCk7CisgICAgYXV0byBlbGxpcHNpc1dpZHRoID0gcm9vdFN0eWxl
LmZvbnRDYXNjYWRlKCkud2lkdGgoVGV4dFV0aWw6OmVsbGlwc2lzVGV4dFJ1bigpKTsKKworICAg
IGF1dG8gY29udGVudE5lZWRzVHJ1bmNhdGlvbiA9IFsmXSB7CisgICAgICAgIHN3aXRjaCAobGlu
ZUVuZGluZ0VsbGlwc2lzUG9saWN5KSB7CisgICAgICAgIGNhc2UgTGluZUJ1aWxkZXI6OkxpbmVF
bmRpbmdFbGxpcHNpc1BvbGljeTo6V2hlbkNvbnRlbnRPdmVyZmxvd3NJbklubGluZURpcmVjdGlv
bjoKKyAgICAgICAgICAgIEFTU0VSVChkaXNwbGF5TGluZS5jb250ZW50TG9naWNhbFdpZHRoKCkg
PiBkaXNwbGF5TGluZS5saW5lQm94TG9naWNhbFJlY3QoKS53aWR0aCgpKTsKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICBjYXNlIExpbmVCdWlsZGVyOjpMaW5lRW5kaW5nRWxsaXBz
aXNQb2xpY3k6OldoZW5Db250ZW50T3ZlcmZsb3dzSW5CbG9ja0RpcmVjdGlvbjoKKyAgICAgICAg
Y2FzZSBMaW5lQnVpbGRlcjo6TGluZUVuZGluZ0VsbGlwc2lzUG9saWN5OjpBbHdheXM6CisgICAg
ICAgICAgICByZXR1cm4gZGlzcGxheUxpbmUuY29udGVudExvZ2ljYWxMZWZ0KCkgKyBkaXNwbGF5
TGluZS5jb250ZW50TG9naWNhbFdpZHRoKCkgKyBlbGxpcHNpc1dpZHRoID4gZGlzcGxheUxpbmUu
bGluZUJveExvZ2ljYWxSZWN0KCkubWF4WCgpOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIH0KKyAgICB9OworCisgICAgYXV0byBlbGxpcHNpc1N0YXJ0ID0gMC5mOworICAgIGlmICgh
Y29udGVudE5lZWRzVHJ1bmNhdGlvbigpKSB7CisgICAgICAgIC8vIFRoZSBjb250ZW50IGRvZXMg
bm90IG92ZXJmbG93IHRoZSBsaW5lIGJveC4gVGhlIGVsbGlwc2lzIGlzIHN1cHBvc2VkIHRvIGJl
IGVpdGhlciB2aXN1YWxseSB0cmFpbGluZyBvciBsZWFkaW5nIGRlcGVuZGluZyBvbiB0aGUgaW5s
aW5lIGRpcmVjdGlvbi4KKyAgICAgICAgaWYgKGRpc3BsYXlCb3hlcy5zaXplKCkgPiAxKQorICAg
ICAgICAgICAgZWxsaXBzaXNTdGFydCA9IHJvb3RTdHlsZS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9u
KCkgPyBkaXNwbGF5Qm94ZXMubGFzdCgpLnJpZ2h0KCkgOiBkaXNwbGF5Qm94ZXNbMV0ubGVmdCgp
IC0gZWxsaXBzaXNXaWR0aDsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvLyBBbGwgd2Ug
aGF2ZSBpcyB0aGUgcm9vdCBpbmxpbmUgYm94LgorICAgICAgICAgICAgZWxsaXBzaXNTdGFydCA9
IGRpc3BsYXlCb3hlcy5maXJzdCgpLmxlZnQoKTsKKyAgICAgICAgfQorICAgIH0gZWxzZQorICAg
ICAgICBlbGxpcHNpc1N0YXJ0ID0gdHJ1bmNhdGVPdmVyZmxvd2luZ0Rpc3BsYXlCb3hlcyhkaXNw
bGF5TGluZSwgZGlzcGxheUJveGVzLCBlbGxpcHNpc1dpZHRoLCByb290U3R5bGUpOworCisgICAg
aWYgKHJvb3RTdHlsZS5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKQorICAgICAgICByZXR1cm4g
RmxvYXRSZWN0IHsgZWxsaXBzaXNTdGFydCwgcm9vdElubGluZUJveC50b3AoKSwgZWxsaXBzaXNX
aWR0aCwgcm9vdElubGluZUJveC5oZWlnaHQoKSB9OworICAgIHJldHVybiBGbG9hdFJlY3QgeyBy
b290SW5saW5lQm94LmxlZnQoKSwgZWxsaXBzaXNTdGFydCwgcm9vdElubGluZUJveC53aWR0aCgp
LCBlbGxpcHNpc1dpZHRoIH07CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUxpbmVC
dWlsZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGlu
ZS9kaXNwbGF5L0lubGluZURpc3BsYXlMaW5lQnVpbGRlci5oCmluZGV4IDEzYzQ5NGE3ZjAxMi4u
NjRhZGQyMTYxOTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlMaW5lQnVpbGRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkv
SW5saW5lRGlzcGxheUxpbmVCdWlsZGVyLmgKQEAgLTQwLDE0ICs0MCwxNCBAQCBwdWJsaWM6CiAK
ICAgICBJbmxpbmVEaXNwbGF5OjpMaW5lIGJ1aWxkKGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lQ29u
dGVudCYsIGNvbnN0IExpbmVCb3gmLCBjb25zdCBDb25zdHJhaW50c0ZvcklubGluZUNvbnRlbnQm
KSBjb25zdDsKIAorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gdHJhaWxpbmdF
bGxpcHNpc1Zpc3VhbFJlY3RBZnRlclRydW5jYXRpb24oTGluZUJ1aWxkZXI6OkxpbmVFbmRpbmdF
bGxpcHNpc1BvbGljeSwgY29uc3QgSW5saW5lRGlzcGxheTo6TGluZSYsIERpc3BsYXlCb3hlcyYs
IGJvb2wgaXNMYXN0TGluZVdpdGhJbmxpbmVDb250ZW50KTsKKwogcHJpdmF0ZToKICAgICBzdHJ1
Y3QgRW5jbG9zaW5nTGluZUdlb21ldHJ5IHsKICAgICAgICAgSW5saW5lRGlzcGxheTo6TGluZTo6
RW5jbG9zaW5nVG9wQW5kQm90dG9tIGVuY2xvc2luZ1RvcEFuZEJvdHRvbTsKICAgICAgICAgSW5s
aW5lUmVjdCBzY3JvbGxhYmxlT3ZlcmZsb3dSZWN0OwogICAgIH07CiAgICAgRW5jbG9zaW5nTGlu
ZUdlb21ldHJ5IGNvbGxlY3RFbmNsb3NpbmdMaW5lR2VvbWV0cnkoY29uc3QgTGluZUJ1aWxkZXI6
OkxpbmVDb250ZW50JiwgY29uc3QgTGluZUJveCYsIGNvbnN0IElubGluZVJlY3QmIGxpbmVCb3hS
ZWN0KSBjb25zdDsKLSAgICBJbmxpbmVSZWN0IGZsaXBMb2dpY2FsTGluZVJlY3RUb1Zpc3VhbEZv
cldyaXRpbmdNb2RlKGNvbnN0IElubGluZVJlY3QmLCBXcml0aW5nTW9kZSkgY29uc3Q7Ci0gICAg
c3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IHRyYWlsaW5nRWxsaXBzaXNSZWN0KGNvbnN0IExpbmVC
dWlsZGVyOjpMaW5lQ29udGVudCYsIGNvbnN0IExpbmVCb3gmLCBjb25zdCBGbG9hdFJlY3QmIGxp
bmVCb3hWaXN1YWxSZWN0KSBjb25zdDsKIAogICAgIGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250
ZXh0JiBmb3JtYXR0aW5nQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQ7IH0KICAgICBjb25zdCBCb3gmIHJvb3QoKSBjb25zdCB7IHJldHVybiBmb3JtYXR0
aW5nQ29udGV4dCgpLnJvb3QoKTsgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9pbmxp
bmUvdGV4dF9vdmVyZmxvd19lbGxpcHNpc19zaW1wbGUtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvaW5saW5lL3RleHRfb3ZlcmZsb3dfZWxsaXBzaXNfc2ltcGxlLWV4cGVjdGVkLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi43MzQ5ZjQxZjQwZWIK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2lubGluZS90ZXh0X292ZXJmbG93
X2VsbGlwc2lzX3NpbXBsZS1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTYgQEAKKzxzdHlsZT4K
K2RpdiB7CisgIGZvbnQtc2l6ZTogMjBweDsKKyAgb3ZlcmZsb3c6IGhpZGRlbjsKKyAgd2hpdGUt
c3BhY2U6IHByZTsKKyAgd2lkdGg6IDUwcHg7Cit9Cis8L3N0eWxlPgorPGRpdj5BQiYjODIzMDs8
L2Rpdj4KKzxkaXYgc3R5bGU9ImJvcmRlci1sZWZ0OiAxMHB4IHNvbGlkIj5BQiYjODIzMDs8L2Rp
dj4KKzxkaXYgc3R5bGU9ImJvcmRlci1sZWZ0OiAxMHB4IHNvbGlkOyBwYWRkaW5nLWxlZnQ6IDIw
cHg7Ij5BQiYjODIzMDs8L2Rpdj4KKzxkaXYgc3R5bGU9ImJvcmRlcjogMTBweCBzb2xpZDsgcGFk
ZGluZzogMjBweDsiPkFCJiM4MjMwOzwvZGl2PgorPGRpdiBzdHlsZT0iZGlyZWN0aW9uOiBydGw7
Ij5FRiYjODIzMDs8L2Rpdj4KKzxkaXYgc3R5bGU9ImRpcmVjdGlvbjogcnRsOyBib3JkZXItbGVm
dDogMTBweCBzb2xpZCI+RUYmIzgyMzA7PC9kaXY+Cis8ZGl2IHN0eWxlPSJkaXJlY3Rpb246IHJ0
bDsgYm9yZGVyLWxlZnQ6IDEwcHggc29saWQ7IHBhZGRpbmctbGVmdDogMjBweDsiPkVGJiM4MjMw
OzwvZGl2PgorPGRpdiBzdHlsZT0iZGlyZWN0aW9uOiBydGw7IGJvcmRlcjogMTBweCBzb2xpZDsg
cGFkZGluZzogMjBweDsiPkVGJiM4MjMwOzwvZGl2PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9pbmxpbmUvdGV4dF9vdmVyZmxvd19lbGxpcHNpc19zaW1wbGUuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvaW5saW5lL3RleHRfb3ZlcmZsb3dfZWxsaXBzaXNfc2ltcGxlLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mMDcyZDFlNTliMTUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2lubGluZS90ZXh0X292ZXJmbG93X2VsbGlwc2lz
X3NpbXBsZS5odG1sCkBAIC0wLDAgKzEsMjQgQEAKKzxzdHlsZT4KK2RpdiB7CisgIGZvbnQtc2l6
ZTogMjBweDsKKyAgb3ZlcmZsb3c6IGhpZGRlbjsKKyAgd2hpdGUtc3BhY2U6IHByZTsKKyAgd2lk
dGg6IDUwcHg7CisgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOworfQorPC9zdHlsZT4KKzxkaXY+
QUJDRCBFRkdIPC9kaXY+Cis8ZGl2IHN0eWxlPSJib3JkZXItbGVmdDogMTBweCBzb2xpZCI+QUJD
RCBFRkdIPC9kaXY+Cis8ZGl2IHN0eWxlPSJib3JkZXItbGVmdDogMTBweCBzb2xpZDsgcGFkZGlu
Zy1sZWZ0OiAyMHB4OyI+QUJDRCBFRkdIPC9kaXY+Cis8ZGl2IHN0eWxlPSJib3JkZXI6IDEwcHgg
c29saWQ7IHBhZGRpbmc6IDIwcHg7Ij5BQkNEIEVGR0g8L2Rpdj4KKworPGRpdiBzdHlsZT0iZGly
ZWN0aW9uOiBydGw7Ij5BQkNEIEVGR0g8L2Rpdj4KKzxkaXYgc3R5bGU9ImRpcmVjdGlvbjogcnRs
OyBib3JkZXItbGVmdDogMTBweCBzb2xpZCI+QUJDRCBFRkdIPC9kaXY+Cis8ZGl2IHN0eWxlPSJk
aXJlY3Rpb246IHJ0bDsgYm9yZGVyLWxlZnQ6IDEwcHggc29saWQ7IHBhZGRpbmctbGVmdDogMjBw
eDsiPkFCQ0QgRUZHSDwvZGl2PgorPGRpdiBzdHlsZT0iZGlyZWN0aW9uOiBydGw7IGJvcmRlcjog
MTBweCBzb2xpZDsgcGFkZGluZzogMjBweDsiPkFCQ0QgRUZHSDwvZGl2PgorCisKKzwhLS0gTmVl
ZHMgc29tZSBwYWludGluZyB3b3JrLCBzZWUgd2Via2l0Lm9yZy9iLzI1MTYxMAorPGRpdiBzdHls
ZT0id3JpdGluZy1tb2RlOiB2ZXJ0aWNhbC1scjsgd2lkdGg6IGF1dG87IGhlaWdodDogNTBweDsg
Ym9yZGVyOiAxMHB4IHNvbGlkOyBwYWRkaW5nOiAyMHB4OyI+QUJDRCBFRkdIPC9kaXY+Cis8ZGl2
IHN0eWxlPSJ3cml0aW5nLW1vZGU6IHZlcnRpY2FsLWxyOyBkaXJlY3Rpb246IHJ0bDsgd2lkdGg6
IGF1dG87IGhlaWdodDogNTBweDsgYm9yZGVyOiAxMHB4IHNvbGlkOyBwYWRkaW5nOiAyMHB4OyI+
QUJDRCBFRkdIPC9kaXY+CisgLS0+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>464829</attachid>
            <date>2023-02-03 16:42:18 -0800</date>
            <delta_ts>2023-02-03 18:51:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-251608-20230203164217.patch</filename>
            <type>text/plain</type>
            <size>53129</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSBkZjQxZTY0YTJmNTQ1OTZhYWRiODQ2OTNkYjA2ZWNhOGNlMmNmZWE2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFRodSwgMiBGZWIgMjAyMyAxMDoyNDozNyAtMDgwMApTdWJqZWN0OiBbUEFUQ0hdIFtSVEwvYmlk
aS92ZXJ0aWNhbF0gSW5jb3JyZWN0IGNvbnRlbnQgdHJ1bmNhdGlvbiB3aGVuCiAidGV4dC1vdmVy
ZmxvdyIgaXMgImVsbGlwc2lzIiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjUxNjA4CgpSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KCkluIHRoaXMgcGF0Y2ggaW5s
aW5lIGNvbnRlbnQgdHJ1bmNhdGlvbiAob3ZlcmZsb3c6IGhpZGRlbiArIHRleHQtb3ZlcmZsb3c6
IGVsbGlwc2lzKSBpcyBtb3ZlZCBmcm9tIGxvZ2ljYWwgdG8gdmlzdWFsIHNwYWNlLgpJdCBlbnN1
cmVzIHRoYXQgdGhlIHRydW5jYXRpb24gaGFwcGVucyBfYWZ0ZXJfIGJpZGkgcmVvcmRlcmluZyBh
bmQgYWxzbyBfYWZ0ZXJfIGFwcGx5aW5nIHdyaXRpbmctbW9kZS4KCk5vdyBpbnN0ZWFkIG9mIHJ1
bm5pbmcgdHJ1bmNhdGlvbiBhcyBwYXJ0IG9mIHRoZSB0cmFpbGluZyBjb250ZW50IGhhbmRsaW5n
IGluIExpbmVCdWlsZGVyOjpjbG9zZSByaWdodCBhZnRlciB3ZSBmaWd1cmVkIHRoZSBicmVha2lu
ZyBwb3NpdGlvbiBmb3IKdGhlIGlubGluZSBjb250ZW50LCB3ZSBkbyBpdCBhZnRlciBjb25zdHJ1
Y3RpbmcgdGhlIGRpc3BsYXkgYm94ZXMgKGFuZCB0aGUgYXNzb2NpYXRlZCBkaXNwbGF5IGxpbmUp
LgoKMS4gUmVtb3ZlIHRydW5jYXRpb24gY29kZSBmcm9tIExpbmU6OlJ1biBhbmQgYWxsIHRoZSBy
ZWxhdGVkIGNvZGUgYWxsIHRoZSB3YXkgdG8gZGlzcGxheSBsaW5lIGNvbnN0cnVjdGlvbi4KMi4g
SW50cm9kdWNlIHRydW5jYXRlT3ZlcmZsb3dpbmdEaXNwbGF5Qm94ZXMuIEl0IGFwcGxpZXMgdHJ1
bmNhdGlvbiBvbiBkaXNwbGF5IGJveCBpbiB2aXN1YWwgb3JkZXIgKHRoZSB0cnVuY2F0aW9uIGxv
Z2ljIGlzIGFjdHVhbGx5IG1vdmVkIGZyb20gTGluZTo6UnVuLCBub3RoaW5nIHJlYWxseSBuZXcg
aGVyZSkuCgoqIExheW91dFRlc3RzL2Zhc3QvaW5saW5lL3RleHRfb3ZlcmZsb3dfZWxsaXBzaXNf
c2ltcGxlLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgoqIExheW91dFRlc3RzL2Zhc3QvaW5saW5lL3Rl
eHRfb3ZlcmZsb3dfZWxsaXBzaXNfc2ltcGxlLmh0bWw6IEFkZGVkLgoqIFNvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0
LmNwcDoKKFdlYkNvcmU6OkxheW91dDo6bGluZUVuZGluZ0VsbGlwc2lzUG9saWN5KToKKFdlYkNv
cmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxpbmVMYXlvdXQpOgooV2ViQ29y
ZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y3JlYXRlRGlzcGxheUNvbnRlbnRG
b3JMaW5lKToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGlu
ZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmUuY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpM
aW5lOjppbml0aWFsaXplKToKKFdlYkNvcmU6OkxheW91dDo6TGluZTo6UnVuOjpkZXRhY2hUcmFp
bGluZ1doaXRlc3BhY2UpOgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lOjp0cnVuY2F0ZSk6IERlbGV0
ZWQuCihXZWJDb3JlOjpMYXlvdXQ6OkxpbmU6OlJ1bjo6dHJ1bmNhdGUpOiBEZWxldGVkLgoqIFNv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmUu
aDoKKFdlYkNvcmU6OkxheW91dDo6TGluZTo6aXNDb250ZW50VHJ1bmNhdGVkIGNvbnN0KTogRGVs
ZXRlZC4KKFdlYkNvcmU6OkxheW91dDo6TGluZTo6UnVuOjppc1RydW5jYXRlZCBjb25zdCk6IERl
bGV0ZWQuCiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
SW5saW5lTGluZUJ1aWxkZXIuY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6bGF5
b3V0SW5saW5lQ29udGVudCk6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjpjb21wdXRl
ZEludHJpbnNpY1dpZHRoKToKKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OmNsb3NlKToK
KiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVM
aW5lQnVpbGRlci5oOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUJveC5oOgooV2ViQ29yZTo6SW5saW5lRGlzcGxh
eTo6Qm94OjpUZXh0OjpzZXRQYXJ0aWFsbHlWaXNpYmxlQ29udGVudExlbmd0aCk6CihXZWJDb3Jl
OjpJbmxpbmVEaXNwbGF5OjpCb3g6OkJveCk6CihXZWJDb3JlOjpJbmxpbmVEaXNwbGF5OjpCb3g6
OnNldExlZnQpOgooV2ViQ29yZTo6SW5saW5lRGlzcGxheTo6Qm94OjpzZXRJc0Z1bGx5VHJ1bmNh
dGVkKToKKFdlYkNvcmU6OklubGluZURpc3BsYXk6OkJveDo6VGV4dDo6VGV4dCk6CiogU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVE
aXNwbGF5Q29udGVudEJ1aWxkZXIuY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVEaXNwbGF5
Q29udGVudEJ1aWxkZXI6OmFwcGVuZFRleHREaXNwbGF5Qm94KToKKFdlYkNvcmU6OkxheW91dDo6
SW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyOjphcHBlbmRBdG9taWNJbmxpbmVMZXZlbERpc3Bs
YXlCb3gpOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OmFw
cGVuZElubGluZUJveERpc3BsYXlCb3gpOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVEaXNwbGF5
Q29udGVudEJ1aWxkZXI6OmFwcGVuZFNwYW5uaW5nSW5saW5lQm94RGlzcGxheUJveCk6CiogU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9Jbmxp
bmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuaDoKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRGlzcGxh
eUNvbnRlbnRCdWlsZGVyOjpyb290U3R5bGUgY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUxpbmUuaDoK
KFdlYkNvcmU6OklubGluZURpc3BsYXk6OkxpbmU6OnNldEVsbGlwc2lzVmlzdWFsUmVjdCk6CihX
ZWJDb3JlOjpJbmxpbmVEaXNwbGF5OjpMaW5lOjpMaW5lKToKKiBTb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlMaW5lQnVp
bGRlci5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6OmZsaXBMb2dpY2FsTGluZVJlY3RUb1Zpc3VhbEZv
cldyaXRpbmdNb2RlKToKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRGlzcGxheUxpbmVCdWlsZGVy
OjpidWlsZCBjb25zdCk6CihXZWJDb3JlOjpMYXlvdXQ6OnRydW5jYXRlT3ZlcmZsb3dpbmdEaXNw
bGF5Qm94ZXMpOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXI6OnRy
YWlsaW5nRWxsaXBzaXNWaXN1YWxSZWN0KToKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRGlzcGxh
eUxpbmVCdWlsZGVyOjp0cmFpbGluZ0VsbGlwc2lzUmVjdCBjb25zdCk6IERlbGV0ZWQuCihXZWJD
b3JlOjpMYXlvdXQ6OklubGluZURpc3BsYXlMaW5lQnVpbGRlcjo6ZmxpcExvZ2ljYWxMaW5lUmVj
dFRvVmlzdWFsRm9yV3JpdGluZ01vZGUgY29uc3QpOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUxp
bmVCdWlsZGVyLmg6Ci0tLQogLi4uL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAg
ICAgICAgIHwgIDIyICsrLQogLi4uL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oICAg
ICAgICAgIHwgICAyICstCiAuLi4vZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5l
LmNwcCAgfCAgNDggKy0tLS0KIC4uLi9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxp
bmUuaCAgICB8ICAxMyAtLQogLi4uL2lubGluZS9JbmxpbmVMaW5lQnVpbGRlci5jcHAgICAgICAg
ICAgICAgIHwgIDQ0ICstLS0tCiAuLi4vaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmggICAgICAg
ICAgICAgICAgfCAgMjAgKy0KIC4uLi9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5Qm94Lmgg
ICAgICAgICB8ICAyMSArLQogLi4uL2Rpc3BsYXkvSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVy
LmNwcCAgIHwgICA5ICstCiAuLi4vZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIu
aCAgICAgfCAgIDIgKwogLi4uL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlMaW5lLmggICAg
ICAgIHwgICA2ICstCiAuLi4vZGlzcGxheS9JbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXIuY3BwICAg
ICAgfCAxODEgKysrKysrKysrKysrKystLS0tCiAuLi4vaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlz
cGxheUxpbmVCdWlsZGVyLmggfCAgIDQgKy0KIC4uLmV4dF9vdmVyZmxvd19lbGxpcHNpc19zaW1w
bGUtZXhwZWN0ZWQuaHRtbCB8ICAxNiArKwogLi4uL2lubGluZS90ZXh0X292ZXJmbG93X2VsbGlw
c2lzX3NpbXBsZS5odG1sIHwgIDI0ICsrKwogMTQgZmlsZXMgY2hhbmdlZCwgMjMzIGluc2VydGlv
bnMoKyksIDE3OSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9m
YXN0L2lubGluZS90ZXh0X292ZXJmbG93X2VsbGlwc2lzX3NpbXBsZS1leHBlY3RlZC5odG1sCiBj
cmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC9pbmxpbmUvdGV4dF9vdmVyZmxvd19l
bGxpcHNpc19zaW1wbGUuaHRtbAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1h
dHRpbmdDb250ZXh0LmNwcAppbmRleCA0YjgwYzdjODBlZjEuLjlkZTFhZTE5OTkxYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtMjAy
LDE5ICsyMDIsMTkgQEAgc3RhdGljIHNpemVfdCBpbmRleE9mRmlyc3RJbmxpbmVJdGVtRm9yTmV4
dExpbmUoY29uc3QgTGluZUJ1aWxkZXI6OkxpbmVDb250ZW50JgogICAgIHJldHVybiBsaW5lQ29u
dGVudFJhbmdlLmVuZDsKIH0KIAotc3RhdGljIExpbmVCdWlsZGVyOjpMaW5lSW5wdXQ6OkxpbmVF
bmRpbmdFbGxpcHNpc1BvbGljeSBsaW5lRW5kaW5nRWxsaXBzaXNQb2xpY3koY29uc3QgUmVuZGVy
U3R5bGUmIHJvb3RTdHlsZSwgc2l6ZV90IG51bWJlck9mTGluZXMsIHN0ZDo6b3B0aW9uYWw8c2l6
ZV90PiBtYXhpbXVtTnVtYmVyT2ZWaXNpYmxlTGluZXMpCitzdGF0aWMgTGluZUJ1aWxkZXI6Okxp
bmVFbmRpbmdFbGxpcHNpc1BvbGljeSBsaW5lRW5kaW5nRWxsaXBzaXNQb2xpY3koY29uc3QgUmVu
ZGVyU3R5bGUmIHJvb3RTdHlsZSwgc2l6ZV90IG51bWJlck9mTGluZXMsIHN0ZDo6b3B0aW9uYWw8
c2l6ZV90PiBtYXhpbXVtTnVtYmVyT2ZWaXNpYmxlTGluZXMpCiB7CiAgICAgLy8gV2UgbWF5IGhh
dmUgcGFzc2VkIHRoZSBsaW5lLWNsYW1wIGxpbmUgd2l0aCBvdmVyZmxvdyB2aXNpYmxlLgogICAg
IGlmIChtYXhpbXVtTnVtYmVyT2ZWaXNpYmxlTGluZXMgJiYgbnVtYmVyT2ZMaW5lcyA8ICptYXhp
bXVtTnVtYmVyT2ZWaXNpYmxlTGluZXMpIHsKICAgICAgICAgLy8gSWYgdGhlIG5leHQgY2FsbCB0
byBsYXlvdXRJbmxpbmVDb250ZW50KCkgd29uJ3QgcHJvZHVjZSBhIGxpbmUgd2l0aCBjb250ZW50
IChlLmcuIG9ubHkgZmxvYXRzKSwgd2UnbGwgZW5kIHVwIGhlcmUgYWdhaW4uCiAgICAgICAgIGF1
dG8gc2hvdWxkQXBwbHlDbGFtcFdoZW5BcHBsaWNhYmxlID0gKm1heGltdW1OdW1iZXJPZlZpc2li
bGVMaW5lcyAtIG51bWJlck9mTGluZXMgPT0gMTsKICAgICAgICAgaWYgKHNob3VsZEFwcGx5Q2xh
bXBXaGVuQXBwbGljYWJsZSkKLSAgICAgICAgICAgIHJldHVybiBMaW5lQnVpbGRlcjo6TGluZUlu
cHV0OjpMaW5lRW5kaW5nRWxsaXBzaXNQb2xpY3k6OldoZW5Db250ZW50T3ZlcmZsb3dzSW5CbG9j
a0RpcmVjdGlvbjsKKyAgICAgICAgICAgIHJldHVybiBMaW5lQnVpbGRlcjo6TGluZUVuZGluZ0Vs
bGlwc2lzUG9saWN5OjpXaGVuQ29udGVudE92ZXJmbG93c0luQmxvY2tEaXJlY3Rpb247CiAgICAg
fQogICAgIC8vIFRydW5jYXRpb24gaXMgaW4gZWZmZWN0IHdoZW4gdGhlIGJsb2NrIGNvbnRhaW5l
ciBoYXMgb3ZlcmZsb3cgb3RoZXIgdGhhbiB2aXNpYmxlLgogICAgIGlmIChyb290U3R5bGUub3Zl
cmZsb3dYKCkgPT0gT3ZlcmZsb3c6OkhpZGRlbiAmJiByb290U3R5bGUudGV4dE92ZXJmbG93KCkg
PT0gVGV4dE92ZXJmbG93OjpFbGxpcHNpcykKLSAgICAgICAgcmV0dXJuIExpbmVCdWlsZGVyOjpM
aW5lSW5wdXQ6OkxpbmVFbmRpbmdFbGxpcHNpc1BvbGljeTo6V2hlbkNvbnRlbnRPdmVyZmxvd3NJ
bklubGluZURpcmVjdGlvbjsKLSAgICByZXR1cm4gTGluZUJ1aWxkZXI6OkxpbmVJbnB1dDo6TGlu
ZUVuZGluZ0VsbGlwc2lzUG9saWN5OjpObzsKKyAgICAgICAgcmV0dXJuIExpbmVCdWlsZGVyOjpM
aW5lRW5kaW5nRWxsaXBzaXNQb2xpY3k6OldoZW5Db250ZW50T3ZlcmZsb3dzSW5JbmxpbmVEaXJl
Y3Rpb247CisgICAgcmV0dXJuIExpbmVCdWlsZGVyOjpMaW5lRW5kaW5nRWxsaXBzaXNQb2xpY3k6
Ok5vOwogfQogCiB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpsaW5lTGF5b3V0KElubGlu
ZUl0ZW1zJiBpbmxpbmVJdGVtcywgY29uc3QgTGluZUJ1aWxkZXI6OklubGluZUl0ZW1SYW5nZSYg
bmVlZHNMYXlvdXRSYW5nZSwgY29uc3QgQ29uc3RyYWludHNGb3JJbmxpbmVDb250ZW50JiBjb25z
dHJhaW50cywgQmxvY2tMYXlvdXRTdGF0ZSYgYmxvY2tMYXlvdXRTdGF0ZSkKQEAgLTI0MywxMCAr
MjQzLDEwIEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxpbmVMYXlvdXQoSW5saW5l
SXRlbXMmIGlubGluZUl0ZW1zLCBjb25zdCBMaW5lQnVpCiAgICAgd2hpbGUgKHRydWUpIHsKIAog
ICAgICAgICBhdXRvIGxpbmVJbml0aWFsUmVjdCA9IElubGluZVJlY3QgeyBsaW5lTG9naWNhbFRv
cCwgY29uc3RyYWludHMuaG9yaXpvbnRhbCgpLmxvZ2ljYWxMZWZ0LCBjb25zdHJhaW50cy5ob3Jp
em9udGFsKCkubG9naWNhbFdpZHRoLCBmb3JtYXR0aW5nR2VvbWV0cnkoKS5pbml0aWFsTGluZUhl
aWdodCghcHJldmlvdXNMaW5lLmhhc192YWx1ZSgpKSB9OwotICAgICAgICBhdXRvIGVsbGlwc2lz
UG9saWN5ID0gbGluZUVuZGluZ0VsbGlwc2lzUG9saWN5KHJvb3RTdHlsZSwgbnVtYmVyT2ZMaW5l
cywgbWF4aW11bU51bWJlck9mVmlzaWJsZUxpbmVzRm9yVGhpc0lubGluZUNvbnRlbnQpOwotICAg
ICAgICBhdXRvIGxpbmVDb250ZW50ID0gbGluZUJ1aWxkZXIubGF5b3V0SW5saW5lQ29udGVudCh7
IHsgZmlyc3RJbmxpbmVJdGVtTmVlZHNMYXlvdXQsIG5lZWRzTGF5b3V0UmFuZ2UuZW5kIH0sIGxp
bmVJbml0aWFsUmVjdCwgZWxsaXBzaXNQb2xpY3kgfSwgcHJldmlvdXNMaW5lKTsKKyAgICAgICAg
YXV0byBsaW5lQ29udGVudCA9IGxpbmVCdWlsZGVyLmxheW91dElubGluZUNvbnRlbnQoeyB7IGZp
cnN0SW5saW5lSXRlbU5lZWRzTGF5b3V0LCBuZWVkc0xheW91dFJhbmdlLmVuZCB9LCBsaW5lSW5p
dGlhbFJlY3QgfSwgcHJldmlvdXNMaW5lKTsKIAotICAgICAgICBhdXRvIGxpbmVMb2dpY2FsUmVj
dCA9IGNyZWF0ZURpc3BsYXlDb250ZW50Rm9yTGluZShsaW5lQ29udGVudCwgY29uc3RyYWludHMs
IGJsb2NrTGF5b3V0U3RhdGUpOworICAgICAgICBhdXRvIGVsbGlwc2lzUG9saWN5ID0gbGluZUVu
ZGluZ0VsbGlwc2lzUG9saWN5KHJvb3RTdHlsZSwgbnVtYmVyT2ZMaW5lcywgbWF4aW11bU51bWJl
ck9mVmlzaWJsZUxpbmVzRm9yVGhpc0lubGluZUNvbnRlbnQpOworICAgICAgICBhdXRvIGxpbmVM
b2dpY2FsUmVjdCA9IGNyZWF0ZURpc3BsYXlDb250ZW50Rm9yTGluZShsaW5lQ29udGVudCwgY29u
c3RyYWludHMsIGVsbGlwc2lzUG9saWN5LCBibG9ja0xheW91dFN0YXRlKTsKICAgICAgICAgaWYg
KGxpbmVDb250ZW50LmlzTGFzdExpbmVXaXRoSW5saW5lQ29udGVudCkKICAgICAgICAgICAgIGZv
cm1hdHRpbmdTdGF0ZS5zZXRDbGVhckdhcEFmdGVyTGFzdExpbmUoZm9ybWF0dGluZ0dlb21ldHJ5
KCkubG9naWNhbFRvcEZvck5leHRMaW5lKGxpbmVDb250ZW50LCBsaW5lTG9naWNhbFJlY3QsIGZs
b2F0aW5nQ29udGV4dCkgLSBsaW5lTG9naWNhbFJlY3QuYm90dG9tKCkpOwogCkBAIC00NTcsMTQg
KzQ1NywxOCBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb2xsZWN0Q29udGVudElm
TmVlZGVkKCkKICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lSXRlbXMoaW5saW5lSXRlbXNC
dWlsZGVyLmJ1aWxkKCkpOwogfQogCi1JbmxpbmVSZWN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0
OjpjcmVhdGVEaXNwbGF5Q29udGVudEZvckxpbmUoY29uc3QgTGluZUJ1aWxkZXI6OkxpbmVDb250
ZW50JiBsaW5lQ29udGVudCwgY29uc3QgQ29uc3RyYWludHNGb3JJbmxpbmVDb250ZW50JiBjb25z
dHJhaW50cywgY29uc3QgQmxvY2tMYXlvdXRTdGF0ZSYgYmxvY2tMYXlvdXRTdGF0ZSkKK0lubGlu
ZVJlY3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNyZWF0ZURpc3BsYXlDb250ZW50Rm9yTGlu
ZShjb25zdCBMaW5lQnVpbGRlcjo6TGluZUNvbnRlbnQmIGxpbmVDb250ZW50LCBjb25zdCBDb25z
dHJhaW50c0ZvcklubGluZUNvbnRlbnQmIGNvbnN0cmFpbnRzLCBMaW5lQnVpbGRlcjo6TGluZUVu
ZGluZ0VsbGlwc2lzUG9saWN5IGxpbmVFbmRpbmdFbGxpcHNpc1BvbGljeSwgY29uc3QgQmxvY2tM
YXlvdXRTdGF0ZSYgYmxvY2tMYXlvdXRTdGF0ZSkKIHsKICAgICBhdXRvJiBmb3JtYXR0aW5nU3Rh
dGUgPSB0aGlzLT5mb3JtYXR0aW5nU3RhdGUoKTsKICAgICBhdXRvIGN1cnJlbnRMaW5lSW5kZXgg
PSBmb3JtYXR0aW5nU3RhdGUubGluZXMoKS5zaXplKCk7CiAKICAgICBhdXRvIGxpbmVCb3ggPSBM
aW5lQm94QnVpbGRlciB7ICp0aGlzLCBsaW5lQ29udGVudCwgYmxvY2tMYXlvdXRTdGF0ZSB9LmJ1
aWxkKGN1cnJlbnRMaW5lSW5kZXgpOwogICAgIGF1dG8gZGlzcGxheUxpbmUgPSBJbmxpbmVEaXNw
bGF5TGluZUJ1aWxkZXIgeyAqdGhpcyB9LmJ1aWxkKGxpbmVDb250ZW50LCBsaW5lQm94LCBjb25z
dHJhaW50cyk7Ci0gICAgZm9ybWF0dGluZ1N0YXRlLmFkZEJveGVzKElubGluZURpc3BsYXlDb250
ZW50QnVpbGRlciB7ICp0aGlzLCBmb3JtYXR0aW5nU3RhdGUgfS5idWlsZChsaW5lQ29udGVudCwg
bGluZUJveCwgZGlzcGxheUxpbmUsIGN1cnJlbnRMaW5lSW5kZXgpKTsKKyAgICBhdXRvIGJveGVz
ID0gSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyIHsgKnRoaXMsIGZvcm1hdHRpbmdTdGF0ZSB9
LmJ1aWxkKGxpbmVDb250ZW50LCBsaW5lQm94LCBkaXNwbGF5TGluZSwgY3VycmVudExpbmVJbmRl
eCk7CisgICAgaWYgKGF1dG8gZWxsaXBzaXNSZWN0ID0gSW5saW5lRGlzcGxheUxpbmVCdWlsZGVy
Ojp0cmFpbGluZ0VsbGlwc2lzVmlzdWFsUmVjdEFmdGVyVHJ1bmNhdGlvbihsaW5lRW5kaW5nRWxs
aXBzaXNQb2xpY3ksIGRpc3BsYXlMaW5lLCBib3hlcywgbGluZUNvbnRlbnQuaXNMYXN0TGluZVdp
dGhJbmxpbmVDb250ZW50KSkKKyAgICAgICAgZGlzcGxheUxpbmUuc2V0RWxsaXBzaXNWaXN1YWxS
ZWN0KCplbGxpcHNpc1JlY3QpOworCisgICAgZm9ybWF0dGluZ1N0YXRlLmFkZEJveGVzKFdURk1v
dmUoYm94ZXMpKTsKICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkTGluZUJveChXVEZNb3ZlKGxpbmVC
b3gpKTsKICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkTGluZShkaXNwbGF5TGluZSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lu
bGluZUZvcm1hdHRpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oCmluZGV4IDcxMDYxNDBk
NWQxYS4uMTYyNDdjMDc3Nzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1h
dHRpbmdDb250ZXh0LmgKQEAgLTcyLDcgKzcyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXB1
dGVXaWR0aEFuZE1hcmdpbihjb25zdCBCb3gmLCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMm
KTsKIAogICAgIHZvaWQgY29sbGVjdENvbnRlbnRJZk5lZWRlZCgpOwotICAgIElubGluZVJlY3Qg
Y3JlYXRlRGlzcGxheUNvbnRlbnRGb3JMaW5lKGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lQ29udGVu
dCYsIGNvbnN0IENvbnN0cmFpbnRzRm9ySW5saW5lQ29udGVudCYsIGNvbnN0IEJsb2NrTGF5b3V0
U3RhdGUmKTsKKyAgICBJbmxpbmVSZWN0IGNyZWF0ZURpc3BsYXlDb250ZW50Rm9yTGluZShjb25z
dCBMaW5lQnVpbGRlcjo6TGluZUNvbnRlbnQmLCBjb25zdCBDb25zdHJhaW50c0ZvcklubGluZUNv
bnRlbnQmLCBMaW5lQnVpbGRlcjo6TGluZUVuZGluZ0VsbGlwc2lzUG9saWN5LCBjb25zdCBCbG9j
a0xheW91dFN0YXRlJik7CiAgICAgdm9pZCByZXNldEdlb21ldHJ5Rm9yQ2xhbXBlZENvbnRlbnQo
Y29uc3QgTGluZUJ1aWxkZXI6OklubGluZUl0ZW1SYW5nZSYgbmVlZHNEaXNwbGF5Q29udGVudFJh
bmdlLCBjb25zdCBMaW5lQnVpbGRlcjo6RmxvYXRMaXN0JiBvdmVyZmxvd2luZ0Zsb2F0cywgTGF5
b3V0UG9pbnQgdG9wbGVmdCk7CiAKICAgICB2b2lkIGludmFsaWRhdGVGb3JtYXR0aW5nU3RhdGUo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL0lubGluZUxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5jcHAKaW5kZXggOGYwMDE3OGQzOGUyLi5mODU3NWEy
MjMxZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvaW5saW5lL0lubGluZUxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmUuY3BwCkBAIC01MCw3ICs1MCw2IEBAIExp
bmU6On5MaW5lKCkKIHZvaWQgTGluZTo6aW5pdGlhbGl6ZShjb25zdCBWZWN0b3I8SW5saW5lSXRl
bT4mIGxpbmVTcGFubmluZ0lubGluZUJveGVzLCBib29sIGlzRmlyc3RGb3JtYXR0ZWRMaW5lKQog
ewogICAgIG1faXNGaXJzdEZvcm1hdHRlZExpbmUgPSBpc0ZpcnN0Rm9ybWF0dGVkTGluZTsKLSAg
ICBtX2NvbnRlbnRJc1RydW5jYXRlZCA9IGZhbHNlOwogICAgIG1faW5saW5lQm94TGlzdFdpdGhD
bG9uZWREZWNvcmF0aW9uRW5kLmNsZWFyKCk7CiAgICAgbV9jbG9uZWRFbmREZWNvcmF0aW9uV2lk
dGhGb3JJbmxpbmVCb3hSdW5zID0geyB9OwogICAgIG1fbm9uU3Bhbm5pbmdJbmxpbmVMZXZlbEJv
eENvdW50ID0gMDsKQEAgLTE4MSwyNyArMTgwLDYgQEAgdm9pZCBMaW5lOjphcHBseVJ1bkV4cGFu
c2lvbihJbmxpbmVMYXlvdXRVbml0IGhvcml6b250YWxBdmFpbGFibGVTcGFjZSkKICAgICBtX2Nv
bnRlbnRMb2dpY2FsV2lkdGggKz0gYWNjdW11bGF0ZWRFeHBhbnNpb247CiB9CiAKLXZvaWQgTGlu
ZTo6dHJ1bmNhdGUoSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsUmlnaHQpCi17Ci0gICAgQVNTRVJU
KCFtX2NvbnRlbnRJc1RydW5jYXRlZCk7Ci0gICAgQVNTRVJUKG1fY29udGVudExvZ2ljYWxXaWR0
aCA+IGxvZ2ljYWxSaWdodCk7Ci0gICAgYXV0byBpc0ZpcnN0UnVuID0gdHJ1ZTsKLSAgICBmb3Ig
KGF1dG8mIHJ1biA6IG1fcnVucykgewotICAgICAgICBpZiAocnVuLmlzSW5saW5lQm94KCkpCi0g
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKHJ1bi5sb2dpY2FsUmlnaHQoKSA+IGxv
Z2ljYWxSaWdodCkgewotICAgICAgICAgICAgLy8gVGhlIGZpcnN0IGNoYXJhY3RlciBvciBhdG9t
aWMgaW5saW5lLWxldmVsIGVsZW1lbnQgb24gYSBsaW5lIG11c3QgYmUgY2xpcHBlZCByYXRoZXIg
dGhhbiBlbGxpcHNlZC4KLSAgICAgICAgICAgIGlmIChpc0ZpcnN0UnVuKQotICAgICAgICAgICAg
ICAgIG1fY29udGVudElzVHJ1bmNhdGVkID0gcnVuLnRydW5jYXRlKGxvZ2ljYWxSaWdodCAtIHJ1
bi5sb2dpY2FsTGVmdCgpLCBSdW46OkNhbkZ1bGx5VHJ1bmNhdGU6Ok5vKTsKLSAgICAgICAgICAg
IGVsc2UgewotICAgICAgICAgICAgICAgIHJ1bi50cnVuY2F0ZShsb2dpY2FsUmlnaHQgLSBydW4u
bG9naWNhbExlZnQoKSk7Ci0gICAgICAgICAgICAgICAgbV9jb250ZW50SXNUcnVuY2F0ZWQgPSB0
cnVlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGlzRmlyc3RSdW4gPSBmYWxz
ZTsKLSAgICB9Ci19Ci0KIHZvaWQgTGluZTo6aGFuZGxlVHJhaWxpbmdUcmltbWFibGVDb250ZW50
KFRyYWlsaW5nQ29udGVudEFjdGlvbiB0cmFpbGluZ1RyaW1tYWJsZUNvbnRlbnRBY3Rpb24pCiB7
CiAgICAgaWYgKG1fdHJpbW1hYmxlVHJhaWxpbmdDb250ZW50LmlzRW1wdHkoKSB8fCBtX3J1bnMu
aXNFbXB0eSgpKQpAQCAtODUxLDcgKzgyOSw3IEBAIHN0ZDo6b3B0aW9uYWw8TGluZTo6UnVuPiBM
aW5lOjpSdW46OmRldGFjaFRyYWlsaW5nV2hpdGVzcGFjZSgpCiAgICAgYXV0byB0cmFpbGluZ1do
aXRlc3BhY2VSdW4gPSAqdGhpczsKIAogICAgIGF1dG8gbGVhZGluZ05vbldoaXRlc3BhY2VDb250
ZW50TGVuZ3RoID0gbV90ZXh0Q29udGVudC0+bGVuZ3RoIC0gbV90cmFpbGluZ1doaXRlc3BhY2Ut
Pmxlbmd0aDsKLSAgICB0cmFpbGluZ1doaXRlc3BhY2VSdW4ubV90ZXh0Q29udGVudCA9IHsgbV90
ZXh0Q29udGVudC0+c3RhcnQgKyBsZWFkaW5nTm9uV2hpdGVzcGFjZUNvbnRlbnRMZW5ndGgsIG1f
dHJhaWxpbmdXaGl0ZXNwYWNlLT5sZW5ndGgsIHsgfSwgZmFsc2UgfTsKKyAgICB0cmFpbGluZ1do
aXRlc3BhY2VSdW4ubV90ZXh0Q29udGVudCA9IHsgbV90ZXh0Q29udGVudC0+c3RhcnQgKyBsZWFk
aW5nTm9uV2hpdGVzcGFjZUNvbnRlbnRMZW5ndGgsIG1fdHJhaWxpbmdXaGl0ZXNwYWNlLT5sZW5n
dGgsIGZhbHNlIH07CiAKICAgICB0cmFpbGluZ1doaXRlc3BhY2VSdW4ubV9sb2dpY2FsV2lkdGgg
PSBtX3RyYWlsaW5nV2hpdGVzcGFjZS0+d2lkdGg7CiAgICAgdHJhaWxpbmdXaGl0ZXNwYWNlUnVu
Lm1fbG9naWNhbExlZnQgPSBsb2dpY2FsUmlnaHQoKSAtIG1fdHJhaWxpbmdXaGl0ZXNwYWNlLT53
aWR0aDsKQEAgLTkxMywzMCArODkxLDYgQEAgSW5saW5lTGF5b3V0VW5pdCBMaW5lOjpSdW46OnJl
bW92ZVRyYWlsaW5nV2hpdGVzcGFjZSgpCiAgICAgcmV0dXJuIHRyaW1tZWRXaWR0aDsKIH0KIAot
Ym9vbCBMaW5lOjpSdW46OnRydW5jYXRlKElubGluZUxheW91dFVuaXQgdmlzaWJsZVdpZHRoLCBD
YW5GdWxseVRydW5jYXRlIGNhbkZ1bGx5VHJ1bmNhdGUpCi17Ci0gICAgQVNTRVJUKCF2aXNpYmxl
V2lkdGggfHwgdmlzaWJsZVdpZHRoIDwgbV9sb2dpY2FsV2lkdGgpOwotCi0gICAgaWYgKGlzVGV4
dCgpKSB7Ci0gICAgICAgIG1faXNUcnVuY2F0ZWQgPSB0cnVlOwotICAgICAgICBhdXRvJiBpbmxp
bmVUZXh0Qm94ID0gZG93bmNhc3Q8SW5saW5lVGV4dEJveD4oKm1fbGF5b3V0Qm94KTsKLSAgICAg
ICAgYXV0byBsZWZ0U2lkZSA9IFRleHRVdGlsOjpXb3JkQnJlYWtMZWZ0IHsgfTsKLSAgICAgICAg
aWYgKHZpc2libGVXaWR0aCA+IDAuZikKLSAgICAgICAgICAgIGxlZnRTaWRlID0gVGV4dFV0aWw6
OmJyZWFrV29yZChpbmxpbmVUZXh0Qm94LCBtX3RleHRDb250ZW50LT5zdGFydCwgbV90ZXh0Q29u
dGVudC0+bGVuZ3RoLCBtX2xvZ2ljYWxXaWR0aCwgdmlzaWJsZVdpZHRoLCBtX2xvZ2ljYWxMZWZ0
LCBtX3N0eWxlLmZvbnRDYXNjYWRlKCkpOwotCi0gICAgICAgIGlmIChsZWZ0U2lkZS5sZW5ndGgp
Ci0gICAgICAgICAgICBtX3RleHRDb250ZW50LT5wYXJ0aWFsbHlWaXNpYmxlQ29udGVudCA9IHsg
bGVmdFNpZGUubGVuZ3RoLCBsZWZ0U2lkZS5sb2dpY2FsV2lkdGggfTsKLSAgICAgICAgZWxzZSBp
ZiAoY2FuRnVsbHlUcnVuY2F0ZSA9PSBDYW5GdWxseVRydW5jYXRlOjpObykgewotICAgICAgICAg
ICAgYXV0byBmaXJzdENoYXJhY3Rlckxlbmd0aCA9IFRleHRVdGlsOjpmaXJzdFVzZXJQZXJjZWl2
ZWRDaGFyYWN0ZXJMZW5ndGgoaW5saW5lVGV4dEJveCwgbV90ZXh0Q29udGVudC0+c3RhcnQsIG1f
dGV4dENvbnRlbnQtPmxlbmd0aCk7Ci0gICAgICAgICAgICBhdXRvIGZpcnN0Q2hhcmFjdGVyV2lk
dGggPSBUZXh0VXRpbDo6d2lkdGgoaW5saW5lVGV4dEJveCwgaW5saW5lVGV4dEJveC5zdHlsZSgp
LmZvbnRDYXNjYWRlKCksIG1fdGV4dENvbnRlbnQtPnN0YXJ0LCBtX3RleHRDb250ZW50LT5zdGFy
dCArIGZpcnN0Q2hhcmFjdGVyTGVuZ3RoLCB7IH0sIFRleHRVdGlsOjpVc2VUcmFpbGluZ1doaXRl
c3BhY2VNZWFzdXJpbmdPcHRpbWl6YXRpb246Ok5vKTsKLSAgICAgICAgICAgIG1fdGV4dENvbnRl
bnQtPnBhcnRpYWxseVZpc2libGVDb250ZW50ID0geyBmaXJzdENoYXJhY3Rlckxlbmd0aCwgZmly
c3RDaGFyYWN0ZXJXaWR0aCB9OwotICAgICAgICB9Ci0gICAgfSBlbHNlCi0gICAgICAgIG1faXNU
cnVuY2F0ZWQgPSBjYW5GdWxseVRydW5jYXRlID09IENhbkZ1bGx5VHJ1bmNhdGU6OlllczsKLQot
ICAgIHJldHVybiBtX2lzVHJ1bmNhdGVkOwotfQotCiB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmUuaCBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxp
bmUuaAppbmRleCBhODIyM2FiN2EwZGUuLjQxNDRiZmJhNGNjYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGlu
ZUxpbmUuaApAQCAtNDcsNyArNDcsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmQoY29uc3Qg
SW5saW5lSXRlbSYsIGNvbnN0IFJlbmRlclN0eWxlJiwgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2Fs
V2lkdGgpOwogCiAgICAgYm9vbCBoYXNDb250ZW50KCkgY29uc3Q7Ci0gICAgYm9vbCBpc0NvbnRl
bnRUcnVuY2F0ZWQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRJc1RydW5jYXRlZDsgfQogCiAg
ICAgYm9vbCBjb250ZW50TmVlZHNCaWRpUmVvcmRlcmluZygpIGNvbnN0IHsgcmV0dXJuIG1faGFz
Tm9uRGVmYXVsdEJpZGlMZXZlbFJ1bjsgfQogCkBAIC03MCw3ICs2OSw2IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGhhbmRsZU92ZXJmbG93aW5nTm9uQnJlYWtpbmdTcGFjZShUcmFpbGluZ0NvbnRlbnRB
Y3Rpb24sIElubGluZUxheW91dFVuaXQgb3ZlcmZsb3dpbmdXaWR0aCk7CiAgICAgdm9pZCByZXNl
dEJpZGlMZXZlbEZvclRyYWlsaW5nV2hpdGVzcGFjZShVQmlEaUxldmVsIHJvb3RCaWRpTGV2ZWwp
OwogICAgIHZvaWQgYXBwbHlSdW5FeHBhbnNpb24oSW5saW5lTGF5b3V0VW5pdCBob3Jpem9udGFs
QXZhaWxhYmxlU3BhY2UpOwotICAgIHZvaWQgdHJ1bmNhdGUoSW5saW5lTGF5b3V0VW5pdCBsb2dp
Y2FsUmlnaHQpOwogCiAgICAgc3RydWN0IFJ1biB7CiAgICAgICAgIGVudW0gY2xhc3MgVHlwZSA6
IHVpbnQ4X3QgewpAQCAtMTA0LDE3ICsxMDIsMTAgQEAgcHVibGljOgogICAgICAgICBib29sIGlz
Q29udGVudGZ1bCgpIGNvbnN0IHsgcmV0dXJuIChpc1RleHQoKSAmJiB0ZXh0Q29udGVudCgpLT5s
ZW5ndGgpIHx8IGlzQm94KCkgfHwgaXNMaW5lQnJlYWsoKSB8fCBpc0xpc3RNYXJrZXIoKTsgfQog
ICAgICAgICBib29sIGlzR2VuZXJhdGVkKCkgY29uc3QgeyByZXR1cm4gaXNMaXN0TWFya2VyKCk7
IH0KIAotICAgICAgICBib29sIGlzVHJ1bmNhdGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc1RydW5j
YXRlZDsgfQotCiAgICAgICAgIGNvbnN0IEJveCYgbGF5b3V0Qm94KCkgY29uc3QgeyByZXR1cm4g
Km1fbGF5b3V0Qm94OyB9CiAgICAgICAgIHN0cnVjdCBUZXh0IHsKICAgICAgICAgICAgIHNpemVf
dCBzdGFydCB7IDAgfTsKICAgICAgICAgICAgIHNpemVfdCBsZW5ndGggeyAwIH07Ci0gICAgICAg
ICAgICBzdHJ1Y3QgUGFydGlhbGx5VmlzaWJsZUNvbnRlbnQgewotICAgICAgICAgICAgICAgIHNp
emVfdCBsZW5ndGggeyAwIH07Ci0gICAgICAgICAgICAgICAgSW5saW5lTGF5b3V0VW5pdCB3aWR0
aCB7IDAuZiB9OwotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8UGFy
dGlhbGx5VmlzaWJsZUNvbnRlbnQ+IHBhcnRpYWxseVZpc2libGVDb250ZW50IHsgfTsKICAgICAg
ICAgICAgIGJvb2wgbmVlZHNIeXBoZW4geyBmYWxzZSB9OwogICAgICAgICB9OwogICAgICAgICBj
b25zdCBzdGQ6Om9wdGlvbmFsPFRleHQ+JiB0ZXh0Q29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
dGV4dENvbnRlbnQ7IH0KQEAgLTE3Miw4ICsxNjMsNiBAQCBwdWJsaWM6CiAgICAgICAgIGJvb2wg
aGFzVHJhaWxpbmdMZXR0ZXJTcGFjaW5nKCkgY29uc3Q7CiAgICAgICAgIElubGluZUxheW91dFVu
aXQgdHJhaWxpbmdMZXR0ZXJTcGFjaW5nKCkgY29uc3Q7CiAgICAgICAgIElubGluZUxheW91dFVu
aXQgcmVtb3ZlVHJhaWxpbmdMZXR0ZXJTcGFjaW5nKCk7Ci0gICAgICAgIGVudW0gY2xhc3MgQ2Fu
RnVsbHlUcnVuY2F0ZSA6IHVpbnQ4X3QgeyBZZXMsIE5vIH07Ci0gICAgICAgIGJvb2wgdHJ1bmNh
dGUoSW5saW5lTGF5b3V0VW5pdCB0cnVuY2F0ZWRXaWR0aCwgQ2FuRnVsbHlUcnVuY2F0ZSA9IENh
bkZ1bGx5VHJ1bmNhdGU6Olllcyk7CiAKICAgICAgICAgVHlwZSBtX3R5cGUgeyBUeXBlOjpUZXh0
IH07CiAgICAgICAgIGNvbnN0IEJveCogbV9sYXlvdXRCb3ggeyBudWxscHRyIH07CkBAIC0xODUs
NyArMTc0LDYgQEAgcHVibGljOgogICAgICAgICBzdGQ6Om9wdGlvbmFsPFRyYWlsaW5nV2hpdGVz
cGFjZT4gbV90cmFpbGluZ1doaXRlc3BhY2UgeyB9OwogICAgICAgICBzdGQ6Om9wdGlvbmFsPHNp
emVfdD4gbV9sYXN0Tm9uV2hpdGVzcGFjZUNvbnRlbnRTdGFydCB7IH07CiAgICAgICAgIHN0ZDo6
b3B0aW9uYWw8VGV4dD4gbV90ZXh0Q29udGVudDsKLSAgICAgICAgYm9vbCBtX2lzVHJ1bmNhdGVk
IHsgZmFsc2UgfTsKICAgICB9OwogICAgIHVzaW5nIFJ1bkxpc3QgPSBWZWN0b3I8UnVuLCAxMD47
CiAgICAgY29uc3QgUnVuTGlzdCYgcnVucygpIGNvbnN0IHsgcmV0dXJuIG1fcnVuczsgfQpAQCAt
MjgxLDcgKzI2OSw2IEBAIHByaXZhdGU6CiAgICAgSW5saW5lQm94TGlzdFdpdGhDbG9uZWREZWNv
cmF0aW9uRW5kIG1faW5saW5lQm94TGlzdFdpdGhDbG9uZWREZWNvcmF0aW9uRW5kOwogICAgIElu
bGluZUxheW91dFVuaXQgbV9jbG9uZWRFbmREZWNvcmF0aW9uV2lkdGhGb3JJbmxpbmVCb3hSdW5z
IHsgMCB9OwogICAgIGJvb2wgbV9oYXNOb25EZWZhdWx0QmlkaUxldmVsUnVuIHsgZmFsc2UgfTsK
LSAgICBib29sIG1fY29udGVudElzVHJ1bmNhdGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1faXNG
aXJzdEZvcm1hdHRlZExpbmUgeyBmYWxzZSB9OwogICAgIFZlY3RvcjxJbmxpbmVMYXlvdXRVbml0
PiBtX2lubGluZUJveExvZ2ljYWxMZWZ0U3RhY2s7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJ1aWxkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5s
aW5lTGluZUJ1aWxkZXIuY3BwCmluZGV4IDY5OTdiZTAyNTAwNi4uNjdhZDc5ODhmNmFjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9J
bmxpbmVMaW5lQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJ1aWxkZXIuY3BwCkBAIC0zNDksMTQgKzM0OSwx
MiBAQCBMaW5lQnVpbGRlcjo6TGluZUNvbnRlbnQgTGluZUJ1aWxkZXI6OmxheW91dElubGluZUNv
bnRlbnQoY29uc3QgTGluZUlucHV0JiBsaW5lSQogICAgIGluaXRpYWxpemUobGluZUlucHV0Lmlu
aXRpYWxMb2dpY2FsUmVjdCwgaW5pdGlhbENvbnN0cmFpbnRzRm9yTGluZShsaW5lSW5wdXQuaW5p
dGlhbExvZ2ljYWxSZWN0LCBwcmV2aW91c0xpbmVFbmRzV2l0aExpbmVCcmVhayksIGxpbmVJbnB1
dC5uZWVkc0xheW91dFJhbmdlLCBwcmV2aW91c0xpbmUpOwogCiAgICAgYXV0byBjb21taXR0ZWRD
b250ZW50ID0gcGxhY2VJbmxpbmVDb250ZW50KGxpbmVJbnB1dC5uZWVkc0xheW91dFJhbmdlKTsK
LSAgICBhdXRvIGNvbW1pdHRlZFJhbmdlID0gY2xvc2UobGluZUlucHV0Lm5lZWRzTGF5b3V0UmFu
Z2UsIGxpbmVJbnB1dC5lbGxpcHNpc1BvbGljeSwgY29tbWl0dGVkQ29udGVudCk7CisgICAgYXV0
byBjb21taXR0ZWRSYW5nZSA9IGNsb3NlKGxpbmVJbnB1dC5uZWVkc0xheW91dFJhbmdlLCBjb21t
aXR0ZWRDb250ZW50KTsKIAogICAgIGF1dG8gaXNMYXN0TGluZSA9IGlzTGFzdExpbmVXaXRoSW5s
aW5lQ29udGVudChjb21taXR0ZWRSYW5nZSwgbGluZUlucHV0Lm5lZWRzTGF5b3V0UmFuZ2UuZW5k
LCBjb21taXR0ZWRDb250ZW50LnBhcnRpYWxUcmFpbGluZ0NvbnRlbnRMZW5ndGgpOwogICAgIGF1
dG8gcGFydGlhbE92ZXJmbG93aW5nQ29udGVudCA9IGNvbW1pdHRlZENvbnRlbnQucGFydGlhbFRy
YWlsaW5nQ29udGVudExlbmd0aCA/IHN0ZDo6bWFrZV9vcHRpb25hbDxQYXJ0aWFsQ29udGVudD4o
Y29tbWl0dGVkQ29udGVudC5wYXJ0aWFsVHJhaWxpbmdDb250ZW50TGVuZ3RoLCBjb21taXR0ZWRD
b250ZW50Lm92ZXJmbG93TG9naWNhbFdpZHRoKSA6IHN0ZDo6bnVsbG9wdDsKICAgICBhdXRvIGlu
bGluZUJhc2VEaXJlY3Rpb24gPSBtX2xpbmUucnVucygpLmlzRW1wdHkoKSA/IFRleHREaXJlY3Rp
b246OkxUUiA6IGlubGluZUJhc2VEaXJlY3Rpb25Gb3JMaW5lQ29udGVudCgpOwogICAgIGF1dG8g
Y29udGVudExvZ2ljYWxMZWZ0ID0gaG9yaXpvbnRhbEFsaWdubWVudE9mZnNldChpc0xhc3RMaW5l
KTsKLSAgICBhdXRvIGNvbnRlbnRJc1RydW5jYXRlZEluQmxvY2tEaXJlY3Rpb24gPSAoIWlzTGFz
dExpbmUgJiYgbGluZUlucHV0LmVsbGlwc2lzUG9saWN5ID09IExpbmVCdWlsZGVyOjpMaW5lSW5w
dXQ6OkxpbmVFbmRpbmdFbGxpcHNpc1BvbGljeTo6V2hlbkNvbnRlbnRPdmVyZmxvd3NJbkJsb2Nr
RGlyZWN0aW9uKSB8fCBsaW5lSW5wdXQuZWxsaXBzaXNQb2xpY3kgPT0gTGluZUJ1aWxkZXI6Okxp
bmVJbnB1dDo6TGluZUVuZGluZ0VsbGlwc2lzUG9saWN5OjpBbHdheXM7Ci0gICAgYXV0byBsaW5l
TmVlZHNUcmFpbGluZ0VsbGlwc2lzID0gbV9saW5lLmlzQ29udGVudFRydW5jYXRlZCgpIHx8IGNv
bnRlbnRJc1RydW5jYXRlZEluQmxvY2tEaXJlY3Rpb247CiAKICAgICByZXR1cm4geyBjb21taXR0
ZWRSYW5nZQogICAgICAgICAsIHBhcnRpYWxPdmVyZmxvd2luZ0NvbnRlbnQKQEAgLTM3Niw3ICsz
NzQsNiBAQCBMaW5lQnVpbGRlcjo6TGluZUNvbnRlbnQgTGluZUJ1aWxkZXI6OmxheW91dElubGlu
ZUNvbnRlbnQoY29uc3QgTGluZUlucHV0JiBsaW5lSQogICAgICAgICAsIG1fbGluZS5ub25TcGFu
bmluZ0lubGluZUxldmVsQm94Q291bnQoKQogICAgICAgICAsIGNvbXB1dGVkVmlzdWFsT3JkZXIo
bV9saW5lKQogICAgICAgICAsIGlubGluZUJhc2VEaXJlY3Rpb24KLSAgICAgICAgLCBsaW5lTmVl
ZHNUcmFpbGluZ0VsbGlwc2lzCiAgICAgICAgICwgbV9saW5lLnJ1bnMoKSB9OwogfQogCkBAIC0z
OTAsNyArMzg3LDcgQEAgTGluZUJ1aWxkZXI6OkludHJpbnNpY0NvbnRlbnQgTGluZUJ1aWxkZXI6
OmNvbXB1dGVkSW50cmluc2ljV2lkdGgoY29uc3QgSW5saW5lSXQKICAgICBpbml0aWFsaXplKGlu
aXRpYWxSZWN0LCBsaW5lQ29uc3RyYWludHMsIG5lZWRzTGF5b3V0UmFuZ2UsIHByZXZpb3VzTGlu
ZSk7CiAKICAgICBhdXRvIGNvbW1pdHRlZENvbnRlbnQgPSBwbGFjZUlubGluZUNvbnRlbnQobmVl
ZHNMYXlvdXRSYW5nZSk7Ci0gICAgYXV0byBjb21taXR0ZWRSYW5nZSA9IGNsb3NlKG5lZWRzTGF5
b3V0UmFuZ2UsIExpbmVJbnB1dDo6TGluZUVuZGluZ0VsbGlwc2lzUG9saWN5OjpObywgY29tbWl0
dGVkQ29udGVudCk7CisgICAgYXV0byBjb21taXR0ZWRSYW5nZSA9IGNsb3NlKG5lZWRzTGF5b3V0
UmFuZ2UsIGNvbW1pdHRlZENvbnRlbnQpOwogICAgIGF1dG8gbGluZVdpZHRoID0gbGluZUNvbnN0
cmFpbnRzLmxvZ2ljYWxSZWN0LmxlZnQoKSArIGxpbmVDb25zdHJhaW50cy5tYXJnaW5TdGFydCAr
IG1fbGluZS5jb250ZW50TG9naWNhbFdpZHRoKCk7CiAgICAgYXV0byBvdmVyZmxvdyA9IHN0ZDo6
b3B0aW9uYWw8UGFydGlhbENvbnRlbnQ+IHsgfTsKICAgICBpZiAoY29tbWl0dGVkQ29udGVudC5w
YXJ0aWFsVHJhaWxpbmdDb250ZW50TGVuZ3RoKQpAQCAtNTM5LDcgKzUzNiw3IEBAIExpbmVCdWls
ZGVyOjpDb21taXR0ZWRDb250ZW50IExpbmVCdWlsZGVyOjpwbGFjZUlubGluZUNvbnRlbnQoY29u
c3QgSW5saW5lSXRlbVJhCiAgICAgcmV0dXJuIHsgY29tbWl0dGVkSXRlbUNvdW50LCB7IH0gfTsK
IH0KIAotTGluZUJ1aWxkZXI6OklubGluZUl0ZW1SYW5nZSBMaW5lQnVpbGRlcjo6Y2xvc2UoY29u
c3QgSW5saW5lSXRlbVJhbmdlJiBuZWVkc0xheW91dFJhbmdlLCBMaW5lSW5wdXQ6OkxpbmVFbmRp
bmdFbGxpcHNpc1BvbGljeSBlbGxpcHNpc1BvbGljeSwgY29uc3QgQ29tbWl0dGVkQ29udGVudCYg
Y29tbWl0dGVkQ29udGVudCkKK0xpbmVCdWlsZGVyOjpJbmxpbmVJdGVtUmFuZ2UgTGluZUJ1aWxk
ZXI6OmNsb3NlKGNvbnN0IElubGluZUl0ZW1SYW5nZSYgbmVlZHNMYXlvdXRSYW5nZSwgY29uc3Qg
Q29tbWl0dGVkQ29udGVudCYgY29tbWl0dGVkQ29udGVudCkKIHsKICAgICBBU1NFUlQoY29tbWl0
dGVkQ29udGVudC5pdGVtQ291bnQgfHwgIW1fcGxhY2VkRmxvYXRzLmlzRW1wdHkoKSB8fCBtX2xp
bmVJc0NvbnN0cmFpbmVkQnlGbG9hdCk7CiAgICAgYXV0byYgcm9vdFN0eWxlID0gdGhpcy0+cm9v
dFN0eWxlKCk7CkBAIC01ODksNDEgKzU4Niw2IEBAIExpbmVCdWlsZGVyOjpJbmxpbmVJdGVtUmFu
Z2UgTGluZUJ1aWxkZXI6OmNsb3NlKGNvbnN0IElubGluZUl0ZW1SYW5nZSYgbmVlZHNMYXlvCiAg
ICAgICAgIGxpbmVFbmRzV2l0aEh5cGhlbiA9IGxhc3RUZXh0Q29udGVudCAmJiBsYXN0VGV4dENv
bnRlbnQtPm5lZWRzSHlwaGVuOwogICAgIH0KICAgICBtX3N1Y2Nlc3NpdmVIeXBoZW5hdGVkTGlu
ZUNvdW50ID0gbGluZUVuZHNXaXRoSHlwaGVuID8gbV9zdWNjZXNzaXZlSHlwaGVuYXRlZExpbmVD
b3VudCArIDEgOiAwOwotCi0gICAgYXV0byBoYW5kbGVMaW5lRW5kaW5nRWxsaXBzaXNQb2xpY3kg
PSBbJl0gewotICAgICAgICBzd2l0Y2ggKGVsbGlwc2lzUG9saWN5KSB7Ci0gICAgICAgIGNhc2Ug
TGluZUlucHV0OjpMaW5lRW5kaW5nRWxsaXBzaXNQb2xpY3k6Ok5vOgotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgTGluZUlucHV0OjpMaW5lRW5kaW5nRWxsaXBzaXNQb2xpY3k6Oldo
ZW5Db250ZW50T3ZlcmZsb3dzSW5JbmxpbmVEaXJlY3Rpb246Ci0gICAgICAgICAgICBpZiAobV9s
aW5lLmNvbnRlbnRMb2dpY2FsV2lkdGgoKSA+IGhvcml6b250YWxBdmFpbGFibGVTcGFjZSkgewot
ICAgICAgICAgICAgICAgIGF1dG8gZWxsaXBzaXNXaWR0aCA9IHJvb3RTdHlsZS5mb250Q2FzY2Fk
ZSgpLndpZHRoKFRleHRVdGlsOjplbGxpcHNpc1RleHRSdW4oKSk7Ci0gICAgICAgICAgICAgICAg
YXV0byBsb2dpY2FsUmlnaHRGb3JDb250ZW50V2l0aG91dEVsbGlwc2lzID0gc3RkOjptYXgoMC5m
LCBob3Jpem9udGFsQXZhaWxhYmxlU3BhY2UgLSBlbGxpcHNpc1dpZHRoKTsKLSAgICAgICAgICAg
ICAgICBtX2xpbmUudHJ1bmNhdGUobG9naWNhbFJpZ2h0Rm9yQ29udGVudFdpdGhvdXRFbGxpcHNp
cyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBMaW5l
SW5wdXQ6OkxpbmVFbmRpbmdFbGxpcHNpc1BvbGljeTo6V2hlbkNvbnRlbnRPdmVyZmxvd3NJbkJs
b2NrRGlyZWN0aW9uOgotICAgICAgICAgICAgaWYgKGlzTGFzdExpbmUpCi0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICBGQUxMVEhST1VHSDsKLSAgICAgICAgY2FzZSBMaW5lSW5w
dXQ6OkxpbmVFbmRpbmdFbGxpcHNpc1BvbGljeTo6QWx3YXlzOiB7Ci0gICAgICAgICAgICBhdXRv
IGF2YWlsYWJsZVNwYWNlQWZ0ZXJDb250ZW50ID0gaG9yaXpvbnRhbEF2YWlsYWJsZVNwYWNlOwot
ICAgICAgICAgICAgaWYgKGF1dG8gY29udGVudExvZ2ljYWxMZWZ0ID0gaG9yaXpvbnRhbEFsaWdu
bWVudE9mZnNldChpc0xhc3RMaW5lKSkgewotICAgICAgICAgICAgICAgIC8vIEFsaWdubWVudCBt
YXkgbW92ZSBjb250ZW50IHdpdGhpbiB0aGUgbGluZSBib3ggbGVhdm5pZyBsZXNzIChvciB6ZXJv
KSBzcGFjZSBmb3IgZWxsaXBzaXMgKGUuZy4gdGV4dC1hbGlnbjogcmlnaHQpLgotICAgICAgICAg
ICAgICAgIGF2YWlsYWJsZVNwYWNlQWZ0ZXJDb250ZW50IC09IGNvbnRlbnRMb2dpY2FsTGVmdDsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGF1dG8gZWxsaXBzaXNXaWR0aCA9IHJvb3RTdHls
ZS5mb250Q2FzY2FkZSgpLndpZHRoKFRleHRVdGlsOjplbGxpcHNpc1RleHRSdW4oKSk7Ci0gICAg
ICAgICAgICBpZiAobV9saW5lLmNvbnRlbnRMb2dpY2FsV2lkdGgoKSAmJiBtX2xpbmUuY29udGVu
dExvZ2ljYWxXaWR0aCgpICsgZWxsaXBzaXNXaWR0aCA+IGF2YWlsYWJsZVNwYWNlQWZ0ZXJDb250
ZW50KSB7Ci0gICAgICAgICAgICAgICAgYXV0byBsb2dpY2FsUmlnaHRGb3JDb250ZW50V2l0aG91
dEVsbGlwc2lzID0gc3RkOjptYXgoMC5mLCBhdmFpbGFibGVTcGFjZUFmdGVyQ29udGVudCAtIGVs
bGlwc2lzV2lkdGgpOwotICAgICAgICAgICAgICAgIG1fbGluZS50cnVuY2F0ZShsb2dpY2FsUmln
aHRGb3JDb250ZW50V2l0aG91dEVsbGlwc2lzKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfTsKLSAg
ICBoYW5kbGVMaW5lRW5kaW5nRWxsaXBzaXNQb2xpY3koKTsKICAgICByZXR1cm4gbGluZVJhbmdl
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2lubGluZS9JbmxpbmVMaW5lQnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJ1aWxkZXIuaAppbmRleCA0ODYxMWQ1
NDFkZjguLjYxNmI3ZjQ2ODJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJ1aWxkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQnVpbGRl
ci5oCkBAIC00Miw2ICs0MiwxNCBAQCBwdWJsaWM6CiAgICAgTGluZUJ1aWxkZXIoSW5saW5lRm9y
bWF0dGluZ0NvbnRleHQmLCBCbG9ja0xheW91dFN0YXRlJiwgSG9yaXpvbnRhbENvbnN0cmFpbnRz
IHJvb3RIb3Jpem9udGFsQ29uc3RyYWludHMsIGNvbnN0IElubGluZUl0ZW1zJiwgc3RkOjpvcHRp
b25hbDxJbnRyaW5zaWNXaWR0aE1vZGU+ID0gc3RkOjpudWxsb3B0KTsKICAgICBMaW5lQnVpbGRl
cihjb25zdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYsIGNvbnN0IElubGluZUl0ZW1zJiwgc3Rk
OjpvcHRpb25hbDxJbnRyaW5zaWNXaWR0aE1vZGU+KTsKIAorICAgIGVudW0gY2xhc3MgTGluZUVu
ZGluZ0VsbGlwc2lzUG9saWN5IDogdWludDhfdCB7CisgICAgICAgIE5vLAorICAgICAgICBXaGVu
Q29udGVudE92ZXJmbG93c0luSW5saW5lRGlyZWN0aW9uLAorICAgICAgICBXaGVuQ29udGVudE92
ZXJmbG93c0luQmxvY2tEaXJlY3Rpb24sCisgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBi
ZSB1c2VkIHdoZW4gd2UgcmVhbGl6ZSB0aGUgbGFzdCBsaW5lIG9mIHRoaXMgSUZDIGlzIHdoZXJl
IHRoZSBjb250ZW50IGlzIHRydW5jYXRlZCAoc2libGluZyBJRkMgaGFzIG1vcmUgbGluZXMpLgor
ICAgICAgICBBbHdheXMKKyAgICB9OworCiAgICAgc3RydWN0IElubGluZUl0ZW1SYW5nZSB7CiAg
ICAgICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIHN0YXJ0ID09IGVuZDsgfQogICAg
ICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIGVuZCAtIHN0YXJ0OyB9CkBAIC01MSwx
NSArNTksNiBAQCBwdWJsaWM6CiAgICAgc3RydWN0IExpbmVJbnB1dCB7CiAgICAgICAgIElubGlu
ZUl0ZW1SYW5nZSBuZWVkc0xheW91dFJhbmdlOwogICAgICAgICBJbmxpbmVSZWN0IGluaXRpYWxM
b2dpY2FsUmVjdDsKLQotICAgICAgICBlbnVtIGNsYXNzIExpbmVFbmRpbmdFbGxpcHNpc1BvbGlj
eSA6IHVpbnQ4X3QgewotICAgICAgICAgICAgTm8sCi0gICAgICAgICAgICBXaGVuQ29udGVudE92
ZXJmbG93c0luSW5saW5lRGlyZWN0aW9uLAotICAgICAgICAgICAgV2hlbkNvbnRlbnRPdmVyZmxv
d3NJbkJsb2NrRGlyZWN0aW9uLAotICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJl
IHVzZWQgd2hlbiB3ZSByZWFsaXplIHRoZSBsYXN0IGxpbmUgb2YgdGhpcyBJRkMgaXMgd2hlcmUg
dGhlIGNvbnRlbnQgaXMgdHJ1bmNhdGVkIChzaWJsaW5nIElGQyBoYXMgbW9yZSBsaW5lcykuCi0g
ICAgICAgICAgICBBbHdheXMKLSAgICAgICAgfTsKLSAgICAgICAgTGluZUVuZGluZ0VsbGlwc2lz
UG9saWN5IGVsbGlwc2lzUG9saWN5IHsgTGluZUVuZGluZ0VsbGlwc2lzUG9saWN5OjpObyB9Owog
ICAgIH07CiAgICAgc3RydWN0IFBhcnRpYWxDb250ZW50IHsKICAgICAgICAgUGFydGlhbENvbnRl
bnQoc2l6ZV90LCBzdGQ6Om9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+KTsKQEAgLTEwNCw3ICsx
MDMsNiBAQCBwdWJsaWM6CiAgICAgICAgIHNpemVfdCBub25TcGFubmluZ0lubGluZUxldmVsQm94
Q291bnQgeyAwIH07CiAgICAgICAgIFZlY3RvcjxpbnQzMl90PiB2aXN1YWxPcmRlckxpc3Q7CiAg
ICAgICAgIFRleHREaXJlY3Rpb24gaW5saW5lQmFzZURpcmVjdGlvbiB7IFRleHREaXJlY3Rpb246
OkxUUiB9OwotICAgICAgICBib29sIGxpbmVOZWVkc1RyYWlsaW5nRWxsaXBzaXMgeyBmYWxzZSB9
OwogICAgICAgICBjb25zdCBMaW5lOjpSdW5MaXN0JiBydW5zOwogICAgIH07CiAgICAgTGluZUNv
bnRlbnQgbGF5b3V0SW5saW5lQ29udGVudChjb25zdCBMaW5lSW5wdXQmLCBjb25zdCBzdGQ6Om9w
dGlvbmFsPFByZXZpb3VzTGluZT4mKTsKQEAgLTE1Niw3ICsxNTQsNyBAQCBwcml2YXRlOgogICAg
ICAgICBzdGQ6Om9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IG92ZXJmbG93TG9naWNhbFdpZHRo
IHsgfTsKICAgICB9OwogICAgIENvbW1pdHRlZENvbnRlbnQgcGxhY2VJbmxpbmVDb250ZW50KGNv
bnN0IElubGluZUl0ZW1SYW5nZSYpOwotICAgIElubGluZUl0ZW1SYW5nZSBjbG9zZShjb25zdCBJ
bmxpbmVJdGVtUmFuZ2UmIG5lZWRzTGF5b3V0UmFuZ2UsIExpbmVJbnB1dDo6TGluZUVuZGluZ0Vs
bGlwc2lzUG9saWN5LCBjb25zdCBDb21taXR0ZWRDb250ZW50Jik7CisgICAgSW5saW5lSXRlbVJh
bmdlIGNsb3NlKGNvbnN0IElubGluZUl0ZW1SYW5nZSYgbmVlZHNMYXlvdXRSYW5nZSwgY29uc3Qg
Q29tbWl0dGVkQ29udGVudCYpOwogCiAgICAgSW5saW5lTGF5b3V0VW5pdCBpbmxpbmVJdGVtV2lk
dGgoY29uc3QgSW5saW5lSXRlbSYsIElubGluZUxheW91dFVuaXQgY29udGVudExvZ2ljYWxMZWZ0
KSBjb25zdDsKICAgICBib29sIGlzTGFzdExpbmVXaXRoSW5saW5lQ29udGVudChjb25zdCBJbmxp
bmVJdGVtUmFuZ2UmIGxpbmVSYW5nZSwgc2l6ZV90IGxhc3RJbmxpbmVJdGVtSW5kZXgsIGJvb2wg
aGFzUGFydGlhbFRyYWlsaW5nQ29udGVudCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3Bs
YXlCb3guaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L2Rpc3BsYXkvSW5saW5lRGlzcGxheUJveC5oCmluZGV4IGQ4NzEwOWQ1M2JjMS4uOWU0ODMwNGE3
ODkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlCb3gu
aApAQCAtMzksNyArMzksNyBAQCBzdHJ1Y3QgQm94IHsKICAgICBzdHJ1Y3QgVGV4dCB7CiAgICAg
ICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6Ci0gICAgICAg
IFRleHQoc2l6ZV90IHBvc2l0aW9uLCBzaXplX3QgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIG9yaWdp
bmFsQ29udGVudCwgU3RyaW5nIGFkanVzdGVkQ29udGVudFRvUmVuZGVyID0gU3RyaW5nKCksIGJv
b2wgaGFzSHlwaGVuID0gZmFsc2UsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBwYXJ0aWFsbHlWaXNp
YmxlQ29udGVudExlbmd0aCA9IHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIFRleHQoc2l6ZV90IHBv
c2l0aW9uLCBzaXplX3QgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsQ29udGVudCwgU3Ry
aW5nIGFkanVzdGVkQ29udGVudFRvUmVuZGVyID0gU3RyaW5nKCksIGJvb2wgaGFzSHlwaGVuID0g
ZmFsc2UpOwogCiAgICAgICAgIHNpemVfdCBzdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnQ7
IH0KICAgICAgICAgc2l6ZV90IGVuZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXJ0KCkgKyBsZW5ndGgo
KTsgfQpAQCAtNTAsNiArNTAsOCBAQCBzdHJ1Y3QgQm94IHsKIAogICAgICAgICBib29sIGhhc0h5
cGhlbigpIGNvbnN0IHsgcmV0dXJuIG1faGFzSHlwaGVuOyB9CiAKKyAgICAgICAgdm9pZCBzZXRQ
YXJ0aWFsbHlWaXNpYmxlQ29udGVudExlbmd0aChzaXplX3QgdHJ1bmNhdGVkTGVuZ3RoKSB7IG1f
cGFydGlhbGx5VmlzaWJsZUNvbnRlbnRMZW5ndGggPSB0cnVuY2F0ZWRMZW5ndGg7IH0KKwogICAg
IHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBzdHJ1Y3QgQm94OwogCkBAIC03Nyw3ICs3OSw3IEBA
IHN0cnVjdCBCb3ggewogICAgICAgICBGaXJzdCA9IDEgPDwgMCwKICAgICAgICAgTGFzdCAgPSAx
IDw8IDEKICAgICB9OwotICAgIEJveChzaXplX3QgbGluZUluZGV4LCBUeXBlLCBjb25zdCBMYXlv
dXQ6OkJveCYsIFVCaURpTGV2ZWwsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYg
aW5rT3ZlcmZsb3csIEV4cGFuc2lvbiwgc3RkOjpvcHRpb25hbDxUZXh0PiA9IHN0ZDo6bnVsbG9w
dCwgYm9vbCBoYXNDb250ZW50ID0gdHJ1ZSwgYm9vbCBpc0Z1bGx5VHJ1bmNhdGVkID0gZmFsc2Us
IE9wdGlvblNldDxQb3NpdGlvbldpdGhpbklubGluZUxldmVsQm94PiA9IHsgfSk7CisgICAgQm94
KHNpemVfdCBsaW5lSW5kZXgsIFR5cGUsIGNvbnN0IExheW91dDo6Qm94JiwgVUJpRGlMZXZlbCwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiBpbmtPdmVyZmxvdywgRXhwYW5zaW9u
LCBzdGQ6Om9wdGlvbmFsPFRleHQ+ID0gc3RkOjpudWxsb3B0LCBib29sIGhhc0NvbnRlbnQgPSB0
cnVlLCBPcHRpb25TZXQ8UG9zaXRpb25XaXRoaW5JbmxpbmVMZXZlbEJveD4gPSB7IH0pOwogCiAg
ICAgYm9vbCBpc1RleHQoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gVHlwZTo6VGV4dCB8fCBp
c1dvcmRTZXBhcmF0b3IoKTsgfQogICAgIGJvb2wgaXNXb3JkU2VwYXJhdG9yKCkgY29uc3QgeyBy
ZXR1cm4gbV90eXBlID09IFR5cGU6OldvcmRTZXBhcmF0b3I7IH0KQEAgLTEyNCwxMSArMTI2LDEy
IEBAIHN0cnVjdCBCb3ggewogICAgICAgICBtX3VuZmxpcHBlZFZpc3VhbFJlY3QubW92ZSh7IG9m
ZnNldCwgeyB9IH0pOwogICAgICAgICBtX2lua092ZXJmbG93Lm1vdmUoeyBvZmZzZXQsIHsgfSB9
KTsKICAgICB9CisKICAgICB2b2lkIGFkanVzdElua092ZXJmbG93KGNvbnN0IEZsb2F0UmVjdCYg
Y2hpbGRCb3JkZXJCb3gpIHsgcmV0dXJuIG1faW5rT3ZlcmZsb3cudW5pdGVFdmVuSWZFbXB0eShj
aGlsZEJvcmRlckJveCk7IH0KLSAgICB2b2lkIHNldExlZnQoZmxvYXQgcHlzaWNhbExlZnQpCisg
ICAgdm9pZCBzZXRMZWZ0KGZsb2F0IHBoeXNpY2FsTGVmdCkKICAgICB7Ci0gICAgICAgIGF1dG8g
b2Zmc2V0ID0gcHlzaWNhbExlZnQgLSBsZWZ0KCk7Ci0gICAgICAgIG1fdW5mbGlwcGVkVmlzdWFs
UmVjdC5zZXRYKHB5c2ljYWxMZWZ0KTsKKyAgICAgICAgYXV0byBvZmZzZXQgPSBwaHlzaWNhbExl
ZnQgLSBsZWZ0KCk7CisgICAgICAgIG1fdW5mbGlwcGVkVmlzdWFsUmVjdC5zZXRYKHBoeXNpY2Fs
TGVmdCk7CiAgICAgICAgIG1faW5rT3ZlcmZsb3cuc2V0WChtX2lua092ZXJmbG93LngoKSArIG9m
ZnNldCk7CiAgICAgfQogICAgIHZvaWQgc2V0UmlnaHQoZmxvYXQgcGh5c2ljYWxSaWdodCkKQEAg
LTE1NSw2ICsxNTgsNyBAQCBzdHJ1Y3QgQm94IHsKICAgICAgICAgbV9pbmtPdmVyZmxvdyA9IGlu
a092ZXJmbG93OwogICAgIH0KICAgICB2b2lkIHNldEhhc0NvbnRlbnQoKSB7IG1faGFzQ29udGVu
dCA9IHRydWU7IH0KKyAgICB2b2lkIHNldElzRnVsbHlUcnVuY2F0ZWQoKSB7IG1faXNGdWxseVRy
dW5jYXRlZCA9IHRydWU7IH0KIAogICAgIHN0ZDo6b3B0aW9uYWw8VGV4dD4mIHRleHQoKSB7IHJl
dHVybiBtX3RleHQ7IH0KICAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPFRleHQ+JiB0ZXh0KCkgY29u
c3QgeyByZXR1cm4gbV90ZXh0OyB9CkBAIC0xOTIsNyArMTk2LDcgQEAgcHJpdmF0ZToKICAgICBz
dGQ6Om9wdGlvbmFsPFRleHQ+IG1fdGV4dDsKIH07CiAKLWlubGluZSBCb3g6OkJveChzaXplX3Qg
bGluZUluZGV4LCBUeXBlIHR5cGUsIGNvbnN0IExheW91dDo6Qm94JiBsYXlvdXRCb3gsIFVCaURp
TGV2ZWwgYmlkaUxldmVsLCBjb25zdCBGbG9hdFJlY3QmIHBoeXNpY2FsUmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBpbmtPdmVyZmxvdywgRXhwYW5zaW9uIGV4cGFuc2lvbiwgc3RkOjpvcHRpb25hbDxU
ZXh0PiB0ZXh0LCBib29sIGhhc0NvbnRlbnQsIGJvb2wgaXNGdWxseVRydW5jYXRlZCwgT3B0aW9u
U2V0PFBvc2l0aW9uV2l0aGluSW5saW5lTGV2ZWxCb3g+IHBvc2l0aW9uV2l0aGluSW5saW5lTGV2
ZWxCb3gpCitpbmxpbmUgQm94OjpCb3goc2l6ZV90IGxpbmVJbmRleCwgVHlwZSB0eXBlLCBjb25z
dCBMYXlvdXQ6OkJveCYgbGF5b3V0Qm94LCBVQmlEaUxldmVsIGJpZGlMZXZlbCwgY29uc3QgRmxv
YXRSZWN0JiBwaHlzaWNhbFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgaW5rT3ZlcmZsb3csIEV4cGFu
c2lvbiBleHBhbnNpb24sIHN0ZDo6b3B0aW9uYWw8VGV4dD4gdGV4dCwgYm9vbCBoYXNDb250ZW50
LCBPcHRpb25TZXQ8UG9zaXRpb25XaXRoaW5JbmxpbmVMZXZlbEJveD4gcG9zaXRpb25XaXRoaW5J
bmxpbmVMZXZlbEJveCkKICAgICA6IG1fbGluZUluZGV4KGxpbmVJbmRleCkKICAgICAsIG1fdHlw
ZSh0eXBlKQogICAgICwgbV9sYXlvdXRCb3gobGF5b3V0Qm94KQpAQCAtMjAyLDE2ICsyMDYsMTUg
QEAgaW5saW5lIEJveDo6Qm94KHNpemVfdCBsaW5lSW5kZXgsIFR5cGUgdHlwZSwgY29uc3QgTGF5
b3V0OjpCb3gmIGxheW91dEJveCwgVUJpRGkKICAgICAsIG1faGFzQ29udGVudChoYXNDb250ZW50
KQogICAgICwgbV9pc0ZpcnN0Rm9yTGF5b3V0Qm94KHBvc2l0aW9uV2l0aGluSW5saW5lTGV2ZWxC
b3guY29udGFpbnMoUG9zaXRpb25XaXRoaW5JbmxpbmVMZXZlbEJveDo6Rmlyc3QpKQogICAgICwg
bV9pc0xhc3RGb3JMYXlvdXRCb3gocG9zaXRpb25XaXRoaW5JbmxpbmVMZXZlbEJveC5jb250YWlu
cyhQb3NpdGlvbldpdGhpbklubGluZUxldmVsQm94OjpMYXN0KSkKLSAgICAsIG1faXNGdWxseVRy
dW5jYXRlZChpc0Z1bGx5VHJ1bmNhdGVkKQorICAgICwgbV9pc0Z1bGx5VHJ1bmNhdGVkKGZhbHNl
KQogICAgICwgbV9leHBhbnNpb24oZXhwYW5zaW9uKQogICAgICwgbV90ZXh0KHRleHQpCiB7CiB9
CiAKLWlubGluZSBCb3g6OlRleHQ6OlRleHQoc2l6ZV90IHN0YXJ0LCBzaXplX3QgbGVuZ3RoLCBj
b25zdCBTdHJpbmcmIG9yaWdpbmFsQ29udGVudCwgU3RyaW5nIGFkanVzdGVkQ29udGVudFRvUmVu
ZGVyLCBib29sIGhhc0h5cGhlbiwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHBhcnRpYWxseVZpc2li
bGVDb250ZW50TGVuZ3RoKQoraW5saW5lIEJveDo6VGV4dDo6VGV4dChzaXplX3Qgc3RhcnQsIHNp
emVfdCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxDb250ZW50LCBTdHJpbmcgYWRqdXN0
ZWRDb250ZW50VG9SZW5kZXIsIGJvb2wgaGFzSHlwaGVuKQogICAgIDogbV9zdGFydChzdGFydCkK
ICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKLSAgICAsIG1fcGFydGlhbGx5VmlzaWJsZUNvbnRlbnRM
ZW5ndGgocGFydGlhbGx5VmlzaWJsZUNvbnRlbnRMZW5ndGgpCiAgICAgLCBtX2hhc0h5cGhlbiho
YXNIeXBoZW4pCiAgICAgLCBtX29yaWdpbmFsQ29udGVudChvcmlnaW5hbENvbnRlbnQpCiAgICAg
LCBtX2FkanVzdGVkQ29udGVudFRvUmVuZGVyKGFkanVzdGVkQ29udGVudFRvUmVuZGVyKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
ZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29u
dGVudEJ1aWxkZXIuY3BwCmluZGV4IGFkOTllNTdiYTcwYS4uMmNiMTllYzRiMWNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNw
bGF5L0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29u
dGVudEJ1aWxkZXIuY3BwCkBAIC0yMjIsOSArMjIyLDYgQEAgdm9pZCBJbmxpbmVEaXNwbGF5Q29u
dGVudEJ1aWxkZXI6OmFwcGVuZFRleHREaXNwbGF5Qm94KGNvbnN0IExpbmU6OlJ1biYgbGluZVJ1
biwKICAgICBhdXRvIGFkanVzdGVkQ29udGVudFRvUmVuZGVyID0gWyZdIHsKICAgICAgICAgcmV0
dXJuIHRleHQtPm5lZWRzSHlwaGVuID8gbWFrZVN0cmluZyhTdHJpbmdWaWV3KGNvbnRlbnQpLnN1
YnN0cmluZyh0ZXh0LT5zdGFydCwgdGV4dC0+bGVuZ3RoKSwgc3R5bGUuaHlwaGVuU3RyaW5nKCkp
IDogU3RyaW5nKCk7CiAgICAgfTsKLSAgICBhdXRvIGlzRnVsbHlUcnVuY2F0ZWQgPSBsaW5lUnVu
LmlzVHJ1bmNhdGVkKCkgJiYgIXRleHQtPnBhcnRpYWxseVZpc2libGVDb250ZW50OwotICAgIGF1
dG8gcGFydGlhbGx5VmlzaWJsZUNvbnRlbnRMZW5ndGggPSAhaXNGdWxseVRydW5jYXRlZCAmJiB0
ZXh0LT5wYXJ0aWFsbHlWaXNpYmxlQ29udGVudCA/IHN0ZDo6bWFrZV9vcHRpb25hbCh0ZXh0LT5w
YXJ0aWFsbHlWaXNpYmxlQ29udGVudC0+bGVuZ3RoKTogc3RkOjpudWxsb3B0OwotCiAgICAgYm94
ZXMuYXBwZW5kKHsgbV9saW5lSW5kZXgKICAgICAgICAgLCBsaW5lUnVuLmlzV29yZFNlcGFyYXRv
cigpID8gSW5saW5lRGlzcGxheTo6Qm94OjpUeXBlOjpXb3JkU2VwYXJhdG9yIDogSW5saW5lRGlz
cGxheTo6Qm94OjpUeXBlOjpUZXh0CiAgICAgICAgICwgaW5saW5lVGV4dEJveApAQCAtMjMyLDkg
KzIyOSw4IEBAIHZvaWQgSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyOjphcHBlbmRUZXh0RGlz
cGxheUJveChjb25zdCBMaW5lOjpSdW4mIGxpbmVSdW4sCiAgICAgICAgICwgdGV4dFJ1blJlY3QK
ICAgICAgICAgLCBpbmtPdmVyZmxvdygpCiAgICAgICAgICwgbGluZVJ1bi5leHBhbnNpb24oKQot
ICAgICAgICAsIElubGluZURpc3BsYXk6OkJveDo6VGV4dCB7IHRleHQtPnN0YXJ0LCB0ZXh0LT5s
ZW5ndGgsIGNvbnRlbnQsIGFkanVzdGVkQ29udGVudFRvUmVuZGVyKCksIHRleHQtPm5lZWRzSHlw
aGVuLCBwYXJ0aWFsbHlWaXNpYmxlQ29udGVudExlbmd0aCB9CisgICAgICAgICwgSW5saW5lRGlz
cGxheTo6Qm94OjpUZXh0IHsgdGV4dC0+c3RhcnQsIHRleHQtPmxlbmd0aCwgY29udGVudCwgYWRq
dXN0ZWRDb250ZW50VG9SZW5kZXIoKSwgdGV4dC0+bmVlZHNIeXBoZW4gfQogICAgICAgICAsIHRy
dWUKLSAgICAgICAgLCBpc0Z1bGx5VHJ1bmNhdGVkCiAgICAgICAgICwgeyB9CiAgICAgfSk7CiB9
CkBAIC0yOTksNyArMjk1LDYgQEAgdm9pZCBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OmFw
cGVuZEF0b21pY0lubGluZUxldmVsRGlzcGxheUJveChjb25zdCBMaW5lOjoKICAgICAgICAgLCBs
aW5lUnVuLmV4cGFuc2lvbigpCiAgICAgICAgICwgeyB9CiAgICAgICAgICwgdHJ1ZQotICAgICAg
ICAsIGxpbmVSdW4uaXNUcnVuY2F0ZWQoKQogICAgIH0pOwogICAgIC8vIE5vdGUgdGhhdCBpbmxp
bmUgYm94ZXMgYXJlIHJlbGF0aXZlIHRvIHRoZSBsaW5lIGFuZCB0aGVpciB0b3AgcG9zaXRpb24g
Y2FuIGJlIG5lZ2F0aXZlLgogICAgIC8vIEF0b21pYyBpbmxpbmUgYm94ZXMgYXJlIGFsbCBzZXQu
IFRoZWlyIG1hcmdpbi9ib3JkZXIvY29udGVudCBib3ggZ2VvbWV0cmllcyBhcmUgYWxyZWFkeSBj
b21wdXRlZC4gV2UganVzdCBoYXZlIHRvIHBvc2l0aW9uIHRoZW0gaGVyZS4KQEAgLTM2OCw3ICsz
NjMsNiBAQCB2b2lkIElubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6YXBwZW5kSW5saW5lQm94
RGlzcGxheUJveChjb25zdCBMaW5lOjpSdW4mIGxpbgogICAgICAgICAsIHsgfQogICAgICAgICAs
IHsgfQogICAgICAgICAsIGlubGluZUJveC5oYXNDb250ZW50KCkKLSAgICAgICAgLCBsaW5lUnVu
LmlzVHJ1bmNhdGVkKCkKICAgICAgICAgLCBpc0ZpcnN0TGFzdEJveChpbmxpbmVCb3gpCiAgICAg
fSk7CiB9CkBAIC00MDUsNyArMzk5LDYgQEAgdm9pZCBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxk
ZXI6OmFwcGVuZFNwYW5uaW5nSW5saW5lQm94RGlzcGxheUJveChjb25zdCBMaW5lOjoKICAgICAg
ICAgLCB7IH0KICAgICAgICAgLCB7IH0KICAgICAgICAgLCBpbmxpbmVCb3guaGFzQ29udGVudCgp
Ci0gICAgICAgICwgbGluZVJ1bi5pc1RydW5jYXRlZCgpCiAgICAgICAgICwgaXNGaXJzdExhc3RC
b3goaW5saW5lQm94KQogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVu
dEJ1aWxkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5s
aW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmgKaW5kZXggY2ZlMTM0MmE1
MWY1Li5jNzM5NzNjYjlkZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
ZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuaApAQCAtNTQsNiArNTQsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgcHJvY2Vzc0Zsb2F0Qm94ZXMoY29uc3QgTGluZUJ1aWxkZXI6Okxp
bmVDb250ZW50Jik7CiAgICAgdm9pZCBjb2xsZWN0SW5rT3ZlcmZsb3dGb3JJbmxpbmVCb3hlcyhE
aXNwbGF5Qm94ZXMmKTsKICAgICB2b2lkIGNvbGxlY3RJbmtPdmVyZmxvd0ZvclRleHREZWNvcmF0
aW9ucyhEaXNwbGF5Qm94ZXMmLCBjb25zdCBJbmxpbmVEaXNwbGF5OjpMaW5lJik7CisgICAgdm9p
ZCB0cnVuY2F0ZUZvckVsbGlwc2lzUG9saWN5KExpbmVCdWlsZGVyOjpMaW5lRW5kaW5nRWxsaXBz
aXNQb2xpY3ksIGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lQ29udGVudCYsIGNvbnN0IElubGluZURp
c3BsYXk6OkxpbmUmLCBEaXNwbGF5Qm94ZXMmKTsKIAogICAgIHZvaWQgYXBwZW5kVGV4dERpc3Bs
YXlCb3goY29uc3QgTGluZTo6UnVuJiwgY29uc3QgSW5saW5lUmVjdCYsIERpc3BsYXlCb3hlcyYp
OwogICAgIHZvaWQgYXBwZW5kU29mdExpbmVCcmVha0Rpc3BsYXlCb3goY29uc3QgTGluZTo6UnVu
JiwgY29uc3QgSW5saW5lUmVjdCYsIERpc3BsYXlCb3hlcyYpOwpAQCAtNzcsNiArNzgsNyBAQCBw
cml2YXRlOgogICAgIElubGluZUxheW91dFVuaXQgb3V0c2lkZUxpc3RNYXJrZXJWaXN1YWxQb3Np
dGlvbihjb25zdCBFbGVtZW50Qm94JiwgY29uc3QgSW5saW5lRGlzcGxheTo6TGluZSYpIGNvbnN0
OwogCiAgICAgY29uc3QgRWxlbWVudEJveCYgcm9vdCgpIGNvbnN0IHsgcmV0dXJuIGZvcm1hdHRp
bmdDb250ZXh0KCkucm9vdCgpOyB9CisgICAgY29uc3QgUmVuZGVyU3R5bGUmIHJvb3RTdHlsZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbGluZUluZGV4ID8gcm9vdCgpLnN0eWxlKCkgOiByb290KCkuZmly
c3RMaW5lU3R5bGUoKTsgfQogICAgIGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0JiBmb3Jt
YXR0aW5nQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9ybWF0dGluZ0NvbnRleHQ7IH0KICAg
ICBjb25zdCBJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkmIGZvcm1hdHRpbmdHZW9tZXRyeSgpIGNv
bnN0IHsgcmV0dXJuIGZvcm1hdHRpbmdDb250ZXh0KCkuZm9ybWF0dGluZ0dlb21ldHJ5KCk7IH0K
ICAgICBJbmxpbmVGb3JtYXR0aW5nU3RhdGUmIGZvcm1hdHRpbmdTdGF0ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZm9ybWF0dGluZ1N0YXRlOyB9IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5TGluZS5o
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxh
eS9JbmxpbmVEaXNwbGF5TGluZS5oCmluZGV4IDZiNmE0ZTg4MjBhYi4uNDJlNDg1YzY4OGJmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGlu
ZS9kaXNwbGF5L0lubGluZURpc3BsYXlMaW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5TGluZS5oCkBA
IC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICAgICAgZmxvYXQgdG9wIHsgMCB9OwogICAgICAg
ICBmbG9hdCBib3R0b20geyAwIH07CiAgICAgfTsKLSAgICBMaW5lKGNvbnN0IEZsb2F0UmVjdCYg
bGluZUJveExvZ2ljYWxSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGxpbmVCb3hSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNjcm9sbGFibGVPdmVyZmxvdywgRW5jbG9zaW5nVG9wQW5kQm90dG9tLCBmbG9h
dCBhbGlnbWVudEJhc2VsaW5lLCBGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlLCBmbG9hdCBjb250
ZW50TG9naWNhbExlZnQsIGZsb2F0IGNvbnRlbnRMb2dpY2FsTGVmdElnbm9yaW5nSW5saW5lRGly
ZWN0aW9uLCBmbG9hdCBjb250ZW50TG9naWNhbFdpZHRoLCBib29sIGlzSG9yaXpvbnRhbCwgc3Rk
OjpvcHRpb25hbDxGbG9hdFJlY3Q+IGVsbGlwc2lzVmlzdWFsUmVjdCk7CisgICAgTGluZShjb25z
dCBGbG9hdFJlY3QmIGxpbmVCb3hMb2dpY2FsUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBsaW5lQm94
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzY3JvbGxhYmxlT3ZlcmZsb3csIEVuY2xvc2luZ1RvcEFu
ZEJvdHRvbSwgZmxvYXQgYWxpZ21lbnRCYXNlbGluZSwgRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlw
ZSwgZmxvYXQgY29udGVudExvZ2ljYWxMZWZ0LCBmbG9hdCBjb250ZW50TG9naWNhbExlZnRJZ25v
cmluZ0lubGluZURpcmVjdGlvbiwgZmxvYXQgY29udGVudExvZ2ljYWxXaWR0aCwgYm9vbCBpc0hv
cml6b250YWwpOwogCiAgICAgZmxvYXQgbGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1fbGluZUJveFJl
Y3QueCgpOyB9CiAgICAgZmxvYXQgcmlnaHQoKSBjb25zdCB7IHJldHVybiBtX2xpbmVCb3hSZWN0
Lm1heFgoKTsgfQpAQCAtNjcsNiArNjcsNyBAQCBwdWJsaWM6CiAgICAgZmxvYXQgY29udGVudExv
Z2ljYWxXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudExvZ2ljYWxXaWR0aDsgfQogCiAg
ICAgdm9pZCBtb3ZlVmVydGljYWxseShmbG9hdCBvZmZzZXQpIHsgbV9saW5lQm94UmVjdC5tb3Zl
KHsgeyB9LCBvZmZzZXQgfSk7IH0KKyAgICB2b2lkIHNldEVsbGlwc2lzVmlzdWFsUmVjdChjb25z
dCBGbG9hdFJlY3QmIGVsbGlwc2lzVmlzdWFsUmVjdCkgeyBtX2VsbGlwc2lzVmlzdWFsUmVjdCA9
IGVsbGlwc2lzVmlzdWFsUmVjdDsgfQogCiBwcml2YXRlOgogICAgIC8vIFRoaXMgaXMgbGluZSBi
b3ggZ2VvbWV0cnkgKHNlZSBodHRwczovL3d3dy53My5vcmcvVFIvY3NzLWlubGluZS0zLyNsaW5l
LWJveCkuCkBAIC04OCw3ICs4OSw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxGbG9h
dFJlY3Q+IG1fZWxsaXBzaXNWaXN1YWxSZWN0IHsgfTsKIH07CiAKLWlubGluZSBMaW5lOjpMaW5l
KGNvbnN0IEZsb2F0UmVjdCYgbGluZUJveExvZ2ljYWxSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGxp
bmVCb3hSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNjcm9sbGFibGVPdmVyZmxvdywgRW5jbG9zaW5n
VG9wQW5kQm90dG9tIGVuY2xvc2luZ0xvZ2ljYWxUb3BBbmRCb3R0b20sIGZsb2F0IGFsaWdtZW50
QmFzZWxpbmUsIEZvbnRCYXNlbGluZSBiYXNlbGluZVR5cGUsIGZsb2F0IGNvbnRlbnRMb2dpY2Fs
TGVmdCwgZmxvYXQgY29udGVudExvZ2ljYWxMZWZ0SWdub3JpbmdJbmxpbmVEaXJlY3Rpb24sIGZs
b2F0IGNvbnRlbnRMb2dpY2FsV2lkdGgsIGJvb2wgaXNIb3Jpem9udGFsLCBzdGQ6Om9wdGlvbmFs
PEZsb2F0UmVjdD4gZWxsaXBzaXNWaXN1YWxSZWN0KQoraW5saW5lIExpbmU6OkxpbmUoY29uc3Qg
RmxvYXRSZWN0JiBsaW5lQm94TG9naWNhbFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgbGluZUJveFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc2Nyb2xsYWJsZU92ZXJmbG93LCBFbmNsb3NpbmdUb3BBbmRC
b3R0b20gZW5jbG9zaW5nTG9naWNhbFRvcEFuZEJvdHRvbSwgZmxvYXQgYWxpZ21lbnRCYXNlbGlu
ZSwgRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSwgZmxvYXQgY29udGVudExvZ2ljYWxMZWZ0LCBm
bG9hdCBjb250ZW50TG9naWNhbExlZnRJZ25vcmluZ0lubGluZURpcmVjdGlvbiwgZmxvYXQgY29u
dGVudExvZ2ljYWxXaWR0aCwgYm9vbCBpc0hvcml6b250YWwpCiAgICAgOiBtX2xpbmVCb3hSZWN0
KGxpbmVCb3hSZWN0KQogICAgICwgbV9saW5lQm94TG9naWNhbFJlY3QobGluZUJveExvZ2ljYWxS
ZWN0KQogICAgICwgbV9zY3JvbGxhYmxlT3ZlcmZsb3coc2Nyb2xsYWJsZU92ZXJmbG93KQpAQCAt
OTksNyArMTAwLDYgQEAgaW5saW5lIExpbmU6OkxpbmUoY29uc3QgRmxvYXRSZWN0JiBsaW5lQm94
TG9naWNhbFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgbGluZUJveFIKICAgICAsIG1fY29udGVudExv
Z2ljYWxXaWR0aChjb250ZW50TG9naWNhbFdpZHRoKQogICAgICwgbV9iYXNlbGluZVR5cGUoYmFz
ZWxpbmVUeXBlKQogICAgICwgbV9pc0hvcml6b250YWwoaXNIb3Jpem9udGFsKQotICAgICwgbV9l
bGxpcHNpc1Zpc3VhbFJlY3QoZWxsaXBzaXNWaXN1YWxSZWN0KQogewogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5
L0lubGluZURpc3BsYXlMaW5lQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlMaW5lQnVpbGRlci5j
cHAKaW5kZXggM2JmMTI2ZDVhZjAxLi5hYTJkOTg5YjUwYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlz
cGxheUxpbmVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlMaW5lQnVpbGRlci5jcHAKQEAg
LTMzLDYgKzMzLDIyIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgTGF5b3V0IHsK
IAorc3RhdGljIElubGluZVJlY3QgZmxpcExvZ2ljYWxMaW5lUmVjdFRvVmlzdWFsRm9yV3JpdGlu
Z01vZGUoY29uc3QgSW5saW5lUmVjdCYgbGluZUxvZ2ljYWxSZWN0LCBXcml0aW5nTW9kZSB3cml0
aW5nTW9kZSkKK3sKKyAgICBzd2l0Y2ggKHdyaXRpbmdNb2RlKSB7CisgICAgY2FzZSBXcml0aW5n
TW9kZTo6VG9wVG9Cb3R0b206CisgICAgICAgIHJldHVybiBsaW5lTG9naWNhbFJlY3Q7CisgICAg
Y2FzZSBXcml0aW5nTW9kZTo6TGVmdFRvUmlnaHQ6CisgICAgY2FzZSBXcml0aW5nTW9kZTo6Umln
aHRUb0xlZnQ6CisgICAgICAgIC8vIFNlZSBJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkgZm9yIG1v
cmUgaW5mby4KKyAgICAgICAgcmV0dXJuIHsgbGluZUxvZ2ljYWxSZWN0LmxlZnQoKSwgbGluZUxv
Z2ljYWxSZWN0LnRvcCgpLCBsaW5lTG9naWNhbFJlY3QuaGVpZ2h0KCksIGxpbmVMb2dpY2FsUmVj
dC53aWR0aCgpIH07CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gbGluZUxvZ2ljYWxSZWN0OworfQor
CiBJbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXI6OklubGluZURpc3BsYXlMaW5lQnVpbGRlcihjb25z
dCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYgaW5saW5lRm9ybWF0dGluZ0NvbnRleHQpCiAgICAg
OiBtX2lubGluZUZvcm1hdHRpbmdDb250ZXh0KGlubGluZUZvcm1hdHRpbmdDb250ZXh0KQogewpA
QCAtMTMwLDUyICsxNDYsMTQ3IEBAIElubGluZURpc3BsYXk6OkxpbmUgSW5saW5lRGlzcGxheUxp
bmVCdWlsZGVyOjpidWlsZChjb25zdCBMaW5lQnVpbGRlcjo6TGluZUNvbnRlCiAgICAgICAgICwg
Y29udGVudFZpc3VhbE9mZnNldEluSW5saW5lRGlyZWN0aW9uCiAgICAgICAgICwgcm9vdElubGlu
ZUJveC5sb2dpY2FsV2lkdGgoKQogICAgICAgICAsIGxpbmVCb3guaXNIb3Jpem9udGFsKCkKLSAg
ICAgICAgLCB0cmFpbGluZ0VsbGlwc2lzUmVjdChsaW5lQ29udGVudCwgbGluZUJveCwgbGluZUJv
eFZpc3VhbFJlY3RJbklubGluZURpcmVjdGlvbikKICAgICB9OwogfQogCi0vLyBGSVhNRTogZm9y
IGJpZGkgY29udGVudCwgd2UgbWF5IG5lZWQgdG8gcnVuIHRoaXMgY29kZSBhZnRlciB3ZSBmaW5p
c2hlZCBjb25zdHJ1Y3RpbmcgdGhlIGRpc3BsYXkgYm94ZXMKLS8vIGFuZCBhbHNvIHJ1biB0cnVu
Y2F0aW9uIG9uIHRoZSAodmlzdWFsKWRpc3BsYXkgYm94IGxpc3QgYW5kIG5vdCBvbiB0aGUgKGxv
Z2ljYWwpbGluZSBydW5zLgotc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IElubGluZURpc3BsYXlM
aW5lQnVpbGRlcjo6dHJhaWxpbmdFbGxpcHNpc1JlY3QoY29uc3QgTGluZUJ1aWxkZXI6OkxpbmVD
b250ZW50JiBsaW5lQ29udGVudCwgY29uc3QgTGluZUJveCYgbGluZUJveCwgY29uc3QgRmxvYXRS
ZWN0JiBsaW5lQm94VmlzdWFsUmVjdCkgY29uc3QKK3N0YXRpYyBmbG9hdCB0cnVuY2F0ZU92ZXJm
bG93aW5nRGlzcGxheUJveGVzKGNvbnN0IElubGluZURpc3BsYXk6OkxpbmUmIGRpc3BsYXlMaW5l
LCBEaXNwbGF5Qm94ZXMmIGJveGVzLCBmbG9hdCBlbGxpcHNpc1dpZHRoLCBjb25zdCBSZW5kZXJT
dHlsZSYgcm9vdFN0eWxlKQogewotICAgIGlmICghbGluZUNvbnRlbnQubGluZU5lZWRzVHJhaWxp
bmdFbGxpcHNpcykKLSAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAvLyBXZSBnb3R0YSB0cnVuY2F0
ZSBzb21lIHJ1bnMuCisgICAgQVNTRVJUKGRpc3BsYXlMaW5lLmxpbmVCb3hMb2dpY2FsUmVjdCgp
LngoKSArIGRpc3BsYXlMaW5lLmNvbnRlbnRMb2dpY2FsTGVmdCgpICsgZGlzcGxheUxpbmUuY29u
dGVudExvZ2ljYWxXaWR0aCgpICsgZWxsaXBzaXNXaWR0aCA+IGRpc3BsYXlMaW5lLmxpbmVCb3hM
b2dpY2FsUmVjdCgpLm1heFgoKSk7CisgICAgYXV0byBpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uID0g
cm9vdFN0eWxlLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKTsKKyAgICBhdXRvIGlzSG9yaXpvbnRh
bCA9IHJvb3RTdHlsZS5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpOworICAgIGF1dG8gbGVmdCA9
IFsmXSAoYXV0byYgZGlzcGxheUJveCkgeworICAgICAgICByZXR1cm4gaXNIb3Jpem9udGFsID8g
ZGlzcGxheUJveC5sZWZ0KCkgOiBkaXNwbGF5Qm94LnRvcCgpOworICAgIH07CisgICAgYXV0byBy
aWdodCA9IFsmXSAoYXV0byYgZGlzcGxheUJveCkgeworICAgICAgICByZXR1cm4gaXNIb3Jpem9u
dGFsID8gZGlzcGxheUJveC5yaWdodCgpIDogZGlzcGxheUJveC5ib3R0b20oKTsKKyAgICB9Owor
ICAgIGF1dG8gd2lkdGggPSBbJl0gKGF1dG8mIGRpc3BsYXlCb3gpIHsKKyAgICAgICAgcmV0dXJu
IGlzSG9yaXpvbnRhbCA/IGRpc3BsYXlCb3gud2lkdGgoKSA6IGRpc3BsYXlCb3guaGVpZ2h0KCk7
CisgICAgfTsKKyAgICBhdXRvIHRydW5jYXRlID0gWyZdIChhdXRvJiBkaXNwbGF5Qm94LCBhdXRv
IHZpc2libGVXaWR0aCwgYXV0byBjYW5GdWxseVRydW5jYXRlKSB7CisgICAgICAgIGlmIChkaXNw
bGF5Qm94LmlzVGV4dCgpKSB7CisgICAgICAgICAgICBpZiAoIXZpc2libGVXaWR0aCAmJiBjYW5G
dWxseVRydW5jYXRlKSB7CisgICAgICAgICAgICAgICAgZGlzcGxheUJveC5zZXRJc0Z1bGx5VHJ1
bmNhdGVkKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGlzTGVmdFRvUmlnaHREaXJlY3Rpb24g
PyBsZWZ0KGRpc3BsYXlCb3gpIDogcmlnaHQoZGlzcGxheUJveCk7CisgICAgICAgICAgICB9CiAK
LSAgICBhdXRvIGVsbGlwc2lzU3RhcnQgPSAwLmY7Ci0gICAgZm9yIChhdXRvJiBsaW5lUnVuIDog
bGluZUNvbnRlbnQucnVucykgewotICAgICAgICBpZiAobGluZVJ1bi5pc0lubGluZUJveCgpKQot
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmIChsaW5lUnVuLmlzVHJ1bmNhdGVkKCkp
IHsKLSAgICAgICAgICAgIGlmIChsaW5lUnVuLmlzVGV4dCgpICYmIGxpbmVSdW4udGV4dENvbnRl
bnQoKS0+cGFydGlhbGx5VmlzaWJsZUNvbnRlbnQpCi0gICAgICAgICAgICAgICAgZWxsaXBzaXNT
dGFydCA9IHN0ZDo6bWF4KGVsbGlwc2lzU3RhcnQsIGxpbmVSdW4ubG9naWNhbExlZnQoKSArIGxp
bmVSdW4udGV4dENvbnRlbnQoKS0+cGFydGlhbGx5VmlzaWJsZUNvbnRlbnQtPndpZHRoKTsKLSAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgYXV0byYgaW5saW5lVGV4dEJveCA9IGRvd25j
YXN0PElubGluZVRleHRCb3g+KGRpc3BsYXlCb3gubGF5b3V0Qm94KCkpOworICAgICAgICAgICAg
YXV0byYgdGV4dENvbnRlbnQgPSBkaXNwbGF5Qm94LnRleHQoKTsKKyAgICAgICAgICAgIGF1dG8g
bGVmdFNpZGUgPSBUZXh0VXRpbDo6YnJlYWtXb3JkKGlubGluZVRleHRCb3gsIHRleHRDb250ZW50
LT5zdGFydCgpLCB0ZXh0Q29udGVudC0+bGVuZ3RoKCksIHdpZHRoKGRpc3BsYXlCb3gpLCB2aXNp
YmxlV2lkdGgsIHsgfSwgZGlzcGxheUJveC5zdHlsZSgpLmZvbnRDYXNjYWRlKCkpOworICAgICAg
ICAgICAgaWYgKGxlZnRTaWRlLmxlbmd0aCkgeworICAgICAgICAgICAgICAgIHRleHRDb250ZW50
LT5zZXRQYXJ0aWFsbHlWaXNpYmxlQ29udGVudExlbmd0aChsZWZ0U2lkZS5sZW5ndGgpOworICAg
ICAgICAgICAgICAgIHJldHVybiBpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uID8gbGVmdChkaXNwbGF5
Qm94KSArIGxlZnRTaWRlLmxvZ2ljYWxXaWR0aCA6IHJpZ2h0KGRpc3BsYXlCb3gpIC0gbGVmdFNp
ZGUubG9naWNhbFdpZHRoOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGNhbkZ1bGx5
VHJ1bmNhdGUpIHsKKyAgICAgICAgICAgICAgICBkaXNwbGF5Qm94LnNldElzRnVsbHlUcnVuY2F0
ZWQoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gaXNMZWZ0VG9SaWdodERpcmVjdGlvbiA/IGxl
ZnQoZGlzcGxheUJveCkgOiByaWdodChkaXNwbGF5Qm94KTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGF1dG8gZmlyc3RDaGFyYWN0ZXJMZW5ndGggPSBUZXh0VXRpbDo6Zmlyc3RVc2VyUGVy
Y2VpdmVkQ2hhcmFjdGVyTGVuZ3RoKGlubGluZVRleHRCb3gsIHRleHRDb250ZW50LT5zdGFydCgp
LCB0ZXh0Q29udGVudC0+bGVuZ3RoKCkpOworICAgICAgICAgICAgYXV0byBmaXJzdENoYXJhY3Rl
cldpZHRoID0gVGV4dFV0aWw6OndpZHRoKGlubGluZVRleHRCb3gsIGRpc3BsYXlCb3guc3R5bGUo
KS5mb250Q2FzY2FkZSgpLCB0ZXh0Q29udGVudC0+c3RhcnQoKSwgdGV4dENvbnRlbnQtPnN0YXJ0
KCkgKyBmaXJzdENoYXJhY3Rlckxlbmd0aCwgeyB9LCBUZXh0VXRpbDo6VXNlVHJhaWxpbmdXaGl0
ZXNwYWNlTWVhc3VyaW5nT3B0aW1pemF0aW9uOjpObyk7CisgICAgICAgICAgICB0ZXh0Q29udGVu
dC0+c2V0UGFydGlhbGx5VmlzaWJsZUNvbnRlbnRMZW5ndGgoZmlyc3RDaGFyYWN0ZXJMZW5ndGgp
OworICAgICAgICAgICAgcmV0dXJuIGlzTGVmdFRvUmlnaHREaXJlY3Rpb24gPyBsZWZ0KGRpc3Bs
YXlCb3gpICsgZmlyc3RDaGFyYWN0ZXJXaWR0aCA6IHJpZ2h0KGRpc3BsYXlCb3gpIC0gZmlyc3RD
aGFyYWN0ZXJXaWR0aDsKICAgICAgICAgfQotICAgICAgICBlbGxpcHNpc1N0YXJ0ID0gc3RkOjpt
YXgoZWxsaXBzaXNTdGFydCwgbGluZVJ1bi5sb2dpY2FsUmlnaHQoKSk7CisgICAgICAgIGlmIChj
YW5GdWxseVRydW5jYXRlKSB7CisgICAgICAgICAgICAvLyBBdG9taWMgaW5saW5lIGxldmVsIGJv
eGVzIGFyZSBuZXZlciBwYXJ0aWFsbHkgdHJ1bmNhdGVkLgorICAgICAgICAgICAgZGlzcGxheUJv
eC5zZXRJc0Z1bGx5VHJ1bmNhdGVkKCk7CisgICAgICAgICAgICByZXR1cm4gaXNMZWZ0VG9SaWdo
dERpcmVjdGlvbiA/IGxlZnQoZGlzcGxheUJveCkgOiByaWdodChkaXNwbGF5Qm94KTsKKyAgICAg
ICAgfQorICAgICAgICByZXR1cm4gaXNMZWZ0VG9SaWdodERpcmVjdGlvbiA/IHJpZ2h0KGRpc3Bs
YXlCb3gpIDogbGVmdChkaXNwbGF5Qm94KTsKKyAgICB9OworCisgICAgLy8gVGhlIGxvZ2ljYWxs
eSBmaXJzdCBjaGFyYWN0ZXIgb3IgYXRvbWljIGlubGluZS1sZXZlbCBlbGVtZW50IG9uIGEgbGlu
ZSBtdXN0IGJlIGNsaXBwZWQgcmF0aGVyIHRoYW4gZWxsaXBzZWQuCisgICAgYXV0byBpc0ZpcnN0
Q29udGVudFJ1biA9IHRydWU7CisgICAgaWYgKGlzTGVmdFRvUmlnaHREaXJlY3Rpb24pIHsKKyAg
ICAgICAgYXV0byB2aXN1YWxSaWdodEZvckNvbnRlbnRFbmQgPSBzdGQ6Om1heCgwLmYsIHJpZ2h0
KGRpc3BsYXlMaW5lKSAtIGVsbGlwc2lzV2lkdGgpOworICAgICAgICBhdXRvIHRydW5jYXRlUmln
aHQgPSBzdGQ6Om9wdGlvbmFsPGZsb2F0PiB7IH07CisgICAgICAgIGZvciAoYXV0byYgZGlzcGxh
eUJveCA6IGJveGVzKSB7CisgICAgICAgICAgICBpZiAoZGlzcGxheUJveC5pc0lubGluZUJveCgp
KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaWYgKHJpZ2h0KGRpc3Bs
YXlCb3gpID4gdmlzdWFsUmlnaHRGb3JDb250ZW50RW5kKSB7CisgICAgICAgICAgICAgICAgYXV0
byB0cnVuY2F0ZVBvc2l0aW9uID0gdHJ1bmNhdGUoZGlzcGxheUJveCwgc3RkOjptYXgoMC5mLCB2
aXN1YWxSaWdodEZvckNvbnRlbnRFbmQgLSBsZWZ0KGRpc3BsYXlCb3gpKSwgIWlzRmlyc3RDb250
ZW50UnVuKTsKKyAgICAgICAgICAgICAgICB0cnVuY2F0ZVJpZ2h0ID0gdHJ1bmNhdGVSaWdodC52
YWx1ZV9vcih0cnVuY2F0ZVBvc2l0aW9uKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlz
Rmlyc3RDb250ZW50UnVuID0gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKHRydW5j
YXRlUmlnaHQuaGFzX3ZhbHVlKCkpOworICAgICAgICByZXR1cm4gdHJ1bmNhdGVSaWdodC52YWx1
ZV9vcigwLmYpOwogICAgIH0KLSAgICBhdXRvIGVsbGlwc2lzV2lkdGggPSAhbGluZUJveC5saW5l
SW5kZXgoKSA/IHJvb3QoKS5maXJzdExpbmVTdHlsZSgpLmZvbnRDYXNjYWRlKCkud2lkdGgoVGV4
dFV0aWw6OmVsbGlwc2lzVGV4dFJ1bigpKSA6IHJvb3QoKS5zdHlsZSgpLmZvbnRDYXNjYWRlKCku
d2lkdGgoVGV4dFV0aWw6OmVsbGlwc2lzVGV4dFJ1bigpKTsKLSAgICBhdXRvIHJvb3RJbmxpbmVC
b3hSZWN0ID0gbGluZUJveC5sb2dpY2FsUmVjdEZvclJvb3RJbmxpbmVCb3goKTsKLSAgICBhdXRv
IGVsbGlwc2lzUmVjdCA9IEZsb2F0UmVjdCB7IGxpbmVCb3hWaXN1YWxSZWN0LngoKSArIHJvb3RJ
bmxpbmVCb3hSZWN0LmxlZnQoKSArIGVsbGlwc2lzU3RhcnQsIGxpbmVCb3hWaXN1YWxSZWN0Lnko
KSArIHJvb3RJbmxpbmVCb3hSZWN0LnRvcCgpLCBlbGxpcHNpc1dpZHRoLCByb290SW5saW5lQm94
UmVjdC5oZWlnaHQoKSB9OwogCi0gICAgaWYgKHJvb3QoKS5zdHlsZSgpLmlzTGVmdFRvUmlnaHRE
aXJlY3Rpb24oKSkKLSAgICAgICAgcmV0dXJuIGVsbGlwc2lzUmVjdDsKLSAgICBlbGxpcHNpc1Jl
Y3Quc2V0WChsaW5lQm94VmlzdWFsUmVjdC5tYXhYKCkgLSAoZWxsaXBzaXNTdGFydCArIGVsbGlw
c2lzUmVjdC53aWR0aCgpKSk7Ci0gICAgcmV0dXJuIGVsbGlwc2lzUmVjdDsKKyAgICBhdXRvIHRy
dW5jYXRlTGVmdCA9IHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IHsgfTsKKyAgICBhdXRvIHZpc3VhbExl
ZnRGb3JDb250ZW50RW5kID0gc3RkOjptYXgoMC5mLCBsZWZ0KGRpc3BsYXlMaW5lKSArIGVsbGlw
c2lzV2lkdGgpOworICAgIGZvciAoYXV0byYgZGlzcGxheUJveCA6IG1ha2VSZXZlcnNlZFJhbmdl
KGJveGVzKSkgeworICAgICAgICBpZiAoZGlzcGxheUJveC5pc0lubGluZUJveCgpKQorICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgIGlmIChsZWZ0KGRpc3BsYXlCb3gpIDwgdmlzdWFsTGVm
dEZvckNvbnRlbnRFbmQpIHsKKyAgICAgICAgICAgIGF1dG8gdHJ1bmNhdGVQb3NpdGlvbiA9IHRy
dW5jYXRlKGRpc3BsYXlCb3gsIHN0ZDo6bWF4KDAuZiwgcmlnaHQoZGlzcGxheUJveCkgLSB2aXN1
YWxMZWZ0Rm9yQ29udGVudEVuZCksICFpc0ZpcnN0Q29udGVudFJ1bik7CisgICAgICAgICAgICB0
cnVuY2F0ZUxlZnQgPSB0cnVuY2F0ZUxlZnQudmFsdWVfb3IodHJ1bmNhdGVQb3NpdGlvbik7Cisg
ICAgICAgIH0KKyAgICAgICAgaXNGaXJzdENvbnRlbnRSdW4gPSBmYWxzZTsKKyAgICB9CisgICAg
QVNTRVJUKHRydW5jYXRlTGVmdC5oYXNfdmFsdWUoKSk7CisgICAgcmV0dXJuIHRydW5jYXRlTGVm
dC52YWx1ZV9vcihlbGxpcHNpc1dpZHRoKSAtIGVsbGlwc2lzV2lkdGg7CiB9CiAKLUlubGluZVJl
Y3QgSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyOjpmbGlwTG9naWNhbExpbmVSZWN0VG9WaXN1YWxG
b3JXcml0aW5nTW9kZShjb25zdCBJbmxpbmVSZWN0JiBsaW5lTG9naWNhbFJlY3QsIFdyaXRpbmdN
b2RlIHdyaXRpbmdNb2RlKSBjb25zdAorc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IElubGluZURp
c3BsYXlMaW5lQnVpbGRlcjo6dHJhaWxpbmdFbGxpcHNpc1Zpc3VhbFJlY3RBZnRlclRydW5jYXRp
b24oTGluZUJ1aWxkZXI6OkxpbmVFbmRpbmdFbGxpcHNpc1BvbGljeSBsaW5lRW5kaW5nRWxsaXBz
aXNQb2xpY3ksIGNvbnN0IElubGluZURpc3BsYXk6OkxpbmUmIGRpc3BsYXlMaW5lLCBEaXNwbGF5
Qm94ZXMmIGRpc3BsYXlCb3hlcywgYm9vbCBpc0xhc3RMaW5lV2l0aElubGluZUNvbnRlbnQpCiB7
Ci0gICAgc3dpdGNoICh3cml0aW5nTW9kZSkgewotICAgIGNhc2UgV3JpdGluZ01vZGU6OlRvcFRv
Qm90dG9tOgotICAgICAgICByZXR1cm4gbGluZUxvZ2ljYWxSZWN0OwotICAgIGNhc2UgV3JpdGlu
Z01vZGU6OkxlZnRUb1JpZ2h0OgotICAgIGNhc2UgV3JpdGluZ01vZGU6OlJpZ2h0VG9MZWZ0Ogot
ICAgICAgICAvLyBTZWUgSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5IGZvciBtb3JlIGluZm8uCi0g
ICAgICAgIHJldHVybiB7IGxpbmVMb2dpY2FsUmVjdC5sZWZ0KCksIGxpbmVMb2dpY2FsUmVjdC50
b3AoKSwgbGluZUxvZ2ljYWxSZWN0LmhlaWdodCgpLCBsaW5lTG9naWNhbFJlY3Qud2lkdGgoKSB9
OwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBi
cmVhazsKLSAgICB9Ci0gICAgcmV0dXJuIGxpbmVMb2dpY2FsUmVjdDsKKyAgICBpZiAoZGlzcGxh
eUJveGVzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGF1dG8gY29udGVu
dE5lZWRzRWxsaXBzaXMgPSBbJl0geworICAgICAgICBzd2l0Y2ggKGxpbmVFbmRpbmdFbGxpcHNp
c1BvbGljeSkgeworICAgICAgICBjYXNlIExpbmVCdWlsZGVyOjpMaW5lRW5kaW5nRWxsaXBzaXNQ
b2xpY3k6Ok5vOgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBjYXNlIExpbmVC
dWlsZGVyOjpMaW5lRW5kaW5nRWxsaXBzaXNQb2xpY3k6OldoZW5Db250ZW50T3ZlcmZsb3dzSW5J
bmxpbmVEaXJlY3Rpb246CisgICAgICAgICAgICByZXR1cm4gZGlzcGxheUxpbmUuY29udGVudExv
Z2ljYWxXaWR0aCgpID4gZGlzcGxheUxpbmUubGluZUJveExvZ2ljYWxSZWN0KCkud2lkdGgoKTsK
KyAgICAgICAgY2FzZSBMaW5lQnVpbGRlcjo6TGluZUVuZGluZ0VsbGlwc2lzUG9saWN5OjpXaGVu
Q29udGVudE92ZXJmbG93c0luQmxvY2tEaXJlY3Rpb246CisgICAgICAgICAgICBpZiAoaXNMYXN0
TGluZVdpdGhJbmxpbmVDb250ZW50KQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgIEZBTExUSFJPVUdIOworICAgICAgICBjYXNlIExpbmVCdWlsZGVyOjpMaW5lRW5k
aW5nRWxsaXBzaXNQb2xpY3k6OkFsd2F5czoKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9OworICAgIGlmICghY29udGVudE5l
ZWRzRWxsaXBzaXMoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIEFTU0VSVChkaXNwbGF5
Qm94ZXNbMF0uaXNSb290SW5saW5lQm94KCkpOworICAgIGF1dG8mIHJvb3RJbmxpbmVCb3ggPSBk
aXNwbGF5Qm94ZXNbMF07CisgICAgYXV0byYgcm9vdFN0eWxlID0gcm9vdElubGluZUJveC5zdHls
ZSgpOworICAgIGF1dG8gZWxsaXBzaXNXaWR0aCA9IHJvb3RTdHlsZS5mb250Q2FzY2FkZSgpLndp
ZHRoKFRleHRVdGlsOjplbGxpcHNpc1RleHRSdW4oKSk7CisKKyAgICBhdXRvIGNvbnRlbnROZWVk
c1RydW5jYXRpb24gPSBbJl0geworICAgICAgICBzd2l0Y2ggKGxpbmVFbmRpbmdFbGxpcHNpc1Bv
bGljeSkgeworICAgICAgICBjYXNlIExpbmVCdWlsZGVyOjpMaW5lRW5kaW5nRWxsaXBzaXNQb2xp
Y3k6OldoZW5Db250ZW50T3ZlcmZsb3dzSW5JbmxpbmVEaXJlY3Rpb246CisgICAgICAgICAgICBB
U1NFUlQoZGlzcGxheUxpbmUuY29udGVudExvZ2ljYWxXaWR0aCgpID4gZGlzcGxheUxpbmUubGlu
ZUJveExvZ2ljYWxSZWN0KCkud2lkdGgoKSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgY2FzZSBMaW5lQnVpbGRlcjo6TGluZUVuZGluZ0VsbGlwc2lzUG9saWN5OjpXaGVuQ29u
dGVudE92ZXJmbG93c0luQmxvY2tEaXJlY3Rpb246CisgICAgICAgIGNhc2UgTGluZUJ1aWxkZXI6
OkxpbmVFbmRpbmdFbGxpcHNpc1BvbGljeTo6QWx3YXlzOgorICAgICAgICAgICAgcmV0dXJuIGRp
c3BsYXlMaW5lLmNvbnRlbnRMb2dpY2FsTGVmdCgpICsgZGlzcGxheUxpbmUuY29udGVudExvZ2lj
YWxXaWR0aCgpICsgZWxsaXBzaXNXaWR0aCA+IGRpc3BsYXlMaW5lLmxpbmVCb3hMb2dpY2FsUmVj
dCgpLm1heFgoKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfTsKKwor
ICAgIGF1dG8gZWxsaXBzaXNTdGFydCA9IDAuZjsKKyAgICBpZiAoIWNvbnRlbnROZWVkc1RydW5j
YXRpb24oKSkgeworICAgICAgICAvLyBUaGUgY29udGVudCBkb2VzIG5vdCBvdmVyZmxvdyB0aGUg
bGluZSBib3guIFRoZSBlbGxpcHNpcyBpcyBzdXBwb3NlZCB0byBiZSBlaXRoZXIgdmlzdWFsbHkg
dHJhaWxpbmcgb3IgbGVhZGluZyBkZXBlbmRpbmcgb24gdGhlIGlubGluZSBkaXJlY3Rpb24uCisg
ICAgICAgIGlmIChkaXNwbGF5Qm94ZXMuc2l6ZSgpID4gMSkKKyAgICAgICAgICAgIGVsbGlwc2lz
U3RhcnQgPSByb290U3R5bGUuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gZGlzcGxheUJveGVz
Lmxhc3QoKS5yaWdodCgpIDogZGlzcGxheUJveGVzWzFdLmxlZnQoKSAtIGVsbGlwc2lzV2lkdGg7
CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLy8gQWxsIHdlIGhhdmUgaXMgdGhlIHJvb3Qg
aW5saW5lIGJveC4KKyAgICAgICAgICAgIGVsbGlwc2lzU3RhcnQgPSBkaXNwbGF5Qm94ZXMuZmly
c3QoKS5sZWZ0KCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UKKyAgICAgICAgZWxsaXBzaXNTdGFy
dCA9IHRydW5jYXRlT3ZlcmZsb3dpbmdEaXNwbGF5Qm94ZXMoZGlzcGxheUxpbmUsIGRpc3BsYXlC
b3hlcywgZWxsaXBzaXNXaWR0aCwgcm9vdFN0eWxlKTsKKworICAgIGlmIChyb290U3R5bGUuaXNI
b3Jpem9udGFsV3JpdGluZ01vZGUoKSkKKyAgICAgICAgcmV0dXJuIEZsb2F0UmVjdCB7IGVsbGlw
c2lzU3RhcnQsIHJvb3RJbmxpbmVCb3gudG9wKCksIGVsbGlwc2lzV2lkdGgsIHJvb3RJbmxpbmVC
b3guaGVpZ2h0KCkgfTsKKyAgICByZXR1cm4gRmxvYXRSZWN0IHsgcm9vdElubGluZUJveC5sZWZ0
KCksIGVsbGlwc2lzU3RhcnQsIHJvb3RJbmxpbmVCb3gud2lkdGgoKSwgZWxsaXBzaXNXaWR0aCB9
OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlMaW5lQnVpbGRlci5oIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVE
aXNwbGF5TGluZUJ1aWxkZXIuaAppbmRleCAxM2M0OTRhN2YwMTIuLjY0YWRkMjE2MTk0YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
ZGlzcGxheS9JbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlMaW5l
QnVpbGRlci5oCkBAIC00MCwxNCArNDAsMTQgQEAgcHVibGljOgogCiAgICAgSW5saW5lRGlzcGxh
eTo6TGluZSBidWlsZChjb25zdCBMaW5lQnVpbGRlcjo6TGluZUNvbnRlbnQmLCBjb25zdCBMaW5l
Qm94JiwgY29uc3QgQ29uc3RyYWludHNGb3JJbmxpbmVDb250ZW50JikgY29uc3Q7CiAKKyAgICBz
dGF0aWMgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IHRyYWlsaW5nRWxsaXBzaXNWaXN1YWxSZWN0
QWZ0ZXJUcnVuY2F0aW9uKExpbmVCdWlsZGVyOjpMaW5lRW5kaW5nRWxsaXBzaXNQb2xpY3ksIGNv
bnN0IElubGluZURpc3BsYXk6OkxpbmUmLCBEaXNwbGF5Qm94ZXMmLCBib29sIGlzTGFzdExpbmVX
aXRoSW5saW5lQ29udGVudCk7CisKIHByaXZhdGU6CiAgICAgc3RydWN0IEVuY2xvc2luZ0xpbmVH
ZW9tZXRyeSB7CiAgICAgICAgIElubGluZURpc3BsYXk6OkxpbmU6OkVuY2xvc2luZ1RvcEFuZEJv
dHRvbSBlbmNsb3NpbmdUb3BBbmRCb3R0b207CiAgICAgICAgIElubGluZVJlY3Qgc2Nyb2xsYWJs
ZU92ZXJmbG93UmVjdDsKICAgICB9OwogICAgIEVuY2xvc2luZ0xpbmVHZW9tZXRyeSBjb2xsZWN0
RW5jbG9zaW5nTGluZUdlb21ldHJ5KGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lQ29udGVudCYsIGNv
bnN0IExpbmVCb3gmLCBjb25zdCBJbmxpbmVSZWN0JiBsaW5lQm94UmVjdCkgY29uc3Q7Ci0gICAg
SW5saW5lUmVjdCBmbGlwTG9naWNhbExpbmVSZWN0VG9WaXN1YWxGb3JXcml0aW5nTW9kZShjb25z
dCBJbmxpbmVSZWN0JiwgV3JpdGluZ01vZGUpIGNvbnN0OwotICAgIHN0ZDo6b3B0aW9uYWw8Rmxv
YXRSZWN0PiB0cmFpbGluZ0VsbGlwc2lzUmVjdChjb25zdCBMaW5lQnVpbGRlcjo6TGluZUNvbnRl
bnQmLCBjb25zdCBMaW5lQm94JiwgY29uc3QgRmxvYXRSZWN0JiBsaW5lQm94VmlzdWFsUmVjdCkg
Y29uc3Q7CiAKICAgICBjb25zdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYgZm9ybWF0dGluZ0Nv
bnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lubGluZUZvcm1hdHRpbmdDb250ZXh0OyB9CiAgICAg
Y29uc3QgQm94JiByb290KCkgY29uc3QgeyByZXR1cm4gZm9ybWF0dGluZ0NvbnRleHQoKS5yb290
KCk7IH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaW5saW5lL3RleHRfb3ZlcmZsb3df
ZWxsaXBzaXNfc2ltcGxlLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2lubGluZS90
ZXh0X292ZXJmbG93X2VsbGlwc2lzX3NpbXBsZS1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNzM0OWY0MWY0MGViCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9pbmxpbmUvdGV4dF9vdmVyZmxvd19lbGxpcHNpc19zaW1wbGUt
ZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDE2IEBACis8c3R5bGU+CitkaXYgeworICBmb250LXNp
emU6IDIwcHg7CisgIG92ZXJmbG93OiBoaWRkZW47CisgIHdoaXRlLXNwYWNlOiBwcmU7CisgIHdp
ZHRoOiA1MHB4OworfQorPC9zdHlsZT4KKzxkaXY+QUImIzgyMzA7PC9kaXY+Cis8ZGl2IHN0eWxl
PSJib3JkZXItbGVmdDogMTBweCBzb2xpZCI+QUImIzgyMzA7PC9kaXY+Cis8ZGl2IHN0eWxlPSJi
b3JkZXItbGVmdDogMTBweCBzb2xpZDsgcGFkZGluZy1sZWZ0OiAyMHB4OyI+QUImIzgyMzA7PC9k
aXY+Cis8ZGl2IHN0eWxlPSJib3JkZXI6IDEwcHggc29saWQ7IHBhZGRpbmc6IDIwcHg7Ij5BQiYj
ODIzMDs8L2Rpdj4KKzxkaXYgc3R5bGU9ImRpcmVjdGlvbjogcnRsOyI+RUYmIzgyMzA7PC9kaXY+
Cis8ZGl2IHN0eWxlPSJkaXJlY3Rpb246IHJ0bDsgYm9yZGVyLWxlZnQ6IDEwcHggc29saWQiPkVG
JiM4MjMwOzwvZGl2PgorPGRpdiBzdHlsZT0iZGlyZWN0aW9uOiBydGw7IGJvcmRlci1sZWZ0OiAx
MHB4IHNvbGlkOyBwYWRkaW5nLWxlZnQ6IDIwcHg7Ij5FRiYjODIzMDs8L2Rpdj4KKzxkaXYgc3R5
bGU9ImRpcmVjdGlvbjogcnRsOyBib3JkZXI6IDEwcHggc29saWQ7IHBhZGRpbmc6IDIwcHg7Ij5F
RiYjODIzMDs8L2Rpdj4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaW5saW5lL3RleHRf
b3ZlcmZsb3dfZWxsaXBzaXNfc2ltcGxlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2lubGluZS90
ZXh0X292ZXJmbG93X2VsbGlwc2lzX3NpbXBsZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMC4uZjA3MmQxZTU5YjE1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9pbmxpbmUvdGV4dF9vdmVyZmxvd19lbGxpcHNpc19zaW1wbGUuaHRtbApAQCAt
MCwwICsxLDI0IEBACis8c3R5bGU+CitkaXYgeworICBmb250LXNpemU6IDIwcHg7CisgIG92ZXJm
bG93OiBoaWRkZW47CisgIHdoaXRlLXNwYWNlOiBwcmU7CisgIHdpZHRoOiA1MHB4OworICB0ZXh0
LW92ZXJmbG93OiBlbGxpcHNpczsKK30KKzwvc3R5bGU+Cis8ZGl2PkFCQ0QgRUZHSDwvZGl2Pgor
PGRpdiBzdHlsZT0iYm9yZGVyLWxlZnQ6IDEwcHggc29saWQiPkFCQ0QgRUZHSDwvZGl2PgorPGRp
diBzdHlsZT0iYm9yZGVyLWxlZnQ6IDEwcHggc29saWQ7IHBhZGRpbmctbGVmdDogMjBweDsiPkFC
Q0QgRUZHSDwvZGl2PgorPGRpdiBzdHlsZT0iYm9yZGVyOiAxMHB4IHNvbGlkOyBwYWRkaW5nOiAy
MHB4OyI+QUJDRCBFRkdIPC9kaXY+CisKKzxkaXYgc3R5bGU9ImRpcmVjdGlvbjogcnRsOyI+QUJD
RCBFRkdIPC9kaXY+Cis8ZGl2IHN0eWxlPSJkaXJlY3Rpb246IHJ0bDsgYm9yZGVyLWxlZnQ6IDEw
cHggc29saWQiPkFCQ0QgRUZHSDwvZGl2PgorPGRpdiBzdHlsZT0iZGlyZWN0aW9uOiBydGw7IGJv
cmRlci1sZWZ0OiAxMHB4IHNvbGlkOyBwYWRkaW5nLWxlZnQ6IDIwcHg7Ij5BQkNEIEVGR0g8L2Rp
dj4KKzxkaXYgc3R5bGU9ImRpcmVjdGlvbjogcnRsOyBib3JkZXI6IDEwcHggc29saWQ7IHBhZGRp
bmc6IDIwcHg7Ij5BQkNEIEVGR0g8L2Rpdj4KKworCis8IS0tIE5lZWRzIHNvbWUgcGFpbnRpbmcg
d29yaywgc2VlIHdlYmtpdC5vcmcvYi8yNTE2MTAKKzxkaXYgc3R5bGU9IndyaXRpbmctbW9kZTog
dmVydGljYWwtbHI7IHdpZHRoOiBhdXRvOyBoZWlnaHQ6IDUwcHg7IGJvcmRlcjogMTBweCBzb2xp
ZDsgcGFkZGluZzogMjBweDsiPkFCQ0QgRUZHSDwvZGl2PgorPGRpdiBzdHlsZT0id3JpdGluZy1t
b2RlOiB2ZXJ0aWNhbC1scjsgZGlyZWN0aW9uOiBydGw7IHdpZHRoOiBhdXRvOyBoZWlnaHQ6IDUw
cHg7IGJvcmRlcjogMTBweCBzb2xpZDsgcGFkZGluZzogMjBweDsiPkFCQ0QgRUZHSDwvZGl2Pgor
IC0tPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>