<?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>8940</bug_id>
          
          <creation_ts>2006-05-16 09:26:28 -0700</creation_ts>
          <short_desc>remove extra copy of image code</short_desc>
          <delta_ts>2006-05-16 15:23:33 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>andersca</cc>
    
    <cc>darin</cc>
    
    <cc>hyatt</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>42479</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-05-16 09:26:28 -0700</bug_when>
    <thetext>I started removing the extra image code. For all I know Anders already started doing this, but I couldn&apos;t help myself!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>42490</commentid>
    <comment_count>1</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2006-05-16 09:56:42 -0700</bug_when>
    <thetext>How far along are you with this? I&apos;m working on it right now and I&apos;m almost finished (I think)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>42491</commentid>
    <comment_count>2</comment_count>
      <attachid>8351</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-05-16 10:01:58 -0700</bug_when>
    <thetext>Created attachment 8351
patch to remove code from both WebKit and WebCore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>42497</commentid>
    <comment_count>3</comment_count>
      <attachid>8351</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2006-05-16 10:12:31 -0700</bug_when>
    <thetext>Comment on attachment 8351
patch to remove code from both WebKit and WebCore

Looks like the way I did it, except for one thing:

I used ForElement in _web_declareAndWriteDragImageElement and _web_dragImageElement, as per John&apos;s suggestion.

Feel free to change that if you want.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>42507</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-05-16 11:40:42 -0700</bug_when>
    <thetext>Darn. I should have waiting. Didn&apos;t realize you were so far along!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>42524</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-05-16 13:12:42 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; I used ForElement in _web_declareAndWriteDragImageElement and
&gt; _web_dragImageElement, as per John&apos;s suggestion.

OK. I&apos;ll do that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>42539</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-05-16 15:22:26 -0700</bug_when>
    <thetext>Committed revision 14420.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>42540</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-05-16 15:23:33 -0700</bug_when>
    <thetext>Committed revision 14421.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>8351</attachid>
            <date>2006-05-16 10:01:58 -0700</date>
            <delta_ts>2006-05-16 10:12:31 -0700</delta_ts>
            <desc>patch to remove code from both WebKit and WebCore</desc>
            <filename>RemoveImageCodePatch.txt</filename>
            <type>text/plain</type>
            <size>163528</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbWFjL0ltYWdlTWFjLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGxhdGZvcm0vbWFjL0ltYWdlTWFjLm1tCShyZXZpc2lvbiAxNDQxNSkKKysrIFdlYkNv
cmUvcGxhdGZvcm0vbWFjL0ltYWdlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw5
IEBACiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHQuaCIKICNpbXBvcnQgIlBERkRvY3VtZW50SW1h
Z2UuaCIKICNpbXBvcnQgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW1wb3J0ICJXZWJDb3JlRnJhbWVC
cmlkZ2UuaCIKICNpbXBvcnQgIldlYkNvcmVJbWFnZVJlbmRlcmVyRmFjdG9yeS5oIgorI2ltcG9y
dCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTk5LDcgKzEwMSw5IEBACiAKIGJvb2wgSW1hZ2U6OnN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcm
IHR5cGUpCiB7Ci0gICAgcmV0dXJuIFtbW1dlYkNvcmVJbWFnZVJlbmRlcmVyRmFjdG9yeSBzaGFy
ZWRGYWN0b3J5XSBzdXBwb3J0ZWRNSU1FVHlwZXNdIGNvbnRhaW5zT2JqZWN0OnR5cGVdOworICAg
IC8vIEZJWE1FOiBXb3VsZCBiZSBiZXR0ZXIgaWYgdGhpcyB3YXMgbG9va2luZyBpbiBhIHNldCBy
YXRoZXIgdGhhbiBhbiBOU0FycmF5LgorICAgIC8vIEZJWE1FOiBXb3VsZCBiZSBiZXR0ZXIgbm90
IHRvIGNvbnZlcnQgdG8gYW4gTlNTdHJpbmcganVzdCB0byBjaGVjayBpZiBhIHR5cGUgaXMgc3Vw
cG9ydGVkLgorICAgIHJldHVybiBbW1dlYkNvcmVGcmFtZUJyaWRnZSBzdXBwb3J0ZWRJbWFnZVJl
c291cmNlTUlNRVR5cGVzXSBjb250YWluc09iamVjdDp0eXBlXTsKIH0KIAogLy8gRHJhd2luZyBS
b3V0aW5lcwpAQCAtMzM3LDggKzM0MSw3IEBACiAKICAgICAgICAgY3R4dC0+c2F2ZSgpOwogCi0g
ICAgICAgIENHUG9pbnQgdGlsZU9yaWdpbiA9IENHUG9pbnRNYWtlKG9uZVRpbGVSZWN0Lm9yaWdp
bi54LCBvbmVUaWxlUmVjdC5vcmlnaW4ueSk7Ci0gICAgICAgIFtbV2ViQ29yZUltYWdlUmVuZGVy
ZXJGYWN0b3J5IHNoYXJlZEZhY3RvcnldIHNldFBhdHRlcm5QaGFzZUZvckNvbnRleHQ6Y29udGV4
dCBpblVzZXJTcGFjZTp0aWxlT3JpZ2luXTsKKyAgICAgICAgd2tTZXRQYXR0ZXJuUGhhc2VJblVz
ZXJTcGFjZShjb250ZXh0LCBDR1BvaW50TWFrZShvbmVUaWxlUmVjdC5vcmlnaW4ueCwgb25lVGls
ZVJlY3Qub3JpZ2luLnkpKTsKIAogICAgICAgICBDR0NvbG9yU3BhY2VSZWYgcGF0dGVyblNwYWNl
ID0gQ0dDb2xvclNwYWNlQ3JlYXRlUGF0dGVybihOVUxMKTsKICAgICAgICAgQ0dDb250ZXh0U2V0
RmlsbENvbG9yU3BhY2UoY29udGV4dCwgcGF0dGVyblNwYWNlKTsKQEAgLTQyMSw4ICs0MjQsNyBA
QAogICAgICAgICBpZiAodlJ1bGUgPT0gSW1hZ2U6OlJlcGVhdFRpbGUpCiAgICAgICAgICAgICB2
UGhhc2UgLT0gZm1vZGYoaXIuc2l6ZS5oZWlnaHQsIHNjYWxlWSAqIHRpbGVTaXplLmhlaWdodCkg
LyAyLjBmOwogICAgICAgICAKLSAgICAgICAgQ0dQb2ludCB0aWxlT3JpZ2luID0gQ0dQb2ludE1h
a2UoaXIub3JpZ2luLnggLSBoUGhhc2UsIGlyLm9yaWdpbi55IC0gdlBoYXNlKTsKLSAgICAgICAg
W1tXZWJDb3JlSW1hZ2VSZW5kZXJlckZhY3Rvcnkgc2hhcmVkRmFjdG9yeV0gc2V0UGF0dGVyblBo
YXNlRm9yQ29udGV4dDpjb250ZXh0IGluVXNlclNwYWNlOnRpbGVPcmlnaW5dOworICAgICAgICB3
a1NldFBhdHRlcm5QaGFzZUluVXNlclNwYWNlKGNvbnRleHQsIENHUG9pbnRNYWtlKGlyLm9yaWdp
bi54IC0gaFBoYXNlLCBpci5vcmlnaW4ueSAtIHZQaGFzZSkpOwogCiAgICAgICAgIENHQ29sb3JT
cGFjZVJlZiBwYXR0ZXJuU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVQYXR0ZXJuKE5VTEwpOwog
ICAgICAgICBDR0NvbnRleHRTZXRGaWxsQ29sb3JTcGFjZShjb250ZXh0LCBwYXR0ZXJuU3BhY2Up
OwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZUltYWdlUmVuZGVyZXJGYWN0b3J5
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZUltYWdlUmVuZGVy
ZXJGYWN0b3J5LmgJKHJldmlzaW9uIDE0NDE1KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2Vi
Q29yZUltYWdlUmVuZGVyZXJGYWN0b3J5LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDAzIEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA2IEFwcGxlIENvbXB1dGVy
LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0yNSwzMiArMjUsMTUgQEAKIAogI2ltcG9ydCA8Q29jb2EvQ29jb2EuaD4KIAotQHBy
b3RvY29sIFdlYkNvcmVJbWFnZVJlbmRlcmVyOworLy8gRklYTUU6IFRoZSBuYW1lIG9mIHRoaXMg
Y2xhc3MgaXMgYmFzZWQgb24gaXRzIG9sZCBwdXJwb3NlLgorLy8gSXQgc2hvdWxkIGJlIHJlbmFt
ZWQsIGFuZCBhbHNvIGVsaW1pbmF0ZWQgaWYgcG9zc2libGUuCiAKIEBwcm90b2NvbCBXZWJDb3Jl
SW1hZ2VSZW5kZXJlckZhY3RvcnkKLQotLSAoaWQgPFdlYkNvcmVJbWFnZVJlbmRlcmVyPilpbWFn
ZVJlbmRlcmVyOwotLSAoaWQgPFdlYkNvcmVJbWFnZVJlbmRlcmVyPilpbWFnZVJlbmRlcmVyV2l0
aE1JTUVUeXBlOihOU1N0cmluZyAqKU1JTUVUeXBlOwotLSAoaWQgPFdlYkNvcmVJbWFnZVJlbmRl
cmVyPilpbWFnZVJlbmRlcmVyV2l0aEJ5dGVzOihjb25zdCB2b2lkICopYnl0ZXMgbGVuZ3RoOih1
bnNpZ25lZClsZW5ndGg7Ci0tIChpZCA8V2ViQ29yZUltYWdlUmVuZGVyZXI+KWltYWdlUmVuZGVy
ZXJXaXRoQnl0ZXM6KGNvbnN0IHZvaWQgKilieXRlcyBsZW5ndGg6KHVuc2lnbmVkKWxlbmd0aCBN
SU1FVHlwZTooTlNTdHJpbmcgKilNSU1FVHlwZTsKLS0gKGlkIDxXZWJDb3JlSW1hZ2VSZW5kZXJl
cj4paW1hZ2VSZW5kZXJlcldpdGhTaXplOihOU1NpemUpc2l6ZTsKLS0gKGlkIDxXZWJDb3JlSW1h
Z2VSZW5kZXJlcj4paW1hZ2VSZW5kZXJlcldpdGhOYW1lOihOU1N0cmluZyAqKW5hbWU7Ci0KIC0g
KE5TRGF0YSAqKWltYWdlRGF0YUZvck5hbWU6KE5TU3RyaW5nICopbmFtZTsKLS0gKE5TQXJyYXkg
KilzdXBwb3J0ZWRNSU1FVHlwZXM7Ci0tICh2b2lkKXNldFBhdHRlcm5QaGFzZUZvckNvbnRleHQ6
KENHQ29udGV4dFJlZiljb250ZXh0IGluVXNlclNwYWNlOihDR1BvaW50KXBvaW50OwotLSAoaW50
KUNHQ29tcG9zaXRlT3BlcmF0aW9uSW5Db250ZXh0OihDR0NvbnRleHRSZWYpY29udGV4dDsKLS0g
KHZvaWQpc2V0Q0dDb21wb3NpdGVPcGVyYXRpb246KGludClvcCBpbkNvbnRleHQ6KENHQ29udGV4
dFJlZiljb250ZXh0OwotLSAodm9pZClzZXRDR0NvbXBvc2l0ZU9wZXJhdGlvbkZyb21TdHJpbmc6
KE5TU3RyaW5nICopb3AgaW5Db250ZXh0OihDR0NvbnRleHRSZWYpY29udGV4dDsKLQogQGVuZAog
CiBAaW50ZXJmYWNlIFdlYkNvcmVJbWFnZVJlbmRlcmVyRmFjdG9yeSA6IE5TT2JqZWN0Ci17Ci19
Ci0KICsgKFdlYkNvcmVJbWFnZVJlbmRlcmVyRmFjdG9yeSAqKXNoYXJlZEZhY3Rvcnk7Ci0KIEBl
bmQKIAogQGludGVyZmFjZSBXZWJDb3JlSW1hZ2VSZW5kZXJlckZhY3RvcnkgKFN1YmNsYXNzUmVz
cG9uc2liaWxpdHkpIDxXZWJDb3JlSW1hZ2VSZW5kZXJlckZhY3Rvcnk+CkluZGV4OiBXZWJDb3Jl
L3BsYXRmb3JtL21hYy9XZWJDb3JlSW1hZ2VSZW5kZXJlckZhY3RvcnkubQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlSW1hZ2VSZW5kZXJlckZhY3RvcnkubQkocmV2
aXNpb24gMTQ0MTUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlSW1hZ2VSZW5kZXJl
ckZhY3RvcnkubQkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDMgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDggKzI1
LDggQEAKIAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXZWJDb3JlSW1hZ2VSZW5kZXJl
ckZhY3RvcnkuaCIKKwogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KLSNpbXBvcnQgIlJlbmRl
clRyZWVBc1RleHQuaCIKIAogQGltcGxlbWVudGF0aW9uIFdlYkNvcmVJbWFnZVJlbmRlcmVyRmFj
dG9yeQogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNl
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRl
cmZhY2UubW0JKHJldmlzaW9uIDE0NDE1KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29y
ZVN5c3RlbUludGVyZmFjZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsMjUgKzI2LDI3IEBACiAj
aW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKIAot
Qk9PTCAoKndrQ0dDb250ZXh0R2V0U2hvdWxkU21vb3RoRm9udHMpKENHQ29udGV4dFJlZiBjZ0Nv
bnRleHQpOworQk9PTCAoKndrQ0dDb250ZXh0R2V0U2hvdWxkU21vb3RoRm9udHMpKENHQ29udGV4
dFJlZik7CiB2b2lkICgqd2tDbGVhckdseXBoVmVjdG9yKSh2b2lkKiBnbHlwaHMpOwotT1NTdGF0
dXMgKCp3a0NvbnZlcnRDaGFyVG9HbHlwaHMpKHZvaWQgKnN0eWxlR3JvdXAsIGNvbnN0IFVuaUNo
YXIgKmNoYXJhY3RlcnMsIHVuc2lnbmVkIG51bUNoYXJhY3RlcnMsIHZvaWQqIGdseXBocyk7CitP
U1N0YXR1cyAoKndrQ29udmVydENoYXJUb0dseXBocykodm9pZCogc3R5bGVHcm91cCwgY29uc3Qg
VW5pQ2hhciosIHVuc2lnbmVkIG51bUNoYXJhY3RlcnMsIHZvaWQqIGdseXBocyk7CiB2b2lkICgq
d2tEcmF3QmV6ZWxlZFRleHRGaWVsZENlbGwpKE5TUmVjdCwgQk9PTCBlbmFibGVkKTsKIHZvaWQg
KCp3a0RyYXdGb2N1c1JpbmcpKENHQ29udGV4dFJlZiwgQ0dSZWN0IGNsaXBSZWN0LCBDR0NvbG9y
UmVmLCBpbnQgcmFkaXVzKTsKIEJPT0wgKCp3a0ZvbnRTbW9vdGhpbmdNb2RlSXNMQ0QpKGludCBt
b2RlKTsKLU9TU3RhdHVzICgqd2tHZXRBVFNTdHlsZUdyb3VwKShBVFNVU3R5bGUgZm9udFN0eWxl
LCB2b2lkICoqc3R5bGVHcm91cCk7Ci1DR0ZvbnRSZWYgKCp3a0dldENHRm9udEZyb21OU0ZvbnQp
KE5TRm9udCAqZm9udCk7Ci1BVFNHbHlwaFJlZiAoKndrR2V0RGVmYXVsdEdseXBoRm9yQ2hhciko
TlNGb250ICpmb250LCBVbmlDaGFyIGMpOwotTlNGb250KiAoKndrR2V0Rm9udEluTGFuZ3VhZ2VG
b3JSYW5nZSkoTlNGb250ICpmb250LCBOU1N0cmluZyAqc3RyaW5nLCBOU1JhbmdlIHJhbmdlKTsK
LU5TRm9udCogKCp3a0dldEZvbnRJbkxhbmd1YWdlRm9yQ2hhcmFjdGVyKShOU0ZvbnQgKmZvbnQs
IFVuaUNoYXIgY2gpOwotdm9pZCAoKndrR2V0Rm9udE1ldHJpY3MpKE5TRm9udCAqZm9udCwgaW50
ICphc2NlbnQsIGludCAqZGVzY2VudCwgaW50ICpsaW5lR2FwLCB1bnNpZ25lZCAqdW5pdHNQZXJF
bSk7Ci1CT09MICgqd2tHZXRHbHlwaFRyYW5zZm9ybWVkQWR2YW5jZXMpKE5TRm9udCAqZm9udCwg
Q0dBZmZpbmVUcmFuc2Zvcm0gKm0sIEFUU0dseXBoUmVmICpnbHlwaCwgQ0dTaXplICphZHZhbmNl
KTsKK09TU3RhdHVzICgqd2tHZXRBVFNTdHlsZUdyb3VwKShBVFNVU3R5bGUsIHZvaWQqKiBzdHls
ZUdyb3VwKTsKK0NHRm9udFJlZiAoKndrR2V0Q0dGb250RnJvbU5TRm9udCkoTlNGb250Kik7CitB
VFNHbHlwaFJlZiAoKndrR2V0RGVmYXVsdEdseXBoRm9yQ2hhcikoTlNGb250KiwgVW5pQ2hhcik7
CitOU0ZvbnQqICgqd2tHZXRGb250SW5MYW5ndWFnZUZvclJhbmdlKShOU0ZvbnQqLCBOU1N0cmlu
ZyosIE5TUmFuZ2UpOworTlNGb250KiAoKndrR2V0Rm9udEluTGFuZ3VhZ2VGb3JDaGFyYWN0ZXIp
KE5TRm9udCosIFVuaUNoYXIpOwordm9pZCAoKndrR2V0Rm9udE1ldHJpY3MpKE5TRm9udCosIGlu
dCogYXNjZW50LCBpbnQqIGRlc2NlbnQsIGludCogbGluZUdhcCwgdW5zaWduZWQqIHVuaXRzUGVy
RW0pOworQk9PTCAoKndrR2V0R2x5cGhUcmFuc2Zvcm1lZEFkdmFuY2VzKShOU0ZvbnQqLCBDR0Fm
ZmluZVRyYW5zZm9ybSosIEFUU0dseXBoUmVmKiwgQ0dTaXplKiBhZHZhbmNlKTsKIEFUU0xheW91
dFJlY29yZCogKCp3a0dldEdseXBoVmVjdG9yRmlyc3RSZWNvcmQpKHZvaWQqIGdseXBoVmVjdG9y
KTsKIGludCAoKndrR2V0R2x5cGhWZWN0b3JOdW1HbHlwaHMpKHZvaWQqIGdseXBoVmVjdG9yKTsK
IHNpemVfdCAoKndrR2V0R2x5cGhWZWN0b3JSZWNvcmRTaXplKSh2b2lkKiBnbHlwaFZlY3Rvcik7
Ci1BVFNVRm9udElEICgqd2tHZXROU0ZvbnRBVFNVRm9udElkKShOU0ZvbnQgKmZvbnQpOworTlNT
dHJpbmcqICgqd2tHZXRNSU1FVHlwZUZvckV4dGVuc2lvbikoTlNTdHJpbmcqKTsKK0FUU1VGb250
SUQgKCp3a0dldE5TRm9udEFUU1VGb250SWQpKE5TRm9udCopOwogT1NTdGF0dXMgKCp3a0luaXRp
YWxpemVHbHlwaFZlY3RvcikoaW50IGNvdW50LCB2b2lkKiBnbHlwaHMpOwotdm9pZCAoKndrUmVs
ZWFzZVN0eWxlR3JvdXApKHZvaWQgKmdyb3VwKTsKLXZvaWQgKCp3a1NldENHRm9udFJlbmRlcmlu
Z01vZGUpKENHQ29udGV4dFJlZiBjZ0NvbnRleHQsIE5TRm9udCAqZm9udCk7Cit2b2lkICgqd2tS
ZWxlYXNlU3R5bGVHcm91cCkodm9pZCogZ3JvdXApOwordm9pZCAoKndrU2V0Q0dGb250UmVuZGVy
aW5nTW9kZSkoQ0dDb250ZXh0UmVmLCBOU0ZvbnQqKTsKIHZvaWQgKCp3a1NldERyYWdJbWFnZSko
TlNJbWFnZSosIE5TUG9pbnQgb2Zmc2V0KTsKLXZvaWQgKCp3a1NldFVwRm9udENhY2hlKShzaXpl
X3Qgcyk7Cit2b2lkICgqd2tTZXRQYXR0ZXJuUGhhc2VJblVzZXJTcGFjZSkoQ0dDb250ZXh0UmVm
LCBDR1BvaW50IHBvaW50KTsKK3ZvaWQgKCp3a1NldFVwRm9udENhY2hlKShzaXplX3QpOwpJbmRl
eDogV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGxhdGZvcm0vbWFjL0NsaXBib2FyZE1hYy5tbQkocmV2aXNpb24gMTQ0MTUpCisrKyBX
ZWJDb3JlL3BsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI5
LDcgKzI5LDYgQEAKICNpbXBvcnQgIkNhY2hlZEltYWdlLmgiCiAjaW1wb3J0ICJGb3VuZGF0aW9u
RXh0cmFzLmgiCiAjaW1wb3J0ICJGcmFtZU1hYy5oIgotI2ltcG9ydCAiV2ViQ29yZUltYWdlUmVu
ZGVyZXIuaCIKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVy
ZmFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1J
bnRlcmZhY2UuaAkocmV2aXNpb24gMTQ0MTUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJD
b3JlU3lzdGVtSW50ZXJmYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDI4ICszNSwzMCBAQAog
CiAvLyBJbiBhbHBoYWJldGljYWwgb3JkZXIuCiAKLWV4dGVybiBCT09MICgqd2tDR0NvbnRleHRH
ZXRTaG91bGRTbW9vdGhGb250cykoQ0dDb250ZXh0UmVmIGNnQ29udGV4dCk7CitleHRlcm4gQk9P
TCAoKndrQ0dDb250ZXh0R2V0U2hvdWxkU21vb3RoRm9udHMpKENHQ29udGV4dFJlZik7CiBleHRl
cm4gdm9pZCAoKndrQ2xlYXJHbHlwaFZlY3Rvcikodm9pZCogZ2x5cGhzKTsKLWV4dGVybiBPU1N0
YXR1cyAoKndrQ29udmVydENoYXJUb0dseXBocykodm9pZCAqc3R5bGVHcm91cCwgY29uc3QgVW5p
Q2hhciAqY2hhcmFjdGVycywgdW5zaWduZWQgbnVtQ2hhcmFjdGVycywgdm9pZCogZ2x5cGhzKTsK
K2V4dGVybiBPU1N0YXR1cyAoKndrQ29udmVydENoYXJUb0dseXBocykodm9pZCogc3R5bGVHcm91
cCwgY29uc3QgVW5pQ2hhciosIHVuc2lnbmVkIG51bUNoYXJhY3RlcnMsIHZvaWQqIGdseXBocyk7
CiBleHRlcm4gdm9pZCAoKndrRHJhd0JlemVsZWRUZXh0RmllbGRDZWxsKShOU1JlY3QsIEJPT0wg
ZW5hYmxlZCk7CiBleHRlcm4gdm9pZCAoKndrRHJhd0ZvY3VzUmluZykoQ0dDb250ZXh0UmVmLCBD
R1JlY3QgY2xpcFJlY3QsIENHQ29sb3JSZWYsIGludCByYWRpdXMpOwogZXh0ZXJuIEJPT0wgKCp3
a0ZvbnRTbW9vdGhpbmdNb2RlSXNMQ0QpKGludCBtb2RlKTsKLWV4dGVybiBPU1N0YXR1cyAoKndr
R2V0QVRTU3R5bGVHcm91cCkoQVRTVVN0eWxlIGZvbnRTdHlsZSwgdm9pZCAqKnN0eWxlR3JvdXAp
OwotZXh0ZXJuIENHRm9udFJlZiAoKndrR2V0Q0dGb250RnJvbU5TRm9udCkoTlNGb250ICpmb250
KTsKLWV4dGVybiBBVFNHbHlwaFJlZiAoKndrR2V0RGVmYXVsdEdseXBoRm9yQ2hhcikoTlNGb250
ICpmb250LCBVbmlDaGFyIGMpOwotZXh0ZXJuIE5TRm9udCogKCp3a0dldEZvbnRJbkxhbmd1YWdl
Rm9yUmFuZ2UpKE5TRm9udCAqZm9udCwgTlNTdHJpbmcgKnN0cmluZywgTlNSYW5nZSByYW5nZSk7
Ci1leHRlcm4gTlNGb250KiAoKndrR2V0Rm9udEluTGFuZ3VhZ2VGb3JDaGFyYWN0ZXIpKE5TRm9u
dCAqZm9udCwgVW5pQ2hhciBjaCk7Ci1leHRlcm4gdm9pZCAoKndrR2V0Rm9udE1ldHJpY3MpKE5T
Rm9udCAqZm9udCwgaW50ICphc2NlbnQsIGludCAqZGVzY2VudCwgaW50ICpsaW5lR2FwLCB1bnNp
Z25lZCAqdW5pdHNQZXJFbSk7Ci1leHRlcm4gQk9PTCAoKndrR2V0R2x5cGhUcmFuc2Zvcm1lZEFk
dmFuY2VzKShOU0ZvbnQgKmZvbnQsIENHQWZmaW5lVHJhbnNmb3JtICptLCBBVFNHbHlwaFJlZiAq
Z2x5cGgsIENHU2l6ZSAqYWR2YW5jZSk7CitleHRlcm4gT1NTdGF0dXMgKCp3a0dldEFUU1N0eWxl
R3JvdXApKEFUU1VTdHlsZSwgdm9pZCoqIHN0eWxlR3JvdXApOworZXh0ZXJuIENHRm9udFJlZiAo
KndrR2V0Q0dGb250RnJvbU5TRm9udCkoTlNGb250Kik7CitleHRlcm4gQVRTR2x5cGhSZWYgKCp3
a0dldERlZmF1bHRHbHlwaEZvckNoYXIpKE5TRm9udCosIFVuaUNoYXIpOworZXh0ZXJuIE5TRm9u
dCogKCp3a0dldEZvbnRJbkxhbmd1YWdlRm9yUmFuZ2UpKE5TRm9udCosIE5TU3RyaW5nKiwgTlNS
YW5nZSk7CitleHRlcm4gTlNGb250KiAoKndrR2V0Rm9udEluTGFuZ3VhZ2VGb3JDaGFyYWN0ZXIp
KE5TRm9udCosIFVuaUNoYXIpOworZXh0ZXJuIHZvaWQgKCp3a0dldEZvbnRNZXRyaWNzKShOU0Zv
bnQqLCBpbnQqIGFzY2VudCwgaW50KiBkZXNjZW50LCBpbnQqIGxpbmVHYXAsIHVuc2lnbmVkKiB1
bml0c1BlckVtKTsKK2V4dGVybiBCT09MICgqd2tHZXRHbHlwaFRyYW5zZm9ybWVkQWR2YW5jZXMp
KE5TRm9udCosIENHQWZmaW5lVHJhbnNmb3JtKiwgQVRTR2x5cGhSZWYqLCBDR1NpemUqIGFkdmFu
Y2UpOwogZXh0ZXJuIEFUU0xheW91dFJlY29yZCogKCp3a0dldEdseXBoVmVjdG9yRmlyc3RSZWNv
cmQpKHZvaWQqIGdseXBoVmVjdG9yKTsKIGV4dGVybiBpbnQgKCp3a0dldEdseXBoVmVjdG9yTnVt
R2x5cGhzKSh2b2lkKiBnbHlwaFZlY3Rvcik7CiBleHRlcm4gc2l6ZV90ICgqd2tHZXRHbHlwaFZl
Y3RvclJlY29yZFNpemUpKHZvaWQqIGdseXBoVmVjdG9yKTsKLWV4dGVybiBBVFNVRm9udElEICgq
d2tHZXROU0ZvbnRBVFNVRm9udElkKShOU0ZvbnQgKmZvbnQpOworZXh0ZXJuIE5TU3RyaW5nKiAo
KndrR2V0TUlNRVR5cGVGb3JFeHRlbnNpb24pKE5TU3RyaW5nKik7CitleHRlcm4gQVRTVUZvbnRJ
RCAoKndrR2V0TlNGb250QVRTVUZvbnRJZCkoTlNGb250Kik7CiBleHRlcm4gT1NTdGF0dXMgKCp3
a0luaXRpYWxpemVHbHlwaFZlY3RvcikoaW50IGNvdW50LCB2b2lkKiBnbHlwaHMpOwotZXh0ZXJu
IHZvaWQgKCp3a1JlbGVhc2VTdHlsZUdyb3VwKSh2b2lkICpncm91cCk7Ci1leHRlcm4gdm9pZCAo
KndrU2V0Q0dGb250UmVuZGVyaW5nTW9kZSkoQ0dDb250ZXh0UmVmIGNnQ29udGV4dCwgTlNGb250
ICpmb250KTsKK2V4dGVybiB2b2lkICgqd2tSZWxlYXNlU3R5bGVHcm91cCkodm9pZCogZ3JvdXAp
OworZXh0ZXJuIHZvaWQgKCp3a1NldENHRm9udFJlbmRlcmluZ01vZGUpKENHQ29udGV4dFJlZiwg
TlNGb250Kik7CiBleHRlcm4gdm9pZCAoKndrU2V0RHJhZ0ltYWdlKShOU0ltYWdlKiwgTlNQb2lu
dCBvZmZzZXQpOwotZXh0ZXJuIHZvaWQgKCp3a1NldFVwRm9udENhY2hlKShzaXplX3Qgcyk7Citl
eHRlcm4gdm9pZCAoKndrU2V0UGF0dGVyblBoYXNlSW5Vc2VyU3BhY2UpKENHQ29udGV4dFJlZiwg
Q0dQb2ludCBwb2ludCk7CitleHRlcm4gdm9pZCAoKndrU2V0VXBGb250Q2FjaGUpKHNpemVfdCk7
CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2Vi
Q29yZUltYWdlUmVuZGVyZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL21hYy9X
ZWJDb3JlSW1hZ2VSZW5kZXJlci5oCShyZXZpc2lvbiAxNDQxNSkKKysrIFdlYkNvcmUvcGxhdGZv
cm0vbWFjL1dlYkNvcmVJbWFnZVJlbmRlcmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNTMgKzEg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDUgQXBwbGUgQ29tcHV0ZXIsIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbXBvcnQgPENvY29hL0NvY29hLmg+Ci0K
LXR5cGVkZWYgZW51bSB7Ci0gICAgV2ViSW1hZ2VTdHJldGNoLAotICAgIFdlYkltYWdlUm91bmQs
Ci0gICAgV2ViSW1hZ2VSZXBlYXQKLX0gV2ViSW1hZ2VUaWxlUnVsZTsKLQotQHByb3RvY29sIFdl
YkNvcmVJbWFnZVJlbmRlcmVyIDxOU09iamVjdCwgTlNDb3B5aW5nPgotCi0tIChCT09MKWluY3Jl
bWVudGFsTG9hZFdpdGhCeXRlczooY29uc3Qgdm9pZCAqKWJ5dGVzIGxlbmd0aDoodW5zaWduZWQp
bGVuZ3RoIGNvbXBsZXRlOihCT09MKWlzQ29tcGxldGUgY2FsbGJhY2s6KGlkKWM7Ci0KLS0gKE5T
U2l6ZSlzaXplOwotLSAodm9pZClkcmF3SW1hZ2VJblJlY3Q6KE5TUmVjdClpciBmcm9tUmVjdDoo
TlNSZWN0KWZyOwotLSAodm9pZClkcmF3SW1hZ2VJblJlY3Q6KE5TUmVjdClpciBmcm9tUmVjdDoo
TlNSZWN0KWZyIGNvbXBvc2l0ZU9wZXJhdG9yOihOU0NvbXBvc2l0aW5nT3BlcmF0aW9uKWNvbXBz
aXRlT3BlcmF0b3IgY29udGV4dDooQ0dDb250ZXh0UmVmKWNvbnRleHQ7Ci0tICh2b2lkKXN0b3BB
bmltYXRpb247Ci0tICh2b2lkKXRpbGVJblJlY3Q6KE5TUmVjdClyIGZyb21Qb2ludDooTlNQb2lu
dClwIGNvbnRleHQ6KENHQ29udGV4dFJlZiljb250ZXh0OwotLSAodm9pZClzY2FsZUFuZFRpbGVJ
blJlY3Q6KE5TUmVjdClpciBmcm9tUmVjdDooTlNSZWN0KWZyIHdpdGhIb3Jpem9udGFsVGlsZVJ1
bGU6KFdlYkltYWdlVGlsZVJ1bGUpaFJ1bGUgd2l0aFZlcnRpY2FsVGlsZVJ1bGU6KFdlYkltYWdl
VGlsZVJ1bGUpdlJ1bGUgY29udGV4dDooQ0dDb250ZXh0UmVmKWNvbnRleHQ7Ci0tIChCT09MKWlz
TnVsbDsKLS0gKGlkIDxXZWJDb3JlSW1hZ2VSZW5kZXJlcj4pcmV0YWluT3JDb3B5SWZOZWVkZWQ7
Ci0tICh2b2lkKXJlc2V0QW5pbWF0aW9uOwotLSAodm9pZClzZXRBbmltYXRpb25SZWN0OihOU1Jl
Y3QpcjsKLQotLSAoQ0dJbWFnZVJlZilpbWFnZVJlZjsKLS0gKE5TSW1hZ2UgKilpbWFnZTsKLS0g
KE5TRGF0YSAqKVRJRkZSZXByZXNlbnRhdGlvbjsKLQotQGVuZAorI2Vycm9yCkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL3dpbi9UZW1wb3JhcnlMaW5rU3R1YnMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGxhdGZvcm0vd2luL1RlbXBvcmFyeUxpbmtTdHVicy5jcHAJKHJldmlzaW9uIDE0NDE1
KQorKysgV2ViQ29yZS9wbGF0Zm9ybS93aW4vVGVtcG9yYXJ5TGlua1N0dWJzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzUxLDMgKzM1MSw1IEBACiB2b2lkIFdlYkNvcmU6OnNldEZvY3VzUmluZ0Nv
bG9yQ2hhbmdlRnVuY3Rpb24odm9pZCAoKikoKSkgeyB9CiAKIHZvaWQgRnJhbWU6OnNldE5lZWRz
UmVhcHBseVN0eWxlcygpIHsgfQorCit2b2lkIEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpY3NDb250
ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgVGlsZVJ1bGUsIFRpbGVS
dWxlKSB7IH0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vY2Fpcm8vSW1hZ2VDYWlyby5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9jYWlyby9JbWFnZUNhaXJvLmNwcAkocmV2aXNp
b24gMTQ0MTUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2NhaXJvL0ltYWdlQ2Fpcm8uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMDEsOTEgKzIwMSw0IEBACiAgICAgc3RhcnRBbmltYXRpb24oKTsKIH0K
IAotdm9pZCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxv
YXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIFRpbGVSdWxlIGhSdWxl
LCBUaWxlUnVsZSB2UnVsZSkKLXsKLSAgICAvKiBGSVhNRTogSU1QTEVNRU5UCi0gICAgaWYgKCFt
X2RhdGEpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBDR0ltYWdlUmVmIGltYWdlID0gZnJh
bWVBdEluZGV4KG1fY3VycmVudEZyYW1lKTsKLSAgICBpZiAoIWltYWdlKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IGdyYXBoaWNzQ29udGV4dChjdHh0KTsK
LSAgICAKLSAgICBpZiAobV9jdXJyZW50RnJhbWUgPT0gMCAmJiBtX2lzU29saWRDb2xvcikKLSAg
ICAgICAgcmV0dXJuIGZpbGxTb2xpZENvbG9ySW5SZWN0KG1fc29saWRDb2xvciwgZHN0UmVjdCwg
Q29tcG9zaXRlU291cmNlT3ZlciwgY29udGV4dCk7Ci0KLSAgICBDR0NvbnRleHRTYXZlR1N0YXRl
KGNvbnRleHQpOwotICAgIENHU2l6ZSB0aWxlU2l6ZSA9IHNyY1JlY3Quc2l6ZSgpOwotICAgIENH
UmVjdCBpciA9IGRzdFJlY3Q7Ci0gICAgQ0dSZWN0IGZyID0gc3JjUmVjdDsKLQotICAgIC8vIE5v
dyBzY2FsZSB0aGUgc2xpY2UgaW4gdGhlIGFwcHJvcHJpYXRlIGRpcmVjdGlvbiB1c2luZyBhbiBh
ZmZpbmUgdHJhbnNmb3JtIHRoYXQgd2Ugd2lsbCBwYXNzIGludG8KLSAgICAvLyB0aGUgcGF0dGVy
bi4KLSAgICBmbG9hdCBzY2FsZVggPSAxLjBmLCBzY2FsZVkgPSAxLjBmOwotCi0gICAgaWYgKGhS
dWxlID09IEltYWdlOjpTdHJldGNoVGlsZSkKLSAgICAgICAgc2NhbGVYID0gaXIuc2l6ZS53aWR0
aCAvIGZyLnNpemUud2lkdGg7Ci0gICAgaWYgKHZSdWxlID09IEltYWdlOjpTdHJldGNoVGlsZSkK
LSAgICAgICAgc2NhbGVZID0gaXIuc2l6ZS5oZWlnaHQgLyBmci5zaXplLmhlaWdodDsKLSAgICAK
LSAgICBpZiAoaFJ1bGUgPT0gSW1hZ2U6OlJlcGVhdFRpbGUpCi0gICAgICAgIHNjYWxlWCA9IHNj
YWxlWTsKLSAgICBpZiAodlJ1bGUgPT0gSW1hZ2U6OlJlcGVhdFRpbGUpCi0gICAgICAgIHNjYWxl
WSA9IHNjYWxlWDsKLSAgICAgICAgCi0gICAgaWYgKGhSdWxlID09IEltYWdlOjpSb3VuZFRpbGUp
IHsKLSAgICAgICAgLy8gQ29tcGxpY2F0ZWQgbWF0aCBlbnN1ZXMuCi0gICAgICAgIGZsb2F0IGlt
YWdlV2lkdGggPSBmci5zaXplLndpZHRoICogc2NhbGVZOwotICAgICAgICBmbG9hdCBuZXdXaWR0
aCA9IGlyLnNpemUud2lkdGggLyBjZWlsZihpci5zaXplLndpZHRoIC8gaW1hZ2VXaWR0aCk7Ci0g
ICAgICAgIHNjYWxlWCA9IG5ld1dpZHRoIC8gZnIuc2l6ZS53aWR0aDsKLSAgICB9Ci0gICAgCi0g
ICAgaWYgKHZSdWxlID09IEltYWdlOjpSb3VuZFRpbGUpIHsKLSAgICAgICAgLy8gTW9yZSBjb21w
bGljYXRlZCBtYXRoIGVuc3Vlcy4KLSAgICAgICAgZmxvYXQgaW1hZ2VIZWlnaHQgPSBmci5zaXpl
LmhlaWdodCAqIHNjYWxlWDsKLSAgICAgICAgZmxvYXQgbmV3SGVpZ2h0ID0gaXIuc2l6ZS5oZWln
aHQgLyBjZWlsZihpci5zaXplLmhlaWdodCAvIGltYWdlSGVpZ2h0KTsKLSAgICAgICAgc2NhbGVZ
ID0gbmV3SGVpZ2h0IC8gZnIuc2l6ZS5oZWlnaHQ7Ci0gICAgfQotICAgIAotICAgIENHQWZmaW5l
VHJhbnNmb3JtIHBhdHRlcm5UcmFuc2Zvcm0gPSBDR0FmZmluZVRyYW5zZm9ybU1ha2VTY2FsZShz
Y2FsZVgsIHNjYWxlWSk7Ci0KLSAgICAvLyBQb3NzaWJsZSBvcHRpbWl6YXRpb246ICBXZSBtYXkg
d2FudCB0byBjYWNoZSB0aGUgQ0dQYXR0ZXJuUmVmICAgIAotICAgIENHUGF0dGVyblJlZiBwYXR0
ZXJuID0gQ0dQYXR0ZXJuQ3JlYXRlKG1fZGF0YSwgQ0dSZWN0TWFrZShmci5vcmlnaW4ueCwgZnIu
b3JpZ2luLnksIHRpbGVTaXplLndpZHRoLCB0aWxlU2l6ZS5oZWlnaHQpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdHRlcm5UcmFuc2Zvcm0sIHRpbGVTaXpl
LndpZHRoLCB0aWxlU2l6ZS5oZWlnaHQsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGtDR1BhdHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcsIHRydWUsICZwYXR0
ZXJuQ2FsbGJhY2tzKTsKLSAgICBpZiAocGF0dGVybikgewotICAgICAgICAvLyBXZSB3YW50IHRv
IGNvbnN0cnVjdCB0aGUgcGhhc2Ugc3VjaCB0aGF0IHRoZSBwYXR0ZXJuIGlzIGNlbnRlcmVkICh3
aGVuIHN0cmV0Y2ggaXMgbm90Ci0gICAgICAgIC8vIHNldCBmb3IgYSBwYXJ0aWN1bGFyIHJ1bGUp
LgotICAgICAgICBmbG9hdCBoUGhhc2UgPSBzY2FsZVggKiBmci5vcmlnaW4ueDsKLSAgICAgICAg
ZmxvYXQgdlBoYXNlID0gc2NhbGVZICogKHRpbGVTaXplLmhlaWdodCAtIGZyLm9yaWdpbi55KTsK
LSAgICAgICAgaWYgKGhSdWxlID09IEltYWdlOjpSZXBlYXRUaWxlKQotICAgICAgICAgICAgaFBo
YXNlIC09IGZtb2RmKGlyLnNpemUud2lkdGgsIHNjYWxlWCAqIHRpbGVTaXplLndpZHRoKSAvIDIu
MGY7Ci0gICAgICAgIGlmICh2UnVsZSA9PSBJbWFnZTo6UmVwZWF0VGlsZSkKLSAgICAgICAgICAg
IHZQaGFzZSAtPSBmbW9kZihpci5zaXplLmhlaWdodCwgc2NhbGVZICogdGlsZVNpemUuaGVpZ2h0
KSAvIDIuMGY7Ci0gICAgICAgIAotICAgICAgICBDR1BvaW50IHRpbGVPcmlnaW4gPSBDR1BvaW50
TWFrZShpci5vcmlnaW4ueCAtIGhQaGFzZSwgaXIub3JpZ2luLnkgLSB2UGhhc2UpOwotICAgICAg
ICBbW1dlYkNvcmVJbWFnZVJlbmRlcmVyRmFjdG9yeSBzaGFyZWRGYWN0b3J5XSBzZXRQYXR0ZXJu
UGhhc2VGb3JDb250ZXh0OmNvbnRleHQgaW5Vc2VyU3BhY2U6dGlsZU9yaWdpbl07Ci0KLSAgICAg
ICAgQ0dDb2xvclNwYWNlUmVmIHBhdHRlcm5TcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZVBhdHRl
cm4oTlVMTCk7Ci0gICAgICAgIENHQ29udGV4dFNldEZpbGxDb2xvclNwYWNlKGNvbnRleHQsIHBh
dHRlcm5TcGFjZSk7Ci0gICAgICAgIENHQ29sb3JTcGFjZVJlbGVhc2UocGF0dGVyblNwYWNlKTsK
LQotICAgICAgICBmbG9hdCBwYXR0ZXJuQWxwaGEgPSAxOwotICAgICAgICBDR0NvbnRleHRTZXRG
aWxsUGF0dGVybihjb250ZXh0LCBwYXR0ZXJuLCAmcGF0dGVybkFscGhhKTsKLQotICAgICAgICBz
ZXRDb21wb3NpdGluZ09wZXJhdGlvbihjb250ZXh0LCBDb21wb3NpdGVTb3VyY2VPdmVyKTsKLSAg
ICAgICAgCi0gICAgICAgIENHQ29udGV4dEZpbGxSZWN0KGNvbnRleHQsIGlyKTsKLQotICAgICAg
ICBDR1BhdHRlcm5SZWxlYXNlIChwYXR0ZXJuKTsKLSAgICB9Ci0KLSAgICBDR0NvbnRleHRSZXN0
b3JlR1N0YXRlKGNvbnRleHQpOwotCi0gICAgc3RhcnRBbmltYXRpb24oKTsKLSAgICAqLwogfQot
Ci19CkluZGV4OiBXZWJDb3JlL1dlYkNvcmUuZXhwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2Vi
Q29yZS5leHAJKHJldmlzaW9uIDE0NDE1KQorKysgV2ViQ29yZS9XZWJDb3JlLmV4cAkod29ya2lu
ZyBjb3B5KQpAQCAtMTEzLDE4ICsxMTMsMTggQEAKIC5vYmpjX2NsYXNzX25hbWVfV2ViQ29yZUtl
eUdlbmVyYXRvcgogLm9iamNfY2xhc3NfbmFtZV9XZWJDb3JlUGFnZUJyaWRnZQogLm9iamNfY2xh
c3NfbmFtZV9XZWJDb3JlU2NyaXB0RGVidWdnZXIKKy5vYmpjX2NsYXNzX25hbWVfV2ViQ29yZVNl
dHRpbmdzCiAub2JqY19jbGFzc19uYW1lX1dlYkNvcmVTdHJpbmdUcnVuY2F0b3IKLS5vYmpjX2Ns
YXNzX25hbWVfV2ViQ29yZVNldHRpbmdzCiAub2JqY19jbGFzc19uYW1lX1dlYkNvcmVUZXh0RGVj
b2RlcgogLm9iamNfY2xhc3NfbmFtZV9XZWJDb3JlVmlld0ZhY3RvcnkKIC5vYmpjX2NsYXNzX25h
bWVfV2ViRGFzaGJvYXJkUmVnaW9uCitfV2ViQ29yZURyYXdUZXh0QXRQb2ludAorX1dlYkNvcmVG
aW5kRm9udAogX1dlYkNvcmVQYWdlQ2FjaGVTdGF0ZUtleQotX1dlYkNvcmVEcmF3VGV4dEF0UG9p
bnQKLV9XZWJDb3JlVGV4dEZsb2F0V2lkdGgKK19XZWJDb3JlU2V0QWx3YXlzVXNlQVRTVQogX1dl
YkNvcmVTZXRTaG91bGRVc2VGb250U21vb3RoaW5nCiBfV2ViQ29yZVNob3VsZFVzZUZvbnRTbW9v
dGhpbmcKLV9XZWJDb3JlU2V0QWx3YXlzVXNlQVRTVQotX1dlYkNvcmVGaW5kRm9udAorX1dlYkNv
cmVUZXh0RmxvYXRXaWR0aAogX3drQ0dDb250ZXh0R2V0U2hvdWxkU21vb3RoRm9udHMKIF93a0Ns
ZWFyR2x5cGhWZWN0b3IKIF93a0NvbnZlcnRDaGFyVG9HbHlwaHMKQEAgLTEzNCwxNyArMTM0LDE4
IEBACiBfd2tHZXRBVFNTdHlsZUdyb3VwCiBfd2tHZXRDR0ZvbnRGcm9tTlNGb250CiBfd2tHZXRE
ZWZhdWx0R2x5cGhGb3JDaGFyCitfd2tHZXRGb250SW5MYW5ndWFnZUZvckNoYXJhY3RlcgogX3dr
R2V0Rm9udEluTGFuZ3VhZ2VGb3JSYW5nZQotX3drR2V0Rm9udEluTGFuZ3VhZ2VGb3JDaGFyYWN0
ZXIKIF93a0dldEZvbnRNZXRyaWNzCiBfd2tHZXRHbHlwaFRyYW5zZm9ybWVkQWR2YW5jZXMKIF93
a0dldEdseXBoVmVjdG9yRmlyc3RSZWNvcmQKIF93a0dldEdseXBoVmVjdG9yTnVtR2x5cGhzCiBf
d2tHZXRHbHlwaFZlY3RvclJlY29yZFNpemUKK193a0dldE1JTUVUeXBlRm9yRXh0ZW5zaW9uCiBf
d2tHZXROU0ZvbnRBVFNVRm9udElkCiBfd2tJbml0aWFsaXplR2x5cGhWZWN0b3IKIF93a1JlbGVh
c2VTdHlsZUdyb3VwCiBfd2tTZXRDR0ZvbnRSZW5kZXJpbmdNb2RlCiBfd2tTZXREcmFnSW1hZ2UK
K193a1NldFBhdHRlcm5QaGFzZUluVXNlclNwYWNlCiBfd2tTZXRVcEZvbnRDYWNoZQotCkluZGV4
OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTQ0
MTUpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtNDU5LDcgKzQ1OSw2IEBACiAJCTkzRjE5OUE3MDgyNDVFNTkwMDFFOUFCQyAv
KiBXZWJDb3JlRW5jb2RpbmdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGNTYyMzRERjAzMDI2RDczMDE2MjlCNDcgLyogV2ViQ29yZUVuY29kaW5ncy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzRjE5
OUE4MDgyNDVFNTkwMDFFOUFCQyAvKiBXZWJDb3JlRnJhbWVWaWV3LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTg3ODU0QzAyREUzNzU5MDFFQTQxMjIg
LyogV2ViQ29yZUZyYW1lVmlldy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTkzRjE5OUE5MDgyNDVFNTkwMDFFOUFCQyAvKiBXZWJDb3JlSGlzdG9y
eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjU1MTdE
QzIwMzFBQjU2MzAxQTgwMTgwIC8qIFdlYkNvcmVIaXN0b3J5LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJOTNGMTk5QUEwODI0NUU1OTAwMUU5QUJD
IC8qIFdlYkNvcmVJbWFnZVJlbmRlcmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGNTg3ODU0RDAyREUzNzU5MDFFQTQxMjIgLyogV2ViQ29yZUltYWdl
UmVuZGVyZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk5M0YxOTlBQjA4MjQ1RTU5MDAxRTlBQkMgLyogV2ViQ29yZUltYWdlUmVuZGVyZXJGYWN0
b3J5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTg3
ODU0RTAyREUzNzU5MDFFQTQxMjIgLyogV2ViQ29yZUltYWdlUmVuZGVyZXJGYWN0b3J5LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNGMTk5QUMw
ODI0NUU1OTAwMUU5QUJDIC8qIFdlYkNvcmVKYXZhU2NyaXB0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNUIyQTUyQjAyRTIyNTczMDE4NjM1Q0IgLyog
V2ViQ29yZUphdmFTY3JpcHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk5M0YxOTlBRDA4MjQ1RTU5MDAxRTlBQkMgLyogV2ViQ29yZVJlc291cmNl
TG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
NTg3ODU1MDAyREUzNzU5MDFFQTQxMjIgLyogV2ViQ29yZVJlc291cmNlTG9hZGVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTMwMzcsNyArMzAz
Niw2IEBACiAJCUY1ODc4NTNCMDJERTM3NTkwMUVBNDEyMiAvKiBEZXByZWNhdGVkVmFsdWVMaXN0
SW1wbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBp
bmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBEZXByZWNhdGVkVmFsdWVMaXN0SW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJX
aWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJRjU4Nzg1M0MwMkRFMzc1OTAxRUE0MTIyIC8q
IERlcHJlY2F0ZWRWYWx1ZUxpc3RJbXBsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlcHJlY2F0ZWRWYWx1ZUxpc3RJbXBsLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJ
CUY1ODc4NTRDMDJERTM3NTkwMUVBNDEyMiAvKiBXZWJDb3JlRnJhbWVWaWV3LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvcmVGcmFtZVZp
ZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7
IH07Ci0JCUY1ODc4NTREMDJERTM3NTkwMUVBNDEyMiAvKiBXZWJDb3JlSW1hZ2VSZW5kZXJlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRX
aWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJD
b3JlSW1hZ2VSZW5kZXJlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7
IHVzZXNUYWJzID0gMDsgfTsKIAkJRjU4Nzg1NEUwMkRFMzc1OTAxRUE0MTIyIC8qIFdlYkNvcmVJ
bWFnZVJlbmRlcmVyRmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJDb3JlSW1hZ2VSZW5kZXJlckZhY3RvcnkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCUY1ODc4NTRG
MDJERTM3NTkwMUVBNDEyMiAvKiBXZWJDb3JlSW1hZ2VSZW5kZXJlckZhY3RvcnkubSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5vYmpjOyBwYXRoID0gV2ViQ29yZUlt
YWdlUmVuZGVyZXJGYWN0b3J5Lm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0g
ODsgdXNlc1RhYnMgPSAwOyB9OwogCQlGNTg3ODU1MDAyREUzNzU5MDFFQTQxMjIgLyogV2ViQ29y
ZVJlc291cmNlTG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYkNvcmVSZXNvdXJjZUxvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKQEAgLTM0MDYsNyArMzQwNCw2IEBA
CiAJCQkJNjU0NUY2NzUwOUI4MzAxODAwMTMwMDZGIC8qIFRyYW5zZmVySm9iTWFjLm1tICovLAog
CQkJCUY1NTE3REMyMDMxQUI1NjMwMUE4MDE4MCAvKiBXZWJDb3JlSGlzdG9yeS5oICovLAogCQkJ
CUY1NTE3REMzMDMxQUI1NjMwMUE4MDE4MCAvKiBXZWJDb3JlSGlzdG9yeS5tICovLAotCQkJCUY1
ODc4NTREMDJERTM3NTkwMUVBNDEyMiAvKiBXZWJDb3JlSW1hZ2VSZW5kZXJlci5oICovLAogCQkJ
CUY1ODc4NTRFMDJERTM3NTkwMUVBNDEyMiAvKiBXZWJDb3JlSW1hZ2VSZW5kZXJlckZhY3Rvcnku
aCAqLywKIAkJCQlGNTg3ODU0RjAyREUzNzU5MDFFQTQxMjIgLyogV2ViQ29yZUltYWdlUmVuZGVy
ZXJGYWN0b3J5Lm0gKi8sCiAJCQkJODRCMkIxRjcwNTZCRUYzQTAwRDJCNzcxIC8qIFdlYkNvcmVL
ZXlHZW5lcmF0b3IuaCAqLywKQEAgLTUwNzcsNyArNTA3NCw2IEBACiAJCQkJOTNGMTk5QTcwODI0
NUU1OTAwMUU5QUJDIC8qIFdlYkNvcmVFbmNvZGluZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTkz
RjE5OUE4MDgyNDVFNTkwMDFFOUFCQyAvKiBXZWJDb3JlRnJhbWVWaWV3LmggaW4gSGVhZGVycyAq
LywKIAkJCQk5M0YxOTlBOTA4MjQ1RTU5MDAxRTlBQkMgLyogV2ViQ29yZUhpc3RvcnkuaCBpbiBI
ZWFkZXJzICovLAotCQkJCTkzRjE5OUFBMDgyNDVFNTkwMDFFOUFCQyAvKiBXZWJDb3JlSW1hZ2VS
ZW5kZXJlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGMTk5QUIwODI0NUU1OTAwMUU5QUJDIC8q
IFdlYkNvcmVJbWFnZVJlbmRlcmVyRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGMTk5
QUMwODI0NUU1OTAwMUU5QUJDIC8qIFdlYkNvcmVKYXZhU2NyaXB0LmggaW4gSGVhZGVycyAqLywK
IAkJCQk5M0YxOTlBRDA4MjQ1RTU5MDAxRTlBQkMgLyogV2ViQ29yZVJlc291cmNlTG9hZGVyLmgg
aW4gSGVhZGVycyAqLywKSW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNDQxNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNDggQEAKIDIwMDYtMDUtMTYgIERhcmluIEFkbGVyICA8
ZGFyaW5AYXBwbGUuY29tPgogCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIC0gaHR0cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9p
ZD04OTQwCisgICAgICAgICAgcmVtb3ZlIGV4dHJhIGNvcHkgb2YgaW1hZ2UgY29kZQorCisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBSZW1vdmVkIFdlYkNvcmVJ
bWFnZVJlbmRlcmVyLmguCisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYkNvcmVJbWFnZVJlbmRl
cmVyLmg6IFJlbW92ZWQuCisKKyAgICAgICAgKiBicmlkZ2UvbWFjL1dlYkNvcmVGcmFtZUJyaWRn
ZS5oOiBBZGRlZCBzdXBwb3J0ZWRJbWFnZVJlc291cmNlTUlNRVR5cGVzLgorICAgICAgICBMaWtl
IHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzLCBidXQgaW5jbHVkZXMgUERGIGFuZCBQb3N0U2NyaXB0
LgorICAgICAgICAqIGJyaWRnZS9tYWMvV2ViQ29yZUZyYW1lQnJpZGdlLm1tOgorICAgICAgICAo
K1tXZWJDb3JlRnJhbWVCcmlkZ2Ugc3VwcG9ydGVkSW1hZ2VSZXNvdXJjZU1JTUVUeXBlc10pOiBB
ZGRlZC4KKyAgICAgICAgSGFzIGNvZGUgdGhhdCBjYW1lIGZyb20gLVtXZWJJbWFnZVJlbmRlcmVy
RmFjdG9yeSBzdXBwb3J0ZWRNSU1FVHlwZXNdLgorICAgICAgICAoK1tXZWJDb3JlRnJhbWVCcmlk
Z2Ugc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNdKToKKworICAgICAgICAqIHBsYXRmb3JtL21hYy9J
bWFnZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpzdXBwb3J0c1R5cGUpOiBJbnN0
ZWFkIG9mIGNhbGxpbmcgdGhlIG9sZAorICAgICAgICAtW1dlYkNvcmVJbWFnZVJlbmRlcmVyRmFj
dG9yeSBzdXBwb3J0ZWRNSU1FVHlwZXNdLCBjYWxsIHRoZSBuZXcKKyAgICAgICAgK1tXZWJDb3Jl
RnJhbWVCcmlkZ2Ugc3VwcG9ydGVkSW1hZ2VSZXNvdXJjZU1JTUVUeXBlc10uCisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZTo6ZHJhd1RpbGVkKTogVXNlIHdrU2V0UGF0dGVyblBoYXNlSW5Vc2VyU3Bh
Y2UgaW5zdGVhZCBvZgorICAgICAgICB0aGUgV2ViQ29yZUltYWdlUmVuZGVyZXJGYWN0b3J5Lgor
CisgICAgICAgICogcGxhdGZvcm0vbWFjL0NsaXBib2FyZE1hYy5tbTogUmVtb3ZlZCBhbiB1bm5l
ZWRlZCBpbmNsdWRlIG9mCisgICAgICAgIFdlYkNvcmVJbWFnZVJlbmRlcmVyLmguCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZUltYWdlUmVuZGVyZXJGYWN0b3J5Lmg6IFJlbW92ZWQg
ZXZlcnl0aGluZyBleGNlcHQKKyAgICAgICAgZm9yIHRoZSBvbmUgcmVtYWluaW5nIG1ldGhvZCwg
aW1hZ2VEYXRhRm9yTmFtZTosIHdoaWNoIGdldHMgcmVzb3VyY2VzCisgICAgICAgIGZyb20gdGhl
IFdlYktpdCBsb2NhbGl6ZWQgcmVzb3VyY2VzLiBXZSBzaG91bGQgZmlndXJlIG91dCBob3cgdG8g
cmVtb3ZlCisgICAgICAgIHRoYXQgb25lIHRvbyBsYXRlci4KKyAgICAgICAgKiBwbGF0Zm9ybS9t
YWMvV2ViQ29yZUltYWdlUmVuZGVyZXJGYWN0b3J5Lm06IERpdHRvLgorCisgICAgICAgICogcGxh
dGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaDogQWRkZWQgc29tZSBuZXcgY2FsbHMu
CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW06IERpdHRv
LgorICAgICAgICAqIFdlYkNvcmUuZXhwOiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL2Nh
aXJvL0ltYWdlQ2Fpcm8uY3BwOiBNb3ZlZCBhIHN0dWIgdG8gdGhlIHN0dWJzIGZpbGUuIElmIGl0
J3MKKyAgICAgICAgaGVyZSBpdCBoYXMgdG8gaGF2ZSBhIEZJWE1FIGNvbW1lbnQgYW5kIGFsc28g
aXQgY29udGFpbnMgYSBiaWcgY29tbWVudGVkLW91dAorICAgICAgICBwaWxlIG9mIGNvZGUuIEJl
dHRlciB0byBoYXZlIGl0IGluIHRoZSBzdHVicyBmaWxlIHdpdGggYWxsIHRoZSBvdGhlciBzdHVi
cy4KKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vVGVtcG9yYXJ5TGlua1N0dWJzLmNwcDogKEltYWdl
OjpkcmF3VGlsZWQpOiBQdXQgc3R1YiBoZXJlCisgICAgICAgIGluc3RlYWQgb2YgaGF2aW5nIGl0
IGluIEltYWdlQ2Fpcm8uY3BwLgorCisyMDA2LTA1LTE2ICBEYXJpbiBBZGxlciAgPGRhcmluQGFw
cGxlLmNvbT4KKwogICAgICAgICBSZXZpZXdlZCBieSBIeWF0dC4KIAogICAgICAgICAtIGZpeCBo
dHRwOi8vYnVnemlsbGEub3BlbmRhcndpbi5vcmcvc2hvd19idWcuY2dpP2lkPTg4OTgKSW5kZXg6
IFdlYkNvcmUvYnJpZGdlL21hYy9XZWJDb3JlRnJhbWVCcmlkZ2UubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9icmlkZ2UvbWFjL1dlYkNvcmVGcmFtZUJyaWRnZS5tbQkocmV2aXNpb24gMTQ0MTYp
CisrKyBXZWJDb3JlL2JyaWRnZS9tYWMvV2ViQ29yZUZyYW1lQnJpZGdlLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0yNyw1MCArMjcsNTEgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV2Vi
Q29yZUZyYW1lQnJpZGdlLmgiCiAKKyNpbXBvcnQgIkFjY2Vzc2liaWxpdHlPYmplY3RDYWNoZS5o
IgogI2ltcG9ydCAiQ2FjaGUuaCIKKyNpbXBvcnQgIkNoYXJzZXROYW1lcy5oIgorI2ltcG9ydCAi
RE9NSW1wbGVtZW50YXRpb24uaCIKICNpbXBvcnQgIkRPTUludGVybmFsLmgiCi0jaW1wb3J0ICJE
T01JbXBsZW1lbnRhdGlvbi5oIgorI2ltcG9ydCAiRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5oIgog
I2ltcG9ydCAiRG9jTG9hZGVyLmgiCiAjaW1wb3J0ICJEb2N1bWVudEZyYWdtZW50LmgiCiAjaW1w
b3J0ICJEb2N1bWVudFR5cGUuaCIKKyNpbXBvcnQgIkZsb2F0UmVjdC5oIgorI2ltcG9ydCAiRm91
bmRhdGlvbkV4dHJhcy5oIgorI2ltcG9ydCAiRnJhbWVNYWMuaCIKICNpbXBvcnQgIkZyYW1lVHJl
ZS5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW1wb3J0ICJIVE1MRG9jdW1lbnQu
aCIKICNpbXBvcnQgIkhUTUxGb3JtRWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTElucHV0RWxlbWVu
dC5oIgotI2ltcG9ydCAiQWNjZXNzaWJpbGl0eU9iamVjdENhY2hlLmgiCi0jaW1wb3J0ICJDaGFy
c2V0TmFtZXMuaCIKKyNpbXBvcnQgIkhUTUxOYW1lcy5oIgorI2ltcG9ydCAiSW1hZ2UuaCIKICNp
bXBvcnQgIktXUUVkaXRDb21tYW5kLmgiCi0jaW1wb3J0ICJGbG9hdFJlY3QuaCIKLSNpbXBvcnQg
IkZvdW5kYXRpb25FeHRyYXMuaCIKICNpbXBvcnQgIktXUUxvYWRlci5oIgogI2ltcG9ydCAiS1dR
UGFnZVN0YXRlLmgiCisjaW1wb3J0ICJNb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWxDb21tYW5kLmgi
CisjaW1wb3J0ICJNb3ZlU2VsZWN0aW9uQ29tbWFuZC5oIgorI2ltcG9ydCAiUGFnZS5oIgorI2lt
cG9ydCAiUmVuZGVyQ2FudmFzLmgiCisjaW1wb3J0ICJSZW5kZXJJbWFnZS5oIgorI2ltcG9ydCAi
UmVuZGVyUGFydC5oIgogI2ltcG9ydCAiUmVuZGVyVHJlZUFzVGV4dC5oIgotI2ltcG9ydCAiRnJh
bWVNYWMuaCIKLSNpbXBvcnQgIlBhZ2UuaCIKKyNpbXBvcnQgIlJlbmRlcldpZGdldC5oIgorI2lt
cG9ydCAiUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuaCIKICNpbXBvcnQgIlNlbGVjdGlvbkNvbnRy
b2xsZXIuaCIKKyNpbXBvcnQgIlRleHRJdGVyYXRvci5oIgorI2ltcG9ydCAiVHlwaW5nQ29tbWFu
ZC5oIgogI2ltcG9ydCAiV2ViQ29yZUltYWdlUmVuZGVyZXJGYWN0b3J5LmgiCiAjaW1wb3J0ICJX
ZWJDb3JlUGFnZUJyaWRnZS5oIgogI2ltcG9ydCAiV2ViQ29yZVNldHRpbmdzLmgiCisjaW1wb3J0
ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCiAjaW1wb3J0ICJXZWJDb3JlVmlld0ZhY3Rvcnku
aCIKICNpbXBvcnQgIldlYkNvcmVXaWRnZXRIb2xkZXIuaCIKICNpbXBvcnQgImNzc2hlbHBlci5o
IgotI2ltcG9ydCAiRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5oIgotI2ltcG9ydCAiSFRNTERvY3Vt
ZW50LmgiCiAjaW1wb3J0ICJodG1sZWRpdGluZy5oIgotI2ltcG9ydCAiSFRNTE5hbWVzLmgiCi0j
aW1wb3J0ICJJbWFnZS5oIgogI2ltcG9ydCAia2pzX3Byb3h5LmgiCiAjaW1wb3J0ICJranNfd2lu
ZG93LmgiCiAjaW1wb3J0ICJtYXJrdXAuaCIKLSNpbXBvcnQgIk1vZGlmeVNlbGVjdGlvbkxpc3RM
ZXZlbENvbW1hbmQuaCIKLSNpbXBvcnQgIk1vdmVTZWxlY3Rpb25Db21tYW5kLmgiCi0jaW1wb3J0
ICJSZW5kZXJDYW52YXMuaCIKLSNpbXBvcnQgIlJlbmRlckltYWdlLmgiCi0jaW1wb3J0ICJSZW5k
ZXJQYXJ0LmgiCi0jaW1wb3J0ICJSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5oIgotI2ltcG9ydCAi
UmVuZGVyV2lkZ2V0LmgiCi0jaW1wb3J0ICJUeXBpbmdDb21tYW5kLmgiCi0jaW1wb3J0ICJUZXh0
SXRlcmF0b3IuaCIKICNpbXBvcnQgInZpc2libGVfdW5pdHMuaCIKICNpbXBvcnQgInhtbF90b2tl
bml6ZXIuaCIKICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL2RhdGVfb2JqZWN0Lmg+CkBAIC0zODIs
MTUgKzM4Myw1MyBAQAogICAgICAgICBuaWxdOwogfQogCisrIChOU0FycmF5ICopc3VwcG9ydGVk
SW1hZ2VSZXNvdXJjZU1JTUVUeXBlcworeworICAgIHN0YXRpYyBOU0FycmF5KiBzdXBwb3J0ZWRU
eXBlcyA9IG5pbDsKKyAgICBpZiAoIXN1cHBvcnRlZFR5cGVzKSB7CisgICAgICAgIE5TTXV0YWJs
ZVNldCogc2V0ID0gW1tOU011dGFibGVTZXQgYWxsb2NdIGluaXRdOworCisgICAgICAgIC8vIEZJ
WE1FOiBEb2Vzbid0IG1ha2Ugc2Vuc2UgdG8gYXNrIE5TSW1hZ2UgZm9yIGEgbGlzdCBvZiBmaWxl
IHR5cGVzIGFuZCBleHRlbnNpb25zCisgICAgICAgIC8vIGJlY2F1c2Ugd2UgYXJlbid0IHVzaW5n
IE5TSW1hZ2UgdG8gZGVjb2RlIHRoZSBpbWFnZXMgYW55IG1vcmUuCisgICAgICAgIE5TRW51bWVy
YXRvciogZW51bWVyYXRvciA9IFtbTlNJbWFnZSBpbWFnZUZpbGVUeXBlc10gb2JqZWN0RW51bWVy
YXRvcl07CisgICAgICAgIHdoaWxlIChOU1N0cmluZyogdHlwZSA9IFtlbnVtZXJhdG9yIG5leHRP
YmplY3RdKSB7CisgICAgICAgICAgICBOU1N0cmluZyogbWltZSA9IHdrR2V0TUlNRVR5cGVGb3JF
eHRlbnNpb24odHlwZSk7CisgICAgICAgICAgICBpZiAobWltZSkKKyAgICAgICAgICAgICAgICBb
c2V0IGFkZE9iamVjdDptaW1lXTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIGltYWdlL3BqcGVn
IGlzIHRoZSBNSU1FIHR5cGUgZm9yIHByb2dyZXNzaXZlIGpwZWcuIFRoZXNlIGZpbGVzIGhhdmUg
dGhlIGpwZyBmaWxlIGV4dGVuc2lvbi4KKyAgICAgICAgLy8gSSBiZWxpZXZlIHdlIG5lZWQgdGhp
cyB0aGlzIHRvIHdvcmsgYXJvdW5kIHdrR2V0TUlNRVR5cGVGb3JFeHRlbnNpb24ncyBsaW1pdGF0
aW9uIG9mIG9ubHkKKyAgICAgICAgLy8gcHJvdmlkaW5nIG9uZSBNSU1FIHR5cGUgZm9yIGVhY2gg
ZXh0ZW5zaW9uLgorICAgICAgICBbc2V0IGFkZE9iamVjdDpAImltYWdlL3BqcGVnIl07CisKKyAg
ICAgICAgW3NldCByZW1vdmVPYmplY3Q6QCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iXTsKKwor
ICAgICAgICBzdXBwb3J0ZWRUeXBlcyA9IFtzZXQgYWxsT2JqZWN0c107CisgICAgICAgIENGUmV0
YWluKHN1cHBvcnRlZFR5cGVzKTsKKworICAgICAgICBbc2V0IHJlbGVhc2VdOworICAgIH0KKwor
ICAgIHJldHVybiBzdXBwb3J0ZWRUeXBlczsKK30KKwogKyAoTlNBcnJheSAqKXN1cHBvcnRlZElt
YWdlTUlNRVR5cGVzCiB7Ci0gICAgc3RhdGljIE5TTXV0YWJsZUFycmF5ICptaW1lVHlwZXMgPSBu
aWw7Ci0gICAgaWYgKG1pbWVUeXBlcyA9PSBuaWwpIHsKLSAgICAgICAgbWltZVR5cGVzID0gW1tb
V2ViQ29yZUltYWdlUmVuZGVyZXJGYWN0b3J5IHNoYXJlZEZhY3RvcnldIHN1cHBvcnRlZE1JTUVU
eXBlc10gbXV0YWJsZUNvcHldOwotICAgICAgICBbbWltZVR5cGVzIHJlbW92ZU9iamVjdDpAImFw
cGxpY2F0aW9uL3BkZiJdOwotICAgICAgICBbbWltZVR5cGVzIHJlbW92ZU9iamVjdDpAImFwcGxp
Y2F0aW9uL3Bvc3RzY3JpcHQiXTsKKyAgICBzdGF0aWMgTlNBcnJheSogc3VwcG9ydGVkVHlwZXMg
PSBuaWw7CisgICAgaWYgKCFzdXBwb3J0ZWRUeXBlcykgeworICAgICAgICBOU011dGFibGVBcnJh
eSogdHlwZXMgPSBbW3NlbGYgc3VwcG9ydGVkSW1hZ2VSZXNvdXJjZU1JTUVUeXBlc10gbXV0YWJs
ZUNvcHldOworICAgICAgICBbdHlwZXMgcmVtb3ZlT2JqZWN0OkAiYXBwbGljYXRpb24vcGRmIl07
CisgICAgICAgIFt0eXBlcyByZW1vdmVPYmplY3Q6QCJhcHBsaWNhdGlvbi9wb3N0c2NyaXB0Il07
CisgICAgICAgIE5TQXJyYXkqIGNvcHkgPSBbdHlwZXMgY29weV07CisgICAgICAgIFt0eXBlcyBy
ZWxlYXNlXTsKKworICAgICAgICBzdXBwb3J0ZWRUeXBlcyA9IGNvcHk7CisgICAgICAgIENGUmV0
YWluKHN1cHBvcnRlZFR5cGVzKTsKKworICAgICAgICBbY29weSByZWxlYXNlXTsKICAgICB9Ci0g
ICAgcmV0dXJuIG1pbWVUeXBlczsKKyAgICByZXR1cm4gc3VwcG9ydGVkVHlwZXM7CiB9CiAKICsg
KFdlYkNvcmVGcmFtZUJyaWRnZSAqKWJyaWRnZUZvckRPTURvY3VtZW50OihET01Eb2N1bWVudCAq
KWRvY3VtZW50CkluZGV4OiBXZWJDb3JlL2JyaWRnZS9tYWMvV2ViQ29yZUZyYW1lQnJpZGdlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9icmlkZ2UvbWFjL1dlYkNvcmVGcmFtZUJyaWRnZS5oCShy
ZXZpc2lvbiAxNDQxNSkKKysrIFdlYkNvcmUvYnJpZGdlL21hYy9XZWJDb3JlRnJhbWVCcmlkZ2Uu
aAkod29ya2luZyBjb3B5KQpAQCAtMTg4LDYgKzE4OCw3IEBACiAKICsgKE5TQXJyYXkgKilzdXBw
b3J0ZWROb25JbWFnZU1JTUVUeXBlczsKICsgKE5TQXJyYXkgKilzdXBwb3J0ZWRJbWFnZU1JTUVU
eXBlczsKKysgKE5TQXJyYXkgKilzdXBwb3J0ZWRJbWFnZVJlc291cmNlTUlNRVR5cGVzOyAvLyBp
bmNsdWRlcyB0eXBlcyBsaWtlIFBERgogCiAtICh2b2lkKWluaXRpYWxpemVTZXR0aW5nczooV2Vi
Q29yZVNldHRpbmdzICopc2V0dGluZ3M7CiAKSW5kZXg6IFdlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE0NDE1KQorKysgV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC05MSw3ICs5MSw2IEBACiAJCTkz
OTgxMDM5MDgyNEJGMDEwMDhERjAzOCAvKiBXZWJQbHVnaW5QYWNrYWdlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0U0QUY0QjAzNjY1OTQ0MDAwMEU1
MDYgLyogV2ViUGx1Z2luUGFja2FnZS5oICovOyB9OwogCQk5Mzk4MTAzQTA4MjRCRjAxMDA4REYw
MzggLyogV2ViUGx1Z2luVmlld0ZhY3RvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg0OERGRjg2MDM2NUZFNkEwMENBMkFDQSAvKiBXZWJQbHVnaW5W
aWV3RmFjdG9yeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsg
fTsKIAkJOTM5ODEwM0MwODI0QkYwMTAwOERGMDM4IC8qIFdlYkZyYW1lQnJpZGdlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNUFGQjQ1RTAyQjk0REM4
MDE4NjM1Q0EgLyogV2ViRnJhbWVCcmlkZ2UuaCAqLzsgfTsKLQkJOTM5ODEwNDAwODI0QkYwMTAw
OERGMDM4IC8qIFdlYkltYWdlUmVuZGVyZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDlDRTFGOEEwMDJBNUM2RjMwRUNBMkFDRCAvKiBXZWJJbWFnZVJl
bmRlcmVyLmggKi87IH07CiAJCTkzOTgxMDQxMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJJbWFnZVJl
bmRlcmVyRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOUNFMUY4QTIwMkE1QzZGMzBFQ0EyQUNEIC8qIFdlYkltYWdlUmVuZGVyZXJGYWN0b3J5
LmggKi87IH07CiAJCTkzOTgxMDQyMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJKYXZhU2NyaXB0VGV4
dElucHV0UGFuZWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDkzNDVENEVBMDM2NUM1QjIwMDg2MzVDRSAvKiBXZWJKYXZhU2NyaXB0VGV4dElucHV0UGFu
ZWwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5
Mzk4MTA0MzA4MjRCRjAxMDA4REYwMzggLyogV2ViU3VicmVzb3VyY2VMb2FkZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1RTBFMTA4MDJCQzQ1Rjgw
MTg2MzVDQSAvKiBXZWJTdWJyZXNvdXJjZUxvYWRlci5oICovOyB9OwpAQCAtMTY4LDEyICsxNjcs
OSBAQAogCQk5Mzk4MTBBNTA4MjRCRjAxMDA4REYwMzggLyogV2ViUERGUmVwcmVzZW50YXRpb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTk0QzY4
MDZDMDM0NzUwMEE5QjA5RSAvKiBXZWJQREZSZXByZXNlbnRhdGlvbi5oICovOyB9OwogCQk5Mzk4
MTBBNzA4MjRCRjAxMDA4REYwMzggLyogV2ViRm9ybURhdGFTdHJlYW0uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjY0MUZBMDZFMjkyQkMwMDU1RjYx
MCAvKiBXZWJGb3JtRGF0YVN0cmVhbS5oICovOyB9OwogCQk5Mzk4MTBBODA4MjRCRjAxMDA4REYw
MzggLyogV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFREU4NTBDRDA2RUNDNzlFMDA1RkFCMDUgLyogV2ViUHJl
ZmVyZW5jZUtleXNQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKLQkJOTM5ODEwQTkwODI0QkYwMTAwOERGMDM4IC8qIFdlYkltYWdlRGF0YS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFDNjUxMzYw
NkVGQ0Q5MzAwOTY5ODI1IC8qIFdlYkltYWdlRGF0YS5oICovOyB9OwogCQk5Mzk4MTBBQTA4MjRC
RjAxMDA4REYwMzggLyogV2ViRGFzaGJvYXJkUmVnaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzA1ODkyQTA3MDg2OEIzMDBFNzlEOTYgLyogV2Vi
RGFzaGJvYXJkUmVnaW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJOTM5ODEwQUIwODI0QkYwMTAwOERGMDM4IC8qIFdlYlBsdWdpbkRvY3VtZW50
Vmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMy
RDdFMDMwNzA5RDhGQjAwRjQ5QjYxIC8qIFdlYlBsdWdpbkRvY3VtZW50Vmlldy5oICovOyB9Owog
CQk5Mzk4MTBBQzA4MjRCRjAxMDA4REYwMzggLyogV2ViUGx1Z2luVmlld0ZhY3RvcnlQcml2YXRl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0U2Nzk3
ODA3MjZEN0NGMDA2QzdBMzYgLyogV2ViUGx1Z2luVmlld0ZhY3RvcnlQcml2YXRlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJOTM5ODEwQUQwODI0
QkYwMTAwOERGMDM4IC8qIFdlYkltYWdlRGVjb2RlSXRlbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0QzRDMkEwNzVFN0RFNTAwQjg5Q0FEIC8qIFdl
YkltYWdlRGVjb2RlSXRlbS5oICovOyB9OwotCQk5Mzk4MTBBRTA4MjRCRjAxMDA4REYwMzggLyog
V2ViSW1hZ2VEZWNvZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MTRDNEMyQzA3NUU3REU1MDBCODlDQUQgLyogV2ViSW1hZ2VEZWNvZGVyLmggKi87
IH07CiAJCTkzOTgxMEFGMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJGcmFtZVZpZXdQcml2YXRlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0M2RjE0NTA3
OTIwQjkzMDAyNDQ5Q0QgLyogV2ViRnJhbWVWaWV3UHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzOTgxMEIwMDgyNEJGMDEwMDhERjAz
OCAvKiBXZWJQbHVnaW5Db250YWluZXJQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTgzNkY1RTA3RUU0MjU5MDA2ODJGOTUgLyogV2ViUGx1
Z2luQ29udGFpbmVyUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTkzOTgxMEIxMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJQbHVnaW5Db250
YWluZXJDaGVjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNjVFMTE1MDMwN0VGRkVCRjAwOUI4QkY3IC8qIFdlYlBsdWdpbkNvbnRhaW5lckNoZWNrLmgg
Ki87IH07CkBAIC0yMTcsNyArMjEzLDYgQEAKIAkJOTM5ODEwREMwODI0QkYwMTAwOERGMDM4IC8q
IFdlYlBsdWdpblBhY2thZ2UubSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDgzRTRBRjRDMDM2NjU5NDQwMDAwRTUwNiAvKiBXZWJQbHVnaW5QYWNrYWdlLm0g
Ki87IH07CiAJCTkzOTgxMEREMDgyNEJGMDEwMDhERjAzOCAvKiBucGFwaS5tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjVGNzE3MjMwMjg4NDkzQzAxODYz
NUNBIC8qIG5wYXBpLm0gKi87IH07CiAJCTkzOTgxMERFMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJG
cmFtZUJyaWRnZS5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRjVBRkI0NUYwMkI5NERDODAxODYzNUNBIC8qIFdlYkZyYW1lQnJpZGdlLm0gKi87IH07Ci0J
CTkzOTgxMEUyMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJJbWFnZVJlbmRlcmVyLm0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5Q0UxRjhBMTAyQTVDNkYzMEVD
QTJBQ0QgLyogV2ViSW1hZ2VSZW5kZXJlci5tICovOyB9OwogCQk5Mzk4MTBFMzA4MjRCRjAxMDA4
REYwMzggLyogV2ViSW1hZ2VSZW5kZXJlckZhY3RvcnkubSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlDRTFGOEEzMDJBNUM2RjMwRUNBMkFDRCAvKiBXZWJJ
bWFnZVJlbmRlcmVyRmFjdG9yeS5tICovOyB9OwogCQk5Mzk4MTBFNDA4MjRCRjAxMDA4REYwMzgg
LyogV2ViSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsLm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzQ1RDRFQjAzNjVDNUIyMDA4NjM1Q0UgLyogV2ViSmF2
YVNjcmlwdFRleHRJbnB1dFBhbmVsLm0gKi87IH07CiAJCTkzOTgxMEU1MDgyNEJGMDEwMDhERjAz
OCAvKiBXZWJTdWJyZXNvdXJjZUxvYWRlci5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRjVFMEUxMDkwMkJDNDVGODAxODYzNUNBIC8qIFdlYlN1YnJlc291
cmNlTG9hZGVyLm0gKi87IH07CkBAIC0yNjgsMTAgKzI2Myw3IEBACiAJCTkzOTgxMTFFMDgyNEJG
MDEwMDhERjAzOCAvKiBXZWJQREZWaWV3Lm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MUU5NEMzNTA2QzAzMjEyMDBBOUIwOUUgLyogV2ViUERGVmlldy5t
ICovOyB9OwogCQk5Mzk4MTExRjA4MjRCRjAxMDA4REYwMzggLyogV2ViUERGUmVwcmVzZW50YXRp
b24ubSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTk0
QzY5MDZDMDM0NzUwMEE5QjA5RSAvKiBXZWJQREZSZXByZXNlbnRhdGlvbi5tICovOyB9OwogCQk5
Mzk4MTEyMTA4MjRCRjAxMDA4REYwMzggLyogV2ViRm9ybURhdGFTdHJlYW0ubSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjY0MUY5MDZFMjkyQkMwMDU1
RjYxMCAvKiBXZWJGb3JtRGF0YVN0cmVhbS5tICovOyB9OwotCQk5Mzk4MTEyMjA4MjRCRjAxMDA4
REYwMzggLyogV2ViSW1hZ2VEYXRhLm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MUM2NTEzNzA2RUZDRDkzMDA5Njk4MjUgLyogV2ViSW1hZ2VEYXRhLm0g
Ki87IH07CiAJCTkzOTgxMTIzMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJQbHVnaW5Eb2N1bWVudFZp
ZXcubSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMkQ3
RTA0MDcwOUQ4RkIwMEY0OUI2MSAvKiBXZWJQbHVnaW5Eb2N1bWVudFZpZXcubSAqLzsgfTsKLQkJ
OTM5ODExMjQwODI0QkYwMTAwOERGMDM4IC8qIFdlYkltYWdlRGVjb2RlSXRlbS5tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0QzRDMkIwNzVFN0RFNTAw
Qjg5Q0FEIC8qIFdlYkltYWdlRGVjb2RlSXRlbS5tICovOyB9OwotCQk5Mzk4MTEyNTA4MjRCRjAx
MDA4REYwMzggLyogV2ViSW1hZ2VEZWNvZGVyLm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTRDNEMyRDA3NUU3REU1MDBCODlDQUQgLyogV2ViSW1hZ2VE
ZWNvZGVyLm0gKi87IH07CiAJCTkzOTgxMTI2MDgyNEJGMDEwMDhERjAzOCAvKiBXZWJQbHVnaW5D
b250YWluZXJDaGVjay5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNjVFMTE1MDQwN0VGRkVCRjAwOUI4QkY3IC8qIFdlYlBsdWdpbkNvbnRhaW5lckNoZWNr
Lm0gKi87IH07CiAJCTkzOTgxMTI4MDgyNEJGMDEwMDhERjAzOCAvKiBBcHBsaWNhdGlvblNlcnZp
Y2VzLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEY1QzI4NjkzMDI4NDZEQ0QwMTg2MzVDQSAvKiBBcHBsaWNhdGlvblNlcnZpY2VzLmZy
YW1ld29yayAqLzsgfTsKIAkJOTM5ODExMjkwODI0QkYwMTAwOERGMDM4IC8qIENhcmJvbi5mcmFt
ZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
NUMyODY5NDAyODQ2RENEMDE4NjM1Q0EgLyogQ2FyYm9uLmZyYW1ld29yayAqLzsgfTsKQEAgLTM1
NCwxMCArMzQ2LDYgQEAKIAkJNTE0NDNGOUEwNDI5MzkyQjAwQ0EyRDNBIC8qIFdlYlBvbGljeURl
bGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYlBvbGljeURlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRo
ID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQk1MTQ0M0Y5QjA0MjkzOTJCMDBDQTJEM0EgLyogV2Vi
UG9saWN5RGVsZWdhdGUubSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5vYmpjOyBwYXRoID0gV2ViUG9saWN5RGVsZWdhdGUubTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTUxNDQzRjlDMDQyOTM5MkIwMENB
MkQzQSAvKiBXZWJQb2xpY3lEZWxlZ2F0ZVByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUG9saWN5RGVsZWdhdGVQcml2YXRlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9Owot
CQk1MTRDNEMyQTA3NUU3REU1MDBCODlDQUQgLyogV2ViSW1hZ2VEZWNvZGVJdGVtLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkltYWdlRGVj
b2RlSXRlbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJz
ID0gMDsgfTsKLQkJNTE0QzRDMkIwNzVFN0RFNTAwQjg5Q0FEIC8qIFdlYkltYWdlRGVjb2RlSXRl
bS5tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRl
bnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7IHBhdGgg
PSBXZWJJbWFnZURlY29kZUl0ZW0ubTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGgg
PSA4OyB1c2VzVGFicyA9IDA7IH07Ci0JCTUxNEM0QzJDMDc1RTdERTUwMEI4OUNBRCAvKiBXZWJJ
bWFnZURlY29kZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViSW1hZ2VEZWNvZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldp
ZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwotCQk1MTRDNEMyRDA3NUU3REU1MDBCODlDQUQgLyog
V2ViSW1hZ2VEZWNvZGVyLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMub2JqYzsgcGF0aCA9IFdlYkltYWdlRGVjb2Rlci5tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJNTE1MkZBREQwMzNGQzUwNDAwQ0Ey
QUNEIC8qIFdlYkRlZmF1bHRDb250ZXh0TWVudURlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRGVmYXVsdENvbnRleHRNZW51RGVs
ZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9
IDA7IH07CiAJCTUxNTJGQURFMDMzRkM1MDQwMENBMkFDRCAvKiBXZWJEZWZhdWx0Q29udGV4dE1l
bnVEZWxlZ2F0ZS5tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2Jq
YzsgcGF0aCA9IFdlYkRlZmF1bHRDb250ZXh0TWVudURlbGVnYXRlLm07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQk1MTUyRkFERjAzM0ZD
NTA0MDBDQTJBQ0QgLyogV2ViRGVmYXVsdFBvbGljeURlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRGVmYXVsdFBvbGljeURlbGVn
YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAw
OyB9OwpAQCAtMzc1LDggKzM2Myw2IEBACiAJCTUxQThCNTdBMDQyODM0RjcwMENBMkQzQSAvKiBX
ZWJWaWV3Lm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsg
cGF0aCA9IFdlYlZpZXcubTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1
c2VzVGFicyA9IDA7IH07CiAJCTUxQThCNTdEMDQyODM1M0EwMENBMkQzQSAvKiBXZWJWaWV3UHJp
dmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBp
bmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJWaWV3UHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7
IHVzZXNUYWJzID0gMDsgfTsKIAkJNTFDMTZFNDAwNjEzOEVCNDAwQTE2NTdCIC8qIG5wZnVuY3Rp
b25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGlu
ZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IG5wZnVuY3Rpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNl
c1RhYnMgPSAwOyB9OwotCQk1MUM2NTEzNjA2RUZDRDkzMDA5Njk4MjUgLyogV2ViSW1hZ2VEYXRh
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVu
dFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YkltYWdlRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNU
YWJzID0gMDsgfTsKLQkJNTFDNjUxMzcwNkVGQ0Q5MzAwOTY5ODI1IC8qIFdlYkltYWdlRGF0YS5t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRX
aWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7IHBhdGggPSBX
ZWJJbWFnZURhdGEubTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2Vz
VGFicyA9IDA7IH07CiAJCTUxRTk0QzM0MDZDMDMyMTIwMEE5QjA5RSAvKiBXZWJQREZWaWV3Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdp
ZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlBE
RlZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9
IDA7IH07CiAJCTUxRTk0QzM1MDZDMDMyMTIwMEE5QjA5RSAvKiBXZWJQREZWaWV3Lm0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9IFdlYlBERlZp
ZXcubTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7
IH07CiAJCTUxRTk0QzY4MDZDMDM0NzUwMEE5QjA5RSAvKiBXZWJQREZSZXByZXNlbnRhdGlvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRX
aWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQ
REZSZXByZXNlbnRhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7
IHVzZXNUYWJzID0gMDsgfTsKQEAgLTQ4OSw4ICs0NzUsNiBAQAogCQk5M0VCMTc4QzA5Rjg4RDQ2
MDA5MUY4RkYgLyogV2ViU3lzdGVtSW50ZXJmYWNlLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
b2JqYzsgcGF0aCA9IFdlYlN5c3RlbUludGVyZmFjZS5tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5M0VCMTc4RTA5Rjg4RDUxMDA5MUY4RkYgLyogV2ViU3lzdGVtSW50ZXJmYWNlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlN5c3RlbUludGVyZmFjZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5Q0FFOUQwNzAyNTJBNDEzMEVDQTE2RUEgLyog
V2ViUHJlZmVyZW5jZXNQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViUHJlZmVyZW5jZXNQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwotCQk5Q0UxRjhBMDAyQTVD
NkYzMEVDQTJBQ0QgLyogV2ViSW1hZ2VSZW5kZXJlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkltYWdlUmVuZGVyZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07Ci0JCTlDRTFGOEEx
MDJBNUM2RjMwRUNBMkFDRCAvKiBXZWJJbWFnZVJlbmRlcmVyLm0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5vYmpjOyBwYXRoID0gV2ViSW1hZ2VSZW5kZXJlci5tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJ
OUNFMUY4QTIwMkE1QzZGMzBFQ0EyQUNEIC8qIFdlYkltYWdlUmVuZGVyZXJGYWN0b3J5LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGgg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSW1hZ2VS
ZW5kZXJlckZhY3RvcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1
c2VzVGFicyA9IDA7IH07CiAJCTlDRTFGOEEzMDJBNUM2RjMwRUNBMkFDRCAvKiBXZWJJbWFnZVJl
bmRlcmVyRmFjdG9yeS5tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
b2JqYzsgcGF0aCA9IFdlYkltYWdlUmVuZGVyZXJGYWN0b3J5Lm07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQk5Q0YwRTI0OTAyMTM2MUIw
MEVDQTE2RUEgLyogV2ViRnJhbWVQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRnJhbWVQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwpAQCAtOTgwLDE0ICs5NjQs
NiBAQAogCQkJCUY1QUZCNDVFMDJCOTREQzgwMTg2MzVDQSAvKiBXZWJGcmFtZUJyaWRnZS5oICov
LAogCQkJCUY1QUZCNDVGMDJCOTREQzgwMTg2MzVDQSAvKiBXZWJGcmFtZUJyaWRnZS5tICovLAog
CQkJCTkzMDU4OTJBMDcwODY4QjMwMEU3OUQ5NiAvKiBXZWJEYXNoYm9hcmRSZWdpb24uaCAqLywK
LQkJCQk1MTRDNEMyQTA3NUU3REU1MDBCODlDQUQgLyogV2ViSW1hZ2VEZWNvZGVJdGVtLmggKi8s
Ci0JCQkJNTE0QzRDMkIwNzVFN0RFNTAwQjg5Q0FEIC8qIFdlYkltYWdlRGVjb2RlSXRlbS5tICov
LAotCQkJCTUxNEM0QzJDMDc1RTdERTUwMEI4OUNBRCAvKiBXZWJJbWFnZURlY29kZXIuaCAqLywK
LQkJCQk1MTRDNEMyRDA3NUU3REU1MDBCODlDQUQgLyogV2ViSW1hZ2VEZWNvZGVyLm0gKi8sCi0J
CQkJNTFDNjUxMzYwNkVGQ0Q5MzAwOTY5ODI1IC8qIFdlYkltYWdlRGF0YS5oICovLAotCQkJCTUx
QzY1MTM3MDZFRkNEOTMwMDk2OTgyNSAvKiBXZWJJbWFnZURhdGEubSAqLywKLQkJCQk5Q0UxRjhB
MDAyQTVDNkYzMEVDQTJBQ0QgLyogV2ViSW1hZ2VSZW5kZXJlci5oICovLAotCQkJCTlDRTFGOEEx
MDJBNUM2RjMwRUNBMkFDRCAvKiBXZWJJbWFnZVJlbmRlcmVyLm0gKi8sCiAJCQkJOUNFMUY4QTIw
MkE1QzZGMzBFQ0EyQUNEIC8qIFdlYkltYWdlUmVuZGVyZXJGYWN0b3J5LmggKi8sCiAJCQkJOUNF
MUY4QTMwMkE1QzZGMzBFQ0EyQUNEIC8qIFdlYkltYWdlUmVuZGVyZXJGYWN0b3J5Lm0gKi8sCiAJ
CQkJOTM0NUQ0RUEwMzY1QzVCMjAwODYzNUNFIC8qIFdlYkphdmFTY3JpcHRUZXh0SW5wdXRQYW5l
bC5oICovLApAQCAtMTEyNSw3ICsxMTAxLDYgQEAKIAkJCQk5Mzk4MTAzOTA4MjRCRjAxMDA4REYw
MzggLyogV2ViUGx1Z2luUGFja2FnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM5ODEwM0EwODI0
QkYwMTAwOERGMDM4IC8qIFdlYlBsdWdpblZpZXdGYWN0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5Mzk4MTAzQzA4MjRCRjAxMDA4REYwMzggLyogV2ViRnJhbWVCcmlkZ2UuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTkzOTgxMDQwMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJJbWFnZVJlbmRlcmVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5Mzk4MTA0MTA4MjRCRjAxMDA4REYwMzggLyogV2ViSW1hZ2VS
ZW5kZXJlckZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzOTgxMDQyMDgyNEJGMDEwMDhE
RjAzOCAvKiBXZWJKYXZhU2NyaXB0VGV4dElucHV0UGFuZWwuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTkzOTgxMDQzMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJTdWJyZXNvdXJjZUxvYWRlci5oIGluIEhl
YWRlcnMgKi8sCkBAIC0xMjAyLDEyICsxMTc3LDkgQEAKIAkJCQk5Mzk4MTBBNTA4MjRCRjAxMDA4
REYwMzggLyogV2ViUERGUmVwcmVzZW50YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTkzOTgx
MEE3MDgyNEJGMDEwMDhERjAzOCAvKiBXZWJGb3JtRGF0YVN0cmVhbS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTM5ODEwQTgwODI0QkYwMTAwOERGMDM4IC8qIFdlYlByZWZlcmVuY2VLZXlzUHJpdmF0
ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJOTM5ODEwQTkwODI0QkYwMTAwOERGMDM4IC8qIFdlYklt
YWdlRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM5ODEwQUEwODI0QkYwMTAwOERGMDM4IC8q
IFdlYkRhc2hib2FyZFJlZ2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM5ODEwQUIwODI0QkYw
MTAwOERGMDM4IC8qIFdlYlBsdWdpbkRvY3VtZW50Vmlldy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTM5ODEwQUMwODI0QkYwMTAwOERGMDM4IC8qIFdlYlBsdWdpblZpZXdGYWN0b3J5UHJpdmF0ZS5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJOTM5ODEwQUQwODI0QkYwMTAwOERGMDM4IC8qIFdlYkltYWdl
RGVjb2RlSXRlbS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJOTM5ODEwQUUwODI0QkYwMTAwOERGMDM4
IC8qIFdlYkltYWdlRGVjb2Rlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM5ODEwQUYwODI0QkYw
MTAwOERGMDM4IC8qIFdlYkZyYW1lVmlld1ByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTkz
OTgxMEIwMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJQbHVnaW5Db250YWluZXJQcml2YXRlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5Mzk4MTBCMTA4MjRCRjAxMDA4REYwMzggLyogV2ViUGx1Z2luQ29u
dGFpbmVyQ2hlY2suaCBpbiBIZWFkZXJzICovLApAQCAtMTY0MSw3ICsxNjEzLDYgQEAKIAkJCQk5
Mzk4MTBEQzA4MjRCRjAxMDA4REYwMzggLyogV2ViUGx1Z2luUGFja2FnZS5tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJOTM5ODEwREQwODI0QkYwMTAwOERGMDM4IC8qIG5wYXBpLm0gaW4gU291cmNlcyAq
LywKIAkJCQk5Mzk4MTBERTA4MjRCRjAxMDA4REYwMzggLyogV2ViRnJhbWVCcmlkZ2UubSBpbiBT
b3VyY2VzICovLAotCQkJCTkzOTgxMEUyMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJJbWFnZVJlbmRl
cmVyLm0gaW4gU291cmNlcyAqLywKIAkJCQk5Mzk4MTBFMzA4MjRCRjAxMDA4REYwMzggLyogV2Vi
SW1hZ2VSZW5kZXJlckZhY3RvcnkubSBpbiBTb3VyY2VzICovLAogCQkJCTkzOTgxMEU0MDgyNEJG
MDEwMDhERjAzOCAvKiBXZWJKYXZhU2NyaXB0VGV4dElucHV0UGFuZWwubSBpbiBTb3VyY2VzICov
LAogCQkJCTkzOTgxMEU1MDgyNEJGMDEwMDhERjAzOCAvKiBXZWJTdWJyZXNvdXJjZUxvYWRlci5t
IGluIFNvdXJjZXMgKi8sCkBAIC0xNjkyLDEwICsxNjYzLDcgQEAKIAkJCQk5Mzk4MTExRTA4MjRC
RjAxMDA4REYwMzggLyogV2ViUERGVmlldy5tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM5ODExMUYw
ODI0QkYwMTAwOERGMDM4IC8qIFdlYlBERlJlcHJlc2VudGF0aW9uLm0gaW4gU291cmNlcyAqLywK
IAkJCQk5Mzk4MTEyMTA4MjRCRjAxMDA4REYwMzggLyogV2ViRm9ybURhdGFTdHJlYW0ubSBpbiBT
b3VyY2VzICovLAotCQkJCTkzOTgxMTIyMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJJbWFnZURhdGEu
bSBpbiBTb3VyY2VzICovLAogCQkJCTkzOTgxMTIzMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJQbHVn
aW5Eb2N1bWVudFZpZXcubSBpbiBTb3VyY2VzICovLAotCQkJCTkzOTgxMTI0MDgyNEJGMDEwMDhE
RjAzOCAvKiBXZWJJbWFnZURlY29kZUl0ZW0ubSBpbiBTb3VyY2VzICovLAotCQkJCTkzOTgxMTI1
MDgyNEJGMDEwMDhERjAzOCAvKiBXZWJJbWFnZURlY29kZXIubSBpbiBTb3VyY2VzICovLAogCQkJ
CTkzOTgxMTI2MDgyNEJGMDEwMDhERjAzOCAvKiBXZWJQbHVnaW5Db250YWluZXJDaGVjay5tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNjU0ODhEQTIwODRGQkNDQjAwODMxQUQwIC8qIFdlYk5TRGljdGlv
bmFyeUV4dHJhcy5tIGluIFNvdXJjZXMgKi8sCiAJCQkJNjVFRURFNTQwODRGRkI5MjAwMDJEQjI1
IC8qIFdlYk5TQ2FsZW5kYXJEYXRlRXh0cmFzLm0gaW4gU291cmNlcyAqLywKSW5kZXg6IFdlYktp
dC9XZWJDb3JlU3VwcG9ydC9XZWJJbWFnZVJlbmRlcmVyRmFjdG9yeS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC9XZWJDb3JlU3VwcG9ydC9XZWJJbWFnZVJlbmRlcmVyRmFjdG9yeS5oCShyZXZpc2lv
biAxNDQxNSkKKysrIFdlYktpdC9XZWJDb3JlU3VwcG9ydC9XZWJJbWFnZVJlbmRlcmVyRmFjdG9y
eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwNSBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwNSwgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsMTQgKzI4LDYgQEAK
IAogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlSW1hZ2VSZW5kZXJlckZhY3RvcnkuaD4KIAotQGNs
YXNzIFdlYkltYWdlUmVuZGVyZXI7Ci0KIEBpbnRlcmZhY2UgV2ViSW1hZ2VSZW5kZXJlckZhY3Rv
cnkgOiBXZWJDb3JlSW1hZ2VSZW5kZXJlckZhY3RvcnkgPFdlYkNvcmVJbWFnZVJlbmRlcmVyRmFj
dG9yeT4KLXsKLX0KLQogKyAodm9pZCljcmVhdGVTaGFyZWRGYWN0b3J5OwotKyAoV2ViSW1hZ2VS
ZW5kZXJlckZhY3RvcnkgKilzaGFyZWRGYWN0b3J5OwotLSAoaWQgPFdlYkNvcmVJbWFnZVJlbmRl
cmVyPilpbWFnZVJlbmRlcmVyV2l0aERhdGE6KE5TRGF0YSopZGF0YSBNSU1FVHlwZTooTlNTdHJp
bmcgKilNSU1FVHlwZTsKLQogQGVuZApJbmRleDogV2ViS2l0L1dlYkNvcmVTdXBwb3J0L1dlYklt
YWdlRGVjb2RlSXRlbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9XZWJDb3JlU3VwcG9ydC9XZWJJ
bWFnZURlY29kZUl0ZW0uaAkocmV2aXNpb24gMTQ0MTUpCisrKyBXZWJLaXQvV2ViQ29yZVN1cHBv
cnQvV2ViSW1hZ2VEZWNvZGVJdGVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNDMgKzEgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDUgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9m
IEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAg
aXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2ltcG9ydCA8Q29jb2EvQ29jb2EuaD4KLQotQGNsYXNzIFdlYkltYWdlRGF0
YTsKLQotQGludGVyZmFjZSBXZWJJbWFnZURlY29kZUl0ZW0gOiBOU09iamVjdAotewotQHB1Ymxp
YwotICAgIFdlYkltYWdlRGF0YSAqaW1hZ2VEYXRhOwotICAgIGlkIGNhbGxiYWNrOwotICAgIENG
RGF0YVJlZiBkYXRhOwotICAgIEJPT0wgaXNDb21wbGV0ZTsKLX0KLSsgZGVjb2RlSXRlbVdpdGhJ
bWFnZTooV2ViSW1hZ2VEYXRhICopaW1nIGRhdGE6KENGRGF0YVJlZilkIGlzQ29tcGxldGU6KEJP
T0wpZiBjYWxsYmFjazooaWQpYzsKLS0gaW5pdFdpdGhJbWFnZTooV2ViSW1hZ2VEYXRhICopaW1n
IGRhdGE6KENGRGF0YVJlZilkIGlzQ29tcGxldGU6KEJPT0wpZiBjYWxsYmFjazooaWQpYzsKLUBl
bmQKKyNlcnJvcgpJbmRleDogV2ViS2l0L1dlYkNvcmVTdXBwb3J0L1dlYkltYWdlUmVuZGVyZXJG
YWN0b3J5Lm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L1dlYkNvcmVTdXBwb3J0L1dlYkltYWdlUmVu
ZGVyZXJGYWN0b3J5Lm0JKHJldmlzaW9uIDE0NDE1KQorKysgV2ViS2l0L1dlYkNvcmVTdXBwb3J0
L1dlYkltYWdlUmVuZGVyZXJGYWN0b3J5Lm0JKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA1IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2IEFwcGxlIENvbXB1dGVy
LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0yNiw4ICsyNiw3IEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpbXBvcnQgPFdlYktp
dC9XZWJJbWFnZVJlbmRlcmVyRmFjdG9yeS5oPgotI2ltcG9ydCA8V2ViS2l0L1dlYkltYWdlUmVu
ZGVyZXIuaD4KKyNpbXBvcnQgIldlYkltYWdlUmVuZGVyZXJGYWN0b3J5LmgiCiAKICNpbXBvcnQg
PEphdmFTY3JpcHRDb3JlL0Fzc2VydGlvbnMuaD4KICNpbXBvcnQgPFdlYktpdFN5c3RlbUludGVy
ZmFjZS5oPgpAQCAtNDIsMTQ0ICs0MSwxOCBAQAogICAgIEFTU0VSVChbW3NlbGYgc2hhcmVkRmFj
dG9yeV0gaXNLaW5kT2ZDbGFzczpzZWxmXSk7CiB9CiAKLSsgKFdlYkltYWdlUmVuZGVyZXJGYWN0
b3J5ICopc2hhcmVkRmFjdG9yeQotewotICAgIHJldHVybiAoV2ViSW1hZ2VSZW5kZXJlckZhY3Rv
cnkgKilbc3VwZXIgc2hhcmVkRmFjdG9yeV07Ci19Ci0KLS8vIEhhdmUgdG8gbGVhdmUgdGhlc2Ug
aW4gYmVjYXVzZSBTYWZhcmkgY2FsbHMgdGhlbSBmcm9tIGl0cyBEZWJ1ZyBtZW51LgorLy8gSGF2
ZSB0byBsZWF2ZSB0aGlzIG1ldGhvZCBpbiBiZWNhdXNlIG9sZCB2ZXJzaW9ucyBvZiBTYWZhcmkg
Y2FsbCBpdCBmcm9tIHRoZSBEZWJ1ZyBtZW51LgogKyAoQk9PTClzaG91bGRVc2VUaHJlYWRlZERl
Y29kaW5nCiB7CiAgICAgcmV0dXJuIE5POwogfQogCisvLyBIYXZlIHRvIGxlYXZlIHRoaXMgbWV0
aG9kIGluIGJlY2F1c2Ugb2xkIHZlcnNpb25zIG9mIFNhZmFyaSBjYWxsIGl0IGZyb20gdGhlIERl
YnVnIG1lbnUuCiArICh2b2lkKXNldFNob3VsZFVzZVRocmVhZGVkRGVjb2Rpbmc6KEJPT0wpdGhy
ZWFkZWREZWNvZGUKIHsKICAgICAvLyBEbyBub3RoaW5nLiBXZSBkb24ndCBzdXBwb3J0IHRoaXMg
bm93LgogfQogCi0tICh2b2lkKXNldFBhdHRlcm5QaGFzZUZvckNvbnRleHQ6KENHQ29udGV4dFJl
Ziljb250ZXh0IGluVXNlclNwYWNlOihDR1BvaW50KXBvaW50Ci17Ci0gICAgV0tTZXRQYXR0ZXJu
UGhhc2VJblVzZXJTcGFjZShjb250ZXh0LCBwb2ludCk7Ci19Ci0KLS0gKGlkIDxXZWJDb3JlSW1h
Z2VSZW5kZXJlcj4paW1hZ2VSZW5kZXJlcldpdGhNSU1FVHlwZTooTlNTdHJpbmcgKilNSU1FVHlw
ZQotewotICAgIHJldHVybiBbW1tXZWJJbWFnZVJlbmRlcmVyIGFsbG9jXSBpbml0V2l0aE1JTUVU
eXBlOk1JTUVUeXBlXSBhdXRvcmVsZWFzZV07Ci19Ci0KLS0gKGlkIDxXZWJDb3JlSW1hZ2VSZW5k
ZXJlcj4paW1hZ2VSZW5kZXJlcgotewotICAgIHJldHVybiBbc2VsZiBpbWFnZVJlbmRlcmVyV2l0
aE1JTUVUeXBlOm5pbF07Ci19Ci0KLS0gKGlkIDxXZWJDb3JlSW1hZ2VSZW5kZXJlcj4paW1hZ2VS
ZW5kZXJlcldpdGhEYXRhOihOU0RhdGEqKWRhdGEgTUlNRVR5cGU6KE5TU3RyaW5nICopTUlNRVR5
cGUKLXsKLSAgICByZXR1cm4gW1tbV2ViSW1hZ2VSZW5kZXJlciBhbGxvY10gaW5pdFdpdGhEYXRh
OmRhdGEgTUlNRVR5cGU6TUlNRVR5cGVdIGF1dG9yZWxlYXNlXTsKLX0KLQotLSAoaWQgPFdlYkNv
cmVJbWFnZVJlbmRlcmVyPilpbWFnZVJlbmRlcmVyV2l0aEJ5dGVzOihjb25zdCB2b2lkICopYnl0
ZXMgbGVuZ3RoOih1bnNpZ25lZClsZW5ndGggTUlNRVR5cGU6KE5TU3RyaW5nICopTUlNRVR5cGUK
LXsKLSAgICBOU0RhdGEgKmRhdGEgPSBbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlczoodm9p
ZCAqKWJ5dGVzIGxlbmd0aDpsZW5ndGhdOwotICAgIFdlYkltYWdlUmVuZGVyZXIgKmltYWdlUmVu
ZGVyZXIgPSAoV2ViSW1hZ2VSZW5kZXJlciAqKVtzZWxmIGltYWdlUmVuZGVyZXJXaXRoRGF0YTpk
YXRhIE1JTUVUeXBlOk1JTUVUeXBlXTsKLSAgICBbZGF0YSBhdXRvcmVsZWFzZV07Ci0gICAgcmV0
dXJuIGltYWdlUmVuZGVyZXI7Ci19Ci0KLS0gKGlkIDxXZWJDb3JlSW1hZ2VSZW5kZXJlcj4paW1h
Z2VSZW5kZXJlcldpdGhCeXRlczooY29uc3Qgdm9pZCAqKWJ5dGVzIGxlbmd0aDoodW5zaWduZWQp
bGVuZ3RoCi17Ci0gICAgcmV0dXJuIFtzZWxmIGltYWdlUmVuZGVyZXJXaXRoQnl0ZXM6Ynl0ZXMg
bGVuZ3RoOmxlbmd0aCBNSU1FVHlwZTpuaWxdOwotfQotCi0tIChpZCA8V2ViQ29yZUltYWdlUmVu
ZGVyZXI+KWltYWdlUmVuZGVyZXJXaXRoU2l6ZTooTlNTaXplKXMKLXsKLSAgICByZXR1cm4gW1tb
V2ViSW1hZ2VSZW5kZXJlciBhbGxvY10gaW5pdFdpdGhTaXplOnNdIGF1dG9yZWxlYXNlXTsKLX0K
LQotLSAoaWQgPFdlYkNvcmVJbWFnZVJlbmRlcmVyPilpbWFnZVJlbmRlcmVyV2l0aE5hbWU6KE5T
U3RyaW5nICopbmFtZQotewotICAgIHJldHVybiBbW1tXZWJJbWFnZVJlbmRlcmVyIGFsbG9jXSBp
bml0V2l0aENvbnRlbnRzT2ZGaWxlOm5hbWVdIGF1dG9yZWxlYXNlXTsKLX0KLQotc3RydWN0IENv
bXBvc2l0ZU9wZXJhdG9yCi17Ci0gICAgTlNTdHJpbmcgKm5hbWU7Ci0gICAgTlNDb21wb3NpdGlu
Z09wZXJhdGlvbiB2YWx1ZTsKLX07Ci0KLSNkZWZpbmUgTlVNX0NPTVBPU0lURV9PUEVSQVRPUlMg
MTQKLXN0cnVjdCBDb21wb3NpdGVPcGVyYXRvciBOU0NvbXBvc2l0aW5nT3BlcmF0aW9uc1tOVU1f
Q09NUE9TSVRFX09QRVJBVE9SU10gPSB7Ci0gICAgeyBAImNsZWFyIiwgTlNDb21wb3NpdGVDbGVh
ciB9LAotICAgIHsgQCJjb3B5IiwgTlNDb21wb3NpdGVDb3B5IH0sCi0gICAgeyBAInNvdXJjZS1v
dmVyIiwgTlNDb21wb3NpdGVTb3VyY2VPdmVyIH0sCi0gICAgeyBAInNvdXJjZS1pbiIsIE5TQ29t
cG9zaXRlU291cmNlSW4gfSwKLSAgICB7IEAic291cmNlLW91dCIsIE5TQ29tcG9zaXRlU291cmNl
T3V0IH0sCi0gICAgeyBAInNvdXJjZS1hdG9wIiwgTlNDb21wb3NpdGVTb3VyY2VBdG9wIH0sCi0g
ICAgeyBAImRlc3RpbmF0aW9uLW92ZXIiLCBOU0NvbXBvc2l0ZURlc3RpbmF0aW9uT3ZlciB9LAot
ICAgIHsgQCJkZXN0aW5hdGlvbi1pbiIsIE5TQ29tcG9zaXRlRGVzdGluYXRpb25JbiB9LAotICAg
IHsgQCJkZXN0aW5hdGlvbi1vdXQiLCBOU0NvbXBvc2l0ZURlc3RpbmF0aW9uT3V0IH0sCi0gICAg
eyBAImRlc3RpbmF0aW9uLWF0b3AiLCBOU0NvbXBvc2l0ZURlc3RpbmF0aW9uQXRvcCB9LAotICAg
IHsgQCJ4b3IiLCBOU0NvbXBvc2l0ZVhPUiB9LAotICAgIHsgQCJkYXJrZXIiLCBOU0NvbXBvc2l0
ZVBsdXNEYXJrZXIgfSwKLSAgICB7IEAiaGlnaGxpZ2h0IiwgTlNDb21wb3NpdGVIaWdobGlnaHQg
fSwKLSAgICB7IEAibGlnaHRlciIsIE5TQ29tcG9zaXRlSGlnaGxpZ2h0IH0gICAgLy8gUGVyIEFw
cEtpdAotfTsKLQotLSAoaW50KUNHQ29tcG9zaXRlT3BlcmF0aW9uSW5Db250ZXh0OihDR0NvbnRl
eHRSZWYpY29udGV4dAotewotICAgIHJldHVybiBbW05TR3JhcGhpY3NDb250ZXh0IGdyYXBoaWNz
Q29udGV4dFdpdGhHcmFwaGljc1BvcnQ6Y29udGV4dCBmbGlwcGVkOk5PXSBjb21wb3NpdGluZ09w
ZXJhdGlvbl07Ci19Ci0KLS0gKHZvaWQpc2V0Q0dDb21wb3NpdGVPcGVyYXRpb246KGludClvcCBp
bkNvbnRleHQ6KENHQ29udGV4dFJlZiljb250ZXh0Ci17Ci0gICAgW1tOU0dyYXBoaWNzQ29udGV4
dCBncmFwaGljc0NvbnRleHRXaXRoR3JhcGhpY3NQb3J0OmNvbnRleHQgZmxpcHBlZDpOT10gc2V0
Q29tcG9zaXRpbmdPcGVyYXRpb246b3BdOwotfQotCi0tICh2b2lkKXNldENHQ29tcG9zaXRlT3Bl
cmF0aW9uRnJvbVN0cmluZzooTlNTdHJpbmcgKilvcGVyYXRvclN0cmluZyBpbkNvbnRleHQ6KENH
Q29udGV4dFJlZiljb250ZXh0Ci17Ci0gICAgTlNDb21wb3NpdGluZ09wZXJhdGlvbiBvcCA9IE5T
Q29tcG9zaXRlU291cmNlT3ZlcjsKLSAgICAKLSAgICBpZiAob3BlcmF0b3JTdHJpbmcpIHsKLSAg
ICAgICAgaW50IGk7Ci0gICAgICAgIAotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgTlVNX0NPTVBP
U0lURV9PUEVSQVRPUlM7IGkrKykgewotICAgICAgICAgICAgaWYgKFtvcGVyYXRvclN0cmluZyBj
YXNlSW5zZW5zaXRpdmVDb21wYXJlOk5TQ29tcG9zaXRpbmdPcGVyYXRpb25zW2ldLm5hbWVdID09
IE5TT3JkZXJlZFNhbWUpIHsKLSAgICAgICAgICAgICAgICBvcCA9IE5TQ29tcG9zaXRpbmdPcGVy
YXRpb25zW2ldLnZhbHVlOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIFtbTlNHcmFwaGljc0NvbnRleHQgZ3JhcGhpY3ND
b250ZXh0V2l0aEdyYXBoaWNzUG9ydDpjb250ZXh0IGZsaXBwZWQ6Tk9dIHNldENvbXBvc2l0aW5n
T3BlcmF0aW9uOm9wXTsKLX0KLQotCi0tIChOU0FycmF5ICopc3VwcG9ydGVkTUlNRVR5cGVzCi17
Ci0gICAgc3RhdGljIE5TQXJyYXkgKmltYWdlTUlNRVR5cGVzID0gbmlsOwotCi0gICAgaWYgKGlt
YWdlTUlNRVR5cGVzID09IG5pbCkgewotICAgICAgICBOU0VudW1lcmF0b3IgKmVudW1lcmF0b3Ig
PSBbW05TSW1hZ2UgaW1hZ2VGaWxlVHlwZXNdIG9iamVjdEVudW1lcmF0b3JdOwotICAgICAgICBO
U011dGFibGVTZXQgKm1pbWVzID0gW05TTXV0YWJsZVNldCBzZXRdOwotICAgICAgICBOU1N0cmlu
ZyAqdHlwZTsKLQotICAgICAgICB3aGlsZSAoKHR5cGUgPSBbZW51bWVyYXRvciBuZXh0T2JqZWN0
XSkgIT0gbmlsKSB7Ci0gICAgICAgICAgICBOU1N0cmluZyAqbWltZSA9IFdLR2V0TUlNRVR5cGVG
b3JFeHRlbnNpb24odHlwZSk7Ci0gICAgICAgICAgICBpZiAobWltZSAhPSBuaWwgJiYgIVttaW1l
IGlzRXF1YWxUb1N0cmluZzpAImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSJdKSB7Ci0gICAgICAg
ICAgICAgICAgW21pbWVzIGFkZE9iamVjdDptaW1lXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotCi0gICAgICAgIC8vIGltYWdlL3BqcGVnIGlzIHRoZSBNSU1FIHR5cGUgZm9yIHByb2dyZXNz
aXZlIGpwZWcuIFRoZXNlIGZpbGVzIGhhdmUgdGhlIGpwZyBmaWxlIGV4dGVuc2lvbi4KLSAgICAg
ICAgLy8gVGhpcyBpcyB3b3JrYXJvdW5kIG9mIE5TVVJMRmlsZVR5cGVNYXBwaW5ncydzIGxpbWl0
YXRpb24gb2Ygb25seSBwcm92aWRpbmcgMSBNSU1FIHR5cGUgZm9yIGFuIGV4dGVuc2lvbi4KLSAg
ICAgICAgW21pbWVzIGFkZE9iamVjdDpAImltYWdlL3BqcGVnIl07Ci0gICAgICAgIAotICAgICAg
ICBpbWFnZU1JTUVUeXBlcyA9IFtbbWltZXMgYWxsT2JqZWN0c10gcmV0YWluXTsKLSAgICB9Ci0K
LSAgICByZXR1cm4gaW1hZ2VNSU1FVHlwZXM7Ci19Ci0KIC0gKE5TRGF0YSAqKWltYWdlRGF0YUZv
ck5hbWU6KE5TU3RyaW5nICopZmlsZW5hbWUKIHsKICAgICBOU0J1bmRsZSAqYnVuZGxlID0gW05T
QnVuZGxlIGJ1bmRsZUZvckNsYXNzOltzZWxmIGNsYXNzXV07CkBAIC0xODgsNSArNjEsNCBAQAog
ICAgIHJldHVybiBkYXRhOwogfQogCi0KIEBlbmQKSW5kZXg6IFdlYktpdC9XZWJDb3JlU3VwcG9y
dC9XZWJJbWFnZURlY29kZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvV2ViQ29yZVN1cHBvcnQv
V2ViSW1hZ2VEZWNvZGVyLmgJKHJldmlzaW9uIDE0NDE1KQorKysgV2ViS2l0L1dlYkNvcmVTdXBw
b3J0L1dlYkltYWdlRGVjb2Rlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQ4ICsxIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDA1IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoK
LSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBB
cHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0
cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uIAotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbXBvcnQgPFdlYktpdC9XZWJJbWFnZURlY29kZUl0ZW0uaD4KLQotQGNsYXNz
IFdlYkltYWdlRGF0YTsKLQotQGludGVyZmFjZSBXZWJJbWFnZURlY29kZXIgOiBOU09iamVjdAot
ewotQHB1YmxpYwotICAgIE5TQ29uZGl0aW9uTG9jayAqaXRlbUxvY2s7Ci0gICAgQ0ZNdXRhYmxl
RGljdGlvbmFyeVJlZiBpdGVtczsKLSAgICBOU0xvY2sgKmNvbXBsZXRlZEl0ZW1zTG9jazsKLSAg
ICBOU011dGFibGVBcnJheSAqY29tcGxldGVkSXRlbXM7Ci19Ci0rIChXZWJJbWFnZURlY29kZXIg
KilzaGFyZWREZWNvZGVyOwotKyAodm9pZClwZXJmb3JtRGVjb2RlV2l0aEltYWdlOihXZWJJbWFn
ZURhdGEgKilpbWcgZGF0YTooQ0ZEYXRhUmVmKWQgaXNDb21wbGV0ZTooQk9PTClmIGNhbGxiYWNr
OihpZCljOwotKyAodm9pZClkZWNvZGVDb21wbGV0ZTooaWQpY2FsbGJhY2sgc3RhdHVzOihDR0lt
YWdlU291cmNlU3RhdHVzKWltYWdlU3RhdHVzOwotKyAoQk9PTClpc0ltYWdlRGVjb2RlUGVuZGlu
ZzooV2ViSW1hZ2VEYXRhICopaW1nOwotLSAoV2ViSW1hZ2VEZWNvZGVJdGVtICopcmVtb3ZlSXRl
bTsKLS0gKHZvaWQpYWRkSXRlbTooV2ViSW1hZ2VEZWNvZGVJdGVtICopaXRlbTsKLS0gKHZvaWQp
ZGVjb2RlSXRlbTooV2ViSW1hZ2VEZWNvZGVJdGVtICopaXRlbTsKLUBlbmQKKyNlcnJvcgpJbmRl
eDogV2ViS2l0L1dlYkNvcmVTdXBwb3J0L1dlYkltYWdlUmVuZGVyZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvV2ViQ29yZVN1cHBvcnQvV2ViSW1hZ2VSZW5kZXJlci5oCShyZXZpc2lvbiAxNDQx
NSkKKysrIFdlYktpdC9XZWJDb3JlU3VwcG9ydC9XZWJJbWFnZVJlbmRlcmVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNzUgKzEgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUgQXBwbGUgQ29t
cHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKLSAq
IDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBu
b3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCA8Q29jb2EvQ29jb2Eu
aD4KLQotQHByb3RvY29sIFdlYkNvcmVJbWFnZVJlbmRlcmVyOwotCi1AY2xhc3MgV2ViSW1hZ2VE
YXRhOwotCi1AaW50ZXJmYWNlIFdlYkltYWdlUmVuZGVyZXIgOiBOU09iamVjdCA8V2ViQ29yZUlt
YWdlUmVuZGVyZXI+Ci17Ci0gICAgTlNTdHJpbmcgKk1JTUVUeXBlOwotCi0gICAgV2ViSW1hZ2VE
YXRhICppbWFnZURhdGE7Ci0KLSAgICBOU0ltYWdlICpuc2ltYWdlOwotICAgIE5TRGF0YSAqVElG
RkRhdGE7Ci0gICAgCi0gICAgTlNSZWN0IHRhcmdldEFuaW1hdGlvblJlY3Q7Ci19Ci0KLS0gKGlk
KWluaXRXaXRoTUlNRVR5cGU6KE5TU3RyaW5nICopTUlNRTsKLS0gKGlkKWluaXRXaXRoRGF0YToo
TlNEYXRhICopZGF0YSBNSU1FVHlwZTooTlNTdHJpbmcgKilNSU1FOwotLSAoaWQpaW5pdFdpdGhD
b250ZW50c09mRmlsZTooTlNTdHJpbmcgKilmaWxlbmFtZTsKLS0gKE5TU3RyaW5nICopTUlNRVR5
cGU7Ci0rICh2b2lkKXN0b3BBbmltYXRpb25zSW5WaWV3OihOU1ZpZXcgKilhVmlldzsKLS0gKGlu
dClmcmFtZUNvdW50OwotLSAoTlNSZWN0KXRhcmdldEFuaW1hdGlvblJlY3Q7Ci0tIChOU1NpemUp
c2l6ZTsKLQotQGVuZAotCi0vLyBGSVhNRTogVGhpcyBjbGFzcyBuZWVkcyBpdHMgb3duIGhlYWRl
ciBhbmQgc291cmNlIGZpbGUuCi1AaW50ZXJmYWNlIFdlYlBERkRvY3VtZW50IDogTlNPYmplY3QK
LXsKLSAgICBDR1BERkRvY3VtZW50UmVmIF9kb2N1bWVudDsKLSAgICBDR1JlY3QgICAgICAgICAg
IF9tZWRpYUJveDsKLSAgICBOU1JlY3QgICAgICAgICAgIF9jcm9wQm94OwotICAgIGZsb2F0ICAg
ICAgICAgICAgX3JvdGF0aW9uOwotICAgIGludCAgICAgICAgICAgICAgX2N1cnJlbnRQYWdlOwot
fQotLSAoaWQpICAgICAgICAgICAgICAgaW5pdFdpdGhEYXRhOihOU0RhdGEqKWRhdGE7Ci0tIChD
R1BERkRvY3VtZW50UmVmKSBkb2N1bWVudFJlZjsKLS0gKENHUmVjdCkgICAgICAgICAgIG1lZGlh
Qm94OwotLSAoTlNSZWN0KSAgICAgICAgICAgYm91bmRzOyAvLyBhZGp1c3QgZm9yIHJvdGF0aW9u
Ci0tICh2b2lkKSAgICAgICAgICAgICBzZXRDdXJyZW50UGFnZTooaW50KXBhZ2U7Ci0tIChpbnQp
ICAgICAgICAgICAgICBjdXJyZW50UGFnZTsKLS0gKGludCkgICAgICAgICAgICAgIHBhZ2VDb3Vu
dDsKLS0gKHZvaWQpICAgICAgICAgICAgIGFkanVzdENUTTooQ0dDb250ZXh0UmVmKWNvbnRleHQ7
Ci1AZW5kCisjZXJyb3IKSW5kZXg6IFdlYktpdC9XZWJDb3JlU3VwcG9ydC9XZWJJbWFnZURlY29k
ZUl0ZW0ubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvV2ViQ29yZVN1cHBvcnQvV2ViSW1hZ2VEZWNv
ZGVJdGVtLm0JKHJldmlzaW9uIDE0NDE1KQorKysgV2ViS2l0L1dlYkNvcmVTdXBwb3J0L1dlYklt
YWdlRGVjb2RlSXRlbS5tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDY0ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDUgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxl
IENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4gCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQK
LSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2ltcG9ydCAiV2ViSW1hZ2VEZWNvZGVJdGVtLmgiCi0KLSNpbXBvcnQgIldlYkltYWdl
RGF0YS5oIgotCi1AaW1wbGVtZW50YXRpb24gV2ViSW1hZ2VEZWNvZGVJdGVtCi0KLSsgZGVjb2Rl
SXRlbVdpdGhJbWFnZTooV2ViSW1hZ2VEYXRhICopaW1nIGRhdGE6KENGRGF0YVJlZilkIGlzQ29t
cGxldGU6KEJPT0wpZiBjYWxsYmFjazooaWQpYwotewotICAgIHJldHVybiBbW1tXZWJJbWFnZURl
Y29kZUl0ZW0gYWxsb2NdIGluaXRXaXRoSW1hZ2U6aW1nIGRhdGE6ZCBpc0NvbXBsZXRlOmYgY2Fs
bGJhY2s6Y10gYXV0b3JlbGVhc2VdOwotfQotCi0tIGluaXRXaXRoSW1hZ2U6KFdlYkltYWdlRGF0
YSAqKWltZyBkYXRhOihDRkRhdGFSZWYpZCBpc0NvbXBsZXRlOihCT09MKWYgY2FsbGJhY2s6KGlk
KWMKLXsKLSAgICBzZWxmID0gW3N1cGVyIGluaXRdOwotICAgIGltYWdlRGF0YSA9IFtpbWcgcmV0
YWluXTsKLSAgICBjYWxsYmFjayA9IFtjIHJldGFpbl07Ci0gICAgZGF0YSA9IENGUmV0YWluIChk
KTsKLSAgICBpc0NvbXBsZXRlID0gZjsKLSAgICByZXR1cm4gc2VsZjsKLX0KLQotLSAodm9pZClm
aW5hbGl6ZQotewotICAgIENGUmVsZWFzZSAoZGF0YSk7Ci0gICAgW3N1cGVyIGZpbmFsaXplXTsK
LX0KLQotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgW2ltYWdlRGF0YSByZWxlYXNlXTsKLSAgICBb
Y2FsbGJhY2sgcmVsZWFzZV07Ci0gICAgQ0ZSZWxlYXNlIChkYXRhKTsKLSAgICBbc3VwZXIgZGVh
bGxvY107Ci19Ci0KLUBlbmQKSW5kZXg6IFdlYktpdC9XZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1J
bnRlcmZhY2UubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvV2ViQ29yZVN1cHBvcnQvV2ViU3lzdGVt
SW50ZXJmYWNlLm0JKHJldmlzaW9uIDE0NDE1KQorKysgV2ViS2l0L1dlYkNvcmVTdXBwb3J0L1dl
YlN5c3RlbUludGVyZmFjZS5tCSh3b3JraW5nIGNvcHkpCkBAIC01NSwxMSArNTUsMTMgQEAKICAg
ICBJTklUKEdldEdseXBoVmVjdG9yRmlyc3RSZWNvcmQpOwogICAgIElOSVQoR2V0R2x5cGhWZWN0
b3JOdW1HbHlwaHMpOwogICAgIElOSVQoR2V0R2x5cGhWZWN0b3JSZWNvcmRTaXplKTsKKyAgICBJ
TklUKEdldE1JTUVUeXBlRm9yRXh0ZW5zaW9uKTsKICAgICBJTklUKEdldE5TRm9udEFUU1VGb250
SWQpOwogICAgIElOSVQoSW5pdGlhbGl6ZUdseXBoVmVjdG9yKTsKICAgICBJTklUKFJlbGVhc2VT
dHlsZUdyb3VwKTsKICAgICBJTklUKFNldENHRm9udFJlbmRlcmluZ01vZGUpOwogICAgIElOSVQo
U2V0RHJhZ0ltYWdlKTsKKyAgICBJTklUKFNldFBhdHRlcm5QaGFzZUluVXNlclNwYWNlKTsKICAg
ICBJTklUKFNldFVwRm9udENhY2hlKTsKIAogICAgIGRpZEluaXQgPSB0cnVlOwpJbmRleDogV2Vi
S2l0L1dlYkNvcmVTdXBwb3J0L1dlYkltYWdlRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9X
ZWJDb3JlU3VwcG9ydC9XZWJJbWFnZURhdGEuaAkocmV2aXNpb24gMTQ0MTUpCisrKyBXZWJLaXQv
V2ViQ29yZVN1cHBvcnQvV2ViSW1hZ2VEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsOTIgKzEg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKLSAqIDMuICBOZWl0aGVyIHRoZSBu
YW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0g
KiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
LSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAq
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCA8Q29jb2EvQ29jb2EuaD4KLSNpbXBvcnQgPFdlYkNv
cmUvV2ViQ29yZUltYWdlUmVuZGVyZXIuaD4KLQotQGNsYXNzIFdlYkltYWdlUmVuZGVyZXI7Ci0K
LUBpbnRlcmZhY2UgV2ViSW1hZ2VEYXRhIDogTlNPYmplY3QgPE5TQ29weWluZz4KLXsKLSAgICBz
aXplX3QgaW1hZ2VzU2l6ZTsKLSAgICBDR0ltYWdlUmVmICppbWFnZXM7Ci0gICAgc2l6ZV90IGlt
YWdlUHJvcGVydGllc1NpemU7Ci0gICAgQ0ZEaWN0aW9uYXJ5UmVmIGZpbGVQcm9wZXJ0aWVzOwot
ICAgIENGRGljdGlvbmFyeVJlZiAqaW1hZ2VQcm9wZXJ0aWVzOwotICAgIENHSW1hZ2VTb3VyY2VS
ZWYgaW1hZ2VTb3VyY2U7Ci0KLSAgICBDR1NpemUgc2l6ZTsKLSAgICBCT09MIGhhdmVTaXplOwot
ICAgIAotICAgIENGTXV0YWJsZURpY3Rpb25hcnlSZWYgYW5pbWF0aW5nUmVuZGVyZXJzOwotICAg
IE5TVGltZXIgKmZyYW1lVGltZXI7Ci0KLSAgICBzaXplX3QgZnJhbWVEdXJhdGlvbnNTaXplOwot
ICAgIGZsb2F0ICpmcmFtZUR1cmF0aW9uczsKLSAgICAKLSAgICBzaXplX3QgY3VycmVudEZyYW1l
OwotICAgIGludCByZXBldGl0aW9uc0NvbXBsZXRlOwotICAgIEJPT0wgYW5pbWF0aW9uRmluaXNo
ZWQ7Ci0gICAgCi0gICAgTlNMb2NrICpkZWNvZGVMb2NrOwotICAgIAotICAgIGlkIF9QREZEb2M7
Ci0gICAgQk9PTCBpc1BERjsKLSAgICAKLSAgICBCT09MIGlzU29saWRDb2xvcjsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBJcyBmcmFtZSAwIGEgc29saWQgY29sb3I/Ci0gICAgQ0dD
b2xvclJlZiBzb2xpZENvbG9yOyAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgaXNTb2xp
ZENvbG9yIHRoaXMgaXMgdGhlIGNvbG9yLCBvciBOVUxMIGZvciB0cmFuc3BhcmVudAotICAgIAot
ICAgIEJPT0wgc2l6ZUF2YWlsYWJsZTsKLX0KLQotLSAoc2l6ZV90KW51bWJlck9mSW1hZ2VzOwot
LSAoQ0dJbWFnZVJlZilpbWFnZUF0SW5kZXg6KHNpemVfdClpbmRleDsKLS0gKEJPT0wpaW5jcmVt
ZW50YWxMb2FkV2l0aEJ5dGVzOihjb25zdCB2b2lkICopYnl0ZXMgbGVuZ3RoOih1bnNpZ25lZCls
ZW5ndGggY29tcGxldGU6KEJPT0wpaXNDb21wbGV0ZSBjYWxsYmFjazooaWQpYzsKLS0gKHZvaWQp
ZHJhd0ltYWdlQXRJbmRleDooc2l6ZV90KWluZGV4IGluUmVjdDooQ0dSZWN0KWlyIGZyb21SZWN0
OihDR1JlY3QpZnIgY29tcG9zaXRlT3BlcmF0aW9uOihOU0NvbXBvc2l0aW5nT3BlcmF0aW9uKW9w
IGNvbnRleHQ6KENHQ29udGV4dFJlZilhQ29udGV4dDsKLS0gKHZvaWQpZHJhd0ltYWdlQXRJbmRl
eDooc2l6ZV90KWluZGV4IGluUmVjdDooQ0dSZWN0KWlyIGZyb21SZWN0OihDR1JlY3QpZnIgYWRq
dXN0ZWRTaXplOihDR1NpemUpc2l6ZSBjb21wb3NpdGVPcGVyYXRpb246KE5TQ29tcG9zaXRpbmdP
cGVyYXRpb24pb3AgY29udGV4dDooQ0dDb250ZXh0UmVmKWFDb250ZXh0OwotLSAodm9pZCl0aWxl
SW5SZWN0OihDR1JlY3QpcmVjdCBmcm9tUG9pbnQ6KENHUG9pbnQpcG9pbnQgY29udGV4dDooQ0dD
b250ZXh0UmVmKWFDb250ZXh0OwotLSAodm9pZClzY2FsZUFuZFRpbGVJblJlY3Q6KENHUmVjdClp
ciBmcm9tUmVjdDooQ0dSZWN0KWZyIHdpdGhIb3Jpem9udGFsVGlsZVJ1bGU6KFdlYkltYWdlVGls
ZVJ1bGUpaFJ1bGUgd2l0aFZlcnRpY2FsVGlsZVJ1bGU6KFdlYkltYWdlVGlsZVJ1bGUpdlJ1bGUg
Y29udGV4dDooQ0dDb250ZXh0UmVmKWFDb250ZXh0OwotLSAoQk9PTClpc051bGw7Ci0tIChDR1Np
emUpc2l6ZTsKLS0gKHZvaWQpYW5pbWF0ZTsKLS0gKEJPT0wpc2hvdWxkQW5pbWF0ZTsKLSsgKHZv
aWQpc3RvcEFuaW1hdGlvbnNJblZpZXc6KE5TVmlldyAqKWFWaWV3OwotLSAodm9pZClhZGRBbmlt
YXRpbmdSZW5kZXJlcjooV2ViSW1hZ2VSZW5kZXJlciAqKXIgaW5WaWV3OihOU1ZpZXcgKil2aWV3
OwotLSAodm9pZClyZW1vdmVBbmltYXRpbmdSZW5kZXJlcjooV2ViSW1hZ2VSZW5kZXJlciAqKXNl
bGY7Ci0tIChCT09MKWlzQW5pbWF0aW9uRmluaXNoZWQ7Ci0tIChzaXplX3QpY3VycmVudEZyYW1l
OwotLSAoQ0ZEaWN0aW9uYXJ5UmVmKXByb3BlcnRpZXNBdEluZGV4OihzaXplX3QpaW5kZXg7Ci0K
LS0gKHZvaWQpZGVjb2RlRGF0YTooQ0ZEYXRhUmVmKWRhdGEgaXNDb21wbGV0ZTooQk9PTClmIGNh
bGxiYWNrOihpZCljOwotCi0tICh2b2lkKXNldElzUERGOihCT09MKWY7Ci0tIChCT09MKWlzUERG
OwotCi0tICh2b2lkKXJlc2V0QW5pbWF0aW9uOwotCi1AZW5kCisjZXJyb3IKSW5kZXg6IFdlYktp
dC9XZWJDb3JlU3VwcG9ydC9XZWJJbWFnZURlY29kZXIubQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQv
V2ViQ29yZVN1cHBvcnQvV2ViSW1hZ2VEZWNvZGVyLm0JKHJldmlzaW9uIDE0NDE1KQorKysgV2Vi
S2l0L1dlYkNvcmVTdXBwb3J0L1dlYkltYWdlRGVjb2Rlci5tCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMwOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA1IEFwcGxlIENvbXB1dGVyLCBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCi0gKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCi0gKiAzLiAgTmVp
dGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBu
YW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwot
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgIldlYkltYWdlRGVjb2Rlci5oIgot
Ci0jaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9Bc3NlcnRpb25zLmg+Ci0jaW1wb3J0ICJXZWJJbWFn
ZURhdGEuaCIKLQotQGludGVyZmFjZSBXZWJJbWFnZUNhbGxiYWNrIDogTlNPYmplY3QKLS0gKHZv
aWQpbm90aWZ5OwotLSAodm9pZClzZXRJbWFnZVNvdXJjZVN0YXR1czooQ0dJbWFnZVNvdXJjZVN0
YXR1cylzdGF0dXM7Ci0tIChDR0ltYWdlU291cmNlU3RhdHVzKXN0YXR1czsKLUBlbmQKLQotCi1A
aW1wbGVtZW50YXRpb24gV2ViSW1hZ2VEZWNvZGVyCi0KLSNkZWZpbmUgQ09ORElUSU9OX05FV19J
VEVNX1RPX0RFQ09ERSAxCi0jZGVmaW5lIENPTkRJVElPTl9DSEVDS0VEX0ZPUl9JVEVNUyAyCi0K
LXN0YXRpYyB2b2lkIHN0YXJ0RGVjb2RlclRocmVhZCh2b2lkKTsKLXN0YXRpYyB2b2lkICpkZWNv
ZGVyVGhyZWFkKHZvaWQgKmFyZyk7Ci0KLXN0YXRpYyBDRlJ1bkxvb3BTb3VyY2VSZWYgZGVjb2Rl
ck1haW5UaHJlYWRTb3VyY2U7Ci1zdGF0aWMgQ0ZSdW5Mb29wUmVmIG1haW5SdW5Mb29wOwotCi0v
LyBEb24ndCBzZW5kIHBhcnRpYWwgaW1hZ2UgdXBkYXRlIG5vdGlmaWNhdGlvbnMgbW9yZSB0aGFu
Ci0vLyBldmVyeSBQQVJUSUFMX0lNQUdFX1VQREFURV9JTlRFUlZBTCBzZWNvbmRzLiAgVGhlIGlz
Ci0vLyBhIGdsb2JhbCB1cGRhdGUgaW50ZXJ2YWwgZm9yIGFsbCBwYWdlcyBpbiBhbGwgd2luZG93
cy4KLS8vIFRoZSB1cGRhdGUgbm90aWZpY2F0aW9uIHdpbGwgdHJpZ2dlciBhIHBhaW50LCBzbyBn
b3Zlcm5pbmcKLS8vIHRoZSBub3RpZmljYXRpb24gbGltaXRzIHRoZSBudW1iZXIgb2YgaW50ZXJt
ZWRpYXRlIHBhaW50cwotLy8gZm9yIHByb2dyZXNzaXZlIGltYWdlcy4gIE5vdCBzZW5kaW5nIGEg
cGFydGlhbAotLy8gdXBkYXRlIGlzIGhhcm1sZXNzLgotLy8KLS8vIE5vdGUgdGhlIGNvbXBsZXRl
ZCBub3RpZmljYXRpb25zIGFyZSBhbHdheXMgc2VudCBpbW1lZGlhdGVseSwKLS8vIHNvLCB0aGUg
UEFSVElBTF9JTUFHRV9VUERBVEVfSU5URVJWQUwgd2lsbCBub3QgZXZlciBkZWxheQotLy8gZHJh
d2luZyBvZiB0aGUgY29tcGxldGVseSBkZWNvZGVkIGltYWdlLgotLy8KLS8vIFdlIG1heSB3YW50
IHRvIG1ha2UgdGhpcyBpbnRlcnZhbCBkeW5hbWljIGJhc2VkIG9uIHNwZWVkIG9mIHRoZSAKLS8v
IG1hY2hpbmUuICAKLSNkZWZpbmUgUEFSVElBTF9JTUFHRV9VUERBVEVfSU5URVJWQUwgMC4yCi0K
LXN0YXRpYyBkb3VibGUgbGFzdFBhcnRpYWxJbWFnZVVwZGF0ZTsKLQotc3RhdGljIHZvaWQgZGVj
b2Rlck5vdGlmaWNhdGlvbnModm9pZCAqaW5mbyk7Ci1zdGF0aWMgdm9pZCBkZWNvZGVyTm90aWZp
Y2F0aW9ucyh2b2lkICppbmZvKQotewotICAgIFdlYkltYWdlRGVjb2RlciAqZGVjb2RlciA9IFtX
ZWJJbWFnZURlY29kZXIgc2hhcmVkRGVjb2Rlcl07Ci0gCi0gICAgQVNTRVJUIChtYWluUnVuTG9v
cCA9PSBDRlJ1bkxvb3BHZXRDdXJyZW50KCkpOwotICAgCi0gICAgW2RlY29kZXItPmNvbXBsZXRl
ZEl0ZW1zTG9jayBsb2NrXTsKLSAgICAKLSAgICB1bnNpZ25lZCBpLCBjb3VudCA9IFtkZWNvZGVy
LT5jb21wbGV0ZWRJdGVtcyBjb3VudF07Ci0gICAgV2ViSW1hZ2VDYWxsYmFjayAqY2FsbGJhY2s7
Ci0gICAgZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKLSAgICAgICAgY2FsbGJhY2sgPSBb
ZGVjb2Rlci0+Y29tcGxldGVkSXRlbXMgb2JqZWN0QXRJbmRleDppXTsKLSAgICAgICAgaWYgKFtj
YWxsYmFjayBzdGF0dXNdIDw9IGtDR0ltYWdlU3RhdHVzSW5jb21wbGV0ZSkgewotICAgICAgICAg
ICAgZG91YmxlIG5vdyA9IENGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpOwotICAgICAgICAgICAg
aWYgKGxhc3RQYXJ0aWFsSW1hZ2VVcGRhdGUgIT0gMCAmJiBsYXN0UGFydGlhbEltYWdlVXBkYXRl
ICsgUEFSVElBTF9JTUFHRV9VUERBVEVfSU5URVJWQUwgPiBub3cpCi0gICAgICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgICAgICBsYXN0UGFydGlhbEltYWdlVXBkYXRlID0gbm93OwotICAg
ICAgICB9Ci0gICAgICAgIFtjYWxsYmFjayBub3RpZnldOwotICAgIH0KLSAgICBbZGVjb2Rlci0+
Y29tcGxldGVkSXRlbXMgcmVtb3ZlQWxsT2JqZWN0c107Ci0gICAgCi0gICAgW2RlY29kZXItPmNv
bXBsZXRlZEl0ZW1zTG9jayB1bmxvY2tdOwotfQotCi0rICh2b2lkKWluaXRpYWxpemUKLXsKLSAg
ICAvLyBBc3N1bWVzIHdlIGFyZSBiZWluZyBjYWxsZWQgZnJvbSBtYWluIHRocmVhZC4KLQotICAg
IC8vIENyZWF0ZSBzaGFyZWQgZGVjb2Rlci4KLSAgICBbV2ViSW1hZ2VEZWNvZGVyIHNoYXJlZERl
Y29kZXJdOwotICAgIAotICAgIC8vIEFkZCBydW4gbG9vcCBzb3VyY2UgdG8gcmVjZWl2ZSBub3Rp
ZmljYXRpb25zIHdoZW4gZGVjb2RpbmcgaGFzIGNvbXBsZXRlZC4KLSAgICBtYWluUnVuTG9vcCA9
IENGUnVuTG9vcEdldEN1cnJlbnQoKTsKLSAgICBDRlJ1bkxvb3BTb3VyY2VDb250ZXh0IHNvdXJj
ZUNvbnRleHQgPSB7MCwgc2VsZiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwg
TlVMTCwgZGVjb2Rlck5vdGlmaWNhdGlvbnN9OwotICAgIGRlY29kZXJNYWluVGhyZWFkU291cmNl
ID0gQ0ZSdW5Mb29wU291cmNlQ3JlYXRlKE5VTEwsIDAsICZzb3VyY2VDb250ZXh0KTsKLSAgICBD
RlJ1bkxvb3BBZGRTb3VyY2UobWFpblJ1bkxvb3AsIGRlY29kZXJNYWluVGhyZWFkU291cmNlLCBr
Q0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwotICAgIAotICAgIHN0YXJ0RGVjb2RlclRocmVhZCgpOwot
fQotCi0rICh2b2lkKW5vdGlmeU1haW5UaHJlYWQKLXsKLSAgICBDRlJ1bkxvb3BTb3VyY2VTaWdu
YWwoZGVjb2Rlck1haW5UaHJlYWRTb3VyY2UpOwotICAgIGlmIChDRlJ1bkxvb3BJc1dhaXRpbmco
bWFpblJ1bkxvb3ApKQotICAgICAgICBDRlJ1bkxvb3BXYWtlVXAobWFpblJ1bkxvb3ApOwotfQot
Ci0rIChXZWJJbWFnZURlY29kZXIgKilzaGFyZWREZWNvZGVyCi17Ci0gICAgc3RhdGljIFdlYklt
YWdlRGVjb2RlciAqc2hhcmVkRGVjb2RlciA9IDA7Ci0gICAgCi0gICAgaWYgKCFzaGFyZWREZWNv
ZGVyKQotICAgICAgICBzaGFyZWREZWNvZGVyID0gW1tXZWJJbWFnZURlY29kZXIgYWxsb2NdIGlu
aXRdOwotICAgIAotICAgIHJldHVybiBzaGFyZWREZWNvZGVyOwotfQotCi0rICh2b2lkKXBlcmZv
cm1EZWNvZGVXaXRoSW1hZ2U6KFdlYkltYWdlRGF0YSAqKWltZyBkYXRhOihDRkRhdGFSZWYpZCBp
c0NvbXBsZXRlOihCT09MKWYgY2FsbGJhY2s6KGlkKWMKLXsKLSAgICBXZWJJbWFnZURlY29kZUl0
ZW0gKml0ZW0gPSBbV2ViSW1hZ2VEZWNvZGVJdGVtIGRlY29kZUl0ZW1XaXRoSW1hZ2U6aW1nIGRh
dGE6ZCBpc0NvbXBsZXRlOihCT09MKWYgY2FsbGJhY2s6Y107Ci0gICAgW1tXZWJJbWFnZURlY29k
ZXIgc2hhcmVkRGVjb2Rlcl0gYWRkSXRlbTppdGVtXTsKLX0KLQotKyAoQk9PTClpc0ltYWdlRGVj
b2RlUGVuZGluZzooV2ViSW1hZ2VEYXRhICopaW1nOwotewotICAgIFdlYkltYWdlRGVjb2RlciAq
ZGVjb2RlciA9IFtXZWJJbWFnZURlY29kZXIgc2hhcmVkRGVjb2Rlcl07Ci0gICAgCi0gICAgW2Rl
Y29kZXItPml0ZW1Mb2NrIGxvY2tdOwotICAgIEJPT0wgcmVzdWx0ID0gQ0ZEaWN0aW9uYXJ5R2V0
VmFsdWUgKGRlY29kZXItPml0ZW1zLCBpbWcpID8gWUVTIDogTk87Ci0gICAgW2RlY29kZXItPml0
ZW1Mb2NrIHVubG9ja107Ci0gICAgCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotKyAoQk9PTClp
bWFnZURlY29kZXNQZW5kaW5nCi17Ci0gICAgV2ViSW1hZ2VEZWNvZGVyICpkZWNvZGVyID0gW1dl
YkltYWdlRGVjb2RlciBzaGFyZWREZWNvZGVyXTsKLQotICAgIFtkZWNvZGVyLT5pdGVtTG9jayBs
b2NrXTsKLSAgICBCT09MIHJlc3VsdCA9IENGRGljdGlvbmFyeUdldENvdW50KGRlY29kZXItPml0
ZW1zKSA+IDAgPyBZRVMgOiBOTzsKLSAgICBbZGVjb2Rlci0+aXRlbUxvY2sgdW5sb2NrXTsKLSAg
ICAKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0rICh2b2lkKWRlY29kZUNvbXBsZXRlOihpZClj
IHN0YXR1czooQ0dJbWFnZVNvdXJjZVN0YXR1cylpbWFnZVN0YXR1cwotewotICAgIFdlYkltYWdl
RGVjb2RlciAqZGVjb2RlciA9IFtXZWJJbWFnZURlY29kZXIgc2hhcmVkRGVjb2Rlcl07Ci0gICAg
V2ViSW1hZ2VDYWxsYmFjayAqY2FsbGJhY2sgPSAoV2ViSW1hZ2VDYWxsYmFjayAqKWM7Ci0gICAg
W2Mgc2V0SW1hZ2VTb3VyY2VTdGF0dXM6aW1hZ2VTdGF0dXNdOwotICAgIAotICAgIFtkZWNvZGVy
LT5jb21wbGV0ZWRJdGVtc0xvY2sgbG9ja107Ci0gICAgW2RlY29kZXItPmNvbXBsZXRlZEl0ZW1z
IGFkZE9iamVjdDpjYWxsYmFja107Ci0gICAgW2RlY29kZXItPmNvbXBsZXRlZEl0ZW1zTG9jayB1
bmxvY2tdOwotCi0gICAgW1dlYkltYWdlRGVjb2RlciBub3RpZnlNYWluVGhyZWFkXTsKLX0KLQot
Ci0tIGluaXQKLXsKLSAgICBzZWxmID0gW3N1cGVyIGluaXRdOwotICAgIGl0ZW1zID0gQ0ZEaWN0
aW9uYXJ5Q3JlYXRlTXV0YWJsZShOVUxMLCAwLCBOVUxMLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1
ZUNhbGxCYWNrcyk7Ci0gICAgaXRlbUxvY2sgPSBbW05TQ29uZGl0aW9uTG9jayBhbGxvY10gaW5p
dF07Ci0gICAgY29tcGxldGVkSXRlbXMgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XTsK
LSAgICBjb21wbGV0ZWRJdGVtc0xvY2sgPSBbW05TTG9jayBhbGxvY10gaW5pdF07Ci0gICAgcmV0
dXJuIHNlbGY7Ci19Ci0KLS0gKHZvaWQpZGVhbGxvYwotewotICAgIENGUmVsZWFzZSAoaXRlbXMp
OwotICAgIFtpdGVtTG9jayByZWxlYXNlXTsKLSAgICBbY29tcGxldGVkSXRlbXMgcmVsZWFzZV07
Ci0gICAgW2NvbXBsZXRlZEl0ZW1zTG9jayByZWxlYXNlXTsKLSAgICBbc3VwZXIgZGVhbGxvY107
Ci19Ci0KLS0gKHZvaWQpZmluYWxpemUKLXsKLSAgICBDRlJlbGVhc2UgKGl0ZW1zKTsKLSAgICBb
c3VwZXIgZmluYWxpemVdOwotfQotCi0jZGVmaW5lIElURU1fU1RBQ0tfQlVGRkVSX1NJWkUgMTI4
Ci0KLS0gKFdlYkltYWdlRGVjb2RlSXRlbSAqKXJlbW92ZUl0ZW0KLXsKLSAgICBBU1NFUlQgKG1h
aW5SdW5Mb29wICE9IENGUnVuTG9vcEdldEN1cnJlbnQoKSk7Ci0KLSAgICBXZWJJbWFnZURlY29k
ZUl0ZW0gKml0ZW0gPSAwOwotICAgIAotICAgIFtpdGVtTG9jayBsb2NrXTsKLSAgICAKLSAgICBD
RkluZGV4IGNvdW50ID0gQ0ZEaWN0aW9uYXJ5R2V0Q291bnQoaXRlbXMpOwotICAgIGlmIChjb3Vu
dCkgewotICAgICAgICBXZWJJbWFnZURhdGEgKl9rZXlzW0lURU1fU1RBQ0tfQlVGRkVSX1NJWkVd
LCAqKmtleXM7Ci0gICAgICAgIFdlYkltYWdlRGVjb2RlSXRlbSAqX3ZhbHVlc1tJVEVNX1NUQUNL
X0JVRkZFUl9TSVpFXSwgKip2YWx1ZXM7Ci0gICAgICAgIGlmIChjb3VudCA+IElURU1fU1RBQ0tf
QlVGRkVSX1NJWkUpIHsKLSAgICAgICAgICAgIGtleXMgPSAoV2ViSW1hZ2VEYXRhICoqKW1hbGxv
Yyhjb3VudCAqIHNpemVvZihXZWJJbWFnZURhdGEgKikpOwotICAgICAgICAgICAgdmFsdWVzID0g
KFdlYkltYWdlRGVjb2RlSXRlbSAqKiltYWxsb2MoY291bnQgKiBzaXplb2YoV2ViSW1hZ2VEZWNv
ZGVJdGVtICopKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGtleXMg
PSBfa2V5czsKLSAgICAgICAgICAgIHZhbHVlcyA9IF92YWx1ZXM7Ci0gICAgICAgIH0KLSAgICAg
ICAgQ0ZEaWN0aW9uYXJ5R2V0S2V5c0FuZFZhbHVlcyAoaXRlbXMsIChjb25zdCB2b2lkICoqKWtl
eXMsIChjb25zdCB2b2lkICoqKXZhbHVlcyk7Ci0gICAgICAgIAotICAgICAgICBpdGVtID0gX3Zh
bHVlc1swXTsKLQotICAgICAgICBDRkRpY3Rpb25hcnlSZW1vdmVWYWx1ZSAoaXRlbXMsIF9rZXlz
WzBdKTsKLSAgICAgICAgCi0gICAgICAgIGlmIChrZXlzICE9IF9rZXlzKSB7Ci0gICAgICAgICAg
ICBmcmVlIChrZXlzKTsKLSAgICAgICAgICAgIGZyZWUgKHZhbHVlcyk7Ci0gICAgICAgIH0KLSAg
ICB9Ci0gICAgW2l0ZW1Mb2NrIHVubG9ja107Ci0gICAgCi0gICAgLy8gSWYgd2UgaGF2ZSBubyBp
dGVtIGJsb2NrIHVudGlsIHdlIGhhdmUgYSBuZXcgaXRlbS4KLSAgICBpZiAoIWl0ZW0pIHsKLSAg
ICAgICAgW2l0ZW1Mb2NrIGxvY2tXaGVuQ29uZGl0aW9uOkNPTkRJVElPTl9ORVdfSVRFTV9UT19E
RUNPREVdOwotICAgICAgICBbaXRlbUxvY2sgdW5sb2NrV2l0aENvbmRpdGlvbjpDT05ESVRJT05f
Q0hFQ0tFRF9GT1JfSVRFTVNdOwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gaXRlbTsKLX0KLQot
LSAodm9pZClhZGRJdGVtOihXZWJJbWFnZURlY29kZUl0ZW0gKilpdGVtCi17Ci0gICAgQVNTRVJU
IChtYWluUnVuTG9vcCA9PSBDRlJ1bkxvb3BHZXRDdXJyZW50KCkpOwotCi0gICAgW2l0ZW1Mb2Nr
IGxvY2tdOwotICAgIAotICAgIC8vIEFkZCBhZGRpdGlvbmFsIHJlZmVyZW5jZSBoZXJlIHRvIGVu
c3VyZSB0aGF0IHRoZSBtYWluIHRocmVhZCdzIHBvb2wKLSAgICAvLyBkb2Vzbid0IHJlbGVhc2Ug
dGhlIGl0ZW0uICBJdCBoYXMgdG8gc3RpY2sgYXJvdW5kIGxvbmcgZW5vdWdoIGZvcgotICAgIC8v
IHRoZSBkZWNvZGUgdGhyZWFkIHRvIHByb2Nlc3MgaXQuICBUaGUgZGVjb2RlciB0aHJlYWQgd2ls
bCByZW1vdmUKLSAgICAvLyB0aGUgZXh0cmEgcmVmZXJlbmNlLgotICAgIFtpdGVtIHJldGFpbl07
Ci0gICAgCi0gICAgLy8gSWYgYSBwcmlvciBkZWNvZGUgaXRlbSB3YXMgYWxyZWFkeSByZXF1ZXN0
ZWQKLSAgICAvLyBmb3IgdGhlIGltYWdlLCByZW1vdmUgaXQuICBUaGUgbmV3IGl0ZW0gd2lsbCBo
YXZlIG1vcmUKLSAgICAvLyBkYXRhLiAgTmVjZXNzYXJ5IGJlY2F1c2UgQ0ZEaWN0aW9uYXJ5QWRk
VmFsdWUgaGFzIGEgCi0gICAgLy8gImFkZCBpZiBhYnNlbnQiIHBvbGljeS4KLSAgICBXZWJJbWFn
ZURlY29kZUl0ZW0gKnJlcGxhY2VtZW50SXRlbSA9IChXZWJJbWFnZURlY29kZUl0ZW0gKilDRkRp
Y3Rpb25hcnlHZXRWYWx1ZSAoaXRlbXMsIGl0ZW0tPmltYWdlRGF0YSk7Ci0gICAgaWYgKHJlcGxh
Y2VtZW50SXRlbSkgewotICAgICAgICBDRkRpY3Rpb25hcnlSZW1vdmVWYWx1ZSAoaXRlbXMsIGl0
ZW0tPmltYWdlRGF0YSk7Ci0gICAgICAgIC8vIFJlbW92ZSBhZGRpdGlvbmFsIHJlZmVyZW5jZSBp
bmNyZW1lbnQgd2hlbiBpdGVtIHdhcyBhZGRlZC4KLSAgICAgICAgW3JlcGxhY2VtZW50SXRlbSBy
ZWxlYXNlXTsKLSAgICB9Ci0KLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZSAoaXRlbXMsIGl0ZW0t
PmltYWdlRGF0YSwgaXRlbSk7Ci0gICAgICAgIAotICAgIFtpdGVtTG9jayB1bmxvY2tXaXRoQ29u
ZGl0aW9uOkNPTkRJVElPTl9ORVdfSVRFTV9UT19ERUNPREVdOwotfQotCi0tICh2b2lkKWRlY29k
ZUl0ZW06KFdlYkltYWdlRGVjb2RlSXRlbSAqKWl0ZW0KLXsKLSAgICBBU1NFUlQgKG1haW5SdW5M
b29wICE9IENGUnVuTG9vcEdldEN1cnJlbnQoKSk7Ci0KLSAgICBbaXRlbS0+aW1hZ2VEYXRhIGRl
Y29kZURhdGE6aXRlbS0+ZGF0YSBpc0NvbXBsZXRlOml0ZW0tPmlzQ29tcGxldGUgY2FsbGJhY2s6
aXRlbS0+Y2FsbGJhY2tdOwotCi0gICAgLy8gUmVtb3ZlIGFkZGl0aW9uYWwgcmVmZXJlbmNlIGlu
Y3JlbWVudGVkIHdoZW4gaXRlbSB3YXMgYWRkZWQuCi0gICAgW2l0ZW0gcmVsZWFzZV07Ci19Ci0K
LUBlbmQKLQotc3RhdGljIHZvaWQgKmRlY29kZXJUaHJlYWQodm9pZCAqYXJnKQoteyAgICAKLSAg
ICBXZWJJbWFnZURlY29kZXIgKmRlY29kZXIgPSBbV2ViSW1hZ2VEZWNvZGVyIHNoYXJlZERlY29k
ZXJdOwotICAgIFdlYkltYWdlRGVjb2RlSXRlbSAqaXRlbTsKLSAgICAKLSAgICB3aGlsZSAodHJ1
ZSkgewotICAgICAgICBOU0F1dG9yZWxlYXNlUG9vbCAqcG9vbCA9IFtbTlNBdXRvcmVsZWFzZVBv
b2wgYWxsb2NdIGluaXRdOwotCi0gICAgICAgIGl0ZW0gPSBbZGVjb2RlciByZW1vdmVJdGVtXTsK
LSAgICAgICAgaWYgKGl0ZW0pIHsKLSAgICAgICAgICAgIFtkZWNvZGVyIGRlY29kZUl0ZW06aXRl
bV07Ci0gICAgICAgIH0KLQotICAgICAgICBbcG9vbCByZWxlYXNlXTsKLSAgICB9Ci0gICAgCi0g
ICAgcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyB2b2lkIHN0YXJ0RGVjb2RlclRocmVhZCh2b2lkKQot
ewotICAgIHB0aHJlYWRfYXR0cl90IGF0dHI7Ci0gICAgcHRocmVhZF90IHRpZDsKLSAgICBwdGhy
ZWFkX2F0dHJfaW5pdCgmYXR0cik7Ci0gICAgcHRocmVhZF9hdHRyX3NldHNjb3BlKCZhdHRyLCBQ
VEhSRUFEX1NDT1BFX1NZU1RFTSk7Ci0gICAgcHRocmVhZF9hdHRyX3NldGRldGFjaHN0YXRlKCZh
dHRyLCBQVEhSRUFEX0NSRUFURV9ERVRBQ0hFRCk7Ci0gICAgcHRocmVhZF9jcmVhdGUoJnRpZCwg
JmF0dHIsIGRlY29kZXJUaHJlYWQsIDApOwotICAgIHB0aHJlYWRfYXR0cl9kZXN0cm95KCZhdHRy
KTsKLX0KSW5kZXg6IFdlYktpdC9XZWJDb3JlU3VwcG9ydC9XZWJJbWFnZVJlbmRlcmVyLm0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L1dlYkNvcmVTdXBwb3J0L1dlYkltYWdlUmVuZGVyZXIubQkocmV2
aXNpb24gMTQ0MTUpCisrKyBXZWJLaXQvV2ViQ29yZVN1cHBvcnQvV2ViSW1hZ2VSZW5kZXJlci5t
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDM5NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDA1IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4gCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4gCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5j
LiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBm
cm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uIAotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQg
PFdlYktpdC9XZWJJbWFnZVJlbmRlcmVyLmg+Ci0KLSNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZUlt
YWdlUmVuZGVyZXIuaD4KLSNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0Fzc2VydGlvbnMuaD4KLSNp
bXBvcnQgPFdlYktpdC9XZWJIVE1MVmlldy5oPgotI2ltcG9ydCA8V2ViS2l0L1dlYkltYWdlRGF0
YS5oPgotI2ltcG9ydCA8V2ViS2l0L1dlYkltYWdlUmVuZGVyZXJGYWN0b3J5Lmg+Ci0jaW1wb3J0
IDxXZWJLaXQvV2ViTlNPYmplY3RFeHRyYXMuaD4KLSNpbXBvcnQgPFdlYktpdFN5c3RlbUludGVy
ZmFjZS5oPgotCi0vLyBGb3J3YXJkIGRlY2xhcmF0aW9ucyBvZiBpbnRlcm5hbCBtZXRob2RzLgot
QGludGVyZmFjZSBXZWJJbWFnZVJlbmRlcmVyIChXZWJJbnRlcm5hbCkKLS0gKHZvaWQpX3N0YXJ0
T3JDb250aW51ZUFuaW1hdGlvbklmTmVjZXNzYXJ5OwotQGVuZAotCi1AaW1wbGVtZW50YXRpb24g
V2ViSW1hZ2VSZW5kZXJlcgotCi0tIChpZClpbml0V2l0aE1JTUVUeXBlOihOU1N0cmluZyAqKU1J
TUUKLXsKLSAgICBzZWxmID0gW3N1cGVyIGluaXRdOwotICAgIGlmIChzZWxmICE9IG5pbCkgewot
ICAgICAgICBNSU1FVHlwZSA9IFtNSU1FIGNvcHldOwotICAgIH0KLSAgICByZXR1cm4gc2VsZjsK
LX0KLQotLSAoaWQpaW5pdFdpdGhEYXRhOihOU0RhdGEgKilkYXRhIE1JTUVUeXBlOihOU1N0cmlu
ZyAqKU1JTUUKLXsKLSAgICBzZWxmID0gW3N1cGVyIGluaXRdOwotICAgIGlmIChzZWxmICE9IG5p
bCkgewotICAgICAgICBNSU1FVHlwZSA9IFtNSU1FIGNvcHldOwotICAgICAgICBpbWFnZURhdGEg
PSBbW1dlYkltYWdlRGF0YSBhbGxvY10gaW5pdF07Ci0gICAgICAgIFtpbWFnZURhdGEgaW5jcmVt
ZW50YWxMb2FkV2l0aEJ5dGVzOltkYXRhIGJ5dGVzXSBsZW5ndGg6W2RhdGEgbGVuZ3RoXSBjb21w
bGV0ZTpZRVMgY2FsbGJhY2s6MF07Ci0gICAgfQotICAgIHJldHVybiBzZWxmOwotfQotCi0tIChp
ZClpbml0V2l0aENvbnRlbnRzT2ZGaWxlOihOU1N0cmluZyAqKWZpbGVuYW1lCi17Ci0gICAgc2Vs
ZiA9IFtzdXBlciBpbml0XTsKLQotICAgIE5TQnVuZGxlICpidW5kbGUgPSBbTlNCdW5kbGUgYnVu
ZGxlRm9yQ2xhc3M6W3NlbGYgY2xhc3NdXTsKLSAgICBOU1N0cmluZyAqaW1hZ2VQYXRoID0gW2J1
bmRsZSBwYXRoRm9yUmVzb3VyY2U6ZmlsZW5hbWUgb2ZUeXBlOkAidGlmZiJdOwotCi0gICAgaW1h
Z2VEYXRhID0gW1tXZWJJbWFnZURhdGEgYWxsb2NdIGluaXRdOwotICAgIE5TRGF0YSAqZGF0YSA9
IFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mRmlsZTppbWFnZVBhdGhdOwotICAgIFtpbWFnZURh
dGEgaW5jcmVtZW50YWxMb2FkV2l0aEJ5dGVzOltkYXRhIGJ5dGVzXSBsZW5ndGg6W2RhdGEgbGVu
Z3RoXSBjb21wbGV0ZTpZRVMgY2FsbGJhY2s6MF07Ci0gICAgICAgIAotCi0gICAgcmV0dXJuIHNl
bGY7Ci19Ci0KLS0gKHZvaWQpZGVhbGxvYwotewotICAgIFtNSU1FVHlwZSByZWxlYXNlXTsKLSAg
ICBbaW1hZ2VEYXRhIHJlbGVhc2VdOwotICAgIFtuc2ltYWdlIHJlbGVhc2VdOwotICAgIFtUSUZG
RGF0YSByZWxlYXNlXTsKLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLS0gY29weVdpdGhab25l
OihOU1pvbmUgKil6b25lCi17Ci0gICAgV2ViSW1hZ2VSZW5kZXJlciAqY29weTsKLQotICAgIGNv
cHkgPSBbW1dlYkltYWdlUmVuZGVyZXIgYWxsb2NdIGluaXRdOwotICAgIGNvcHktPk1JTUVUeXBl
ID0gW01JTUVUeXBlIGNvcHldOwotICAgIGNvcHktPmltYWdlRGF0YSA9IFtpbWFnZURhdGEgcmV0
YWluXTsKLSAgICAgICAgCi0gICAgcmV0dXJuIGNvcHk7Ci19Ci0KLS0gKGlkIDxXZWJDb3JlSW1h
Z2VSZW5kZXJlcj4pcmV0YWluT3JDb3B5SWZOZWVkZWQKLXsKLSAgICByZXR1cm4gW3NlbGYgY29w
eVdpdGhab25lOjBdOwotfQotCi0tIChOU1NpemUpc2l6ZQotewotICAgIGlmICghaW1hZ2VEYXRh
KQotICAgICAgICByZXR1cm4gTlNaZXJvU2l6ZTsKLQotICAgIENHU2l6ZSBzeiA9IFtpbWFnZURh
dGEgc2l6ZV07Ci0gICAgcmV0dXJuIE5TTWFrZVNpemUoc3oud2lkdGgsIHN6LmhlaWdodCk7Ci19
Ci0KLS0gKE5TU3RyaW5nICopTUlNRVR5cGUKLXsKLSAgICByZXR1cm4gTUlNRVR5cGU7Ci19Ci0K
LS0gKGludClmcmFtZUNvdW50Ci17Ci0gICAgcmV0dXJuIFtpbWFnZURhdGEgbnVtYmVyT2ZJbWFn
ZXNdOwotfQotCi0KLS0gKEJPT0wpaXNOdWxsCi17Ci0gICAgcmV0dXJuIFtpbWFnZURhdGEgaXNO
dWxsXTsKLX0KLQotLSAoQk9PTClpbmNyZW1lbnRhbExvYWRXaXRoQnl0ZXM6KGNvbnN0IHZvaWQg
KilieXRlcyBsZW5ndGg6KHVuc2lnbmVkKWxlbmd0aCBjb21wbGV0ZTooQk9PTClpc0NvbXBsZXRl
IGNhbGxiYWNrOihpZCljCi17Ci0gICAgaWYgKCFpbWFnZURhdGEpIHsKLSAgICAgICAgaW1hZ2VE
YXRhID0gW1tXZWJJbWFnZURhdGEgYWxsb2NdIGluaXRdOwotICAgICAgICBpZiAoW01JTUVUeXBl
IGlzRXF1YWw6QCJhcHBsaWNhdGlvbi9wZGYiXSkgewotICAgICAgICAgICAgW2ltYWdlRGF0YSBz
ZXRJc1BERjpZRVNdOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBbaW1hZ2VEYXRhIGlu
Y3JlbWVudGFsTG9hZFdpdGhCeXRlczpieXRlcyBsZW5ndGg6bGVuZ3RoIGNvbXBsZXRlOmlzQ29t
cGxldGUgY2FsbGJhY2s6Y107Ci19Ci0KLS0gKHZvaWQpZHJhd0ltYWdlSW5SZWN0OihOU1JlY3Qp
aXIgZnJvbVJlY3Q6KE5TUmVjdClmcgotewotICAgIENHQ29udGV4dFJlZiBhQ29udGV4dCA9IChD
R0NvbnRleHRSZWYpW1tOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF0gZ3JhcGhpY3NQ
b3J0XTsKLSAgICBOU0NvbXBvc2l0aW5nT3BlcmF0aW9uIG9wID0gTlNDb21wb3NpdGVTb3VyY2VP
dmVyOwotCi0gICAgW3NlbGYgZHJhd0ltYWdlSW5SZWN0OmlyIGZyb21SZWN0OmZyIGNvbXBvc2l0
ZU9wZXJhdG9yOm9wIGNvbnRleHQ6YUNvbnRleHRdOwotfQotCi0tICh2b2lkKWRyYXdJbWFnZUlu
UmVjdDooTlNSZWN0KWlyIGZyb21SZWN0OihOU1JlY3QpZnIgY29tcG9zaXRlT3BlcmF0b3I6KE5T
Q29tcG9zaXRpbmdPcGVyYXRpb24pb3BlcmF0b3IgY29udGV4dDooQ0dDb250ZXh0UmVmKWFDb250
ZXh0Ci17Ci0gICAgaWYgKGFDb250ZXh0ID09IDApCi0gICAgICAgIGFDb250ZXh0ID0gKENHQ29u
dGV4dFJlZilbW05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XSBncmFwaGljc1BvcnRd
OwotCi0gICAgW2ltYWdlRGF0YSBkcmF3SW1hZ2VBdEluZGV4OltpbWFnZURhdGEgY3VycmVudEZy
YW1lXSBpblJlY3Q6Q0dSZWN0TWFrZShpci5vcmlnaW4ueCwgaXIub3JpZ2luLnksIGlyLnNpemUu
d2lkdGgsIGlyLnNpemUuaGVpZ2h0KSAKLSAgICAgICAgICAgICAgICBmcm9tUmVjdDpDR1JlY3RN
YWtlKGZyLm9yaWdpbi54LCBmci5vcmlnaW4ueSwgZnIuc2l6ZS53aWR0aCwgZnIuc2l6ZS5oZWln
aHQpIAotICAgICAgICAgICAgICAgIGNvbXBvc2l0ZU9wZXJhdGlvbjpvcGVyYXRvciBjb250ZXh0
OmFDb250ZXh0XTsKLQotICAgIHRhcmdldEFuaW1hdGlvblJlY3QgPSBpcjsKLSAgICBbc2VsZiBf
c3RhcnRPckNvbnRpbnVlQW5pbWF0aW9uSWZOZWNlc3NhcnldOwotfQotCi0tICh2b2lkKXRpbGVJ
blJlY3Q6KE5TUmVjdClyZWN0IGZyb21Qb2ludDooTlNQb2ludClwb2ludCBjb250ZXh0OihDR0Nv
bnRleHRSZWYpYUNvbnRleHQKLXsKLSAgICBpZiAoYUNvbnRleHQgPT0gMCkKLSAgICAgICAgYUNv
bnRleHQgPSAoQ0dDb250ZXh0UmVmKVtbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRd
IGdyYXBoaWNzUG9ydF07Ci0KLSAgICBbaW1hZ2VEYXRhIHRpbGVJblJlY3Q6Q0dSZWN0TWFrZShy
ZWN0Lm9yaWdpbi54LCByZWN0Lm9yaWdpbi55LCByZWN0LnNpemUud2lkdGgsIHJlY3Quc2l6ZS5o
ZWlnaHQpCi0gICAgICAgICAgICBmcm9tUG9pbnQ6Q0dQb2ludE1ha2UocG9pbnQueCwgcG9pbnQu
eSkgY29udGV4dDphQ29udGV4dF07Ci0gICAgICAgICAgICAKLSAgICB0YXJnZXRBbmltYXRpb25S
ZWN0ID0gcmVjdDsKLSAgICBbc2VsZiBfc3RhcnRPckNvbnRpbnVlQW5pbWF0aW9uSWZOZWNlc3Nh
cnldOwotfQotCi0tICh2b2lkKXNjYWxlQW5kVGlsZUluUmVjdDooTlNSZWN0KWlyIGZyb21SZWN0
OihOU1JlY3QpZnIgd2l0aEhvcml6b250YWxUaWxlUnVsZTooV2ViSW1hZ2VUaWxlUnVsZSloUnVs
ZSAKLSAgICAgIHdpdGhWZXJ0aWNhbFRpbGVSdWxlOihXZWJJbWFnZVRpbGVSdWxlKXZSdWxlIGNv
bnRleHQ6KENHQ29udGV4dFJlZiljb250ZXh0Ci17Ci0gICAgaWYgKGNvbnRleHQgPT0gMCkKLSAg
ICAgICAgY29udGV4dCA9IChDR0NvbnRleHRSZWYpW1tOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50
Q29udGV4dF0gZ3JhcGhpY3NQb3J0XTsKLQotICAgIFtpbWFnZURhdGEgc2NhbGVBbmRUaWxlSW5S
ZWN0OkNHUmVjdE1ha2UoaXIub3JpZ2luLngsIGlyLm9yaWdpbi55LCBpci5zaXplLndpZHRoLCBp
ci5zaXplLmhlaWdodCkKLSAgICAgICAgICAgIGZyb21SZWN0OkNHUmVjdE1ha2UoZnIub3JpZ2lu
LngsIGZyLm9yaWdpbi55LCBmci5zaXplLndpZHRoLCBmci5zaXplLmhlaWdodCkgCi0gICAgICAg
ICAgICB3aXRoSG9yaXpvbnRhbFRpbGVSdWxlOmhSdWxlIHdpdGhWZXJ0aWNhbFRpbGVSdWxlOnZS
dWxlIGNvbnRleHQ6Y29udGV4dF07Ci0KLSAgICB0YXJnZXRBbmltYXRpb25SZWN0ID0gaXI7Ci0g
ICAgW3NlbGYgX3N0YXJ0T3JDb250aW51ZUFuaW1hdGlvbklmTmVjZXNzYXJ5XTsKLX0KLQotLSAo
dm9pZClfc3RhcnRPckNvbnRpbnVlQW5pbWF0aW9uSWZOZWNlc3NhcnkKLXsKLSAgICBOU1ZpZXcg
KnRhcmdldFZpZXcgPSBbTlNWaWV3IGZvY3VzVmlld107Ci0gICAgCi0gICAgLy8gT25seSBhbmlt
YXRlIGlmIHdlJ3JlIGRyYXdpbmcgaW50byBhIFdlYkhUTUxWaWV3IG9yIFdlYkltYWdlVmlldy4g
IFRoaXMgZml4ZXMgcHJvYmxlbXMKLSAgICAvLyBsaWtlIDxyZGFyOi8vcHJvYmxlbS8zOTY2OTcz
Piwgd2hpY2ggZGVzY3JpYmVzIGEgdGhpcmQgcGFydHkgYXBwbGljYXRpb24gdGhhdCByZW5kZXJz
IHRodW1ibmFpbHMgb2YKLSAgICAvLyB0aGUgcGFnZSBpbnRvIGEgYWx0ZXJuYXRlIHZpZXcuCi0g
ICAgaWYgKFt0YXJnZXRWaWV3IGlzS2luZE9mQ2xhc3M6W1dlYkhUTUxWaWV3IGNsYXNzXV0gCi0g
ICAgICAgICAgICAmJiBbaW1hZ2VEYXRhIHNob3VsZEFuaW1hdGVdICYmIFtNSU1FVHlwZSBpc0Vx
dWFsOkAiaW1hZ2UvZ2lmIl0pIHsKLSAgICAgICAgW2ltYWdlRGF0YSBhZGRBbmltYXRpbmdSZW5k
ZXJlcjpzZWxmIGluVmlldzp0YXJnZXRWaWV3XTsKLSAgICAgICAgW2ltYWdlRGF0YSBhbmltYXRl
XTsKLSAgICB9Ci19Ci0KLSsgKHZvaWQpc3RvcEFuaW1hdGlvbnNJblZpZXc6KE5TVmlldyAqKWFW
aWV3Ci17Ci0gICAgW1dlYkltYWdlRGF0YSBzdG9wQW5pbWF0aW9uc0luVmlldzphVmlld107Ci19
Ci0KLS0gKHZvaWQpcmVzZXRBbmltYXRpb24KLXsKLSAgICBbaW1hZ2VEYXRhIHJlc2V0QW5pbWF0
aW9uXTsKLX0KLQotCi0tICh2b2lkKXN0b3BBbmltYXRpb24KLXsKLSAgICBbaW1hZ2VEYXRhIHJl
bW92ZUFuaW1hdGluZ1JlbmRlcmVyOnNlbGZdOwotfQotCi0tIChOU1JlY3QpdGFyZ2V0QW5pbWF0
aW9uUmVjdAotewotICAgIHJldHVybiB0YXJnZXRBbmltYXRpb25SZWN0OwotfQotCi0tICh2b2lk
KXNldEFuaW1hdGlvblJlY3Q6KE5TUmVjdClyCi17Ci0gICAgdGFyZ2V0QW5pbWF0aW9uUmVjdCA9
IHI7Ci0gICAgW3NlbGYgX3N0YXJ0T3JDb250aW51ZUFuaW1hdGlvbklmTmVjZXNzYXJ5XTsKLX0K
LQotLSAoQ0dJbWFnZVJlZilpbWFnZVJlZgotewotICAgIHJldHVybiBbaW1hZ2VEYXRhIGltYWdl
QXRJbmRleDowXTsKLX0KLQotLSAoTlNEYXRhICopVElGRlJlcHJlc2VudGF0aW9uCi17Ci0gICAg
aWYgKCFUSUZGRGF0YSkgewotICAgICAgICBDR0ltYWdlUmVmIGltYWdlID0gW2ltYWdlRGF0YSBp
bWFnZUF0SW5kZXg6MF07Ci0gICAgICAgIGlmICghaW1hZ2UpCi0gICAgICAgICAgICByZXR1cm4g
MDsKLSAgICAgICAgICAgIAotICAgICAgICBDRk11dGFibGVEYXRhUmVmIGRhdGEgPSAwOwotICAg
ICAgICBDR0ltYWdlRGVzdGluYXRpb25SZWYgZGVzdGluYXRpb24gPSAwOwotICAgICAgICAKLSAg
ICAgICAgZGF0YSA9IENGRGF0YUNyZWF0ZU11dGFibGUoTlVMTCwgMCk7Ci0gICAgICAgIC8vIEZJ
WE1FOiAgVXNlIHR5cGUga0NHSW1hZ2VUeXBlSWRlbnRpZmllclRJRkYgY29uc3RhbnQgb25jZSBp
cyBiZWNvbWVzIGF2YWlsYWJsZSBpbiB0aGUgQVBJCi0gICAgICAgIGRlc3RpbmF0aW9uID0gQ0dJ
bWFnZURlc3RpbmF0aW9uQ3JlYXRlV2l0aERhdGEoZGF0YSwgQ0ZTVFIoInB1YmxpYy50aWZmIiks
IDEsIE5VTEwpOwotICAgICAgICBpZiAoZGVzdGluYXRpb24pIHsKLSAgICAgICAgICAgIENHSW1h
Z2VEZXN0aW5hdGlvbkFkZEltYWdlKGRlc3RpbmF0aW9uLCBpbWFnZSwgTlVMTCk7Ci0gICAgICAg
ICAgICBpZiAoIUNHSW1hZ2VEZXN0aW5hdGlvbkZpbmFsaXplIChkZXN0aW5hdGlvbikpIHsKLSAg
ICAgICAgICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBjcmVhdGUgaW1hZ2VcbiIpOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgQ0ZSZWxlYXNlKGRlc3RpbmF0aW9uKTsKLSAgICAgICAg
fQotCi0gICAgICAgIFRJRkZEYXRhID0gKE5TRGF0YSAqKWRhdGE7Ci0gICAgfQotICAgIAotICAg
IHJldHVybiBUSUZGRGF0YTsKLX0KLQotLSAoTlNJbWFnZSAqKWltYWdlCi17Ci0gICAgaWYgKCFu
c2ltYWdlKQotICAgICAgICBuc2ltYWdlID0gW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6
W3NlbGYgVElGRlJlcHJlc2VudGF0aW9uXV07Ci0gICAgcmV0dXJuIG5zaW1hZ2U7Ci19Ci0KLUBl
bmQKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotQGltcGxlbWVudGF0aW9uIFdl
YlBERkRvY3VtZW50Ci0KLXN0YXRpYyB2b2lkIFJlbGVhc2VQREZEb2N1bWVudERhdGEodm9pZCAq
aW5mbywgY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemUpCi17Ci0gICAgWyhpZClpbmZvIGF1
dG9yZWxlYXNlXTsKLX0KLQotLSAoaWQpaW5pdFdpdGhEYXRhOihOU0RhdGEqKWRhdGEKLXsKLSAg
ICBzZWxmID0gW3N1cGVyIGluaXRdOwotICAgIGlmIChzZWxmICE9IG5pbCkKLSAgICB7Ci0gICAg
ICAgIGlmIChkYXRhICE9IG5pbCkgewotICAgICAgICAgICAgQ0dEYXRhUHJvdmlkZXJSZWYgZGF0
YVByb3ZpZGVyID0gQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoRGF0YShbZGF0YSByZXRhaW5dLCBb
ZGF0YSBieXRlc10sIFtkYXRhIGxlbmd0aF0sIFJlbGVhc2VQREZEb2N1bWVudERhdGEpOwotICAg
ICAgICAgICAgX2RvY3VtZW50ID0gQ0dQREZEb2N1bWVudENyZWF0ZVdpdGhQcm92aWRlcihkYXRh
UHJvdmlkZXIpOwotICAgICAgICAgICAgQ0dEYXRhUHJvdmlkZXJSZWxlYXNlKGRhdGFQcm92aWRl
cik7Ci0gICAgICAgIH0KLSAgICAgICAgX2N1cnJlbnRQYWdlID0gLTE7Ci0gICAgICAgIFtzZWxm
IHNldEN1cnJlbnRQYWdlOjBdOwotICAgIH0KLSAgICByZXR1cm4gc2VsZjsKLX0KLQotLSAodm9p
ZClkZWFsbG9jCi17Ci0gICAgaWYgKF9kb2N1bWVudCAhPSBOVUxMKSBDR1BERkRvY3VtZW50UmVs
ZWFzZShfZG9jdW1lbnQpOwotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAodm9pZClmaW5h
bGl6ZQotewotICAgIGlmIChfZG9jdW1lbnQgIT0gTlVMTCkgQ0dQREZEb2N1bWVudFJlbGVhc2Uo
X2RvY3VtZW50KTsKLSAgICBbc3VwZXIgZmluYWxpemVdOwotfQotCi0tIChDR1BERkRvY3VtZW50
UmVmKSBkb2N1bWVudFJlZgotewotICAgIHJldHVybiBfZG9jdW1lbnQ7Ci19Ci0KLS0gKENHUmVj
dCkgbWVkaWFCb3gKLXsKLSAgICByZXR1cm4gX21lZGlhQm94OwotfQotCi0tIChOU1JlY3QpIGJv
dW5kcwotewotICAgIE5TUmVjdCByb3RhdGVkUmVjdDsKLQotICAgIC8vIHJvdGF0ZSB0aGUgbWVk
aWEgYm94IGFuZCBjYWxjdWxhdGUgYm91bmRpbmcgYm94Ci0gICAgZmxvYXQgc2luYSAgID0gc2lu
IChfcm90YXRpb24pOwotICAgIGZsb2F0IGNvc2EgICA9IGNvcyAoX3JvdGF0aW9uKTsKLSAgICBm
bG9hdCB3aWR0aCAgPSBOU1dpZHRoIChfY3JvcEJveCk7Ci0gICAgZmxvYXQgaGVpZ2h0ID0gTlNI
ZWlnaHQoX2Nyb3BCb3gpOwotCi0gICAgLy8gY2FsY3VsYXRlIHJvdGF0ZWQgeCBhbmQgeSBheGlz
Ci0gICAgTlNQb2ludCByeCA9IE5TTWFrZVBvaW50KCB3aWR0aCAgKiBjb3NhLCB3aWR0aCAgKiBz
aW5hKTsKLSAgICBOU1BvaW50IHJ5ID0gTlNNYWtlUG9pbnQoLWhlaWdodCAqIHNpbmEsIGhlaWdo
dCAqIGNvc2EpOwotCi0gICAgLy8gZmluZCBkZWx0YSB3aWR0aCBhbmQgaGVpZ2h0IG9mIHJvdGF0
ZWQgcG9pbnRzCi0gICAgcm90YXRlZFJlY3Qub3JpZ2luICAgICAgPSBfY3JvcEJveC5vcmlnaW47
Ci0gICAgcm90YXRlZFJlY3Quc2l6ZS53aWR0aCAgPSBjZWlsKGZhYnMocngueCAtIHJ5LngpKTsK
LSAgICByb3RhdGVkUmVjdC5zaXplLmhlaWdodCA9IGNlaWwoZmFicyhyeS55IC0gcngueSkpOwot
Ci0gICAgcmV0dXJuIHJvdGF0ZWRSZWN0OwotfQotCi0tICh2b2lkKSBhZGp1c3RDVE06KENHQ29u
dGV4dFJlZiljb250ZXh0Ci17Ci0gICAgLy8gcm90YXRlIHRoZSBjcm9wIGJveCBhbmQgY2FsY3Vs
YXRlIGJvdW5kaW5nIGJveAotICAgIGZsb2F0IHNpbmEgICA9IHNpbiAoLV9yb3RhdGlvbik7Ci0g
ICAgZmxvYXQgY29zYSAgID0gY29zICgtX3JvdGF0aW9uKTsKLSAgICBmbG9hdCB3aWR0aCAgPSBO
U1dpZHRoIChfY3JvcEJveCk7Ci0gICAgZmxvYXQgaGVpZ2h0ID0gTlNIZWlnaHQoX2Nyb3BCb3gp
OwotCi0gICAgLy8gY2FsY3VsYXRlIHJvdGF0ZWQgeCBhbmQgeSBlZGdlcyBvZiB0aGUgY29ycCBi
b3guIGlmIHRoZXkncmUgbmVnYXRpdmUsIGl0IG1lYW5zIHBhcnQgb2YgdGhlIGltYWdlIGhhcwot
ICAgIC8vIGJlZW4gcm90YXRlZCBvdXRzaWRlIG9mIHRoZSBib3VuZHMgYW5kIHdlIG5lZWQgdG8g
c2hpZnQgb3ZlciB0aGUgaW1hZ2Ugc28gaXQgbGllcyBpbnNpZGUgdGhlIGJvdW5kcyBhZ2Fpbgot
ICAgIE5TUG9pbnQgcnggPSBOU01ha2VQb2ludCggd2lkdGggICogY29zYSwgd2lkdGggICogc2lu
YSk7Ci0gICAgTlNQb2ludCByeSA9IE5TTWFrZVBvaW50KC1oZWlnaHQgKiBzaW5hLCBoZWlnaHQg
KiBjb3NhKTsKLQotICAgIC8vIGFkanVzdCBzbyB3ZSBhcmUgYXQgdGhlIGNyb3AgYm94IG9yaWdp
bgotICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShjb250ZXh0LCBmbG9vcigtTUlOKDAsTUlOKHJ4
LngsIHJ5LngpKSksIGZsb29yKC1NSU4oMCxNSU4ocngueSwgcnkueSkpKSk7Ci0KLSAgICAvLyBy
b3RhdGUgLXZlIHRvIHJlbW92ZSByb3RhdGlvbgotICAgIENHQ29udGV4dFJvdGF0ZUNUTShjb250
ZXh0LCAtX3JvdGF0aW9uKTsKLQotICAgIC8vIHNoaWZ0IHNvIHdlIGFyZSBjb21wbGV0ZWx5IHdp
dGhpbiBtZWRpYSBib3gKLSAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY29udGV4dCwgX21lZGlh
Qm94Lm9yaWdpbi54IC0gX2Nyb3BCb3gub3JpZ2luLngsIF9tZWRpYUJveC5vcmlnaW4ueSAtIF9j
cm9wQm94Lm9yaWdpbi55KTsKLX0KLQotLSAodm9pZCkgc2V0Q3VycmVudFBhZ2U6KGludClwYWdl
Ci17Ci0gICAgaWYgKHBhZ2UgIT0gX2N1cnJlbnRQYWdlICYmIHBhZ2UgPj0gMCAmJiBwYWdlIDwg
W3NlbGYgcGFnZUNvdW50XSkgewotCi0gICAgICAgIENHUmVjdCByOwotCi0gICAgICAgIF9jdXJy
ZW50UGFnZSA9IHBhZ2U7Ci0KLSAgICAgICAgLy8gZ2V0IG1lZGlhIGJveCAoZ3VhcmFudGVlZCkK
LSAgICAgICAgX21lZGlhQm94ID0gQ0dQREZEb2N1bWVudEdldE1lZGlhQm94KF9kb2N1bWVudCwg
cGFnZSArIDEpOwotCi0gICAgICAgIC8vIGdldCBjcm9wIGJveCAobm90IGFsd2F5cyB0aGVyZSku
IGlmIG5vdCwgdXNlIF9tZWRpYUJveAotICAgICAgICByID0gQ0dQREZEb2N1bWVudEdldENyb3BC
b3goX2RvY3VtZW50LCBwYWdlICsgMSk7Ci0gICAgICAgIGlmICghQ0dSZWN0SXNFbXB0eShyKSkg
ewotICAgICAgICAgICAgX2Nyb3BCb3ggPSBOU01ha2VSZWN0KHIub3JpZ2luLngsIHIub3JpZ2lu
LnksIHIuc2l6ZS53aWR0aCwgci5zaXplLmhlaWdodCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICBfY3JvcEJveCA9IE5TTWFrZVJlY3QoX21lZGlhQm94Lm9yaWdpbi54LCBfbWVkaWFC
b3gub3JpZ2luLnksIF9tZWRpYUJveC5zaXplLndpZHRoLCBfbWVkaWFCb3guc2l6ZS5oZWlnaHQp
OwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gZ2V0IHBhZ2Ugcm90YXRpb24gYW5nbGUKLSAgICAg
ICAgX3JvdGF0aW9uID0gQ0dQREZEb2N1bWVudEdldFJvdGF0aW9uQW5nbGUoX2RvY3VtZW50LCBw
YWdlICsgMSkgKiBNX1BJIC8gMTgwLjA7IC8vIHRvIHJhZGlhbnMKLSAgICB9Ci19Ci0KLS0gKGlu
dCkgY3VycmVudFBhZ2UKLXsKLSAgICByZXR1cm4gX2N1cnJlbnRQYWdlOwotfQotCi0tIChpbnQp
IHBhZ2VDb3VudAotewotICAgIHJldHVybiBDR1BERkRvY3VtZW50R2V0TnVtYmVyT2ZQYWdlcyhf
ZG9jdW1lbnQpOwotfQotCi1AZW5kCkluZGV4OiBXZWJLaXQvV2ViQ29yZVN1cHBvcnQvV2ViSW1h
Z2VEYXRhLm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L1dlYkNvcmVTdXBwb3J0L1dlYkltYWdlRGF0
YS5tCShyZXZpc2lvbiAxNDQxNSkKKysrIFdlYktpdC9XZWJDb3JlU3VwcG9ydC9XZWJJbWFnZURh
dGEubQkod29ya2luZyBjb3B5KQpAQCAtMSwxMTIwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDUgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLiAKLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLiAKLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVy
LCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICog
ICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4gCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
Ci0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lt
cG9ydCAiV2ViSW1hZ2VEYXRhLmgiCi0KLSNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0Fzc2VydGlv
bnMuaD4KLSNpbXBvcnQgIldlYkltYWdlRGVjb2Rlci5oIgotI2ltcG9ydCAiV2ViSW1hZ2VSZW5k
ZXJlci5oIgotI2ltcG9ydCAiV2ViSW1hZ2VSZW5kZXJlckZhY3RvcnkuaCIKLSNpbXBvcnQgIldl
YktpdFN5c3RlbUJpdHMuaCIKLQotI2ltcG9ydCA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+Ci0K
LSNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZUltYWdlUmVuZGVyZXIuaD4KLQotLy8gRm9yd2FyZCBk
ZWNsYXJhdGlvbnMgb2YgaW50ZXJuYWwgbWV0aG9kcy4KLUBpbnRlcmZhY2UgV2ViSW1hZ2VEYXRh
IChXZWJJbnRlcm5hbCkKLS0gKHZvaWQpX2NvbW1vblRlcm1pbmF0aW9uOwotLSAodm9pZClfaW52
YWxpZGF0ZUltYWdlczsKLS0gKHZvaWQpX2ludmFsaWRhdGVJbWFnZVByb3BlcnRpZXM7Ci0tIChp
bnQpX3JlcGV0aXRpb25Db3VudDsKLS0gKGZsb2F0KV9mcmFtZUR1cmF0aW9uOwotLSAodm9pZClf
c3RvcEFuaW1hdGlvbjsKLS0gKHZvaWQpX25leHRGcmFtZTsKLS0gKENGRGljdGlvbmFyeVJlZilf
aW1hZ2VTb3VyY2VPcHRpb25zOwotLSAodm9pZClfY3JlYXRlUERGV2l0aERhdGE6KE5TRGF0YSAq
KWRhdGE7Ci0tIChDR1BERkRvY3VtZW50UmVmKV9QREZEb2N1bWVudFJlZjsKLS0gKEJPT0wpX1BE
RkRyYXdGcm9tUmVjdDooTlNSZWN0KXNyY1JlY3QgdG9SZWN0OihOU1JlY3QpZHN0UmVjdCBvcGVy
YXRpb246KE5TQ29tcG9zaXRpbmdPcGVyYXRpb24pb3AgYWxwaGE6KGZsb2F0KWFscGhhIGZsaXBw
ZWQ6KEJPT0wpZmxpcHBlZCBjb250ZXh0OihDR0NvbnRleHRSZWYpY29udGV4dDsKLS0gKHZvaWQp
X2NhY2hlSW1hZ2VzOihzaXplX3Qpb3B0aW9uYWxJbmRleCBhbGxJbWFnZXM6KEJPT0wpYWxsSW1h
Z2VzOwotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gV2ViSW1hZ2VEYXRhCi0KLS0gaW5pdAotewot
ICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07Ci0gICAgCi0gICAgaW1hZ2VTb3VyY2UgPSBDR0ltYWdl
U291cmNlQ3JlYXRlSW5jcmVtZW50YWwoW3NlbGYgX2ltYWdlU291cmNlT3B0aW9uc10pOwotICAg
IHNpemVBdmFpbGFibGUgPSBOTzsKLSAgICAKLSAgICByZXR1cm4gc2VsZjsKLX0KLQotLSAodm9p
ZClzZXRJc1BERjooQk9PTClmCi17Ci0gICAgaXNQREYgPSBmOwotfQotCi0tIChCT09MKWlzUERG
Ci17Ci0gICAgcmV0dXJuIGlzUERGOwotfQotCi0tICh2b2lkKV9jb21tb25UZXJtaW5hdGlvbgot
ewotICAgIEFTU0VSVCghZnJhbWVUaW1lcik7Ci0gICAgCi0gICAgW3NlbGYgX2ludmFsaWRhdGVJ
bWFnZXNdOwotICAgIFtzZWxmIF9pbnZhbGlkYXRlSW1hZ2VQcm9wZXJ0aWVzXTsKLSAgICAgICAg
Ci0gICAgaWYgKGZpbGVQcm9wZXJ0aWVzKQotICAgICAgICBDRlJlbGVhc2UoZmlsZVByb3BlcnRp
ZXMpOwotCi0gICAgaWYgKGltYWdlU291cmNlKQotICAgICAgICBDRlJlbGVhc2UoaW1hZ2VTb3Vy
Y2UpOyAKLSAgICAgICAgCi0gICAgaWYgKGFuaW1hdGluZ1JlbmRlcmVycykKLSAgICAgICAgQ0ZS
ZWxlYXNlKGFuaW1hdGluZ1JlbmRlcmVycyk7Ci0KLSAgICBmcmVlKGZyYW1lRHVyYXRpb25zKTsK
LX0KLQotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgW19QREZEb2MgcmVsZWFzZV07Ci0gICAgW2Rl
Y29kZUxvY2sgcmVsZWFzZV07Ci0KLSAgICBbc2VsZiBfY29tbW9uVGVybWluYXRpb25dOwotCi0g
ICAgW3N1cGVyIGRlYWxsb2NdOwotfQotCi0tICh2b2lkKWZpbmFsaXplCi17Ci0gICAgW3NlbGYg
X2NvbW1vblRlcm1pbmF0aW9uXTsKLSAgICBbc3VwZXIgZmluYWxpemVdOwotfQotCi0tIGNvcHlX
aXRoWm9uZTooTlNab25lICopem9uZQotewotICAgIFdlYkltYWdlRGF0YSAqY29weTsKLQotICAg
IGNvcHkgPSBbW1dlYkltYWdlRGF0YSBhbGxvY10gaW5pdF07Ci0gICAgQ0ZSZXRhaW4oaW1hZ2VT
b3VyY2UpOwotICAgIGNvcHktPmltYWdlU291cmNlID0gaW1hZ2VTb3VyY2U7Ci0gICAgCi0gICAg
cmV0dXJuIGNvcHk7Ci19Ci0KLQotLSAoc2l6ZV90KW51bWJlck9mSW1hZ2VzCi17Ci0gICAgaWYg
KGltYWdlU291cmNlKQotICAgICAgICByZXR1cm4gQ0dJbWFnZVNvdXJjZUdldENvdW50KGltYWdl
U291cmNlKTsKLSAgICByZXR1cm4gMDsKLX0KLQotLSAoc2l6ZV90KWN1cnJlbnRGcmFtZQotewot
ICAgIHJldHVybiBjdXJyZW50RnJhbWU7Ci19Ci0KLS0gKHZvaWQpX2ludmFsaWRhdGVJbWFnZXMK
LXsKLSAgICBpZiAoaW1hZ2VzKSB7Ci0gICAgICAgIHNpemVfdCBpOwotICAgICAgICBmb3IgKGkg
PSAwOyBpIDwgaW1hZ2VzU2l6ZTsgaSsrKSB7Ci0gICAgICAgICAgICBpZiAoaW1hZ2VzW2ldKQot
ICAgICAgICAgICAgICAgIENGUmVsZWFzZShpbWFnZXNbaV0pOwotICAgICAgICB9Ci0gICAgICAg
IGZyZWUoaW1hZ2VzKTsKLSAgICAgICAgaW1hZ2VzID0gMDsKLSAgICAgICAgCi0gICAgICAgIGlz
U29saWRDb2xvciA9IE5POwotICAgICAgICBpZiggc29saWRDb2xvciApIHsKLSAgICAgICAgICAg
IENGUmVsZWFzZShzb2xpZENvbG9yKTsKLSAgICAgICAgICAgIHNvbGlkQ29sb3IgPSBOVUxMOwot
ICAgICAgICB9Ci0gICAgfQotfQotCi0tICh2b2lkKV9pbnZhbGlkYXRlSW1hZ2VQcm9wZXJ0aWVz
Ci17Ci0gICAgc2l6ZV90IGk7Ci0gICAgZm9yIChpID0gMDsgaSA8IGltYWdlUHJvcGVydGllc1Np
emU7IGkrKykgewotICAgICAgICBpZiAoaW1hZ2VQcm9wZXJ0aWVzW2ldKQotICAgICAgICAgICAg
Q0ZSZWxlYXNlKGltYWdlUHJvcGVydGllc1tpXSk7Ci0gICAgfQotICAgIGZyZWUoaW1hZ2VQcm9w
ZXJ0aWVzKTsKLSAgICBpbWFnZVByb3BlcnRpZXMgPSBOVUxMOwotICAgIGltYWdlUHJvcGVydGll
c1NpemUgPSAwOwotfQotCi0tIChDRkRpY3Rpb25hcnlSZWYpX2ltYWdlU291cmNlT3B0aW9ucwot
ewotICAgIHN0YXRpYyBDRkRpY3Rpb25hcnlSZWYgaW1hZ2VTb3VyY2VPcHRpb25zOwotICAgIGlm
ICghaW1hZ2VTb3VyY2VPcHRpb25zKSB7Ci0gICAgICAgIGNvbnN0IHZvaWQgKmtleXNbMl0gPSB7
IGtDR0ltYWdlU291cmNlU2hvdWxkQ2FjaGUsIDAgfTsKLSAgICAgICAga2V5c1sxXSA9IFdLUHJl
ZmVyUkdCMzJLZXkoKTsKLSAgICAgICAgY29uc3Qgdm9pZCAqdmFsdWVzWzJdID0geyBrQ0ZCb29s
ZWFuVHJ1ZSwga0NGQm9vbGVhblRydWUgfTsKLSAgICAgICAgaW1hZ2VTb3VyY2VPcHRpb25zID0g
Q0ZEaWN0aW9uYXJ5Q3JlYXRlKE5VTEwsIGtleXMsIHZhbHVlcywgMiwgCi0gICAgICAgICAgICAm
a0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2Fs
bEJhY2tzKTsKLSAgICB9Ci0gICAgcmV0dXJuIGltYWdlU291cmNlT3B0aW9uczsKLX0KLQotLSAo
Q0dJbWFnZVJlZilfbm9Db2xvckNvcnJlY3Rpb25JbWFnZTooQ0dJbWFnZVJlZilpbWFnZSB3aXRo
UHJvcGVydGllczooQ0ZEaWN0aW9uYXJ5UmVmKXByb3BzOwotewotICAgIENHQ29sb3JTcGFjZVJl
ZiB1bmNvcnJlY3RlZENvbG9yU3BhY2UgPSAwOwotICAgIENHSW1hZ2VSZWYgbm9Db2xvckNvcnJl
Y3Rpb25JbWFnZSA9IDA7Ci0KLSAgICBpZiAoIUNGRGljdGlvbmFyeUdldFZhbHVlKHByb3BzLCBr
Q0dJbWFnZVByb3BlcnR5UHJvZmlsZU5hbWUpKSB7Ci0gICAgICAgIENGU3RyaW5nUmVmIGNvbG9y
TW9kZWwgPSBDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm9wcywga0NHSW1hZ2VQcm9wZXJ0eUNvbG9y
TW9kZWwpOwotCi0gICAgICAgIGlmIChjb2xvck1vZGVsKSB7Ci0gICAgICAgICAgICBpZiAoQ0ZT
dHJpbmdDb21wYXJlKGNvbG9yTW9kZWwsIENGU1RSKCJSR0IiKSwgMCkgPT0ga0NGQ29tcGFyZUVx
dWFsVG8pCi0gICAgICAgICAgICAgICAgdW5jb3JyZWN0ZWRDb2xvclNwYWNlID0gQ0dDb2xvclNw
YWNlQ3JlYXRlRGV2aWNlUkdCKCk7Ci0gICAgICAgICAgICBlbHNlIGlmIChDRlN0cmluZ0NvbXBh
cmUoY29sb3JNb2RlbCwgQ0ZTVFIoIkdyYXkiKSwgMCkgPT0ga0NGQ29tcGFyZUVxdWFsVG8pCi0g
ICAgICAgICAgICAgICAgdW5jb3JyZWN0ZWRDb2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRl
RGV2aWNlR3JheSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHVuY29ycmVjdGVkQ29sb3JT
cGFjZSkgewotICAgICAgICAgICAgbm9Db2xvckNvcnJlY3Rpb25JbWFnZSA9IENHSW1hZ2VDcmVh
dGVDb3B5V2l0aENvbG9yU3BhY2UoaW1hZ2UsIHVuY29ycmVjdGVkQ29sb3JTcGFjZSk7Ci0gICAg
ICAgICAgICBDRlJlbGVhc2UodW5jb3JyZWN0ZWRDb2xvclNwYWNlKTsKLSAgICAgICAgfQotICAg
IH0KLSAgICByZXR1cm4gbm9Db2xvckNvcnJlY3Rpb25JbWFnZTsKLX0KLSAgICAKLS0gKENHSW1h
Z2VSZWYpaW1hZ2VBdEluZGV4OihzaXplX3QpaW5kZXgKLXsKLSAgICBpZiAoaW5kZXggPj0gW3Nl
bGYgbnVtYmVyT2ZJbWFnZXNdKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGlmICghaW1hZ2Vz
IHx8IGltYWdlc1tpbmRleF0gPT0gMCkgewotICAgICAgICBbc2VsZiBfY2FjaGVJbWFnZXM6aW5k
ZXggYWxsSW1hZ2VzOk5PXTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIGltYWdlc1tpbmRleF07
Ci19Ci0KLS0gKENGRGljdGlvbmFyeVJlZilmaWxlUHJvcGVydGllcwotewotICAgIGlmICghZmls
ZVByb3BlcnRpZXMpIHsKLSAgICAgICAgZmlsZVByb3BlcnRpZXMgPSBDR0ltYWdlU291cmNlQ29w
eVByb3BlcnRpZXMoaW1hZ2VTb3VyY2UsIFtzZWxmIF9pbWFnZVNvdXJjZU9wdGlvbnNdKTsKLSAg
ICB9Ci0gICAgCi0gICAgcmV0dXJuIGZpbGVQcm9wZXJ0aWVzOwotfQotCi0tIChDRkRpY3Rpb25h
cnlSZWYpcHJvcGVydGllc0F0SW5kZXg6KHNpemVfdClpbmRleAotewotICAgIHNpemVfdCBudW0g
PSBbc2VsZiBudW1iZXJPZkltYWdlc107Ci0gICAgCi0gICAgLy8gaWYgbnVtYmVyIG9mIHByb3Bl
cnRpZXMgY2hhbmdlZCwgY2xlYXIgdGhlIGNhY2hlLgotICAgIGlmIChpbWFnZVByb3BlcnRpZXNT
aXplICYmIG51bSA+IGltYWdlUHJvcGVydGllc1NpemUpIHsKLSAgICAgICAgW3NlbGYgX2ludmFs
aWRhdGVJbWFnZVByb3BlcnRpZXNdOwotICAgIH0KLQotICAgIGlmIChpbWFnZVByb3BlcnRpZXMg
PT0gTlVMTCAmJiBudW0pIHsKLSAgICAgICAgaW1hZ2VQcm9wZXJ0aWVzID0gKENGRGljdGlvbmFy
eVJlZiAqKW1hbGxvYyhudW0gKiBzaXplb2YoQ0ZEaWN0aW9uYXJ5UmVmKSk7Ci0gICAgICAgIHNp
emVfdCBpOwotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbnVtOyBpKyspIHsKLSAgICAgICAgICAg
IGltYWdlUHJvcGVydGllc1tpXSA9IENHSW1hZ2VTb3VyY2VDb3B5UHJvcGVydGllc0F0SW5kZXgo
aW1hZ2VTb3VyY2UsIGksIFtzZWxmIF9pbWFnZVNvdXJjZU9wdGlvbnNdKTsKLSAgICAgICAgfQot
ICAgICAgICBpbWFnZVByb3BlcnRpZXNTaXplID0gbnVtOwotICAgIH0KLSAgICAKLSAgICBpZiAo
aW5kZXggPCBudW0pIHsKLSAgICAgICAgLy8gSWYgaW1hZ2UgcHJvcGVydGllcyBhcmUgbmlsLCB0
cnkgdG8gZ2V0IHRoZW0gYWdhaW4uCi0gICAgICAgIC8vIEVhcmxpZXIsIHdlIG1heSBoYXZlIGF0
dGVtcHRlZCB0byBnZXQgdGhlbSBiZWZvcmUgZW5vdWdoIGRhdGEgd2FzIGF2YWlsYWJsZSBpbiB0
aGUgaGVhZGVyLgotICAgICAgICBpZiAoaW1hZ2VQcm9wZXJ0aWVzW2luZGV4XSA9PSBOVUxMKSB7
Ci0gICAgICAgICAgICBpbWFnZVByb3BlcnRpZXNbaW5kZXhdID0gQ0dJbWFnZVNvdXJjZUNvcHlQ
cm9wZXJ0aWVzQXRJbmRleChpbWFnZVNvdXJjZSwgaW5kZXgsIFtzZWxmIF9pbWFnZVNvdXJjZU9w
dGlvbnNdKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gaW1hZ2VQcm9wZXJ0aWVzW2luZGV4
XTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIDA7Ci19Ci0KLS0gKHZvaWQpX2NoZWNrU29saWRD
b2xvcjooQ0dJbWFnZVJlZilpbWFnZQotewotICAgIGlzU29saWRDb2xvciA9IE5POwotICAgIGlm
IChzb2xpZENvbG9yKSB7Ci0gICAgICAgIENGUmVsZWFzZShzb2xpZENvbG9yKTsKLSAgICAgICAg
c29saWRDb2xvciA9IE5VTEw7Ci0gICAgfQotICAgIAotICAgIC8vIEN1cnJlbnRseSB3ZSBvbmx5
IGNoZWNrIGZvciBzb2xpZCBjb2xvciBpbiB0aGUgaW1wb3J0YW50IHNwZWNpYWwgY2FzZSBvZiBh
IDF4MSBpbWFnZS4KLSAgICBpZiAoaW1hZ2UgJiYgQ0dJbWFnZUdldFdpZHRoKGltYWdlKSA9PSAx
ICYmIENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UpID09IDEpIHsKLSAgICAgICAgZmxvYXQgcGl4ZWxb
NF07IC8vIFJHQkEKLSAgICAgICAgQ0dDb2xvclNwYWNlUmVmIHNwYWNlID0gQ0dDb2xvclNwYWNl
Q3JlYXRlRGV2aWNlUkdCKCk7Ci0vLyBUaGlzICNpZiB3b24ndCBiZSBuZWVkZWQgb25jZSB0aGUg
Q0cgaGVhZGVyIHRoYXQgaW5jbHVkZXMga0NHQml0bWFwQnl0ZU9yZGVyMzJIb3N0IGlzIGluY2x1
ZGVkIGluIHRoZSBPUy4KLSNpZiBfX3BwY19fCi0gICAgICAgIENHQ29udGV4dFJlZiBibWFwID0g
Q0dCaXRtYXBDb250ZXh0Q3JlYXRlKCZwaXhlbCwgMSwgMSwgOCpzaXplb2YoZmxvYXQpLCBzaXpl
b2YocGl4ZWwpLCBzcGFjZSwKLSAgICAgICAgICAgIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVk
TGFzdCB8IGtDR0JpdG1hcEZsb2F0Q29tcG9uZW50cyk7Ci0jZWxzZQotICAgICAgICBDR0NvbnRl
eHRSZWYgYm1hcCA9IENHQml0bWFwQ29udGV4dENyZWF0ZSgmcGl4ZWwsIDEsIDEsIDgqc2l6ZW9m
KGZsb2F0KSwgc2l6ZW9mKHBpeGVsKSwgc3BhY2UsCi0gICAgICAgICAgICBrQ0dJbWFnZUFscGhh
UHJlbXVsdGlwbGllZExhc3QgfCBrQ0dCaXRtYXBGbG9hdENvbXBvbmVudHMgfCBrQ0dCaXRtYXBC
eXRlT3JkZXIzMkhvc3QpOwotI2VuZGlmCi0gICAgICAgIGlmIChibWFwKSB7Ci0gICAgICAgICAg
ICBOU0F1dG9yZWxlYXNlUG9vbCAqcG9vbCA9IFtbTlNBdXRvcmVsZWFzZVBvb2wgYWxsb2NdIGlu
aXRdOwotICAgICAgICAgICAgW1tOU0dyYXBoaWNzQ29udGV4dCBncmFwaGljc0NvbnRleHRXaXRo
R3JhcGhpY3NQb3J0OmJtYXAgZmxpcHBlZDpOT10gc2V0Q29tcG9zaXRpbmdPcGVyYXRpb246TlND
b21wb3NpdGVDb3B5XTsKLSAgICAgICAgICAgIFtwb29sIHJlbGVhc2VdOwotCi0gICAgICAgICAg
ICBDR1JlY3QgZHN0ID0geyB7MCwgMH0sIHsxLCAxfSB9OwotICAgICAgICAgICAgQ0dDb250ZXh0
RHJhd0ltYWdlKGJtYXAsIGRzdCwgaW1hZ2UpOwotICAgICAgICAgICAgaWYgKHBpeGVsWzNdID4g
MCkKLSAgICAgICAgICAgICAgICBzb2xpZENvbG9yID0gQ0dDb2xvckNyZWF0ZShzcGFjZSxwaXhl
bCk7Ci0gICAgICAgICAgICBpc1NvbGlkQ29sb3IgPSBZRVM7Ci0gICAgICAgICAgICBDRlJlbGVh
c2UoYm1hcCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBMT0dfRVJST1IoIkNvdWxk
bid0IGNyZWF0ZSBDR0JpdG1hcENvbnRleHQiKTsKLSAgICAgICAgfQotICAgICAgICBDRlJlbGVh
c2Uoc3BhY2UpOwotICAgIH0KLX0KLQotLSAodm9pZClfY2FjaGVJbWFnZXM6KHNpemVfdClvcHRp
b25hbEluZGV4IGFsbEltYWdlczooQk9PTClhbGxJbWFnZXMKLXsKLSAgICBzaXplX3QgaTsKLQot
ICAgIGltYWdlc1NpemUgPSBbc2VsZiBudW1iZXJPZkltYWdlc107Ci0gICAgc2l6ZV90IGZyb20s
IHRvOwotICAgIAotICAgIGlmIChhbGxJbWFnZXMpIHsKLSAgICAgICAgZnJvbSA9IDA7Ci0gICAg
ICAgIHRvID0gaW1hZ2VzU2l6ZTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIGZyb20gPSBv
cHRpb25hbEluZGV4OwotICAgICAgICB0byA9IG9wdGlvbmFsSW5kZXgrMTsKLSAgICB9Ci0gICAg
Zm9yIChpID0gZnJvbTsgaSA8IHRvOyBpKyspIHsKLSAgICAgICAgaWYgKCFpbWFnZXMpIHsKLSAg
ICAgICAgICAgIGltYWdlcyA9IChDR0ltYWdlUmVmICopY2FsbG9jKGltYWdlc1NpemUsIHNpemVv
ZihDR0ltYWdlUmVmKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpbWFnZXNbaV0gPSBDR0ltYWdl
U291cmNlQ3JlYXRlSW1hZ2VBdEluZGV4KGltYWdlU291cmNlLCBpLCBbc2VsZiBfaW1hZ2VTb3Vy
Y2VPcHRpb25zXSk7Ci0gICAgfQotICAgIAotICAgIGlmIChmcm9tID09IDAgJiYgdG8gPiAwKSB7
Ci0gICAgICAgIC8vIExvYWRlZCBpbWFnZSAwLiBDaGVjayB3aGV0aGVyIGl0J3MgYSBzb2xpZCBj
b2xvcjoKLSAgICAgICAgW3NlbGYgX2NoZWNrU29saWRDb2xvcjppbWFnZXNbMF1dOwotICAgIH0K
LX0KLQotLy8gQ2FsbGVkIGZyb20gZGVjb2RlciB0aHJlYWQuCi0tICh2b2lkKWRlY29kZURhdGE6
KENGRGF0YVJlZilkYXRhIGlzQ29tcGxldGU6KEJPT0wpaXNDb21wbGV0ZSBjYWxsYmFjazooaWQp
Y2FsbGJhY2sKLXsKLSAgICBbZGVjb2RlTG9jayBsb2NrXTsKLSAgICAKLSAgICBpZiAoaXNQREYp
IHsKLSAgICAgICAgaWYgKGlzQ29tcGxldGUpIHsKLSAgICAgICAgICAgIFtzZWxmIF9jcmVhdGVQ
REZXaXRoRGF0YTooTlNEYXRhICopZGF0YV07Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSB7
Ci0gICAgICAgIC8vIFRoZSB3b3JrIG9mIGRlY29kaW5nIGlzIGFjdHVhbGx5IHRyaWdnZXJlZCBi
eSBpbWFnZSBjcmVhdGlvbi4KLSAgICAgICAgQ0dJbWFnZVNvdXJjZVVwZGF0ZURhdGEoaW1hZ2VT
b3VyY2UsIGRhdGEsIGlzQ29tcGxldGUpOwotICAgICAgICBbc2VsZiBfaW52YWxpZGF0ZUltYWdl
c107Ci0gICAgICAgIFtzZWxmIF9jYWNoZUltYWdlczowIGFsbEltYWdlczpZRVNdOwotICAgIH0K
LSAgICAgICAgCi0gICAgW2RlY29kZUxvY2sgdW5sb2NrXTsKLQotICAgIGlmIChpc1BERikgewot
ICAgICAgICBpZiAoaXNDb21wbGV0ZSAmJiBjYWxsYmFjaykgewotICAgICAgICAgICAgaWYgKFtz
ZWxmIF9QREZEb2N1bWVudFJlZl0pIHsKLSAgICAgICAgICAgICAgICBbV2ViSW1hZ2VEZWNvZGVy
IGRlY29kZUNvbXBsZXRlOmNhbGxiYWNrIHN0YXR1czprQ0dJbWFnZVN0YXR1c0NvbXBsZXRlXTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIFtXZWJJ
bWFnZURlY29kZXIgZGVjb2RlQ29tcGxldGU6Y2FsbGJhY2sgc3RhdHVzOmtDR0ltYWdlU3RhdHVz
SW52YWxpZERhdGFdOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIGVsc2Ug
ewotICAgICAgICAvLyBVc2Ugc3RhdHVzIGZyb20gZmlyc3QgaW1hZ2UgdG8gdHJpZ2dlciBhcHBy
b3ByaWF0ZSBub3RpZmljYXRpb24gYmFjayB0byBXZWJDb3JlCi0gICAgICAgIC8vIG9uIG1haW4g
dGhyZWFkLgotICAgICAgICBpZiAoY2FsbGJhY2spIHsKLSAgICAgICAgICAgIENHSW1hZ2VTb3Vy
Y2VTdGF0dXMgaW1hZ2VTdGF0dXMgPSBDR0ltYWdlU291cmNlR2V0U3RhdHVzQXRJbmRleChpbWFn
ZVNvdXJjZSwgMCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIC8vIExpZSBhYm91dCBzdGF0
dXMuICBJZiB3ZSBoYXZlIGFsbCB0aGUgZGF0YSwgZ28gYWhlYWQgYW5kIHNheSB3ZSdyZSBjb21w
bGV0ZQotICAgICAgICAgICAgLy8gYXMgbG9uZyB3ZSBhcmUgaGF2ZSBhdCBsZWFzdCBzb21lIHZh
bGlkIGJhbmRzIChpLmUuID49IGtDR0ltYWdlU3RhdHVzSW5jb21wbGV0ZSkuCi0gICAgICAgICAg
ICAvLyBXZSBoYXZlIHRvIGxpZSBiZWNhdXNlIENHIGluY29ycmVjdGx5IHJlcG9ydHMgdGhlIHN0
YXR1cy4KLSAgICAgICAgICAgIGlmIChpc0NvbXBsZXRlICYmIGltYWdlU3RhdHVzID49IGtDR0lt
YWdlU3RhdHVzSW5jb21wbGV0ZSkKLSAgICAgICAgICAgICAgICBpbWFnZVN0YXR1cyA9IGtDR0lt
YWdlU3RhdHVzQ29tcGxldGU7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIC8vIE9ubHkgc2Vu
ZCBiYWQgc3RhdHVzIGlmIHdlJ3ZlIHJlYWQgdGhlIHdob2xlIGltYWdlLgotICAgICAgICAgICAg
aWYgKGlzQ29tcGxldGUgfHwgKCFpc0NvbXBsZXRlICYmIGltYWdlU3RhdHVzID49IGtDR0ltYWdl
U3RhdHVzSW5jb21wbGV0ZSkpCi0gICAgICAgICAgICAgICAgW1dlYkltYWdlRGVjb2RlciBkZWNv
ZGVDb21wbGV0ZTpjYWxsYmFjayBzdGF0dXM6aW1hZ2VTdGF0dXNdOwotICAgICAgICB9Ci0gICAg
fQotfQotCi0tIChCT09MKV9pc1NpemVBdmFpbGFibGUKLXsKLSAgICBDR0ltYWdlU291cmNlU3Rh
dHVzIGltYWdlU291cmNlU3RhdHVzID0gQ0dJbWFnZVNvdXJjZUdldFN0YXR1cyhpbWFnZVNvdXJj
ZSk7Ci0gICAgCi0gICAgaWYgKHNpemVBdmFpbGFibGUpCi0gICAgICAgIHJldHVybiBZRVM7Ci0g
ICAgICAgIAotICAgIC8vIFdpdGggSW1hZ2VJTy01NSB0aGUgbWV0YSBkYXRhIGZvciBhbiBpbWFn
ZSBpcyB1cGRhdGVkIHByb2dyZXNzaXZlbHkuICBXZSBkb24ndCB3YW50Ci0gICAgLy8gdG8gaW5k
aWNhdGUgdGhhdCB0aGUgaW1hZ2UgaXMgJ3JlYWR5JyBmb3IgbGF5b3V0IHVudGlsIHdlIGtub3cg
dGhlIHNpemUuICBTbywgd2UKLSAgICAvLyBoYXZlIHRvIHRyeSBnZXR0aW5nIHRoZSBtZXRhIHVu
dGlsIHdlIGhhdmUgYSB2YWxpZCB3aWR0aCBhbmQgaGVpZ2h0IHByb3BlcnR5LgotICAgIGlmIChp
bWFnZVNvdXJjZVN0YXR1cyA+PSBrQ0dJbWFnZVN0YXR1c0luY29tcGxldGUpIHsKLSAgICAgICAg
Q0ZEaWN0aW9uYXJ5UmVmIGltYWdlMFByb3BlcnRpZXMgPSBDR0ltYWdlU291cmNlQ29weVByb3Bl
cnRpZXNBdEluZGV4KGltYWdlU291cmNlLCAwLCBbc2VsZiBfaW1hZ2VTb3VyY2VPcHRpb25zXSk7
Ci0gICAgICAgIGlmIChpbWFnZTBQcm9wZXJ0aWVzKSB7Ci0gICAgICAgICAgICBDRk51bWJlclJl
ZiB3aWR0aE51bWJlciA9IENGRGljdGlvbmFyeUdldFZhbHVlKGltYWdlMFByb3BlcnRpZXMsIGtD
R0ltYWdlUHJvcGVydHlQaXhlbFdpZHRoKTsKLSAgICAgICAgICAgIENGTnVtYmVyUmVmIGhlaWdo
dE51bWJlciA9IENGRGljdGlvbmFyeUdldFZhbHVlKGltYWdlMFByb3BlcnRpZXMsIGtDR0ltYWdl
UHJvcGVydHlQaXhlbEhlaWdodCk7Ci0gICAgICAgICAgICBzaXplQXZhaWxhYmxlID0gd2lkdGhO
dW1iZXIgJiYgaGVpZ2h0TnVtYmVyOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoaW1h
Z2VQcm9wZXJ0aWVzKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGltYWdlUHJvcGVydGllc1swXSkK
LSAgICAgICAgICAgICAgICAgICAgQ0ZSZWxlYXNlKGltYWdlUHJvcGVydGllc1swXSk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBpbWFnZVByb3Bl
cnRpZXNTaXplID0gW3NlbGYgbnVtYmVyT2ZJbWFnZXNdOwotICAgICAgICAgICAgICAgIGltYWdl
UHJvcGVydGllcyA9IChDRkRpY3Rpb25hcnlSZWYgKiljYWxsb2MoaW1hZ2VQcm9wZXJ0aWVzU2l6
ZSwgc2l6ZW9mKENGRGljdGlvbmFyeVJlZikpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgIAotICAgICAgICAgICAgaW1hZ2VQcm9wZXJ0aWVzWzBdID0gaW1hZ2UwUHJvcGVydGllczsK
LSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICByZXR1cm4gc2l6ZUF2YWlsYWJsZTsKLX0KLQot
LSAoQk9PTClpbmNyZW1lbnRhbExvYWRXaXRoQnl0ZXM6KGNvbnN0IHZvaWQgKilieXRlcyBsZW5n
dGg6KHVuc2lnbmVkKWxlbmd0aCBjb21wbGV0ZTooQk9PTClpc0NvbXBsZXRlIGNhbGxiYWNrOihp
ZCljYWxsYmFjawotewotI2lmZGVmIGtJbWFnZUJ5dGVzQ3V0b2ZmCi0gICAgLy8gVGhpcyBpcyBh
IGhhY2sgdG8gaGVscCB3aXRoIHRlc3RpbmcgZGlzcGxheSBvZiBwYXJ0aWFsbHktbG9hZGVkIGlt
YWdlcy4KLSAgICAvLyBUbyBlbmFibGUgaXQsIGRlZmluZSBrSW1hZ2VCeXRlc0N1dG9mZiB0byBi
ZSBhIHNpemUgc21hbGxlciB0aGFuIHRoYXQgb2YgdGhlIGltYWdlIGZpbGVzCi0gICAgLy8gYmVp
bmcgbG9hZGVkLiBUaGV5J2xsIG5ldmVyIGZpbmlzaCBsb2FkaW5nLgotICAgIGlmKCBsZW5ndGgg
PiBrSW1hZ2VCeXRlc0N1dG9mZiApIHsKLSAgICAgICAgbGVuZ3RoID0ga0ltYWdlQnl0ZXNDdXRv
ZmY7Ci0gICAgICAgIGlzQ29tcGxldGUgPSBOTzsKLSAgICB9Ci0jZW5kaWYKLSAgICAKLSAgICBD
RkRhdGFSZWYgZGF0YSA9IENGRGF0YUNyZWF0ZShOVUxMLCBieXRlcywgbGVuZ3RoKTsKLSAgICAK
LSAgICBpZiAoY2FsbGJhY2spIHsKLSAgICAgICAgW1dlYkltYWdlRGVjb2RlciBwZXJmb3JtRGVj
b2RlV2l0aEltYWdlOnNlbGYgZGF0YTpkYXRhIGlzQ29tcGxldGU6aXNDb21wbGV0ZSBjYWxsYmFj
azpjYWxsYmFja107Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKGlzUERGKSB7Ci0gICAgICAg
ICAgICBpZiAoaXNDb21wbGV0ZSkgewotICAgICAgICAgICAgICAgIFtzZWxmIF9jcmVhdGVQREZX
aXRoRGF0YTooTlNEYXRhICopZGF0YV07Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAg
ICAgZWxzZSB7Ci0gICAgICAgICAgICBbc2VsZiBfaW52YWxpZGF0ZUltYWdlc107Ci0gICAgICAg
ICAgICBDR0ltYWdlU291cmNlVXBkYXRlRGF0YShpbWFnZVNvdXJjZSwgZGF0YSwgaXNDb21wbGV0
ZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgQ0ZSZWxlYXNlKGRhdGEpOwotCi0gICAg
Ly8gSW1hZ2UgcHJvcGVydGllcyB3aWxsIG5vdCBiZSBhdmFpbGFibGUgdW50aWwgdGhlIGZpcnN0
IGZyYW1lIG9mIHRoZSBmaWxlCi0gICAgLy8gcmVhY2hlcyBrQ0dJbWFnZVN0YXR1c0luY29tcGxl
dGUuICBOZXcgYXMgb2YgSW1hZ2VJTy01NSwgc2VlIDQwMzE2MDIuIAotICAgIGlmIChpbWFnZVNv
dXJjZSkgewotICAgICAgICByZXR1cm4gW3NlbGYgX2lzU2l6ZUF2YWlsYWJsZV07Ci0gICAgfQot
ICAgIAotICAgIHJldHVybiBZRVM7Ci19Ci0KLS0gKHZvaWQpX2ZpbGxTb2xpZENvbG9ySW5SZWN0
OihDR1JlY3QpcmVjdCBjb21wb3NpdGVPcGVyYXRpb246KE5TQ29tcG9zaXRpbmdPcGVyYXRpb24p
b3AgY29udGV4dDooQ0dDb250ZXh0UmVmKWFDb250ZXh0Ci17Ci0gICAgaWYgKHNvbGlkQ29sb3Ip
IHsKLSAgICAgICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShhQ29udGV4dCk7Ci0gICAgICAgIENHQ29u
dGV4dFNldEZpbGxDb2xvcldpdGhDb2xvcihhQ29udGV4dCwgc29saWRDb2xvcik7Ci0gICAgICAg
IE5TQXV0b3JlbGVhc2VQb29sICpwb29sID0gW1tOU0F1dG9yZWxlYXNlUG9vbCBhbGxvY10gaW5p
dF07Ci0gICAgICAgIFtbTlNHcmFwaGljc0NvbnRleHQgZ3JhcGhpY3NDb250ZXh0V2l0aEdyYXBo
aWNzUG9ydDphQ29udGV4dCBmbGlwcGVkOk5PXSBzZXRDb21wb3NpdGluZ09wZXJhdGlvbjpvcF07
Ci0gICAgICAgIFtwb29sIHJlbGVhc2VdOwotICAgICAgICBDR0NvbnRleHRGaWxsUmVjdChhQ29u
dGV4dCwgcmVjdCk7Ci0gICAgICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUoYUNvbnRleHQpOwot
ICAgIH0KLX0KLQotLSAodm9pZClkcmF3SW1hZ2VBdEluZGV4OihzaXplX3QpaW5kZXggaW5SZWN0
OihDR1JlY3QpaXIgZnJvbVJlY3Q6KENHUmVjdClmciBhZGp1c3RlZFNpemU6KENHU2l6ZSlhZGp1
c3RlZFNpemUgY29tcG9zaXRlT3BlcmF0aW9uOihOU0NvbXBvc2l0aW5nT3BlcmF0aW9uKW9wIGNv
bnRleHQ6KENHQ29udGV4dFJlZilhQ29udGV4dDsKLXsKLSAgICBpZiAoaXNQREYpIHsKLSAgICAg
ICAgW3NlbGYgX1BERkRyYXdGcm9tUmVjdDpOU01ha2VSZWN0KGZyLm9yaWdpbi54LCBmci5vcmln
aW4ueSwgZnIuc2l6ZS53aWR0aCwgZnIuc2l6ZS5oZWlnaHQpCi0gICAgICAgICAgICB0b1JlY3Q6
TlNNYWtlUmVjdChpci5vcmlnaW4ueCwgaXIub3JpZ2luLnksIGlyLnNpemUud2lkdGgsIGlyLnNp
emUuaGVpZ2h0KQotICAgICAgICAgICAgb3BlcmF0aW9uOm9wIAotICAgICAgICAgICAgYWxwaGE6
MS4wIAotICAgICAgICAgICAgZmxpcHBlZDpZRVMKLSAgICAgICAgICAgIGNvbnRleHQ6YUNvbnRl
eHRdOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIFtkZWNvZGVMb2NrIGxvY2tdOwotICAgICAgICAK
LSAgICAgICAgQ0dJbWFnZVJlZiBpbWFnZSA9IFtzZWxmIGltYWdlQXRJbmRleDppbmRleF07Ci0g
ICAgICAgIAotICAgICAgICBpZiAoIWltYWdlKSB7Ci0gICAgICAgICAgICBbZGVjb2RlTG9jayB1
bmxvY2tdOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAg
ICBpZiggaXNTb2xpZENvbG9yICYmIGluZGV4PT0wICkgewotICAgICAgICAgICAgW3NlbGYgX2Zp
bGxTb2xpZENvbG9ySW5SZWN0OmlyIGNvbXBvc2l0ZU9wZXJhdGlvbjpvcCBjb250ZXh0OmFDb250
ZXh0XTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIENHQ29udGV4dFNhdmVHU3RhdGUo
YUNvbnRleHQpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICAvLyBHZXQgdGhlIGhlaWdodCAo
aW4gYWRqdXN0ZWQsIGkuZS4gc2NhbGVkLCBjb29yZHMpIG9mIHRoZSBwb3J0aW9uIG9mIHRoZSBp
bWFnZQotICAgICAgICAgICAgLy8gdGhhdCBpcyBjdXJyZW50bHkgZGVjb2RlZC4gIFRoaXMgY291
bGQgYmUgbGVzcyB0aGF0IHRoZSBhY3R1YWwgaGVpZ2h0LgotICAgICAgICAgICAgQ0dTaXplIHNl
bGZTaXplID0gW3NlbGYgc2l6ZV07ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmdWxsIGlt
YWdlIHNpemUsIGluIHBpeGVscwotICAgICAgICAgICAgZmxvYXQgY3VySGVpZ2h0ID0gQ0dJbWFn
ZUdldEhlaWdodChpbWFnZSk7ICAgICAgICAgICAgICAvLyBoZWlnaHQgb2YgbG9hZGVkIHBvcnRp
b24sIGluIHBpeGVscwotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiggY3VySGVpZ2h0IDwg
c2VsZlNpemUuaGVpZ2h0ICkgewotICAgICAgICAgICAgICAgIGFkanVzdGVkU2l6ZS5oZWlnaHQg
Kj0gY3VySGVpZ2h0IC8gc2VsZlNpemUuaGVpZ2h0OwotCi0gICAgICAgICAgICAgICAgLy8gSXMg
dGhlIGFtb3VudCBvZiBhdmFpbGFibGUgYmFuZHMgbGVzcyB0aGFuIHdoYXQgd2UgbmVlZCB0byBk
cmF3PyAgSWYgc28sCi0gICAgICAgICAgICAgICAgLy8gd2UgbWF5IGhhdmUgdG8gY2xpcCAnZnIn
IGlmIGl0IGdvZXMgb3V0c2lkZSB0aGUgYXZhaWxhYmxlIGJvdW5kcy4KLSAgICAgICAgICAgICAg
ICBpZiggQ0dSZWN0R2V0TWF4WShmcikgPiBhZGp1c3RlZFNpemUuaGVpZ2h0ICkgewotICAgICAg
ICAgICAgICAgICAgICBmbG9hdCBmckhlaWdodCA9IGFkanVzdGVkU2l6ZS5oZWlnaHQgLSBmci5v
cmlnaW4ueTsgLy8gY2xpcCBmciB0byBhdmFpbGFibGUgYm91bmRzCi0gICAgICAgICAgICAgICAg
ICAgIGlmKCBmckhlaWdodCA8PSAwICkgewotICAgICAgICAgICAgICAgICAgICAgICAgW2RlY29k
ZUxvY2sgdW5sb2NrXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjbGlwcGVkIG91dCBlbnRpcmVs
eQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGlyLnNpemUuaGVp
Z2h0ICo9IChmckhlaWdodCAvIGZyLnNpemUuaGVpZ2h0KTsgICAgLy8gc2NhbGUgaXIgcHJvcG9y
dGlvbmFsbHkgdG8gZnIKLSAgICAgICAgICAgICAgICAgICAgZnIuc2l6ZS5oZWlnaHQgPSBmckhl
aWdodDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAg
ICAgICAgICAgIC8vIEZsaXAgdGhlIGNvb3Jkcy4KLSAgICAgICAgICAgIE5TQXV0b3JlbGVhc2VQ
b29sICpwb29sID0gW1tOU0F1dG9yZWxlYXNlUG9vbCBhbGxvY10gaW5pdF07Ci0gICAgICAgICAg
ICBbW05TR3JhcGhpY3NDb250ZXh0IGdyYXBoaWNzQ29udGV4dFdpdGhHcmFwaGljc1BvcnQ6YUNv
bnRleHQgZmxpcHBlZDpOT10gc2V0Q29tcG9zaXRpbmdPcGVyYXRpb246b3BdOwotICAgICAgICAg
ICAgW3Bvb2wgcmVsZWFzZV07Ci0gICAgICAgICAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oYUNv
bnRleHQsIGlyLm9yaWdpbi54LCBpci5vcmlnaW4ueSk7Ci0gICAgICAgICAgICBDR0NvbnRleHRT
Y2FsZUNUTShhQ29udGV4dCwgMSwgLTEpOwotICAgICAgICAgICAgQ0dDb250ZXh0VHJhbnNsYXRl
Q1RNKGFDb250ZXh0LCAwLCAtaXIuc2l6ZS5oZWlnaHQpOwotICAgICAgICAgICAgCi0gICAgICAg
ICAgICAvLyBUcmFuc2xhdGVkIHRvIG9yaWdpbiwgbm93IGRyYXcgYXQgMCwwLgotICAgICAgICAg
ICAgaXIub3JpZ2luLnggPSBpci5vcmlnaW4ueSA9IDA7Ci0gICAgICAgICAgICAKLSAgICAgICAg
ICAgIC8vIElmIHdlJ3JlIGRyYXdpbmcgYSBzdWIgcG9ydGlvbiBvZiB0aGUgaW1hZ2UgdGhlbiBj
cmVhdGUKLSAgICAgICAgICAgIC8vIGEgaW1hZ2UgZm9yIHRoZSBzdWIgcG9ydGlvbiBhbmQgZHJh
dyB0aGF0LgotICAgICAgICAgICAgLy8gVGVzdCB1c2luZyBleGFtcGxlIHNpdGUgYXQgaHR0cDov
L3d3dy5tZXllcndlYi5jb20vZXJpYy9jc3MvZWRnZS9jb21wbGV4c3BpcmFsL2RlbW8uaHRtbAot
ICAgICAgICAgICAgaWYgKGZyLnNpemUud2lkdGggIT0gYWRqdXN0ZWRTaXplLndpZHRoIHx8IGZy
LnNpemUuaGVpZ2h0ICE9IGFkanVzdGVkU2l6ZS5oZWlnaHQpIHsKLSAgICAgICAgICAgICAgICAv
LyBDb252ZXJ0IGZ0IHRvIGltYWdlIHBpeGVsIGNvb3JkczoKLSAgICAgICAgICAgICAgICBmbG9h
dCB4c2NhbGUgPSBhZGp1c3RlZFNpemUud2lkdGggLyBzZWxmU2l6ZS53aWR0aDsKLSAgICAgICAg
ICAgICAgICBmbG9hdCB5c2NhbGUgPSBhZGp1c3RlZFNpemUuaGVpZ2h0IC8gY3VySGVpZ2h0OyAg
ICAgLy8geWVzLCBjdXJIZWlnaHQsIG5vdCBzZWxmU2l6ZS5oZWlnaHQhCi0gICAgICAgICAgICAg
ICAgZnIub3JpZ2luLnggLz0geHNjYWxlOwotICAgICAgICAgICAgICAgIGZyLm9yaWdpbi55IC89
IHlzY2FsZTsKLSAgICAgICAgICAgICAgICBmci5zaXplLndpZHRoIC89IHhzY2FsZTsKLSAgICAg
ICAgICAgICAgICBmci5zaXplLmhlaWdodCAvPSB5c2NhbGU7Ci0gICAgICAgICAgICAgICAgCi0g
ICAgICAgICAgICAgICAgaW1hZ2UgPSBDR0ltYWdlQ3JlYXRlV2l0aEltYWdlSW5SZWN0KGltYWdl
LCBmcik7Ci0gICAgICAgICAgICAgICAgaWYgKGltYWdlKSB7Ci0gICAgICAgICAgICAgICAgICAg
IENHQ29udGV4dERyYXdJbWFnZShhQ29udGV4dCwgaXIsIGltYWdlKTsKLSAgICAgICAgICAgICAg
ICAgICAgQ0ZSZWxlYXNlKGltYWdlKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICAvLyBvdGhlcndpc2UgZHJhdyB0aGUgd2hvbGUgaW1hZ2UuCi0gICAgICAg
ICAgICBlbHNlIHsgCi0gICAgICAgICAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGFDb250ZXh0
LCBpciwgaW1hZ2UpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBDR0NvbnRleHRSZXN0
b3JlR1N0YXRlKGFDb250ZXh0KTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgW2RlY29k
ZUxvY2sgdW5sb2NrXTsKLSAgICB9Ci19Ci0KLS0gKHZvaWQpZHJhd0ltYWdlQXRJbmRleDooc2l6
ZV90KWluZGV4IGluUmVjdDooQ0dSZWN0KWlyIGZyb21SZWN0OihDR1JlY3QpZnIgY29tcG9zaXRl
T3BlcmF0aW9uOihOU0NvbXBvc2l0aW5nT3BlcmF0aW9uKW9wIGNvbnRleHQ6KENHQ29udGV4dFJl
ZilhQ29udGV4dDsKLXsgICAgCi0gICAgW3NlbGYgZHJhd0ltYWdlQXRJbmRleDppbmRleCBpblJl
Y3Q6aXIgZnJvbVJlY3Q6ZnIgYWRqdXN0ZWRTaXplOltzZWxmIHNpemVdIGNvbXBvc2l0ZU9wZXJh
dGlvbjpvcCBjb250ZXh0OmFDb250ZXh0XTsKLX0KLQotc3RhdGljIHZvaWQgZHJhd1BhdHRlcm4o
dm9pZCAqIGluZm8sIENHQ29udGV4dFJlZiBjb250ZXh0KQotewotICAgIFdlYkltYWdlRGF0YSAq
ZGF0YSA9IChXZWJJbWFnZURhdGEgKilpbmZvOwotICAgIAotICAgIENHSW1hZ2VSZWYgaW1hZ2Ug
PSBbZGF0YSBpbWFnZUF0SW5kZXg6W2RhdGEgY3VycmVudEZyYW1lXV07Ci0gICAgZmxvYXQgdyA9
IENHSW1hZ2VHZXRXaWR0aChpbWFnZSk7Ci0gICAgZmxvYXQgaCA9IENHSW1hZ2VHZXRIZWlnaHQo
aW1hZ2UpOwotICAgIENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0LCBDR1JlY3RNYWtlKDAsIFtk
YXRhIHNpemVdLmhlaWdodCAtIGgsIHcsIGgpLCBpbWFnZSk7ICAgIAotfQotCi1zdGF0aWMgY29u
c3QgQ0dQYXR0ZXJuQ2FsbGJhY2tzIHBhdHRlcm5DYWxsYmFja3MgPSB7IDAsIGRyYXdQYXR0ZXJu
LCBOVUxMIH07Ci0KLS0gKHZvaWQpdGlsZUluUmVjdDooQ0dSZWN0KXJlY3QgZnJvbVBvaW50OihD
R1BvaW50KXBvaW50IGNvbnRleHQ6KENHQ29udGV4dFJlZilhQ29udGV4dAotewotICAgIEFTU0VS
VChhQ29udGV4dCk7Ci0KLSAgICBbZGVjb2RlTG9jayBsb2NrXTsKLSAgICAKLSAgICBzaXplX3Qg
ZnJhbWUgPSBbc2VsZiBjdXJyZW50RnJhbWVdOwotICAgIENHSW1hZ2VSZWYgaW1hZ2UgPSBbc2Vs
ZiBpbWFnZUF0SW5kZXg6ZnJhbWVdOwotICAgIGlmICghaW1hZ2UpIHsKLSAgICAgICAgW2RlY29k
ZUxvY2sgdW5sb2NrXTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChmcmFtZSA9
PSAwICYmIGlzU29saWRDb2xvcikgewotICAgICAgICBbc2VsZiBfZmlsbFNvbGlkQ29sb3JJblJl
Y3Q6cmVjdCBjb21wb3NpdGVPcGVyYXRpb246TlNDb21wb3NpdGVTb3VyY2VPdmVyIGNvbnRleHQ6
YUNvbnRleHRdOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIENHU2l6ZSB0aWxlU2l6ZSA9IFtzZWxm
IHNpemVdOwotICAgICAgICAKLSAgICAgICAgLy8gQ2hlY2sgYW5kIHNlZSBpZiBhIHNpbmdsZSBk
cmF3IG9mIHRoZSBpbWFnZSBjYW4gY292ZXIgdGhlIGVudGlyZSBhcmVhIHdlIGFyZSBzdXBwb3Nl
ZCB0byB0aWxlLgotICAgICAgICBOU1JlY3Qgb25lVGlsZVJlY3Q7Ci0gICAgICAgIG9uZVRpbGVS
ZWN0Lm9yaWdpbi54ID0gcmVjdC5vcmlnaW4ueCArIGZtb2RmKGZtb2RmKC1wb2ludC54LCB0aWxl
U2l6ZS53aWR0aCkgLSB0aWxlU2l6ZS53aWR0aCwgdGlsZVNpemUud2lkdGgpOwotICAgICAgICBv
bmVUaWxlUmVjdC5vcmlnaW4ueSA9IHJlY3Qub3JpZ2luLnkgKyBmbW9kZihmbW9kZigtcG9pbnQu
eSwgdGlsZVNpemUuaGVpZ2h0KSAtIHRpbGVTaXplLmhlaWdodCwgdGlsZVNpemUuaGVpZ2h0KTsK
LSAgICAgICAgb25lVGlsZVJlY3Quc2l6ZS5oZWlnaHQgPSB0aWxlU2l6ZS5oZWlnaHQ7Ci0gICAg
ICAgIG9uZVRpbGVSZWN0LnNpemUud2lkdGggPSB0aWxlU2l6ZS53aWR0aDsKLQotICAgICAgICAv
LyBJZiB0aGUgc2luZ2xlIGltYWdlIGRyYXcgY292ZXJzIHRoZSB3aG9sZSBhcmVhLCB0aGVuIGp1
c3QgZHJhdyBvbmNlLgotICAgICAgICBpZiAoTlNDb250YWluc1JlY3Qob25lVGlsZVJlY3QsIE5T
TWFrZVJlY3QocmVjdC5vcmlnaW4ueCwgcmVjdC5vcmlnaW4ueSwgcmVjdC5zaXplLndpZHRoLCBy
ZWN0LnNpemUuaGVpZ2h0KSkpIHsKLSAgICAgICAgICAgIENHUmVjdCBmcm9tUmVjdDsKLQotICAg
ICAgICAgICAgZnJvbVJlY3Qub3JpZ2luLnggPSByZWN0Lm9yaWdpbi54IC0gb25lVGlsZVJlY3Qu
b3JpZ2luLng7Ci0gICAgICAgICAgICBmcm9tUmVjdC5vcmlnaW4ueSA9IHJlY3Qub3JpZ2luLnkg
LSBvbmVUaWxlUmVjdC5vcmlnaW4ueTsKLSAgICAgICAgICAgIGZyb21SZWN0LnNpemUgPSByZWN0
LnNpemU7Ci0KLSAgICAgICAgICAgIFtkZWNvZGVMb2NrIHVubG9ja107Ci0gICAgICAgICAgICAK
LSAgICAgICAgICAgIFtzZWxmIGRyYXdJbWFnZUF0SW5kZXg6W3NlbGYgY3VycmVudEZyYW1lXSBp
blJlY3Q6cmVjdCBmcm9tUmVjdDpmcm9tUmVjdCBjb21wb3NpdGVPcGVyYXRpb246TlNDb21wb3Np
dGVTb3VyY2VPdmVyIGNvbnRleHQ6YUNvbnRleHRdOwotCi0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KLQotICAgICAgICBDR1BhdHRlcm5SZWYgcGF0dGVybiA9IENHUGF0dGVybkNyZWF0
ZShzZWxmLCBDR1JlY3RNYWtlKDAsIDAsIHRpbGVTaXplLndpZHRoLCB0aWxlU2l6ZS5oZWlnaHQp
LAotICAgICAgICBDR0FmZmluZVRyYW5zZm9ybUlkZW50aXR5LCB0aWxlU2l6ZS53aWR0aCwgdGls
ZVNpemUuaGVpZ2h0LCAKLSAgICAgICAga0NHUGF0dGVyblRpbGluZ0NvbnN0YW50U3BhY2luZywg
VFJVRSwgJnBhdHRlcm5DYWxsYmFja3MpOwotICAgICAgICAKLSAgICAgICAgaWYgKHBhdHRlcm4p
IHsKLSAgICAgICAgICAgIENHQ29udGV4dFNhdmVHU3RhdGUgKGFDb250ZXh0KTsKLQotICAgICAg
ICAgICAgQ0dQb2ludCB0aWxlT3JpZ2luID0gQ0dQb2ludE1ha2Uob25lVGlsZVJlY3Qub3JpZ2lu
LngsIG9uZVRpbGVSZWN0Lm9yaWdpbi55KTsKLSAgICAgICAgICAgIFdLU2V0UGF0dGVyblBoYXNl
SW5Vc2VyU3BhY2UoYUNvbnRleHQsIHRpbGVPcmlnaW4pOwotCi0gICAgICAgICAgICBDR0NvbG9y
U3BhY2VSZWYgcGF0dGVyblNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlUGF0dGVybihOVUxMKTsK
LSAgICAgICAgICAgIENHQ29udGV4dFNldEZpbGxDb2xvclNwYWNlKGFDb250ZXh0LCBwYXR0ZXJu
U3BhY2UpOwotICAgICAgICAgICAgQ0dDb2xvclNwYWNlUmVsZWFzZShwYXR0ZXJuU3BhY2UpOwot
Ci0gICAgICAgICAgICBmbG9hdCBwYXR0ZXJuQWxwaGEgPSAxOwotICAgICAgICAgICAgQ0dDb250
ZXh0U2V0RmlsbFBhdHRlcm4oYUNvbnRleHQsIHBhdHRlcm4sICZwYXR0ZXJuQWxwaGEpOwotCi0g
ICAgICAgICAgICBOU0F1dG9yZWxlYXNlUG9vbCAqcG9vbCA9IFtbTlNBdXRvcmVsZWFzZVBvb2wg
YWxsb2NdIGluaXRdOwotICAgICAgICAgICAgW1tOU0dyYXBoaWNzQ29udGV4dCBncmFwaGljc0Nv
bnRleHRXaXRoR3JhcGhpY3NQb3J0OmFDb250ZXh0IGZsaXBwZWQ6Tk9dIHNldENvbXBvc2l0aW5n
T3BlcmF0aW9uOk5TQ29tcG9zaXRlU291cmNlT3Zlcl07Ci0gICAgICAgICAgICBbcG9vbCByZWxl
YXNlXTsKLQotICAgICAgICAgICAgQ0dDb250ZXh0RmlsbFJlY3QoYUNvbnRleHQsIHJlY3QpOwot
Ci0gICAgICAgICAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGFDb250ZXh0KTsKLQotICAgICAg
ICAgICAgQ0dQYXR0ZXJuUmVsZWFzZShwYXR0ZXJuKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIExPR19FUlJPUigidW5hYmxlIHRvIGNyZWF0ZSBwYXR0ZXJuIik7Ci0gICAgICAgIH0K
LSAgICB9Ci0gICAgCi0gICAgW2RlY29kZUxvY2sgdW5sb2NrXTsKLX0KLQotLSAodm9pZClzY2Fs
ZUFuZFRpbGVJblJlY3Q6KENHUmVjdClpciBmcm9tUmVjdDooQ0dSZWN0KWZyIAotICAgIHdpdGhI
b3Jpem9udGFsVGlsZVJ1bGU6KFdlYkltYWdlVGlsZVJ1bGUpaFJ1bGUgd2l0aFZlcnRpY2FsVGls
ZVJ1bGU6KFdlYkltYWdlVGlsZVJ1bGUpdlJ1bGUgY29udGV4dDooQ0dDb250ZXh0UmVmKWFDb250
ZXh0Ci17Ci0gICAgQVNTRVJUKGFDb250ZXh0KTsKLQotICAgIFtkZWNvZGVMb2NrIGxvY2tdOwot
ICAgIAotICAgIHNpemVfdCBmcmFtZSA9IFtzZWxmIGN1cnJlbnRGcmFtZV07Ci0gICAgQ0dJbWFn
ZVJlZiBpbWFnZSA9IFtzZWxmIGltYWdlQXRJbmRleDpmcmFtZV07Ci0gICAgaWYgKCFpbWFnZSkg
ewotICAgICAgICBbZGVjb2RlTG9jayB1bmxvY2tdOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgaWYgKGZyYW1lID09IDAgJiYgaXNTb2xpZENvbG9yKQotICAgICAgICBbc2VsZiBfZmls
bFNvbGlkQ29sb3JJblJlY3Q6aXIgY29tcG9zaXRlT3BlcmF0aW9uOiBOU0NvbXBvc2l0ZVNvdXJj
ZU92ZXIgY29udGV4dDogYUNvbnRleHRdOwotICAgIGVsc2UgewotICAgICAgICBDR0NvbnRleHRT
YXZlR1N0YXRlKGFDb250ZXh0KTsKLSAgICAgICAgQ0dTaXplIHRpbGVTaXplID0gZnIuc2l6ZTsK
LSAgICAgICAgIAotICAgICAgICAvLyBOb3cgc2NhbGUgdGhlIHNsaWNlIGluIHRoZSBhcHByb3By
aWF0ZSBkaXJlY3Rpb24gdXNpbmcgYW4gYWZmaW5lIHRyYW5zZm9ybSB0aGF0IHdlIHdpbGwgcGFz
cyBpbnRvCi0gICAgICAgIC8vIHRoZSBwYXR0ZXJuLgotICAgICAgICBmbG9hdCBzY2FsZVggPSAx
LjBmLCBzY2FsZVkgPSAxLjBmOwotCi0gICAgICAgIGlmIChoUnVsZSA9PSBXZWJJbWFnZVN0cmV0
Y2gpCi0gICAgICAgICAgICBzY2FsZVggPSBpci5zaXplLndpZHRoIC8gZnIuc2l6ZS53aWR0aDsK
LSAgICAgICAgaWYgKHZSdWxlID09IFdlYkltYWdlU3RyZXRjaCkKLSAgICAgICAgICAgIHNjYWxl
WSA9IGlyLnNpemUuaGVpZ2h0IC8gZnIuc2l6ZS5oZWlnaHQ7Ci0gICAgICAgIAotICAgICAgICBp
ZiAoaFJ1bGUgPT0gV2ViSW1hZ2VSZXBlYXQpCi0gICAgICAgICAgICBzY2FsZVggPSBzY2FsZVk7
Ci0gICAgICAgIGlmICh2UnVsZSA9PSBXZWJJbWFnZVJlcGVhdCkKLSAgICAgICAgICAgIHNjYWxl
WSA9IHNjYWxlWDsKLSAgICAgICAgICAgIAotICAgICAgICBpZiAoaFJ1bGUgPT0gV2ViSW1hZ2VS
b3VuZCkgewotICAgICAgICAgICAgLy8gQ29tcGxpY2F0ZWQgbWF0aCBlbnN1ZXMuCi0gICAgICAg
ICAgICBmbG9hdCBpbWFnZVdpZHRoID0gZnIuc2l6ZS53aWR0aCAqIHNjYWxlWTsKLSAgICAgICAg
ICAgIGZsb2F0IG5ld1dpZHRoID0gaXIuc2l6ZS53aWR0aCAvIGNlaWxmKGlyLnNpemUud2lkdGgg
LyBpbWFnZVdpZHRoKTsKLSAgICAgICAgICAgIHNjYWxlWCA9IG5ld1dpZHRoIC8gZnIuc2l6ZS53
aWR0aDsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYgKHZSdWxlID09IFdlYkltYWdl
Um91bmQpIHsKLSAgICAgICAgICAgIC8vIE1vcmUgY29tcGxpY2F0ZWQgbWF0aCBlbnN1ZXMuCi0g
ICAgICAgICAgICBmbG9hdCBpbWFnZUhlaWdodCA9IGZyLnNpemUuaGVpZ2h0ICogc2NhbGVYOwot
ICAgICAgICAgICAgZmxvYXQgbmV3SGVpZ2h0ID0gaXIuc2l6ZS5oZWlnaHQgLyBjZWlsZihpci5z
aXplLmhlaWdodCAvIGltYWdlSGVpZ2h0KTsKLSAgICAgICAgICAgIHNjYWxlWSA9IG5ld0hlaWdo
dCAvIGZyLnNpemUuaGVpZ2h0OwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBDR0FmZmlu
ZVRyYW5zZm9ybSBwYXR0ZXJuVHJhbnNmb3JtID0gQ0dBZmZpbmVUcmFuc2Zvcm1NYWtlU2NhbGUo
c2NhbGVYLCBzY2FsZVkpOwotCi0gICAgICAgIC8vIFBvc3NpYmxlIG9wdGltaXphdGlvbjogIFdl
IG1heSB3YW50IHRvIGNhY2hlIHRoZSBDR1BhdHRlcm5SZWYgICAgCi0gICAgICAgIENHUGF0dGVy
blJlZiBwYXR0ZXJuID0gQ0dQYXR0ZXJuQ3JlYXRlKHNlbGYsIENHUmVjdE1ha2UoZnIub3JpZ2lu
LngsIGZyLm9yaWdpbi55LCB0aWxlU2l6ZS53aWR0aCwgdGlsZVNpemUuaGVpZ2h0KSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0dGVyblRyYW5zZm9y
bSwgdGlsZVNpemUud2lkdGgsIHRpbGVTaXplLmhlaWdodCwgCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtDR1BhdHRlcm5UaWxpbmdDb25zdGFudFNwYWNp
bmcsIHRydWUsICZwYXR0ZXJuQ2FsbGJhY2tzKTsKLSAgICAgICAgaWYgKHBhdHRlcm4pIHsKLSAg
ICAgICAgICAgIC8vIFdlIHdhbnQgdG8gY29uc3RydWN0IHRoZSBwaGFzZSBzdWNoIHRoYXQgdGhl
IHBhdHRlcm4gaXMgY2VudGVyZWQgKHdoZW4gc3RyZXRjaCBpcyBub3QKLSAgICAgICAgICAgIC8v
IHNldCBmb3IgYSBwYXJ0aWN1bGFyIHJ1bGUpLgotICAgICAgICAgICAgZmxvYXQgaFBoYXNlID0g
c2NhbGVYICogZnIub3JpZ2luLng7Ci0gICAgICAgICAgICBmbG9hdCB2UGhhc2UgPSBzY2FsZVkg
KiAodGlsZVNpemUuaGVpZ2h0IC0gZnIub3JpZ2luLnkpOwotICAgICAgICAgICAgaWYgKGhSdWxl
ID09IFdlYkltYWdlUmVwZWF0KQotICAgICAgICAgICAgICAgIGhQaGFzZSAtPSBmbW9kZihpci5z
aXplLndpZHRoLCBzY2FsZVggKiB0aWxlU2l6ZS53aWR0aCkgLyAyLjBmOwotICAgICAgICAgICAg
aWYgKHZSdWxlID09IFdlYkltYWdlUmVwZWF0KQotICAgICAgICAgICAgICAgIHZQaGFzZSAtPSBm
bW9kZihpci5zaXplLmhlaWdodCwgc2NhbGVZICogdGlsZVNpemUuaGVpZ2h0KSAvIDIuMGY7Ci0g
ICAgICAgICAgICAKLSAgICAgICAgICAgIENHUG9pbnQgdGlsZU9yaWdpbiA9IENHUG9pbnRNYWtl
KGlyLm9yaWdpbi54IC0gaFBoYXNlLCBpci5vcmlnaW4ueSAtIHZQaGFzZSk7Ci0gICAgICAgICAg
ICBDR1BvaW50IHRyYW5zZm9ybWVkT3JpZ2luID0gQ0dQb2ludEFwcGx5QWZmaW5lVHJhbnNmb3Jt
KHRpbGVPcmlnaW4sIENHQ29udGV4dEdldENUTShhQ29udGV4dCkpOwotICAgICAgICAgICAgQ0dD
b250ZXh0U2V0UGF0dGVyblBoYXNlKGFDb250ZXh0LCBDR1NpemVNYWtlKHRyYW5zZm9ybWVkT3Jp
Z2luLngsIHRyYW5zZm9ybWVkT3JpZ2luLnkpKTsKLQotICAgICAgICAgICAgQ0dDb2xvclNwYWNl
UmVmIHBhdHRlcm5TcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZVBhdHRlcm4oTlVMTCk7Ci0gICAg
ICAgICAgICBDR0NvbnRleHRTZXRGaWxsQ29sb3JTcGFjZShhQ29udGV4dCwgcGF0dGVyblNwYWNl
KTsKLSAgICAgICAgICAgIENHQ29sb3JTcGFjZVJlbGVhc2UocGF0dGVyblNwYWNlKTsKLQotICAg
ICAgICAgICAgZmxvYXQgcGF0dGVybkFscGhhID0gMTsKLSAgICAgICAgICAgIENHQ29udGV4dFNl
dEZpbGxQYXR0ZXJuKGFDb250ZXh0LCBwYXR0ZXJuLCAmcGF0dGVybkFscGhhKTsKLQotICAgICAg
ICAgICAgTlNBdXRvcmVsZWFzZVBvb2wgKnBvb2wgPSBbW05TQXV0b3JlbGVhc2VQb29sIGFsbG9j
XSBpbml0XTsKLSAgICAgICAgICAgIFtbTlNHcmFwaGljc0NvbnRleHQgZ3JhcGhpY3NDb250ZXh0
V2l0aEdyYXBoaWNzUG9ydDphQ29udGV4dCBmbGlwcGVkOk5PXSBzZXRDb21wb3NpdGluZ09wZXJh
dGlvbjpOU0NvbXBvc2l0ZVNvdXJjZU92ZXJdOwotICAgICAgICAgICAgW3Bvb2wgcmVsZWFzZV07
Ci0KLSAgICAgICAgICAgIENHQ29udGV4dEZpbGxSZWN0IChhQ29udGV4dCwgaXIpOwotCi0gICAg
ICAgICAgICBDR1BhdHRlcm5SZWxlYXNlIChwYXR0ZXJuKTsKLSAgICAgICAgfQotICAgICAgICBl
bHNlIHsKLSAgICAgICAgICAgIExPR19FUlJPUigidW5hYmxlIHRvIGNyZWF0ZSBwYXR0ZXJuIik7
Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUgKGFD
b250ZXh0KTsKLSAgICB9Ci0gICAgCi0gICAgW2RlY29kZUxvY2sgdW5sb2NrXTsKLQotfQotCi0t
IChCT09MKWlzTnVsbAotewotICAgIGlmIChpbWFnZVNvdXJjZSkKLSAgICAgICAgcmV0dXJuIENH
SW1hZ2VTb3VyY2VHZXRTdGF0dXMoaW1hZ2VTb3VyY2UpIDwga0NHSW1hZ2VTdGF0dXNSZWFkaW5n
SGVhZGVyOwotICAgIHJldHVybiBZRVM7Ci19Ci0KLS0gKENHU2l6ZSlzaXplCi17Ci0gICAgaWYg
KGlzUERGKSB7Ci0gICAgICAgIGlmIChfUERGRG9jKSB7Ci0gICAgICAgICAgICBDR1JlY3QgbWVk
aWFCb3ggPSBbX1BERkRvYyBtZWRpYUJveF07Ci0gICAgICAgICAgICByZXR1cm4gbWVkaWFCb3gu
c2l6ZTsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChzaXplQXZhaWxhYmxl
ICYmICFoYXZlU2l6ZSkgewotICAgICAgICAgICAgW2RlY29kZUxvY2sgbG9ja107Ci0gICAgICAg
ICAgICBDRkRpY3Rpb25hcnlSZWYgcHJvcGVydGllcyA9IFtzZWxmIHByb3BlcnRpZXNBdEluZGV4
OjBdOwotICAgICAgICAgICAgaWYgKHByb3BlcnRpZXMpIHsKLSAgICAgICAgICAgICAgICBmbG9h
dCB3ID0gMC5mLCBoID0gMC5mOwotICAgICAgICAgICAgICAgIENGTnVtYmVyUmVmIG51bSA9IENG
RGljdGlvbmFyeUdldFZhbHVlKHByb3BlcnRpZXMsIGtDR0ltYWdlUHJvcGVydHlQaXhlbFdpZHRo
KTsKLSAgICAgICAgICAgICAgICBpZiAobnVtKQotICAgICAgICAgICAgICAgICAgICBDRk51bWJl
ckdldFZhbHVlKG51bSwga0NGTnVtYmVyRmxvYXQzMlR5cGUsICZ3KTsKLSAgICAgICAgICAgICAg
ICBudW0gPSBDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm9wZXJ0aWVzLCBrQ0dJbWFnZVByb3BlcnR5
UGl4ZWxIZWlnaHQpOwotICAgICAgICAgICAgICAgIGlmIChudW0pCi0gICAgICAgICAgICAgICAg
ICAgIENGTnVtYmVyR2V0VmFsdWUobnVtLCBrQ0ZOdW1iZXJGbG9hdDMyVHlwZSwgJmgpOwotCi0g
ICAgICAgICAgICAgICAgc2l6ZS53aWR0aCA9IHc7Ci0gICAgICAgICAgICAgICAgc2l6ZS5oZWln
aHQgPSBoOwotCi0gICAgICAgICAgICAgICAgaGF2ZVNpemUgPSBZRVM7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBbZGVjb2RlTG9jayB1bmxvY2tdOwotICAgICAgICB9Ci0gICAgfQotICAg
IAotICAgIHJldHVybiBzaXplOwotfQotCi0tIChmbG9hdClfZmxvYXRQcm9wZXJ0eTooQ0ZTdHJp
bmdSZWYpcHJvcGVydHkgdHlwZTooQ0ZTdHJpbmdSZWYpdHlwZSBhdDooc2l6ZV90KWkKLXsKLSAg
ICBbZGVjb2RlTG9jayBsb2NrXTsKLSAgICAKLSAgICBDRkRpY3Rpb25hcnlSZWYgcHJvcGVydGll
cyA9IFtzZWxmIHByb3BlcnRpZXNBdEluZGV4OmldOwotICAgIGlmICghcHJvcGVydGllcykgewot
ICAgICAgICBbZGVjb2RlTG9jayB1bmxvY2tdOwotICAgICAgICByZXR1cm4gMC5mOwotICAgIH0K
LSAgICAKLSAgICBDRkRpY3Rpb25hcnlSZWYgdHlwZVByb3BlcnRpZXMgPSBDRkRpY3Rpb25hcnlH
ZXRWYWx1ZShwcm9wZXJ0aWVzLCB0eXBlKTsKLSAgICBpZiAoIXR5cGVQcm9wZXJ0aWVzKSB7Ci0g
ICAgICAgIFtkZWNvZGVMb2NrIHVubG9ja107Ci0gICAgICAgIHJldHVybiAwLmY7Ci0gICAgfQot
ICAgIAotICAgIENGTnVtYmVyUmVmIG51bSA9IENGRGljdGlvbmFyeUdldFZhbHVlKHR5cGVQcm9w
ZXJ0aWVzLCBwcm9wZXJ0eSk7Ci0gICAgaWYgKCFudW0pIHsKLSAgICAgICAgW2RlY29kZUxvY2sg
dW5sb2NrXTsKLSAgICAgICAgcmV0dXJuIDAuZjsKLSAgICB9Ci0gICAgCi0gICAgZmxvYXQgdmFs
dWUgPSAwLmY7Ci0gICAgQ0ZOdW1iZXJHZXRWYWx1ZShudW0sIGtDRk51bWJlckZsb2F0MzJUeXBl
LCAmdmFsdWUpOwotCi0gICAgW2RlY29kZUxvY2sgdW5sb2NrXTsKLSAgICAKLSAgICByZXR1cm4g
dmFsdWU7Ci19Ci0KLS0gKGZsb2F0KV9mbG9hdEZpbGVQcm9wZXJ0eTooQ0ZTdHJpbmdSZWYpcHJv
cGVydHkgdHlwZTooQ0ZTdHJpbmdSZWYpdHlwZSBoYXNQcm9wZXJ0eTooQk9PTCAqKWhhc1Byb3Bl
cnR5OwotewotICAgIFtkZWNvZGVMb2NrIGxvY2tdOwotICAgIAotICAgICpoYXNQcm9wZXJ0eSA9
IE5POwotICAgIAotICAgIENGRGljdGlvbmFyeVJlZiBwcm9wZXJ0aWVzID0gW3NlbGYgZmlsZVBy
b3BlcnRpZXNdOwotICAgIGlmICghcHJvcGVydGllcykgewotICAgICAgICBbZGVjb2RlTG9jayB1
bmxvY2tdOwotICAgICAgICByZXR1cm4gMC5mOwotICAgIH0KLSAgICAKLSAgICBpZiAodHlwZSkg
ewotICAgICAgICBwcm9wZXJ0aWVzID0gQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocHJvcGVydGllcywg
dHlwZSk7Ci0gICAgICAgIGlmICghcHJvcGVydGllcykgewotICAgICAgICAgICAgW2RlY29kZUxv
Y2sgdW5sb2NrXTsKLSAgICAgICAgICAgIHJldHVybiAwLmY7Ci0gICAgICAgIH0KLSAgICB9Ci0g
ICAgCi0gICAgQ0ZOdW1iZXJSZWYgbnVtID0gQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocHJvcGVydGll
cywgcHJvcGVydHkpOwotICAgIGlmICghbnVtKSB7Ci0gICAgICAgIFtkZWNvZGVMb2NrIHVubG9j
a107Ci0gICAgICAgIHJldHVybiAwLmY7Ci0gICAgfQotICAgIAotICAgIGZsb2F0IHZhbHVlID0g
MC5mOwotICAgIENGTnVtYmVyR2V0VmFsdWUobnVtLCBrQ0ZOdW1iZXJGbG9hdDMyVHlwZSwgJnZh
bHVlKTsKLQotICAgIFtkZWNvZGVMb2NrIHVubG9ja107Ci0KLSAgICAqaGFzUHJvcGVydHkgPSBZ
RVM7Ci0gICAgCi0gICAgcmV0dXJuIHZhbHVlOwotfQotCi0jZGVmaW5lIE1JTklNVU1fRFVSQVRJ
T04gKC4xKQotCi0tIChmbG9hdClfZnJhbWVEdXJhdGlvbkF0OihzaXplX3QpaQotewotICAgIGZs
b2F0IGR1cmF0aW9uID0gW3NlbGYgX2Zsb2F0UHJvcGVydHk6a0NHSW1hZ2VQcm9wZXJ0eUdJRkRl
bGF5VGltZSB0eXBlOmtDR0ltYWdlUHJvcGVydHlHSUZEaWN0aW9uYXJ5IGF0OmldOwotICAgIGlm
IChkdXJhdGlvbiA8PSAwLjAxKSB7Ci0gICAgICAgIC8qCi0gICAgICAgICAgICBNYW55IGFubm95
aW5nIGFkcyBzcGVjaWZ5IGEgMCBkdXJhdGlvbiB0byBtYWtlIGFuIGltYWdlIGZsYXNoCi0gICAg
ICAgICAgICBhcyBxdWlja2x5IGFzIHBvc3NpYmxlLgotICAgICAgICAgICAgCi0gICAgICAgICAg
ICBXZSBmb2xsb3cgbW96aWxsYSdzIGJlaGF2aW9yIGFuZCBzZXQgdGhlIG1pbmltdW0gZHVyYXRp
b24gdG8gCi0gICAgICAgICAgICAxMDAgbXMuICBTZWUgNDA1MTM4OSBmb3IgbW9yZSBkZXRhaWxz
LgotICAgICAgICAqLwotICAgICAgICBkdXJhdGlvbiA9IE1JTklNVU1fRFVSQVRJT047Ci0gICAg
fQotICAgIHJldHVybiBkdXJhdGlvbjsKLX0KLQotLSAoZmxvYXQpX2ZyYW1lRHVyYXRpb24KLXsK
LSAgICBzaXplX3QgbnVtID0gW3NlbGYgbnVtYmVyT2ZJbWFnZXNdOwotICAgIGlmIChmcmFtZUR1
cmF0aW9uc1NpemUgJiYgbnVtID4gZnJhbWVEdXJhdGlvbnNTaXplKSB7Ci0gICAgICAgIGZyZWUo
ZnJhbWVEdXJhdGlvbnMpOwotICAgICAgICBmcmFtZUR1cmF0aW9ucyA9IE5VTEw7Ci0gICAgICAg
IGZyYW1lRHVyYXRpb25zU2l6ZSA9IDA7Ci0gICAgfQotICAgIAotICAgIGlmICghZnJhbWVEdXJh
dGlvbnMpIHsKLSAgICAgICAgc2l6ZV90IGk7Ci0KLSAgICAgICAgZnJhbWVEdXJhdGlvbnMgPSAo
ZmxvYXQgKiltYWxsb2Moc2l6ZW9mKGZsb2F0KSAqIG51bSk7Ci0gICAgICAgIGZvciAoaSA9IDA7
IGkgPCBudW07IGkrKykgewotICAgICAgICAgICAgZnJhbWVEdXJhdGlvbnNbaV0gPSBbc2VsZiBf
ZnJhbWVEdXJhdGlvbkF0OmldOwotICAgICAgICB9Ci0gICAgICAgIGZyYW1lRHVyYXRpb25zU2l6
ZSA9IG51bTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoZnJhbWVEdXJhdGlvbnNbY3VycmVudEZyYW1l
XSA9PSAwLmYpIHsKLSAgICAgICAgZnJhbWVEdXJhdGlvbnNbY3VycmVudEZyYW1lXSA9IFtzZWxm
IF9mcmFtZUR1cmF0aW9uQXQ6Y3VycmVudEZyYW1lXTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZnJh
bWVEdXJhdGlvbnNbY3VycmVudEZyYW1lXTsKLX0KLQotLSAoaW50KV9yZXBldGl0aW9uQ291bnQK
LXsKLSAgICBpbnQgY291bnQ7Ci0gICAgQk9PTCBoYXNQcm9wZXJ0eTsKLQotICAgIC8vIE5vIHBy
b3BlcnR5IG1lYW5zIGxvb3Agb25jZS4KLSAgICAvLyBBIHByb3BlcnR5IHdpdGggdmFsdWUgMCBt
ZWFucyBsb29wcyBmb3JldmVyLgotICAgIGNvdW50ID0gW3NlbGYgX2Zsb2F0RmlsZVByb3BlcnR5
OmtDR0ltYWdlUHJvcGVydHlHSUZMb29wQ291bnQgdHlwZTprQ0dJbWFnZVByb3BlcnR5R0lGRGlj
dGlvbmFyeSBoYXNQcm9wZXJ0eTomaGFzUHJvcGVydHldOwotICAgIGlmICghaGFzUHJvcGVydHkp
Ci0gICAgICAgIGNvdW50ID0gLTE7Ci0KLSAgICByZXR1cm4gY291bnQ7Ci19Ci0KLS0gKEJPT0wp
aXNBbmltYXRpb25GaW5pc2hlZAotewotICAgIHJldHVybiBhbmltYXRpb25GaW5pc2hlZDsKLX0K
LQotc3RhdGljIE5TTXV0YWJsZVNldCAqYWN0aXZlQW5pbWF0aW9uczsKLQotKyAodm9pZClzdG9w
QW5pbWF0aW9uc0luVmlldzooTlNWaWV3ICopYVZpZXcKLXsKLSAgICBOU0VudW1lcmF0b3IgKm9i
amVjdEVudW1lcmF0b3IgPSBbYWN0aXZlQW5pbWF0aW9ucyBvYmplY3RFbnVtZXJhdG9yXTsKLSAg
ICBXZWJJbWFnZURhdGEgKmFuaW1hdGlvbjsKLSAgICBOU011dGFibGVTZXQgKnJlbmRlcmVyc1Rv
U3RvcCA9IG5pbDsKLQotICAgIC8vIERldGVybWluZSBhbGwgdGhlIHJlbmRlcmVycyB0aGF0IGFy
ZSBkcmF3aW5nIGFuaW1hdGlvbnMgaW4gdGhlIHZpZXcuCi0gICAgLy8gQSBzZXQgb2Ygc2V0cywg
b25lIHNldCBvZiByZW5kZXJlcnMgZm9yIGVhY2ggaW1hZ2UgYmVpbmcgYW5pbWF0ZWQKLSAgICAv
LyBpbiB0aGUgdmlldy4gIEl0IGlzIG5lY2Vzc2FyeSB0byBnYXRoZXIgdGhlIGFsbCByZW5kZXJl
cnMgdG8gc3RvcAotICAgIC8vIGJlZm9yZSBhY3R1YWxseSBzdG9wcGluZyB0aGVtIGJlY2F1c2Ug
dGhlIHByb2Nlc3Mgb2Ygc3RvcHBpbmcgdGhlbQotICAgIC8vIHdpbGwgbW9kaWZ5IHRoZSBhY3Rp
dmUgYW5pbWF0aW9ucyBhbmQgYW5pbWF0aW5nIHJlbmRlcmVyIGNvbGxlY3Rpb25zLgotICAgIHdo
aWxlICgoYW5pbWF0aW9uID0gW29iamVjdEVudW1lcmF0b3IgbmV4dE9iamVjdF0pKSB7Ci0gICAg
ICAgIE5TU2V0ICpyZW5kZXJlcnNJblZpZXcgPSAoTlNTZXQgKilDRkRpY3Rpb25hcnlHZXRWYWx1
ZShhbmltYXRpb24tPmFuaW1hdGluZ1JlbmRlcmVycywgYVZpZXcpOwotICAgICAgICBpZiAocmVu
ZGVyZXJzSW5WaWV3KSB7Ci0gICAgICAgICAgICBpZiAoIXJlbmRlcmVyc1RvU3RvcCkKLSAgICAg
ICAgICAgICAgICByZW5kZXJlcnNUb1N0b3AgPSBbW05TTXV0YWJsZVNldCBhbGxvY10gaW5pdF07
Ci0gICAgICAgICAgICBbcmVuZGVyZXJzVG9TdG9wIHVuaW9uU2V0OnJlbmRlcmVyc0luVmlld107
Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBOb3cgdGVsbCB0aGVtIGFsbCB0byBzdG9wIGRy
YXdpbmcuCi0gICAgW3JlbmRlcmVyc1RvU3RvcCBtYWtlT2JqZWN0c1BlcmZvcm1TZWxlY3RvcjpA
c2VsZWN0b3Ioc3RvcEFuaW1hdGlvbildOwotICAgIFtyZW5kZXJlcnNUb1N0b3AgcmVsZWFzZV07
Ci19Ci0KLS0gKHZvaWQpYWRkQW5pbWF0aW5nUmVuZGVyZXI6KFdlYkltYWdlUmVuZGVyZXIgKily
IGluVmlldzooTlNWaWV3ICopdmlldwotewotICAgIGlmICghYW5pbWF0aW5nUmVuZGVyZXJzKQot
ICAgICAgICBhbmltYXRpbmdSZW5kZXJlcnMgPSBDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKE5V
TEwsIDAsIE5VTEwsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKTsKLSAgICAKLSAg
ICBOU011dGFibGVTZXQgKnJlbmRlcmVycyA9IChOU011dGFibGVTZXQgKilDRkRpY3Rpb25hcnlH
ZXRWYWx1ZShhbmltYXRpbmdSZW5kZXJlcnMsIHZpZXcpOwotICAgIGlmICghcmVuZGVyZXJzKSB7
Ci0gICAgICAgIHJlbmRlcmVycyA9IFtbTlNNdXRhYmxlU2V0IGFsbG9jXSBpbml0XTsKLSAgICAg
ICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoYW5pbWF0aW5nUmVuZGVyZXJzLCB2aWV3LCByZW5kZXJl
cnMpOwotICAgICAgICBbcmVuZGVyZXJzIHJlbGVhc2VdOwotICAgIH0KLSAgICAgICAgICAgIAot
ICAgIFtyZW5kZXJlcnMgYWRkT2JqZWN0OnJdOwotCi0gICAgaWYgKCFhY3RpdmVBbmltYXRpb25z
KQotICAgICAgICBhY3RpdmVBbmltYXRpb25zID0gW1tOU011dGFibGVTZXQgYWxsb2NdIGluaXRd
OwotICAgIAotICAgIFthY3RpdmVBbmltYXRpb25zIGFkZE9iamVjdDpzZWxmXTsKLX0KLQotdHlw
ZWRlZiBzdHJ1Y3QgewotICAgIFdlYkltYWdlUmVuZGVyZXIgKnJlbmRlcmVyOwotICAgIENGTXV0
YWJsZUFycmF5UmVmIHZpZXdzVG9SZW1vdmU7Ci19IFJlbW92ZVJlbmRlcmVyUGFyYW1ldGVyczsK
LQotc3RhdGljIHZvaWQgcmVtb3ZlQW5pbWF0aW5nUmVuZGVyZXJGcm9tVmlldyhjb25zdCB2b2lk
ICprZXksIGNvbnN0IHZvaWQgKnZhbHVlLCB2b2lkICpjb250ZXh0KQotewotICAgIE5TVmlldyAq
dmlldyA9IChOU1ZpZXcgKilrZXk7Ci0gICAgTlNNdXRhYmxlU2V0ICpyZW5kZXJlcnMgPSAoTlNN
dXRhYmxlU2V0ICopdmFsdWU7Ci0gICAgUmVtb3ZlUmVuZGVyZXJQYXJhbWV0ZXJzICpwYXJhbWV0
ZXJzID0gKFJlbW92ZVJlbmRlcmVyUGFyYW1ldGVycyAqKWNvbnRleHQ7Ci0gICAgW3JlbmRlcmVy
cyByZW1vdmVPYmplY3Q6cGFyYW1ldGVycy0+cmVuZGVyZXJdOwotICAgIGlmIChbcmVuZGVyZXJz
IGNvdW50XSA9PSAwKSB7Ci0gICAgICAgIENGTXV0YWJsZUFycmF5UmVmIHZpZXdzVG9SZW1vdmUg
PSBwYXJhbWV0ZXJzLT52aWV3c1RvUmVtb3ZlOwotICAgICAgICBpZiAodmlld3NUb1JlbW92ZSA9
PSBOVUxMKSB7Ci0gICAgICAgICAgICB2aWV3c1RvUmVtb3ZlID0gQ0ZBcnJheUNyZWF0ZU11dGFi
bGUoTlVMTCwgMCwgTlVMTCk7Ci0gICAgICAgICAgICBwYXJhbWV0ZXJzLT52aWV3c1RvUmVtb3Zl
ID0gdmlld3NUb1JlbW92ZTsKLSAgICAgICAgfQotICAgICAgICBDRkFycmF5QXBwZW5kVmFsdWUo
dmlld3NUb1JlbW92ZSwgdmlldyk7Ci0gICAgfQotfQotCi1zdGF0aWMgdm9pZCByZW1vdmVGcm9t
RGljdGlvbmFyeShjb25zdCB2b2lkICp2YWx1ZSwgdm9pZCAqY29udGV4dCkKLXsKLSAgICBDRk11
dGFibGVEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnkgPSAoQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZilj
b250ZXh0OwotICAgIENGRGljdGlvbmFyeVJlbW92ZVZhbHVlKGRpY3Rpb25hcnksIHZhbHVlKTsK
LX0KLQotLSAodm9pZClyZW1vdmVBbmltYXRpbmdSZW5kZXJlcjooV2ViSW1hZ2VSZW5kZXJlciAq
KXIKLXsKLSAgICAvLyBJdCdzIGltcG9ydGFudCBub3QgdG8gZG8gYW55dGhpbmcgaGVyZSB0byBj
b3VsZCByZXRhaW4gdGhlIHZpZXcsIHNpbmNlIHRoaXMgaXMgY2FsbGVkCi0gICAgLy8gZnJvbSBj
b2RlIHRvIHN0b3AgYW5pbWF0aW9ucywgd2hpY2ggaXMgY2FsbGVkIGluc2lkZSAtW1dlYkhUTUxW
aWV3IGRlYWxsb2NdLgotICAgIC8vIE9mIGNvdXJzZSwgdGhhdCdzIGFsc28gYSBkZXNpZ24gcHJv
YmxlbSB3ZSdsbCBoYXZlIHRvIGZpeCBldmVudHVhbGx5LCBzaW5jZSBkZWFsbG9jCi0gICAgLy8g
ZG9lc24ndCBoYXBwZW4gYXQgYWxsIHdoZW4gcnVubmluZyB3aXRoIGdhcmJhZ2UgY29sbGVjdGlv
bi4KLSAgICBpZiAoYW5pbWF0aW5nUmVuZGVyZXJzKSB7Ci0gICAgICAgIFJlbW92ZVJlbmRlcmVy
UGFyYW1ldGVycyBwYXJhbWV0ZXJzID0geyByLCBOVUxMIH07Ci0gICAgICAgIENGRGljdGlvbmFy
eUFwcGx5RnVuY3Rpb24oYW5pbWF0aW5nUmVuZGVyZXJzLCByZW1vdmVBbmltYXRpbmdSZW5kZXJl
ckZyb21WaWV3LCAmcGFyYW1ldGVycyk7Ci0gICAgICAgIENGTXV0YWJsZUFycmF5UmVmIHZpZXdz
VG9SZW1vdmUgPSBwYXJhbWV0ZXJzLnZpZXdzVG9SZW1vdmU7Ci0gICAgICAgIGlmICh2aWV3c1Rv
UmVtb3ZlKSB7Ci0gICAgICAgICAgICBDRlJhbmdlIHJhbmdlID0gQ0ZSYW5nZU1ha2UoMCwgQ0ZB
cnJheUdldENvdW50KHZpZXdzVG9SZW1vdmUpKTsKLSAgICAgICAgICAgIENGQXJyYXlBcHBseUZ1
bmN0aW9uKHZpZXdzVG9SZW1vdmUsIHJhbmdlLCByZW1vdmVGcm9tRGljdGlvbmFyeSwgYW5pbWF0
aW5nUmVuZGVyZXJzKTsKLSAgICAgICAgICAgIENGUmVsZWFzZSh2aWV3c1RvUmVtb3ZlKTsKLSAg
ICAgICAgICAgIGlmIChDRkRpY3Rpb25hcnlHZXRDb3VudChhbmltYXRpbmdSZW5kZXJlcnMpID09
IDApIHsKLSAgICAgICAgICAgICAgICBbYWN0aXZlQW5pbWF0aW9ucyByZW1vdmVPYmplY3Q6c2Vs
Zl07Ci0gICAgICAgICAgICAgICAgW3NlbGYgX3N0b3BBbmltYXRpb25dOwotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0gICAgfQotfQotCi0tICh2b2lkKXJlc2V0QW5pbWF0aW9uCi17Ci0gICAg
W3NlbGYgX3N0b3BBbmltYXRpb25dOwotICAgIGN1cnJlbnRGcmFtZSA9IDA7Ci0gICAgcmVwZXRp
dGlvbnNDb21wbGV0ZSA9IDA7Ci0gICAgYW5pbWF0aW9uRmluaXNoZWQgPSBOTzsKLX0KLQotLSAo
dm9pZClfc3RvcEFuaW1hdGlvbgotewotICAgIC8vIFRoaXMgdGltZXIgaXMgdXNlZCB0byBhbmlt
YXRlIGFsbCBvY2N1cmVuY2VzIG9mIHRoaXMgaW1hZ2UuICBEb24ndCBpbnZhbGlkYXRlCi0gICAg
Ly8gdGhlIHRpbWVyIHVubGVzcyBhbGwgcmVuZGVyZXJzIGhhdmUgc3RvcHBlZCBkcmF3aW5nLgot
ICAgIFtmcmFtZVRpbWVyIGludmFsaWRhdGVdOwotICAgIFtmcmFtZVRpbWVyIHJlbGVhc2VdOwot
ICAgIGZyYW1lVGltZXIgPSBuaWw7Ci19Ci0KLXN0YXRpYyB2b2lkIHNldE5lZWRzRGlzcGxheUlu
QW5pbWF0aW9uUmVjdChjb25zdCB2b2lkICprZXksIGNvbnN0IHZvaWQgKnZhbHVlLCB2b2lkICpj
b250ZXh0KQotewotICAgIE5TVmlldyAqdmlldyA9IChOU1ZpZXcgKilrZXk7Ci0gICAgTlNTZXQg
KnJlbmRlcmVycyA9IChOU1NldCAqKXZhbHVlOwotICAgIE5TRW51bWVyYXRvciAqcmVuZGVyZXJF
bnVtZXJhdG9yID0gW3JlbmRlcmVycyBvYmplY3RFbnVtZXJhdG9yXTsKLSAgICBXZWJJbWFnZVJl
bmRlcmVyICpyZW5kZXJlcjsKLSAgICB3aGlsZSAoKHJlbmRlcmVyID0gW3JlbmRlcmVyRW51bWVy
YXRvciBuZXh0T2JqZWN0XSkpIHsKLSAgICAgICAgW3ZpZXcgc2V0TmVlZHNEaXNwbGF5SW5SZWN0
OltyZW5kZXJlciB0YXJnZXRBbmltYXRpb25SZWN0XV07Ci0gICAgfQotfQotCi0tICh2b2lkKV9u
ZXh0RnJhbWU6KGlkKWNvbnRleHQKLXsKLSAgICAvLyBSZWxlYXNlIHRoZSB0aW1lciB0aGF0IGp1
c3QgZmlyZWQuCi0gICAgW2ZyYW1lVGltZXIgcmVsZWFzZV07Ci0gICAgZnJhbWVUaW1lciA9IG5p
bDsKLSAgICAKLSAgICBjdXJyZW50RnJhbWUrKzsKLSAgICBpZiAoY3VycmVudEZyYW1lID49IFtz
ZWxmIG51bWJlck9mSW1hZ2VzXSkgewotICAgICAgICByZXBldGl0aW9uc0NvbXBsZXRlICs9IDE7
Ci0gICAgICAgIGlmIChbc2VsZiBfcmVwZXRpdGlvbkNvdW50XSAmJiByZXBldGl0aW9uc0NvbXBs
ZXRlID49IFtzZWxmIF9yZXBldGl0aW9uQ291bnRdKSB7Ci0gICAgICAgICAgICBhbmltYXRpb25G
aW5pc2hlZCA9IFlFUzsKLSAgICAgICAgICAgIGN1cnJlbnRGcmFtZS0tOwotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGN1cnJlbnRGcmFtZSA9IDA7Ci0gICAgfQotICAg
IAotICAgIGlmIChhbmltYXRpbmdSZW5kZXJlcnMpCi0gICAgICAgIENGRGljdGlvbmFyeUFwcGx5
RnVuY3Rpb24oYW5pbWF0aW5nUmVuZGVyZXJzLCBzZXROZWVkc0Rpc3BsYXlJbkFuaW1hdGlvblJl
Y3QsIE5VTEwpOwotfQotCi0tIChCT09MKXNob3VsZEFuaW1hdGUKLXsKLSAgICByZXR1cm4gW3Nl
bGYgbnVtYmVyT2ZJbWFnZXNdID4gMSAmJiAhW3NlbGYgaXNBbmltYXRpb25GaW5pc2hlZF07Ci19
Ci0KLS0gKHZvaWQpYW5pbWF0ZQotewotICAgIGlmIChmcmFtZVRpbWVyICYmIFtmcmFtZVRpbWVy
IGlzVmFsaWRdKQotICAgICAgICByZXR1cm47Ci0gICAgZnJhbWVUaW1lciA9IFtbTlNUaW1lciBz
Y2hlZHVsZWRUaW1lcldpdGhUaW1lSW50ZXJ2YWw6W3NlbGYgX2ZyYW1lRHVyYXRpb25dCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0OnNl
bGYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vs
ZWN0b3I6QHNlbGVjdG9yKF9uZXh0RnJhbWU6KQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1c2VySW5mbzpuaWwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGVhdHM6Tk9dIHJldGFpbl07Ci19Ci0K
LS0odm9pZClfY3JlYXRlUERGV2l0aERhdGE6KE5TRGF0YSAqKWRhdGEKLXsKLSAgICBpZiAoIV9Q
REZEb2MpIHsKLSAgICAgICAgX1BERkRvYyA9IFtbV2ViUERGRG9jdW1lbnQgYWxsb2NdIGluaXRX
aXRoRGF0YTpkYXRhXTsKLSAgICB9Ci19Ci0KLS0gKENHUERGRG9jdW1lbnRSZWYpX1BERkRvY3Vt
ZW50UmVmCi17Ci0gICAgcmV0dXJuIFtfUERGRG9jIGRvY3VtZW50UmVmXTsKLX0KLQotLSAodm9p
ZClfUERGRHJhd0luQ29udGV4dDooQ0dDb250ZXh0UmVmKWNvbnRleHQKLXsKLSAgICBDR1BERkRv
Y3VtZW50UmVmIGRvY3VtZW50ID0gW3NlbGYgX1BERkRvY3VtZW50UmVmXTsKLSAgICBpZiAoZG9j
dW1lbnQgIT0gTlVMTCkgewotICAgICAgICBDR1JlY3QgICAgICAgbWVkaWFCb3ggPSBbX1BERkRv
YyBtZWRpYUJveF07Ci0gICAgICAgIAotICAgICAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGNvbnRl
eHQpOwotICAgICAgICAvLyBSb3RhdGUgdHJhbnNsYXRlIGltYWdlIGludG8gcG9zaXRpb24gYWNj
b3JkaW5nIHRvIGRvYyBwcm9wZXJ0aWVzLgotICAgICAgICBbX1BERkRvYyBhZGp1c3RDVE06Y29u
dGV4dF07Ci0KLSAgICAgICAgLy8gTWVkaWEgYm94IG1heSBoYXZlIG5vbi16ZXJvIG9yaWdpbiB3
aGljaCB3ZSBpZ25vcmUuIENHUERGRG9jdW1lbnRTaG93UGFnZSBwYWdlcyBzdGFydAotICAgICAg
ICAvLyBhdCAxLCBub3QgMC4KLSAgICAgICAgQ0dDb250ZXh0RHJhd1BERkRvY3VtZW50KGNvbnRl
eHQsIENHUmVjdE1ha2UoMCwgMCwgbWVkaWFCb3guc2l6ZS53aWR0aCwgbWVkaWFCb3guc2l6ZS5o
ZWlnaHQpLCBkb2N1bWVudCwgMSk7Ci0KLSAgICAgICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0ZShj
b250ZXh0KTsKLSAgICB9Ci19Ci0KLS0gKEJPT0wpX1BERkRyYXdGcm9tUmVjdDooTlNSZWN0KXNy
Y1JlY3QgdG9SZWN0OihOU1JlY3QpZHN0UmVjdCBvcGVyYXRpb246KE5TQ29tcG9zaXRpbmdPcGVy
YXRpb24pb3AgYWxwaGE6KGZsb2F0KWFscGhhIGZsaXBwZWQ6KEJPT0wpZmxpcHBlZCBjb250ZXh0
OihDR0NvbnRleHRSZWYpY29udGV4dAotewotICAgIGZsb2F0IGhTY2FsZSwgdlNjYWxlOwotCi0g
ICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShjb250ZXh0KTsKLQotICAgIE5TQXV0b3JlbGVhc2VQb29s
ICpwb29sID0gW1tOU0F1dG9yZWxlYXNlUG9vbCBhbGxvY10gaW5pdF07Ci0gICAgW1tOU0dyYXBo
aWNzQ29udGV4dCBncmFwaGljc0NvbnRleHRXaXRoR3JhcGhpY3NQb3J0OmNvbnRleHQgZmxpcHBl
ZDpOT10gc2V0Q29tcG9zaXRpbmdPcGVyYXRpb246b3BdOwotICAgIFtwb29sIHJlbGVhc2VdOwot
Ci0gICAgLy8gU2NhbGUgYW5kIHRyYW5zbGF0ZSBzbyB0aGUgZG9jdW1lbnQgaXMgcmVuZGVyZWQg
aW4gdGhlIGNvcnJlY3QgbG9jYXRpb24uCi0gICAgaFNjYWxlID0gZHN0UmVjdC5zaXplLndpZHRo
ICAvIHNyY1JlY3Quc2l6ZS53aWR0aDsKLSAgICB2U2NhbGUgPSBkc3RSZWN0LnNpemUuaGVpZ2h0
IC8gc3JjUmVjdC5zaXplLmhlaWdodDsKLQotICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShjb250
ZXh0LCBkc3RSZWN0Lm9yaWdpbi54IC0gc3JjUmVjdC5vcmlnaW4ueCAqIGhTY2FsZSwgZHN0UmVj
dC5vcmlnaW4ueSAtIHNyY1JlY3Qub3JpZ2luLnkgKiB2U2NhbGUpOwotICAgIENHQ29udGV4dFNj
YWxlQ1RNKGNvbnRleHQsIGhTY2FsZSwgdlNjYWxlKTsKLQotICAgIC8vIFJldmVyc2UgaWYgZmxp
cHBlZCBpbWFnZS4KLSAgICBpZiAoZmxpcHBlZCkgewotICAgICAgICBDR0NvbnRleHRTY2FsZUNU
TShjb250ZXh0LCAxLCAtMSk7Ci0gICAgICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShjb250ZXh0
LCAwLCAtZHN0UmVjdC5zaXplLmhlaWdodCk7Ci0gICAgfQotCi0gICAgLy8gQ2xpcCB0byBkZXN0
aW5hdGlvbiBpbiBjYXNlIHdlIGFyZSBpbWFnaW5nIHBhcnQgb2YgdGhlIHNvdXJjZSBvbmx5Ci0g
ICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjb250ZXh0LCBDR1JlY3RJbnRlZ3JhbCgqKENHUmVjdCop
JnNyY1JlY3QpKTsKLQotICAgIC8vIGFuZCBkcmF3Ci0gICAgW3NlbGYgX1BERkRyYXdJbkNvbnRl
eHQ6Y29udGV4dF07Ci0KLSAgICAvLyBkb25lIHdpdGggb3VyIGZhbmN5IHRyYW5zZm9ybXMKLSAg
ICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGNvbnRleHQpOwotCi0gICAgcmV0dXJuIFlFUzsKLX0K
LQotQGVuZApJbmRleDogV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxNDQxNikKKysrIFdlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw3MCBAQAogMjAwNi0wNS0xNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBs
ZS5jb20+CiAKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
LSBodHRwOi8vYnVnemlsbGEub3BlbmRhcndpbi5vcmcvc2hvd19idWcuY2dpP2lkPTg5NDAKKyAg
ICAgICAgICByZW1vdmUgZXh0cmEgY29weSBvZiBpbWFnZSBjb2RlCisKKyAgICAgICAgKiBFbmds
aXNoLmxwcm9qL1N0cmluZ3NOb3RUb0JlTG9jYWxpemVkLnR4dDogVXBkYXRlZCBmb3IgbWFueSBy
ZWNlbnQgY2hhbmdlcy4KKworICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOiBSZW1vdmVkIGZpbGVzLgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkltYWdlRGF0
YS5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkltYWdlRGF0YS5tOiBS
ZW1vdmVkLgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkltYWdlRGVjb2RlSXRlbS5oOiBS
ZW1vdmVkLgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkltYWdlRGVjb2RlSXRlbS5tOiBS
ZW1vdmVkLgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkltYWdlRGVjb2Rlci5oOiBSZW1v
dmVkLgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkltYWdlRGVjb2Rlci5tOiBSZW1vdmVk
LgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkltYWdlUmVuZGVyZXIuaDogUmVtb3ZlZC4K
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbWFnZVJlbmRlcmVyLm06IFJlbW92ZWQuCisK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbWFnZVJlbmRlcmVyRmFjdG9yeS5oOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkltYWdlUmVuZGVyZXJGYWN0b3J5Lm06IFJlbW92ZWQg
ZXZlcnl0aGluZyBleGNlcHQgZm9yCisgICAgICAgIHNob3VsZFVzZVRocmVhZGVkRGVjb2Rpbmcs
IHNldFNob3VsZFVzZVRocmVhZGVkRGVjb2RpbmcsIGFuZCBpbWFnZURhdGFGb3JOYW1lOi4KKwor
ICAgICAgICAqIE1pc2MvV2ViTlNQYXN0ZWJvYXJkRXh0cmFzLmg6IFJlbW92ZWQgV2ViSW1hZ2VS
ZW5kZXJlciBwYXJhbWV0ZXIgZnJvbQorICAgICAgICBfd2ViX2RlY2xhcmVBbmRXcml0ZURyYWdJ
bWFnZSBhbmQgcmVuYW1lZCBfd2ViX2RlY2xhcmVBbmRXcml0ZURyYWdJbWFnZUVsZW1lbnQuCisg
ICAgICAgICogTWlzYy9XZWJOU1Bhc3RlYm9hcmRFeHRyYXMubToKKyAgICAgICAgKC1bTlNQYXN0
ZWJvYXJkIF93ZWJfd3JpdGVJbWFnZTplbGVtZW50OlVSTDp0aXRsZTphcmNoaXZlOnR5cGVzOl0p
OiBDaGFuZ2VkIHRvCisgICAgICAgIGNhbGwgK1tXZWJGcmFtZUJyaWRnZSBzdXBwb3J0ZWRJbWFn
ZVJlc291cmNlTUlNRVR5cGVzXSBpbnN0ZWFkIG9mCisgICAgICAgIC1bV2ViSW1hZ2VSZW5kZXJl
ckZhY3Rvcnkgc3VwcG9ydGVkTUlNRVR5cGVzXS4KKyAgICAgICAgKC1bTlNQYXN0ZWJvYXJkIF93
ZWJfZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlRWxlbWVudDpVUkw6dGl0bGU6YXJjaGl2ZTpzb3Vy
Y2U6XSk6CisgICAgICAgIFJlbW92ZWQgV2ViSW1hZ2VSZW5kZXJlciBwYXJhbWV0ZXIsIGFuZCB1
cGRhdGVkIGNvZGUgc2luY2UgaXQgd2FzIGFsd2F5cyBuaWwuCisKKyAgICAgICAgKiBNaXNjL1dl
Yk5TVmlld0V4dHJhcy5oOiBSZW1vdmVkIFdlYkltYWdlUmVuZGVyZXIgcGFyYW1ldGVyIGZyb20K
KyAgICAgICAgX3dlYl9kcmFnSW1hZ2UgYW5kIHJlbmFtZWQgX3dlYl9kcmFnSW1hZ2VFbGVtZW50
LgorICAgICAgICAqIE1pc2MvV2ViTlNWaWV3RXh0cmFzLm06CisgICAgICAgICgtW05TVmlldyBf
d2ViX2RyYWdJbWFnZUVsZW1lbnQ6cmVjdDpldmVudDpwYXN0ZWJvYXJkOnNvdXJjZTpvZmZzZXQ6
XSk6CisgICAgICAgIFJlbW92ZWQgV2ViSW1hZ2VSZW5kZXJlciBwYXJhbWV0ZXIsIGFuZCB1cGRh
dGVkIGNvZGUgc2luY2UgaXQgd2FzIGFsd2F5cyBuaWwuCisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubTogKEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKTog
QWRkZWQgc29tZSBuZXcKKyAgICAgICAgZnVuY3Rpb25zIG5vdyB1c2VkIGJ5IFdlYkNvcmUuCisK
KyAgICAgICAgKiBXZWJWaWV3L1dlYkRhdGFTb3VyY2UubTogKC1bV2ViRGF0YVNvdXJjZSBfZG9j
dW1lbnRGcmFnbWVudFdpdGhBcmNoaXZlOl0pOgorICAgICAgICBDYWxsICtbV2ViRnJhbWVCcmlk
Z2Ugc3VwcG9ydGVkSW1hZ2VSZXNvdXJjZU1JTUVUeXBlc10gaW5zdGVhZCBvZgorICAgICAgICAt
W1dlYkltYWdlUmVuZGVyZXJGYWN0b3J5IHN1cHBvcnRlZE1JTUVUeXBlc10uCisKKyAgICAgICAg
KiBXZWJWaWV3L1dlYkZyYW1lVmlldy5tOiBSZW1vdmVkIGluY2x1ZGUgb2YgV2ViSW1hZ2VSZW5k
ZXJlci5oLgorCisgICAgICAgICogV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubTogKCtb
V2ViSFRNTFJlcHJlc2VudGF0aW9uIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzXSk6CisgICAgICAg
IFJlbW92ZWQgY2FsbCB0byArW1dlYkltYWdlUmVuZGVyZXJGYWN0b3J5IGNyZWF0ZVNoYXJlZEZh
Y3RvcnldLgorCisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tOgorICAgICAgICAoLVtX
ZWJIVE1MVmlldyBfaW1hZ2VFeGlzdHNBdFBhdGhzOl0pOiBDYWxsICtbV2ViRnJhbWVCcmlkZ2Ug
c3VwcG9ydGVkSW1hZ2VSZXNvdXJjZU1JTUVUeXBlc10KKyAgICAgICAgaW5zdGVhZCBvZiAtW1dl
YkltYWdlUmVuZGVyZXJGYWN0b3J5IHN1cHBvcnRlZE1JTUVUeXBlc10uCisgICAgICAgICgtW1dl
YkhUTUxWaWV3IF9kb2N1bWVudEZyYWdtZW50V2l0aFBhdGhzOl0pOiBEaXR0by4KKyAgICAgICAg
KC1bV2ViSFRNTFZpZXcgX3N0YXJ0RHJhZ2dpbmdJbWFnZTphdDpvcGVyYXRpb246ZXZlbnQ6c291
cmNlSXNESFRNTDpESFRNTFdyb3RlRGF0YTpdKTogVXBkYXRlCisgICAgICAgIHRvIG5vIGxvbmdl
ciBwYXNzIG5pbCBmb3IgYW4gaW1hZ2UgdG8gX3dlYl9kZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2VF
bGVtZW50IGFuZCB0bworICAgICAgICBfd2ViX2RyYWdJbWFnZUVsZW1lbnQuCisgICAgICAgICgt
W1dlYkhUTUxWaWV3IGRlYWxsb2NdKTogUmVtb3ZlIGNhbGwgdG8gbm93LXVubmVlZGVkIF9yZXNl
dC4KKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgZmluYWxpemVdKTogRGl0dG8uCisgICAgICAgICgt
W1dlYkhUTUxWaWV3IHZpZXdEaWRNb3ZlVG9XaW5kb3ddKTogUmVtb3ZlIGxvZ2ljIGZvciBjYWxs
aW5nIF9yZXNldCwgaW5jbHVkaW5nIHRoZSBpbldpbmRvdworICAgICAgICBib29sZWFuIGZpZWxk
LgorCisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlld0ludGVybmFsLmg6IFJlbW92ZWQgaW5X
aW5kb3cgYm9vbGVhbi4KKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3UHJpdmF0ZS5oOiBS
ZW1vdmVkIF9yZXNldCBtZXRob2QuCisKKzIwMDYtMDUtMTYgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgorCiAgICAgICAgIFJldmlld2VkIGJ5IEh5YXR0LgogCiAgICAgICAgIC0gZml4
IGh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg5OApJbmRl
eDogV2ViS2l0L01pc2MvV2ViTlNQYXN0ZWJvYXJkRXh0cmFzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L01pc2MvV2ViTlNQYXN0ZWJvYXJkRXh0cmFzLmgJKHJldmlzaW9uIDE0NDE2KQorKysgV2Vi
S2l0L01pc2MvV2ViTlNQYXN0ZWJvYXJkRXh0cmFzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA1IEFwcGxlIENvbXB1dGVyLCBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2IEFwcGxlIENv
bXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0yOSw3ICsyOSw2IEBACiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRp
b24uaD4KIAogQGNsYXNzIFdlYkFyY2hpdmU7Ci1AY2xhc3MgV2ViSW1hZ2VSZW5kZXJlcjsKIEBj
bGFzcyBET01FbGVtZW50OwogCiBleHRlcm4gTlNTdHJpbmcgKldlYlVSTFBib2FyZFR5cGU7CkBA
IC00MCw3ICszOSw3IEBACiAvLyBSZXR1cm5zIHRoZSBhcnJheSBvZiB0eXBlcyB0aGF0IF93ZWJf
d3JpdGVVUkw6YW5kVGl0bGU6IGhhbmRsZXMuCiArIChOU0FycmF5ICopX3dlYl93cml0YWJsZVR5
cGVzRm9yVVJMOwogCi0vLyBSZXR1cm5zIHRoZSBhcnJheSBvZiB0eXBlcyB0aGF0IF93ZWJfd3Jp
dGVJbWFnZTo6Ojo6IGhhbmRsZXMuCisvLyBSZXR1cm5zIHRoZSBhcnJheSBvZiB0eXBlcyB0aGF0
IF93ZWJfd3JpdGVJbWFnZSBoYW5kbGVzLgogKyAoTlNBcnJheSAqKV93ZWJfd3JpdGFibGVUeXBl
c0ZvckltYWdlSW5jbHVkaW5nQXJjaGl2ZTooQk9PTCloYXNBcmNoaXZlOwogCiAvLyBSZXR1cm5z
IHRoZSBhcnJheSBvZiBkcmFnIHR5cGVzIHRoYXQgX3dlYl9iZXN0VVJMIGhhbmRsZXM7IG5vdGUg
dGhhdCB0aGUgcHJlc2VuY2UKQEAgLTY5LDExICs2OCwxMCBAQAogICAgICAgICAgICAgICAgIGFy
Y2hpdmU6KFdlYkFyY2hpdmUgKilhcmNoaXZlCiAgICAgICAgICAgICAgICAgICB0eXBlczooTlNB
cnJheSAqKXR5cGVzOwogCi0tIChpZClfd2ViX2RlY2xhcmVBbmRXcml0ZURyYWdJbWFnZTooV2Vi
SW1hZ2VSZW5kZXJlciAqKWltYWdlIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1l
bnQ6KERPTUVsZW1lbnQgKillbGVtZW50Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFVSTDooTlNVUkwgKilVUkwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZToo
TlNTdHJpbmcgKil0aXRsZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyY2hpdmU6KFdl
YkFyY2hpdmUgKilhcmNoaXZlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZToo
aWQpc291cmNlOworLSAoaWQpX3dlYl9kZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2VFbGVtZW50OihE
T01FbGVtZW50ICopZWxlbWVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVVJMOihOU1VSTCAqKVVSTCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0aXRsZTooTlNTdHJpbmcgKil0aXRsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhcmNoaXZlOihXZWJBcmNoaXZlICopYXJjaGl2ZQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc291cmNlOihpZClzb3VyY2U7CiAKIEBlbmQKSW5kZXg6IFdlYktpdC9N
aXNjL1dlYk5TUGFzdGVib2FyZEV4dHJhcy5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9NaXNjL1dl
Yk5TUGFzdGVib2FyZEV4dHJhcy5tCShyZXZpc2lvbiAxNDQxNikKKysrIFdlYktpdC9NaXNjL1dl
Yk5TUGFzdGVib2FyZEV4dHJhcy5tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwNSBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjYsMTggKzI2LDE2IEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpbXBvcnQgPFdlYktpdC9X
ZWJOU1Bhc3RlYm9hcmRFeHRyYXMuaD4KKyNpbXBvcnQgIldlYk5TUGFzdGVib2FyZEV4dHJhcy5o
IgogCi0jaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVJbWFnZVJlbmRlcmVyLmg+Ci0jaW1wb3J0IDxX
ZWJLaXQvRE9NUHJpdmF0ZS5oPgotI2ltcG9ydCA8V2ViS2l0L1dlYkFyY2hpdmUuaD4KKyNpbXBv
cnQgIldlYkFyY2hpdmUuaCIKKyNpbXBvcnQgIldlYkZyYW1lQnJpZGdlLmgiCisjaW1wb3J0ICJX
ZWJOU1VSTEV4dHJhcy5oIgorI2ltcG9ydCAiV2ViUmVzb3VyY2VQcml2YXRlLmgiCisjaW1wb3J0
ICJXZWJVUkxzV2l0aFRpdGxlcy5oIgorI2ltcG9ydCAiV2ViVmlld1ByaXZhdGUuaCIKICNpbXBv
cnQgPEphdmFTY3JpcHRDb3JlL0Fzc2VydGlvbnMuaD4KLSNpbXBvcnQgPFdlYktpdC9XZWJJbWFn
ZVJlbmRlcmVyLmg+Ci0jaW1wb3J0IDxXZWJLaXQvV2ViSW1hZ2VSZW5kZXJlckZhY3RvcnkuaD4K
LSNpbXBvcnQgPFdlYktpdC9XZWJOU1VSTEV4dHJhcy5oPgotI2ltcG9ydCA8V2ViS2l0L1dlYlJl
c291cmNlUHJpdmF0ZS5oPgotI2ltcG9ydCA8V2ViS2l0L1dlYlVSTHNXaXRoVGl0bGVzLmg+Ci0j
aW1wb3J0IDxXZWJLaXQvV2ViVmlld1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRE9NUHJp
dmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CiAKIE5TU3RyaW5nICpX
ZWJVUkxQYm9hcmRUeXBlID0gbmlsOwpAQCAtMjQ0LDcgKzI0Miw3IEBACiAgICAgICAgIGlmIChb
dHlwZXMgY29udGFpbnNPYmplY3Q6TlNSVEZEUGJvYXJkVHlwZV0pIHsKICAgICAgICAgICAgIC8v
IFRoaXMgaW1hZ2UgZGF0YSBpcyBlaXRoZXIgdGhlIG9ubHkgc3VicmVzb3VyY2Ugb2YgYW4gYXJj
aGl2ZSAoSFRNTCBpbWFnZSBjYXNlKQogICAgICAgICAgICAgLy8gb3IgdGhlIG1haW4gcmVzb3Vy
Y2UgKHN0YW5kYWxvbmUgaW1hZ2UgY2FzZSkuCi0gICAgICAgICAgICBOU0FycmF5ICppbWFnZVR5
cGVzID0gW1tXZWJJbWFnZVJlbmRlcmVyRmFjdG9yeSBzaGFyZWRGYWN0b3J5XSBzdXBwb3J0ZWRN
SU1FVHlwZXNdOworICAgICAgICAgICAgTlNBcnJheSAqaW1hZ2VUeXBlcyA9IFtXZWJGcmFtZUJy
aWRnZSBzdXBwb3J0ZWRJbWFnZVJlc291cmNlTUlNRVR5cGVzXTsKICAgICAgICAgICAgIE5TQXJy
YXkgKnN1YnJlc291cmNlcyA9IFthcmNoaXZlIHN1YnJlc291cmNlc107CiAgICAgICAgICAgICBX
ZWJSZXNvdXJjZSAqbWFpblJlc291cmNlID0gW2FyY2hpdmUgbWFpblJlc291cmNlXTsKICAgICAg
ICAgICAgIFdlYlJlc291cmNlICpyZXNvdXJjZSA9ICFbaW1hZ2VUeXBlcyBjb250YWluc09iamVj
dDpbbWFpblJlc291cmNlIE1JTUVUeXBlXV0gJiYgW3N1YnJlc291cmNlcyBjb3VudF0gPiAwID8g
KFdlYlJlc291cmNlICopW3N1YnJlc291cmNlcyBvYmplY3RBdEluZGV4OjBdIDogbWFpblJlc291
cmNlOwpAQCAtMjYzLDI2ICsyNjEsMjUgQEAKICAgICB9CiB9CiAKLS0gKGlkKV93ZWJfZGVjbGFy
ZUFuZFdyaXRlRHJhZ0ltYWdlOihXZWJJbWFnZVJlbmRlcmVyICopaW1hZ2UKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBlbGVtZW50OihET01FbGVtZW50ICopZWxlbWVudAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBVUkw6KE5TVVJMICopVVJMIAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGl0bGU6KE5TU3RyaW5nICopdGl0bGUKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhcmNoaXZlOihXZWJBcmNoaXZlICopYXJjaGl2ZQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzb3VyY2U6KGlkKXNvdXJjZQorLSAoaWQpX3dlYl9kZWNsYXJlQW5kV3Jp
dGVEcmFnSW1hZ2VFbGVtZW50OihET01FbGVtZW50ICopZWxlbWVudAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVVJMOihOU1VSTCAqKVVSTCAKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTooTlNTdHJpbmcgKil0aXRsZQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhcmNoaXZlOihXZWJBcmNoaXZlICopYXJjaGl2ZQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlOihpZClzb3VyY2UKIHsK
ICAgICBBU1NFUlQoc2VsZiA9PSBbTlNQYXN0ZWJvYXJkIHBhc3RlYm9hcmRXaXRoTmFtZTpOU0Ry
YWdQYm9hcmRdKTsKICAgICBOU011dGFibGVBcnJheSAqdHlwZXMgPSBbW05TTXV0YWJsZUFycmF5
IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6TlNGaWxlc1Byb21pc2VQYm9hcmRUeXBlLCBuaWxdOwog
ICAgIFt0eXBlcyBhZGRPYmplY3RzRnJvbUFycmF5OltOU1Bhc3RlYm9hcmQgX3dlYl93cml0YWJs
ZVR5cGVzRm9ySW1hZ2VJbmNsdWRpbmdBcmNoaXZlOihhcmNoaXZlICE9IG5pbCldXTsKICAgICBb
c2VsZiBkZWNsYXJlVHlwZXM6dHlwZXMgb3duZXI6c291cmNlXTsgICAgCi0gICAgW3NlbGYgX3dl
Yl93cml0ZUltYWdlOltpbWFnZSBpbWFnZV0gZWxlbWVudDplbGVtZW50IFVSTDpVUkwgdGl0bGU6
dGl0bGUgYXJjaGl2ZTphcmNoaXZlIHR5cGVzOnR5cGVzXTsKKyAgICBbc2VsZiBfd2ViX3dyaXRl
SW1hZ2U6bmlsIGVsZW1lbnQ6ZWxlbWVudCBVUkw6VVJMIHRpdGxlOnRpdGxlIGFyY2hpdmU6YXJj
aGl2ZSB0eXBlczp0eXBlc107CiAgICAgW3R5cGVzIHJlbGVhc2VdOwotICAgIAotICAgIE5TU3Ry
aW5nICpleHRlbnNpb24gPSBXS0dldFByZWZlcnJlZEV4dGVuc2lvbkZvck1JTUVUeXBlKFtpbWFn
ZSBNSU1FVHlwZV0pOwotICAgIGlmIChleHRlbnNpb24gPT0gbmlsKSB7Ci0gICAgICAgIGV4dGVu
c2lvbiA9IEAiIjsKLSAgICB9CisKKyAgICAvLyBGSVhNRTogVGhpcyBoYXMgYmVlbiBicm9rZW4g
Zm9yIGEgd2hpbGUuCisgICAgLy8gVGhlcmUncyBubyB3YXkgdG8gZ2V0IHRoZSBNSU1FIHR5cGUg
Zm9yIHRoZSBpbWFnZSBmcm9tIGEgRE9NIGVsZW1lbnQuCisgICAgLy8gVGhlIG9sZCBjb2RlIHVz
ZWQgV0tHZXRQcmVmZXJyZWRFeHRlbnNpb25Gb3JNSU1FVHlwZShbaW1hZ2UgTUlNRVR5cGVdKTsK
KyAgICBOU1N0cmluZyAqZXh0ZW5zaW9uID0gQCIiOwogICAgIE5TQXJyYXkgKmV4dGVuc2lvbnMg
PSBbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6ZXh0ZW5zaW9uXTsKLSAgICAKKwogICAgIFtzZWxm
IHNldFByb3BlcnR5TGlzdDpleHRlbnNpb25zIGZvclR5cGU6TlNGaWxlc1Byb21pc2VQYm9hcmRU
eXBlXTsKICAgICByZXR1cm4gc291cmNlOwogfQpJbmRleDogV2ViS2l0L01pc2MvV2ViTlNWaWV3
RXh0cmFzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L01pc2MvV2ViTlNWaWV3RXh0cmFzLmgJKHJl
dmlzaW9uIDE0NDE1KQorKysgV2ViS2l0L01pc2MvV2ViTlNWaWV3RXh0cmFzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA1IEFwcGxlIENv
bXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA1
LCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCwxMCArMjgsOSBAQAogCiAjaW1wb3J0IDxB
cHBLaXQvQXBwS2l0Lmg+CiAKLSNkZWZpbmUgV2ViRHJhZ0ltYWdlQWxwaGEgICAgMC43NQorI2Rl
ZmluZSBXZWJEcmFnSW1hZ2VBbHBoYSAwLjc1CiAKIEBjbGFzcyBET01FbGVtZW50OwotQGNsYXNz
IFdlYkltYWdlUmVuZGVyZXI7CiBAY2xhc3MgV2ViRnJhbWVWaWV3OwogCiBAaW50ZXJmYWNlIE5T
VmlldyAoV2ViRXh0cmFzKQpAQCAtNTgsMTMgKzU3LDEyIEBACiAtIChOU0RyYWdPcGVyYXRpb24p
X3dlYl9kcmFnT3BlcmF0aW9uRm9yRHJhZ2dpbmdJbmZvOihpZCA8TlNEcmFnZ2luZ0luZm8+KXNl
bmRlcjsKIAogLy8gUmVzaXplcyBhbmQgYXBwbGllcyBhbHBoYSB0byBpbWFnZSBhbmQgZHJhZ3Mg
aXQuCi0tICh2b2lkKV93ZWJfZHJhZ0ltYWdlOihXZWJJbWFnZVJlbmRlcmVyICopaW1hZ2UKLSAg
ICAgICAgICAgICAgIGVsZW1lbnQ6KERPTUVsZW1lbnQgKillbGVtZW50Ci0gICAgICAgICAgICAg
ICAgICByZWN0OihOU1JlY3QpcmVjdAotICAgICAgICAgICAgICAgICBldmVudDooTlNFdmVudCAq
KWV2ZW50Ci0gICAgICAgICAgICBwYXN0ZWJvYXJkOihOU1Bhc3RlYm9hcmQgKilwYXN0ZWJvYXJk
IAotICAgICAgICAgICAgICAgIHNvdXJjZTooaWQpc291cmNlCi0gICAgICAgICAgICAgICAgb2Zm
c2V0OihOU1BvaW50ICopZHJhZ0ltYWdlT2Zmc2V0OworLSAodm9pZClfd2ViX2RyYWdJbWFnZUVs
ZW1lbnQ6KERPTUVsZW1lbnQgKillbGVtZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgcmVj
dDooTlNSZWN0KXJlY3QKKyAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50OihOU0V2ZW50ICop
ZXZlbnQKKyAgICAgICAgICAgICAgICAgICBwYXN0ZWJvYXJkOihOU1Bhc3RlYm9hcmQgKilwYXN0
ZWJvYXJkIAorICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U6KGlkKXNvdXJjZQorICAgICAg
ICAgICAgICAgICAgICAgICBvZmZzZXQ6KE5TUG9pbnQgKilkcmFnSW1hZ2VPZmZzZXQ7CiAKIC0g
KEJPT0wpX3dlYl9maXJzdFJlc3BvbmRlcklzU2VsZk9yRGVzY2VuZGFudFZpZXc7CiAKSW5kZXg6
IFdlYktpdC9NaXNjL1dlYk5TVmlld0V4dHJhcy5tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9NaXNj
L1dlYk5TVmlld0V4dHJhcy5tCShyZXZpc2lvbiAxNDQxNSkKKysrIFdlYktpdC9NaXNjL1dlYk5T
Vmlld0V4dHJhcy5tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAwNSBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsMTIg
KzI4LDEwIEBACiAKICNpbXBvcnQgPFdlYktpdC9XZWJOU1ZpZXdFeHRyYXMuaD4KIAotI2ltcG9y
dCA8V2ViQ29yZS9XZWJDb3JlSW1hZ2VSZW5kZXJlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9ET01Q
cml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViRGF0YVNvdXJjZS5oPgogI2ltcG9ydCA8V2Vi
S2l0L1dlYkZyYW1lUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYkZyYW1lVmlld0ludGVy
bmFsLmg+Ci0jaW1wb3J0IDxXZWJLaXQvV2ViSW1hZ2VSZW5kZXJlci5oPgogI2ltcG9ydCA8V2Vi
S2l0L1dlYk5TSW1hZ2VFeHRyYXMuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJOU1Bhc3RlYm9hcmRF
eHRyYXMuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJOU1VSTEV4dHJhcy5oPgpAQCAtMTYyLDE5ICsx
NjAsMTggQEAKICAgICB9CiB9CiAKLS0gKHZvaWQpX3dlYl9kcmFnSW1hZ2U6KFdlYkltYWdlUmVu
ZGVyZXIgKil3aXIKLSAgICAgICAgICAgICAgIGVsZW1lbnQ6KERPTUVsZW1lbnQgKillbGVtZW50
Ci0gICAgICAgICAgICAgICAgICByZWN0OihOU1JlY3QpcmVjdAotICAgICAgICAgICAgICAgICBl
dmVudDooTlNFdmVudCAqKWV2ZW50Ci0gICAgICAgICAgICBwYXN0ZWJvYXJkOihOU1Bhc3RlYm9h
cmQgKilwYXN0ZWJvYXJkIAotICAgICAgICAgICAgICAgIHNvdXJjZTooaWQpc291cmNlCi0gICAg
ICAgICAgICAgICAgb2Zmc2V0OihOU1BvaW50ICopZHJhZ0ltYWdlT2Zmc2V0CistICh2b2lkKV93
ZWJfZHJhZ0ltYWdlRWxlbWVudDooRE9NRWxlbWVudCAqKWVsZW1lbnQKKyAgICAgICAgICAgICAg
ICAgICAgICAgICByZWN0OihOU1JlY3QpcmVjdAorICAgICAgICAgICAgICAgICAgICAgICAgZXZl
bnQ6KE5TRXZlbnQgKilldmVudAorICAgICAgICAgICAgICAgICAgIHBhc3RlYm9hcmQ6KE5TUGFz
dGVib2FyZCAqKXBhc3RlYm9hcmQgCisgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZTooaWQp
c291cmNlCisgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDooTlNQb2ludCAqKWRyYWdJbWFn
ZU9mZnNldAogewogICAgIE5TUG9pbnQgbW91c2VEb3duUG9pbnQgPSBbc2VsZiBjb252ZXJ0UG9p
bnQ6W2V2ZW50IGxvY2F0aW9uSW5XaW5kb3ddIGZyb21WaWV3Om5pbF07CiAgICAgTlNJbWFnZSAq
ZHJhZ0ltYWdlOwogICAgIE5TUG9pbnQgb3JpZ2luOwogCi0gICAgTlNJbWFnZSAqaW1hZ2UgPSAo
d2lyICE9IG5pbCkgPyBbd2lyIGltYWdlXSA6IFtlbGVtZW50IGltYWdlXTsKKyAgICBOU0ltYWdl
ICppbWFnZSA9IFtlbGVtZW50IGltYWdlXTsKICAgICBpZiAoaW1hZ2UgIT0gbmlsICYmIFtpbWFn
ZSBzaXplXS5oZWlnaHQgKiBbaW1hZ2Ugc2l6ZV0ud2lkdGggPD0gV2ViTWF4T3JpZ2luYWxJbWFn
ZUFyZWEpIHsKICAgICAgICAgTlNTaXplIG9yaWdpbmFsU2l6ZSA9IHJlY3Quc2l6ZTsKICAgICAg
ICAgb3JpZ2luID0gcmVjdC5vcmlnaW47CkBAIC0xOTMsMTAgKzE5MCwxMCBAQAogICAgICAgICBv
cmlnaW4ueSA9IG9yaWdpbi55ICsgb3JpZ2luYWxTaXplLmhlaWdodDsKICAgICAgICAgb3JpZ2lu
LnkgPSBtb3VzZURvd25Qb2ludC55IC0gKCgobW91c2VEb3duUG9pbnQueSAtIG9yaWdpbi55KSAv
IG9yaWdpbmFsU2l6ZS5oZWlnaHQpICogbmV3U2l6ZS5oZWlnaHQpOwogICAgIH0gZWxzZSB7Ci0g
ICAgICAgIE5TU3RyaW5nICpleHRlbnNpb24gPSBXS0dldFByZWZlcnJlZEV4dGVuc2lvbkZvck1J
TUVUeXBlKFt3aXIgTUlNRVR5cGVdKTsKLSAgICAgICAgaWYgKGV4dGVuc2lvbiA9PSBuaWwpIHsK
LSAgICAgICAgICAgIGV4dGVuc2lvbiA9IEAiIjsKLSAgICAgICAgfQorICAgICAgICAvLyBGSVhN
RTogVGhpcyBoYXMgYmVlbiBicm9rZW4gZm9yIGEgd2hpbGUuCisgICAgICAgIC8vIFRoZXJlJ3Mg
bm8gd2F5IHRvIGdldCB0aGUgTUlNRSB0eXBlIGZvciB0aGUgaW1hZ2UgZnJvbSBhIERPTSBlbGVt
ZW50LgorICAgICAgICAvLyBUaGUgb2xkIGNvZGUgdXNlZCBXS0dldFByZWZlcnJlZEV4dGVuc2lv
bkZvck1JTUVUeXBlKFtpbWFnZSBNSU1FVHlwZV0pOworICAgICAgICBOU1N0cmluZyAqZXh0ZW5z
aW9uID0gQCIiOwogICAgICAgICBkcmFnSW1hZ2UgPSBbW05TV29ya3NwYWNlIHNoYXJlZFdvcmtz
cGFjZV0gaWNvbkZvckZpbGVUeXBlOmV4dGVuc2lvbl07CiAgICAgICAgIE5TU2l6ZSBvZmZzZXQg
PSBOU01ha2VTaXplKFtkcmFnSW1hZ2Ugc2l6ZV0ud2lkdGggLSBXZWJEcmFnSWNvblJpZ2h0SW5z
ZXQsIC1XZWJEcmFnSWNvbkJvdHRvbUluc2V0KTsKICAgICAgICAgb3JpZ2luID0gTlNNYWtlUG9p
bnQobW91c2VEb3duUG9pbnQueCAtIG9mZnNldC53aWR0aCwgbW91c2VEb3duUG9pbnQueSAtIG9m
ZnNldC5oZWlnaHQpOwpJbmRleDogV2ViS2l0L1dlYlZpZXcvV2ViSFRNTFZpZXdJbnRlcm5hbC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9XZWJWaWV3L1dlYkhUTUxWaWV3SW50ZXJuYWwuaAkocmV2
aXNpb24gMTQ0MTUpCisrKyBXZWJLaXQvV2ViVmlldy9XZWJIVE1MVmlld0ludGVybmFsLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDYgQEAKIEBwdWJsaWMKICAgICBCT09MIG5lZWRzTGF5
b3V0OwogICAgIEJPT0wgbmVlZHNUb0FwcGx5U3R5bGVzOwotICAgIEJPT0wgaW5XaW5kb3c7CiAg
ICAgQk9PTCBzaG93c1VSTHNJblRvb2xUaXBzOwogICAgIEJPT0wgaWdub3JpbmdNb3VzZURyYWdn
ZWRFdmVudHM7CiAgICAgQk9PTCBwcmludGluZzsKSW5kZXg6IFdlYktpdC9XZWJWaWV3L1dlYkhU
TUxSZXByZXNlbnRhdGlvbi5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9XZWJWaWV3L1dlYkhUTUxS
ZXByZXNlbnRhdGlvbi5tCShyZXZpc2lvbiAxNDQxNSkKKysrIFdlYktpdC9XZWJWaWV3L1dlYkhU
TUxSZXByZXNlbnRhdGlvbi5tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwNSBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjYsMjQgKzI2LDIyIEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpbXBvcnQgPFdlYktpdC9XZWJI
VE1MUmVwcmVzZW50YXRpb24uaD4KKyNpbXBvcnQgIldlYkhUTUxSZXByZXNlbnRhdGlvbi5oIgog
Ci0jaW1wb3J0IDxXZWJLaXQvRE9NLmg+Ci0jaW1wb3J0IDxXZWJLaXQvV2ViQXJjaGl2ZS5oPgor
I2ltcG9ydCAiV2ViQXJjaGl2ZS5oIgorI2ltcG9ydCAiV2ViRGF0YVNvdXJjZUludGVybmFsLmgi
CisjaW1wb3J0ICJXZWJEb2N1bWVudFByaXZhdGUuaCIKKyNpbXBvcnQgIldlYkZyYW1lQnJpZGdl
LmgiCisjaW1wb3J0ICJXZWJGcmFtZVByaXZhdGUuaCIKKyNpbXBvcnQgIldlYktpdE5TU3RyaW5n
RXh0cmFzLmgiCisjaW1wb3J0ICJXZWJLaXRTdGF0aXN0aWNzUHJpdmF0ZS5oIgorI2ltcG9ydCAi
V2ViTlNPYmplY3RFeHRyYXMuaCIKKyNpbXBvcnQgIldlYlJlc291cmNlUHJpdmF0ZS5oIgorI2lt
cG9ydCAiV2ViVmlldy5oIgorI2ltcG9ydCA8Rm91bmRhdGlvbi9OU1VSTFJlc3BvbnNlLmg+CiAj
aW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9Bc3NlcnRpb25zLmg+Ci0jaW1wb3J0IDxXZWJLaXQvV2Vi
RnJhbWVCcmlkZ2UuaD4KLSNpbXBvcnQgPFdlYktpdC9XZWJEYXRhU291cmNlSW50ZXJuYWwuaD4K
LSNpbXBvcnQgPFdlYktpdC9XZWJEb2N1bWVudFByaXZhdGUuaD4KLSNpbXBvcnQgPFdlYktpdC9X
ZWJGcmFtZVByaXZhdGUuaD4KLSNpbXBvcnQgPFdlYktpdC9XZWJJbWFnZVJlbmRlcmVyRmFjdG9y
eS5oPgotI2ltcG9ydCA8V2ViS2l0L1dlYktpdE5TU3RyaW5nRXh0cmFzLmg+Ci0jaW1wb3J0IDxX
ZWJLaXQvV2ViS2l0U3RhdGlzdGljc1ByaXZhdGUuaD4KLSNpbXBvcnQgPFdlYktpdC9XZWJOU09i
amVjdEV4dHJhcy5oPgotI2ltcG9ydCA8V2ViS2l0L1dlYlJlc291cmNlUHJpdmF0ZS5oPgotI2lt
cG9ydCA8V2ViS2l0L1dlYlZpZXcuaD4KKyNpbXBvcnQgPFdlYktpdC9ET00uaD4KIAotI2ltcG9y
dCA8Rm91bmRhdGlvbi9OU1VSTFJlc3BvbnNlLmg+Ci0KIEBpbnRlcmZhY2UgV2ViSFRNTFJlcHJl
c2VudGF0aW9uUHJpdmF0ZSA6IE5TT2JqZWN0CiB7CiBAcHVibGljCkBAIC04NCw3ICs4Miw2IEBA
CiAKICsgKE5TQXJyYXkgKilzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcwogewotICAgIFtXZWJJbWFn
ZVJlbmRlcmVyRmFjdG9yeSBjcmVhdGVTaGFyZWRGYWN0b3J5XTsKICAgICByZXR1cm4gW1dlYkNv
cmVGcmFtZUJyaWRnZSBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlc107CiB9CiAKSW5kZXg6IFdlYktp
dC9XZWJWaWV3L1dlYkZyYW1lVmlldy5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9XZWJWaWV3L1dl
YkZyYW1lVmlldy5tCShyZXZpc2lvbiAxNDQxNSkKKysrIFdlYktpdC9XZWJWaWV3L1dlYkZyYW1l
Vmlldy5tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwNSBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwNSwgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsNyArMjgsNiBA
QAogCiAjaW1wb3J0ICJXZWJGcmFtZVZpZXcuaCIKIAotI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUv
QXNzZXJ0aW9ucy5oPgogI2ltcG9ydCAiV2ViQ2xpcFZpZXcuaCIKICNpbXBvcnQgIldlYkRhdGFT
b3VyY2UuaCIKICNpbXBvcnQgIldlYkRvY3VtZW50LmgiCkBAIC0zOCw3ICszNyw2IEBACiAjaW1w
b3J0ICJXZWJGcmFtZVZpZXdJbnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViRnJhbWVWaWV3UHJpdmF0
ZS5oIgogI2ltcG9ydCAiV2ViSFRNTFZpZXdQcml2YXRlLmgiCi0jaW1wb3J0ICJXZWJJbWFnZVJl
bmRlcmVyLmgiCiAjaW1wb3J0ICJXZWJJbWFnZVJlbmRlcmVyRmFjdG9yeS5oIgogI2ltcG9ydCAi
V2ViS2V5R2VuZXJhdG9yLmgiCiAjaW1wb3J0ICJXZWJLaXRFcnJvcnNQcml2YXRlLmgiCkBAIC01
MiwxMiArNTAsMTEgQEAKICNpbXBvcnQgIldlYlZpZXdGYWN0b3J5LmgiCiAjaW1wb3J0ICJXZWJW
aWV3SW50ZXJuYWwuaCIKICNpbXBvcnQgIldlYlZpZXdQcml2YXRlLmgiCi0KKyNpbXBvcnQgPEZv
dW5kYXRpb24vTlNVUkxSZXF1ZXN0Lmg+CisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9Bc3NlcnRp
b25zLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVGcmFtZVZpZXcuaD4KICNpbXBvcnQgPFdl
YkNvcmUvV2ViQ29yZVZpZXcuaD4KIAotI2ltcG9ydCA8Rm91bmRhdGlvbi9OU1VSTFJlcXVlc3Qu
aD4KLQogQGludGVyZmFjZSBOU0NsaXBWaWV3IChBcHBLaXRTZWNyZXRzSUtub3cpCiAtIChCT09M
KV9zY3JvbGxUbzooY29uc3QgTlNQb2ludCAqKW5ld09yaWdpbjsgLy8gbmVlZCB0aGUgYm9vbGVh
biByZXN1bHQgZnJvbSB0aGlzIG1ldGhvZAogQGVuZApJbmRleDogV2ViS2l0L1dlYlZpZXcvV2Vi
RGF0YVNvdXJjZS5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9XZWJWaWV3L1dlYkRhdGFTb3VyY2Uu
bQkocmV2aXNpb24gMTQ0MTUpCisrKyBXZWJLaXQvV2ViVmlldy9XZWJEYXRhU291cmNlLm0JKHdv
cmtpbmcgY29weSkKQEAgLTI2LDQ1ICsyNiw0MyBAQAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaW1w
b3J0IDxXZWJLaXQvV2ViRGF0YVNvdXJjZS5oPgorI2ltcG9ydCAiV2ViRGF0YVNvdXJjZS5oIgog
Ci0jaW1wb3J0IDxXZWJLaXQvV2ViRGF0YVNvdXJjZUludGVybmFsLmg+Ci0jaW1wb3J0IDxXZWJL
aXQvRE9NSFRNTC5oPgorI2ltcG9ydCAiV2ViQXJjaGl2ZS5oIgorI2ltcG9ydCAiV2ViQXJjaGl2
ZXIuaCIKKyNpbXBvcnQgIldlYkRPTU9wZXJhdGlvbnNQcml2YXRlLmgiCisjaW1wb3J0ICJXZWJE
YXRhUHJvdG9jb2wuaCIKKyNpbXBvcnQgIldlYkRhdGFTb3VyY2VJbnRlcm5hbC5oIgorI2ltcG9y
dCAiV2ViRGVmYXVsdFJlc291cmNlTG9hZERlbGVnYXRlLmgiCisjaW1wb3J0ICJXZWJEb2N1bWVu
dC5oIgorI2ltcG9ydCAiV2ViRnJhbWVCcmlkZ2UuaCIKKyNpbXBvcnQgIldlYkZyYW1lSW50ZXJu
YWwuaCIKKyNpbXBvcnQgIldlYkZyYW1lTG9hZERlbGVnYXRlLmgiCisjaW1wb3J0ICJXZWJGcmFt
ZVZpZXcuaCIKKyNpbXBvcnQgIldlYkhUTUxSZXByZXNlbnRhdGlvbi5oIgorI2ltcG9ydCAiV2Vi
SFRNTFZpZXdQcml2YXRlLmgiCisjaW1wb3J0ICJXZWJIaXN0b3J5LmgiCisjaW1wb3J0ICJXZWJI
aXN0b3J5SXRlbVByaXZhdGUuaCIKKyNpbXBvcnQgIldlYkljb25EYXRhYmFzZVByaXZhdGUuaCIK
KyNpbXBvcnQgIldlYkljb25Mb2FkZXIuaCIKKyNpbXBvcnQgIldlYktpdEVycm9yc1ByaXZhdGUu
aCIKKyNpbXBvcnQgIldlYktpdExvZ2dpbmcuaCIKKyNpbXBvcnQgIldlYktpdE5TU3RyaW5nRXh0
cmFzLmgiCisjaW1wb3J0ICJXZWJLaXRTdGF0aXN0aWNzUHJpdmF0ZS5oIgorI2ltcG9ydCAiV2Vi
TWFpblJlc291cmNlTG9hZGVyLmgiCisjaW1wb3J0ICJXZWJOU09iamVjdEV4dHJhcy5oIgorI2lt
cG9ydCAiV2ViTlNVUkxFeHRyYXMuaCIKKyNpbXBvcnQgIldlYlBERlJlcHJlc2VudGF0aW9uLmgi
CisjaW1wb3J0ICJXZWJSZXNvdXJjZUxvYWREZWxlZ2F0ZS5oIgorI2ltcG9ydCAiV2ViUmVzb3Vy
Y2VQcml2YXRlLmgiCisjaW1wb3J0ICJXZWJVbmFyY2hpdmluZ1N0YXRlLmgiCisjaW1wb3J0ICJX
ZWJWaWV3SW50ZXJuYWwuaCIKKyNpbXBvcnQgPEZvdW5kYXRpb24vTlNVUkxDb25uZWN0aW9uLmg+
CisjaW1wb3J0IDxGb3VuZGF0aW9uL05TVVJMUmVxdWVzdC5oPgogI2ltcG9ydCA8SmF2YVNjcmlw
dENvcmUvQXNzZXJ0aW9ucy5oPgotI2ltcG9ydCA8V2ViS2l0L1dlYkFyY2hpdmUuaD4KLSNpbXBv
cnQgPFdlYktpdC9XZWJBcmNoaXZlci5oPgotI2ltcG9ydCA8V2ViS2l0L1dlYkZyYW1lQnJpZGdl
Lmg+Ci0jaW1wb3J0IDxXZWJLaXQvV2ViRGF0YVByb3RvY29sLmg+Ci0jaW1wb3J0IDxXZWJLaXQv
V2ViRGVmYXVsdFJlc291cmNlTG9hZERlbGVnYXRlLmg+Ci0jaW1wb3J0IDxXZWJLaXQvV2ViRG9j
dW1lbnQuaD4KLSNpbXBvcnQgPFdlYktpdC9XZWJET01PcGVyYXRpb25zUHJpdmF0ZS5oPgotI2lt
cG9ydCA8V2ViS2l0L1dlYkZyYW1lTG9hZERlbGVnYXRlLmg+Ci0jaW1wb3J0IDxXZWJLaXQvV2Vi
RnJhbWVJbnRlcm5hbC5oPgotI2ltcG9ydCA8V2ViS2l0L1dlYkZyYW1lVmlldy5oPgotI2ltcG9y
dCA8V2ViS2l0L1dlYkhpc3RvcnkuaD4KLSNpbXBvcnQgPFdlYktpdC9XZWJIaXN0b3J5SXRlbVBy
aXZhdGUuaD4KLSNpbXBvcnQgPFdlYktpdC9XZWJIVE1MUmVwcmVzZW50YXRpb24uaD4KLSNpbXBv
cnQgPFdlYktpdC9XZWJIVE1MVmlld1ByaXZhdGUuaD4KLSNpbXBvcnQgPFdlYktpdC9XZWJJY29u
RGF0YWJhc2VQcml2YXRlLmg+Ci0jaW1wb3J0IDxXZWJLaXQvV2ViSWNvbkxvYWRlci5oPgotI2lt
cG9ydCA8V2ViS2l0L1dlYkltYWdlUmVuZGVyZXJGYWN0b3J5Lmg+Ci0jaW1wb3J0IDxXZWJLaXQv
V2ViS2l0RXJyb3JzUHJpdmF0ZS5oPgotI2ltcG9ydCA8V2ViS2l0L1dlYktpdExvZ2dpbmcuaD4K
LSNpbXBvcnQgPFdlYktpdC9XZWJLaXROU1N0cmluZ0V4dHJhcy5oPgotI2ltcG9ydCA8V2ViS2l0
L1dlYktpdFN0YXRpc3RpY3NQcml2YXRlLmg+Ci0jaW1wb3J0IDxXZWJLaXQvV2ViTWFpblJlc291
cmNlTG9hZGVyLmg+Ci0jaW1wb3J0IDxXZWJLaXQvV2ViTlNPYmplY3RFeHRyYXMuaD4KLSNpbXBv
cnQgPFdlYktpdC9XZWJOU1VSTEV4dHJhcy5oPgotI2ltcG9ydCA8V2ViS2l0L1dlYlBERlJlcHJl
c2VudGF0aW9uLmg+Ci0jaW1wb3J0IDxXZWJLaXQvV2ViUmVzb3VyY2VMb2FkRGVsZWdhdGUuaD4K
LSNpbXBvcnQgPFdlYktpdC9XZWJSZXNvdXJjZVByaXZhdGUuaD4KLSNpbXBvcnQgPFdlYktpdC9X
ZWJVbmFyY2hpdmluZ1N0YXRlLmg+Ci0jaW1wb3J0IDxXZWJLaXQvV2ViVmlld0ludGVybmFsLmg+
CisjaW1wb3J0IDxXZWJLaXQvRE9NSFRNTC5oPgogI2ltcG9ydCA8V2ViS2l0U3lzdGVtSW50ZXJm
YWNlLmg+CiAKLSNpbXBvcnQgPEZvdW5kYXRpb24vTlNVUkxDb25uZWN0aW9uLmg+Ci0jaW1wb3J0
IDxGb3VuZGF0aW9uL05TVVJMUmVxdWVzdC5oPgotCiBAaW50ZXJmYWNlIFdlYkRhdGFTb3VyY2VQ
cml2YXRlIDogTlNPYmplY3QKIHsKICAgICBAcHVibGljCkBAIC0yNTksNyArMjU3LDcgQEAKICAg
ICAgICAgICAgIERPTURvY3VtZW50RnJhZ21lbnQgKmZyYWdtZW50ID0gW1tzZWxmIF9icmlkZ2Vd
IGRvY3VtZW50RnJhZ21lbnRXaXRoTWFya3VwU3RyaW5nOm1hcmt1cFN0cmluZyBiYXNlVVJMU3Ry
aW5nOltbbWFpblJlc291cmNlIFVSTF0gX3dlYl9vcmlnaW5hbERhdGFBc1N0cmluZ11dOwogICAg
ICAgICAgICAgW21hcmt1cFN0cmluZyByZWxlYXNlXTsKICAgICAgICAgICAgIHJldHVybiBmcmFn
bWVudDsKLSAgICAgICAgfSBlbHNlIGlmIChbW1tXZWJJbWFnZVJlbmRlcmVyRmFjdG9yeSBzaGFy
ZWRGYWN0b3J5XSBzdXBwb3J0ZWRNSU1FVHlwZXNdIGNvbnRhaW5zT2JqZWN0Ok1JTUVUeXBlXSkg
eworICAgICAgICB9IGVsc2UgaWYgKFtbV2ViRnJhbWVCcmlkZ2Ugc3VwcG9ydGVkSW1hZ2VSZXNv
dXJjZU1JTUVUeXBlc10gY29udGFpbnNPYmplY3Q6TUlNRVR5cGVdKSB7CiAgICAgICAgICAgICBy
ZXR1cm4gW3NlbGYgX2RvY3VtZW50RnJhZ21lbnRXaXRoSW1hZ2VSZXNvdXJjZTptYWluUmVzb3Vy
Y2VdOwogCiAgICAgICAgIH0KSW5kZXg6IFdlYktpdC9XZWJWaWV3L1dlYkhUTUxWaWV3Lm0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L1dlYlZpZXcvV2ViSFRNTFZpZXcubQkocmV2aXNpb24gMTQ0MTUp
CisrKyBXZWJLaXQvV2ViVmlldy9XZWJIVE1MVmlldy5tCSh3b3JraW5nIGNvcHkpCkBAIC00OSw4
ICs0OSw2IEBACiAjaW1wb3J0IDxXZWJLaXQvV2ViRnJhbWVWaWV3SW50ZXJuYWwuaD4KICNpbXBv
cnQgPFdlYktpdC9XZWJIVE1MVmlld0ludGVybmFsLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViSFRN
TFJlcHJlc2VudGF0aW9uUHJpdmF0ZS5oPgotI2ltcG9ydCA8V2ViS2l0L1dlYkltYWdlUmVuZGVy
ZXIuaD4KLSNpbXBvcnQgPFdlYktpdC9XZWJJbWFnZVJlbmRlcmVyRmFjdG9yeS5oPgogI2ltcG9y
dCA8V2ViS2l0L1dlYktpdExvZ2dpbmcuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJLaXROU1N0cmlu
Z0V4dHJhcy5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYk5ldHNjYXBlUGx1Z2luRW1iZWRkZWRWaWV3
Lmg+CkBAIC03MSw3ICs2OSw2IEBACiAjaW1wb3J0IDxXZWJLaXQvV2ViVUlEZWxlZ2F0ZVByaXZh
dGUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJWaWV3SW50ZXJuYWwuaD4KICNpbXBvcnQgPFdlYktp
dFN5c3RlbUludGVyZmFjZS5oPgotI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlSW1hZ2VSZW5kZXJl
ci5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlVGV4dFJlbmRlcmVyLmg+CiAKICNpbXBvcnQg
PEFwcEtpdC9OU0FjY2Vzc2liaWxpdHkuaD4KQEAgLTI2OCw3ICsyNjUsNyBAQAogCiAtIChCT09M
KV9pbWFnZUV4aXN0c0F0UGF0aHM6KE5TQXJyYXkgKilwYXRocwogewotICAgIE5TQXJyYXkgKmlt
YWdlTUlNRVR5cGVzID0gW1tXZWJJbWFnZVJlbmRlcmVyRmFjdG9yeSBzaGFyZWRGYWN0b3J5XSBz
dXBwb3J0ZWRNSU1FVHlwZXNdOworICAgIE5TQXJyYXkgKmltYWdlTUlNRVR5cGVzID0gW1dlYkZy
YW1lQnJpZGdlIHN1cHBvcnRlZEltYWdlUmVzb3VyY2VNSU1FVHlwZXNdOwogICAgIE5TRW51bWVy
YXRvciAqZW51bWVyYXRvciA9IFtwYXRocyBvYmplY3RFbnVtZXJhdG9yXTsKICAgICBOU1N0cmlu
ZyAqcGF0aDsKICAgICAKQEAgLTMwNSw3ICszMDIsNyBAQAogLSAoRE9NRG9jdW1lbnRGcmFnbWVu
dCAqKV9kb2N1bWVudEZyYWdtZW50V2l0aFBhdGhzOihOU0FycmF5ICopcGF0aHMKIHsKICAgICBE
T01Eb2N1bWVudEZyYWdtZW50ICpmcmFnbWVudDsKLSAgICBOU0FycmF5ICppbWFnZU1JTUVUeXBl
cyA9IFtbV2ViSW1hZ2VSZW5kZXJlckZhY3Rvcnkgc2hhcmVkRmFjdG9yeV0gc3VwcG9ydGVkTUlN
RVR5cGVzXTsKKyAgICBOU0FycmF5ICppbWFnZU1JTUVUeXBlcyA9IFtXZWJGcmFtZUJyaWRnZSBz
dXBwb3J0ZWRJbWFnZVJlc291cmNlTUlNRVR5cGVzXTsKICAgICBOU0VudW1lcmF0b3IgKmVudW1l
cmF0b3IgPSBbcGF0aHMgb2JqZWN0RW51bWVyYXRvcl07CiAgICAgV2ViRGF0YVNvdXJjZSAqZGF0
YVNvdXJjZSA9IFtzZWxmIF9kYXRhU291cmNlXTsKICAgICBOU011dGFibGVBcnJheSAqZG9tTm9k
ZXMgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XTsKQEAgLTY4OCwxMSArNjg1LDYgQEAK
IAogQGltcGxlbWVudGF0aW9uIFdlYkhUTUxWaWV3IChXZWJQcml2YXRlKQogCi0tICh2b2lkKV9y
ZXNldAotewotICAgIFtXZWJJbWFnZVJlbmRlcmVyIHN0b3BBbmltYXRpb25zSW5WaWV3OnNlbGZd
OwotfQotCiArIChOU0FycmF5ICopc3VwcG9ydGVkTUlNRVR5cGVzCiB7CiAgICAgcmV0dXJuIFtX
ZWJIVE1MUmVwcmVzZW50YXRpb24gc3VwcG9ydGVkTUlNRVR5cGVzXTsKQEAgLTEzMDgsMjIgKzEz
MDAsMjAgQEAKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBhcmNoaXZlID0gW1dl
YkFyY2hpdmVyIGFyY2hpdmVNYWluUmVzb3VyY2VGb3JGcmFtZTpbc2VsZiBfZnJhbWVdXTsKICAg
ICAgICAgICAgIAotICAgICAgICAgICAgc291cmNlID0gW3Bhc3RlYm9hcmQgX3dlYl9kZWNsYXJl
QW5kV3JpdGVEcmFnSW1hZ2U6bmlsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZWxlbWVudDppbWFnZUVsZW1lbnQKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVJMOmxpbmtVUkwg
PyBsaW5rVVJMIDogaW1hZ2VVUkwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOltlbGVtZW50IG9iamVjdEZvcktleTpXZWJFbGVt
ZW50SW1hZ2VBbHRTdHJpbmdLZXldCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYXJjaGl2ZTphcmNoaXZlCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZTpzZWxmXTsKKyAgICAg
ICAgICAgIHNvdXJjZSA9IFtwYXN0ZWJvYXJkIF93ZWJfZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdl
RWxlbWVudDppbWFnZUVsZW1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVSTDpsaW5rVVJMID8gbGlua1VSTCA6IGlt
YWdlVVJMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGl0bGU6W2VsZW1lbnQgb2JqZWN0Rm9yS2V5OldlYkVsZW1lbnRJbWFn
ZUFsdFN0cmluZ0tleV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYXJjaGl2ZTphcmNoaXZlCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U6c2VsZl07
CiAgICAgICAgIH0KICAgICAgICAgW1t3ZWJWaWV3IF9VSURlbGVnYXRlRm9yd2FyZGVyXSB3ZWJW
aWV3OndlYlZpZXcgd2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uOldlYkRyYWdTb3VyY2VBY3Rp
b25JbWFnZSBmcm9tUG9pbnQ6bW91c2VEb3duUG9pbnQgd2l0aFBhc3RlYm9hcmQ6cGFzdGVib2Fy
ZF07CiAgICAgICAgIGlmIChkcmFnSW1hZ2UgPT0gbmlsKSB7Ci0gICAgICAgICAgICBbc2VsZiBf
d2ViX2RyYWdJbWFnZTpuaWwKLSAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50OltlbGVt
ZW50IG9iamVjdEZvcktleTpXZWJFbGVtZW50RE9NTm9kZUtleV0KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZWN0OltbZWxlbWVudCBvYmplY3RGb3JLZXk6V2ViRWxlbWVudEltYWdlUmVj
dEtleV0gcmVjdFZhbHVlXQotICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQ6X3ByaXZh
dGUtPm1vdXNlRG93bkV2ZW50Ci0gICAgICAgICAgICAgICAgICAgICAgcGFzdGVib2FyZDpwYXN0
ZWJvYXJkCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZTpzb3VyY2UKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgb2Zmc2V0OiZfcHJpdmF0ZS0+ZHJhZ09mZnNldF07CisgICAgICAg
ICAgICBbc2VsZiBfd2ViX2RyYWdJbWFnZUVsZW1lbnQ6W2VsZW1lbnQgb2JqZWN0Rm9yS2V5Oldl
YkVsZW1lbnRET01Ob2RlS2V5XQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZWN0OltbZWxlbWVudCBvYmplY3RGb3JLZXk6V2ViRWxlbWVudEltYWdlUmVjdEtleV0gcmVjdFZh
bHVlXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50Ol9wcml2YXRlLT5t
b3VzZURvd25FdmVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXN0ZWJvYXJkOnBh
c3RlYm9hcmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZTpzb3VyY2UK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDomX3ByaXZhdGUtPmRyYWdP
ZmZzZXRdOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgW3NlbGYgZHJhZ0ltYWdlOmRy
YWdJbWFnZQogICAgICAgICAgICAgICAgICAgICAgICAgIGF0OmRyYWdMb2MKQEAgLTE4OTIsNyAr
MTg4Miw2IEBACiAtICh2b2lkKWRlYWxsb2MKIHsKICAgICBbc2VsZiBfY2xlYXJMYXN0SGl0Vmll
d0lmU2VsZl07Ci0gICAgW3NlbGYgX3Jlc2V0XTsKICAgICAvLyBGSVhNRTogVGhpcyBpcyBzbG93
OyBzaG91bGQgcmVtb3ZlIGluZGl2aWR1YWwgb2JzZXJ2ZXJzIGluc3RlYWQuCiAgICAgW1tOU05v
dGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSByZW1vdmVPYnNlcnZlcjpzZWxmXTsKICAg
ICBbX3ByaXZhdGUtPnBsdWdpbkNvbnRyb2xsZXIgZGVzdHJveUFsbFBsdWdpbnNdOwpAQCAtMTkw
Niw3ICsxODk1LDYgQEAKIC0gKHZvaWQpZmluYWxpemUKIHsKICAgICBbc2VsZiBfY2xlYXJMYXN0
SGl0Vmlld0lmU2VsZl07Ci0gICAgW3NlbGYgX3Jlc2V0XTsKICAgICAvLyBGSVhNRTogVGhpcyBp
cyBzbG93OyBzaG91bGQgcmVtb3ZlIGluZGl2aWR1YWwgb2JzZXJ2ZXJzIGluc3RlYWQuCiAgICAg
W1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSByZW1vdmVPYnNlcnZlcjpzZWxm
XTsKICAgICBbX3ByaXZhdGUtPnBsdWdpbkNvbnRyb2xsZXIgZGVzdHJveUFsbFBsdWdpbnNdOwpA
QCAtMjM1MywxNyArMjM0MSw2IEBACiAgICAgICAgICAgICBbW3NlbGYgX3BsdWdpbkNvbnRyb2xs
ZXJdIHN0YXJ0QWxsUGx1Z2luc107CiAgICAgCiAgICAgICAgICAgICBfcHJpdmF0ZS0+bGFzdFNj
cm9sbFBvc2l0aW9uID0gTlNaZXJvUG9pbnQ7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIF9w
cml2YXRlLT5pbldpbmRvdyA9IFlFUzsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8v
IFJlc2V0IHdoZW4gd2UgYXJlIG1vdmVkIG91dCBvZiBhIHdpbmRvdyBhZnRlciBiZWluZyBtb3Zl
ZCBpbnRvIG9uZS4KLSAgICAgICAgICAgIC8vIFdpdGhvdXQgdGhpcyBjaGVjaywgd2UgcmVzZXQg
b3Vyc2VsdmVzIGJlZm9yZSB3ZSBldmVuIHN0YXJ0LgotICAgICAgICAgICAgLy8gVGhpcyBpcyBv
bmx5IG5lZWRlZCBiZWNhdXNlIHZpZXdEaWRNb3ZlVG9XaW5kb3cgaXMgY2FsbGVkIGV2ZW4gd2hl
bgotICAgICAgICAgICAgLy8gdGhlIHdpbmRvdyBpcyBub3QgY2hhbmdpbmcgKGJ1ZyBpbiBBcHBL
aXQpLgotICAgICAgICAgICAgaWYgKF9wcml2YXRlLT5pbldpbmRvdykgewotICAgICAgICAgICAg
ICAgIFtzZWxmIF9yZXNldF07Ci0gICAgICAgICAgICAgICAgX3ByaXZhdGUtPmluV2luZG93ID0g
Tk87Ci0gICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiB9CkluZGV4OiBXZWJLaXQvV2Vi
Vmlldy9XZWJIVE1MVmlld1ByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvV2ViVmlldy9X
ZWJIVE1MVmlld1ByaXZhdGUuaAkocmV2aXNpb24gMTQ0MTUpCisrKyBXZWJLaXQvV2ViVmlldy9X
ZWJIVE1MVmlld1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNiBAQAogCiBA
aW50ZXJmYWNlIFdlYkhUTUxWaWV3IChXZWJQcml2YXRlKQogCi0tICh2b2lkKV9yZXNldDsKICsg
KE5TQXJyYXkgKilzdXBwb3J0ZWRNSU1FVHlwZXM7CiArIChOU0FycmF5ICopc3VwcG9ydGVkSW1h
Z2VNSU1FVHlwZXM7CiArIChOU0FycmF5ICopc3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXM7Cklu
ZGV4OiBXZWJLaXQvRW5nbGlzaC5scHJvai9TdHJpbmdzTm90VG9CZUxvY2FsaXplZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L0VuZ2xpc2gubHByb2ovU3RyaW5nc05vdFRvQmVMb2NhbGl6ZWQu
dHh0CShyZXZpc2lvbiAxNDQxNSkKKysrIFdlYktpdC9FbmdsaXNoLmxwcm9qL1N0cmluZ3NOb3RU
b0JlTG9jYWxpemVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTcsNyArMTcsNiBAQAogIiVAICUu
MGZweCAlLjBmcHggJS4wZnB4IgogIiVAICUuMGZweCAlLjBmcHgiCiAiJUAgJUAiCi0iJUAiCiAi
JUAlQCIKICIlQCwgJUAiCiAiJUAtJWQiCkBAIC0yOSwxMCArMjgsNyBAQAogIiVkIgogIiVkcHgi
CiAiJWxsZCIKLSIoW1wiXCcjJC8tYHsiCi0iKV0uLDs6P1wnIVwiJSotL30iCiAiLCIKLSItICVz
OiVkICVzIC0gIgogIi0iCiAiLTFweCIKICIta2h0bWwtdGV4dC1kZWNvcmF0aW9ucy1pbi1lZmZl
Y3QiCkBAIC00MSw3ICszNyw2IEBACiAiLnRhciIKICIudGd6IgogIi8iCi0iLyVAIgogIi9GcmFt
ZXdvcmtzL1BERktpdC5mcmFtZXdvcmsiCiAiL0xpYnJhcnkvSW50ZXJuZXQgUGx1Zy1JbnMiCiAi
L1ZvbHVtZXMiCkBAIC01MiwyNCArNDcsMjIgQEAKICIvdG1wL1dlYktpdFBsdWdJblN0cmVhbVhY
WFhYWCIKICIvdG1wL1hYWFhYWC0iCiAiL3RtcC9YWFhYWFgudGlmZiIKLSIweDAiCisiMCIKICIx
IgotIjEuMCIKICIxMDAwIgogIjEycHgiCiAiMTMiCiAiMTYiCisiMTY3NzcyMTYiCiAiMTgwMCIK
ICIxcHgiCiAiMyIKICI0MjArIgogIjciCi0iODM4ODYwOCIKICI5IgogIjoiCiAiOi8vIgogIjov
PyMiCi0iOyIKICI8ISIKICI8JUAgJUA+IgogIjw/IgpAQCAtODMsMjggKzc2LDEzIEBACiAiPHJz
cyIKICI8c2NyaXB0IgogIjx0aXRsZT4iCi0iPSIKLSI9PT09PT09PT09PT09PT09PVxuQVJHVU1F
TlQgQkFEOiAlcywgJXMgKCVzOiVkICVzKVxuPT09PT09PT09PT09PT09PT1cbiIKLSI9PT09PT09
PT09PT09PT09PVxuQVNTRVJUSU9OIEZBSUxFRDogIgotIj09PT09PT09PT09PT09PT09XG5BU1NF
UlRJT04gRkFJTEVEOiAlcyAoJXM6JWQgJXMpXG49PT09PT09PT09PT09PT09PVxuIgotIj09PT09
PT09PT09PT09PT09XG5FUlJPUjogIgotIj09PT09PT09PT09PT09PT09XG5GQVRBTCBFUlJPUjog
IgotIj09PT09PT09PT09PT09PT09XG5TSE9VTEQgTkVWRVIgQkUgUkVBQ0hFRCAoJXM6JWQgJXMp
XG49PT09PT09PT09PT09PT09PVxuIgogIj4sPyIKICI/IgogIkAiCiAiQUJDREVGR0hJSktMTU5P
UFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLS4iCiAiQUJD
REVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3
ODkrLi0iCi0iQVRTRm9udEdldFRhYmxlIGZhaWxlZCAoJWQpIgotIkFUU1VDcmVhdGVTdHlsZSBm
YWlsZWQgKCVkKSIKLSJBVFNVQ3JlYXRlVGV4dExheW91dFdpdGhUZXh0UHRyIGZhaWxlZCglZCki
Ci0iQVRTVUdldEdseXBoQm91bmRzKCkgZmFpbGVkKCVkKSIKLSJBVFNVU2V0QXR0cmlidXRlcyBm
YWlsZWQgKCVkKSIKLSJBVFNVU2V0TGF5b3V0Q29udHJvbHMgZmFpbGVkKCVkKSIKLSJBVFNVU2V0
VHJhbnNpZW50Rm9udE1hdGNoaW5nIGZhaWxlZCglZCkiCiAiQXBwbGUgQ2hhbmNlcnkiCiAiQXBw
bGUgV2ViIEFyY2hpdmUgcGFzdGVib2FyZCB0eXBlIgotIkFwcGxlRm9udFNtb290aGluZyIKICJB
cHBsZUtleWJvYXJkVUlNb2RlIgogIkFwcGxlTGFuZ3VhZ2VzIgogIkFwcGxpY2F0aW9uU2Vydmlj
ZXMiCkBAIC0xMTgsNiArOTYsNyBAQAogIkRPQ0JBU0UiCiAiRFlMRF9GUkFNRVdPUktfUEFUSCIK
ICJGcmFtZU5hbWUiCisiR0VUIgogIkdyb3VwTmFtZSIKICJIZWx2ZXRpY2EiCiAiSVNPLTg4NTkt
MSIKQEAgLTEzMiw4ICsxMTEsNiBAQAogIkxpc3QgY291bnQ6ICVkIGl0ZW1zXG4iCiAiTGlzdCB0
b3RhbCBzaXplOiAlZCBieXRlc1xuIgogIkxvb2sgVXAgaW4gRGljdGlvbmFyeSBtZW51IHRpdGxl
LiIKLSJMdWNpZGEgR3JhbmRlIgotIk1TLVBHb3RoaWMiCiAiTWVudUNvbW1hbmRzIgogIk1vemls
bGEvNS4wIChNYWNpbnRvc2g7IFU7ICIKICJOUF9HZXRFbnRyeVBvaW50cyIKQEAgLTE0OCw2ICsx
MjUsNyBAQAogIk5TRmlsZU1vZGlmaWNhdGlvbkRhdGUiCiAiTlNGaWxlT3duZXJBY2NvdW50TmFt
ZSIKICJOU0ZpbGVQb3NpeFBlcm1pc3Npb25zIgorIk5TVmlldyIKICJOZVhUIHNtYXJ0IHBhc3Rl
IHBhc3RlYm9hcmQgdHlwZSIKICJQREZEb2N1bWVudCIKICJQREZWaWV3IgpAQCAtMTYxLDggKzEz
OSw2IEBACiAiU0FNSVN0eWxlIgogIlNlYXJjaCBpbiBHb29nbGUgbWVudSB0aXRsZS4iCiAiU2Vh
cmNoIGluIFNwb3RsaWdodCBtZW51IHRpdGxlLiIKLSJTZXQtQ29va2llIgotIlNwZWxsaW5nRG90
IgogIlRpbWVzIgogIlVURi04IgogIlVzZUJhY2tGb3J3YXJkTGlzdCIKQEAgLTE4OCw2ICsxNjQs
NyBAQAogIldlYkVsZW1lbnRMaW5rVGl0bGUiCiAiV2ViRWxlbWVudExpbmtVUkwiCiAiV2ViRWxl
bWVudFRhcmdldEZyYW1lIgorIldlYkVsZW1lbnRUaXRsZSIKICJXZWJGcmFtZVN0YXRlQ29tbWl0
dGVkUGFnZSIKICJXZWJGcmFtZVN0YXRlQ29tcGxldGUiCiAiV2ViRnJhbWVTdGF0ZVByb3Zpc2lv
bmFsIgpAQCAtMTk3LDYgKzE3NCw3IEBACiAiV2ViSGlzdG9yeUl0ZW1DaGFuZ2VkTm90aWZpY2F0
aW9uIgogIldlYkhpc3RvcnlJdGVtcyIKICJXZWJIaXN0b3J5SXRlbXNBZGRlZE5vdGlmaWNhdGlv
biIKKyJXZWJIaXN0b3J5SXRlbXNEaXNjYXJkZWRXaGlsZUxvYWRpbmdOb3RpZmljYXRpb24iCiAi
V2ViSGlzdG9yeUl0ZW1zUmVtb3ZlZE5vdGlmaWNhdGlvbiIKICJXZWJIaXN0b3J5TG9hZGVkTm90
aWZpY2F0aW9uIgogIldlYkhpc3RvcnlTYXZlZE5vdGlmaWNhdGlvbiIKQEAgLTIxOCw2ICsxOTYs
NyBAQAogIldlYktpdERlZmF1bHRUZXh0RW5jb2RpbmdOYW1lIgogIldlYktpdERldmVsb3BlckV4
dHJhcyIKICJXZWJLaXREaXNwbGF5SW1hZ2VzS2V5IgorIldlYktpdERpc3BsYXlUaHJvdHRsZVJ1
bkxvb3BNb2RlIgogIldlYktpdEVuYWJsZUluc3BlY3RFbGVtZW50Q29udGV4dE1lbnVJdGVtIgog
IldlYktpdEVycm9yRG9tYWluIgogIldlYktpdEVycm9yTUlNRVR5cGVLZXkiCkBAIC0yNDgsMjAg
KzIyNywyMyBAQAogIldlYktpdFN0YW5kYXJkRm9udCIKICJXZWJLaXRUYWJUb0xpbmtzUHJlZmVy
ZW5jZUtleSIKICJXZWJLaXRUZXh0QXJlYXNBcmVSZXNpemFibGUiCisiV2ViS2l0VGhyb3R0bGVX
aW5kb3dEaXNwbGF5IgogIldlYktpdFVzZXJTdHlsZVNoZWV0RW5hYmxlZFByZWZlcmVuY2VLZXki
CiAiV2ViS2l0VXNlclN0eWxlU2hlZXRMb2NhdGlvblByZWZlcmVuY2VLZXkiCiAiV2ViTG9naW5X
aW5kb3dEaWRTd2l0Y2hGcm9tVXNlck5vdGlmaWNhdGlvbiIKICJXZWJMb2dpbldpbmRvd0RpZFN3
aXRjaFRvVXNlck5vdGlmaWNhdGlvbiIKICJXZWJNYWluUmVzb3VyY2UiCiAiV2ViTW9kYWxEaWFs
b2dQcmV0ZW5kV2luZG93IgotIldlYk5vZGVIaWdobGlnaHRFeHBpcmVkIgorIldlYk5vZGVIaWdo
bGlnaHRFeHBpcmVkTm90aWZpY2F0aW9uIgogIldlYlBhZ2VDYWNoZURhdGFTb3VyY2VLZXkiCiAi
V2ViUGFnZUNhY2hlRG9jdW1lbnRWaWV3S2V5IgogIldlYlBhZ2VDYWNoZUVudHJ5RGF0ZUtleSIK
ICJXZWJQbHVnSW5BdHRyaWJ1dGVzS2V5IgogIldlYlBsdWdJbkJhc2VVUkxLZXkiCiAiV2ViUGx1
Z0luQ29udGFpbmVyS2V5IgorIldlYlBsdWdJbkNvbnRhaW5pbmdFbGVtZW50S2V5IgogIldlYlBs
dWdJbk1vZGVLZXkiCisiV2ViUGx1Z0luU2hvdWxkTG9hZE1haW5SZXNvdXJjZUtleSIKICJXZWJQ
bHVnaW5BdHRyaWJ1dGVzIgogIldlYlBsdWdpbkJhc2VVUkwiCiAiV2ViUGx1Z2luQ29udGFpbmVy
IgpAQCAtMzAxLDggKzI4Myw2IEBACiAiXG4gICAgICAgICIKICJcbiAgICAiCiAiXG4iCi0iXG4l
cyAoJXM6JWQgJXMpXG49PT09PT09PT09PT09PT09PVxuIgotIlxuKCVzOiVkICVzKVxuPT09PT09
PT09PT09PT09PT1cbiIKICJcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tXG4iCiAiXG5EaWN0IGRhdGE6ICVsZCBpdGVtc1xuIgogIlxuSGVhcCBkYXRhOiAlbGQg
aXRlbXNcbiIKQEAgLTMxMyw2ICsyOTMsNyBAQAogIlx4RkZceEQ4XHhGRlx4RTAiCiAiX0RDTURp
Y3Rpb25hcnlTZXJ2aWNlV2luZG93U2hvdyIKICJfdG9wIgorImEiCiAiYWJvdXQ6IgogImFib3V0
OmJsYW5rIgogImFwcGxld2ViZGF0YSIKQEAgLTMyMyw3ICszMDQsNiBAQAogImFwcGxpY2F0aW9u
L3Jzcyt4bWwiCiAiYXBwbGljYXRpb24vdGFyIgogImFwcGxpY2F0aW9uL3gtamF2YS1hcHBsZXQi
Ci0iYXBwbGljYXRpb24veC1qYXZhc2NyaXB0IgogImFwcGxpY2F0aW9uL3gtdGFyIgogImFwcGxp
Y2F0aW9uL3gtd2ViYXJjaGl2ZSIKICJiYXNlZm9udCIKQEAgLTM0MywxMCArMzIzLDYgQEAKICJj
b20uYXBwbGUucXVpY2t0aW1lLndlYnBsdWdpbiIKICJjb20uYXBwbGUudW5pdmVyc2FsYWNjZXNz
IgogImNvbS5taWNyb3NvZnQuV01QLmRlZmF1bHRwbHVnaW4iCi0iZGVzdGluYXRpb24tYXRvcCIK
LSJkZXN0aW5hdGlvbi1pbiIKLSJkZXN0aW5hdGlvbi1vdXQiCi0iZGVzdGluYXRpb24tb3ZlciIK
ICJkaXIiCiAiZGlzcGxheVRpdGxlIgogImRvY3R5cGUiCkBAIC0zNTgsMTAgKzMzNCw4IEBACiAi
aHRtbCIKICJodHRwIgogImh0dHBzIgotImltYWdlL2dpZiIKICJpbWFnZS9qcGVnIgogImltYWdl
L3BpY3QiCi0iaW1hZ2UvcGpwZWciCiAiaW1hZ2UvdGlmZiIKICJpbWciCiAiaXNMb2FkaW5nIgpA
QCAtMzcyLDYgKzM0Niw3IEBACiAibG9jYWxpemVkIHN0cmluZyBub3QgZm91bmQiCiAibHByb2oi
CiAibWFpbHRvOiIKKyJtYWluRnJhbWVEb2N1bWVudCIKICJtYWluRnJhbWVJY29uIgogIm1haW5G
cmFtZVRpdGxlIgogIm1haW5GcmFtZVVSTCIKQEAgLTM4MSwxOCArMzU2LDEyIEBACiAibnVsbHBs
dWdpbiIKICJwbHVnaW5zcGFnZSIKICJwcm94eS1yZXZhbGlkYXRlIgotInB1YmxpYy50aWZmIgog
InIiCiAicmVzaXplVG9wIgogInJnYiglLjBmLCUuMGYsJS4wZikiCiAicmdiYSglLjBmLCUuMGYs
JS4wZiwlZikiCiAicyIKLSJzb3VyY2UtYXRvcCIKLSJzb3VyY2UtaW4iCi0ic291cmNlLW91dCIK
LSJzb3VyY2Utb3ZlciIKICJzcmMiCi0idGV4dC8iCiAidGV4dC9jYWxlbmRhciIKICJ0ZXh0L2Rp
cmVjdG9yeSIKICJ0ZXh0L2h0bWwiCkBAIC00MTIsNyArMzgxLDYgQEAKICJ0aWZmIgogInR4dCIK
ICJ1IgotInVuZXhwZWN0ZWQgcmVzdWx0IGZyb20gQVRTVUdldEdseXBoQm91bmRzKCk6IGFjdHVh
bE51bUJvdW5kcyglZCkgIT0gMSIKICJ1cmxfaWNvbiIKICJ1dGYtMTYiCiAidmlzaXRDb3VudCIK
QEAgLTQ0NCwyNCArNDEyLDggQEAKIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5QYWNrYWdlLm06
IlJlYWxQbGF5ZXIgUGx1Z2luIgogUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblBhY2thZ2UubToi
bWFpbiIKIFBsdWdpbnMvV2ViUGx1Z2luRG9jdW1lbnRWaWV3Lm06InR5cGUiCi1XZWJDb3JlU3Vw
cG9ydC9XZWJDb29raWVBZGFwdGVyLm06IkNvb2tpZSIKIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
QnJpZGdlLm06ImhlaWdodCIKIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lQnJpZGdlLm06IndpZHRo
IgotV2ViQ29yZVN1cHBvcnQvV2ViSW1hZ2VEYXRhLm06IkdyYXkiCi1XZWJDb3JlU3VwcG9ydC9X
ZWJJbWFnZURhdGEubToiUkdCIgotV2ViQ29yZVN1cHBvcnQvV2ViSW1hZ2VSZW5kZXJlckZhY3Rv
cnkubToiY2xlYXIiCi1XZWJDb3JlU3VwcG9ydC9XZWJJbWFnZVJlbmRlcmVyRmFjdG9yeS5tOiJj
b3B5IgotV2ViQ29yZVN1cHBvcnQvV2ViSW1hZ2VSZW5kZXJlckZhY3RvcnkubToiZGFya2VyIgot
V2ViQ29yZVN1cHBvcnQvV2ViSW1hZ2VSZW5kZXJlckZhY3RvcnkubToiaGlnaGxpZ2h0IgotV2Vi
Q29yZVN1cHBvcnQvV2ViSW1hZ2VSZW5kZXJlckZhY3RvcnkubToibGlnaHRlciIKLVdlYkNvcmVT
dXBwb3J0L1dlYkltYWdlUmVuZGVyZXJGYWN0b3J5Lm06InhvciIKLVdlYkNvcmVTdXBwb3J0L1dl
YlRleHRSZW5kZXJlci5tOiJUaW1lcyBOZXcgUm9tYW4iCi1XZWJDb3JlU3VwcG9ydC9XZWJUZXh0
UmVuZGVyZXIubToibm90IGtub3duIgotV2ViQ29yZVN1cHBvcnQvV2ViVGV4dFJlbmRlcmVyRmFj
dG9yeS5tOiJBcmFiaWMiCi1XZWJDb3JlU3VwcG9ydC9XZWJUZXh0UmVuZGVyZXJGYWN0b3J5Lm06
IkdlZXphIFBybyIKLVdlYkNvcmVTdXBwb3J0L1dlYlRleHRSZW5kZXJlckZhY3RvcnkubToiT3Nh
a2EtTW9ubyIKLVdlYkNvcmVTdXBwb3J0L1dlYlRleHRSZW5kZXJlckZhY3RvcnkubToiUGFzaHRv
IgotV2ViQ29yZVN1cHBvcnQvV2ViVGV4dFJlbmRlcmVyRmFjdG9yeS5tOiJVcmR1IgogV2ViSW5z
cGVjdG9yL1dlYkluc3BlY3Rvci5tCiBXZWJJbnNwZWN0b3IvV2ViSW5zcGVjdG9yUGFuZWwubToi
Y29udHJvbCIKIFdlYkluc3BlY3Rvci9XZWJJbnNwZWN0b3JQYW5lbC5tOiJyZXNpemUiCg==
</data>
<flag name="review"
          id="2360"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>