<?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>280386</bug_id>
          
          <creation_ts>2024-09-25 19:18:33 -0700</creation_ts>
          <short_desc>[GTK] Blank webview when running on LLVMpipe: Failed to create DMA-BUF texture of size 1024x693: Unsupported dmabuf format: XR24:0xffffffffffffff</short_desc>
          <delta_ts>2024-09-25 22:00:55 -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>WebKitGTK</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=272979</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=277684</see_also>
          <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="Jeff Fortin">nekohayo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>cgarcia</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>2063262</commentid>
    <comment_count>0</comment_count>
      <attachid>472685</attachid>
    <who name="Jeff Fortin">nekohayo</who>
    <bug_when>2024-09-25 19:18:33 -0700</bug_when>
    <thetext>Created attachment 472685
MiniBrowser output when running with software rendering via LLVMpipe

With minibrowser 2.45.91, as well as Epiphany 47 (and previously 46) from the Fedora 41 repositories, when testing with an old Dell Inspiron machine that apparently runs everything on LLVMpipe (according to the GTK Inspector&apos;s vulkan renderer info, and the fact that GSK renderer = Cairo), any page I try to load (including internal pages like about:gpu) renders blank, even though you can interact with it.

This is a bit similar to bug #272980 but the frequent error code here is different, XR24 instead of AR24... it looks roughly like this:

(MiniBrowser:5353): Gsk-WARNING **: 21:49:21.950: Linking failure in shader:
error: Exceeded max TGSI temps (38/16)

(MiniBrowser:5353): Gsk-WARNING **: 21:49:22.226: Linking failure in shader:
error: Exceeded max TGSI temps (38/16)

(MiniBrowser:5353): Gdk-WARNING **: 21:49:22.227: Failed to realize GL renderer: Linking failure in shader: error: Exceeded max TGSI temps (38/16)
Failed to create DMA-BUF texture of size 1024x693: Unsupported dmabuf format: XR24:0xffffffffffffff
Failed to create DMA-BUF texture of size 1024x693: Unsupported dmabuf format: XR24:0xffffffffffffff
Failed to create DMA-BUF texture of size 1024x693: Unsupported dmabuf format: XR24:0xffffffffffffff
Failed to create DMA-BUF texture of size 1024x693: Unsupported dmabuf format: XR24:0xffffffffffffff


I am attaching the more detailed log output.

Unlike bug #277684 which seems to have a random occurrence aspect to it, the bug here is happening 100% of the time on that computer that seems to be running LLVMpipe.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2063263</commentid>
    <comment_count>1</comment_count>
      <attachid>472686</attachid>
    <who name="Jeff Fortin">nekohayo</who>
    <bug_when>2024-09-25 19:19:10 -0700</bug_when>
    <thetext>Created attachment 472686
about:gpu output</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2063289</commentid>
    <comment_count>2</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2024-09-25 22:00:55 -0700</bug_when>
    <thetext>It looks like we are not correctly handling the case of modifiers not being supported.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>472685</attachid>
            <date>2024-09-25 19:18:33 -0700</date>
            <delta_ts>2024-09-25 19:18:33 -0700</delta_ts>
            <desc>MiniBrowser output when running with software rendering via LLVMpipe</desc>
            <filename>Fedora 41 webkitgtk 2.45.91 minibrowser and epiphany output on blank page on LLVM graphics.txt</filename>
            <type>text/plain</type>
            <size>333572</size>
            <attacher name="Jeff Fortin">nekohayo</attacher>
            
              <data encoding="base64">JCAvdXNyL2xpYmV4ZWMvd2Via2l0Z3RrLTYuMC9NaW5pQnJvd3NlciAtLXZlcnNpb24KV2ViS2l0
R1RLIDIuNDUuOTEKCgokIC91c3IvbGliZXhlYy93ZWJraXRndGstNi4wL01pbmlCcm93c2VyIGh0
dHBzOi8vZ29vZ2xlLmNvbQoKKE1pbmlCcm93c2VyOjUzNTMpOiBHc2stV0FSTklORyAqKjogMjE6
NDk6MjEuOTUwOiBMaW5raW5nIGZhaWx1cmUgaW4gc2hhZGVyOgplcnJvcjogRXhjZWVkZWQgbWF4
IFRHU0kgdGVtcHMgKDM4LzE2KQoKKE1pbmlCcm93c2VyOjUzNTMpOiBHc2stV0FSTklORyAqKjog
MjE6NDk6MjIuMjI2OiBMaW5raW5nIGZhaWx1cmUgaW4gc2hhZGVyOgplcnJvcjogRXhjZWVkZWQg
bWF4IFRHU0kgdGVtcHMgKDM4LzE2KQoKKE1pbmlCcm93c2VyOjUzNTMpOiBHZGstV0FSTklORyAq
KjogMjE6NDk6MjIuMjI3OiBGYWlsZWQgdG8gcmVhbGl6ZSBHTCByZW5kZXJlcjogTGlua2luZyBm
YWlsdXJlIGluIHNoYWRlcjogZXJyb3I6IEV4Y2VlZGVkIG1heCBUR1NJIHRlbXBzICgzOC8xNikK
RmFpbGVkIHRvIGNyZWF0ZSBETUEtQlVGIHRleHR1cmUgb2Ygc2l6ZSAxMDI0eDY5MzogVW5zdXBw
b3J0ZWQgZG1hYnVmIGZvcm1hdDogWFIyNDoweGZmZmZmZmZmZmZmZmZmCkZhaWxlZCB0byBjcmVh
dGUgRE1BLUJVRiB0ZXh0dXJlIG9mIHNpemUgMTAyNHg2OTM6IFVuc3VwcG9ydGVkIGRtYWJ1ZiBm
b3JtYXQ6IFhSMjQ6MHhmZmZmZmZmZmZmZmZmZgpGYWlsZWQgdG8gY3JlYXRlIERNQS1CVUYgdGV4
dHVyZSBvZiBzaXplIDEwMjR4NjkzOiBVbnN1cHBvcnRlZCBkbWFidWYgZm9ybWF0OiBYUjI0OjB4
ZmZmZmZmZmZmZmZmZmYKRmFpbGVkIHRvIGNyZWF0ZSBETUEtQlVGIHRleHR1cmUgb2Ygc2l6ZSAx
MDI0eDY5MzogVW5zdXBwb3J0ZWQgZG1hYnVmIGZvcm1hdDogWFIyNDoweGZmZmZmZmZmZmZmZmZm
CgooV2ViS2l0V2ViUHJvY2VzczoyKTogR1N0cmVhbWVyLVdBUk5JTkcgKio6IDIxOjQ5OjIzLjgw
NTogRXh0ZXJuYWwgcGx1Z2luIGxvYWRlciBmYWlsZWQuIFRoaXMgbW9zdCBsaWtlbHkgbWVhbnMg
dGhhdCB0aGUgcGx1Z2luIGxvYWRlciBoZWxwZXIgYmluYXJ5IHdhcyBub3QgZm91bmQgb3IgY291
bGQgbm90IGJlIHJ1bi4gWW91IG1pZ2h0IG5lZWQgdG8gc2V0IHRoZSBHU1RfUExVR0lOX1NDQU5O
RVIgZW52aXJvbm1lbnQgdmFyaWFibGUgaWYgeW91ciBzZXR1cCBpcyB1bnVzdWFsLiBUaGlzIHNo
b3VsZCBub3JtYWxseSBub3QgYmUgcmVxdWlyZWQgdGhvdWdoLgpGYWlsZWQgdG8gY3JlYXRlIERN
QS1CVUYgdGV4dHVyZSBvZiBzaXplIDEwMjR4NjkzOiBVbnN1cHBvcnRlZCBkbWFidWYgZm9ybWF0
OiBYUjI0OjB4ZmZmZmZmZmZmZmZmZmYKU2hhZGVyIGNvbXBpbGF0aW9uIGVycm9yCi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQogICAxCS8vIFZlcnRleCBTS1NMCiAgIDIJdW5pZm9ybSBmbG9hdDQg
c2tfUlRBZGp1c3Q7dW5pZm9ybSBmbG9hdDN4MyB1bWF0cml4X1MxO2luIGZsb2F0MiBwb3NpdGlv
bjtpbiBoYWxmNCBjb2xvcjtpbiBmbG9hdDIgbG9jYWxDb29yZDtvdXQgaGFsZjQgdmNvbG9yX1Mw
O291dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7dm9pZCBtYWluKCkgey8vIFByaW1p
dGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCiAgIDMJdmNvbG9y
X1MwID0gY29sb3I7c2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxO3sKICAgNAl2VHJhbnNmb3Jt
ZWRDb29yZHNfMl9TMCA9ICh1bWF0cml4X1MxICogbG9jYWxDb29yZC54eTEpLnh5OwogICA1CX0K
ICAgNgl9CiAgIDcJLy8gRnJhZ21lbnQgU0tTTAogICA4CWNvbnN0IGludCBrTWF4TG9vcExpbWl0
X1MxX2MwID0gMjsKICAgOQl1bmlmb3JtIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzA7dW5pZm9y
bSBoYWxmNCB1b2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFsxNF07dW5pZm9ybSBoYWxmMiB1ZGlyX1Mx
X2MwO3VuaWZvcm0gZmxvYXQzeDMgdW1hdHJpeF9TMTtzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVy
XzBfUzE7CiAgMTAJaW4gaGFsZjQgdmNvbG9yX1MwO2luIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29y
ZHNfMl9TMDtoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxv
YXQyIF9jb29yZHMpIHsKICAxMQlyZXR1cm4gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBf
Y29vcmRzKTt9CiAgMTIJCiAgMTMJaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwKGhhbGY0IF9p
bnB1dCwgZmxvYXQyIF9jb29yZHMpIHsKICAxNAlyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMF9j
MF9jMChfaW5wdXQsICgodW1hdHJpeF9TMV9jMF9jMCkgKiBfY29vcmRzLnh5MSkueHkpOwogIDE1
CX0KICAxNgkKICAxNwloYWxmNCBydW50aW1lX3NoYWRlcl9TMV9jMChoYWxmNCBfaW5wdXQpIHsK
ICAxOAloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKICAxOQlmbG9hdDIgX3RtcF8xX2Nv
b3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwogIDIwCWhhbGY0IHN1bSA9IGhhbGY0KDAu
MCk7CiAgMjEJZm9yIChpbnQgaSA9IDA7aSA8IGtNYXhMb29wTGltaXRfUzFfYzA7ICsraSkgewog
IDIyCWhhbGY0IHMgPSB1b2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtpXTsKICAyMwlzdW0gKz0gcy55
ICogTWF0cml4RWZmZWN0X1MxX2MwX2MwKF90bXBfMF9pbkNvbG9yLCBfdG1wXzFfY29vcmRzICsg
ZmxvYXQyKHMueCAqIHVkaXJfUzFfYzApKTsKICAyNAlzdW0gKz0gcy53ICogTWF0cml4RWZmZWN0
X1MxX2MwX2MwKF90bXBfMF9pbkNvbG9yLCBfdG1wXzFfY29vcmRzICsgZmxvYXQyKHMueiAqIHVk
aXJfUzFfYzApKTsKICAyNQl9CiAgMjYJcmV0dXJuIGhhbGY0KHN1bSk7CiAgMjcJfQogIDI4CQog
IDI5CWhhbGY0IE1hdHJpeEVmZmVjdF9TMShoYWxmNCBfaW5wdXQpIHsKICAzMAlyZXR1cm4gcnVu
dGltZV9zaGFkZXJfUzFfYzAoX2lucHV0KTsKICAzMQl9CiAgMzIJCiAgMzMJdm9pZCBtYWluKCkg
ey8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgogIDM0CWhhbGY0IG91
dHB1dENvbG9yX1MwO291dHB1dENvbG9yX1MwID0gdmNvbG9yX1MwO2NvbnN0IGhhbGY0IG91dHB1
dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7aGFsZjQgb3V0cHV0X1MxO291dHB1dF9TMSA9IE1hdHJp
eEVmZmVjdF9TMShvdXRwdXRDb2xvcl9TMCk7eyAvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1
ZmYKICAzNQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDt9fQog
IDM2CS8vIFZlcnRleCBHTFNMCiAgMzcJI3ZlcnNpb24gMTAwCiAgMzgJCiAgMzkJcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CiAgNDAJcHJlY2lzaW9uIG1lZGl1bXAgc2FtcGxlcjJEOwogIDQxCXVu
aWZvcm0gaGlnaHAgdmVjNCBza19SVEFkanVzdDsKICA0Mgl1bmlmb3JtIGhpZ2hwIG1hdDMgdW1h
dHJpeF9TMTsKICA0MwlhdHRyaWJ1dGUgaGlnaHAgdmVjMiBwb3NpdGlvbjsKICA0NAlhdHRyaWJ1
dGUgbWVkaXVtcCB2ZWM0IGNvbG9yOwogIDQ1CWF0dHJpYnV0ZSBoaWdocCB2ZWMyIGxvY2FsQ29v
cmQ7CiAgNDYJdmFyeWluZyBtZWRpdW1wIHZlYzQgdmNvbG9yX1MwOwogIDQ3CXZhcnlpbmcgaGln
aHAgdmVjMiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKICA0OAl2b2lkIG1haW4oKSB7CiAgNDkJ
dmNvbG9yX1MwID0gY29sb3I7CiAgNTAJZ2xfUG9zaXRpb24gPSB2ZWM0KHBvc2l0aW9uLCAwLjAs
IDEuMCk7CiAgNTEJewogIDUyCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gKHVtYXRyaXhfUzEg
KiB2ZWMzKGxvY2FsQ29vcmQsIDEuMCkpLnh5OwogIDUzCX0KICA1NAlnbF9Qb3NpdGlvbiA9IHZl
YzQoZ2xfUG9zaXRpb24ueHkgKiBza19SVEFkanVzdC54eiArIGdsX1Bvc2l0aW9uLnd3ICogc2tf
UlRBZGp1c3QueXcsIDAuMCwgZ2xfUG9zaXRpb24udyk7CiAgNTUJfQogIDU2CQogIDU3CS8vIEZy
YWdtZW50IEdMU0wKICA1OAkjdmVyc2lvbiAxMDAKICA1OQkKICA2MAlwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKICA2MQlwcmVjaXNpb24gbWVkaXVtcCBzYW1wbGVyMkQ7CiAgNjIJY29uc3QgaGln
aHAgaW50IGtNYXhMb29wTGltaXRfUzFfYzAgPSAyOwogIDYzCXVuaWZvcm0gaGlnaHAgbWF0MyB1
bWF0cml4X1MxX2MwX2MwOwogIDY0CXVuaWZvcm0gbWVkaXVtcCB2ZWM0IHVvZmZzZXRzQW5kS2Vy
bmVsX1MxX2MwWzE0XTsKICA2NQl1bmlmb3JtIG1lZGl1bXAgdmVjMiB1ZGlyX1MxX2MwOwogIDY2
CXVuaWZvcm0gaGlnaHAgbWF0MyB1bWF0cml4X1MxOwogIDY3CXVuaWZvcm0gc2FtcGxlcjJEIHVU
ZXh0dXJlU2FtcGxlcl8wX1MxOwogIDY4CXZhcnlpbmcgbWVkaXVtcCB2ZWM0IHZjb2xvcl9TMDsK
ICA2OQl2YXJ5aW5nIGhpZ2hwIHZlYzIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CiAgNzAJdm9p
ZCBtYWluKCkgewogIDcxCWhpZ2hwIHZlYzIgXzZfdG1wXzFfY29vcmRzID0gdlRyYW5zZm9ybWVk
Q29vcmRzXzJfUzA7CiAgNzIJbWVkaXVtcCB2ZWM0IF83X3N1bSA9IHZlYzQoMC4wKTsKICA3Mwlm
b3IgKGhpZ2hwIGludCBfOF9pID0gMDtfOF9pIDwga01heExvb3BMaW1pdF9TMV9jMDsgKytfOF9p
KSB7CiAgNzQJbWVkaXVtcCB2ZWM0IF85X3MgPSB1b2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtfOF9p
XTsKICA3NQlfN19zdW0gKz0gXzlfcy55ICogdGV4dHVyZTJEKHVUZXh0dXJlU2FtcGxlcl8wX1Mx
LCAodW1hdHJpeF9TMV9jMF9jMCAqIHZlYzMoXzZfdG1wXzFfY29vcmRzICsgXzlfcy54ICogdWRp
cl9TMV9jMCwgMS4wKSkueHksIC0wLjQ3NSk7CiAgNzYJXzdfc3VtICs9IF85X3MudyAqIHRleHR1
cmUyRCh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgKHVtYXRyaXhfUzFfYzBfYzAgKiB2ZWMzKF82X3Rt
cF8xX2Nvb3JkcyArIF85X3MueiAqIHVkaXJfUzFfYzAsIDEuMCkpLnh5LCAtMC40NzUpOwogIDc3
CX0KICA3OAltZWRpdW1wIHZlYzQgb3V0cHV0X1MxID0gXzdfc3VtOwogIDc5CXsKICA4MAlnbF9G
cmFnQ29sb3IgPSBvdXRwdXRfUzE7CiAgODEJfQogIDgyCX0KICA4MwkKICA4NAkKRXJyb3JzOgpl
cnJvcjogRXhjZWVkZWQgbWF4IG5yIGluZGlyZWN0IHRleHR1cmUgbG9va3VwcyAoNS80KQoKU2hh
ZGVyIGNvbXBpbGF0aW9uIGVycm9yCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAxCS8vIFZl
cnRleCBTS1NMCiAgIDIJdW5pZm9ybSBmbG9hdDQgc2tfUlRBZGp1c3Q7dW5pZm9ybSBmbG9hdDN4
MyB1bWF0cml4X1MxO2luIGZsb2F0MiBwb3NpdGlvbjtpbiBoYWxmNCBjb2xvcjtpbiBmbG9hdDIg
bG9jYWxDb29yZDtvdXQgaGFsZjQgdmNvbG9yX1MwO291dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29v
cmRzXzJfUzA7dm9pZCBtYWluKCkgey8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VB
QUdlb21ldHJ5UHJvY2Vzc29yCiAgIDMJdmNvbG9yX1MwID0gY29sb3I7c2tfUG9zaXRpb24gPSBw
b3NpdGlvbi54eTAxO3sKICAgNAl2VHJhbnNmb3JtZWRDb29yZHNfMl9TMCA9ICh1bWF0cml4X1Mx
ICogbG9jYWxDb29yZC54eTEpLnh5OwogICA1CX0KICAgNgl9CiAgIDcJLy8gRnJhZ21lbnQgU0tT
TAogICA4CWNvbnN0IGludCBrTWF4TG9vcExpbWl0X1MxX2MwID0gMjsKICAgOQl1bmlmb3JtIGZs
b2F0NCB1Y2xhbXBfUzFfYzBfYzBfYzA7dW5pZm9ybSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2Mw
O3VuaWZvcm0gaGFsZjQgdW9mZnNldHNBbmRLZXJuZWxfUzFfYzBbMTRdO3VuaWZvcm0gaGFsZjIg
dWRpcl9TMV9jMDt1bmlmb3JtIGZsb2F0M3gzIHVtYXRyaXhfUzE7c2FtcGxlcjJEIHVUZXh0dXJl
U2FtcGxlcl8wX1MxOwogIDEwCWluIGhhbGY0IHZjb2xvcl9TMDtpbiBmbG9hdDIgdlRyYW5zZm9y
bWVkQ29vcmRzXzJfUzA7aGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChoYWxmNCBfaW5w
dXQsIGZsb2F0MiBfY29vcmRzKSB7CiAgMTEJZmxvYXQyIGluQ29vcmQgPSBfY29vcmRzO2Zsb2F0
MiBzdWJzZXRDb29yZDtzdWJzZXRDb29yZC54ID0gaW5Db29yZC54O3N1YnNldENvb3JkLnkgPSBp
bkNvb3JkLnk7ZmxvYXQyIGNsYW1wZWRDb29yZDtjbGFtcGVkQ29vcmQgPSBjbGFtcChzdWJzZXRD
b29yZCwgdWNsYW1wX1MxX2MwX2MwX2MwLnh5LCB1Y2xhbXBfUzFfYzBfYzBfYzAuencpO2hhbGY0
IHRleHR1cmVDb2xvciA9IHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgY2xhbXBlZENvb3Jk
KTtyZXR1cm4gdGV4dHVyZUNvbG9yO30KICAxMgkKICAxMwloYWxmNCBNYXRyaXhFZmZlY3RfUzFf
YzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgewogIDE0CXJldHVybiBUZXh0dXJl
RWZmZWN0X1MxX2MwX2MwX2MwKF9pbnB1dCwgKCh1bWF0cml4X1MxX2MwX2MwKSAqIF9jb29yZHMu
eHkxKS54eSk7CiAgMTUJfQogIDE2CQogIDE3CWhhbGY0IHJ1bnRpbWVfc2hhZGVyX1MxX2MwKGhh
bGY0IF9pbnB1dCkgewogIDE4CWhhbGY0IF90bXBfMF9pbkNvbG9yID0gX2lucHV0OwogIDE5CWZs
b2F0MiBfdG1wXzFfY29vcmRzID0gdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CiAgMjAJaGFsZjQg
c3VtID0gaGFsZjQoMC4wKTsKICAyMQlmb3IgKGludCBpID0gMDtpIDwga01heExvb3BMaW1pdF9T
MV9jMDsgKytpKSB7CiAgMjIJaGFsZjQgcyA9IHVvZmZzZXRzQW5kS2VybmVsX1MxX2MwW2ldOwog
IDIzCXN1bSArPSBzLnkgKiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX3RtcF8wX2luQ29sb3IsIF90
bXBfMV9jb29yZHMgKyBmbG9hdDIocy54ICogdWRpcl9TMV9jMCkpOwogIDI0CXN1bSArPSBzLncg
KiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX3RtcF8wX2luQ29sb3IsIF90bXBfMV9jb29yZHMgKyBm
bG9hdDIocy56ICogdWRpcl9TMV9jMCkpOwogIDI1CX0KICAyNglyZXR1cm4gaGFsZjQoc3VtKTsK
ICAyNwl9CiAgMjgJCiAgMjkJaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgewog
IDMwCXJldHVybiBydW50aW1lX3NoYWRlcl9TMV9jMChfaW5wdXQpOwogIDMxCX0KICAzMgkKICAz
Mwl2b2lkIG1haW4oKSB7Ly8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29y
CiAgMzQJaGFsZjQgb3V0cHV0Q29sb3JfUzA7b3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7Y29u
c3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTtoYWxmNCBvdXRwdXRfUzE7b3V0
cHV0X1MxID0gTWF0cml4RWZmZWN0X1MxKG91dHB1dENvbG9yX1MwKTt7IC8vIFhmZXIgUHJvY2Vz
c29yOiBQb3J0ZXIgRHVmZgogIDM1CXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENv
dmVyYWdlX1MwO319CiAgMzYJLy8gVmVydGV4IEdMU0wKICAzNwkjdmVyc2lvbiAxMDAKICAzOAkK
ICAzOQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKICA0MAlwcmVjaXNpb24gbWVkaXVtcCBzYW1w
bGVyMkQ7CiAgNDEJdW5pZm9ybSBoaWdocCB2ZWM0IHNrX1JUQWRqdXN0OwogIDQyCXVuaWZvcm0g
aGlnaHAgbWF0MyB1bWF0cml4X1MxOwogIDQzCWF0dHJpYnV0ZSBoaWdocCB2ZWMyIHBvc2l0aW9u
OwogIDQ0CWF0dHJpYnV0ZSBtZWRpdW1wIHZlYzQgY29sb3I7CiAgNDUJYXR0cmlidXRlIGhpZ2hw
IHZlYzIgbG9jYWxDb29yZDsKICA0Ngl2YXJ5aW5nIG1lZGl1bXAgdmVjNCB2Y29sb3JfUzA7CiAg
NDcJdmFyeWluZyBoaWdocCB2ZWMyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwogIDQ4CXZvaWQg
bWFpbigpIHsKICA0OQl2Y29sb3JfUzAgPSBjb2xvcjsKICA1MAlnbF9Qb3NpdGlvbiA9IHZlYzQo
cG9zaXRpb24sIDAuMCwgMS4wKTsKICA1MQl7CiAgNTIJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAg
PSAodW1hdHJpeF9TMSAqIHZlYzMobG9jYWxDb29yZCwgMS4wKSkueHk7CiAgNTMJfQogIDU0CWds
X1Bvc2l0aW9uID0gdmVjNChnbF9Qb3NpdGlvbi54eSAqIHNrX1JUQWRqdXN0Lnh6ICsgZ2xfUG9z
aXRpb24ud3cgKiBza19SVEFkanVzdC55dywgMC4wLCBnbF9Qb3NpdGlvbi53KTsKICA1NQl9CiAg
NTYJCiAgNTcJLy8gRnJhZ21lbnQgR0xTTAogIDU4CSN2ZXJzaW9uIDEwMAogIDU5CQogIDYwCXBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwogIDYxCXByZWNpc2lvbiBtZWRpdW1wIHNhbXBsZXIyRDsK
ICA2Mgljb25zdCBoaWdocCBpbnQga01heExvb3BMaW1pdF9TMV9jMCA9IDI7CiAgNjMJdW5pZm9y
bSBoaWdocCB2ZWM0IHVjbGFtcF9TMV9jMF9jMF9jMDsKICA2NAl1bmlmb3JtIGhpZ2hwIG1hdDMg
dW1hdHJpeF9TMV9jMF9jMDsKICA2NQl1bmlmb3JtIG1lZGl1bXAgdmVjNCB1b2Zmc2V0c0FuZEtl
cm5lbF9TMV9jMFsxNF07CiAgNjYJdW5pZm9ybSBtZWRpdW1wIHZlYzIgdWRpcl9TMV9jMDsKICA2
Nwl1bmlmb3JtIGhpZ2hwIG1hdDMgdW1hdHJpeF9TMTsKICA2OAl1bmlmb3JtIHNhbXBsZXIyRCB1
VGV4dHVyZVNhbXBsZXJfMF9TMTsKICA2OQl2YXJ5aW5nIG1lZGl1bXAgdmVjNCB2Y29sb3JfUzA7
CiAgNzAJdmFyeWluZyBoaWdocCB2ZWMyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwogIDcxCXZv
aWQgbWFpbigpIHsKICA3MgloaWdocCB2ZWMyIF8yNl90bXBfMV9jb29yZHMgPSB2VHJhbnNmb3Jt
ZWRDb29yZHNfMl9TMDsKICA3MwltZWRpdW1wIHZlYzQgXzI3X3N1bSA9IHZlYzQoMC4wKTsKICA3
NAlmb3IgKGhpZ2hwIGludCBfMjhfaSA9IDA7XzI4X2kgPCBrTWF4TG9vcExpbWl0X1MxX2MwOyAr
K18yOF9pKSB7CiAgNzUJbWVkaXVtcCB2ZWM0IF8yOV9zID0gdW9mZnNldHNBbmRLZXJuZWxfUzFf
YzBbXzI4X2ldOwogIDc2CWhpZ2hwIHZlYzIgXzMwX2luQ29vcmQgPSAodW1hdHJpeF9TMV9jMF9j
MCAqIHZlYzMoXzI2X3RtcF8xX2Nvb3JkcyArIF8yOV9zLnggKiB1ZGlyX1MxX2MwLCAxLjApKS54
eTsKICA3NwloaWdocCB2ZWMyIF8zMV9zdWJzZXRDb29yZDsKICA3OAlfMzFfc3Vic2V0Q29vcmQu
eCA9IF8zMF9pbkNvb3JkLng7CiAgNzkJXzMxX3N1YnNldENvb3JkLnkgPSBfMzBfaW5Db29yZC55
OwogIDgwCWhpZ2hwIHZlYzIgXzMyX2NsYW1wZWRDb29yZCA9IGNsYW1wKF8zMV9zdWJzZXRDb29y
ZCwgdWNsYW1wX1MxX2MwX2MwX2MwLnh5LCB1Y2xhbXBfUzFfYzBfYzBfYzAuencpOwogIDgxCW1l
ZGl1bXAgdmVjNCBfMzNfdGV4dHVyZUNvbG9yID0gdGV4dHVyZTJEKHVUZXh0dXJlU2FtcGxlcl8w
X1MxLCBfMzJfY2xhbXBlZENvb3JkLCAtMC40NzUpOwogIDgyCV8yN19zdW0gKz0gXzI5X3MueSAq
IF8zM190ZXh0dXJlQ29sb3I7CiAgODMJaGlnaHAgdmVjMiBfMzRfaW5Db29yZCA9ICh1bWF0cml4
X1MxX2MwX2MwICogdmVjMyhfMjZfdG1wXzFfY29vcmRzICsgXzI5X3MueiAqIHVkaXJfUzFfYzAs
IDEuMCkpLnh5OwogIDg0CWhpZ2hwIHZlYzIgXzM1X3N1YnNldENvb3JkOwogIDg1CV8zNV9zdWJz
ZXRDb29yZC54ID0gXzM0X2luQ29vcmQueDsKICA4NglfMzVfc3Vic2V0Q29vcmQueSA9IF8zNF9p
bkNvb3JkLnk7CiAgODcJaGlnaHAgdmVjMiBfMzZfY2xhbXBlZENvb3JkID0gY2xhbXAoXzM1X3N1
YnNldENvb3JkLCB1Y2xhbXBfUzFfYzBfYzBfYzAueHksIHVjbGFtcF9TMV9jMF9jMF9jMC56dyk7
CiAgODgJbWVkaXVtcCB2ZWM0IF8zN190ZXh0dXJlQ29sb3IgPSB0ZXh0dXJlMkQodVRleHR1cmVT
YW1wbGVyXzBfUzEsIF8zNl9jbGFtcGVkQ29vcmQsIC0wLjQ3NSk7CiAgODkJXzI3X3N1bSArPSBf
Mjlfcy53ICogXzM3X3RleHR1cmVDb2xvcjsKICA5MAl9CiAgOTEJbWVkaXVtcCB2ZWM0IG91dHB1
dF9TMSA9IF8yN19zdW07CiAgOTIJewogIDkzCWdsX0ZyYWdDb2xvciA9IG91dHB1dF9TMTsKICA5
NAl9CiAgOTUJfQogIDk2CQogIDk3CQpFcnJvcnM6CmVycm9yOiBFeGNlZWRlZCBtYXggbnIgaW5k
aXJlY3QgdGV4dHVyZSBsb29rdXBzICg1LzQpCgpTaGFkZXIgY29tcGlsYXRpb24gZXJyb3IKLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIDEJLy8gVmVydGV4IFNLU0wKICAgMgl1bmlmb3JtIGZs
b2F0NCBza19SVEFkanVzdDt1bmlmb3JtIGZsb2F0M3gzIHVtYXRyaXhfUzE7aW4gZmxvYXQyIHBv
c2l0aW9uO2luIGhhbGY0IGNvbG9yO2luIGZsb2F0MiBsb2NhbENvb3JkO291dCBoYWxmNCB2Y29s
b3JfUzA7b3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDt2b2lkIG1haW4oKSB7Ly8g
UHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKICAgMwl2
Y29sb3JfUzAgPSBjb2xvcjtza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7ewogICA0CXZUcmFu
c2Zvcm1lZENvb3Jkc18yX1MwID0gKHVtYXRyaXhfUzEgKiBsb2NhbENvb3JkLnh5MSkueHk7CiAg
IDUJfQogICA2CX0KICAgNwkvLyBGcmFnbWVudCBTS1NMCiAgIDgJY29uc3QgaW50IGtNYXhMb29w
TGltaXRfUzFfYzAgPSAyOwogICA5CXVuaWZvcm0gZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDt1
bmlmb3JtIGhhbGY0IHVvZmZzZXRzQW5kS2VybmVsX1MxX2MwWzE0XTt1bmlmb3JtIGhhbGYyIHVk
aXJfUzFfYzA7dW5pZm9ybSBmbG9hdDN4MyB1bWF0cml4X1MxO3NhbXBsZXIyRCB1VGV4dHVyZVNh
bXBsZXJfMF9TMTsKICAxMAlpbiBoYWxmNCB2Y29sb3JfUzA7aW4gZmxvYXQyIHZUcmFuc2Zvcm1l
ZENvb3Jkc18yX1MwO2hhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0
LCBmbG9hdDIgX2Nvb3JkcykgewogIDExCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBf
UzEsIF9jb29yZHMpO30KICAxMgkKICAxMwloYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoaGFs
ZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgewogIDE0CXJldHVybiBUZXh0dXJlRWZmZWN0X1Mx
X2MwX2MwX2MwKF9pbnB1dCwgKCh1bWF0cml4X1MxX2MwX2MwKSAqIF9jb29yZHMueHkxKS54eSk7
CiAgMTUJfQogIDE2CQogIDE3CWhhbGY0IHJ1bnRpbWVfc2hhZGVyX1MxX2MwKGhhbGY0IF9pbnB1
dCkgewogIDE4CWhhbGY0IF90bXBfMF9pbkNvbG9yID0gX2lucHV0OwogIDE5CWZsb2F0MiBfdG1w
XzFfY29vcmRzID0gdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CiAgMjAJaGFsZjQgc3VtID0gaGFs
ZjQoMC4wKTsKICAyMQlmb3IgKGludCBpID0gMDtpIDwga01heExvb3BMaW1pdF9TMV9jMDsgKytp
KSB7CiAgMjIJaGFsZjQgcyA9IHVvZmZzZXRzQW5kS2VybmVsX1MxX2MwW2ldOwogIDIzCXN1bSAr
PSBzLnkgKiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX3RtcF8wX2luQ29sb3IsIF90bXBfMV9jb29y
ZHMgKyBmbG9hdDIocy54ICogdWRpcl9TMV9jMCkpOwogIDI0CXN1bSArPSBzLncgKiBNYXRyaXhF
ZmZlY3RfUzFfYzBfYzAoX3RtcF8wX2luQ29sb3IsIF90bXBfMV9jb29yZHMgKyBmbG9hdDIocy56
ICogdWRpcl9TMV9jMCkpOwogIDI1CX0KICAyNglyZXR1cm4gaGFsZjQoc3VtKTsKICAyNwl9CiAg
MjgJCiAgMjkJaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgewogIDMwCXJldHVy
biBydW50aW1lX3NoYWRlcl9TMV9jMChfaW5wdXQpOwogIDMxCX0KICAzMgkKICAzMwl2b2lkIG1h
aW4oKSB7Ly8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCiAgMzQJaGFs
ZjQgb3V0cHV0Q29sb3JfUzA7b3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7Y29uc3QgaGFsZjQg
b3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTtoYWxmNCBvdXRwdXRfUzE7b3V0cHV0X1MxID0g
TWF0cml4RWZmZWN0X1MxKG91dHB1dENvbG9yX1MwKTt7IC8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0
ZXIgRHVmZgogIDM1CXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1Mw
O319CiAgMzYJLy8gVmVydGV4IEdMU0wKICAzNwkjdmVyc2lvbiAxMDAKICAzOAkKICAzOQlwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKICA0MAlwcmVjaXNpb24gbWVkaXVtcCBzYW1wbGVyMkQ7CiAg
NDEJdW5pZm9ybSBoaWdocCB2ZWM0IHNrX1JUQWRqdXN0OwogIDQyCXVuaWZvcm0gaGlnaHAgbWF0
MyB1bWF0cml4X1MxOwogIDQzCWF0dHJpYnV0ZSBoaWdocCB2ZWMyIHBvc2l0aW9uOwogIDQ0CWF0
dHJpYnV0ZSBtZWRpdW1wIHZlYzQgY29sb3I7CiAgNDUJYXR0cmlidXRlIGhpZ2hwIHZlYzIgbG9j
YWxDb29yZDsKICA0Ngl2YXJ5aW5nIG1lZGl1bXAgdmVjNCB2Y29sb3JfUzA7CiAgNDcJdmFyeWlu
ZyBoaWdocCB2ZWMyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwogIDQ4CXZvaWQgbWFpbigpIHsK
ICA0OQl2Y29sb3JfUzAgPSBjb2xvcjsKICA1MAlnbF9Qb3NpdGlvbiA9IHZlYzQocG9zaXRpb24s
IDAuMCwgMS4wKTsKICA1MQl7CiAgNTIJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAgPSAodW1hdHJp
eF9TMSAqIHZlYzMobG9jYWxDb29yZCwgMS4wKSkueHk7CiAgNTMJfQogIDU0CWdsX1Bvc2l0aW9u
ID0gdmVjNChnbF9Qb3NpdGlvbi54eSAqIHNrX1JUQWRqdXN0Lnh6ICsgZ2xfUG9zaXRpb24ud3cg
KiBza19SVEFkanVzdC55dywgMC4wLCBnbF9Qb3NpdGlvbi53KTsKICA1NQl9CiAgNTYJCiAgNTcJ
Ly8gRnJhZ21lbnQgR0xTTAogIDU4CSN2ZXJzaW9uIDEwMAogIDU5CQogIDYwCXByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OwogIDYxCXByZWNpc2lvbiBtZWRpdW1wIHNhbXBsZXIyRDsKICA2Mgljb25z
dCBoaWdocCBpbnQga01heExvb3BMaW1pdF9TMV9jMCA9IDI7CiAgNjMJdW5pZm9ybSBoaWdocCBt
YXQzIHVtYXRyaXhfUzFfYzBfYzA7CiAgNjQJdW5pZm9ybSBtZWRpdW1wIHZlYzQgdW9mZnNldHNB
bmRLZXJuZWxfUzFfYzBbMTRdOwogIDY1CXVuaWZvcm0gbWVkaXVtcCB2ZWMyIHVkaXJfUzFfYzA7
CiAgNjYJdW5pZm9ybSBoaWdocCBtYXQzIHVtYXRyaXhfUzE7CiAgNjcJdW5pZm9ybSBzYW1wbGVy
MkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CiAgNjgJdmFyeWluZyBtZWRpdW1wIHZlYzQgdmNvbG9y
X1MwOwogIDY5CXZhcnlpbmcgaGlnaHAgdmVjMiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKICA3
MAl2b2lkIG1haW4oKSB7CiAgNzEJaGlnaHAgdmVjMiBfNl90bXBfMV9jb29yZHMgPSB2VHJhbnNm
b3JtZWRDb29yZHNfMl9TMDsKICA3MgltZWRpdW1wIHZlYzQgXzdfc3VtID0gdmVjNCgwLjApOwog
IDczCWZvciAoaGlnaHAgaW50IF84X2kgPSAwO184X2kgPCBrTWF4TG9vcExpbWl0X1MxX2MwOyAr
K184X2kpIHsKICA3NAltZWRpdW1wIHZlYzQgXzlfcyA9IHVvZmZzZXRzQW5kS2VybmVsX1MxX2Mw
W184X2ldOwogIDc1CV83X3N1bSArPSBfOV9zLnkgKiB0ZXh0dXJlMkQodVRleHR1cmVTYW1wbGVy
XzBfUzEsICh1bWF0cml4X1MxX2MwX2MwICogdmVjMyhfNl90bXBfMV9jb29yZHMgKyBfOV9zLngg
KiB1ZGlyX1MxX2MwLCAxLjApKS54eSwgLTAuNDc1KTsKICA3NglfN19zdW0gKz0gXzlfcy53ICog
dGV4dHVyZTJEKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCAodW1hdHJpeF9TMV9jMF9jMCAqIHZlYzMo
XzZfdG1wXzFfY29vcmRzICsgXzlfcy56ICogdWRpcl9TMV9jMCwgMS4wKSkueHksIC0wLjQ3NSk7
CiAgNzcJfQogIDc4CW1lZGl1bXAgdmVjNCBvdXRwdXRfUzEgPSBfN19zdW07CiAgNzkJewogIDgw
CWdsX0ZyYWdDb2xvciA9IG91dHB1dF9TMTsKICA4MQl9CiAgODIJfQogIDgzCQogIDg0CQpFcnJv
cnM6CmVycm9yOiBFeGNlZWRlZCBtYXggbnIgaW5kaXJlY3QgdGV4dHVyZSBsb29rdXBzICg1LzQp
CgpTaGFkZXIgY29tcGlsYXRpb24gZXJyb3IKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIDEJ
Ly8gVmVydGV4IFNLU0wKICAgMgl1bmlmb3JtIGZsb2F0NCBza19SVEFkanVzdDt1bmlmb3JtIGZs
b2F0M3gzIHVtYXRyaXhfUzE7aW4gZmxvYXQyIHBvc2l0aW9uO2luIGhhbGY0IGNvbG9yO2luIGZs
b2F0MiBsb2NhbENvb3JkO291dCBoYWxmNCB2Y29sb3JfUzA7b3V0IGZsb2F0MiB2VHJhbnNmb3Jt
ZWRDb29yZHNfMl9TMDt2b2lkIG1haW4oKSB7Ly8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVy
RWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKICAgMwl2Y29sb3JfUzAgPSBjb2xvcjtza19Qb3NpdGlv
biA9IHBvc2l0aW9uLnh5MDE7ewogICA0CXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gKHVtYXRy
aXhfUzEgKiBsb2NhbENvb3JkLnh5MSkueHk7CiAgIDUJfQogICA2CX0KICAgNwkvLyBGcmFnbWVu
dCBTS1NMCiAgIDgJY29uc3QgaW50IGtNYXhMb29wTGltaXRfUzFfYzAgPSAyOwogICA5CXVuaWZv
cm0gZmxvYXQ0IHVjbGFtcF9TMV9jMF9jMF9jMDt1bmlmb3JtIGZsb2F0M3gzIHVtYXRyaXhfUzFf
YzBfYzA7dW5pZm9ybSBoYWxmNCB1b2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFsxNF07dW5pZm9ybSBo
YWxmMiB1ZGlyX1MxX2MwO3VuaWZvcm0gZmxvYXQzeDMgdW1hdHJpeF9TMTtzYW1wbGVyMkQgdVRl
eHR1cmVTYW1wbGVyXzBfUzE7CiAgMTAJaW4gaGFsZjQgdmNvbG9yX1MwO2luIGZsb2F0MiB2VHJh
bnNmb3JtZWRDb29yZHNfMl9TMDtoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKGhhbGY0
IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIHsKICAxMQlmbG9hdDIgaW5Db29yZCA9IF9jb29yZHM7
ZmxvYXQyIHN1YnNldENvb3JkO3N1YnNldENvb3JkLnggPSBpbkNvb3JkLng7c3Vic2V0Q29vcmQu
eSA9IGluQ29vcmQueTtmbG9hdDIgY2xhbXBlZENvb3JkO2NsYW1wZWRDb29yZCA9IGNsYW1wKHN1
YnNldENvb3JkLCB1Y2xhbXBfUzFfYzBfYzBfYzAueHksIHVjbGFtcF9TMV9jMF9jMF9jMC56dyk7
aGFsZjQgdGV4dHVyZUNvbG9yID0gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBjbGFtcGVk
Q29vcmQpO3JldHVybiB0ZXh0dXJlQ29sb3I7fQogIDEyCQogIDEzCWhhbGY0IE1hdHJpeEVmZmVj
dF9TMV9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSB7CiAgMTQJcmV0dXJuIFRl
eHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoX2lucHV0LCAoKHVtYXRyaXhfUzFfYzBfYzApICogX2Nv
b3Jkcy54eTEpLnh5KTsKICAxNQl9CiAgMTYJCiAgMTcJaGFsZjQgcnVudGltZV9zaGFkZXJfUzFf
YzAoaGFsZjQgX2lucHV0KSB7CiAgMTgJaGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CiAg
MTkJZmxvYXQyIF90bXBfMV9jb29yZHMgPSB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKICAyMAlo
YWxmNCBzdW0gPSBoYWxmNCgwLjApOwogIDIxCWZvciAoaW50IGkgPSAwO2kgPCBrTWF4TG9vcExp
bWl0X1MxX2MwOyArK2kpIHsKICAyMgloYWxmNCBzID0gdW9mZnNldHNBbmRLZXJuZWxfUzFfYzBb
aV07CiAgMjMJc3VtICs9IHMueSAqIE1hdHJpeEVmZmVjdF9TMV9jMF9jMChfdG1wXzBfaW5Db2xv
ciwgX3RtcF8xX2Nvb3JkcyArIGZsb2F0MihzLnggKiB1ZGlyX1MxX2MwKSk7CiAgMjQJc3VtICs9
IHMudyAqIE1hdHJpeEVmZmVjdF9TMV9jMF9jMChfdG1wXzBfaW5Db2xvciwgX3RtcF8xX2Nvb3Jk
cyArIGZsb2F0MihzLnogKiB1ZGlyX1MxX2MwKSk7CiAgMjUJfQogIDI2CXJldHVybiBoYWxmNChz
dW0pOwogIDI3CX0KICAyOAkKICAyOQloYWxmNCBNYXRyaXhFZmZlY3RfUzEoaGFsZjQgX2lucHV0
KSB7CiAgMzAJcmV0dXJuIHJ1bnRpbWVfc2hhZGVyX1MxX2MwKF9pbnB1dCk7CiAgMzEJfQogIDMy
CQogIDMzCXZvaWQgbWFpbigpIHsvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9j
ZXNzb3IKICAzNAloYWxmNCBvdXRwdXRDb2xvcl9TMDtvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9T
MDtjb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpO2hhbGY0IG91dHB1dF9T
MTtvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3JfUzApO3sgLy8gWGZlciBQ
cm9jZXNzb3I6IFBvcnRlciBEdWZmCiAgMzUJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0
cHV0Q292ZXJhZ2VfUzA7fX0KICAzNgkvLyBWZXJ0ZXggR0xTTAogIDM3CSN2ZXJzaW9uIDEwMAog
IDM4CQogIDM5CXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwogIDQwCXByZWNpc2lvbiBtZWRpdW1w
IHNhbXBsZXIyRDsKICA0MQl1bmlmb3JtIGhpZ2hwIHZlYzQgc2tfUlRBZGp1c3Q7CiAgNDIJdW5p
Zm9ybSBoaWdocCBtYXQzIHVtYXRyaXhfUzE7CiAgNDMJYXR0cmlidXRlIGhpZ2hwIHZlYzIgcG9z
aXRpb247CiAgNDQJYXR0cmlidXRlIG1lZGl1bXAgdmVjNCBjb2xvcjsKICA0NQlhdHRyaWJ1dGUg
aGlnaHAgdmVjMiBsb2NhbENvb3JkOwogIDQ2CXZhcnlpbmcgbWVkaXVtcCB2ZWM0IHZjb2xvcl9T
MDsKICA0Nwl2YXJ5aW5nIGhpZ2hwIHZlYzIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CiAgNDgJ
dm9pZCBtYWluKCkgewogIDQ5CXZjb2xvcl9TMCA9IGNvbG9yOwogIDUwCWdsX1Bvc2l0aW9uID0g
dmVjNChwb3NpdGlvbiwgMC4wLCAxLjApOwogIDUxCXsKICA1Mgl2VHJhbnNmb3JtZWRDb29yZHNf
Ml9TMCA9ICh1bWF0cml4X1MxICogdmVjMyhsb2NhbENvb3JkLCAxLjApKS54eTsKICA1Mwl9CiAg
NTQJZ2xfUG9zaXRpb24gPSB2ZWM0KGdsX1Bvc2l0aW9uLnh5ICogc2tfUlRBZGp1c3QueHogKyBn
bF9Qb3NpdGlvbi53dyAqIHNrX1JUQWRqdXN0Lnl3LCAwLjAsIGdsX1Bvc2l0aW9uLncpOwogIDU1
CX0KICA1NgkKICA1NwkvLyBGcmFnbWVudCBHTFNMCiAgNTgJI3ZlcnNpb24gMTAwCiAgNTkJCiAg
NjAJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CiAgNjEJcHJlY2lzaW9uIG1lZGl1bXAgc2FtcGxl
cjJEOwogIDYyCWNvbnN0IGhpZ2hwIGludCBrTWF4TG9vcExpbWl0X1MxX2MwID0gMjsKICA2Mwl1
bmlmb3JtIGhpZ2hwIHZlYzQgdWNsYW1wX1MxX2MwX2MwX2MwOwogIDY0CXVuaWZvcm0gaGlnaHAg
bWF0MyB1bWF0cml4X1MxX2MwX2MwOwogIDY1CXVuaWZvcm0gbWVkaXVtcCB2ZWM0IHVvZmZzZXRz
QW5kS2VybmVsX1MxX2MwWzE0XTsKICA2Ngl1bmlmb3JtIG1lZGl1bXAgdmVjMiB1ZGlyX1MxX2Mw
OwogIDY3CXVuaWZvcm0gaGlnaHAgbWF0MyB1bWF0cml4X1MxOwogIDY4CXVuaWZvcm0gc2FtcGxl
cjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwogIDY5CXZhcnlpbmcgbWVkaXVtcCB2ZWM0IHZjb2xv
cl9TMDsKICA3MAl2YXJ5aW5nIGhpZ2hwIHZlYzIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CiAg
NzEJdm9pZCBtYWluKCkgewogIDcyCWhpZ2hwIHZlYzIgXzI2X3RtcF8xX2Nvb3JkcyA9IHZUcmFu
c2Zvcm1lZENvb3Jkc18yX1MwOwogIDczCW1lZGl1bXAgdmVjNCBfMjdfc3VtID0gdmVjNCgwLjAp
OwogIDc0CWZvciAoaGlnaHAgaW50IF8yOF9pID0gMDtfMjhfaSA8IGtNYXhMb29wTGltaXRfUzFf
YzA7ICsrXzI4X2kpIHsKICA3NQltZWRpdW1wIHZlYzQgXzI5X3MgPSB1b2Zmc2V0c0FuZEtlcm5l
bF9TMV9jMFtfMjhfaV07CiAgNzYJaGlnaHAgdmVjMiBfMzBfaW5Db29yZCA9ICh1bWF0cml4X1Mx
X2MwX2MwICogdmVjMyhfMjZfdG1wXzFfY29vcmRzICsgXzI5X3MueCAqIHVkaXJfUzFfYzAsIDEu
MCkpLnh5OwogIDc3CWhpZ2hwIHZlYzIgXzMxX3N1YnNldENvb3JkOwogIDc4CV8zMV9zdWJzZXRD
b29yZC54ID0gXzMwX2luQ29vcmQueDsKICA3OQlfMzFfc3Vic2V0Q29vcmQueSA9IF8zMF9pbkNv
b3JkLnk7CiAgODAJaGlnaHAgdmVjMiBfMzJfY2xhbXBlZENvb3JkID0gY2xhbXAoXzMxX3N1YnNl
dENvb3JkLCB1Y2xhbXBfUzFfYzBfYzBfYzAueHksIHVjbGFtcF9TMV9jMF9jMF9jMC56dyk7CiAg
ODEJbWVkaXVtcCB2ZWM0IF8zM190ZXh0dXJlQ29sb3IgPSB0ZXh0dXJlMkQodVRleHR1cmVTYW1w
bGVyXzBfUzEsIF8zMl9jbGFtcGVkQ29vcmQsIC0wLjQ3NSk7CiAgODIJXzI3X3N1bSArPSBfMjlf
cy55ICogXzMzX3RleHR1cmVDb2xvcjsKICA4MwloaWdocCB2ZWMyIF8zNF9pbkNvb3JkID0gKHVt
YXRyaXhfUzFfYzBfYzAgKiB2ZWMzKF8yNl90bXBfMV9jb29yZHMgKyBfMjlfcy56ICogdWRpcl9T
MV9jMCwgMS4wKSkueHk7CiAgODQJaGlnaHAgdmVjMiBfMzVfc3Vic2V0Q29vcmQ7CiAgODUJXzM1
X3N1YnNldENvb3JkLnggPSBfMzRfaW5Db29yZC54OwogIDg2CV8zNV9zdWJzZXRDb29yZC55ID0g
XzM0X2luQ29vcmQueTsKICA4NwloaWdocCB2ZWMyIF8zNl9jbGFtcGVkQ29vcmQgPSBjbGFtcChf
MzVfc3Vic2V0Q29vcmQsIHVjbGFtcF9TMV9jMF9jMF9jMC54eSwgdWNsYW1wX1MxX2MwX2MwX2Mw
Lnp3KTsKICA4OAltZWRpdW1wIHZlYzQgXzM3X3RleHR1cmVDb2xvciA9IHRleHR1cmUyRCh1VGV4
dHVyZVNhbXBsZXJfMF9TMSwgXzM2X2NsYW1wZWRDb29yZCwgLTAuNDc1KTsKICA4OQlfMjdfc3Vt
ICs9IF8yOV9zLncgKiBfMzdfdGV4dHVyZUNvbG9yOwogIDkwCX0KICA5MQltZWRpdW1wIHZlYzQg
b3V0cHV0X1MxID0gXzI3X3N1bTsKICA5Mgl7CiAgOTMJZ2xfRnJhZ0NvbG9yID0gb3V0cHV0X1Mx
OwogIDk0CX0KICA5NQl9CiAgOTYJCiAgOTcJCkVycm9yczoKZXJyb3I6IEV4Y2VlZGVkIG1heCBu
ciBpbmRpcmVjdCB0ZXh0dXJlIGxvb2t1cHMgKDUvNCkKClNoYWRlciBjb21waWxhdGlvbiBlcnJv
cgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgMQkvLyBWZXJ0ZXggU0tTTAogICAyCXVuaWZv
cm0gZmxvYXQ0IHNrX1JUQWRqdXN0O3VuaWZvcm0gZmxvYXQzeDMgdW1hdHJpeF9TMTtpbiBmbG9h
dDIgcG9zaXRpb247aW4gaGFsZjQgY29sb3I7aW4gZmxvYXQyIGxvY2FsQ29vcmQ7b3V0IGhhbGY0
IHZjb2xvcl9TMDtvdXQgZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwO3ZvaWQgbWFpbigp
IHsvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3Nvcgog
ICAzCXZjb2xvcl9TMCA9IGNvbG9yO3NrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTt7CiAgIDQJ
dlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAgPSAodW1hdHJpeF9TMSAqIGxvY2FsQ29vcmQueHkxKS54
eTsKICAgNQl9CiAgIDYJfQogICA3CS8vIEZyYWdtZW50IFNLU0wKICAgOAljb25zdCBpbnQga01h
eExvb3BMaW1pdF9TMV9jMCA9IDY7CiAgIDkJdW5pZm9ybSBmbG9hdDN4MyB1bWF0cml4X1MxX2Mw
X2MwO3VuaWZvcm0gaGFsZjQgdW9mZnNldHNBbmRLZXJuZWxfUzFfYzBbMTRdO3VuaWZvcm0gaGFs
ZjIgdWRpcl9TMV9jMDt1bmlmb3JtIGZsb2F0M3gzIHVtYXRyaXhfUzE7c2FtcGxlcjJEIHVUZXh0
dXJlU2FtcGxlcl8wX1MxOwogIDEwCWluIGhhbGY0IHZjb2xvcl9TMDtpbiBmbG9hdDIgdlRyYW5z
Zm9ybWVkQ29vcmRzXzJfUzA7aGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChoYWxmNCBf
aW5wdXQsIGZsb2F0MiBfY29vcmRzKSB7CiAgMTEJcmV0dXJuIHNhbXBsZSh1VGV4dHVyZVNhbXBs
ZXJfMF9TMSwgX2Nvb3Jkcyk7fQogIDEyCQogIDEzCWhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9j
MChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSB7CiAgMTQJcmV0dXJuIFRleHR1cmVFZmZl
Y3RfUzFfYzBfYzBfYzAoX2lucHV0LCAoKHVtYXRyaXhfUzFfYzBfYzApICogX2Nvb3Jkcy54eTEp
Lnh5KTsKICAxNQl9CiAgMTYJCiAgMTcJaGFsZjQgcnVudGltZV9zaGFkZXJfUzFfYzAoaGFsZjQg
X2lucHV0KSB7CiAgMTgJaGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CiAgMTkJZmxvYXQy
IF90bXBfMV9jb29yZHMgPSB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKICAyMAloYWxmNCBzdW0g
PSBoYWxmNCgwLjApOwogIDIxCWZvciAoaW50IGkgPSAwO2kgPCBrTWF4TG9vcExpbWl0X1MxX2Mw
OyArK2kpIHsKICAyMgloYWxmNCBzID0gdW9mZnNldHNBbmRLZXJuZWxfUzFfYzBbaV07CiAgMjMJ
c3VtICs9IHMueSAqIE1hdHJpeEVmZmVjdF9TMV9jMF9jMChfdG1wXzBfaW5Db2xvciwgX3RtcF8x
X2Nvb3JkcyArIGZsb2F0MihzLnggKiB1ZGlyX1MxX2MwKSk7CiAgMjQJc3VtICs9IHMudyAqIE1h
dHJpeEVmZmVjdF9TMV9jMF9jMChfdG1wXzBfaW5Db2xvciwgX3RtcF8xX2Nvb3JkcyArIGZsb2F0
MihzLnogKiB1ZGlyX1MxX2MwKSk7CiAgMjUJfQogIDI2CXJldHVybiBoYWxmNChzdW0pOwogIDI3
CX0KICAyOAkKICAyOQloYWxmNCBNYXRyaXhFZmZlY3RfUzEoaGFsZjQgX2lucHV0KSB7CiAgMzAJ
cmV0dXJuIHJ1bnRpbWVfc2hhZGVyX1MxX2MwKF9pbnB1dCk7CiAgMzEJfQogIDMyCQogIDMzCXZv
aWQgbWFpbigpIHsvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKICAz
NAloYWxmNCBvdXRwdXRDb2xvcl9TMDtvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDtjb25zdCBo
YWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpO2hhbGY0IG91dHB1dF9TMTtvdXRwdXRf
UzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3JfUzApO3sgLy8gWGZlciBQcm9jZXNzb3I6
IFBvcnRlciBEdWZmCiAgMzUJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJh
Z2VfUzA7fX0KICAzNgkvLyBWZXJ0ZXggR0xTTAogIDM3CSN2ZXJzaW9uIDEwMAogIDM4CQogIDM5
CXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwogIDQwCXByZWNpc2lvbiBtZWRpdW1wIHNhbXBsZXIy
RDsKICA0MQl1bmlmb3JtIGhpZ2hwIHZlYzQgc2tfUlRBZGp1c3Q7CiAgNDIJdW5pZm9ybSBoaWdo
cCBtYXQzIHVtYXRyaXhfUzE7CiAgNDMJYXR0cmlidXRlIGhpZ2hwIHZlYzIgcG9zaXRpb247CiAg
NDQJYXR0cmlidXRlIG1lZGl1bXAgdmVjNCBjb2xvcjsKICA0NQlhdHRyaWJ1dGUgaGlnaHAgdmVj
MiBsb2NhbENvb3JkOwogIDQ2CXZhcnlpbmcgbWVkaXVtcCB2ZWM0IHZjb2xvcl9TMDsKICA0Nwl2
YXJ5aW5nIGhpZ2hwIHZlYzIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CiAgNDgJdm9pZCBtYWlu
KCkgewogIDQ5CXZjb2xvcl9TMCA9IGNvbG9yOwogIDUwCWdsX1Bvc2l0aW9uID0gdmVjNChwb3Np
dGlvbiwgMC4wLCAxLjApOwogIDUxCXsKICA1Mgl2VHJhbnNmb3JtZWRDb29yZHNfMl9TMCA9ICh1
bWF0cml4X1MxICogdmVjMyhsb2NhbENvb3JkLCAxLjApKS54eTsKICA1Mwl9CiAgNTQJZ2xfUG9z
aXRpb24gPSB2ZWM0KGdsX1Bvc2l0aW9uLnh5ICogc2tfUlRBZGp1c3QueHogKyBnbF9Qb3NpdGlv
bi53dyAqIHNrX1JUQWRqdXN0Lnl3LCAwLjAsIGdsX1Bvc2l0aW9uLncpOwogIDU1CX0KICA1NgkK
ICA1NwkvLyBGcmFnbWVudCBHTFNMCiAgNTgJI3ZlcnNpb24gMTAwCiAgNTkJCiAgNjAJcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7CiAgNjEJcHJlY2lzaW9uIG1lZGl1bXAgc2FtcGxlcjJEOwogIDYy
CWNvbnN0IGhpZ2hwIGludCBrTWF4TG9vcExpbWl0X1MxX2MwID0gNjsKICA2Mwl1bmlmb3JtIGhp
Z2hwIG1hdDMgdW1hdHJpeF9TMV9jMF9jMDsKICA2NAl1bmlmb3JtIG1lZGl1bXAgdmVjNCB1b2Zm
c2V0c0FuZEtlcm5lbF9TMV9jMFsxNF07CiAgNjUJdW5pZm9ybSBtZWRpdW1wIHZlYzIgdWRpcl9T
MV9jMDsKICA2Ngl1bmlmb3JtIGhpZ2hwIG1hdDMgdW1hdHJpeF9TMTsKICA2Nwl1bmlmb3JtIHNh
bXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKICA2OAl2YXJ5aW5nIG1lZGl1bXAgdmVjNCB2
Y29sb3JfUzA7CiAgNjkJdmFyeWluZyBoaWdocCB2ZWMyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1Mw
OwogIDcwCXZvaWQgbWFpbigpIHsKICA3MQloaWdocCB2ZWMyIF82X3RtcF8xX2Nvb3JkcyA9IHZU
cmFuc2Zvcm1lZENvb3Jkc18yX1MwOwogIDcyCW1lZGl1bXAgdmVjNCBfN19zdW0gPSB2ZWM0KDAu
MCk7CiAgNzMJZm9yIChoaWdocCBpbnQgXzhfaSA9IDA7XzhfaSA8IGtNYXhMb29wTGltaXRfUzFf
YzA7ICsrXzhfaSkgewogIDc0CW1lZGl1bXAgdmVjNCBfOV9zID0gdW9mZnNldHNBbmRLZXJuZWxf
UzFfYzBbXzhfaV07CiAgNzUJXzdfc3VtICs9IF85X3MueSAqIHRleHR1cmUyRCh1VGV4dHVyZVNh
bXBsZXJfMF9TMSwgKHVtYXRyaXhfUzFfYzBfYzAgKiB2ZWMzKF82X3RtcF8xX2Nvb3JkcyArIF85
X3MueCAqIHVkaXJfUzFfYzAsIDEuMCkpLnh5LCAtMC40NzUpOwogIDc2CV83X3N1bSArPSBfOV9z
LncgKiB0ZXh0dXJlMkQodVRleHR1cmVTYW1wbGVyXzBfUzEsICh1bWF0cml4X1MxX2MwX2MwICog
dmVjMyhfNl90bXBfMV9jb29yZHMgKyBfOV9zLnogKiB1ZGlyX1MxX2MwLCAxLjApKS54eSwgLTAu
NDc1KTsKICA3Nwl9CiAgNzgJbWVkaXVtcCB2ZWM0IG91dHB1dF9TMSA9IF83X3N1bTsKICA3OQl7
CiAgODAJZ2xfRnJhZ0NvbG9yID0gb3V0cHV0X1MxOwogIDgxCX0KICA4Mgl9CiAgODMJCiAgODQJ
CkVycm9yczoKZXJyb3I6IEV4Y2VlZGVkIG1heCBuciBpbmRpcmVjdCB0ZXh0dXJlIGxvb2t1cHMg
KDEzLzQpCkV4Y2VlZGVkIG1heCBBTFUgaW5zdHJ1Y3Rpb25zICg2Ni82NCkKU2hhZGVyIGNvbXBp
bGF0aW9uIGVycm9yCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAxCS8vIFZlcnRleCBTS1NM
CiAgIDIJdW5pZm9ybSBmbG9hdDQgc2tfUlRBZGp1c3Q7dW5pZm9ybSBmbG9hdDN4MyB1bWF0cml4
X1MxO2luIGZsb2F0MiBwb3NpdGlvbjtpbiBoYWxmNCBjb2xvcjtpbiBmbG9hdDIgbG9jYWxDb29y
ZDtvdXQgaGFsZjQgdmNvbG9yX1MwO291dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7
dm9pZCBtYWluKCkgey8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5
UHJvY2Vzc29yCiAgIDMJdmNvbG9yX1MwID0gY29sb3I7c2tfUG9zaXRpb24gPSBwb3NpdGlvbi54
eTAxO3sKICAgNAl2VHJhbnNmb3JtZWRDb29yZHNfMl9TMCA9ICh1bWF0cml4X1MxICogbG9jYWxD
b29yZC54eTEpLnh5OwogICA1CX0KICAgNgl9CiAgIDcJLy8gRnJhZ21lbnQgU0tTTAogICA4CWNv
bnN0IGludCBrTWF4TG9vcExpbWl0X1MxX2MwID0gNjsKICAgOQl1bmlmb3JtIGZsb2F0NCB1Y2xh
bXBfUzFfYzBfYzBfYzA7dW5pZm9ybSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwO3VuaWZvcm0g
aGFsZjQgdW9mZnNldHNBbmRLZXJuZWxfUzFfYzBbMTRdO3VuaWZvcm0gaGFsZjIgdWRpcl9TMV9j
MDt1bmlmb3JtIGZsb2F0M3gzIHVtYXRyaXhfUzE7c2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8w
X1MxOwogIDEwCWluIGhhbGY0IHZjb2xvcl9TMDtpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRz
XzJfUzA7aGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0
MiBfY29vcmRzKSB7CiAgMTEJZmxvYXQyIGluQ29vcmQgPSBfY29vcmRzO2Zsb2F0MiBzdWJzZXRD
b29yZDtzdWJzZXRDb29yZC54ID0gaW5Db29yZC54O3N1YnNldENvb3JkLnkgPSBpbkNvb3JkLnk7
ZmxvYXQyIGNsYW1wZWRDb29yZDtjbGFtcGVkQ29vcmQgPSBjbGFtcChzdWJzZXRDb29yZCwgdWNs
YW1wX1MxX2MwX2MwX2MwLnh5LCB1Y2xhbXBfUzFfYzBfYzBfYzAuencpO2hhbGY0IHRleHR1cmVD
b2xvciA9IHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgY2xhbXBlZENvb3JkKTtyZXR1cm4g
dGV4dHVyZUNvbG9yO30KICAxMgkKICAxMwloYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoaGFs
ZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgewogIDE0CXJldHVybiBUZXh0dXJlRWZmZWN0X1Mx
X2MwX2MwX2MwKF9pbnB1dCwgKCh1bWF0cml4X1MxX2MwX2MwKSAqIF9jb29yZHMueHkxKS54eSk7
CiAgMTUJfQogIDE2CQogIDE3CWhhbGY0IHJ1bnRpbWVfc2hhZGVyX1MxX2MwKGhhbGY0IF9pbnB1
dCkgewogIDE4CWhhbGY0IF90bXBfMF9pbkNvbG9yID0gX2lucHV0OwogIDE5CWZsb2F0MiBfdG1w
XzFfY29vcmRzID0gdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CiAgMjAJaGFsZjQgc3VtID0gaGFs
ZjQoMC4wKTsKICAyMQlmb3IgKGludCBpID0gMDtpIDwga01heExvb3BMaW1pdF9TMV9jMDsgKytp
KSB7CiAgMjIJaGFsZjQgcyA9IHVvZmZzZXRzQW5kS2VybmVsX1MxX2MwW2ldOwogIDIzCXN1bSAr
PSBzLnkgKiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX3RtcF8wX2luQ29sb3IsIF90bXBfMV9jb29y
ZHMgKyBmbG9hdDIocy54ICogdWRpcl9TMV9jMCkpOwogIDI0CXN1bSArPSBzLncgKiBNYXRyaXhF
ZmZlY3RfUzFfYzBfYzAoX3RtcF8wX2luQ29sb3IsIF90bXBfMV9jb29yZHMgKyBmbG9hdDIocy56
ICogdWRpcl9TMV9jMCkpOwogIDI1CX0KICAyNglyZXR1cm4gaGFsZjQoc3VtKTsKICAyNwl9CiAg
MjgJCiAgMjkJaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgewogIDMwCXJldHVy
biBydW50aW1lX3NoYWRlcl9TMV9jMChfaW5wdXQpOwogIDMxCX0KICAzMgkKICAzMwl2b2lkIG1h
aW4oKSB7Ly8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCiAgMzQJaGFs
ZjQgb3V0cHV0Q29sb3JfUzA7b3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7Y29uc3QgaGFsZjQg
b3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTtoYWxmNCBvdXRwdXRfUzE7b3V0cHV0X1MxID0g
TWF0cml4RWZmZWN0X1MxKG91dHB1dENvbG9yX1MwKTt7IC8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0
ZXIgRHVmZgogIDM1CXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1Mw
O319CiAgMzYJLy8gVmVydGV4IEdMU0wKICAzNwkjdmVyc2lvbiAxMDAKICAzOAkKICAzOQlwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKICA0MAlwcmVjaXNpb24gbWVkaXVtcCBzYW1wbGVyMkQ7CiAg
NDEJdW5pZm9ybSBoaWdocCB2ZWM0IHNrX1JUQWRqdXN0OwogIDQyCXVuaWZvcm0gaGlnaHAgbWF0
MyB1bWF0cml4X1MxOwogIDQzCWF0dHJpYnV0ZSBoaWdocCB2ZWMyIHBvc2l0aW9uOwogIDQ0CWF0
dHJpYnV0ZSBtZWRpdW1wIHZlYzQgY29sb3I7CiAgNDUJYXR0cmlidXRlIGhpZ2hwIHZlYzIgbG9j
YWxDb29yZDsKICA0Ngl2YXJ5aW5nIG1lZGl1bXAgdmVjNCB2Y29sb3JfUzA7CiAgNDcJdmFyeWlu
ZyBoaWdocCB2ZWMyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwogIDQ4CXZvaWQgbWFpbigpIHsK
ICA0OQl2Y29sb3JfUzAgPSBjb2xvcjsKICA1MAlnbF9Qb3NpdGlvbiA9IHZlYzQocG9zaXRpb24s
IDAuMCwgMS4wKTsKICA1MQl7CiAgNTIJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAgPSAodW1hdHJp
eF9TMSAqIHZlYzMobG9jYWxDb29yZCwgMS4wKSkueHk7CiAgNTMJfQogIDU0CWdsX1Bvc2l0aW9u
ID0gdmVjNChnbF9Qb3NpdGlvbi54eSAqIHNrX1JUQWRqdXN0Lnh6ICsgZ2xfUG9zaXRpb24ud3cg
KiBza19SVEFkanVzdC55dywgMC4wLCBnbF9Qb3NpdGlvbi53KTsKICA1NQl9CiAgNTYJCiAgNTcJ
Ly8gRnJhZ21lbnQgR0xTTAogIDU4CSN2ZXJzaW9uIDEwMAogIDU5CQogIDYwCXByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OwogIDYxCXByZWNpc2lvbiBtZWRpdW1wIHNhbXBsZXIyRDsKICA2Mgljb25z
dCBoaWdocCBpbnQga01heExvb3BMaW1pdF9TMV9jMCA9IDY7CiAgNjMJdW5pZm9ybSBoaWdocCB2
ZWM0IHVjbGFtcF9TMV9jMF9jMF9jMDsKICA2NAl1bmlmb3JtIGhpZ2hwIG1hdDMgdW1hdHJpeF9T
MV9jMF9jMDsKICA2NQl1bmlmb3JtIG1lZGl1bXAgdmVjNCB1b2Zmc2V0c0FuZEtlcm5lbF9TMV9j
MFsxNF07CiAgNjYJdW5pZm9ybSBtZWRpdW1wIHZlYzIgdWRpcl9TMV9jMDsKICA2Nwl1bmlmb3Jt
IGhpZ2hwIG1hdDMgdW1hdHJpeF9TMTsKICA2OAl1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNh
bXBsZXJfMF9TMTsKICA2OQl2YXJ5aW5nIG1lZGl1bXAgdmVjNCB2Y29sb3JfUzA7CiAgNzAJdmFy
eWluZyBoaWdocCB2ZWMyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwogIDcxCXZvaWQgbWFpbigp
IHsKICA3MgloaWdocCB2ZWMyIF8yNl90bXBfMV9jb29yZHMgPSB2VHJhbnNmb3JtZWRDb29yZHNf
Ml9TMDsKICA3MwltZWRpdW1wIHZlYzQgXzI3X3N1bSA9IHZlYzQoMC4wKTsKICA3NAlmb3IgKGhp
Z2hwIGludCBfMjhfaSA9IDA7XzI4X2kgPCBrTWF4TG9vcExpbWl0X1MxX2MwOyArK18yOF9pKSB7
CiAgNzUJbWVkaXVtcCB2ZWM0IF8yOV9zID0gdW9mZnNldHNBbmRLZXJuZWxfUzFfYzBbXzI4X2ld
OwogIDc2CWhpZ2hwIHZlYzIgXzMwX2luQ29vcmQgPSAodW1hdHJpeF9TMV9jMF9jMCAqIHZlYzMo
XzI2X3RtcF8xX2Nvb3JkcyArIF8yOV9zLnggKiB1ZGlyX1MxX2MwLCAxLjApKS54eTsKICA3Nwlo
aWdocCB2ZWMyIF8zMV9zdWJzZXRDb29yZDsKICA3OAlfMzFfc3Vic2V0Q29vcmQueCA9IF8zMF9p
bkNvb3JkLng7CiAgNzkJXzMxX3N1YnNldENvb3JkLnkgPSBfMzBfaW5Db29yZC55OwogIDgwCWhp
Z2hwIHZlYzIgXzMyX2NsYW1wZWRDb29yZCA9IGNsYW1wKF8zMV9zdWJzZXRDb29yZCwgdWNsYW1w
X1MxX2MwX2MwX2MwLnh5LCB1Y2xhbXBfUzFfYzBfYzBfYzAuencpOwogIDgxCW1lZGl1bXAgdmVj
NCBfMzNfdGV4dHVyZUNvbG9yID0gdGV4dHVyZTJEKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfMzJf
Y2xhbXBlZENvb3JkLCAtMC40NzUpOwogIDgyCV8yN19zdW0gKz0gXzI5X3MueSAqIF8zM190ZXh0
dXJlQ29sb3I7CiAgODMJaGlnaHAgdmVjMiBfMzRfaW5Db29yZCA9ICh1bWF0cml4X1MxX2MwX2Mw
ICogdmVjMyhfMjZfdG1wXzFfY29vcmRzICsgXzI5X3MueiAqIHVkaXJfUzFfYzAsIDEuMCkpLnh5
OwogIDg0CWhpZ2hwIHZlYzIgXzM1X3N1YnNldENvb3JkOwogIDg1CV8zNV9zdWJzZXRDb29yZC54
ID0gXzM0X2luQ29vcmQueDsKICA4NglfMzVfc3Vic2V0Q29vcmQueSA9IF8zNF9pbkNvb3JkLnk7
CiAgODcJaGlnaHAgdmVjMiBfMzZfY2xhbXBlZENvb3JkID0gY2xhbXAoXzM1X3N1YnNldENvb3Jk
LCB1Y2xhbXBfUzFfYzBfYzBfYzAueHksIHVjbGFtcF9TMV9jMF9jMF9jMC56dyk7CiAgODgJbWVk
aXVtcCB2ZWM0IF8zN190ZXh0dXJlQ29sb3IgPSB0ZXh0dXJlMkQodVRleHR1cmVTYW1wbGVyXzBf
UzEsIF8zNl9jbGFtcGVkQ29vcmQsIC0wLjQ3NSk7CiAgODkJXzI3X3N1bSArPSBfMjlfcy53ICog
XzM3X3RleHR1cmVDb2xvcjsKICA5MAl9CiAgOTEJbWVkaXVtcCB2ZWM0IG91dHB1dF9TMSA9IF8y
N19zdW07CiAgOTIJewogIDkzCWdsX0ZyYWdDb2xvciA9IG91dHB1dF9TMTsKICA5NAl9CiAgOTUJ
fQogIDk2CQogIDk3CQpFcnJvcnM6CmVycm9yOiBFeGNlZWRlZCBtYXggbnIgaW5kaXJlY3QgdGV4
dHVyZSBsb29rdXBzICgxMy80KQpFeGNlZWRlZCBtYXggQUxVIGluc3RydWN0aW9ucyAoNzgvNjQp
ClNoYWRlciBjb21waWxhdGlvbiBlcnJvcgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgMQkv
LyBWZXJ0ZXggU0tTTAogICAyCXVuaWZvcm0gZmxvYXQ0IHNrX1JUQWRqdXN0O3VuaWZvcm0gZmxv
YXQzeDMgdW1hdHJpeF9TMTtpbiBmbG9hdDIgcG9zaXRpb247aW4gaGFsZjQgY29sb3I7aW4gZmxv
YXQyIGxvY2FsQ29vcmQ7b3V0IGhhbGY0IHZjb2xvcl9TMDtvdXQgZmxvYXQyIHZUcmFuc2Zvcm1l
ZENvb3Jkc18yX1MwO3ZvaWQgbWFpbigpIHsvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJF
ZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgogICAzCXZjb2xvcl9TMCA9IGNvbG9yO3NrX1Bvc2l0aW9u
ID0gcG9zaXRpb24ueHkwMTt7CiAgIDQJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAgPSAodW1hdHJp
eF9TMSAqIGxvY2FsQ29vcmQueHkxKS54eTsKICAgNQl9CiAgIDYJfQogICA3CS8vIEZyYWdtZW50
IFNLU0wKICAgOAljb25zdCBpbnQga01heExvb3BMaW1pdF9TMV9jMCA9IDY7CiAgIDkJdW5pZm9y
bSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwO3VuaWZvcm0gaGFsZjQgdW9mZnNldHNBbmRLZXJu
ZWxfUzFfYzBbMTRdO3VuaWZvcm0gaGFsZjIgdWRpcl9TMV9jMDt1bmlmb3JtIGZsb2F0M3gzIHVt
YXRyaXhfUzE7c2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwogIDEwCWluIGhhbGY0IHZj
b2xvcl9TMDtpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7aGFsZjQgVGV4dHVyZUVm
ZmVjdF9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSB7CiAgMTEJcmV0
dXJuIHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgX2Nvb3Jkcyk7fQogIDEyCQogIDEzCWhh
bGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSB7
CiAgMTQJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoX2lucHV0LCAoKHVtYXRyaXhf
UzFfYzBfYzApICogX2Nvb3Jkcy54eTEpLnh5KTsKICAxNQl9CiAgMTYJCiAgMTcJaGFsZjQgcnVu
dGltZV9zaGFkZXJfUzFfYzAoaGFsZjQgX2lucHV0KSB7CiAgMTgJaGFsZjQgX3RtcF8wX2luQ29s
b3IgPSBfaW5wdXQ7CiAgMTkJZmxvYXQyIF90bXBfMV9jb29yZHMgPSB2VHJhbnNmb3JtZWRDb29y
ZHNfMl9TMDsKICAyMAloYWxmNCBzdW0gPSBoYWxmNCgwLjApOwogIDIxCWZvciAoaW50IGkgPSAw
O2kgPCBrTWF4TG9vcExpbWl0X1MxX2MwOyArK2kpIHsKICAyMgloYWxmNCBzID0gdW9mZnNldHNB
bmRLZXJuZWxfUzFfYzBbaV07CiAgMjMJc3VtICs9IHMueSAqIE1hdHJpeEVmZmVjdF9TMV9jMF9j
MChfdG1wXzBfaW5Db2xvciwgX3RtcF8xX2Nvb3JkcyArIGZsb2F0MihzLnggKiB1ZGlyX1MxX2Mw
KSk7CiAgMjQJc3VtICs9IHMudyAqIE1hdHJpeEVmZmVjdF9TMV9jMF9jMChfdG1wXzBfaW5Db2xv
ciwgX3RtcF8xX2Nvb3JkcyArIGZsb2F0MihzLnogKiB1ZGlyX1MxX2MwKSk7CiAgMjUJfQogIDI2
CXJldHVybiBoYWxmNChzdW0pOwogIDI3CX0KICAyOAkKICAyOQloYWxmNCBNYXRyaXhFZmZlY3Rf
UzEoaGFsZjQgX2lucHV0KSB7CiAgMzAJcmV0dXJuIHJ1bnRpbWVfc2hhZGVyX1MxX2MwKF9pbnB1
dCk7CiAgMzEJfQogIDMyCQogIDMzCXZvaWQgbWFpbigpIHsvLyBTdGFnZSAwLCBRdWFkUGVyRWRn
ZUFBR2VvbWV0cnlQcm9jZXNzb3IKICAzNAloYWxmNCBvdXRwdXRDb2xvcl9TMDtvdXRwdXRDb2xv
cl9TMCA9IHZjb2xvcl9TMDtjb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEp
O2hhbGY0IG91dHB1dF9TMTtvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3Jf
UzApO3sgLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCiAgMzUJc2tfRnJhZ0NvbG9yID0g
b3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7fX0KICAzNgkvLyBWZXJ0ZXggR0xTTAogIDM3
CSN2ZXJzaW9uIDEwMAogIDM4CQogIDM5CXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwogIDQwCXBy
ZWNpc2lvbiBtZWRpdW1wIHNhbXBsZXIyRDsKICA0MQl1bmlmb3JtIGhpZ2hwIHZlYzQgc2tfUlRB
ZGp1c3Q7CiAgNDIJdW5pZm9ybSBoaWdocCBtYXQzIHVtYXRyaXhfUzE7CiAgNDMJYXR0cmlidXRl
IGhpZ2hwIHZlYzIgcG9zaXRpb247CiAgNDQJYXR0cmlidXRlIG1lZGl1bXAgdmVjNCBjb2xvcjsK
ICA0NQlhdHRyaWJ1dGUgaGlnaHAgdmVjMiBsb2NhbENvb3JkOwogIDQ2CXZhcnlpbmcgbWVkaXVt
cCB2ZWM0IHZjb2xvcl9TMDsKICA0Nwl2YXJ5aW5nIGhpZ2hwIHZlYzIgdlRyYW5zZm9ybWVkQ29v
cmRzXzJfUzA7CiAgNDgJdm9pZCBtYWluKCkgewogIDQ5CXZjb2xvcl9TMCA9IGNvbG9yOwogIDUw
CWdsX1Bvc2l0aW9uID0gdmVjNChwb3NpdGlvbiwgMC4wLCAxLjApOwogIDUxCXsKICA1Mgl2VHJh
bnNmb3JtZWRDb29yZHNfMl9TMCA9ICh1bWF0cml4X1MxICogdmVjMyhsb2NhbENvb3JkLCAxLjAp
KS54eTsKICA1Mwl9CiAgNTQJZ2xfUG9zaXRpb24gPSB2ZWM0KGdsX1Bvc2l0aW9uLnh5ICogc2tf
UlRBZGp1c3QueHogKyBnbF9Qb3NpdGlvbi53dyAqIHNrX1JUQWRqdXN0Lnl3LCAwLjAsIGdsX1Bv
c2l0aW9uLncpOwogIDU1CX0KICA1NgkKICA1NwkvLyBGcmFnbWVudCBHTFNMCiAgNTgJI3ZlcnNp
b24gMTAwCiAgNTkJCiAgNjAJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CiAgNjEJcHJlY2lzaW9u
IG1lZGl1bXAgc2FtcGxlcjJEOwogIDYyCWNvbnN0IGhpZ2hwIGludCBrTWF4TG9vcExpbWl0X1Mx
X2MwID0gNjsKICA2Mwl1bmlmb3JtIGhpZ2hwIG1hdDMgdW1hdHJpeF9TMV9jMF9jMDsKICA2NAl1
bmlmb3JtIG1lZGl1bXAgdmVjNCB1b2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFsxNF07CiAgNjUJdW5p
Zm9ybSBtZWRpdW1wIHZlYzIgdWRpcl9TMV9jMDsKICA2Ngl1bmlmb3JtIGhpZ2hwIG1hdDMgdW1h
dHJpeF9TMTsKICA2Nwl1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKICA2
OAl2YXJ5aW5nIG1lZGl1bXAgdmVjNCB2Y29sb3JfUzA7CiAgNjkJdmFyeWluZyBoaWdocCB2ZWMy
IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwogIDcwCXZvaWQgbWFpbigpIHsKICA3MQloaWdocCB2
ZWMyIF82X3RtcF8xX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwogIDcyCW1lZGl1
bXAgdmVjNCBfN19zdW0gPSB2ZWM0KDAuMCk7CiAgNzMJZm9yIChoaWdocCBpbnQgXzhfaSA9IDA7
XzhfaSA8IGtNYXhMb29wTGltaXRfUzFfYzA7ICsrXzhfaSkgewogIDc0CW1lZGl1bXAgdmVjNCBf
OV9zID0gdW9mZnNldHNBbmRLZXJuZWxfUzFfYzBbXzhfaV07CiAgNzUJXzdfc3VtICs9IF85X3Mu
eSAqIHRleHR1cmUyRCh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgKHVtYXRyaXhfUzFfYzBfYzAgKiB2
ZWMzKF82X3RtcF8xX2Nvb3JkcyArIF85X3MueCAqIHVkaXJfUzFfYzAsIDEuMCkpLnh5LCAtMC40
NzUpOwogIDc2CV83X3N1bSArPSBfOV9zLncgKiB0ZXh0dXJlMkQodVRleHR1cmVTYW1wbGVyXzBf
UzEsICh1bWF0cml4X1MxX2MwX2MwICogdmVjMyhfNl90bXBfMV9jb29yZHMgKyBfOV9zLnogKiB1
ZGlyX1MxX2MwLCAxLjApKS54eSwgLTAuNDc1KTsKICA3Nwl9CiAgNzgJbWVkaXVtcCB2ZWM0IG91
dHB1dF9TMSA9IF83X3N1bTsKICA3OQl7CiAgODAJZ2xfRnJhZ0NvbG9yID0gb3V0cHV0X1MxOwog
IDgxCX0KICA4Mgl9CiAgODMJCiAgODQJCkVycm9yczoKZXJyb3I6IEV4Y2VlZGVkIG1heCBuciBp
bmRpcmVjdCB0ZXh0dXJlIGxvb2t1cHMgKDEzLzQpCkV4Y2VlZGVkIG1heCBBTFUgaW5zdHJ1Y3Rp
b25zICg2Ni82NCkKU2hhZGVyIGNvbXBpbGF0aW9uIGVycm9yCi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogICAxCS8vIFZlcnRleCBTS1NMCiAgIDIJdW5pZm9ybSBmbG9hdDQgc2tfUlRBZGp1c3Q7
dW5pZm9ybSBmbG9hdDN4MyB1bWF0cml4X1MxO2luIGZsb2F0MiBwb3NpdGlvbjtpbiBoYWxmNCBj
b2xvcjtpbiBmbG9hdDIgbG9jYWxDb29yZDtvdXQgaGFsZjQgdmNvbG9yX1MwO291dCBmbG9hdDIg
dlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7dm9pZCBtYWluKCkgey8vIFByaW1pdGl2ZSBQcm9jZXNz
b3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCiAgIDMJdmNvbG9yX1MwID0gY29sb3I7
c2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxO3sKICAgNAl2VHJhbnNmb3JtZWRDb29yZHNfMl9T
MCA9ICh1bWF0cml4X1MxICogbG9jYWxDb29yZC54eTEpLnh5OwogICA1CX0KICAgNgl9CiAgIDcJ
Ly8gRnJhZ21lbnQgU0tTTAogICA4CWNvbnN0IGludCBrTWF4TG9vcExpbWl0X1MxX2MwID0gNjsK
ICAgOQl1bmlmb3JtIGZsb2F0NCB1Y2xhbXBfUzFfYzBfYzBfYzA7dW5pZm9ybSBmbG9hdDN4MyB1
bWF0cml4X1MxX2MwX2MwO3VuaWZvcm0gaGFsZjQgdW9mZnNldHNBbmRLZXJuZWxfUzFfYzBbMTRd
O3VuaWZvcm0gaGFsZjIgdWRpcl9TMV9jMDt1bmlmb3JtIGZsb2F0M3gzIHVtYXRyaXhfUzE7c2Ft
cGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwogIDEwCWluIGhhbGY0IHZjb2xvcl9TMDtpbiBm
bG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7aGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMF9j
MF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSB7CiAgMTEJZmxvYXQyIGluQ29vcmQg
PSBfY29vcmRzO2Zsb2F0MiBzdWJzZXRDb29yZDtzdWJzZXRDb29yZC54ID0gaW5Db29yZC54O3N1
YnNldENvb3JkLnkgPSBpbkNvb3JkLnk7ZmxvYXQyIGNsYW1wZWRDb29yZDtjbGFtcGVkQ29vcmQg
PSBjbGFtcChzdWJzZXRDb29yZCwgdWNsYW1wX1MxX2MwX2MwX2MwLnh5LCB1Y2xhbXBfUzFfYzBf
YzBfYzAuencpO2hhbGY0IHRleHR1cmVDb2xvciA9IHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9T
MSwgY2xhbXBlZENvb3JkKTtyZXR1cm4gdGV4dHVyZUNvbG9yO30KICAxMgkKICAxMwloYWxmNCBN
YXRyaXhFZmZlY3RfUzFfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgewogIDE0
CXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKF9pbnB1dCwgKCh1bWF0cml4X1MxX2Mw
X2MwKSAqIF9jb29yZHMueHkxKS54eSk7CiAgMTUJfQogIDE2CQogIDE3CWhhbGY0IHJ1bnRpbWVf
c2hhZGVyX1MxX2MwKGhhbGY0IF9pbnB1dCkgewogIDE4CWhhbGY0IF90bXBfMF9pbkNvbG9yID0g
X2lucHV0OwogIDE5CWZsb2F0MiBfdG1wXzFfY29vcmRzID0gdlRyYW5zZm9ybWVkQ29vcmRzXzJf
UzA7CiAgMjAJaGFsZjQgc3VtID0gaGFsZjQoMC4wKTsKICAyMQlmb3IgKGludCBpID0gMDtpIDwg
a01heExvb3BMaW1pdF9TMV9jMDsgKytpKSB7CiAgMjIJaGFsZjQgcyA9IHVvZmZzZXRzQW5kS2Vy
bmVsX1MxX2MwW2ldOwogIDIzCXN1bSArPSBzLnkgKiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX3Rt
cF8wX2luQ29sb3IsIF90bXBfMV9jb29yZHMgKyBmbG9hdDIocy54ICogdWRpcl9TMV9jMCkpOwog
IDI0CXN1bSArPSBzLncgKiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX3RtcF8wX2luQ29sb3IsIF90
bXBfMV9jb29yZHMgKyBmbG9hdDIocy56ICogdWRpcl9TMV9jMCkpOwogIDI1CX0KICAyNglyZXR1
cm4gaGFsZjQoc3VtKTsKICAyNwl9CiAgMjgJCiAgMjkJaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhh
bGY0IF9pbnB1dCkgewogIDMwCXJldHVybiBydW50aW1lX3NoYWRlcl9TMV9jMChfaW5wdXQpOwog
IDMxCX0KICAzMgkKICAzMwl2b2lkIG1haW4oKSB7Ly8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdl
b21ldHJ5UHJvY2Vzc29yCiAgMzQJaGFsZjQgb3V0cHV0Q29sb3JfUzA7b3V0cHV0Q29sb3JfUzAg
PSB2Y29sb3JfUzA7Y29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTtoYWxm
NCBvdXRwdXRfUzE7b3V0cHV0X1MxID0gTWF0cml4RWZmZWN0X1MxKG91dHB1dENvbG9yX1MwKTt7
IC8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgogIDM1CXNrX0ZyYWdDb2xvciA9IG91dHB1
dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwO319CiAgMzYJLy8gVmVydGV4IEdMU0wKICAzNwkjdmVy
c2lvbiAxMDAKICAzOAkKICAzOQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKICA0MAlwcmVjaXNp
b24gbWVkaXVtcCBzYW1wbGVyMkQ7CiAgNDEJdW5pZm9ybSBoaWdocCB2ZWM0IHNrX1JUQWRqdXN0
OwogIDQyCXVuaWZvcm0gaGlnaHAgbWF0MyB1bWF0cml4X1MxOwogIDQzCWF0dHJpYnV0ZSBoaWdo
cCB2ZWMyIHBvc2l0aW9uOwogIDQ0CWF0dHJpYnV0ZSBtZWRpdW1wIHZlYzQgY29sb3I7CiAgNDUJ
YXR0cmlidXRlIGhpZ2hwIHZlYzIgbG9jYWxDb29yZDsKICA0Ngl2YXJ5aW5nIG1lZGl1bXAgdmVj
NCB2Y29sb3JfUzA7CiAgNDcJdmFyeWluZyBoaWdocCB2ZWMyIHZUcmFuc2Zvcm1lZENvb3Jkc18y
X1MwOwogIDQ4CXZvaWQgbWFpbigpIHsKICA0OQl2Y29sb3JfUzAgPSBjb2xvcjsKICA1MAlnbF9Q
b3NpdGlvbiA9IHZlYzQocG9zaXRpb24sIDAuMCwgMS4wKTsKICA1MQl7CiAgNTIJdlRyYW5zZm9y
bWVkQ29vcmRzXzJfUzAgPSAodW1hdHJpeF9TMSAqIHZlYzMobG9jYWxDb29yZCwgMS4wKSkueHk7
CiAgNTMJfQogIDU0CWdsX1Bvc2l0aW9uID0gdmVjNChnbF9Qb3NpdGlvbi54eSAqIHNrX1JUQWRq
dXN0Lnh6ICsgZ2xfUG9zaXRpb24ud3cgKiBza19SVEFkanVzdC55dywgMC4wLCBnbF9Qb3NpdGlv
bi53KTsKICA1NQl9CiAgNTYJCiAgNTcJLy8gRnJhZ21lbnQgR0xTTAogIDU4CSN2ZXJzaW9uIDEw
MAogIDU5CQogIDYwCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwogIDYxCXByZWNpc2lvbiBtZWRp
dW1wIHNhbXBsZXIyRDsKICA2Mgljb25zdCBoaWdocCBpbnQga01heExvb3BMaW1pdF9TMV9jMCA9
IDY7CiAgNjMJdW5pZm9ybSBoaWdocCB2ZWM0IHVjbGFtcF9TMV9jMF9jMF9jMDsKICA2NAl1bmlm
b3JtIGhpZ2hwIG1hdDMgdW1hdHJpeF9TMV9jMF9jMDsKICA2NQl1bmlmb3JtIG1lZGl1bXAgdmVj
NCB1b2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFsxNF07CiAgNjYJdW5pZm9ybSBtZWRpdW1wIHZlYzIg
dWRpcl9TMV9jMDsKICA2Nwl1bmlmb3JtIGhpZ2hwIG1hdDMgdW1hdHJpeF9TMTsKICA2OAl1bmlm
b3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKICA2OQl2YXJ5aW5nIG1lZGl1bXAg
dmVjNCB2Y29sb3JfUzA7CiAgNzAJdmFyeWluZyBoaWdocCB2ZWMyIHZUcmFuc2Zvcm1lZENvb3Jk
c18yX1MwOwogIDcxCXZvaWQgbWFpbigpIHsKICA3MgloaWdocCB2ZWMyIF8yNl90bXBfMV9jb29y
ZHMgPSB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKICA3MwltZWRpdW1wIHZlYzQgXzI3X3N1bSA9
IHZlYzQoMC4wKTsKICA3NAlmb3IgKGhpZ2hwIGludCBfMjhfaSA9IDA7XzI4X2kgPCBrTWF4TG9v
cExpbWl0X1MxX2MwOyArK18yOF9pKSB7CiAgNzUJbWVkaXVtcCB2ZWM0IF8yOV9zID0gdW9mZnNl
dHNBbmRLZXJuZWxfUzFfYzBbXzI4X2ldOwogIDc2CWhpZ2hwIHZlYzIgXzMwX2luQ29vcmQgPSAo
dW1hdHJpeF9TMV9jMF9jMCAqIHZlYzMoXzI2X3RtcF8xX2Nvb3JkcyArIF8yOV9zLnggKiB1ZGly
X1MxX2MwLCAxLjApKS54eTsKICA3NwloaWdocCB2ZWMyIF8zMV9zdWJzZXRDb29yZDsKICA3OAlf
MzFfc3Vic2V0Q29vcmQueCA9IF8zMF9pbkNvb3JkLng7CiAgNzkJXzMxX3N1YnNldENvb3JkLnkg
PSBfMzBfaW5Db29yZC55OwogIDgwCWhpZ2hwIHZlYzIgXzMyX2NsYW1wZWRDb29yZCA9IGNsYW1w
KF8zMV9zdWJzZXRDb29yZCwgdWNsYW1wX1MxX2MwX2MwX2MwLnh5LCB1Y2xhbXBfUzFfYzBfYzBf
YzAuencpOwogIDgxCW1lZGl1bXAgdmVjNCBfMzNfdGV4dHVyZUNvbG9yID0gdGV4dHVyZTJEKHVU
ZXh0dXJlU2FtcGxlcl8wX1MxLCBfMzJfY2xhbXBlZENvb3JkLCAtMC40NzUpOwogIDgyCV8yN19z
dW0gKz0gXzI5X3MueSAqIF8zM190ZXh0dXJlQ29sb3I7CiAgODMJaGlnaHAgdmVjMiBfMzRfaW5D
b29yZCA9ICh1bWF0cml4X1MxX2MwX2MwICogdmVjMyhfMjZfdG1wXzFfY29vcmRzICsgXzI5X3Mu
eiAqIHVkaXJfUzFfYzAsIDEuMCkpLnh5OwogIDg0CWhpZ2hwIHZlYzIgXzM1X3N1YnNldENvb3Jk
OwogIDg1CV8zNV9zdWJzZXRDb29yZC54ID0gXzM0X2luQ29vcmQueDsKICA4NglfMzVfc3Vic2V0
Q29vcmQueSA9IF8zNF9pbkNvb3JkLnk7CiAgODcJaGlnaHAgdmVjMiBfMzZfY2xhbXBlZENvb3Jk
ID0gY2xhbXAoXzM1X3N1YnNldENvb3JkLCB1Y2xhbXBfUzFfYzBfYzBfYzAueHksIHVjbGFtcF9T
MV9jMF9jMF9jMC56dyk7CiAgODgJbWVkaXVtcCB2ZWM0IF8zN190ZXh0dXJlQ29sb3IgPSB0ZXh0
dXJlMkQodVRleHR1cmVTYW1wbGVyXzBfUzEsIF8zNl9jbGFtcGVkQ29vcmQsIC0wLjQ3NSk7CiAg
ODkJXzI3X3N1bSArPSBfMjlfcy53ICogXzM3X3RleHR1cmVDb2xvcjsKICA5MAl9CiAgOTEJbWVk
aXVtcCB2ZWM0IG91dHB1dF9TMSA9IF8yN19zdW07CiAgOTIJewogIDkzCWdsX0ZyYWdDb2xvciA9
IG91dHB1dF9TMTsKICA5NAl9CiAgOTUJfQogIDk2CQogIDk3CQpFcnJvcnM6CmVycm9yOiBFeGNl
ZWRlZCBtYXggbnIgaW5kaXJlY3QgdGV4dHVyZSBsb29rdXBzICgxMy80KQpFeGNlZWRlZCBtYXgg
QUxVIGluc3RydWN0aW9ucyAoNzgvNjQpCkZhaWxlZCB0byBjcmVhdGUgRE1BLUJVRiB0ZXh0dXJl
IG9mIHNpemUgMTAyNHg2OTM6IFVuc3VwcG9ydGVkIGRtYWJ1ZiBmb3JtYXQ6IFhSMjQ6MHhmZmZm
ZmZmZmZmZmZmZgpTaGFkZXIgY29tcGlsYXRpb24gZXJyb3IKLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAgIDEJLy8gVmVydGV4IFNLU0wKICAgMgl1bmlmb3JtIGZsb2F0NCBza19SVEFkanVzdDt1
bmlmb3JtIGZsb2F0M3gzIHVtYXRyaXhfUzE7aW4gZmxvYXQyIHBvc2l0aW9uO2luIGhhbGY0IGNv
bG9yO2luIGZsb2F0MiBsb2NhbENvb3JkO291dCBoYWxmNCB2Y29sb3JfUzA7b3V0IGZsb2F0MiB2
VHJhbnNmb3JtZWRDb29yZHNfMl9TMDt2b2lkIG1haW4oKSB7Ly8gUHJpbWl0aXZlIFByb2Nlc3Nv
ciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKICAgMwl2Y29sb3JfUzAgPSBjb2xvcjtz
a19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7ewogICA0CXZUcmFuc2Zvcm1lZENvb3Jkc18yX1Mw
ID0gKHVtYXRyaXhfUzEgKiBsb2NhbENvb3JkLnh5MSkueHk7CiAgIDUJfQogICA2CX0KICAgNwkv
LyBGcmFnbWVudCBTS1NMCiAgIDgJY29uc3QgaW50IGtNYXhMb29wTGltaXRfUzFfYzAgPSAyOwog
ICA5CXVuaWZvcm0gZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDt1bmlmb3JtIGhhbGY0IHVvZmZz
ZXRzQW5kS2VybmVsX1MxX2MwWzE0XTt1bmlmb3JtIGhhbGYyIHVkaXJfUzFfYzA7dW5pZm9ybSBm
bG9hdDN4MyB1bWF0cml4X1MxO3NhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKICAxMAlp
biBoYWxmNCB2Y29sb3JfUzA7aW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwO2hhbGY0
IFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3Jkcykg
ewogIDExCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpO30KICAx
MgkKICAxMwloYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIg
X2Nvb3JkcykgewogIDE0CXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKF9pbnB1dCwg
KCh1bWF0cml4X1MxX2MwX2MwKSAqIF9jb29yZHMueHkxKS54eSk7CiAgMTUJfQogIDE2CQogIDE3
CWhhbGY0IHJ1bnRpbWVfc2hhZGVyX1MxX2MwKGhhbGY0IF9pbnB1dCkgewogIDE4CWhhbGY0IF90
bXBfMF9pbkNvbG9yID0gX2lucHV0OwogIDE5CWZsb2F0MiBfdG1wXzFfY29vcmRzID0gdlRyYW5z
Zm9ybWVkQ29vcmRzXzJfUzA7CiAgMjAJaGFsZjQgc3VtID0gaGFsZjQoMC4wKTsKICAyMQlmb3Ig
KGludCBpID0gMDtpIDwga01heExvb3BMaW1pdF9TMV9jMDsgKytpKSB7CiAgMjIJaGFsZjQgcyA9
IHVvZmZzZXRzQW5kS2VybmVsX1MxX2MwW2ldOwogIDIzCXN1bSArPSBzLnkgKiBNYXRyaXhFZmZl
Y3RfUzFfYzBfYzAoX3RtcF8wX2luQ29sb3IsIF90bXBfMV9jb29yZHMgKyBmbG9hdDIocy54ICog
dWRpcl9TMV9jMCkpOwogIDI0CXN1bSArPSBzLncgKiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX3Rt
cF8wX2luQ29sb3IsIF90bXBfMV9jb29yZHMgKyBmbG9hdDIocy56ICogdWRpcl9TMV9jMCkpOwog
IDI1CX0KICAyNglyZXR1cm4gaGFsZjQoc3VtKTsKICAyNwl9CiAgMjgJCiAgMjkJaGFsZjQgTWF0
cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgewogIDMwCXJldHVybiBydW50aW1lX3NoYWRlcl9T
MV9jMChfaW5wdXQpOwogIDMxCX0KICAzMgkKICAzMwl2b2lkIG1haW4oKSB7Ly8gU3RhZ2UgMCwg
UXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCiAgMzQJaGFsZjQgb3V0cHV0Q29sb3JfUzA7
b3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7Y29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAg
PSBoYWxmNCgxKTtoYWxmNCBvdXRwdXRfUzE7b3V0cHV0X1MxID0gTWF0cml4RWZmZWN0X1MxKG91
dHB1dENvbG9yX1MwKTt7IC8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgogIDM1CXNrX0Zy
YWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwO319CiAgMzYJLy8gVmVydGV4
IEdMU0wKICAzNwkjdmVyc2lvbiAxMDAKICAzOAkKICAzOQlwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKICA0MAlwcmVjaXNpb24gbWVkaXVtcCBzYW1wbGVyMkQ7CiAgNDEJdW5pZm9ybSBoaWdocCB2
ZWM0IHNrX1JUQWRqdXN0OwogIDQyCXVuaWZvcm0gaGlnaHAgbWF0MyB1bWF0cml4X1MxOwogIDQz
CWF0dHJpYnV0ZSBoaWdocCB2ZWMyIHBvc2l0aW9uOwogIDQ0CWF0dHJpYnV0ZSBtZWRpdW1wIHZl
YzQgY29sb3I7CiAgNDUJYXR0cmlidXRlIGhpZ2hwIHZlYzIgbG9jYWxDb29yZDsKICA0Ngl2YXJ5
aW5nIG1lZGl1bXAgdmVjNCB2Y29sb3JfUzA7CiAgNDcJdmFyeWluZyBoaWdocCB2ZWMyIHZUcmFu
c2Zvcm1lZENvb3Jkc18yX1MwOwogIDQ4CXZvaWQgbWFpbigpIHsKICA0OQl2Y29sb3JfUzAgPSBj
b2xvcjsKICA1MAlnbF9Qb3NpdGlvbiA9IHZlYzQocG9zaXRpb24sIDAuMCwgMS4wKTsKICA1MQl7
CiAgNTIJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAgPSAodW1hdHJpeF9TMSAqIHZlYzMobG9jYWxD
b29yZCwgMS4wKSkueHk7CiAgNTMJfQogIDU0CWdsX1Bvc2l0aW9uID0gdmVjNChnbF9Qb3NpdGlv
bi54eSAqIHNrX1JUQWRqdXN0Lnh6ICsgZ2xfUG9zaXRpb24ud3cgKiBza19SVEFkanVzdC55dywg
MC4wLCBnbF9Qb3NpdGlvbi53KTsKICA1NQl9CiAgNTYJCiAgNTcJLy8gRnJhZ21lbnQgR0xTTAog
IDU4CSN2ZXJzaW9uIDEwMAogIDU5CQogIDYwCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwogIDYx
CXByZWNpc2lvbiBtZWRpdW1wIHNhbXBsZXIyRDsKICA2Mgljb25zdCBoaWdocCBpbnQga01heExv
b3BMaW1pdF9TMV9jMCA9IDI7CiAgNjMJdW5pZm9ybSBoaWdocCBtYXQzIHVtYXRyaXhfUzFfYzBf
YzA7CiAgNjQJdW5pZm9ybSBtZWRpdW1wIHZlYzQgdW9mZnNldHNBbmRLZXJuZWxfUzFfYzBbMTRd
OwogIDY1CXVuaWZvcm0gbWVkaXVtcCB2ZWMyIHVkaXJfUzFfYzA7CiAgNjYJdW5pZm9ybSBoaWdo
cCBtYXQzIHVtYXRyaXhfUzE7CiAgNjcJdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVy
XzBfUzE7CiAgNjgJdmFyeWluZyBtZWRpdW1wIHZlYzQgdmNvbG9yX1MwOwogIDY5CXZhcnlpbmcg
aGlnaHAgdmVjMiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKICA3MAl2b2lkIG1haW4oKSB7CiAg
NzEJaGlnaHAgdmVjMiBfNl90bXBfMV9jb29yZHMgPSB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsK
ICA3MgltZWRpdW1wIHZlYzQgXzdfc3VtID0gdmVjNCgwLjApOwogIDczCWZvciAoaGlnaHAgaW50
IF84X2kgPSAwO184X2kgPCBrTWF4TG9vcExpbWl0X1MxX2MwOyArK184X2kpIHsKICA3NAltZWRp
dW1wIHZlYzQgXzlfcyA9IHVvZmZzZXRzQW5kS2VybmVsX1MxX2MwW184X2ldOwogIDc1CV83X3N1
bSArPSBfOV9zLnkgKiB0ZXh0dXJlMkQodVRleHR1cmVTYW1wbGVyXzBfUzEsICh1bWF0cml4X1Mx
X2MwX2MwICogdmVjMyhfNl90bXBfMV9jb29yZHMgKyBfOV9zLnggKiB1ZGlyX1MxX2MwLCAxLjAp
KS54eSwgLTAuNDc1KTsKICA3NglfN19zdW0gKz0gXzlfcy53ICogdGV4dHVyZTJEKHVUZXh0dXJl
U2FtcGxlcl8wX1MxLCAodW1hdHJpeF9TMV9jMF9jMCAqIHZlYzMoXzZfdG1wXzFfY29vcmRzICsg
Xzlfcy56ICogdWRpcl9TMV9jMCwgMS4wKSkueHksIC0wLjQ3NSk7CiAgNzcJfQogIDc4CW1lZGl1
bXAgdmVjNCBvdXRwdXRfUzEgPSBfN19zdW07CiAgNzkJewogIDgwCWdsX0ZyYWdDb2xvciA9IG91
dHB1dF9TMTsKICA4MQl9CiAgODIJfQogIDgzCQogIDg0CQpFcnJvcnM6CmVycm9yOiBFeGNlZWRl
ZCBtYXggbnIgaW5kaXJlY3QgdGV4dHVyZSBsb29rdXBzICg1LzQpCgpGYWlsZWQgdG8gY3JlYXRl
IERNQS1CVUYgdGV4dHVyZSBvZiBzaXplIDEwMjR4NjkzOiBVbnN1cHBvcnRlZCBkbWFidWYgZm9y
bWF0OiBYUjI0OjB4ZmZmZmZmZmZmZmZmZmYKU2hhZGVyIGNvbXBpbGF0aW9uIGVycm9yCi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogICAxCS8vIFZlcnRleCBTS1NMCiAgIDIJdW5pZm9ybSBmbG9h
dDQgc2tfUlRBZGp1c3Q7dW5pZm9ybSBmbG9hdDN4MyB1bWF0cml4X1MxO2luIGZsb2F0MiBwb3Np
dGlvbjtpbiBoYWxmNCBjb2xvcjtpbiBmbG9hdDIgbG9jYWxDb29yZDtvdXQgaGFsZjQgdmNvbG9y
X1MwO291dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7dm9pZCBtYWluKCkgey8vIFBy
aW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCiAgIDMJdmNv
bG9yX1MwID0gY29sb3I7c2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxO3sKICAgNAl2VHJhbnNm
b3JtZWRDb29yZHNfMl9TMCA9ICh1bWF0cml4X1MxICogbG9jYWxDb29yZC54eTEpLnh5OwogICA1
CX0KICAgNgl9CiAgIDcJLy8gRnJhZ21lbnQgU0tTTAogICA4CWNvbnN0IGludCBrTWF4TG9vcExp
bWl0X1MxX2MwID0gMjsKICAgOQl1bmlmb3JtIGZsb2F0NCB1Y2xhbXBfUzFfYzBfYzBfYzA7dW5p
Zm9ybSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwO3VuaWZvcm0gaGFsZjQgdW9mZnNldHNBbmRL
ZXJuZWxfUzFfYzBbMTRdO3VuaWZvcm0gaGFsZjIgdWRpcl9TMV9jMDt1bmlmb3JtIGZsb2F0M3gz
IHVtYXRyaXhfUzE7c2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwogIDEwCWluIGhhbGY0
IHZjb2xvcl9TMDtpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7aGFsZjQgVGV4dHVy
ZUVmZmVjdF9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSB7CiAgMTEJ
ZmxvYXQyIGluQ29vcmQgPSBfY29vcmRzO2Zsb2F0MiBzdWJzZXRDb29yZDtzdWJzZXRDb29yZC54
ID0gaW5Db29yZC54O3N1YnNldENvb3JkLnkgPSBpbkNvb3JkLnk7ZmxvYXQyIGNsYW1wZWRDb29y
ZDtjbGFtcGVkQ29vcmQgPSBjbGFtcChzdWJzZXRDb29yZCwgdWNsYW1wX1MxX2MwX2MwX2MwLnh5
LCB1Y2xhbXBfUzFfYzBfYzBfYzAuencpO2hhbGY0IHRleHR1cmVDb2xvciA9IHNhbXBsZSh1VGV4
dHVyZVNhbXBsZXJfMF9TMSwgY2xhbXBlZENvb3JkKTtyZXR1cm4gdGV4dHVyZUNvbG9yO30KICAx
MgkKICAxMwloYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIg
X2Nvb3JkcykgewogIDE0CXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKF9pbnB1dCwg
KCh1bWF0cml4X1MxX2MwX2MwKSAqIF9jb29yZHMueHkxKS54eSk7CiAgMTUJfQogIDE2CQogIDE3
CWhhbGY0IHJ1bnRpbWVfc2hhZGVyX1MxX2MwKGhhbGY0IF9pbnB1dCkgewogIDE4CWhhbGY0IF90
bXBfMF9pbkNvbG9yID0gX2lucHV0OwogIDE5CWZsb2F0MiBfdG1wXzFfY29vcmRzID0gdlRyYW5z
Zm9ybWVkQ29vcmRzXzJfUzA7CiAgMjAJaGFsZjQgc3VtID0gaGFsZjQoMC4wKTsKICAyMQlmb3Ig
KGludCBpID0gMDtpIDwga01heExvb3BMaW1pdF9TMV9jMDsgKytpKSB7CiAgMjIJaGFsZjQgcyA9
IHVvZmZzZXRzQW5kS2VybmVsX1MxX2MwW2ldOwogIDIzCXN1bSArPSBzLnkgKiBNYXRyaXhFZmZl
Y3RfUzFfYzBfYzAoX3RtcF8wX2luQ29sb3IsIF90bXBfMV9jb29yZHMgKyBmbG9hdDIocy54ICog
dWRpcl9TMV9jMCkpOwogIDI0CXN1bSArPSBzLncgKiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX3Rt
cF8wX2luQ29sb3IsIF90bXBfMV9jb29yZHMgKyBmbG9hdDIocy56ICogdWRpcl9TMV9jMCkpOwog
IDI1CX0KICAyNglyZXR1cm4gaGFsZjQoc3VtKTsKICAyNwl9CiAgMjgJCiAgMjkJaGFsZjQgTWF0
cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgewogIDMwCXJldHVybiBydW50aW1lX3NoYWRlcl9T
MV9jMChfaW5wdXQpOwogIDMxCX0KICAzMgkKICAzMwl2b2lkIG1haW4oKSB7Ly8gU3RhZ2UgMCwg
UXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCiAgMzQJaGFsZjQgb3V0cHV0Q29sb3JfUzA7
b3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7Y29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAg
PSBoYWxmNCgxKTtoYWxmNCBvdXRwdXRfUzE7b3V0cHV0X1MxID0gTWF0cml4RWZmZWN0X1MxKG91
dHB1dENvbG9yX1MwKTt7IC8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgogIDM1CXNrX0Zy
YWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwO319CiAgMzYJLy8gVmVydGV4
IEdMU0wKICAzNwkjdmVyc2lvbiAxMDAKICAzOAkKICAzOQlwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKICA0MAlwcmVjaXNpb24gbWVkaXVtcCBzYW1wbGVyMkQ7CiAgNDEJdW5pZm9ybSBoaWdocCB2
ZWM0IHNrX1JUQWRqdXN0OwogIDQyCXVuaWZvcm0gaGlnaHAgbWF0MyB1bWF0cml4X1MxOwogIDQz
CWF0dHJpYnV0ZSBoaWdocCB2ZWMyIHBvc2l0aW9uOwogIDQ0CWF0dHJpYnV0ZSBtZWRpdW1wIHZl
YzQgY29sb3I7CiAgNDUJYXR0cmlidXRlIGhpZ2hwIHZlYzIgbG9jYWxDb29yZDsKICA0Ngl2YXJ5
aW5nIG1lZGl1bXAgdmVjNCB2Y29sb3JfUzA7CiAgNDcJdmFyeWluZyBoaWdocCB2ZWMyIHZUcmFu
c2Zvcm1lZENvb3Jkc18yX1MwOwogIDQ4CXZvaWQgbWFpbigpIHsKICA0OQl2Y29sb3JfUzAgPSBj
b2xvcjsKICA1MAlnbF9Qb3NpdGlvbiA9IHZlYzQocG9zaXRpb24sIDAuMCwgMS4wKTsKICA1MQl7
CiAgNTIJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAgPSAodW1hdHJpeF9TMSAqIHZlYzMobG9jYWxD
b29yZCwgMS4wKSkueHk7CiAgNTMJfQogIDU0CWdsX1Bvc2l0aW9uID0gdmVjNChnbF9Qb3NpdGlv
bi54eSAqIHNrX1JUQWRqdXN0Lnh6ICsgZ2xfUG9zaXRpb24ud3cgKiBza19SVEFkanVzdC55dywg
MC4wLCBnbF9Qb3NpdGlvbi53KTsKICA1NQl9CiAgNTYJCiAgNTcJLy8gRnJhZ21lbnQgR0xTTAog
IDU4CSN2ZXJzaW9uIDEwMAogIDU5CQogIDYwCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwogIDYx
CXByZWNpc2lvbiBtZWRpdW1wIHNhbXBsZXIyRDsKICA2Mgljb25zdCBoaWdocCBpbnQga01heExv
b3BMaW1pdF9TMV9jMCA9IDI7CiAgNjMJdW5pZm9ybSBoaWdocCB2ZWM0IHVjbGFtcF9TMV9jMF9j
MF9jMDsKICA2NAl1bmlmb3JtIGhpZ2hwIG1hdDMgdW1hdHJpeF9TMV9jMF9jMDsKICA2NQl1bmlm
b3JtIG1lZGl1bXAgdmVjNCB1b2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFsxNF07CiAgNjYJdW5pZm9y
bSBtZWRpdW1wIHZlYzIgdWRpcl9TMV9jMDsKICA2Nwl1bmlmb3JtIGhpZ2hwIG1hdDMgdW1hdHJp
eF9TMTsKICA2OAl1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKICA2OQl2
YXJ5aW5nIG1lZGl1bXAgdmVjNCB2Y29sb3JfUzA7CiAgNzAJdmFyeWluZyBoaWdocCB2ZWMyIHZU
cmFuc2Zvcm1lZENvb3Jkc18yX1MwOwogIDcxCXZvaWQgbWFpbigpIHsKICA3MgloaWdocCB2ZWMy
IF8yNl90bXBfMV9jb29yZHMgPSB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKICA3MwltZWRpdW1w
IHZlYzQgXzI3X3N1bSA9IHZlYzQoMC4wKTsKICA3NAlmb3IgKGhpZ2hwIGludCBfMjhfaSA9IDA7
XzI4X2kgPCBrTWF4TG9vcExpbWl0X1MxX2MwOyArK18yOF9pKSB7CiAgNzUJbWVkaXVtcCB2ZWM0
IF8yOV9zID0gdW9mZnNldHNBbmRLZXJuZWxfUzFfYzBbXzI4X2ldOwogIDc2CWhpZ2hwIHZlYzIg
XzMwX2luQ29vcmQgPSAodW1hdHJpeF9TMV9jMF9jMCAqIHZlYzMoXzI2X3RtcF8xX2Nvb3JkcyAr
IF8yOV9zLnggKiB1ZGlyX1MxX2MwLCAxLjApKS54eTsKICA3NwloaWdocCB2ZWMyIF8zMV9zdWJz
ZXRDb29yZDsKICA3OAlfMzFfc3Vic2V0Q29vcmQueCA9IF8zMF9pbkNvb3JkLng7CiAgNzkJXzMx
X3N1YnNldENvb3JkLnkgPSBfMzBfaW5Db29yZC55OwogIDgwCWhpZ2hwIHZlYzIgXzMyX2NsYW1w
ZWRDb29yZCA9IGNsYW1wKF8zMV9zdWJzZXRDb29yZCwgdWNsYW1wX1MxX2MwX2MwX2MwLnh5LCB1
Y2xhbXBfUzFfYzBfYzBfYzAuencpOwogIDgxCW1lZGl1bXAgdmVjNCBfMzNfdGV4dHVyZUNvbG9y
ID0gdGV4dHVyZTJEKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfMzJfY2xhbXBlZENvb3JkLCAtMC40
NzUpOwogIDgyCV8yN19zdW0gKz0gXzI5X3MueSAqIF8zM190ZXh0dXJlQ29sb3I7CiAgODMJaGln
aHAgdmVjMiBfMzRfaW5Db29yZCA9ICh1bWF0cml4X1MxX2MwX2MwICogdmVjMyhfMjZfdG1wXzFf
Y29vcmRzICsgXzI5X3MueiAqIHVkaXJfUzFfYzAsIDEuMCkpLnh5OwogIDg0CWhpZ2hwIHZlYzIg
XzM1X3N1YnNldENvb3JkOwogIDg1CV8zNV9zdWJzZXRDb29yZC54ID0gXzM0X2luQ29vcmQueDsK
ICA4NglfMzVfc3Vic2V0Q29vcmQueSA9IF8zNF9pbkNvb3JkLnk7CiAgODcJaGlnaHAgdmVjMiBf
MzZfY2xhbXBlZENvb3JkID0gY2xhbXAoXzM1X3N1YnNldENvb3JkLCB1Y2xhbXBfUzFfYzBfYzBf
YzAueHksIHVjbGFtcF9TMV9jMF9jMF9jMC56dyk7CiAgODgJbWVkaXVtcCB2ZWM0IF8zN190ZXh0
dXJlQ29sb3IgPSB0ZXh0dXJlMkQodVRleHR1cmVTYW1wbGVyXzBfUzEsIF8zNl9jbGFtcGVkQ29v
cmQsIC0wLjQ3NSk7CiAgODkJXzI3X3N1bSArPSBfMjlfcy53ICogXzM3X3RleHR1cmVDb2xvcjsK
ICA5MAl9CiAgOTEJbWVkaXVtcCB2ZWM0IG91dHB1dF9TMSA9IF8yN19zdW07CiAgOTIJewogIDkz
CWdsX0ZyYWdDb2xvciA9IG91dHB1dF9TMTsKICA5NAl9CiAgOTUJfQogIDk2CQogIDk3CQpFcnJv
cnM6CmVycm9yOiBFeGNlZWRlZCBtYXggbnIgaW5kaXJlY3QgdGV4dHVyZSBsb29rdXBzICg1LzQp
CgpTaGFkZXIgY29tcGlsYXRpb24gZXJyb3IKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIDEJ
Ly8gVmVydGV4IFNLU0wKICAgMgl1bmlmb3JtIGZsb2F0NCBza19SVEFkanVzdDt1bmlmb3JtIGZs
b2F0M3gzIHVtYXRyaXhfUzE7aW4gZmxvYXQyIHBvc2l0aW9uO2luIGhhbGY0IGNvbG9yO2luIGZs
b2F0MiBsb2NhbENvb3JkO291dCBoYWxmNCB2Y29sb3JfUzA7b3V0IGZsb2F0MiB2VHJhbnNmb3Jt
ZWRDb29yZHNfMl9TMDt2b2lkIG1haW4oKSB7Ly8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVy
RWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKICAgMwl2Y29sb3JfUzAgPSBjb2xvcjtza19Qb3NpdGlv
biA9IHBvc2l0aW9uLnh5MDE7ewogICA0CXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gKHVtYXRy
aXhfUzEgKiBsb2NhbENvb3JkLnh5MSkueHk7CiAgIDUJfQogICA2CX0KICAgNwkvLyBGcmFnbWVu
dCBTS1NMCiAgIDgJY29uc3QgaW50IGtNYXhMb29wTGltaXRfUzFfYzAgPSAyOwogICA5CXVuaWZv
cm0gZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDt1bmlmb3JtIGhhbGY0IHVvZmZzZXRzQW5kS2Vy
bmVsX1MxX2MwWzE0XTt1bmlmb3JtIGhhbGYyIHVkaXJfUzFfYzA7dW5pZm9ybSBmbG9hdDN4MyB1
bWF0cml4X1MxO3NhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKICAxMAlpbiBoYWxmNCB2
Y29sb3JfUzA7aW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwO2hhbGY0IFRleHR1cmVF
ZmZlY3RfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgewogIDExCXJl
dHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpO30KICAxMgkKICAxMwlo
YWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3Jkcykg
ewogIDE0CXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKF9pbnB1dCwgKCh1bWF0cml4
X1MxX2MwX2MwKSAqIF9jb29yZHMueHkxKS54eSk7CiAgMTUJfQogIDE2CQogIDE3CWhhbGY0IHJ1
bnRpbWVfc2hhZGVyX1MxX2MwKGhhbGY0IF9pbnB1dCkgewogIDE4CWhhbGY0IF90bXBfMF9pbkNv
bG9yID0gX2lucHV0OwogIDE5CWZsb2F0MiBfdG1wXzFfY29vcmRzID0gdlRyYW5zZm9ybWVkQ29v
cmRzXzJfUzA7CiAgMjAJaGFsZjQgc3VtID0gaGFsZjQoMC4wKTsKICAyMQlmb3IgKGludCBpID0g
MDtpIDwga01heExvb3BMaW1pdF9TMV9jMDsgKytpKSB7CiAgMjIJaGFsZjQgcyA9IHVvZmZzZXRz
QW5kS2VybmVsX1MxX2MwW2ldOwogIDIzCXN1bSArPSBzLnkgKiBNYXRyaXhFZmZlY3RfUzFfYzBf
YzAoX3RtcF8wX2luQ29sb3IsIF90bXBfMV9jb29yZHMgKyBmbG9hdDIocy54ICogdWRpcl9TMV9j
MCkpOwogIDI0CXN1bSArPSBzLncgKiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX3RtcF8wX2luQ29s
b3IsIF90bXBfMV9jb29yZHMgKyBmbG9hdDIocy56ICogdWRpcl9TMV9jMCkpOwogIDI1CX0KICAy
NglyZXR1cm4gaGFsZjQoc3VtKTsKICAyNwl9CiAgMjgJCiAgMjkJaGFsZjQgTWF0cml4RWZmZWN0
X1MxKGhhbGY0IF9pbnB1dCkgewogIDMwCXJldHVybiBydW50aW1lX3NoYWRlcl9TMV9jMChfaW5w
dXQpOwogIDMxCX0KICAzMgkKICAzMwl2b2lkIG1haW4oKSB7Ly8gU3RhZ2UgMCwgUXVhZFBlckVk
Z2VBQUdlb21ldHJ5UHJvY2Vzc29yCiAgMzQJaGFsZjQgb3V0cHV0Q29sb3JfUzA7b3V0cHV0Q29s
b3JfUzAgPSB2Y29sb3JfUzA7Y29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgx
KTtoYWxmNCBvdXRwdXRfUzE7b3V0cHV0X1MxID0gTWF0cml4RWZmZWN0X1MxKG91dHB1dENvbG9y
X1MwKTt7IC8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgogIDM1CXNrX0ZyYWdDb2xvciA9
IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwO319CiAgMzYJLy8gVmVydGV4IEdMU0wKICAz
NwkjdmVyc2lvbiAxMDAKICAzOAkKICAzOQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKICA0MAlw
cmVjaXNpb24gbWVkaXVtcCBzYW1wbGVyMkQ7CiAgNDEJdW5pZm9ybSBoaWdocCB2ZWM0IHNrX1JU
QWRqdXN0OwogIDQyCXVuaWZvcm0gaGlnaHAgbWF0MyB1bWF0cml4X1MxOwogIDQzCWF0dHJpYnV0
ZSBoaWdocCB2ZWMyIHBvc2l0aW9uOwogIDQ0CWF0dHJpYnV0ZSBtZWRpdW1wIHZlYzQgY29sb3I7
CiAgNDUJYXR0cmlidXRlIGhpZ2hwIHZlYzIgbG9jYWxDb29yZDsKICA0Ngl2YXJ5aW5nIG1lZGl1
bXAgdmVjNCB2Y29sb3JfUzA7CiAgNDcJdmFyeWluZyBoaWdocCB2ZWMyIHZUcmFuc2Zvcm1lZENv
b3Jkc18yX1MwOwogIDQ4CXZvaWQgbWFpbigpIHsKICA0OQl2Y29sb3JfUzAgPSBjb2xvcjsKICA1
MAlnbF9Qb3NpdGlvbiA9IHZlYzQocG9zaXRpb24sIDAuMCwgMS4wKTsKICA1MQl7CiAgNTIJdlRy
YW5zZm9ybWVkQ29vcmRzXzJfUzAgPSAodW1hdHJpeF9TMSAqIHZlYzMobG9jYWxDb29yZCwgMS4w
KSkueHk7CiAgNTMJfQogIDU0CWdsX1Bvc2l0aW9uID0gdmVjNChnbF9Qb3NpdGlvbi54eSAqIHNr
X1JUQWRqdXN0Lnh6ICsgZ2xfUG9zaXRpb24ud3cgKiBza19SVEFkanVzdC55dywgMC4wLCBnbF9Q
b3NpdGlvbi53KTsKICA1NQl9CiAgNTYJCiAgNTcJLy8gRnJhZ21lbnQgR0xTTAogIDU4CSN2ZXJz
aW9uIDEwMAogIDU5CQogIDYwCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwogIDYxCXByZWNpc2lv
biBtZWRpdW1wIHNhbXBsZXIyRDsKICA2Mgljb25zdCBoaWdocCBpbnQga01heExvb3BMaW1pdF9T
MV9jMCA9IDI7CiAgNjMJdW5pZm9ybSBoaWdocCBtYXQzIHVtYXRyaXhfUzFfYzBfYzA7CiAgNjQJ
dW5pZm9ybSBtZWRpdW1wIHZlYzQgdW9mZnNldHNBbmRLZXJuZWxfUzFfYzBbMTRdOwogIDY1CXVu
aWZvcm0gbWVkaXVtcCB2ZWMyIHVkaXJfUzFfYzA7CiAgNjYJdW5pZm9ybSBoaWdocCBtYXQzIHVt
YXRyaXhfUzE7CiAgNjcJdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CiAg
NjgJdmFyeWluZyBtZWRpdW1wIHZlYzQgdmNvbG9yX1MwOwogIDY5CXZhcnlpbmcgaGlnaHAgdmVj
MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKICA3MAl2b2lkIG1haW4oKSB7CiAgNzEJaGlnaHAg
dmVjMiBfNl90bXBfMV9jb29yZHMgPSB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKICA3MgltZWRp
dW1wIHZlYzQgXzdfc3VtID0gdmVjNCgwLjApOwogIDczCWZvciAoaGlnaHAgaW50IF84X2kgPSAw
O184X2kgPCBrTWF4TG9vcExpbWl0X1MxX2MwOyArK184X2kpIHsKICA3NAltZWRpdW1wIHZlYzQg
XzlfcyA9IHVvZmZzZXRzQW5kS2VybmVsX1MxX2MwW184X2ldOwogIDc1CV83X3N1bSArPSBfOV9z
LnkgKiB0ZXh0dXJlMkQodVRleHR1cmVTYW1wbGVyXzBfUzEsICh1bWF0cml4X1MxX2MwX2MwICog
dmVjMyhfNl90bXBfMV9jb29yZHMgKyBfOV9zLnggKiB1ZGlyX1MxX2MwLCAxLjApKS54eSwgLTAu
NDc1KTsKICA3NglfN19zdW0gKz0gXzlfcy53ICogdGV4dHVyZTJEKHVUZXh0dXJlU2FtcGxlcl8w
X1MxLCAodW1hdHJpeF9TMV9jMF9jMCAqIHZlYzMoXzZfdG1wXzFfY29vcmRzICsgXzlfcy56ICog
dWRpcl9TMV9jMCwgMS4wKSkueHksIC0wLjQ3NSk7CiAgNzcJfQogIDc4CW1lZGl1bXAgdmVjNCBv
dXRwdXRfUzEgPSBfN19zdW07CiAgNzkJewogIDgwCWdsX0ZyYWdDb2xvciA9IG91dHB1dF9TMTsK
ICA4MQl9CiAgODIJfQogIDgzCQogIDg0CQpFcnJvcnM6CmVycm9yOiBFeGNlZWRlZCBtYXggbnIg
aW5kaXJlY3QgdGV4dHVyZSBsb29rdXBzICg1LzQpCgpTaGFkZXIgY29tcGlsYXRpb24gZXJyb3IK
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIDEJLy8gVmVydGV4IFNLU0wKICAgMgl1bmlmb3Jt
IGZsb2F0NCBza19SVEFkanVzdDt1bmlmb3JtIGZsb2F0M3gzIHVtYXRyaXhfUzE7aW4gZmxvYXQy
IHBvc2l0aW9uO2luIGhhbGY0IGNvbG9yO2luIGZsb2F0MiBsb2NhbENvb3JkO291dCBoYWxmNCB2
Y29sb3JfUzA7b3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDt2b2lkIG1haW4oKSB7
Ly8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKICAg
Mwl2Y29sb3JfUzAgPSBjb2xvcjtza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7ewogICA0CXZU
cmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gKHVtYXRyaXhfUzEgKiBsb2NhbENvb3JkLnh5MSkueHk7
CiAgIDUJfQogICA2CX0KICAgNwkvLyBGcmFnbWVudCBTS1NMCiAgIDgJY29uc3QgaW50IGtNYXhM
b29wTGltaXRfUzFfYzAgPSAyOwogICA5CXVuaWZvcm0gZmxvYXQ0IHVjbGFtcF9TMV9jMF9jMF9j
MDt1bmlmb3JtIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzA7dW5pZm9ybSBoYWxmNCB1b2Zmc2V0
c0FuZEtlcm5lbF9TMV9jMFsxNF07dW5pZm9ybSBoYWxmMiB1ZGlyX1MxX2MwO3VuaWZvcm0gZmxv
YXQzeDMgdW1hdHJpeF9TMTtzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CiAgMTAJaW4g
aGFsZjQgdmNvbG9yX1MwO2luIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDtoYWxmNCBU
ZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIHsK
ICAxMQlmbG9hdDIgaW5Db29yZCA9IF9jb29yZHM7ZmxvYXQyIHN1YnNldENvb3JkO3N1YnNldENv
b3JkLnggPSBpbkNvb3JkLng7c3Vic2V0Q29vcmQueSA9IGluQ29vcmQueTtmbG9hdDIgY2xhbXBl
ZENvb3JkO2NsYW1wZWRDb29yZCA9IGNsYW1wKHN1YnNldENvb3JkLCB1Y2xhbXBfUzFfYzBfYzBf
YzAueHksIHVjbGFtcF9TMV9jMF9jMF9jMC56dyk7aGFsZjQgdGV4dHVyZUNvbG9yID0gc2FtcGxl
KHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBjbGFtcGVkQ29vcmQpO3JldHVybiB0ZXh0dXJlQ29sb3I7
fQogIDEyCQogIDEzCWhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQsIGZs
b2F0MiBfY29vcmRzKSB7CiAgMTQJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoX2lu
cHV0LCAoKHVtYXRyaXhfUzFfYzBfYzApICogX2Nvb3Jkcy54eTEpLnh5KTsKICAxNQl9CiAgMTYJ
CiAgMTcJaGFsZjQgcnVudGltZV9zaGFkZXJfUzFfYzAoaGFsZjQgX2lucHV0KSB7CiAgMTgJaGFs
ZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CiAgMTkJZmxvYXQyIF90bXBfMV9jb29yZHMgPSB2
VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKICAyMAloYWxmNCBzdW0gPSBoYWxmNCgwLjApOwogIDIx
CWZvciAoaW50IGkgPSAwO2kgPCBrTWF4TG9vcExpbWl0X1MxX2MwOyArK2kpIHsKICAyMgloYWxm
NCBzID0gdW9mZnNldHNBbmRLZXJuZWxfUzFfYzBbaV07CiAgMjMJc3VtICs9IHMueSAqIE1hdHJp
eEVmZmVjdF9TMV9jMF9jMChfdG1wXzBfaW5Db2xvciwgX3RtcF8xX2Nvb3JkcyArIGZsb2F0Mihz
LnggKiB1ZGlyX1MxX2MwKSk7CiAgMjQJc3VtICs9IHMudyAqIE1hdHJpeEVmZmVjdF9TMV9jMF9j
MChfdG1wXzBfaW5Db2xvciwgX3RtcF8xX2Nvb3JkcyArIGZsb2F0MihzLnogKiB1ZGlyX1MxX2Mw
KSk7CiAgMjUJfQogIDI2CXJldHVybiBoYWxmNChzdW0pOwogIDI3CX0KICAyOAkKICAyOQloYWxm
NCBNYXRyaXhFZmZlY3RfUzEoaGFsZjQgX2lucHV0KSB7CiAgMzAJcmV0dXJuIHJ1bnRpbWVfc2hh
ZGVyX1MxX2MwKF9pbnB1dCk7CiAgMzEJfQogIDMyCQogIDMzCXZvaWQgbWFpbigpIHsvLyBTdGFn
ZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKICAzNAloYWxmNCBvdXRwdXRDb2xv
cl9TMDtvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDtjb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFn
ZV9TMCA9IGhhbGY0KDEpO2hhbGY0IG91dHB1dF9TMTtvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3Rf
UzEob3V0cHV0Q29sb3JfUzApO3sgLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCiAgMzUJ
c2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7fX0KICAzNgkvLyBW
ZXJ0ZXggR0xTTAogIDM3CSN2ZXJzaW9uIDEwMAogIDM4CQogIDM5CXByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OwogIDQwCXByZWNpc2lvbiBtZWRpdW1wIHNhbXBsZXIyRDsKICA0MQl1bmlmb3JtIGhp
Z2hwIHZlYzQgc2tfUlRBZGp1c3Q7CiAgNDIJdW5pZm9ybSBoaWdocCBtYXQzIHVtYXRyaXhfUzE7
CiAgNDMJYXR0cmlidXRlIGhpZ2hwIHZlYzIgcG9zaXRpb247CiAgNDQJYXR0cmlidXRlIG1lZGl1
bXAgdmVjNCBjb2xvcjsKICA0NQlhdHRyaWJ1dGUgaGlnaHAgdmVjMiBsb2NhbENvb3JkOwogIDQ2
CXZhcnlpbmcgbWVkaXVtcCB2ZWM0IHZjb2xvcl9TMDsKICA0Nwl2YXJ5aW5nIGhpZ2hwIHZlYzIg
dlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CiAgNDgJdm9pZCBtYWluKCkgewogIDQ5CXZjb2xvcl9T
MCA9IGNvbG9yOwogIDUwCWdsX1Bvc2l0aW9uID0gdmVjNChwb3NpdGlvbiwgMC4wLCAxLjApOwog
IDUxCXsKICA1Mgl2VHJhbnNmb3JtZWRDb29yZHNfMl9TMCA9ICh1bWF0cml4X1MxICogdmVjMyhs
b2NhbENvb3JkLCAxLjApKS54eTsKICA1Mwl9CiAgNTQJZ2xfUG9zaXRpb24gPSB2ZWM0KGdsX1Bv
c2l0aW9uLnh5ICogc2tfUlRBZGp1c3QueHogKyBnbF9Qb3NpdGlvbi53dyAqIHNrX1JUQWRqdXN0
Lnl3LCAwLjAsIGdsX1Bvc2l0aW9uLncpOwogIDU1CX0KICA1NgkKICA1NwkvLyBGcmFnbWVudCBH
TFNMCiAgNTgJI3ZlcnNpb24gMTAwCiAgNTkJCiAgNjAJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
CiAgNjEJcHJlY2lzaW9uIG1lZGl1bXAgc2FtcGxlcjJEOwogIDYyCWNvbnN0IGhpZ2hwIGludCBr
TWF4TG9vcExpbWl0X1MxX2MwID0gMjsKICA2Mwl1bmlmb3JtIGhpZ2hwIHZlYzQgdWNsYW1wX1Mx
X2MwX2MwX2MwOwogIDY0CXVuaWZvcm0gaGlnaHAgbWF0MyB1bWF0cml4X1MxX2MwX2MwOwogIDY1
CXVuaWZvcm0gbWVkaXVtcCB2ZWM0IHVvZmZzZXRzQW5kS2VybmVsX1MxX2MwWzE0XTsKICA2Ngl1
bmlmb3JtIG1lZGl1bXAgdmVjMiB1ZGlyX1MxX2MwOwogIDY3CXVuaWZvcm0gaGlnaHAgbWF0MyB1
bWF0cml4X1MxOwogIDY4CXVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwog
IDY5CXZhcnlpbmcgbWVkaXVtcCB2ZWM0IHZjb2xvcl9TMDsKICA3MAl2YXJ5aW5nIGhpZ2hwIHZl
YzIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CiAgNzEJdm9pZCBtYWluKCkgewogIDcyCWhpZ2hw
IHZlYzIgXzI2X3RtcF8xX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwogIDczCW1l
ZGl1bXAgdmVjNCBfMjdfc3VtID0gdmVjNCgwLjApOwogIDc0CWZvciAoaGlnaHAgaW50IF8yOF9p
ID0gMDtfMjhfaSA8IGtNYXhMb29wTGltaXRfUzFfYzA7ICsrXzI4X2kpIHsKICA3NQltZWRpdW1w
IHZlYzQgXzI5X3MgPSB1b2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtfMjhfaV07CiAgNzYJaGlnaHAg
dmVjMiBfMzBfaW5Db29yZCA9ICh1bWF0cml4X1MxX2MwX2MwICogdmVjMyhfMjZfdG1wXzFfY29v
cmRzICsgXzI5X3MueCAqIHVkaXJfUzFfYzAsIDEuMCkpLnh5OwogIDc3CWhpZ2hwIHZlYzIgXzMx
X3N1YnNldENvb3JkOwogIDc4CV8zMV9zdWJzZXRDb29yZC54ID0gXzMwX2luQ29vcmQueDsKICA3
OQlfMzFfc3Vic2V0Q29vcmQueSA9IF8zMF9pbkNvb3JkLnk7CiAgODAJaGlnaHAgdmVjMiBfMzJf
Y2xhbXBlZENvb3JkID0gY2xhbXAoXzMxX3N1YnNldENvb3JkLCB1Y2xhbXBfUzFfYzBfYzBfYzAu
eHksIHVjbGFtcF9TMV9jMF9jMF9jMC56dyk7CiAgODEJbWVkaXVtcCB2ZWM0IF8zM190ZXh0dXJl
Q29sb3IgPSB0ZXh0dXJlMkQodVRleHR1cmVTYW1wbGVyXzBfUzEsIF8zMl9jbGFtcGVkQ29vcmQs
IC0wLjQ3NSk7CiAgODIJXzI3X3N1bSArPSBfMjlfcy55ICogXzMzX3RleHR1cmVDb2xvcjsKICA4
MwloaWdocCB2ZWMyIF8zNF9pbkNvb3JkID0gKHVtYXRyaXhfUzFfYzBfYzAgKiB2ZWMzKF8yNl90
bXBfMV9jb29yZHMgKyBfMjlfcy56ICogdWRpcl9TMV9jMCwgMS4wKSkueHk7CiAgODQJaGlnaHAg
dmVjMiBfMzVfc3Vic2V0Q29vcmQ7CiAgODUJXzM1X3N1YnNldENvb3JkLnggPSBfMzRfaW5Db29y
ZC54OwogIDg2CV8zNV9zdWJzZXRDb29yZC55ID0gXzM0X2luQ29vcmQueTsKICA4NwloaWdocCB2
ZWMyIF8zNl9jbGFtcGVkQ29vcmQgPSBjbGFtcChfMzVfc3Vic2V0Q29vcmQsIHVjbGFtcF9TMV9j
MF9jMF9jMC54eSwgdWNsYW1wX1MxX2MwX2MwX2MwLnp3KTsKICA4OAltZWRpdW1wIHZlYzQgXzM3
X3RleHR1cmVDb2xvciA9IHRleHR1cmUyRCh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgXzM2X2NsYW1w
ZWRDb29yZCwgLTAuNDc1KTsKICA4OQlfMjdfc3VtICs9IF8yOV9zLncgKiBfMzdfdGV4dHVyZUNv
bG9yOwogIDkwCX0KICA5MQltZWRpdW1wIHZlYzQgb3V0cHV0X1MxID0gXzI3X3N1bTsKICA5Mgl7
CiAgOTMJZ2xfRnJhZ0NvbG9yID0gb3V0cHV0X1MxOwogIDk0CX0KICA5NQl9CiAgOTYJCiAgOTcJ
CkVycm9yczoKZXJyb3I6IEV4Y2VlZGVkIG1heCBuciBpbmRpcmVjdCB0ZXh0dXJlIGxvb2t1cHMg
KDUvNCkKCkZhaWxlZCB0byBjcmVhdGUgRE1BLUJVRiB0ZXh0dXJlIG9mIHNpemUgMTAyNHg2OTM6
IFVuc3VwcG9ydGVkIGRtYWJ1ZiBmb3JtYXQ6IFhSMjQ6MHhmZmZmZmZmZmZmZmZmZgpTaGFkZXIg
Y29tcGlsYXRpb24gZXJyb3IKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIDEJLy8gVmVydGV4
IFNLU0wKICAgMgl1bmlmb3JtIGZsb2F0NCBza19SVEFkanVzdDt1bmlmb3JtIGZsb2F0M3gzIHVt
YXRyaXhfUzE7aW4gZmxvYXQyIHBvc2l0aW9uO2luIGhhbGY0IGNvbG9yO2luIGZsb2F0MiBsb2Nh
bENvb3JkO291dCBoYWxmNCB2Y29sb3JfUzA7b3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNf
Ml9TMDt2b2lkIG1haW4oKSB7Ly8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2Vv
bWV0cnlQcm9jZXNzb3IKICAgMwl2Y29sb3JfUzAgPSBjb2xvcjtza19Qb3NpdGlvbiA9IHBvc2l0
aW9uLnh5MDE7ewogICA0CXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gKHVtYXRyaXhfUzEgKiBs
b2NhbENvb3JkLnh5MSkueHk7CiAgIDUJfQogICA2CX0KICAgNwkvLyBGcmFnbWVudCBTS1NMCiAg
IDgJY29uc3QgaW50IGtNYXhMb29wTGltaXRfUzFfYzAgPSA2OwogICA5CXVuaWZvcm0gZmxvYXQz
eDMgdW1hdHJpeF9TMV9jMF9jMDt1bmlmb3JtIGhhbGY0IHVvZmZzZXRzQW5kS2VybmVsX1MxX2Mw
WzE0XTt1bmlmb3JtIGhhbGYyIHVkaXJfUzFfYzA7dW5pZm9ybSBmbG9hdDN4MyB1bWF0cml4X1Mx
O3NhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKICAxMAlpbiBoYWxmNCB2Y29sb3JfUzA7
aW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwO2hhbGY0IFRleHR1cmVFZmZlY3RfUzFf
YzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgewogIDExCXJldHVybiBzYW1w
bGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMpO30KICAxMgkKICAxMwloYWxmNCBNYXRy
aXhFZmZlY3RfUzFfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgewogIDE0CXJl
dHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKF9pbnB1dCwgKCh1bWF0cml4X1MxX2MwX2Mw
KSAqIF9jb29yZHMueHkxKS54eSk7CiAgMTUJfQogIDE2CQogIDE3CWhhbGY0IHJ1bnRpbWVfc2hh
ZGVyX1MxX2MwKGhhbGY0IF9pbnB1dCkgewogIDE4CWhhbGY0IF90bXBfMF9pbkNvbG9yID0gX2lu
cHV0OwogIDE5CWZsb2F0MiBfdG1wXzFfY29vcmRzID0gdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7
CiAgMjAJaGFsZjQgc3VtID0gaGFsZjQoMC4wKTsKICAyMQlmb3IgKGludCBpID0gMDtpIDwga01h
eExvb3BMaW1pdF9TMV9jMDsgKytpKSB7CiAgMjIJaGFsZjQgcyA9IHVvZmZzZXRzQW5kS2VybmVs
X1MxX2MwW2ldOwogIDIzCXN1bSArPSBzLnkgKiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX3RtcF8w
X2luQ29sb3IsIF90bXBfMV9jb29yZHMgKyBmbG9hdDIocy54ICogdWRpcl9TMV9jMCkpOwogIDI0
CXN1bSArPSBzLncgKiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX3RtcF8wX2luQ29sb3IsIF90bXBf
MV9jb29yZHMgKyBmbG9hdDIocy56ICogdWRpcl9TMV9jMCkpOwogIDI1CX0KICAyNglyZXR1cm4g
aGFsZjQoc3VtKTsKICAyNwl9CiAgMjgJCiAgMjkJaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0
IF9pbnB1dCkgewogIDMwCXJldHVybiBydW50aW1lX3NoYWRlcl9TMV9jMChfaW5wdXQpOwogIDMx
CX0KICAzMgkKICAzMwl2b2lkIG1haW4oKSB7Ly8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21l
dHJ5UHJvY2Vzc29yCiAgMzQJaGFsZjQgb3V0cHV0Q29sb3JfUzA7b3V0cHV0Q29sb3JfUzAgPSB2
Y29sb3JfUzA7Y29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTtoYWxmNCBv
dXRwdXRfUzE7b3V0cHV0X1MxID0gTWF0cml4RWZmZWN0X1MxKG91dHB1dENvbG9yX1MwKTt7IC8v
IFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgogIDM1CXNrX0ZyYWdDb2xvciA9IG91dHB1dF9T
MSAqIG91dHB1dENvdmVyYWdlX1MwO319CiAgMzYJLy8gVmVydGV4IEdMU0wKICAzNwkjdmVyc2lv
biAxMDAKICAzOAkKICAzOQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKICA0MAlwcmVjaXNpb24g
bWVkaXVtcCBzYW1wbGVyMkQ7CiAgNDEJdW5pZm9ybSBoaWdocCB2ZWM0IHNrX1JUQWRqdXN0Owog
IDQyCXVuaWZvcm0gaGlnaHAgbWF0MyB1bWF0cml4X1MxOwogIDQzCWF0dHJpYnV0ZSBoaWdocCB2
ZWMyIHBvc2l0aW9uOwogIDQ0CWF0dHJpYnV0ZSBtZWRpdW1wIHZlYzQgY29sb3I7CiAgNDUJYXR0
cmlidXRlIGhpZ2hwIHZlYzIgbG9jYWxDb29yZDsKICA0Ngl2YXJ5aW5nIG1lZGl1bXAgdmVjNCB2
Y29sb3JfUzA7CiAgNDcJdmFyeWluZyBoaWdocCB2ZWMyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1Mw
OwogIDQ4CXZvaWQgbWFpbigpIHsKICA0OQl2Y29sb3JfUzAgPSBjb2xvcjsKICA1MAlnbF9Qb3Np
dGlvbiA9IHZlYzQocG9zaXRpb24sIDAuMCwgMS4wKTsKICA1MQl7CiAgNTIJdlRyYW5zZm9ybWVk
Q29vcmRzXzJfUzAgPSAodW1hdHJpeF9TMSAqIHZlYzMobG9jYWxDb29yZCwgMS4wKSkueHk7CiAg
NTMJfQogIDU0CWdsX1Bvc2l0aW9uID0gdmVjNChnbF9Qb3NpdGlvbi54eSAqIHNrX1JUQWRqdXN0
Lnh6ICsgZ2xfUG9zaXRpb24ud3cgKiBza19SVEFkanVzdC55dywgMC4wLCBnbF9Qb3NpdGlvbi53
KTsKICA1NQl9CiAgNTYJCiAgNTcJLy8gRnJhZ21lbnQgR0xTTAogIDU4CSN2ZXJzaW9uIDEwMAog
IDU5CQogIDYwCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwogIDYxCXByZWNpc2lvbiBtZWRpdW1w
IHNhbXBsZXIyRDsKICA2Mgljb25zdCBoaWdocCBpbnQga01heExvb3BMaW1pdF9TMV9jMCA9IDY7
CiAgNjMJdW5pZm9ybSBoaWdocCBtYXQzIHVtYXRyaXhfUzFfYzBfYzA7CiAgNjQJdW5pZm9ybSBt
ZWRpdW1wIHZlYzQgdW9mZnNldHNBbmRLZXJuZWxfUzFfYzBbMTRdOwogIDY1CXVuaWZvcm0gbWVk
aXVtcCB2ZWMyIHVkaXJfUzFfYzA7CiAgNjYJdW5pZm9ybSBoaWdocCBtYXQzIHVtYXRyaXhfUzE7
CiAgNjcJdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CiAgNjgJdmFyeWlu
ZyBtZWRpdW1wIHZlYzQgdmNvbG9yX1MwOwogIDY5CXZhcnlpbmcgaGlnaHAgdmVjMiB2VHJhbnNm
b3JtZWRDb29yZHNfMl9TMDsKICA3MAl2b2lkIG1haW4oKSB7CiAgNzEJaGlnaHAgdmVjMiBfNl90
bXBfMV9jb29yZHMgPSB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKICA3MgltZWRpdW1wIHZlYzQg
Xzdfc3VtID0gdmVjNCgwLjApOwogIDczCWZvciAoaGlnaHAgaW50IF84X2kgPSAwO184X2kgPCBr
TWF4TG9vcExpbWl0X1MxX2MwOyArK184X2kpIHsKICA3NAltZWRpdW1wIHZlYzQgXzlfcyA9IHVv
ZmZzZXRzQW5kS2VybmVsX1MxX2MwW184X2ldOwogIDc1CV83X3N1bSArPSBfOV9zLnkgKiB0ZXh0
dXJlMkQodVRleHR1cmVTYW1wbGVyXzBfUzEsICh1bWF0cml4X1MxX2MwX2MwICogdmVjMyhfNl90
bXBfMV9jb29yZHMgKyBfOV9zLnggKiB1ZGlyX1MxX2MwLCAxLjApKS54eSwgLTAuNDc1KTsKICA3
NglfN19zdW0gKz0gXzlfcy53ICogdGV4dHVyZTJEKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCAodW1h
dHJpeF9TMV9jMF9jMCAqIHZlYzMoXzZfdG1wXzFfY29vcmRzICsgXzlfcy56ICogdWRpcl9TMV9j
MCwgMS4wKSkueHksIC0wLjQ3NSk7CiAgNzcJfQogIDc4CW1lZGl1bXAgdmVjNCBvdXRwdXRfUzEg
PSBfN19zdW07CiAgNzkJewogIDgwCWdsX0ZyYWdDb2xvciA9IG91dHB1dF9TMTsKICA4MQl9CiAg
ODIJfQogIDgzCQogIDg0CQpFcnJvcnM6CmVycm9yOiBFeGNlZWRlZCBtYXggbnIgaW5kaXJlY3Qg
dGV4dHVyZSBsb29rdXBzICgxMy80KQpFeGNlZWRlZCBtYXggQUxVIGluc3RydWN0aW9ucyAoNjYv
NjQpClNoYWRlciBjb21waWxhdGlvbiBlcnJvcgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAg
MQkvLyBWZXJ0ZXggU0tTTAogICAyCXVuaWZvcm0gZmxvYXQ0IHNrX1JUQWRqdXN0O3VuaWZvcm0g
ZmxvYXQzeDMgdW1hdHJpeF9TMTtpbiBmbG9hdDIgcG9zaXRpb247aW4gaGFsZjQgY29sb3I7aW4g
ZmxvYXQyIGxvY2FsQ29vcmQ7b3V0IGhhbGY0IHZjb2xvcl9TMDtvdXQgZmxvYXQyIHZUcmFuc2Zv
cm1lZENvb3Jkc18yX1MwO3ZvaWQgbWFpbigpIHsvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQ
ZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgogICAzCXZjb2xvcl9TMCA9IGNvbG9yO3NrX1Bvc2l0
aW9uID0gcG9zaXRpb24ueHkwMTt7CiAgIDQJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAgPSAodW1h
dHJpeF9TMSAqIGxvY2FsQ29vcmQueHkxKS54eTsKICAgNQl9CiAgIDYJfQogICA3CS8vIEZyYWdt
ZW50IFNLU0wKICAgOAljb25zdCBpbnQga01heExvb3BMaW1pdF9TMV9jMCA9IDY7CiAgIDkJdW5p
Zm9ybSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwX2MwO3VuaWZvcm0gZmxvYXQzeDMgdW1hdHJpeF9T
MV9jMF9jMDt1bmlmb3JtIGhhbGY0IHVvZmZzZXRzQW5kS2VybmVsX1MxX2MwWzE0XTt1bmlmb3Jt
IGhhbGYyIHVkaXJfUzFfYzA7dW5pZm9ybSBmbG9hdDN4MyB1bWF0cml4X1MxO3NhbXBsZXIyRCB1
VGV4dHVyZVNhbXBsZXJfMF9TMTsKICAxMAlpbiBoYWxmNCB2Y29sb3JfUzA7aW4gZmxvYXQyIHZU
cmFuc2Zvcm1lZENvb3Jkc18yX1MwO2hhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoaGFs
ZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgewogIDExCWZsb2F0MiBpbkNvb3JkID0gX2Nvb3Jk
cztmbG9hdDIgc3Vic2V0Q29vcmQ7c3Vic2V0Q29vcmQueCA9IGluQ29vcmQueDtzdWJzZXRDb29y
ZC55ID0gaW5Db29yZC55O2Zsb2F0MiBjbGFtcGVkQ29vcmQ7Y2xhbXBlZENvb3JkID0gY2xhbXAo
c3Vic2V0Q29vcmQsIHVjbGFtcF9TMV9jMF9jMF9jMC54eSwgdWNsYW1wX1MxX2MwX2MwX2MwLnp3
KTtoYWxmNCB0ZXh0dXJlQ29sb3IgPSBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIGNsYW1w
ZWRDb29yZCk7cmV0dXJuIHRleHR1cmVDb2xvcjt9CiAgMTIJCiAgMTMJaGFsZjQgTWF0cml4RWZm
ZWN0X1MxX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIHsKICAxNAlyZXR1cm4g
VGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChfaW5wdXQsICgodW1hdHJpeF9TMV9jMF9jMCkgKiBf
Y29vcmRzLnh5MSkueHkpOwogIDE1CX0KICAxNgkKICAxNwloYWxmNCBydW50aW1lX3NoYWRlcl9T
MV9jMChoYWxmNCBfaW5wdXQpIHsKICAxOAloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsK
ICAxOQlmbG9hdDIgX3RtcF8xX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwogIDIw
CWhhbGY0IHN1bSA9IGhhbGY0KDAuMCk7CiAgMjEJZm9yIChpbnQgaSA9IDA7aSA8IGtNYXhMb29w
TGltaXRfUzFfYzA7ICsraSkgewogIDIyCWhhbGY0IHMgPSB1b2Zmc2V0c0FuZEtlcm5lbF9TMV9j
MFtpXTsKICAyMwlzdW0gKz0gcy55ICogTWF0cml4RWZmZWN0X1MxX2MwX2MwKF90bXBfMF9pbkNv
bG9yLCBfdG1wXzFfY29vcmRzICsgZmxvYXQyKHMueCAqIHVkaXJfUzFfYzApKTsKICAyNAlzdW0g
Kz0gcy53ICogTWF0cml4RWZmZWN0X1MxX2MwX2MwKF90bXBfMF9pbkNvbG9yLCBfdG1wXzFfY29v
cmRzICsgZmxvYXQyKHMueiAqIHVkaXJfUzFfYzApKTsKICAyNQl9CiAgMjYJcmV0dXJuIGhhbGY0
KHN1bSk7CiAgMjcJfQogIDI4CQogIDI5CWhhbGY0IE1hdHJpeEVmZmVjdF9TMShoYWxmNCBfaW5w
dXQpIHsKICAzMAlyZXR1cm4gcnVudGltZV9zaGFkZXJfUzFfYzAoX2lucHV0KTsKICAzMQl9CiAg
MzIJCiAgMzMJdm9pZCBtYWluKCkgey8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVBy
b2Nlc3NvcgogIDM0CWhhbGY0IG91dHB1dENvbG9yX1MwO291dHB1dENvbG9yX1MwID0gdmNvbG9y
X1MwO2NvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7aGFsZjQgb3V0cHV0
X1MxO291dHB1dF9TMSA9IE1hdHJpeEVmZmVjdF9TMShvdXRwdXRDb2xvcl9TMCk7eyAvLyBYZmVy
IFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKICAzNQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBv
dXRwdXRDb3ZlcmFnZV9TMDt9fQogIDM2CS8vIFZlcnRleCBHTFNMCiAgMzcJI3ZlcnNpb24gMTAw
CiAgMzgJCiAgMzkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CiAgNDAJcHJlY2lzaW9uIG1lZGl1
bXAgc2FtcGxlcjJEOwogIDQxCXVuaWZvcm0gaGlnaHAgdmVjNCBza19SVEFkanVzdDsKICA0Mgl1
bmlmb3JtIGhpZ2hwIG1hdDMgdW1hdHJpeF9TMTsKICA0MwlhdHRyaWJ1dGUgaGlnaHAgdmVjMiBw
b3NpdGlvbjsKICA0NAlhdHRyaWJ1dGUgbWVkaXVtcCB2ZWM0IGNvbG9yOwogIDQ1CWF0dHJpYnV0
ZSBoaWdocCB2ZWMyIGxvY2FsQ29vcmQ7CiAgNDYJdmFyeWluZyBtZWRpdW1wIHZlYzQgdmNvbG9y
X1MwOwogIDQ3CXZhcnlpbmcgaGlnaHAgdmVjMiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKICA0
OAl2b2lkIG1haW4oKSB7CiAgNDkJdmNvbG9yX1MwID0gY29sb3I7CiAgNTAJZ2xfUG9zaXRpb24g
PSB2ZWM0KHBvc2l0aW9uLCAwLjAsIDEuMCk7CiAgNTEJewogIDUyCXZUcmFuc2Zvcm1lZENvb3Jk
c18yX1MwID0gKHVtYXRyaXhfUzEgKiB2ZWMzKGxvY2FsQ29vcmQsIDEuMCkpLnh5OwogIDUzCX0K
ICA1NAlnbF9Qb3NpdGlvbiA9IHZlYzQoZ2xfUG9zaXRpb24ueHkgKiBza19SVEFkanVzdC54eiAr
IGdsX1Bvc2l0aW9uLnd3ICogc2tfUlRBZGp1c3QueXcsIDAuMCwgZ2xfUG9zaXRpb24udyk7CiAg
NTUJfQogIDU2CQogIDU3CS8vIEZyYWdtZW50IEdMU0wKICA1OAkjdmVyc2lvbiAxMDAKICA1OQkK
ICA2MAlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKICA2MQlwcmVjaXNpb24gbWVkaXVtcCBzYW1w
bGVyMkQ7CiAgNjIJY29uc3QgaGlnaHAgaW50IGtNYXhMb29wTGltaXRfUzFfYzAgPSA2OwogIDYz
CXVuaWZvcm0gaGlnaHAgdmVjNCB1Y2xhbXBfUzFfYzBfYzBfYzA7CiAgNjQJdW5pZm9ybSBoaWdo
cCBtYXQzIHVtYXRyaXhfUzFfYzBfYzA7CiAgNjUJdW5pZm9ybSBtZWRpdW1wIHZlYzQgdW9mZnNl
dHNBbmRLZXJuZWxfUzFfYzBbMTRdOwogIDY2CXVuaWZvcm0gbWVkaXVtcCB2ZWMyIHVkaXJfUzFf
YzA7CiAgNjcJdW5pZm9ybSBoaWdocCBtYXQzIHVtYXRyaXhfUzE7CiAgNjgJdW5pZm9ybSBzYW1w
bGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CiAgNjkJdmFyeWluZyBtZWRpdW1wIHZlYzQgdmNv
bG9yX1MwOwogIDcwCXZhcnlpbmcgaGlnaHAgdmVjMiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsK
ICA3MQl2b2lkIG1haW4oKSB7CiAgNzIJaGlnaHAgdmVjMiBfMjZfdG1wXzFfY29vcmRzID0gdlRy
YW5zZm9ybWVkQ29vcmRzXzJfUzA7CiAgNzMJbWVkaXVtcCB2ZWM0IF8yN19zdW0gPSB2ZWM0KDAu
MCk7CiAgNzQJZm9yIChoaWdocCBpbnQgXzI4X2kgPSAwO18yOF9pIDwga01heExvb3BMaW1pdF9T
MV9jMDsgKytfMjhfaSkgewogIDc1CW1lZGl1bXAgdmVjNCBfMjlfcyA9IHVvZmZzZXRzQW5kS2Vy
bmVsX1MxX2MwW18yOF9pXTsKICA3NgloaWdocCB2ZWMyIF8zMF9pbkNvb3JkID0gKHVtYXRyaXhf
UzFfYzBfYzAgKiB2ZWMzKF8yNl90bXBfMV9jb29yZHMgKyBfMjlfcy54ICogdWRpcl9TMV9jMCwg
MS4wKSkueHk7CiAgNzcJaGlnaHAgdmVjMiBfMzFfc3Vic2V0Q29vcmQ7CiAgNzgJXzMxX3N1YnNl
dENvb3JkLnggPSBfMzBfaW5Db29yZC54OwogIDc5CV8zMV9zdWJzZXRDb29yZC55ID0gXzMwX2lu
Q29vcmQueTsKICA4MAloaWdocCB2ZWMyIF8zMl9jbGFtcGVkQ29vcmQgPSBjbGFtcChfMzFfc3Vi
c2V0Q29vcmQsIHVjbGFtcF9TMV9jMF9jMF9jMC54eSwgdWNsYW1wX1MxX2MwX2MwX2MwLnp3KTsK
ICA4MQltZWRpdW1wIHZlYzQgXzMzX3RleHR1cmVDb2xvciA9IHRleHR1cmUyRCh1VGV4dHVyZVNh
bXBsZXJfMF9TMSwgXzMyX2NsYW1wZWRDb29yZCwgLTAuNDc1KTsKICA4MglfMjdfc3VtICs9IF8y
OV9zLnkgKiBfMzNfdGV4dHVyZUNvbG9yOwogIDgzCWhpZ2hwIHZlYzIgXzM0X2luQ29vcmQgPSAo
dW1hdHJpeF9TMV9jMF9jMCAqIHZlYzMoXzI2X3RtcF8xX2Nvb3JkcyArIF8yOV9zLnogKiB1ZGly
X1MxX2MwLCAxLjApKS54eTsKICA4NAloaWdocCB2ZWMyIF8zNV9zdWJzZXRDb29yZDsKICA4NQlf
MzVfc3Vic2V0Q29vcmQueCA9IF8zNF9pbkNvb3JkLng7CiAgODYJXzM1X3N1YnNldENvb3JkLnkg
PSBfMzRfaW5Db29yZC55OwogIDg3CWhpZ2hwIHZlYzIgXzM2X2NsYW1wZWRDb29yZCA9IGNsYW1w
KF8zNV9zdWJzZXRDb29yZCwgdWNsYW1wX1MxX2MwX2MwX2MwLnh5LCB1Y2xhbXBfUzFfYzBfYzBf
YzAuencpOwogIDg4CW1lZGl1bXAgdmVjNCBfMzdfdGV4dHVyZUNvbG9yID0gdGV4dHVyZTJEKHVU
ZXh0dXJlU2FtcGxlcl8wX1MxLCBfMzZfY2xhbXBlZENvb3JkLCAtMC40NzUpOwogIDg5CV8yN19z
dW0gKz0gXzI5X3MudyAqIF8zN190ZXh0dXJlQ29sb3I7CiAgOTAJfQogIDkxCW1lZGl1bXAgdmVj
NCBvdXRwdXRfUzEgPSBfMjdfc3VtOwogIDkyCXsKICA5MwlnbF9GcmFnQ29sb3IgPSBvdXRwdXRf
UzE7CiAgOTQJfQogIDk1CX0KICA5NgkKICA5NwkKRXJyb3JzOgplcnJvcjogRXhjZWVkZWQgbWF4
IG5yIGluZGlyZWN0IHRleHR1cmUgbG9va3VwcyAoMTMvNCkKRXhjZWVkZWQgbWF4IEFMVSBpbnN0
cnVjdGlvbnMgKDc4LzY0KQpTaGFkZXIgY29tcGlsYXRpb24gZXJyb3IKLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCiAgIDEJLy8gVmVydGV4IFNLU0wKICAgMgl1bmlmb3JtIGZsb2F0NCBza19SVEFk
anVzdDt1bmlmb3JtIGZsb2F0M3gzIHVtYXRyaXhfUzE7aW4gZmxvYXQyIHBvc2l0aW9uO2luIGhh
bGY0IGNvbG9yO2luIGZsb2F0MiBsb2NhbENvb3JkO291dCBoYWxmNCB2Y29sb3JfUzA7b3V0IGZs
b2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDt2b2lkIG1haW4oKSB7Ly8gUHJpbWl0aXZlIFBy
b2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKICAgMwl2Y29sb3JfUzAgPSBj
b2xvcjtza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7ewogICA0CXZUcmFuc2Zvcm1lZENvb3Jk
c18yX1MwID0gKHVtYXRyaXhfUzEgKiBsb2NhbENvb3JkLnh5MSkueHk7CiAgIDUJfQogICA2CX0K
ICAgNwkvLyBGcmFnbWVudCBTS1NMCiAgIDgJY29uc3QgaW50IGtNYXhMb29wTGltaXRfUzFfYzAg
PSA2OwogICA5CXVuaWZvcm0gZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDt1bmlmb3JtIGhhbGY0
IHVvZmZzZXRzQW5kS2VybmVsX1MxX2MwWzE0XTt1bmlmb3JtIGhhbGYyIHVkaXJfUzFfYzA7dW5p
Zm9ybSBmbG9hdDN4MyB1bWF0cml4X1MxO3NhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsK
ICAxMAlpbiBoYWxmNCB2Y29sb3JfUzA7aW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1Mw
O2hhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nv
b3JkcykgewogIDExCXJldHVybiBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIF9jb29yZHMp
O30KICAxMgkKICAxMwloYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoaGFsZjQgX2lucHV0LCBm
bG9hdDIgX2Nvb3JkcykgewogIDE0CXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKF9p
bnB1dCwgKCh1bWF0cml4X1MxX2MwX2MwKSAqIF9jb29yZHMueHkxKS54eSk7CiAgMTUJfQogIDE2
CQogIDE3CWhhbGY0IHJ1bnRpbWVfc2hhZGVyX1MxX2MwKGhhbGY0IF9pbnB1dCkgewogIDE4CWhh
bGY0IF90bXBfMF9pbkNvbG9yID0gX2lucHV0OwogIDE5CWZsb2F0MiBfdG1wXzFfY29vcmRzID0g
dlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CiAgMjAJaGFsZjQgc3VtID0gaGFsZjQoMC4wKTsKICAy
MQlmb3IgKGludCBpID0gMDtpIDwga01heExvb3BMaW1pdF9TMV9jMDsgKytpKSB7CiAgMjIJaGFs
ZjQgcyA9IHVvZmZzZXRzQW5kS2VybmVsX1MxX2MwW2ldOwogIDIzCXN1bSArPSBzLnkgKiBNYXRy
aXhFZmZlY3RfUzFfYzBfYzAoX3RtcF8wX2luQ29sb3IsIF90bXBfMV9jb29yZHMgKyBmbG9hdDIo
cy54ICogdWRpcl9TMV9jMCkpOwogIDI0CXN1bSArPSBzLncgKiBNYXRyaXhFZmZlY3RfUzFfYzBf
YzAoX3RtcF8wX2luQ29sb3IsIF90bXBfMV9jb29yZHMgKyBmbG9hdDIocy56ICogdWRpcl9TMV9j
MCkpOwogIDI1CX0KICAyNglyZXR1cm4gaGFsZjQoc3VtKTsKICAyNwl9CiAgMjgJCiAgMjkJaGFs
ZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgewogIDMwCXJldHVybiBydW50aW1lX3No
YWRlcl9TMV9jMChfaW5wdXQpOwogIDMxCX0KICAzMgkKICAzMwl2b2lkIG1haW4oKSB7Ly8gU3Rh
Z2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCiAgMzQJaGFsZjQgb3V0cHV0Q29s
b3JfUzA7b3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7Y29uc3QgaGFsZjQgb3V0cHV0Q292ZXJh
Z2VfUzAgPSBoYWxmNCgxKTtoYWxmNCBvdXRwdXRfUzE7b3V0cHV0X1MxID0gTWF0cml4RWZmZWN0
X1MxKG91dHB1dENvbG9yX1MwKTt7IC8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgogIDM1
CXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwO319CiAgMzYJLy8g
VmVydGV4IEdMU0wKICAzNwkjdmVyc2lvbiAxMDAKICAzOAkKICAzOQlwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKICA0MAlwcmVjaXNpb24gbWVkaXVtcCBzYW1wbGVyMkQ7CiAgNDEJdW5pZm9ybSBo
aWdocCB2ZWM0IHNrX1JUQWRqdXN0OwogIDQyCXVuaWZvcm0gaGlnaHAgbWF0MyB1bWF0cml4X1Mx
OwogIDQzCWF0dHJpYnV0ZSBoaWdocCB2ZWMyIHBvc2l0aW9uOwogIDQ0CWF0dHJpYnV0ZSBtZWRp
dW1wIHZlYzQgY29sb3I7CiAgNDUJYXR0cmlidXRlIGhpZ2hwIHZlYzIgbG9jYWxDb29yZDsKICA0
Ngl2YXJ5aW5nIG1lZGl1bXAgdmVjNCB2Y29sb3JfUzA7CiAgNDcJdmFyeWluZyBoaWdocCB2ZWMy
IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwogIDQ4CXZvaWQgbWFpbigpIHsKICA0OQl2Y29sb3Jf
UzAgPSBjb2xvcjsKICA1MAlnbF9Qb3NpdGlvbiA9IHZlYzQocG9zaXRpb24sIDAuMCwgMS4wKTsK
ICA1MQl7CiAgNTIJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAgPSAodW1hdHJpeF9TMSAqIHZlYzMo
bG9jYWxDb29yZCwgMS4wKSkueHk7CiAgNTMJfQogIDU0CWdsX1Bvc2l0aW9uID0gdmVjNChnbF9Q
b3NpdGlvbi54eSAqIHNrX1JUQWRqdXN0Lnh6ICsgZ2xfUG9zaXRpb24ud3cgKiBza19SVEFkanVz
dC55dywgMC4wLCBnbF9Qb3NpdGlvbi53KTsKICA1NQl9CiAgNTYJCiAgNTcJLy8gRnJhZ21lbnQg
R0xTTAogIDU4CSN2ZXJzaW9uIDEwMAogIDU5CQogIDYwCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OwogIDYxCXByZWNpc2lvbiBtZWRpdW1wIHNhbXBsZXIyRDsKICA2Mgljb25zdCBoaWdocCBpbnQg
a01heExvb3BMaW1pdF9TMV9jMCA9IDY7CiAgNjMJdW5pZm9ybSBoaWdocCBtYXQzIHVtYXRyaXhf
UzFfYzBfYzA7CiAgNjQJdW5pZm9ybSBtZWRpdW1wIHZlYzQgdW9mZnNldHNBbmRLZXJuZWxfUzFf
YzBbMTRdOwogIDY1CXVuaWZvcm0gbWVkaXVtcCB2ZWMyIHVkaXJfUzFfYzA7CiAgNjYJdW5pZm9y
bSBoaWdocCBtYXQzIHVtYXRyaXhfUzE7CiAgNjcJdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVT
YW1wbGVyXzBfUzE7CiAgNjgJdmFyeWluZyBtZWRpdW1wIHZlYzQgdmNvbG9yX1MwOwogIDY5CXZh
cnlpbmcgaGlnaHAgdmVjMiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKICA3MAl2b2lkIG1haW4o
KSB7CiAgNzEJaGlnaHAgdmVjMiBfNl90bXBfMV9jb29yZHMgPSB2VHJhbnNmb3JtZWRDb29yZHNf
Ml9TMDsKICA3MgltZWRpdW1wIHZlYzQgXzdfc3VtID0gdmVjNCgwLjApOwogIDczCWZvciAoaGln
aHAgaW50IF84X2kgPSAwO184X2kgPCBrTWF4TG9vcExpbWl0X1MxX2MwOyArK184X2kpIHsKICA3
NAltZWRpdW1wIHZlYzQgXzlfcyA9IHVvZmZzZXRzQW5kS2VybmVsX1MxX2MwW184X2ldOwogIDc1
CV83X3N1bSArPSBfOV9zLnkgKiB0ZXh0dXJlMkQodVRleHR1cmVTYW1wbGVyXzBfUzEsICh1bWF0
cml4X1MxX2MwX2MwICogdmVjMyhfNl90bXBfMV9jb29yZHMgKyBfOV9zLnggKiB1ZGlyX1MxX2Mw
LCAxLjApKS54eSwgLTAuNDc1KTsKICA3NglfN19zdW0gKz0gXzlfcy53ICogdGV4dHVyZTJEKHVU
ZXh0dXJlU2FtcGxlcl8wX1MxLCAodW1hdHJpeF9TMV9jMF9jMCAqIHZlYzMoXzZfdG1wXzFfY29v
cmRzICsgXzlfcy56ICogdWRpcl9TMV9jMCwgMS4wKSkueHksIC0wLjQ3NSk7CiAgNzcJfQogIDc4
CW1lZGl1bXAgdmVjNCBvdXRwdXRfUzEgPSBfN19zdW07CiAgNzkJewogIDgwCWdsX0ZyYWdDb2xv
ciA9IG91dHB1dF9TMTsKICA4MQl9CiAgODIJfQogIDgzCQogIDg0CQpFcnJvcnM6CmVycm9yOiBF
eGNlZWRlZCBtYXggbnIgaW5kaXJlY3QgdGV4dHVyZSBsb29rdXBzICgxMy80KQpFeGNlZWRlZCBt
YXggQUxVIGluc3RydWN0aW9ucyAoNjYvNjQpCkZhaWxlZCB0byBjcmVhdGUgRE1BLUJVRiB0ZXh0
dXJlIG9mIHNpemUgMTAyNHg2OTM6IFVuc3VwcG9ydGVkIGRtYWJ1ZiBmb3JtYXQ6IFhSMjQ6MHhm
ZmZmZmZmZmZmZmZmZgpTaGFkZXIgY29tcGlsYXRpb24gZXJyb3IKLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCiAgIDEJLy8gVmVydGV4IFNLU0wKICAgMgl1bmlmb3JtIGZsb2F0NCBza19SVEFkanVz
dDt1bmlmb3JtIGZsb2F0M3gzIHVtYXRyaXhfUzE7aW4gZmxvYXQyIHBvc2l0aW9uO2luIGhhbGY0
IGNvbG9yO2luIGZsb2F0MiBsb2NhbENvb3JkO291dCBoYWxmNCB2Y29sb3JfUzA7b3V0IGZsb2F0
MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDt2b2lkIG1haW4oKSB7Ly8gUHJpbWl0aXZlIFByb2Nl
c3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKICAgMwl2Y29sb3JfUzAgPSBjb2xv
cjtza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7ewogICA0CXZUcmFuc2Zvcm1lZENvb3Jkc18y
X1MwID0gKHVtYXRyaXhfUzEgKiBsb2NhbENvb3JkLnh5MSkueHk7CiAgIDUJfQogICA2CX0KICAg
NwkvLyBGcmFnbWVudCBTS1NMCiAgIDgJY29uc3QgaW50IGtNYXhMb29wTGltaXRfUzFfYzAgPSA2
OwogICA5CXVuaWZvcm0gZmxvYXQ0IHVjbGFtcF9TMV9jMF9jMF9jMDt1bmlmb3JtIGZsb2F0M3gz
IHVtYXRyaXhfUzFfYzBfYzA7dW5pZm9ybSBoYWxmNCB1b2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFsx
NF07dW5pZm9ybSBoYWxmMiB1ZGlyX1MxX2MwO3VuaWZvcm0gZmxvYXQzeDMgdW1hdHJpeF9TMTtz
YW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CiAgMTAJaW4gaGFsZjQgdmNvbG9yX1MwO2lu
IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDtoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2Mw
X2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIHsKICAxMQlmbG9hdDIgaW5Db29y
ZCA9IF9jb29yZHM7ZmxvYXQyIHN1YnNldENvb3JkO3N1YnNldENvb3JkLnggPSBpbkNvb3JkLng7
c3Vic2V0Q29vcmQueSA9IGluQ29vcmQueTtmbG9hdDIgY2xhbXBlZENvb3JkO2NsYW1wZWRDb29y
ZCA9IGNsYW1wKHN1YnNldENvb3JkLCB1Y2xhbXBfUzFfYzBfYzBfYzAueHksIHVjbGFtcF9TMV9j
MF9jMF9jMC56dyk7aGFsZjQgdGV4dHVyZUNvbG9yID0gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8w
X1MxLCBjbGFtcGVkQ29vcmQpO3JldHVybiB0ZXh0dXJlQ29sb3I7fQogIDEyCQogIDEzCWhhbGY0
IE1hdHJpeEVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSB7CiAg
MTQJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoX2lucHV0LCAoKHVtYXRyaXhfUzFf
YzBfYzApICogX2Nvb3Jkcy54eTEpLnh5KTsKICAxNQl9CiAgMTYJCiAgMTcJaGFsZjQgcnVudGlt
ZV9zaGFkZXJfUzFfYzAoaGFsZjQgX2lucHV0KSB7CiAgMTgJaGFsZjQgX3RtcF8wX2luQ29sb3Ig
PSBfaW5wdXQ7CiAgMTkJZmxvYXQyIF90bXBfMV9jb29yZHMgPSB2VHJhbnNmb3JtZWRDb29yZHNf
Ml9TMDsKICAyMAloYWxmNCBzdW0gPSBoYWxmNCgwLjApOwogIDIxCWZvciAoaW50IGkgPSAwO2kg
PCBrTWF4TG9vcExpbWl0X1MxX2MwOyArK2kpIHsKICAyMgloYWxmNCBzID0gdW9mZnNldHNBbmRL
ZXJuZWxfUzFfYzBbaV07CiAgMjMJc3VtICs9IHMueSAqIE1hdHJpeEVmZmVjdF9TMV9jMF9jMChf
dG1wXzBfaW5Db2xvciwgX3RtcF8xX2Nvb3JkcyArIGZsb2F0MihzLnggKiB1ZGlyX1MxX2MwKSk7
CiAgMjQJc3VtICs9IHMudyAqIE1hdHJpeEVmZmVjdF9TMV9jMF9jMChfdG1wXzBfaW5Db2xvciwg
X3RtcF8xX2Nvb3JkcyArIGZsb2F0MihzLnogKiB1ZGlyX1MxX2MwKSk7CiAgMjUJfQogIDI2CXJl
dHVybiBoYWxmNChzdW0pOwogIDI3CX0KICAyOAkKICAyOQloYWxmNCBNYXRyaXhFZmZlY3RfUzEo
aGFsZjQgX2lucHV0KSB7CiAgMzAJcmV0dXJuIHJ1bnRpbWVfc2hhZGVyX1MxX2MwKF9pbnB1dCk7
CiAgMzEJfQogIDMyCQogIDMzCXZvaWQgbWFpbigpIHsvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFB
R2VvbWV0cnlQcm9jZXNzb3IKICAzNAloYWxmNCBvdXRwdXRDb2xvcl9TMDtvdXRwdXRDb2xvcl9T
MCA9IHZjb2xvcl9TMDtjb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpO2hh
bGY0IG91dHB1dF9TMTtvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3JfUzAp
O3sgLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCiAgMzUJc2tfRnJhZ0NvbG9yID0gb3V0
cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7fX0KICAzNgkvLyBWZXJ0ZXggR0xTTAogIDM3CSN2
ZXJzaW9uIDEwMAogIDM4CQogIDM5CXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwogIDQwCXByZWNp
c2lvbiBtZWRpdW1wIHNhbXBsZXIyRDsKICA0MQl1bmlmb3JtIGhpZ2hwIHZlYzQgc2tfUlRBZGp1
c3Q7CiAgNDIJdW5pZm9ybSBoaWdocCBtYXQzIHVtYXRyaXhfUzE7CiAgNDMJYXR0cmlidXRlIGhp
Z2hwIHZlYzIgcG9zaXRpb247CiAgNDQJYXR0cmlidXRlIG1lZGl1bXAgdmVjNCBjb2xvcjsKICA0
NQlhdHRyaWJ1dGUgaGlnaHAgdmVjMiBsb2NhbENvb3JkOwogIDQ2CXZhcnlpbmcgbWVkaXVtcCB2
ZWM0IHZjb2xvcl9TMDsKICA0Nwl2YXJ5aW5nIGhpZ2hwIHZlYzIgdlRyYW5zZm9ybWVkQ29vcmRz
XzJfUzA7CiAgNDgJdm9pZCBtYWluKCkgewogIDQ5CXZjb2xvcl9TMCA9IGNvbG9yOwogIDUwCWds
X1Bvc2l0aW9uID0gdmVjNChwb3NpdGlvbiwgMC4wLCAxLjApOwogIDUxCXsKICA1Mgl2VHJhbnNm
b3JtZWRDb29yZHNfMl9TMCA9ICh1bWF0cml4X1MxICogdmVjMyhsb2NhbENvb3JkLCAxLjApKS54
eTsKICA1Mwl9CiAgNTQJZ2xfUG9zaXRpb24gPSB2ZWM0KGdsX1Bvc2l0aW9uLnh5ICogc2tfUlRB
ZGp1c3QueHogKyBnbF9Qb3NpdGlvbi53dyAqIHNrX1JUQWRqdXN0Lnl3LCAwLjAsIGdsX1Bvc2l0
aW9uLncpOwogIDU1CX0KICA1NgkKICA1NwkvLyBGcmFnbWVudCBHTFNMCiAgNTgJI3ZlcnNpb24g
MTAwCiAgNTkJCiAgNjAJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CiAgNjEJcHJlY2lzaW9uIG1l
ZGl1bXAgc2FtcGxlcjJEOwogIDYyCWNvbnN0IGhpZ2hwIGludCBrTWF4TG9vcExpbWl0X1MxX2Mw
ID0gNjsKICA2Mwl1bmlmb3JtIGhpZ2hwIHZlYzQgdWNsYW1wX1MxX2MwX2MwX2MwOwogIDY0CXVu
aWZvcm0gaGlnaHAgbWF0MyB1bWF0cml4X1MxX2MwX2MwOwogIDY1CXVuaWZvcm0gbWVkaXVtcCB2
ZWM0IHVvZmZzZXRzQW5kS2VybmVsX1MxX2MwWzE0XTsKICA2Ngl1bmlmb3JtIG1lZGl1bXAgdmVj
MiB1ZGlyX1MxX2MwOwogIDY3CXVuaWZvcm0gaGlnaHAgbWF0MyB1bWF0cml4X1MxOwogIDY4CXVu
aWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwogIDY5CXZhcnlpbmcgbWVkaXVt
cCB2ZWM0IHZjb2xvcl9TMDsKICA3MAl2YXJ5aW5nIGhpZ2hwIHZlYzIgdlRyYW5zZm9ybWVkQ29v
cmRzXzJfUzA7CiAgNzEJdm9pZCBtYWluKCkgewogIDcyCWhpZ2hwIHZlYzIgXzI2X3RtcF8xX2Nv
b3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwogIDczCW1lZGl1bXAgdmVjNCBfMjdfc3Vt
ID0gdmVjNCgwLjApOwogIDc0CWZvciAoaGlnaHAgaW50IF8yOF9pID0gMDtfMjhfaSA8IGtNYXhM
b29wTGltaXRfUzFfYzA7ICsrXzI4X2kpIHsKICA3NQltZWRpdW1wIHZlYzQgXzI5X3MgPSB1b2Zm
c2V0c0FuZEtlcm5lbF9TMV9jMFtfMjhfaV07CiAgNzYJaGlnaHAgdmVjMiBfMzBfaW5Db29yZCA9
ICh1bWF0cml4X1MxX2MwX2MwICogdmVjMyhfMjZfdG1wXzFfY29vcmRzICsgXzI5X3MueCAqIHVk
aXJfUzFfYzAsIDEuMCkpLnh5OwogIDc3CWhpZ2hwIHZlYzIgXzMxX3N1YnNldENvb3JkOwogIDc4
CV8zMV9zdWJzZXRDb29yZC54ID0gXzMwX2luQ29vcmQueDsKICA3OQlfMzFfc3Vic2V0Q29vcmQu
eSA9IF8zMF9pbkNvb3JkLnk7CiAgODAJaGlnaHAgdmVjMiBfMzJfY2xhbXBlZENvb3JkID0gY2xh
bXAoXzMxX3N1YnNldENvb3JkLCB1Y2xhbXBfUzFfYzBfYzBfYzAueHksIHVjbGFtcF9TMV9jMF9j
MF9jMC56dyk7CiAgODEJbWVkaXVtcCB2ZWM0IF8zM190ZXh0dXJlQ29sb3IgPSB0ZXh0dXJlMkQo
dVRleHR1cmVTYW1wbGVyXzBfUzEsIF8zMl9jbGFtcGVkQ29vcmQsIC0wLjQ3NSk7CiAgODIJXzI3
X3N1bSArPSBfMjlfcy55ICogXzMzX3RleHR1cmVDb2xvcjsKICA4MwloaWdocCB2ZWMyIF8zNF9p
bkNvb3JkID0gKHVtYXRyaXhfUzFfYzBfYzAgKiB2ZWMzKF8yNl90bXBfMV9jb29yZHMgKyBfMjlf
cy56ICogdWRpcl9TMV9jMCwgMS4wKSkueHk7CiAgODQJaGlnaHAgdmVjMiBfMzVfc3Vic2V0Q29v
cmQ7CiAgODUJXzM1X3N1YnNldENvb3JkLnggPSBfMzRfaW5Db29yZC54OwogIDg2CV8zNV9zdWJz
ZXRDb29yZC55ID0gXzM0X2luQ29vcmQueTsKICA4NwloaWdocCB2ZWMyIF8zNl9jbGFtcGVkQ29v
cmQgPSBjbGFtcChfMzVfc3Vic2V0Q29vcmQsIHVjbGFtcF9TMV9jMF9jMF9jMC54eSwgdWNsYW1w
X1MxX2MwX2MwX2MwLnp3KTsKICA4OAltZWRpdW1wIHZlYzQgXzM3X3RleHR1cmVDb2xvciA9IHRl
eHR1cmUyRCh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgXzM2X2NsYW1wZWRDb29yZCwgLTAuNDc1KTsK
ICA4OQlfMjdfc3VtICs9IF8yOV9zLncgKiBfMzdfdGV4dHVyZUNvbG9yOwogIDkwCX0KICA5MQlt
ZWRpdW1wIHZlYzQgb3V0cHV0X1MxID0gXzI3X3N1bTsKICA5Mgl7CiAgOTMJZ2xfRnJhZ0NvbG9y
ID0gb3V0cHV0X1MxOwogIDk0CX0KICA5NQl9CiAgOTYJCiAgOTcJCkVycm9yczoKZXJyb3I6IEV4
Y2VlZGVkIG1heCBuciBpbmRpcmVjdCB0ZXh0dXJlIGxvb2t1cHMgKDEzLzQpCkV4Y2VlZGVkIG1h
eCBBTFUgaW5zdHJ1Y3Rpb25zICg3OC82NCkKU2hhZGVyIGNvbXBpbGF0aW9uIGVycm9yCi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogICAxCS8vIFZlcnRleCBTS1NMCiAgIDIJdW5pZm9ybSBmbG9h
dDQgc2tfUlRBZGp1c3Q7dW5pZm9ybSBmbG9hdDN4MyB1bWF0cml4X1MxO2luIGZsb2F0MiBwb3Np
dGlvbjtpbiBoYWxmNCBjb2xvcjtpbiBmbG9hdDIgbG9jYWxDb29yZDtvdXQgaGFsZjQgdmNvbG9y
X1MwO291dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7dm9pZCBtYWluKCkgey8vIFBy
aW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCiAgIDMJdmNv
bG9yX1MwID0gY29sb3I7c2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxO3sKICAgNAl2VHJhbnNm
b3JtZWRDb29yZHNfMl9TMCA9ICh1bWF0cml4X1MxICogbG9jYWxDb29yZC54eTEpLnh5OwogICA1
CX0KICAgNgl9CiAgIDcJLy8gRnJhZ21lbnQgU0tTTAogICA4CWNvbnN0IGludCBrTWF4TG9vcExp
bWl0X1MxX2MwID0gMjsKICAgOQl1bmlmb3JtIGZsb2F0NCB1Y2xhbXBfUzFfYzBfYzBfYzA7dW5p
Zm9ybSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwO3VuaWZvcm0gaGFsZjQgdW9mZnNldHNBbmRL
ZXJuZWxfUzFfYzBbMTRdO3VuaWZvcm0gaGFsZjIgdWRpcl9TMV9jMDt1bmlmb3JtIGZsb2F0M3gz
IHVtYXRyaXhfUzE7c2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwogIDEwCWluIGhhbGY0
IHZjb2xvcl9TMDtpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7aGFsZjQgVGV4dHVy
ZUVmZmVjdF9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSB7CiAgMTEJ
ZmxvYXQyIGluQ29vcmQgPSBfY29vcmRzO2Zsb2F0MiBzdWJzZXRDb29yZDtzdWJzZXRDb29yZC54
ID0gaW5Db29yZC54O3N1YnNldENvb3JkLnkgPSBpbkNvb3JkLnk7ZmxvYXQyIGNsYW1wZWRDb29y
ZDtjbGFtcGVkQ29vcmQgPSBjbGFtcChzdWJzZXRDb29yZCwgdWNsYW1wX1MxX2MwX2MwX2MwLnh5
LCB1Y2xhbXBfUzFfYzBfYzBfYzAuencpO2hhbGY0IHRleHR1cmVDb2xvciA9IHNhbXBsZSh1VGV4
dHVyZVNhbXBsZXJfMF9TMSwgY2xhbXBlZENvb3JkKTtyZXR1cm4gdGV4dHVyZUNvbG9yO30KICAx
MgkKICAxMwloYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIg
X2Nvb3JkcykgewogIDE0CXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKF9pbnB1dCwg
KCh1bWF0cml4X1MxX2MwX2MwKSAqIF9jb29yZHMueHkxKS54eSk7CiAgMTUJfQogIDE2CQogIDE3
CWhhbGY0IHJ1bnRpbWVfc2hhZGVyX1MxX2MwKGhhbGY0IF9pbnB1dCkgewogIDE4CWhhbGY0IF90
bXBfMF9pbkNvbG9yID0gX2lucHV0OwogIDE5CWZsb2F0MiBfdG1wXzFfY29vcmRzID0gdlRyYW5z
Zm9ybWVkQ29vcmRzXzJfUzA7CiAgMjAJaGFsZjQgc3VtID0gaGFsZjQoMC4wKTsKICAyMQlmb3Ig
KGludCBpID0gMDtpIDwga01heExvb3BMaW1pdF9TMV9jMDsgKytpKSB7CiAgMjIJaGFsZjQgcyA9
IHVvZmZzZXRzQW5kS2VybmVsX1MxX2MwW2ldOwogIDIzCXN1bSArPSBzLnkgKiBNYXRyaXhFZmZl
Y3RfUzFfYzBfYzAoX3RtcF8wX2luQ29sb3IsIF90bXBfMV9jb29yZHMgKyBmbG9hdDIocy54ICog
dWRpcl9TMV9jMCkpOwogIDI0CXN1bSArPSBzLncgKiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX3Rt
cF8wX2luQ29sb3IsIF90bXBfMV9jb29yZHMgKyBmbG9hdDIocy56ICogdWRpcl9TMV9jMCkpOwog
IDI1CX0KICAyNglyZXR1cm4gaGFsZjQoc3VtKTsKICAyNwl9CiAgMjgJCiAgMjkJaGFsZjQgTWF0
cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgewogIDMwCXJldHVybiBydW50aW1lX3NoYWRlcl9T
MV9jMChfaW5wdXQpOwogIDMxCX0KICAzMgkKICAzMwl2b2lkIG1haW4oKSB7Ly8gU3RhZ2UgMCwg
UXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCiAgMzQJaGFsZjQgb3V0cHV0Q29sb3JfUzA7
b3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7Y29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAg
PSBoYWxmNCgxKTtoYWxmNCBvdXRwdXRfUzE7b3V0cHV0X1MxID0gTWF0cml4RWZmZWN0X1MxKG91
dHB1dENvbG9yX1MwKTt7IC8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgogIDM1CXNrX0Zy
YWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwO319CiAgMzYJLy8gVmVydGV4
IEdMU0wKICAzNwkjdmVyc2lvbiAxMDAKICAzOAkKICAzOQlwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKICA0MAlwcmVjaXNpb24gbWVkaXVtcCBzYW1wbGVyMkQ7CiAgNDEJdW5pZm9ybSBoaWdocCB2
ZWM0IHNrX1JUQWRqdXN0OwogIDQyCXVuaWZvcm0gaGlnaHAgbWF0MyB1bWF0cml4X1MxOwogIDQz
CWF0dHJpYnV0ZSBoaWdocCB2ZWMyIHBvc2l0aW9uOwogIDQ0CWF0dHJpYnV0ZSBtZWRpdW1wIHZl
YzQgY29sb3I7CiAgNDUJYXR0cmlidXRlIGhpZ2hwIHZlYzIgbG9jYWxDb29yZDsKICA0Ngl2YXJ5
aW5nIG1lZGl1bXAgdmVjNCB2Y29sb3JfUzA7CiAgNDcJdmFyeWluZyBoaWdocCB2ZWMyIHZUcmFu
c2Zvcm1lZENvb3Jkc18yX1MwOwogIDQ4CXZvaWQgbWFpbigpIHsKICA0OQl2Y29sb3JfUzAgPSBj
b2xvcjsKICA1MAlnbF9Qb3NpdGlvbiA9IHZlYzQocG9zaXRpb24sIDAuMCwgMS4wKTsKICA1MQl7
CiAgNTIJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAgPSAodW1hdHJpeF9TMSAqIHZlYzMobG9jYWxD
b29yZCwgMS4wKSkueHk7CiAgNTMJfQogIDU0CWdsX1Bvc2l0aW9uID0gdmVjNChnbF9Qb3NpdGlv
bi54eSAqIHNrX1JUQWRqdXN0Lnh6ICsgZ2xfUG9zaXRpb24ud3cgKiBza19SVEFkanVzdC55dywg
MC4wLCBnbF9Qb3NpdGlvbi53KTsKICA1NQl9CiAgNTYJCiAgNTcJLy8gRnJhZ21lbnQgR0xTTAog
IDU4CSN2ZXJzaW9uIDEwMAogIDU5CQogIDYwCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwogIDYx
CXByZWNpc2lvbiBtZWRpdW1wIHNhbXBsZXIyRDsKICA2Mgljb25zdCBoaWdocCBpbnQga01heExv
b3BMaW1pdF9TMV9jMCA9IDI7CiAgNjMJdW5pZm9ybSBoaWdocCB2ZWM0IHVjbGFtcF9TMV9jMF9j
MF9jMDsKICA2NAl1bmlmb3JtIGhpZ2hwIG1hdDMgdW1hdHJpeF9TMV9jMF9jMDsKICA2NQl1bmlm
b3JtIG1lZGl1bXAgdmVjNCB1b2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFsxNF07CiAgNjYJdW5pZm9y
bSBtZWRpdW1wIHZlYzIgdWRpcl9TMV9jMDsKICA2Nwl1bmlmb3JtIGhpZ2hwIG1hdDMgdW1hdHJp
eF9TMTsKICA2OAl1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKICA2OQl2
YXJ5aW5nIG1lZGl1bXAgdmVjNCB2Y29sb3JfUzA7CiAgNzAJdmFyeWluZyBoaWdocCB2ZWMyIHZU
cmFuc2Zvcm1lZENvb3Jkc18yX1MwOwogIDcxCXZvaWQgbWFpbigpIHsKICA3MgloaWdocCB2ZWMy
IF8yNl90bXBfMV9jb29yZHMgPSB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKICA3MwltZWRpdW1w
IHZlYzQgXzI3X3N1bSA9IHZlYzQoMC4wKTsKICA3NAlmb3IgKGhpZ2hwIGludCBfMjhfaSA9IDA7
XzI4X2kgPCBrTWF4TG9vcExpbWl0X1MxX2MwOyArK18yOF9pKSB7CiAgNzUJbWVkaXVtcCB2ZWM0
IF8yOV9zID0gdW9mZnNldHNBbmRLZXJuZWxfUzFfYzBbXzI4X2ldOwogIDc2CWhpZ2hwIHZlYzIg
XzMwX2luQ29vcmQgPSAodW1hdHJpeF9TMV9jMF9jMCAqIHZlYzMoXzI2X3RtcF8xX2Nvb3JkcyAr
IF8yOV9zLnggKiB1ZGlyX1MxX2MwLCAxLjApKS54eTsKICA3NwloaWdocCB2ZWMyIF8zMV9zdWJz
ZXRDb29yZDsKICA3OAlfMzFfc3Vic2V0Q29vcmQueCA9IF8zMF9pbkNvb3JkLng7CiAgNzkJXzMx
X3N1YnNldENvb3JkLnkgPSBfMzBfaW5Db29yZC55OwogIDgwCWhpZ2hwIHZlYzIgXzMyX2NsYW1w
ZWRDb29yZCA9IGNsYW1wKF8zMV9zdWJzZXRDb29yZCwgdWNsYW1wX1MxX2MwX2MwX2MwLnh5LCB1
Y2xhbXBfUzFfYzBfYzBfYzAuencpOwogIDgxCW1lZGl1bXAgdmVjNCBfMzNfdGV4dHVyZUNvbG9y
ID0gdGV4dHVyZTJEKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfMzJfY2xhbXBlZENvb3JkLCAtMC40
NzUpOwogIDgyCV8yN19zdW0gKz0gXzI5X3MueSAqIF8zM190ZXh0dXJlQ29sb3I7CiAgODMJaGln
aHAgdmVjMiBfMzRfaW5Db29yZCA9ICh1bWF0cml4X1MxX2MwX2MwICogdmVjMyhfMjZfdG1wXzFf
Y29vcmRzICsgXzI5X3MueiAqIHVkaXJfUzFfYzAsIDEuMCkpLnh5OwogIDg0CWhpZ2hwIHZlYzIg
XzM1X3N1YnNldENvb3JkOwogIDg1CV8zNV9zdWJzZXRDb29yZC54ID0gXzM0X2luQ29vcmQueDsK
ICA4NglfMzVfc3Vic2V0Q29vcmQueSA9IF8zNF9pbkNvb3JkLnk7CiAgODcJaGlnaHAgdmVjMiBf
MzZfY2xhbXBlZENvb3JkID0gY2xhbXAoXzM1X3N1YnNldENvb3JkLCB1Y2xhbXBfUzFfYzBfYzBf
YzAueHksIHVjbGFtcF9TMV9jMF9jMF9jMC56dyk7CiAgODgJbWVkaXVtcCB2ZWM0IF8zN190ZXh0
dXJlQ29sb3IgPSB0ZXh0dXJlMkQodVRleHR1cmVTYW1wbGVyXzBfUzEsIF8zNl9jbGFtcGVkQ29v
cmQsIC0wLjQ3NSk7CiAgODkJXzI3X3N1bSArPSBfMjlfcy53ICogXzM3X3RleHR1cmVDb2xvcjsK
ICA5MAl9CiAgOTEJbWVkaXVtcCB2ZWM0IG91dHB1dF9TMSA9IF8yN19zdW07CiAgOTIJewogIDkz
CWdsX0ZyYWdDb2xvciA9IG91dHB1dF9TMTsKICA5NAl9CiAgOTUJfQogIDk2CQogIDk3CQpFcnJv
cnM6CmVycm9yOiBFeGNlZWRlZCBtYXggbnIgaW5kaXJlY3QgdGV4dHVyZSBsb29rdXBzICg1LzQp
CgpTaGFkZXIgY29tcGlsYXRpb24gZXJyb3IKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIDEJ
Ly8gVmVydGV4IFNLU0wKICAgMgl1bmlmb3JtIGZsb2F0NCBza19SVEFkanVzdDt1bmlmb3JtIGZs
b2F0M3gzIHVtYXRyaXhfUzE7aW4gZmxvYXQyIHBvc2l0aW9uO2luIGhhbGY0IGNvbG9yO2luIGZs
b2F0MiBsb2NhbENvb3JkO291dCBoYWxmNCB2Y29sb3JfUzA7b3V0IGZsb2F0MiB2VHJhbnNmb3Jt
ZWRDb29yZHNfMl9TMDt2b2lkIG1haW4oKSB7Ly8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVy
RWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKICAgMwl2Y29sb3JfUzAgPSBjb2xvcjtza19Qb3NpdGlv
biA9IHBvc2l0aW9uLnh5MDE7ewogICA0CXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gKHVtYXRy
aXhfUzEgKiBsb2NhbENvb3JkLnh5MSkueHk7CiAgIDUJfQogICA2CX0KICAgNwkvLyBGcmFnbWVu
dCBTS1NMCiAgIDgJY29uc3QgaW50IGtNYXhMb29wTGltaXRfUzFfYzAgPSAyOwogICA5CXVuaWZv
cm0gZmxvYXQ0IHVjbGFtcF9TMV9jMF9jMF9jMDt1bmlmb3JtIGZsb2F0M3gzIHVtYXRyaXhfUzFf
YzBfYzA7dW5pZm9ybSBoYWxmNCB1b2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFsxNF07dW5pZm9ybSBo
YWxmMiB1ZGlyX1MxX2MwO3VuaWZvcm0gZmxvYXQzeDMgdW1hdHJpeF9TMTtzYW1wbGVyMkQgdVRl
eHR1cmVTYW1wbGVyXzBfUzE7CiAgMTAJaW4gaGFsZjQgdmNvbG9yX1MwO2luIGZsb2F0MiB2VHJh
bnNmb3JtZWRDb29yZHNfMl9TMDtoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKGhhbGY0
IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIHsKICAxMQlmbG9hdDIgaW5Db29yZCA9IF9jb29yZHM7
ZmxvYXQyIHN1YnNldENvb3JkO3N1YnNldENvb3JkLnggPSBpbkNvb3JkLng7c3Vic2V0Q29vcmQu
eSA9IGluQ29vcmQueTtmbG9hdDIgY2xhbXBlZENvb3JkO2NsYW1wZWRDb29yZCA9IGNsYW1wKHN1
YnNldENvb3JkLCB1Y2xhbXBfUzFfYzBfYzBfYzAueHksIHVjbGFtcF9TMV9jMF9jMF9jMC56dyk7
aGFsZjQgdGV4dHVyZUNvbG9yID0gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBjbGFtcGVk
Q29vcmQpO3JldHVybiB0ZXh0dXJlQ29sb3I7fQogIDEyCQogIDEzCWhhbGY0IE1hdHJpeEVmZmVj
dF9TMV9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSB7CiAgMTQJcmV0dXJuIFRl
eHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoX2lucHV0LCAoKHVtYXRyaXhfUzFfYzBfYzApICogX2Nv
b3Jkcy54eTEpLnh5KTsKICAxNQl9CiAgMTYJCiAgMTcJaGFsZjQgcnVudGltZV9zaGFkZXJfUzFf
YzAoaGFsZjQgX2lucHV0KSB7CiAgMTgJaGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CiAg
MTkJZmxvYXQyIF90bXBfMV9jb29yZHMgPSB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKICAyMAlo
YWxmNCBzdW0gPSBoYWxmNCgwLjApOwogIDIxCWZvciAoaW50IGkgPSAwO2kgPCBrTWF4TG9vcExp
bWl0X1MxX2MwOyArK2kpIHsKICAyMgloYWxmNCBzID0gdW9mZnNldHNBbmRLZXJuZWxfUzFfYzBb
aV07CiAgMjMJc3VtICs9IHMueSAqIE1hdHJpeEVmZmVjdF9TMV9jMF9jMChfdG1wXzBfaW5Db2xv
ciwgX3RtcF8xX2Nvb3JkcyArIGZsb2F0MihzLnggKiB1ZGlyX1MxX2MwKSk7CiAgMjQJc3VtICs9
IHMudyAqIE1hdHJpeEVmZmVjdF9TMV9jMF9jMChfdG1wXzBfaW5Db2xvciwgX3RtcF8xX2Nvb3Jk
cyArIGZsb2F0MihzLnogKiB1ZGlyX1MxX2MwKSk7CiAgMjUJfQogIDI2CXJldHVybiBoYWxmNChz
dW0pOwogIDI3CX0KICAyOAkKICAyOQloYWxmNCBNYXRyaXhFZmZlY3RfUzEoaGFsZjQgX2lucHV0
KSB7CiAgMzAJcmV0dXJuIHJ1bnRpbWVfc2hhZGVyX1MxX2MwKF9pbnB1dCk7CiAgMzEJfQogIDMy
CQogIDMzCXZvaWQgbWFpbigpIHsvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9j
ZXNzb3IKICAzNAloYWxmNCBvdXRwdXRDb2xvcl9TMDtvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9T
MDtjb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpO2hhbGY0IG91dHB1dF9T
MTtvdXRwdXRfUzEgPSBNYXRyaXhGYWlsZWQgdG8gY3JlYXRlIERNQS1CVUYgdGV4dHVyZSBvZiBz
aXplIDEwMjR4NjkzOiBVbnN1cHBvcnRlZCBkbWFidWYgZm9ybWF0OiBYUjI0OjB4ZmZmZmZmZmZm
ZmZmZmYKRWZmZWN0X1MxKG91dHB1dENvbG9yX1MwKTt7IC8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0
ZXIgRHVmZgogIDM1CXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1Mw
O319CiAgMzYJLy8gVmVydGV4IEdMU0wKICAzNwkjdmVyc2lvbiAxMDAKICAzOAkKICAzOQlwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKICA0MAlwcmVjaXNpb24gbWVkaXVtcCBzYW1wbGVyMkQ7CiAg
NDEJdW5pZm9ybSBoaWdocCB2ZWM0IHNrX1JUQWRqdXN0OwogIDQyCXVuaWZvcm0gaGlnaHAgbWF0
MyB1bWF0cml4X1MxOwogIDQzCWF0dHJpYnV0ZSBoaWdocCB2ZWMyIHBvc2l0aW9uOwogIDQ0CWF0
dHJpYnV0ZSBtZWRpdW1wIHZlYzQgY29sb3I7CiAgNDUJYXR0cmlidXRlIGhpZ2hwIHZlYzIgbG9j
YWxDb29yZDsKICA0Ngl2YXJ5aW5nIG1lZGl1bXAgdmVjNCB2Y29sb3JfUzA7CiAgNDcJdmFyeWlu
ZyBoaWdocCB2ZWMyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwogIDQ4CXZvaWQgbWFpbigpIHsK
ICA0OQl2Y29sb3JfUzAgPSBjb2xvcjsKICA1MAlnbF9Qb3NpdGlvbiA9IHZlYzQocG9zaXRpb24s
IDAuMCwgMS4wKTsKICA1MQl7CiAgNTIJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAgPSAodW1hdHJp
eF9TMSAqIHZlYzMobG9jYWxDb29yZCwgMS4wKSkueHk7CiAgNTMJfQogIDU0CWdsX1Bvc2l0aW9u
ID0gdmVjNChnbF9Qb3NpdGlvbi54eSAqIHNrX1JUQWRqdXN0Lnh6ICsgZ2xfUG9zaXRpb24ud3cg
KiBza19SVEFkanVzdC55dywgMC4wLCBnbF9Qb3NpdGlvbi53KTsKICA1NQl9CiAgNTYJCiAgNTcJ
Ly8gRnJhZ21lbnQgR0xTTAogIDU4CSN2ZXJzaW9uIDEwMAogIDU5CQogIDYwCXByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OwogIDYxCXByZWNpc2lvbiBtZWRpdW1wIHNhbXBsZXIyRDsKICA2Mgljb25z
dCBoaWdocCBpbnQga01heExvb3BMaW1pdF9TMV9jMCA9IDI7CiAgNjMJdW5pZm9ybSBoaWdocCB2
ZWM0IHVjbGFtcF9TMV9jMF9jMF9jMDsKICA2NAl1bmlmb3JtIGhpZ2hwIG1hdDMgdW1hdHJpeF9T
MV9jMF9jMDsKICA2NQl1bmlmb3JtIG1lZGl1bXAgdmVjNCB1b2Zmc2V0c0FuZEtlcm5lbF9TMV9j
MFsxNF07CiAgNjYJdW5pZm9ybSBtZWRpdW1wIHZlYzIgdWRpcl9TMV9jMDsKICA2Nwl1bmlmb3Jt
IGhpZ2hwIG1hdDMgdW1hdHJpeF9TMTsKICA2OAl1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNh
bXBsZXJfMF9TMTsKICA2OQl2YXJ5aW5nIG1lZGl1bXAgdmVjNCB2Y29sb3JfUzA7CiAgNzAJdmFy
eWluZyBoaWdocCB2ZWMyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwogIDcxCXZvaWQgbWFpbigp
IHsKICA3MgloaWdocCB2ZWMyIF8yNl90bXBfMV9jb29yZHMgPSB2VHJhbnNmb3JtZWRDb29yZHNf
Ml9TMDsKICA3MwltZWRpdW1wIHZlYzQgXzI3X3N1bSA9IHZlYzQoMC4wKTsKICA3NAlmb3IgKGhp
Z2hwIGludCBfMjhfaSA9IDA7XzI4X2kgPCBrTWF4TG9vcExpbWl0X1MxX2MwOyArK18yOF9pKSB7
CiAgNzUJbWVkaXVtcCB2ZWM0IF8yOV9zID0gdW9mZnNldHNBbmRLZXJuZWxfUzFfYzBbXzI4X2ld
OwogIDc2CWhpZ2hwIHZlYzIgXzMwX2luQ29vcmQgPSAodW1hdHJpeF9TMV9jMF9jMCAqIHZlYzMo
XzI2X3RtcF8xX2Nvb3JkcyArIF8yOV9zLnggKiB1ZGlyX1MxX2MwLCAxLjApKS54eTsKICA3Nwlo
aWdocCB2ZWMyIF8zMV9zdWJzZXRDb29yZDsKICA3OAlfMzFfc3Vic2V0Q29vcmQueCA9IF8zMF9p
bkNvb3JkLng7CiAgNzkJXzMxX3N1YnNldENvb3JkLnkgPSBfMzBfaW5Db29yZC55OwogIDgwCWhp
Z2hwIHZlYzIgXzMyX2NsYW1wZWRDb29yZCA9IGNsYW1wKF8zMV9zdWJzZXRDb29yZCwgdWNsYW1w
X1MxX2MwX2MwX2MwLnh5LCB1Y2xhbXBfUzFfYzBfYzBfYzAuencpOwogIDgxCW1lZGl1bXAgdmVj
NCBfMzNfdGV4dHVyZUNvbG9yID0gdGV4dHVyZTJEKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfMzJf
Y2xhbXBlZENvb3JkLCAtMC40NzUpOwogIDgyCV8yN19zdW0gKz0gXzI5X3MueSAqIF8zM190ZXh0
dXJlQ29sb3I7CiAgODMJaGlnaHAgdmVjMiBfMzRfaW5Db29yZCA9ICh1bWF0cml4X1MxX2MwX2Mw
ICogdmVjMyhfMjZfdG1wXzFfY29vcmRzICsgXzI5X3MueiAqIHVkaXJfUzFfYzAsIDEuMCkpLnh5
OwogIDg0CWhpZ2hwIHZlYzIgXzM1X3N1YnNldENvb3JkOwogIDg1CV8zNV9zdWJzZXRDb29yZC54
ID0gXzM0X2luQ29vcmQueDsKICA4NglfMzVfc3Vic2V0Q29vcmQueSA9IF8zNF9pbkNvb3JkLnk7
CiAgODcJaGlnaHAgdmVjMiBfMzZfY2xhbXBlZENvb3JkID0gY2xhbXAoXzM1X3N1YnNldENvb3Jk
LCB1Y2xhbXBfUzFfYzBfYzBfYzAueHksIHVjbGFtcF9TMV9jMF9jMF9jMC56dyk7CiAgODgJbWVk
aXVtcCB2ZWM0IF8zN190ZXh0dXJlQ29sb3IgPSB0ZXh0dXJlMkQodVRleHR1cmVTYW1wbGVyXzBf
UzEsIF8zNl9jbGFtcGVkQ29vcmQsIC0wLjQ3NSk7CiAgODkJXzI3X3N1bSArPSBfMjlfcy53ICog
XzM3X3RleHR1cmVDb2xvcjsKICA5MAl9CiAgOTEJbWVkaXVtcCB2ZWM0IG91dHB1dF9TMSA9IF8y
N19zdW07CiAgOTIJewogIDkzCWdsX0ZyYWdDb2xvciA9IG91dHB1dF9TMTsKICA5NAl9CiAgOTUJ
fQogIDk2CQogIDk3CQpFcnJvcnM6CmVycm9yOiBFeGNlZWRlZCBtYXggbnIgaW5kaXJlY3QgdGV4
dHVyZSBsb29rdXBzICg1LzQpCgpTaGFkZXIgY29tcGlsYXRpb24gZXJyb3IKLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiAgIDEJLy8gVmVydGV4IFNLU0wKICAgMgl1bmlmb3JtIGZsb2F0NCBza19S
VEFkanVzdDt1bmlmb3JtIGZsb2F0M3gzIHVtYXRyaXhfUzE7aW4gZmxvYXQyIHBvc2l0aW9uO2lu
IGhhbGY0IGNvbG9yO2luIGZsb2F0MiBsb2NhbENvb3JkO291dCBoYWxmNCB2Y29sb3JfUzA7b3V0
IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDt2b2lkIG1haW4oKSB7Ly8gUHJpbWl0aXZl
IFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKICAgMwl2Y29sb3JfUzAg
PSBjb2xvcjtza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7ewogICA0CXZUcmFuc2Zvcm1lZENv
b3Jkc18yX1MwID0gKHVtYXRyaXhfUzEgKiBsb2NhbENvb3JkLnh5MSkueHk7CiAgIDUJfQogICA2
CX0KICAgNwkvLyBGcmFnbWVudCBTS1NMCiAgIDgJY29uc3QgaW50IGtNYXhMb29wTGltaXRfUzFf
YzAgPSA0OwogICA5CXVuaWZvcm0gZmxvYXQ0IHVjbGFtcF9TMV9jMF9jMF9jMDt1bmlmb3JtIGZs
b2F0M3gzIHVtYXRyaXhfUzFfYzBfYzA7dW5pZm9ybSBoYWxmNCB1b2Zmc2V0c0FuZEtlcm5lbF9T
MV9jMFsxNF07dW5pZm9ybSBoYWxmMiB1ZGlyX1MxX2MwO3VuaWZvcm0gZmxvYXQzeDMgdW1hdHJp
eF9TMTtzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CiAgMTAJaW4gaGFsZjQgdmNvbG9y
X1MwO2luIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDtoYWxmNCBUZXh0dXJlRWZmZWN0
X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIHsKICAxMQlmbG9hdDIg
aW5Db29yZCA9IF9jb29yZHM7ZmxvYXQyIHN1YnNldENvb3JkO3N1YnNldENvb3JkLnggPSBpbkNv
b3JkLng7c3Vic2V0Q29vcmQueSA9IGluQ29vcmQueTtmbG9hdDIgY2xhbXBlZENvb3JkO2NsYW1w
ZWRDb29yZCA9IGNsYW1wKHN1YnNldENvb3JkLCB1Y2xhbXBfUzFfYzBfYzBfYzAueHksIHVjbGFt
cF9TMV9jMF9jMF9jMC56dyk7aGFsZjQgdGV4dHVyZUNvbG9yID0gc2FtcGxlKHVUZXh0dXJlU2Ft
cGxlcl8wX1MxLCBjbGFtcGVkQ29vcmQpO3JldHVybiB0ZXh0dXJlQ29sb3I7fQogIDEyCQogIDEz
CWhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRz
KSB7CiAgMTQJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoX2lucHV0LCAoKHVtYXRy
aXhfUzFfYzBfYzApICogX2Nvb3Jkcy54eTEpLnh5KTsKICAxNQl9CiAgMTYJCiAgMTcJaGFsZjQg
cnVudGltZV9zaGFkZXJfUzFfYzAoaGFsZjQgX2lucHV0KSB7CiAgMTgJaGFsZjQgX3RtcF8wX2lu
Q29sb3IgPSBfaW5wdXQ7CiAgMTkJZmxvYXQyIF90bXBfMV9jb29yZHMgPSB2VHJhbnNmb3JtZWRD
b29yZHNfMl9TMDsKICAyMAloYWxmNCBzdW0gPSBoYWxmNCgwLjApOwogIDIxCWZvciAoaW50IGkg
PSAwO2kgPCBrTWF4TG9vcExpbWl0X1MxX2MwOyArK2kpIHsKICAyMgloYWxmNCBzID0gdW9mZnNl
dHNBbmRLZXJuZWxfUzFfYzBbaV07CiAgMjMJc3VtICs9IHMueSAqIE1hdHJpeEVmZmVjdF9TMV9j
MF9jMChfdG1wXzBfaW5Db2xvciwgX3RtcF8xX2Nvb3JkcyArIGZsb2F0MihzLnggKiB1ZGlyX1Mx
X2MwKSk7CiAgMjQJc3VtICs9IHMudyAqIE1hdHJpeEVmZmVjdF9TMV9jMF9jMChfdG1wXzBfaW5D
b2xvciwgX3RtcF8xX2Nvb3JkcyArIGZsb2F0MihzLnogKiB1ZGlyX1MxX2MwKSk7CiAgMjUJfQog
IDI2CXJldHVybiBoYWxmNChzdW0pOwogIDI3CX0KICAyOAkKICAyOQloYWxmNCBNYXRyaXhFZmZl
Y3RfUzEoaGFsZjQgX2lucHV0KSB7CiAgMzAJcmV0dXJuIHJ1bnRpbWVfc2hhZGVyX1MxX2MwKF9p
bnB1dCk7CiAgMzEJfQogIDMyCQogIDMzCXZvaWQgbWFpbigpIHsvLyBTdGFnZSAwLCBRdWFkUGVy
RWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKICAzNAloYWxmNCBvdXRwdXRDb2xvcl9TMDtvdXRwdXRD
b2xvcl9TMCA9IHZjb2xvcl9TMDtjb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0
KDEpO2hhbGY0IG91dHB1dF9TMTtvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29s
b3JfUzApO3sgLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCiAgMzUJc2tfRnJhZ0NvbG9y
ID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7fX0KICAzNgkvLyBWZXJ0ZXggR0xTTAog
IDM3CSN2ZXJzaW9uIDEwMAogIDM4CQogIDM5CXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwogIDQw
CXByZWNpc2lvbiBtZWRpdW1wIHNhbXBsZXIyRDsKICA0MQl1bmlmb3JtIGhpZ2hwIHZlYzQgc2tf
UlRBZGp1c3Q7CiAgNDIJdW5pZm9ybSBoaWdocCBtYXQzIHVtYXRyaXhfUzE7CiAgNDMJYXR0cmli
dXRlIGhpZ2hwIHZlYzIgcG9zaXRpb247CiAgNDQJYXR0cmlidXRlIG1lZGl1bXAgdmVjNCBjb2xv
cjsKICA0NQlhdHRyaWJ1dGUgaGlnaHAgdmVjMiBsb2NhbENvb3JkOwogIDQ2CXZhcnlpbmcgbWVk
aXVtcCB2ZWM0IHZjb2xvcl9TMDsKICA0Nwl2YXJ5aW5nIGhpZ2hwIHZlYzIgdlRyYW5zZm9ybWVk
Q29vcmRzXzJfUzA7CiAgNDgJdm9pZCBtYWluKCkgewogIDQ5CXZjb2xvcl9TMCA9IGNvbG9yOwog
IDUwCWdsX1Bvc2l0aW9uID0gdmVjNChwb3NpdGlvbiwgMC4wLCAxLjApOwogIDUxCXsKICA1Mgl2
VHJhbnNmb3JtZWRDb29yZHNfMl9TMCA9ICh1bWF0cml4X1MxICogdmVjMyhsb2NhbENvb3JkLCAx
LjApKS54eTsKICA1Mwl9CiAgNTQJZ2xfUG9zaXRpb24gPSB2ZWM0KGdsX1Bvc2l0aW9uLnh5ICog
c2tfUlRBZGp1c3QueHogKyBnbF9Qb3NpdGlvbi53dyAqIHNrX1JUQWRqdXN0Lnl3LCAwLjAsIGds
X1Bvc2l0aW9uLncpOwogIDU1CX0KICA1NgkKICA1NwkvLyBGcmFnbWVudCBHTFNMCiAgNTgJI3Zl
cnNpb24gMTAwCiAgNTkJCiAgNjAJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CiAgNjEJcHJlY2lz
aW9uIG1lZGl1bXAgc2FtcGxlcjJEOwogIDYyCWNvbnN0IGhpZ2hwIGludCBrTWF4TG9vcExpbWl0
X1MxX2MwID0gNDsKICA2Mwl1bmlmb3JtIGhpZ2hwIHZlYzQgdWNsYW1wX1MxX2MwX2MwX2MwOwog
IDY0CXVuaWZvcm0gaGlnaHAgbWF0MyB1bWF0cml4X1MxX2MwX2MwOwogIDY1CXVuaWZvcm0gbWVk
aXVtcCB2ZWM0IHVvZmZzZXRzQW5kS2VybmVsX1MxX2MwWzE0XTsKICA2Ngl1bmlmb3JtIG1lZGl1
bXAgdmVjMiB1ZGlyX1MxX2MwOwogIDY3CXVuaWZvcm0gaGlnaHAgbWF0MyB1bWF0cml4X1MxOwog
IDY4CXVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwogIDY5CXZhcnlpbmcg
bWVkaXVtcCB2ZWM0IHZjb2xvcl9TMDsKICA3MAl2YXJ5aW5nIGhpZ2hwIHZlYzIgdlRyYW5zZm9y
bWVkQ29vcmRzXzJfUzA7CiAgNzEJdm9pZCBtYWluKCkgewogIDcyCWhpZ2hwIHZlYzIgXzI2X3Rt
cF8xX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwogIDczCW1lZGl1bXAgdmVjNCBf
Mjdfc3VtID0gdmVjNCgwLjApOwogIDc0CWZvciAoaGlnaHAgaW50IF8yOF9pID0gMDtfMjhfaSA8
IGtNYXhMb29wTGltaXRfUzFfYzA7ICsrXzI4X2kpIHsKICA3NQltZWRpdW1wIHZlYzQgXzI5X3Mg
PSB1b2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtfMjhfaV07CiAgNzYJaGlnaHAgdmVjMiBfMzBfaW5D
b29yZCA9ICh1bWF0cml4X1MxX2MwX2MwICogdmVjMyhfMjZfdG1wXzFfY29vcmRzICsgXzI5X3Mu
eCAqIHVkaXJfUzFfYzAsIDEuMCkpLnh5OwogIDc3CWhpZ2hwIHZlYzIgXzMxX3N1YnNldENvb3Jk
OwogIDc4CV8zMV9zdWJzZXRDb29yZC54ID0gXzMwX2luQ29vcmQueDsKICA3OQlfMzFfc3Vic2V0
Q29vcmQueSA9IF8zMF9pbkNvb3JkLnk7CiAgODAJaGlnaHAgdmVjMiBfMzJfY2xhbXBlZENvb3Jk
ID0gY2xhbXAoXzMxX3N1YnNldENvb3JkLCB1Y2xhbXBfUzFfYzBfYzBfYzAueHksIHVjbGFtcF9T
MV9jMF9jMF9jMC56dyk7CiAgODEJbWVkaXVtcCB2ZWM0IF8zM190ZXh0dXJlQ29sb3IgPSB0ZXh0
dXJlMkQodVRleHR1cmVTYW1wbGVyXzBfUzEsIF8zMl9jbGFtcGVkQ29vcmQsIC0wLjQ3NSk7CiAg
ODIJXzI3X3N1bSArPSBfMjlfcy55ICogXzMzX3RleHR1cmVDb2xvcjsKICA4MwloaWdocCB2ZWMy
IF8zNF9pbkNvb3JkID0gKHVtYXRyaXhfUzFfYzBfYzAgKiB2ZWMzKF8yNl90bXBfMV9jb29yZHMg
KyBfMjlfcy56ICogdWRpcl9TMV9jMCwgMS4wKSkueHk7CiAgODQJaGlnaHAgdmVjMiBfMzVfc3Vi
c2V0Q29vcmQ7CiAgODUJXzM1X3N1YnNldENvb3JkLnggPSBfMzRfaW5Db29yZC54OwogIDg2CV8z
NV9zdWJzZXRDb29yZC55ID0gXzM0X2luQ29vcmQueTsKICA4NwloaWdocCB2ZWMyIF8zNl9jbGFt
cGVkQ29vcmQgPSBjbGFtcChfMzVfc3Vic2V0Q29vcmQsIHVjbGFtcF9TMV9jMF9jMF9jMC54eSwg
dWNsYW1wX1MxX2MwX2MwX2MwLnp3KTsKICA4OAltZWRpdW1wIHZlYzQgXzM3X3RleHR1cmVDb2xv
ciA9IHRleHR1cmUyRCh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgXzM2X2NsYW1wZWRDb29yZCwgLTAu
NDc1KTsKICA4OQlfMjdfc3VtICs9IF8yOV9zLncgKiBfMzdfdGV4dHVyZUNvbG9yOwogIDkwCX0K
ICA5MQltZWRpdW1wIHZlYzQgb3V0cHV0X1MxID0gXzI3X3N1bTsKICA5Mgl7CiAgOTMJZ2xfRnJh
Z0NvbG9yID0gb3V0cHV0X1MxOwogIDk0CX0KICA5NQl9CiAgOTYJCiAgOTcJCkVycm9yczoKZXJy
b3I6IEV4Y2VlZGVkIG1heCBuciBpbmRpcmVjdCB0ZXh0dXJlIGxvb2t1cHMgKDkvNCkKClNoYWRl
ciBjb21waWxhdGlvbiBlcnJvcgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgMQkvLyBWZXJ0
ZXggU0tTTAogICAyCXVuaWZvcm0gZmxvYXQ0IHNrX1JUQWRqdXN0O3VuaWZvcm0gZmxvYXQzeDMg
dW1hdHJpeF9TMTtpbiBmbG9hdDIgcG9zaXRpb247aW4gaGFsZjQgY29sb3I7aW4gZmxvYXQyIGxv
Y2FsQ29vcmQ7b3V0IGhhbGY0IHZjb2xvcl9TMDtvdXQgZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jk
c18yX1MwO3ZvaWQgbWFpbigpIHsvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFH
ZW9tZXRyeVByb2Nlc3NvcgogICAzCXZjb2xvcl9TMCA9IGNvbG9yO3NrX1Bvc2l0aW9uID0gcG9z
aXRpb24ueHkwMTt7CiAgIDQJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAgPSAodW1hdHJpeF9TMSAq
IGxvY2FsQ29vcmQueHkxKS54eTsKICAgNQl9CiAgIDYJfQogICA3CS8vIEZyYWdtZW50IFNLU0wK
ICAgOAljb25zdCBpbnQga01heExvb3BMaW1pdF9TMV9jMCA9IDQ7CiAgIDkJdW5pZm9ybSBmbG9h
dDQgdWNsYW1wX1MxX2MwX2MwX2MwO3VuaWZvcm0gZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDt1
bmlmb3JtIGhhbGY0IHVvZmZzZXRzQW5kS2VybmVsX1MxX2MwWzE0XTt1bmlmb3JtIGhhbGYyIHVk
aXJfUzFfYzA7dW5pZm9ybSBmbG9hdDN4MyB1bWF0cml4X1MxO3NhbXBsZXIyRCB1VGV4dHVyZVNh
bXBsZXJfMF9TMTsKICAxMAlpbiBoYWxmNCB2Y29sb3JfUzA7aW4gZmxvYXQyIHZUcmFuc2Zvcm1l
ZENvb3Jkc18yX1MwO2hhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0
LCBmbG9hdDIgX2Nvb3JkcykgewogIDExCWZsb2F0MiBpbkNvb3JkID0gX2Nvb3JkcztmbG9hdDIg
c3Vic2V0Q29vcmQ7c3Vic2V0Q29vcmQueCA9IGluQ29vcmQueDtzdWJzZXRDb29yZC55ID0gaW5D
b29yZC55O2Zsb2F0MiBjbGFtcGVkQ29vcmQ7Y2xhbXBlZENvb3JkID0gY2xhbXAoc3Vic2V0Q29v
cmQsIHVjbGFtcF9TMV9jMF9jMF9jMC54eSwgdWNsYW1wX1MxX2MwX2MwX2MwLnp3KTtoYWxmNCB0
ZXh0dXJlQ29sb3IgPSBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIGNsYW1wZWRDb29yZCk7
cmV0dXJuIHRleHR1cmVDb2xvcjt9CiAgMTIJCiAgMTMJaGFsZjQgTWF0cml4RWZmZWN0X1MxX2Mw
X2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIHsKICAxNAlyZXR1cm4gVGV4dHVyZUVm
ZmVjdF9TMV9jMF9jMF9jMChfaW5wdXQsICgodW1hdHJpeF9TMV9jMF9jMCkgKiBfY29vcmRzLnh5
MSkueHkpOwogIDE1CX0KICAxNgkKICAxNwloYWxmNCBydW50aW1lX3NoYWRlcl9TMV9jMChoYWxm
NCBfaW5wdXQpIHsKICAxOAloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKICAxOQlmbG9h
dDIgX3RtcF8xX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwogIDIwCWhhbGY0IHN1
bSA9IGhhbGY0KDAuMCk7CiAgMjEJZm9yIChpbnQgaSA9IDA7aSA8IGtNYXhMb29wTGltaXRfUzFf
YzA7ICsraSkgewogIDIyCWhhbGY0IHMgPSB1b2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtpXTsKICAy
MwlzdW0gKz0gcy55ICogTWF0cml4RWZmZWN0X1MxX2MwX2MwKF90bXBfMF9pbkNvbG9yLCBfdG1w
XzFfY29vcmRzICsgZmxvYXQyKHMueCAqIHVkaXJfUzFfYzApKTsKICAyNAlzdW0gKz0gcy53ICog
TWF0cml4RWZmZWN0X1MxX2MwX2MwKF90bXBfMF9pbkNvbG9yLCBfdG1wXzFfY29vcmRzICsgZmxv
YXQyKHMueiAqIHVkaXJfUzFfYzApKTsKICAyNQl9CiAgMjYJcmV0dXJuIGhhbGY0KHN1bSk7CiAg
MjcJfQogIDI4CQogIDI5CWhhbGY0IE1hdHJpeEVmZmVjdF9TMShoYWxmNCBfaW5wdXQpIHsKICAz
MAlyZXR1cm4gcnVudGltZV9zaGFkZXJfUzFfYzAoX2lucHV0KTsKICAzMQl9CiAgMzIJCiAgMzMJ
dm9pZCBtYWluKCkgey8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3Nvcgog
IDM0CWhhbGY0IG91dHB1dENvbG9yX1MwO291dHB1dENvbG9yX1MwID0gdmNvbG9yX1MwO2NvbnN0
IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7aGFsZjQgb3V0cHV0X1MxO291dHB1
dF9TMSA9IE1hdHJpeEVmZmVjdF9TMShvdXRwdXRDb2xvcl9TMCk7eyAvLyBYZmVyIFByb2Nlc3Nv
cjogUG9ydGVyIER1ZmYKICAzNQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3Zl
cmFnZV9TMDt9fQogIDM2CS8vIFZlcnRleCBHTFNMCiAgMzcJI3ZlcnNpb24gMTAwCiAgMzgJCiAg
MzkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CiAgNDAJcHJlY2lzaW9uIG1lZGl1bXAgc2FtcGxl
cjJEOwogIDQxCXVuaWZvcm0gaGlnaHAgdmVjNCBza19SVEFkanVzdDsKICA0Mgl1bmlmb3JtIGhp
Z2hwIG1hdDMgdW1hdHJpeF9TMTsKICA0MwlhdHRyaWJ1dGUgaGlnaHAgdmVjMiBwb3NpdGlvbjsK
ICA0NAlhdHRyaWJ1dGUgbWVkaXVtcCB2ZWM0IGNvbG9yOwogIDQ1CWF0dHJpYnV0ZSBoaWdocCB2
ZWMyIGxvY2FsQ29vcmQ7CiAgNDYJdmFyeWluZyBtZWRpdW1wIHZlYzQgdmNvbG9yX1MwOwogIDQ3
CXZhcnlpbmcgaGlnaHAgdmVjMiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKICA0OAl2b2lkIG1h
aW4oKSB7CiAgNDkJdmNvbG9yX1MwID0gY29sb3I7CiAgNTAJZ2xfUG9zaXRpb24gPSB2ZWM0KHBv
c2l0aW9uLCAwLjAsIDEuMCk7CiAgNTEJewogIDUyCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0g
KHVtYXRyaXhfUzEgKiB2ZWMzKGxvY2FsQ29vcmQsIDEuMCkpLnh5OwogIDUzCX0KICA1NAlnbF9Q
b3NpdGlvbiA9IHZlYzQoZ2xfUG9zaXRpb24ueHkgKiBza19SVEFkanVzdC54eiArIGdsX1Bvc2l0
aW9uLnd3ICogc2tfUlRBZGp1c3QueXcsIDAuMCwgZ2xfUG9zaXRpb24udyk7CiAgNTUJfQogIDU2
CQogIDU3CS8vIEZyYWdtZW50IEdMU0wKICA1OAkjdmVyc2lvbiAxMDAKICA1OQkKICA2MAlwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKICA2MQlwcmVjaXNpb24gbWVkaXVtcCBzYW1wbGVyMkQ7CiAg
NjIJY29uc3QgaGlnaHAgaW50IGtNYXhMb29wTGltaXRfUzFfYzAgPSA0OwogIDYzCXVuaWZvcm0g
aGlnaHAgdmVjNCB1Y2xhbXBfUzFfYzBfYzBfYzA7CiAgNjQJdW5pZm9ybSBoaWdocCBtYXQzIHVt
YXRyaXhfUzFfYzBfYzA7CiAgNjUJdW5pZm9ybSBtZWRpdW1wIHZlYzQgdW9mZnNldHNBbmRLZXJu
ZWxfUzFfYzBbMTRdOwogIDY2CXVuaWZvcm0gbWVkaXVtcCB2ZWMyIHVkaXJfUzFfYzA7CiAgNjcJ
dW5pZm9ybSBoaWdocCBtYXQzIHVtYXRyaXhfUzE7CiAgNjgJdW5pZm9ybSBzYW1wbGVyMkQgdVRl
eHR1cmVTYW1wbGVyXzBfUzE7CiAgNjkJdmFyeWluZyBtZWRpdW1wIHZlYzQgdmNvbG9yX1MwOwog
IDcwCXZhcnlpbmcgaGlnaHAgdmVjMiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKICA3MQl2b2lk
IG1haW4oKSB7CiAgNzIJaGlnaHAgdmVjMiBfMjZfdG1wXzFfY29vcmRzID0gdlRyYW5zZm9ybWVk
Q29vcmRzXzJfUzA7CiAgNzMJbWVkaXVtcCB2ZWM0IF8yN19zdW0gPSB2ZWM0KDAuMCk7CiAgNzQJ
Zm9yIChoaWdocCBpbnQgXzI4X2kgPSAwO18yOF9pIDwga01heExvb3BMaW1pdF9TMV9jMDsgKytf
MjhfaSkgewogIDc1CW1lZGl1bXAgdmVjNCBfMjlfcyA9IHVvZmZzZXRzQW5kS2VybmVsX1MxX2Mw
W18yOF9pXTsKICA3NgloaWdocCB2ZWMyIF8zMF9pbkNvb3JkID0gKHVtYXRyaXhfUzFfYzBfYzAg
KiB2ZWMzKF8yNl90bXBfMV9jb29yZHMgKyBfMjlfcy54ICogdWRpcl9TMV9jMCwgMS4wKSkueHk7
CiAgNzcJaGlnaHAgdmVjMiBfMzFfc3Vic2V0Q29vcmQ7CiAgNzgJXzMxX3N1YnNldENvb3JkLngg
PSBfMzBfaW5Db29yZC54OwogIDc5CV8zMV9zdWJzZXRDb29yZC55ID0gXzMwX2luQ29vcmQueTsK
ICA4MAloaWdocCB2ZWMyIF8zMl9jbGFtcGVkQ29vcmQgPSBjbGFtcChfMzFfc3Vic2V0Q29vcmQs
IHVjbGFtcF9TMV9jMF9jMF9jMC54eSwgdWNsYW1wX1MxX2MwX2MwX2MwLnp3KTsKICA4MQltZWRp
dW1wIHZlYzQgXzMzX3RleHR1cmVDb2xvciA9IHRleHR1cmUyRCh1VGV4dHVyZVNhbXBsZXJfMF9T
MSwgXzMyX2NsYW1wZWRDb29yZCwgLTAuNDc1KTsKICA4MglfMjdfc3VtICs9IF8yOV9zLnkgKiBf
MzNfdGV4dHVyZUNvbG9yOwogIDgzCWhpZ2hwIHZlYzIgXzM0X2luQ29vcmQgPSAodW1hdHJpeF9T
MV9jMF9jMCAqIHZlYzMoXzI2X3RtcF8xX2Nvb3JkcyArIF8yOV9zLnogKiB1ZGlyX1MxX2MwLCAx
LjApKS54eTsKICA4NAloaWdocCB2ZWMyIF8zNV9zdWJzZXRDb29yZDsKICA4NQlfMzVfc3Vic2V0
Q29vcmQueCA9IF8zNF9pbkNvb3JkLng7CiAgODYJXzM1X3N1YnNldENvb3JkLnkgPSBfMzRfaW5D
b29yZC55OwogIDg3CWhpZ2hwIHZlYzIgXzM2X2NsYW1wZWRDb29yZCA9IGNsYW1wKF8zNV9zdWJz
ZXRDb29yZCwgdWNsYW1wX1MxX2MwX2MwX2MwLnh5LCB1Y2xhbXBfUzFfYzBfYzBfYzAuencpOwog
IDg4CW1lZGl1bXAgdmVjNCBfMzdfdGV4dHVyZUNvbG9yID0gdGV4dHVyZTJEKHVUZXh0dXJlU2Ft
cGxlcl8wX1MxLCBfMzZfY2xhbXBlZENvb3JkLCAtMC40NzUpOwogIDg5CV8yN19zdW0gKz0gXzI5
X3MudyAqIF8zN190ZXh0dXJlQ29sb3I7CiAgOTAJfQogIDkxCW1lZGl1bXAgdmVjNCBvdXRwdXRf
UzEgPSBfMjdfc3VtOwogIDkyCXsKICA5MwlnbF9GcmFnQ29sb3IgPSBvdXRwdXRfUzE7CiAgOTQJ
fQogIDk1CX0KICA5NgkKICA5NwkKRXJyb3JzOgplcnJvcjogRXhjZWVkZWQgbWF4IG5yIGluZGly
ZWN0IHRleHR1cmUgbG9va3VwcyAoOS80KQoKRmFpbGVkIHRvIGNyZWF0ZSBETUEtQlVGIHRleHR1
cmUgb2Ygc2l6ZSAxMDI0eDY5MzogVW5zdXBwb3J0ZWQgZG1hYnVmIGZvcm1hdDogWFIyNDoweGZm
ZmZmZmZmZmZmZmZmCkZhaWxlZCB0byBjcmVhdGUgRE1BLUJVRiB0ZXh0dXJlIG9mIHNpemUgMTAy
NHg2OTM6IFVuc3VwcG9ydGVkIGRtYWJ1ZiBmb3JtYXQ6IFhSMjQ6MHhmZmZmZmZmZmZmZmZmZgpG
YWlsZWQgdG8gY3JlYXRlIERNQS1CVUYgdGV4dHVyZSBvZiBzaXplIDEwMjR4NjkzOiBVbnN1cHBv
cnRlZCBkbWFidWYgZm9ybWF0OiBYUjI0OjB4ZmZmZmZmZmZmZmZmZmYKU2hhZGVyIGNvbXBpbGF0
aW9uIGVycm9yCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAxCS8vIFZlcnRleCBTS1NMCiAg
IDIJdW5pZm9ybSBmbG9hdDQgc2tfUlRBZGp1c3Q7dW5pZm9ybSBmbG9hdDN4MyB1bWF0cml4X1Mx
O2luIGZsb2F0MiBwb3NpdGlvbjtpbiBoYWxmNCBjb2xvcjtpbiBmbG9hdDIgbG9jYWxDb29yZDtv
dXQgaGFsZjQgdmNvbG9yX1MwO291dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7dm9p
ZCBtYWluKCkgey8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJv
Y2Vzc29yCiAgIDMJdmNvbG9yX1MwID0gY29sb3I7c2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAx
O3sKICAgNAl2VHJhbnNmb3JtZWRDb29yZHNfMl9TMCA9ICh1bWF0cml4X1MxICogbG9jYWxDb29y
ZC54eTEpLnh5OwogICA1CX0KICAgNgl9CiAgIDcJLy8gRnJhZ21lbnQgU0tTTAogICA4CWNvbnN0
IGludCBrTWF4TG9vcExpbWl0X1MxX2MwID0gMjsKICAgOQl1bmlmb3JtIGZsb2F0NCB1Y2xhbXBf
UzFfYzBfYzBfYzA7dW5pZm9ybSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwO3VuaWZvcm0gaGFs
ZjQgdW9mZnNldHNBbmRLZXJuZWxfUzFfYzBbMTRdO3VuaWZvcm0gaGFsZjIgdWRpcl9TMV9jMDt1
bmlmb3JtIGZsb2F0M3gzIHVtYXRyaXhfUzE7c2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1Mx
OwogIDEwCWluIGhhbGY0IHZjb2xvcl9TMDtpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJf
UzA7aGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBf
Y29vcmRzKSB7CiAgMTEJZmxvYXQyIGluQ29vcmQgPSBfY29vcmRzO2Zsb2F0MiBzdWJzZXRDb29y
ZDtzdWJzZXRDb29yZC54ID0gaW5Db29yZC54O3N1YnNldENvb3JkLnkgPSBpbkNvb3JkLnk7Zmxv
YXQyIGNsYW1wZWRDb29yZDtjbGFtcGVkQ29vcmQgPSBjbGFtcChzdWJzZXRDb29yZCwgdWNsYW1w
X1MxX2MwX2MwX2MwLnh5LCB1Y2xhbXBfUzFfYzBfYzBfYzAuencpO2hhbGY0IHRleHR1cmVDb2xv
ciA9IHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgY2xhbXBlZENvb3JkKTtyZXR1cm4gdGV4
dHVyZUNvbG9yO30KICAxMgkKICAxMwloYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoaGFsZjQg
X2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgewogIDE0CXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2Mw
X2MwX2MwKF9pbnB1dCwgKCh1bWF0cml4X1MxX2MwX2MwKSAqIF9jb29yZHMueHkxKS54eSk7CiAg
MTUJfQogIDE2CQogIDE3CWhhbGY0IHJ1bnRpbWVfc2hhZGVyX1MxX2MwKGhhbGY0IF9pbnB1dCkg
ewogIDE4CWhhbGY0IF90bXBfMF9pbkNvbG9yID0gX2lucHV0OwogIDE5CWZsb2F0MiBfdG1wXzFf
Y29vcmRzID0gdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CiAgMjAJaGFsZjQgc3VtID0gaGFsZjQo
MC4wKTsKICAyMQlmb3IgKGludCBpID0gMDtpIDwga01heExvb3BMaW1pdF9TMV9jMDsgKytpKSB7
CiAgMjIJaGFsZjQgcyA9IHVvZmZzZXRzQW5kS2VybmVsX1MxX2MwW2ldOwogIDIzCXN1bSArPSBz
LnkgKiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX3RtcF8wX2luQ29sb3IsIF90bXBfMV9jb29yZHMg
KyBmbG9hdDIocy54ICogdWRpcl9TMV9jMCkpOwogIDI0CXN1bSArPSBzLncgKiBNYXRyaXhFZmZl
Y3RfUzFfYzBfYzAoX3RtcF8wX2luQ29sb3IsIF90bXBfMV9jb29yZHMgKyBmbG9hdDIocy56ICog
dWRpcl9TMV9jMCkpOwogIDI1CX0KICAyNglyZXR1cm4gaGFsZjQoc3VtKTsKICAyNwl9CiAgMjgJ
CiAgMjkJaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgewogIDMwCXJldHVybiBy
dW50aW1lX3NoYWRlcl9TMV9jMChfaW5wdXQpOwogIDMxCX0KICAzMgkKICAzMwl2b2lkIG1haW4o
KSB7Ly8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCiAgMzQJaGFsZjQg
b3V0cHV0Q29sb3JfUzA7b3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7Y29uc3QgaGFsZjQgb3V0
cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTtoYWxmNCBvdXRwdXRfUzE7b3V0cHV0X1MxID0gTWF0
cml4RWZmZWN0X1MxKG91dHB1dENvbG9yX1MwKTt7IC8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIg
RHVmZgogIDM1CXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwO319
CiAgMzYJLy8gVmVydGV4IEdMU0wKICAzNwkjdmVyc2lvbiAxMDAKICAzOAkKICAzOQlwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKICA0MAlwcmVjaXNpb24gbWVkaXVtcCBzYW1wbGVyMkQ7CiAgNDEJ
dW5pZm9ybSBoaWdocCB2ZWM0IHNrX1JUQWRqdXN0OwogIDQyCXVuaWZvcm0gaGlnaHAgbWF0MyB1
bWF0cml4X1MxOwogIDQzCWF0dHJpYnV0ZSBoaWdocCB2ZWMyIHBvc2l0aW9uOwogIDQ0CWF0dHJp
YnV0ZSBtZWRpdW1wIHZlYzQgY29sb3I7CiAgNDUJYXR0cmlidXRlIGhpZ2hwIHZlYzIgbG9jYWxD
b29yZDsKICA0Ngl2YXJ5aW5nIG1lZGl1bXAgdmVjNCB2Y29sb3JfUzA7CiAgNDcJdmFyeWluZyBo
aWdocCB2ZWMyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwogIDQ4CXZvaWQgbWFpbigpIHsKICA0
OQl2Y29sb3JfUzAgPSBjb2xvcjsKICA1MAlnbF9Qb3NpdGlvbiA9IHZlYzQocG9zaXRpb24sIDAu
MCwgMS4wKTsKICA1MQl7CiAgNTIJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAgPSAodW1hdHJpeF9T
MSAqIHZlYzMobG9jYWxDb29yZCwgMS4wKSkueHk7CiAgNTMJfQogIDU0CWdsX1Bvc2l0aW9uID0g
dmVjNChnbF9Qb3NpdGlvbi54eSAqIHNrX1JUQWRqdXN0Lnh6ICsgZ2xfUG9zaXRpb24ud3cgKiBz
a19SVEFkanVzdC55dywgMC4wLCBnbF9Qb3NpdGlvbi53KTsKICA1NQl9CiAgNTYJCiAgNTcJLy8g
RnJhZ21lbnQgR0xTTAogIDU4CSN2ZXJzaW9uIDEwMAogIDU5CQogIDYwCXByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OwogIDYxCXByZWNpc2lvbiBtZWRpdW1wIHNhbXBsZXIyRDsKICA2Mgljb25zdCBo
aWdocCBpbnQga01heExvb3BMaW1pdF9TMV9jMCA9IDI7CiAgNjMJdW5pZm9ybSBoaWdocCB2ZWM0
IHVjbGFtcF9TMV9jMF9jMF9jMDsKICA2NAl1bmlmb3JtIGhpZ2hwIG1hdDMgdW1hdHJpeF9TMV9j
MF9jMDsKICA2NQl1bmlmb3JtIG1lZGl1bXAgdmVjNCB1b2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFsx
NF07CiAgNjYJdW5pZm9ybSBtZWRpdW1wIHZlYzIgdWRpcl9TMV9jMDsKICA2Nwl1bmlmb3JtIGhp
Z2hwIG1hdDMgdW1hdHJpeF9TMTsKICA2OAl1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBs
ZXJfMF9TMTsKICA2OQl2YXJ5aW5nIG1lZGl1bXAgdmVjNCB2Y29sb3JfUzA7CiAgNzAJdmFyeWlu
ZyBoaWdocCB2ZWMyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwogIDcxCXZvaWQgbWFpbigpIHsK
ICA3MgloaWdocCB2ZWMyIF8yNl90bXBfMV9jb29yZHMgPSB2VHJhbnNmb3JtZWRDb29yZHNfMl9T
MDsKICA3MwltZWRpdW1wIHZlYzQgXzI3X3N1bSA9IHZlYzQoMC4wKTsKICA3NAlmb3IgKGhpZ2hw
IGludCBfMjhfaSA9IDA7XzI4X2kgPCBrTWF4TG9vcExpbWl0X1MxX2MwOyArK18yOF9pKSB7CiAg
NzUJbWVkaXVtcCB2ZWM0IF8yOV9zID0gdW9mZnNldHNBbmRLZXJuZWxfUzFfYzBbXzI4X2ldOwog
IDc2CWhpZ2hwIHZlYzIgXzMwX2luQ29vcmQgPSAodW1hdHJpeF9TMV9jMF9jMCAqIHZlYzMoXzI2
X3RtcF8xX2Nvb3JkcyArIF8yOV9zLnggKiB1ZGlyX1MxX2MwLCAxLjApKS54eTsKICA3NwloaWdo
cCB2ZWMyIF8zMV9zdWJzZXRDb29yZDsKICA3OAlfMzFfc3Vic2V0Q29vcmQueCA9IF8zMF9pbkNv
b3JkLng7CiAgNzkJXzMxX3N1YnNldENvb3JkLnkgPSBfMzBfaW5Db29yZC55OwogIDgwCWhpZ2hw
IHZlYzIgXzMyX2NsYW1wZWRDb29yZCA9IGNsYW1wKF8zMV9zdWJzZXRDb29yZCwgdWNsYW1wX1Mx
X2MwX2MwX2MwLnh5LCB1Y2xhbXBfUzFfYzBfYzBfYzAuencpOwogIDgxCW1lZGl1bXAgdmVjNCBf
MzNfdGV4dHVyZUNvbG9yID0gdGV4dHVyZTJEKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfMzJfY2xh
bXBlZENvb3JkLCAtMC40NzUpOwogIDgyCV8yN19zdW0gKz0gXzI5X3MueSAqIF8zM190ZXh0dXJl
Q29sb3I7CiAgODMJaGlnaHAgdmVjMiBfMzRfaW5Db29yZCA9ICh1bWF0cml4X1MxX2MwX2MwICog
dmVjMyhfMjZfdG1wXzFfY29vcmRzICsgXzI5X3MueiAqIHVkaXJfUzFfYzAsIDEuMCkpLnh5Owog
IDg0CWhpZ2hwIHZlYzIgXzM1X3N1YnNldENvb3JkOwogIDg1CV8zNV9zdWJzZXRDb29yZC54ID0g
XzM0X2luQ29vcmQueDsKICA4NglfMzVfc3Vic2V0Q29vcmQueSA9IF8zNF9pbkNvb3JkLnk7CiAg
ODcJaGlnaHAgdmVjMiBfMzZfY2xhbXBlZENvb3JkID0gY2xhbXAoXzM1X3N1YnNldENvb3JkLCB1
Y2xhbXBfUzFfYzBfYzBfYzAueHksIHVjbGFtcF9TMV9jMF9jMF9jMC56dyk7CiAgODgJbWVkaXVt
cCB2ZWM0IF8zN190ZXh0dXJlQ29sb3IgPSB0ZXh0dXJlMkQodVRleHR1cmVTYW1wbGVyXzBfUzEs
IF8zNl9jbGFtcGVkQ29vcmQsIC0wLjQ3NSk7CiAgODkJXzI3X3N1bSArPSBfMjlfcy53ICogXzM3
X3RleHR1cmVDb2xvcjsKICA5MAl9CiAgOTEJbWVkaXVtcCB2ZWM0IG91dHB1dF9TMSA9IF8yN19z
dW07CiAgOTIJewogIDkzCWdsX0ZyYWdDb2xvciA9IG91dHB1dF9TMTsKICA5NAl9CiAgOTUJfQog
IDk2CQogIDk3CQpFcnJvcnM6CmVycm9yOiBFeGNlZWRlZCBtYXggbnIgaW5kaXJlY3QgdGV4dHVy
ZSBsb29rdXBzICg1LzQpCgpGYWlsZWQgdG8gY3JlYXRlIERNQS1CVUYgdGV4dHVyZSBvZiBzaXpl
IDEwMjR4NjkzOiBVbnN1cHBvcnRlZCBkbWFidWYgZm9ybWF0OiBYUjI0OjB4ZmZmZmZmZmZmZmZm
ZmYKU2hhZGVyIGNvbXBpbGF0aW9uIGVycm9yCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAx
CS8vIFZlcnRleCBTS1NMCiAgIDIJdW5pZm9ybSBmbG9hdDQgc2tfUlRBZGp1c3Q7dW5pZm9ybSBm
bG9hdDN4MyB1bWF0cml4X1MxO2luIGZsb2F0MiBwb3NpdGlvbjtpbiBoYWxmNCBjb2xvcjtpbiBm
bG9hdDIgbG9jYWxDb29yZDtvdXQgaGFsZjQgdmNvbG9yX1MwO291dCBmbG9hdDIgdlRyYW5zZm9y
bWVkQ29vcmRzXzJfUzA7dm9pZCBtYWluKCkgey8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBl
ckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCiAgIDMJdmNvbG9yX1MwID0gY29sb3I7c2tfUG9zaXRp
b24gPSBwb3NpdGlvbi54eTAxO3sKICAgNAl2VHJhbnNmb3JtZWRDb29yZHNfMl9TMCA9ICh1bWF0
cml4X1MxICogbG9jYWxDb29yZC54eTEpLnh5OwogICA1CX0KICAgNgl9CiAgIDcJLy8gRnJhZ21l
bnQgU0tTTAogICA4CWNvbnN0IGludCBrTWF4TG9vcExpbWl0X1MxX2MwID0gMjsKICAgOQl1bmlm
b3JtIGZsb2F0NCB1Y2xhbXBfUzFfYzBfYzBfYzA7dW5pZm9ybSBmbG9hdDN4MyB1bWF0cml4X1Mx
X2MwX2MwO3VuaWZvcm0gaGFsZjQgdW9mZnNldHNBbmRLZXJuZWxfUzFfYzBbMTRdO3VuaWZvcm0g
aGFsZjIgdWRpcl9TMV9jMDt1bmlmb3JtIGZsb2F0M3gzIHVtYXRyaXhfUzE7c2FtcGxlcjJEIHVU
ZXh0dXJlU2FtcGxlcl8wX1MxOwogIDEwCWluIGhhbGY0IHZjb2xvcl9TMDtpbiBmbG9hdDIgdlRy
YW5zZm9ybWVkQ29vcmRzXzJfUzA7aGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChoYWxm
NCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSB7CiAgMTEJZmxvYXQyIGluQ29vcmQgPSBfY29vcmRz
O2Zsb2F0MiBzdWJzZXRDb29yZDtzdWJzZXRDb29yZC54ID0gaW5Db29yZC54O3N1YnNldENvb3Jk
LnkgPSBpbkNvb3JkLnk7ZmxvYXQyIGNsYW1wZWRDb29yZDtjbGFtcGVkQ29vcmQgPSBjbGFtcChz
dWJzZXRDb29yZCwgdWNsYW1wX1MxX2MwX2MwX2MwLnh5LCB1Y2xhbXBfUzFfYzBfYzBfYzAuencp
O2hhbGY0IHRleHR1cmVDb2xvciA9IHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgY2xhbXBl
ZENvb3JkKTtyZXR1cm4gdGV4dHVyZUNvbG9yO30KICAxMgkKICAxMwloYWxmNCBNYXRyaXhFZmZl
Y3RfUzFfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgewogIDE0CXJldHVybiBU
ZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKF9pbnB1dCwgKCh1bWF0cml4X1MxX2MwX2MwKSAqIF9j
b29yZHMueHkxKS54eSk7CiAgMTUJfQogIDE2CQogIDE3CWhhbGY0IHJ1bnRpbWVfc2hhZGVyX1Mx
X2MwKGhhbGY0IF9pbnB1dCkgewogIDE4CWhhbGY0IF90bXBfMF9pbkNvbG9yID0gX2lucHV0Owog
IDE5CWZsb2F0MiBfdG1wXzFfY29vcmRzID0gdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CiAgMjAJ
aGFsZjQgc3VtID0gaGFsZjQoMC4wKTsKICAyMQlmb3IgKGludCBpID0gMDtpIDwga01heExvb3BM
aW1pdF9TMV9jMDsgKytpKSB7CiAgMjIJaGFsZjQgcyA9IHVvZmZzZXRzQW5kS2VybmVsX1MxX2Mw
W2ldOwogIDIzCXN1bSArPSBzLnkgKiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX3RtcF8wX2luQ29s
b3IsIF90bXBfMV9jb29yZHMgKyBmbG9hdDIocy54ICogdWRpcl9TMV9jMCkpOwogIDI0CXN1bSAr
PSBzLncgKiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX3RtcF8wX2luQ29sb3IsIF90bXBfMV9jb29y
ZHMgKyBmbG9hdDIocy56ICogdWRpcl9TMV9jMCkpOwogIDI1CX0KICAyNglyZXR1cm4gaGFsZjQo
c3VtKTsKICAyNwl9CiAgMjgJCiAgMjkJaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1
dCkgewogIDMwCXJldHVybiBydW50aW1lX3NoYWRlcl9TMV9jMChfaW5wdXQpOwogIDMxCX0KICAz
MgkKICAzMwl2b2lkIG1haW4oKSB7Ly8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJv
Y2Vzc29yCiAgMzQJaGFsZjQgb3V0cHV0Q29sb3JfUzA7b3V0cHV0Q29sb3JfUzAgPSB2Y29sb3Jf
UzA7Y29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTtoYWxmNCBvdXRwdXRf
UzE7b3V0cHV0X1MxID0gTWF0cml4RWZmZWN0X1MxKG91dHB1dENvbG9yX1MwKTt7IC8vIFhmZXIg
UHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgogIDM1CXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91
dHB1dENvdmVyYWdlX1MwO319CiAgMzYJLy8gVmVydGV4IEdMU0wKICAzNwkjdmVyc2lvbiAxMDAK
ICAzOAkKICAzOQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKICA0MAlwcmVjaXNpb24gbWVkaXVt
cCBzYW1wbGVyMkQ7CiAgNDEJdW5pZm9ybSBoaWdocCB2ZWM0IHNrX1JUQWRqdXN0OwogIDQyCXVu
aWZvcm0gaGlnaHAgbWF0MyB1bWF0cml4X1MxOwogIDQzCWF0dHJpYnV0ZSBoaWdocCB2ZWMyIHBv
c2l0aW9uOwogIDQ0CWF0dHJpYnV0ZSBtZWRpdW1wIHZlYzQgY29sb3I7CiAgNDUJYXR0cmlidXRl
IGhpZ2hwIHZlYzIgbG9jYWxDb29yZDsKICA0Ngl2YXJ5aW5nIG1lZGl1bXAgdmVjNCB2Y29sb3Jf
UzA7CiAgNDcJdmFyeWluZyBoaWdocCB2ZWMyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwogIDQ4
CXZvaWQgbWFpbigpIHsKICA0OQl2Y29sb3JfUzAgPSBjb2xvcjsKICA1MAlnbF9Qb3NpdGlvbiA9
IHZlYzQocG9zaXRpb24sIDAuMCwgMS4wKTsKICA1MQl7CiAgNTIJdlRyYW5zZm9ybWVkQ29vcmRz
XzJfUzAgPSAodW1hdHJpeF9TMSAqIHZlYzMobG9jYWxDb29yZCwgMS4wKSkueHk7CiAgNTMJfQog
IDU0CWdsX1Bvc2l0aW9uID0gdmVjNChnbF9Qb3NpdGlvbi54eSAqIHNrX1JUQWRqdXN0Lnh6ICsg
Z2xfUG9zaXRpb24ud3cgKiBza19SVEFkanVzdC55dywgMC4wLCBnbF9Qb3NpdGlvbi53KTsKICA1
NQl9CiAgNTYJCiAgNTcJLy8gRnJhZ21lbnQgR0xTTAogIDU4CSN2ZXJzaW9uIDEwMAogIDU5CQog
IDYwCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwogIDYxCXByZWNpc2lvbiBtZWRpdW1wIHNhbXBs
ZXIyRDsKICA2Mgljb25zdCBoaWdocCBpbnQga01heExvb3BMaW1pdF9TMV9jMCA9IDI7CiAgNjMJ
dW5pZm9ybSBoaWdocCB2ZWM0IHVjbGFtcF9TMV9jMF9jMF9jMDsKICA2NAl1bmlmb3JtIGhpZ2hw
IG1hdDMgdW1hdHJpeF9TMV9jMF9jMDsKICA2NQl1bmlmb3JtIG1lZGl1bXAgdmVjNCB1b2Zmc2V0
c0FuZEtlcm5lbF9TMV9jMFsxNF07CiAgNjYJdW5pZm9ybSBtZWRpdW1wIHZlYzIgdWRpcl9TMV9j
MDsKICA2Nwl1bmlmb3JtIGhpZ2hwIG1hdDMgdW1hdHJpeF9TMTsKICA2OAl1bmlmb3JtIHNhbXBs
ZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKICA2OQl2YXJ5aW5nIG1lZGl1bXAgdmVjNCB2Y29s
b3JfUzA7CiAgNzAJdmFyeWluZyBoaWdocCB2ZWMyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwog
IDcxCXZvaWQgbWFpbigpIHsKICA3MgloaWdocCB2ZWMyIF8yNl90bXBfMV9jb29yZHMgPSB2VHJh
bnNmb3JtZWRDb29yZHNfMl9TMDsKICA3MwltZWRpdW1wIHZlYzQgXzI3X3N1bSA9IHZlYzQoMC4w
KTsKICA3NAlmb3IgKGhpZ2hwIGludCBfMjhfaSA9IDA7XzI4X2kgPCBrTWF4TG9vcExpbWl0X1Mx
X2MwOyArK18yOF9pKSB7CiAgNzUJbWVkaXVtcCB2ZWM0IF8yOV9zID0gdW9mZnNldHNBbmRLZXJu
ZWxfUzFfYzBbXzI4X2ldOwogIDc2CWhpZ2hwIHZlYzIgXzMwX2luQ29vcmQgPSAodW1hdHJpeF9T
MV9jMF9jMCAqIHZlYzMoXzI2X3RtcF8xX2Nvb3JkcyArIF8yOV9zLnggKiB1ZGlyX1MxX2MwLCAx
LjApKS54eTsKICA3NwloaWdocCB2ZWMyIF8zMV9zdWJzZXRDb29yZDsKICA3OAlfMzFfc3Vic2V0
Q29vcmQueCA9IF8zMF9pbkNvb3JkLng7CiAgNzkJXzMxX3N1YnNldENvb3JkLnkgPSBfMzBfaW5D
b29yZC55OwogIDgwCWhpZ2hwIHZlYzIgXzMyX2NsYW1wZWRDb29yZCA9IGNsYW1wKF8zMV9zdWJz
ZXRDb29yZCwgdWNsYW1wX1MxX2MwX2MwX2MwLnh5LCB1Y2xhbXBfUzFfYzBfYzBfYzAuencpOwog
IDgxCW1lZGl1bXAgdmVjNCBfMzNfdGV4dHVyZUNvbG9yID0gdGV4dHVyZTJEKHVUZXh0dXJlU2Ft
cGxlcl8wX1MxLCBfMzJfY2xhbXBlZENvb3JkLCAtMC40NzUpOwogIDgyCV8yN19zdW0gKz0gXzI5
X3MueSAqIF8zM190ZXh0dXJlQ29sb3I7CiAgODMJaGlnaHAgdmVjMiBfMzRfaW5Db29yZCA9ICh1
bWF0cml4X1MxX2MwX2MwICogdmVjMyhfMjZfdG1wXzFfY29vcmRzICsgXzI5X3MueiAqIHVkaXJf
UzFfYzAsIDEuMCkpLnh5OwogIDg0CWhpZ2hwIHZlYzIgXzM1X3N1YnNldENvb3JkOwogIDg1CV8z
NV9zdWJzZXRDb29yZC54ID0gXzM0X2luQ29vcmQueDsKICA4NglfMzVfc3Vic2V0Q29vcmQueSA9
IF8zNF9pbkNvb3JkLnk7CiAgODcJaGlnaHAgdmVjMiBfMzZfY2xhbXBlZENvb3JkID0gY2xhbXAo
XzM1X3N1YnNldENvb3JkLCB1Y2xhbXBfUzFfYzBfYzBfYzAueHksIHVjbGFtcF9TMV9jMF9jMF9j
MC56dyk7CiAgODgJbWVkaXVtcCB2ZWM0IF8zN190ZXh0dXJlQ29sb3IgPSB0ZXh0dXJlMkQodVRl
eHR1cmVTYW1wbGVyXzBfUzEsIF8zNl9jbGFtcGVkQ29vcmQsIC0wLjQ3NSk7CiAgODkJXzI3X3N1
bSArPSBfMjlfcy53ICogXzM3X3RleHR1cmVDb2xvcjsKICA5MAl9CiAgOTEJbWVkaXVtcCB2ZWM0
IG91dHB1dF9TMSA9IF8yN19zdW07CiAgOTIJewogIDkzCWdsX0ZyYWdDb2xvciA9IG91dHB1dF9T
MTsKICA5NAl9CiAgOTUJfQogIDk2CQogIDk3CQpFcnJvcnM6CmVycm9yOiBFeGNlZWRlZCBtYXgg
bnIgaW5kaXJlY3QgdGV4dHVyZSBsb29rdXBzICg1LzQpCgpTaGFkZXIgY29tcGlsYXRpb24gZXJy
b3IKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIDEJLy8gVmVydGV4IFNLU0wKICAgMgl1bmlm
b3JtIGZsb2F0NCBza19SVEFkanVzdDt1bmlmb3JtIGZsb2F0M3gzIHVtYXRyaXhfUzE7aW4gZmxv
YXQyIHBvc2l0aW9uO2luIGhhbGY0IGNvbG9yO2luIGZsb2F0MiBsb2NhbENvb3JkO291dCBoYWxm
NCB2Y29sb3JfUzA7b3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDt2b2lkIG1haW4o
KSB7Ly8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IK
ICAgMwl2Y29sb3JfUzAgPSBjb2xvcjtza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7ewogICA0
CXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gKHVtYXRyaXhfUzEgKiBsb2NhbENvb3JkLnh5MSku
eHk7CiAgIDUJfQogICA2CX0KICAgNwkvLyBGcmFnbWVudCBTS1NMCiAgIDgJY29uc3QgaW50IGtN
YXhMb29wTGltaXRfUzFfYzAgPSA0OwogICA5CXVuaWZvcm0gZmxvYXQ0IHVjbGFtcF9TMV9jMF9j
MF9jMDt1bmlmb3JtIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzA7dW5pZm9ybSBoYWxmNCB1b2Zm
c2V0c0FuZEtlcm5lbF9TMV9jMFsxNF07dW5pZm9ybSBoYWxmMiB1ZGlyX1MxX2MwO3VuaWZvcm0g
ZmxvYXQzeDMgdW1hdHJpeF9TMTtzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CiAgMTAJ
aW4gaGFsZjQgdmNvbG9yX1MwO2luIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDtoYWxm
NCBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMp
IHsKICAxMQlmbG9hdDIgaW5Db29yZCA9IF9jb29yZHM7ZmxvYXQyIHN1YnNldENvb3JkO3N1YnNl
dENvb3JkLnggPSBpbkNvb3JkLng7c3Vic2V0Q29vcmQueSA9IGluQ29vcmQueTtmbG9hdDIgY2xh
bXBlZENvb3JkO2NsYW1wZWRDb29yZCA9IGNsYW1wKHN1YnNldENvb3JkLCB1Y2xhbXBfUzFfYzBf
YzBfYzAueHksIHVjbGFtcF9TMV9jMF9jMF9jMC56dyk7aGFsZjQgdGV4dHVyZUNvbG9yID0gc2Ft
cGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBjbGFtcGVkQ29vcmQpO3JldHVybiB0ZXh0dXJlQ29s
b3I7fQogIDEyCQogIDEzCWhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQs
IGZsb2F0MiBfY29vcmRzKSB7CiAgMTQJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAo
X2lucHV0LCAoKHVtYXRyaXhfUzFfYzBfYzApICogX2Nvb3Jkcy54eTEpLnh5KTsKICAxNQl9CiAg
MTYJCiAgMTcJaGFsZjQgcnVudGltZV9zaGFkZXJfUzFfYzAoaGFsZjQgX2lucHV0KSB7CiAgMTgJ
aGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CiAgMTkJZmxvYXQyIF90bXBfMV9jb29yZHMg
PSB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKICAyMAloYWxmNCBzdW0gPSBoYWxmNCgwLjApOwog
IDIxCWZvciAoaW50IGkgPSAwO2kgPCBrTWF4TG9vcExpbWl0X1MxX2MwOyArK2kpIHsKICAyMglo
YWxmNCBzID0gdW9mZnNldHNBbmRLZXJuZWxfUzFfYzBbaV07CiAgMjMJc3VtICs9IHMueSAqIE1h
dHJpeEVmZmVjdF9TMV9jMF9jMChfdG1wXzBfaW5Db2xvciwgX3RtcF8xX2Nvb3JkcyArIGZsb2F0
MihzLnggKiB1ZGlyX1MxX2MwKSk7CiAgMjQJc3VtICs9IHMudyAqIE1hdHJpeEVmZmVjdF9TMV9j
MF9jMChfdG1wXzBfaW5Db2xvciwgX3RtcF8xX2Nvb3JkcyArIGZsb2F0MihzLnogKiB1ZGlyX1Mx
X2MwKSk7CiAgMjUJfQogIDI2CXJldHVybiBoYWxmNChzdW0pOwogIDI3CX0KICAyOAkKICAyOQlo
YWxmNCBNYXRyaXhFZmZlY3RfUzEoaGFsZjQgX2lucHV0KSB7CiAgMzAJcmV0dXJuIHJ1bnRpbWVf
c2hhZGVyX1MxX2MwKF9pbnB1dCk7CiAgMzEJfQogIDMyCQogIDMzCXZvaWQgbWFpbigpIHsvLyBT
dGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKICAzNAloYWxmNCBvdXRwdXRD
b2xvcl9TMDtvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDtjb25zdCBoYWxmNCBvdXRwdXRDb3Zl
cmFnZV9TMCA9IGhhbGY0KDEpO2hhbGY0IG91dHB1dF9TMTtvdXRwdXRfUzEgPSBNYXRyaXhFZmZl
Y3RfUzEob3V0cHV0Q29sb3JfUzApO3sgLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCiAg
MzUJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7fX0KICAzNgkv
LyBWZXJ0ZXggR0xTTAogIDM3CSN2ZXJzaW9uIDEwMAogIDM4CQogIDM5CXByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OwogIDQwCXByZWNpc2lvbiBtZWRpdW1wIHNhbXBsZXIyRDsKICA0MQl1bmlmb3Jt
IGhpZ2hwIHZlYzQgc2tfUlRBZGp1c3Q7CiAgNDIJdW5pZm9ybSBoaWdocCBtYXQzIHVtYXRyaXhf
UzE7CiAgNDMJYXR0cmlidXRlIGhpZ2hwIHZlYzIgcG9zaXRpb247CiAgNDQJYXR0cmlidXRlIG1l
ZGl1bXAgdmVjNCBjb2xvcjsKICA0NQlhdHRyaWJ1dGUgaGlnaHAgdmVjMiBsb2NhbENvb3JkOwog
IDQ2CXZhcnlpbmcgbWVkaXVtcCB2ZWM0IHZjb2xvcl9TMDsKICA0Nwl2YXJ5aW5nIGhpZ2hwIHZl
YzIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CiAgNDgJdm9pZCBtYWluKCkgewogIDQ5CXZjb2xv
cl9TMCA9IGNvbG9yOwogIDUwCWdsX1Bvc2l0aW9uID0gdmVjNChwb3NpdGlvbiwgMC4wLCAxLjAp
OwogIDUxCXsKICA1Mgl2VHJhbnNmb3JtZWRDb29yZHNfMl9TMCA9ICh1bWF0cml4X1MxICogdmVj
Myhsb2NhbENvb3JkLCAxLjApKS54eTsKICA1Mwl9CiAgNTQJZ2xfUG9zaXRpb24gPSB2ZWM0KGds
X1Bvc2l0aW9uLnh5ICogc2tfUlRBZGp1c3QueHogKyBnbF9Qb3NpdGlvbi53dyAqIHNrX1JUQWRq
dXN0Lnl3LCAwLjAsIGdsX1Bvc2l0aW9uLncpOwogIDU1CX0KICA1NgkKICA1NwkvLyBGcmFnbWVu
dCBHTFNMCiAgNTgJI3ZlcnNpb24gMTAwCiAgNTkJCiAgNjAJcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CiAgNjEJcHJlY2lzaW9uIG1lZGl1bXAgc2FtcGxlcjJEOwogIDYyCWNvbnN0IGhpZ2hwIGlu
dCBrTWF4TG9vcExpbWl0X1MxX2MwID0gNDsKICA2Mwl1bmlmb3JtIGhpZ2hwIHZlYzQgdWNsYW1w
X1MxX2MwX2MwX2MwOwogIDY0CXVuaWZvcm0gaGlnaHAgbWF0MyB1bWF0cml4X1MxX2MwX2MwOwog
IDY1CXVuaWZvcm0gbWVkaXVtcCB2ZWM0IHVvZmZzZXRzQW5kS2VybmVsX1MxX2MwWzE0XTsKICA2
Ngl1bmlmb3JtIG1lZGl1bXAgdmVjMiB1ZGlyX1MxX2MwOwogIDY3CXVuaWZvcm0gaGlnaHAgbWF0
MyB1bWF0cml4X1MxOwogIDY4CXVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1Mx
OwogIDY5CXZhcnlpbmcgbWVkaXVtcCB2ZWM0IHZjb2xvcl9TMDsKICA3MAl2YXJ5aW5nIGhpZ2hw
IHZlYzIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CiAgNzEJdm9pZCBtYWluKCkgewogIDcyCWhp
Z2hwIHZlYzIgXzI2X3RtcF8xX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwogIDcz
CW1lZGl1bXAgdmVjNCBfMjdfc3VtID0gdmVjNCgwLjApOwogIDc0CWZvciAoaGlnaHAgaW50IF8y
OF9pID0gMDtfMjhfaSA8IGtNYXhMb29wTGltaXRfUzFfYzA7ICsrXzI4X2kpIHsKICA3NQltZWRp
dW1wIHZlYzQgXzI5X3MgPSB1b2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtfMjhfaV07CiAgNzYJaGln
aHAgdmVjMiBfMzBfaW5Db29yZCA9ICh1bWF0cml4X1MxX2MwX2MwICogdmVjMyhfMjZfdG1wXzFf
Y29vcmRzICsgXzI5X3MueCAqIHVkaXJfUzFfYzAsIDEuMCkpLnh5OwogIDc3CWhpZ2hwIHZlYzIg
XzMxX3N1YnNldENvb3JkOwogIDc4CV8zMV9zdWJzZXRDb29yZC54ID0gXzMwX2luQ29vcmQueDsK
ICA3OQlfMzFfc3Vic2V0Q29vcmQueSA9IF8zMF9pbkNvb3JkLnk7CiAgODAJaGlnaHAgdmVjMiBf
MzJfY2xhbXBlZENvb3JkID0gY2xhbXAoXzMxX3N1YnNldENvb3JkLCB1Y2xhbXBfUzFfYzBfYzBf
YzAueHksIHVjbGFtcF9TMV9jMF9jMF9jMC56dyk7CiAgODEJbWVkaXVtcCB2ZWM0IF8zM190ZXh0
dXJlQ29sb3IgPSB0ZXh0dXJlMkQodVRleHR1cmVTYW1wbGVyXzBfUzEsIF8zMl9jbGFtcGVkQ29v
cmQsIC0wLjQ3NSk7CiAgODIJXzI3X3N1bSArPSBfMjlfcy55ICogXzMzX3RleHR1cmVDb2xvcjsK
ICA4MwloaWdocCB2ZWMyIF8zNF9pbkNvb3JkID0gKHVtYXRyaXhfUzFfYzBfYzAgKiB2ZWMzKF8y
Nl90bXBfMV9jb29yZHMgKyBfMjlfcy56ICogdWRpcl9TMV9jMCwgMS4wKSkueHk7CiAgODQJaGln
aHAgdmVjMiBfMzVfc3Vic2V0Q29vcmQ7CiAgODUJXzM1X3N1YnNldENvb3JkLnggPSBfMzRfaW5D
b29yZC54OwogIDg2CV8zNV9zdWJzZXRDb29yZC55ID0gXzM0X2luQ29vcmQueTsKICA4NwloaWdo
cCB2ZWMyIF8zNl9jbGFtcGVkQ29vcmQgPSBjbGFtcChfMzVfc3Vic2V0Q29vcmQsIHVjbGFtcF9T
MV9jMF9jMF9jMC54eSwgdWNsYW1wX1MxX2MwX2MwX2MwLnp3KTsKICA4OAltZWRpdW1wIHZlYzQg
XzM3X3RleHR1cmVDb2xvciA9IHRleHR1cmUyRCh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgXzM2X2Ns
YW1wZWRDb29yZCwgLTAuNDc1KTsKICA4OQlfMjdfc3VtICs9IF8yOV9zLncgKiBfMzdfdGV4dHVy
ZUNvbG9yOwogIDkwCX0KICA5MQltZWRpdW1wIHZlYzQgb3V0cHV0X1MxID0gXzI3X3N1bTsKICA5
Mgl7CiAgOTMJZ2xfRnJhZ0NvbG9yID0gb3V0cHV0X1MxOwogIDk0CX0KICA5NQl9CiAgOTYJCiAg
OTcJCkVycm9yczoKZXJyb3I6IEV4Y2VlZGVkIG1heCBuciBpbmRpcmVjdCB0ZXh0dXJlIGxvb2t1
cHMgKDkvNCkKCkZhaWxlZCB0byBjcmVhdGUgRE1BLUJVRiB0ZXh0dXJlIG9mIHNpemUgMTAyNHg2
OTM6IFVuc3VwcG9ydGVkIGRtYWJ1ZiBmb3JtYXQ6IFhSMjQ6MHhmZmZmZmZmZmZmZmZmZgpTaGFk
ZXIgY29tcGlsYXRpb24gZXJyb3IKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIDEJLy8gVmVy
dGV4IFNLU0wKICAgMgl1bmlmb3JtIGZsb2F0NCBza19SVEFkanVzdDt1bmlmb3JtIGZsb2F0M3gz
IHVtYXRyaXhfUzE7aW4gZmxvYXQyIHBvc2l0aW9uO2luIGhhbGY0IGNvbG9yO2luIGZsb2F0MiBs
b2NhbENvb3JkO291dCBoYWxmNCB2Y29sb3JfUzA7b3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29y
ZHNfMl9TMDt2b2lkIG1haW4oKSB7Ly8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFB
R2VvbWV0cnlQcm9jZXNzb3IKICAgMwl2Y29sb3JfUzAgPSBjb2xvcjtza19Qb3NpdGlvbiA9IHBv
c2l0aW9uLnh5MDE7ewogICA0CXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gKHVtYXRyaXhfUzEg
KiBsb2NhbENvb3JkLnh5MSkueHk7CiAgIDUJfQogICA2CX0KICAgNwkvLyBGcmFnbWVudCBTS1NM
CiAgIDgJY29uc3QgaW50IGtNYXhMb29wTGltaXRfUzFfYzAgPSA0OwogICA5CXVuaWZvcm0gZmxv
YXQ0IHVjbGFtcF9TMV9jMF9jMF9jMDt1bmlmb3JtIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzA7
dW5pZm9ybSBoYWxmNCB1b2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFsxNF07dW5pZm9ybSBoYWxmMiB1
ZGlyX1MxX2MwO3VuaWZvcm0gZmxvYXQzeDMgdW1hdHJpeF9TMTtzYW1wbGVyMkQgdVRleHR1cmVT
YW1wbGVyXzBfUzE7CiAgMTAJaW4gaGFsZjQgdmNvbG9yX1MwO2luIGZsb2F0MiB2VHJhbnNmb3Jt
ZWRDb29yZHNfMl9TMDtoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1
dCwgZmxvYXQyIF9jb29yZHMpIHsKICAxMQlmbG9hdDIgaW5Db29yZCA9IF9jb29yZHM7ZmxvYXQy
IHN1YnNldENvb3JkO3N1YnNldENvb3JkLnggPSBpbkNvb3JkLng7c3Vic2V0Q29vcmQueSA9IGlu
Q29vcmQueTtmbG9hdDIgY2xhbXBlZENvb3JkO2NsYW1wZWRDb29yZCA9IGNsYW1wKHN1YnNldENv
b3JkLCB1Y2xhbXBfUzFfYzBfYzBfYzAueHksIHVjbGFtcF9TMV9jMF9jMF9jMC56dyk7aGFsZjQg
dGV4dHVyZUNvbG9yID0gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBjbGFtcGVkQ29vcmQp
O3JldHVybiB0ZXh0dXJlQ29sb3I7fQogIDEyCQogIDEzCWhhbGY0IE1hdHJpeEVmZmVjdF9TMV9j
MF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSB7CiAgMTQJcmV0dXJuIFRleHR1cmVF
ZmZlY3RfUzFfYzBfYzBfYzAoX2lucHV0LCAoKHVtYXRyaXhfUzFfYzBfYzApICogX2Nvb3Jkcy54
eTEpLnh5KTsKICAxNQl9CiAgMTYJCiAgMTcJaGFsZjQgcnVudGltZV9zaGFkZXJfUzFfYzAoaGFs
ZjQgX2lucHV0KSB7CiAgMTgJaGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CiAgMTkJZmxv
YXQyIF90bXBfMV9jb29yZHMgPSB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKICAyMAloYWxmNCBz
dW0gPSBoYWxmNCgwLjApOwogIDIxCWZvciAoaW50IGkgPSAwO2kgPCBrTWF4TG9vcExpbWl0X1Mx
X2MwOyArK2kpIHsKICAyMgloYWxmNCBzID0gdW9mZnNldHNBbmRLZXJuZWxfUzFfYzBbaV07CiAg
MjMJc3VtICs9IHMueSAqIE1hdHJpeEVmZmVjdF9TMV9jMF9jMChfdG1wXzBfaW5Db2xvciwgX3Rt
cF8xX2Nvb3JkcyArIGZsb2F0MihzLnggKiB1ZGlyX1MxX2MwKSk7CiAgMjQJc3VtICs9IHMudyAq
IE1hdHJpeEVmZmVjdF9TMV9jMF9jMChfdG1wXzBfaW5Db2xvciwgX3RtcF8xX2Nvb3JkcyArIGZs
b2F0MihzLnogKiB1ZGlyX1MxX2MwKSk7CiAgMjUJfQogIDI2CXJldHVybiBoYWxmNChzdW0pOwog
IDI3CX0KICAyOAkKICAyOQloYWxmNCBNYXRyaXhFZmZlY3RfUzEoaGFsZjQgX2lucHV0KSB7CiAg
MzAJcmV0dXJuIHJ1bnRpbWVfc2hhZGVyX1MxX2MwKF9pbnB1dCk7CiAgMzEJfQogIDMyCQogIDMz
CXZvaWQgbWFpbigpIHsvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IK
ICAzNAloYWxmNCBvdXRwdXRDb2xvcl9TMDtvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDtjb25z
dCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpO2hhbGY0IG91dHB1dF9TMTtvdXRw
dXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3JfUzApO3sgLy8gWGZlciBQcm9jZXNz
b3I6IFBvcnRlciBEdWZmCiAgMzUJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292
ZXJhZ2VfUzA7fX0KICAzNgkvLyBWZXJ0ZXggR0xTTAogIDM3CSN2ZXJzaW9uIDEwMAogIDM4CQog
IDM5CXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwogIDQwCXByZWNpc2lvbiBtZWRpdW1wIHNhbXBs
ZXIyRDsKICA0MQl1bmlmb3JtIGhpZ2hwIHZlYzQgc2tfUlRBZGp1c3Q7CiAgNDIJdW5pZm9ybSBo
aWdocCBtYXQzIHVtYXRyaXhfUzE7CiAgNDMJYXR0cmlidXRlIGhpZ2hwIHZlYzIgcG9zaXRpb247
CiAgNDQJYXR0cmlidXRlIG1lZGl1bXAgdmVjNCBjb2xvcjsKICA0NQlhdHRyaWJ1dGUgaGlnaHAg
dmVjMiBsb2NhbENvb3JkOwogIDQ2CXZhcnlpbmcgbWVkaXVtcCB2ZWM0IHZjb2xvcl9TMDsKICA0
Nwl2YXJ5aW5nIGhpZ2hwIHZlYzIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CiAgNDgJdm9pZCBt
YWluKCkgewogIDQ5CXZjb2xvcl9TMCA9IGNvbG9yOwogIDUwCWdsX1Bvc2l0aW9uID0gdmVjNChw
b3NpdGlvbiwgMC4wLCAxLjApOwogIDUxCXsKICA1Mgl2VHJhbnNmb3JtZWRDb29yZHNfMl9TMCA9
ICh1bWF0cml4X1MxICogdmVjMyhsb2NhbENvb3JkLCAxLjApKS54eTsKICA1Mwl9CiAgNTQJZ2xf
UG9zaXRpb24gPSB2ZWM0KGdsX1Bvc2l0aW9uLnh5ICogc2tfUlRBZGp1c3QueHogKyBnbF9Qb3Np
dGlvbi53dyAqIHNrX1JUQWRqdXN0Lnl3LCAwLjAsIGdsX1Bvc2l0aW9uLncpOwogIDU1CX0KICA1
NgkKICA1NwkvLyBGcmFnbWVudCBHTFNMCiAgNTgJI3ZlcnNpb24gMTAwCiAgNTkJCiAgNjAJcHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7CiAgNjEJcHJlY2lzaW9uIG1lZGl1bXAgc2FtcGxlcjJEOwog
IDYyCWNvbnN0IGhpZ2hwIGludCBrTWF4TG9vcExpbWl0X1MxX2MwID0gNDsKICA2Mwl1bmlmb3Jt
IGhpZ2hwIHZlYzQgdWNsYW1wX1MxX2MwX2MwX2MwOwogIDY0CXVuaWZvcm0gaGlnaHAgbWF0MyB1
bWF0cml4X1MxX2MwX2MwOwogIDY1CXVuaWZvcm0gbWVkaXVtcCB2ZWM0IHVvZmZzZXRzQW5kS2Vy
bmVsX1MxX2MwWzE0XTsKICA2Ngl1bmlmb3JtIG1lZGl1bXAgdmVjMiB1ZGlyX1MxX2MwOwogIDY3
CXVuaWZvcm0gaGlnaHAgbWF0MyB1bWF0cml4X1MxOwogIDY4CXVuaWZvcm0gc2FtcGxlcjJEIHVU
ZXh0dXJlU2FtcGxlcl8wX1MxOwogIDY5CXZhcnlpbmcgbWVkaXVtcCB2ZWM0IHZjb2xvcl9TMDsK
ICA3MAl2YXJ5aW5nIGhpZ2hwIHZlYzIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CiAgNzEJdm9p
ZCBtYWluKCkgewogIDcyCWhpZ2hwIHZlYzIgXzI2X3RtcF8xX2Nvb3JkcyA9IHZUcmFuc2Zvcm1l
ZENvb3Jkc18yX1MwOwogIDczCW1lZGl1bXAgdmVjNCBfMjdfc3VtID0gdmVjNCgwLjApOwogIDc0
CWZvciAoaGlnaHAgaW50IF8yOF9pID0gMDtfMjhfaSA8IGtNYXhMb29wTGltaXRfUzFfYzA7ICsr
XzI4X2kpIHsKICA3NQltZWRpdW1wIHZlYzQgXzI5X3MgPSB1b2Zmc2V0c0FuZEtlcm5lbF9TMV9j
MFtfMjhfaV07CiAgNzYJaGlnaHAgdmVjMiBfMzBfaW5Db29yZCA9ICh1bWF0cml4X1MxX2MwX2Mw
ICogdmVjMyhfMjZfdG1wXzFfY29vcmRzICsgXzI5X3MueCAqIHVkaXJfUzFfYzAsIDEuMCkpLnh5
OwogIDc3CWhpZ2hwIHZlYzIgXzMxX3N1YnNldENvb3JkOwogIDc4CV8zMV9zdWJzZXRDb29yZC54
ID0gXzMwX2luQ29vcmQueDsKICA3OQlfMzFfc3Vic2V0Q29vcmQueSA9IF8zMF9pbkNvb3JkLnk7
CiAgODAJaGlnaHAgdmVjMiBfMzJfY2xhbXBlZENvb3JkID0gY2xhbXAoXzMxX3N1YnNldENvb3Jk
LCB1Y2xhbXBfUzFfYzBfYzBfYzAueHksIHVjbGFtcF9TMV9jMF9jMF9jMC56dyk7CiAgODEJbWVk
aXVtcCB2ZWM0IF8zM190ZXh0dXJlQ29sb3IgPSB0ZXh0dXJlMkQodVRleHR1cmVTYW1wbGVyXzBf
UzEsIF8zMl9jbGFtcGVkQ29vcmQsIC0wLjQ3NSk7CiAgODIJXzI3X3N1bSArPSBfMjlfcy55ICog
XzMzX3RleHR1cmVDb2xvcjsKICA4MwloaWdocCB2ZWMyIF8zNF9pbkNvb3JkID0gKHVtYXRyaXhf
UzFfYzBfYzAgKiB2ZWMzKF8yNl90bXBfMV9jb29yZHMgKyBfMjlfcy56ICogdWRpcl9TMV9jMCwg
MS4wKSkueHk7CiAgODQJaGlnaHAgdmVjMiBfMzVfc3Vic2V0Q29vcmQ7CiAgODUJXzM1X3N1YnNl
dENvb3JkLnggPSBfMzRfaW5Db29yZC54OwogIDg2CV8zNV9zdWJzZXRDb29yZC55ID0gXzM0X2lu
Q29vcmQueTsKICA4NwloaWdocCB2ZWMyIF8zNl9jbGFtcGVkQ29vcmQgPSBjbGFtcChfMzVfc3Vi
c2V0Q29vcmQsIHVjbGFtcF9TMV9jMF9jMF9jMC54eSwgdWNsYW1wX1MxX2MwX2MwX2MwLnp3KTsK
ICA4OAltZWRpdW1wIHZlYzQgXzM3X3RleHR1cmVDb2xvciA9IHRleHR1cmUyRCh1VGV4dHVyZVNh
bXBsZXJfMF9TMSwgXzM2X2NsYW1wZWRDb29yZCwgLTAuNDc1KTsKICA4OQlfMjdfc3VtICs9IF8y
OV9zLncgKiBfMzdfdGV4dHVyZUNvbG9yOwogIDkwCX0KICA5MQltZWRpdW1wIHZlYzQgb3V0cHV0
X1MxID0gXzI3X3N1bTsKICA5Mgl7CiAgOTMJZ2xfRnJhZ0NvbG9yID0gb3V0cHV0X1MxOwogIDk0
CX0KICA5NQl9CiAgOTYJCiAgOTcJCkVycm9yczoKZXJyb3I6IEV4Y2VlZGVkIG1heCBuciBpbmRp
cmVjdCB0ZXh0dXJlIGxvb2t1cHMgKDkvNCkKCkZhaWxlZCB0byBjcmVhdGUgRE1BLUJVRiB0ZXh0
dXJlIG9mIHNpemUgMTAyNHg2OTM6IFVuc3VwcG9ydGVkIGRtYWJ1ZiBmb3JtYXQ6IFhSMjQ6MHhm
ZmZmZmZmZmZmZmZmZgpGYWlsZWQgdG8gY3JlYXRlIERNQS1CVUYgdGV4dHVyZSBvZiBzaXplIDEw
MjR4NjkzOiBVbnN1cHBvcnRlZCBkbWFidWYgZm9ybWF0OiBYUjI0OjB4ZmZmZmZmZmZmZmZmZmYK
U2hhZGVyIGNvbXBpbGF0aW9uIGVycm9yCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAxCS8v
IFZlcnRleCBTS1NMCiAgIDIJdW5pZm9ybSBmbG9hdDQgc2tfUlRBZGp1c3Q7dW5pZm9ybSBmbG9h
dDN4MyB1bWF0cml4X1MxO2luIGZsb2F0MiBwb3NpdGlvbjtpbiBoYWxmNCBjb2xvcjtpbiBmbG9h
dDIgbG9jYWxDb29yZDtvdXQgaGFsZjQgdmNvbG9yX1MwO291dCBmbG9hdDIgdlRyYW5zZm9ybWVk
Q29vcmRzXzJfUzA7dm9pZCBtYWluKCkgey8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVk
Z2VBQUdlb21ldHJ5UHJvY2Vzc29yCiAgIDMJdmNvbG9yX1MwID0gY29sb3I7c2tfUG9zaXRpb24g
PSBwb3NpdGlvbi54eTAxO3sKICAgNAl2VHJhbnNmb3JtZWRDb29yZHNfMl9TMCA9ICh1bWF0cml4
X1MxICogbG9jYWxDb29yZC54eTEpLnh5OwogICA1CX0KICAgNgl9CiAgIDcJLy8gRnJhZ21lbnQg
U0tTTAogICA4CWNvbnN0IGludCBrTWF4TG9vcExpbWl0X1MxX2MwID0gMjsKICAgOQl1bmlmb3Jt
IGZsb2F0NCB1Y2xhbXBfUzFfYzBfYzBfYzA7dW5pZm9ybSBmbG9hdDN4MyB1bWF0cml4X1MxX2Mw
X2MwO3VuaWZvcm0gaGFsZjQgdW9mZnNldHNBbmRLZXJuZWxfUzFfYzBbMTRdO3VuaWZvcm0gaGFs
ZjIgdWRpcl9TMV9jMDt1bmlmb3JtIGZsb2F0M3gzIHVtYXRyaXhfUzE7c2FtcGxlcjJEIHVUZXh0
dXJlU2FtcGxlcl8wX1MxOwogIDEwCWluIGhhbGY0IHZjb2xvcl9TMDtpbiBmbG9hdDIgdlRyYW5z
Zm9ybWVkQ29vcmRzXzJfUzA7aGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChoYWxmNCBf
aW5wdXQsIGZsb2F0MiBfY29vcmRzKSB7CiAgMTEJZmxvYXQyIGluQ29vcmQgPSBfY29vcmRzO2Zs
b2F0MiBzdWJzZXRDb29yZDtzdWJzZXRDb29yZC54ID0gaW5Db29yZC54O3N1YnNldENvb3JkLnkg
PSBpbkNvb3JkLnk7ZmxvYXQyIGNsYW1wZWRDb29yZDtjbGFtcGVkQ29vcmQgPSBjbGFtcChzdWJz
ZXRDb29yZCwgdWNsYW1wX1MxX2MwX2MwX2MwLnh5LCB1Y2xhbXBfUzFfYzBfYzBfYzAuencpO2hh
bGY0IHRleHR1cmVDb2xvciA9IHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgY2xhbXBlZENv
b3JkKTtyZXR1cm4gdGV4dHVyZUNvbG9yO30KICAxMgkKICAxMwloYWxmNCBNYXRyaXhFZmZlY3Rf
UzFfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgewogIDE0CXJldHVybiBUZXh0
dXJlRWZmZWN0X1MxX2MwX2MwX2MwKF9pbnB1dCwgKCh1bWF0cml4X1MxX2MwX2MwKSAqIF9jb29y
ZHMueHkxKS54eSk7CiAgMTUJfQogIDE2CQogIDE3CWhhbGY0IHJ1bnRpbWVfc2hhZGVyX1MxX2Mw
KGhhbGY0IF9pbnB1dCkgewogIDE4CWhhbGY0IF90bXBfMF9pbkNvbG9yID0gX2lucHV0OwogIDE5
CWZsb2F0MiBfdG1wXzFfY29vcmRzID0gdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CiAgMjAJaGFs
ZjQgc3VtID0gaGFsZjQoMC4wKTsKICAyMQlmb3IgKGludCBpID0gMDtpIDwga01heExvb3BMaW1p
dF9TMV9jMDsgKytpKSB7CiAgMjIJaGFsZjQgcyA9IHVvZmZzZXRzQW5kS2VybmVsX1MxX2MwW2ld
OwogIDIzCXN1bSArPSBzLnkgKiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX3RtcF8wX2luQ29sb3Is
IF90bXBfMV9jb29yZHMgKyBmbG9hdDIocy54ICogdWRpcl9TMV9jMCkpOwogIDI0CXN1bSArPSBz
LncgKiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX3RtcF8wX2luQ29sb3IsIF90bXBfMV9jb29yZHMg
KyBmbG9hdDIocy56ICogdWRpcl9TMV9jMCkpOwogIDI1CX0KICAyNglyZXR1cm4gaGFsZjQoc3Vt
KTsKICAyNwl9CiAgMjgJCiAgMjkJaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkg
ewogIDMwCXJldHVybiBydW50aW1lX3NoYWRlcl9TMV9jMChfaW5wdXQpOwogIDMxCX0KICAzMgkK
ICAzMwl2b2lkIG1haW4oKSB7Ly8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vz
c29yCiAgMzQJaGFsZjQgb3V0cHV0Q29sb3JfUzA7b3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7
Y29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTtoYWxmNCBvdXRwdXRfUzE7
b3V0cHV0X1MxID0gTWF0cml4RWZmZWN0X1MxKG91dHB1dENvbG9yX1MwKTt7IC8vIFhmZXIgUHJv
Y2Vzc29yOiBQb3J0ZXIgRHVmZgogIDM1CXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1
dENvdmVyYWdlX1MwO319CiAgMzYJLy8gVmVydGV4IEdMU0wKICAzNwkjdmVyc2lvbiAxMDAKICAz
OAkKICAzOQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKICA0MAlwcmVjaXNpb24gbWVkaXVtcCBz
YW1wbGVyMkQ7CiAgNDEJdW5pZm9ybSBoaWdocCB2ZWM0IHNrX1JUQWRqdXN0OwogIDQyCXVuaWZv
cm0gaGlnaHAgbWF0MyB1bWF0cml4X1MxOwogIDQzCWF0dHJpYnV0ZSBoaWdocCB2ZWMyIHBvc2l0
aW9uOwogIDQ0CWF0dHJpYnV0ZSBtZWRpdW1wIHZlYzQgY29sb3I7CiAgNDUJYXR0cmlidXRlIGhp
Z2hwIHZlYzIgbG9jYWxDb29yZDsKICA0Ngl2YXJ5aW5nIG1lZGl1bXAgdmVjNCB2Y29sb3JfUzA7
CiAgNDcJdmFyeWluZyBoaWdocCB2ZWMyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwogIDQ4CXZv
aWQgbWFpbigpIHsKICA0OQl2Y29sb3JfUzAgPSBjb2xvcjsKICA1MAlnbF9Qb3NpdGlvbiA9IHZl
YzQocG9zaXRpb24sIDAuMCwgMS4wKTsKICA1MQl7CiAgNTIJdlRyYW5zZm9ybWVkQ29vcmRzXzJf
UzAgPSAodW1hdHJpeF9TMSAqIHZlYzMobG9jYWxDb29yZCwgMS4wKSkueHk7CiAgNTMJfQogIDU0
CWdsX1Bvc2l0aW9uID0gdmVjNChnbF9Qb3NpdGlvbi54eSAqIHNrX1JUQWRqdXN0Lnh6ICsgZ2xf
UG9zaXRpb24ud3cgKiBza19SVEFkanVzdC55dywgMC4wLCBnbF9Qb3NpdGlvbi53KTsKICA1NQl9
CiAgNTYJCiAgNTcJLy8gRnJhZ21lbnQgR0xTTAogIDU4CSN2ZXJzaW9uIDEwMAogIDU5CQogIDYw
CXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwogIDYxCXByZWNpc2lvbiBtZWRpdW1wIHNhbXBsZXIy
RDsKICA2Mgljb25zdCBoaWdocCBpbnQga01heExvb3BMaW1pdF9TMV9jMCA9IDI7CiAgNjMJdW5p
Zm9ybSBoaWdocCB2ZWM0IHVjbGFtcF9TMV9jMF9jMF9jMDsKICA2NAl1bmlmb3JtIGhpZ2hwIG1h
dDMgdW1hdHJpeF9TMV9jMF9jMDsKICA2NQl1bmlmb3JtIG1lZGl1bXAgdmVjNCB1b2Zmc2V0c0Fu
ZEtlcm5lbF9TMV9jMFsxNF07CiAgNjYJdW5pZm9ybSBtZWRpdW1wIHZlYzIgdWRpcl9TMV9jMDsK
ICA2Nwl1bmlmb3JtIGhpZ2hwIG1hdDMgdW1hdHJpeF9TMTsKICA2OAl1bmlmb3JtIHNhbXBsZXIy
RCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKICA2OQl2YXJ5aW5nIG1lZGl1bXAgdmVjNCB2Y29sb3Jf
UzA7CiAgNzAJdmFyeWluZyBoaWdocCB2ZWMyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwogIDcx
CXZvaWQgbWFpbigpIHsKICA3MgloaWdocCB2ZWMyIF8yNl90bXBfMV9jb29yZHMgPSB2VHJhbnNm
b3JtZWRDb29yZHNfMl9TMDsKICA3MwltZWRpdW1wIHZlYzQgXzI3X3N1bSA9IHZlYzQoMC4wKTsK
ICA3NAlmb3IgKGhpZ2hwIGludCBfMjhfaSA9IDA7XzI4X2kgPCBrTWF4TG9vcExpbWl0X1MxX2Mw
OyArK18yOF9pKSB7CiAgNzUJbWVkaXVtcCB2ZWM0IF8yOV9zID0gdW9mZnNldHNBbmRLZXJuZWxf
UzFfYzBbXzI4X2ldOwogIDc2CWhpZ2hwIHZlYzIgXzMwX2luQ29vcmQgPSAodW1hdHJpeF9TMV9j
MF9jMCAqIHZlYzMoXzI2X3RtcF8xX2Nvb3JkcyArIF8yOV9zLnggKiB1ZGlyX1MxX2MwLCAxLjAp
KS54eTsKICA3NwloaWdocCB2ZWMyIF8zMV9zdWJzZXRDb29yZDsKICA3OAlfMzFfc3Vic2V0Q29v
cmQueCA9IF8zMF9pbkNvb3JkLng7CiAgNzkJXzMxX3N1YnNldENvb3JkLnkgPSBfMzBfaW5Db29y
ZC55OwogIDgwCWhpZ2hwIHZlYzIgXzMyX2NsYW1wZWRDb29yZCA9IGNsYW1wKF8zMV9zdWJzZXRD
b29yZCwgdWNsYW1wX1MxX2MwX2MwX2MwLnh5LCB1Y2xhbXBfUzFfYzBfYzBfYzAuencpOwogIDgx
CW1lZGl1bXAgdmVjNCBfMzNfdGV4dHVyZUNvbG9yID0gdGV4dHVyZTJEKHVUZXh0dXJlU2FtcGxl
cl8wX1MxLCBfMzJfY2xhbXBlZENvb3JkLCAtMC40NzUpOwogIDgyCV8yN19zdW0gKz0gXzI5X3Mu
eSAqIF8zM190ZXh0dXJlQ29sb3I7CiAgODMJaGlnaHAgdmVjMiBfMzRfaW5Db29yZCA9ICh1bWF0
cml4X1MxX2MwX2MwICogdmVjMyhfMjZfdG1wXzFfY29vcmRzICsgXzI5X3MueiAqIHVkaXJfUzFf
YzAsIDEuMCkpLnh5OwogIDg0CWhpZ2hwIHZlYzIgXzM1X3N1YnNldENvb3JkOwogIDg1CV8zNV9z
dWJzZXRDb29yZC54ID0gXzM0X2luQ29vcmQueDsKICA4NglfMzVfc3Vic2V0Q29vcmQueSA9IF8z
NF9pbkNvb3JkLnk7CiAgODcJaGlnaHAgdmVjMiBfMzZfY2xhbXBlZENvb3JkID0gY2xhbXAoXzM1
X3N1YnNldENvb3JkLCB1Y2xhbXBfUzFfYzBfYzBfYzAueHksIHVjbGFtcF9TMV9jMF9jMF9jMC56
dyk7CiAgODgJbWVkaXVtcCB2ZWM0IF8zN190ZXh0dXJlQ29sb3IgPSB0ZXh0dXJlMkQodVRleHR1
cmVTYW1wbGVyXzBfUzEsIF8zNl9jbGFtcGVkQ29vcmQsIC0wLjQ3NSk7CiAgODkJXzI3X3N1bSAr
PSBfMjlfcy53ICogXzM3X3RleHR1cmVDb2xvcjsKICA5MAl9CiAgOTEJbWVkaXVtcCB2ZWM0IG91
dHB1dF9TMSA9IF8yN19zdW07CiAgOTIJewogIDkzCWdsX0ZyYWdDb2xvciA9IG91dHB1dF9TMTsK
ICA5NAl9CiAgOTUJfQogIDk2CQogIDk3CQpFcnJvcnM6CmVycm9yOiBFeGNlZWRlZCBtYXggbnIg
aW5kaXJlY3QgdGV4dHVyZSBsb29rdXBzICg1LzQpCgpGYWlsZWQgdG8gY3JlYXRlIERNQS1CVUYg
dGV4dHVyZSBvZiBzaXplIDEwMjR4NjkzOiBVbnN1cHBvcnRlZCBkbWFidWYgZm9ybWF0OiBYUjI0
OjB4ZmZmZmZmZmZmZmZmZmYKU2hhZGVyIGNvbXBpbGF0aW9uIGVycm9yCi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQogICAxCS8vIFZlcnRleCBTS1NMCiAgIDIJdW5pZm9ybSBmbG9hdDQgc2tfUlRB
ZGp1c3Q7dW5pZm9ybSBmbG9hdDN4MyB1bWF0cml4X1MxO2luIGZsb2F0MiBwb3NpdGlvbjtpbiBo
YWxmNCBjb2xvcjtpbiBmbG9hdDIgbG9jYWxDb29yZDtvdXQgaGFsZjQgdmNvbG9yX1MwO291dCBm
bG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7dm9pZCBtYWluKCkgey8vIFByaW1pdGl2ZSBQ
cm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCiAgIDMJdmNvbG9yX1MwID0g
Y29sb3I7c2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxO3sKICAgNAl2VHJhbnNmb3JtZWRDb29y
ZHNfMl9TMCA9ICh1bWF0cml4X1MxICogbG9jYWxDb29yZC54eTEpLnh5OwogICA1CX0KICAgNgl9
CiAgIDcJLy8gRnJhZ21lbnQgU0tTTAogICA4CWNvbnN0IGludCBrTWF4TG9vcExpbWl0X1MxX2Mw
ID0gMjsKICAgOQl1bmlmb3JtIGZsb2F0NCB1Y2xhbXBfUzFfYzBfYzBfYzA7dW5pZm9ybSBmbG9h
dDN4MyB1bWF0cml4X1MxX2MwX2MwO3VuaWZvcm0gaGFsZjQgdW9mZnNldHNBbmRLZXJuZWxfUzFf
YzBbMTRdO3VuaWZvcm0gaGFsZjIgdWRpcl9TMV9jMDt1bmlmb3JtIGZsb2F0M3gzIHVtYXRyaXhf
UzE7c2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwogIDEwCWluIGhhbGY0IHZjb2xvcl9T
MDtpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7aGFsZjQgVGV4dHVyZUVmZmVjdF9T
MV9jMF9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSB7CiAgMTEJZmxvYXQyIGlu
Q29vcmQgPSBfY29vcmRzO2Zsb2F0MiBzdWJzZXRDb29yZDtzdWJzZXRDb29yZC54ID0gaW5Db29y
ZC54O3N1YnNldENvb3JkLnkgPSBpbkNvb3JkLnk7ZmxvYXQyIGNsYW1wZWRDb29yZDtjbGFtcGVk
Q29vcmQgPSBjbGFtcChzdWJzZXRDb29yZCwgdWNsYW1wX1MxX2MwX2MwX2MwLnh5LCB1Y2xhbXBf
UzFfYzBfYzBfYzAuencpO2hhbGY0IHRleHR1cmVDb2xvciA9IHNhbXBsZSh1VGV4dHVyZVNhbXBs
ZXJfMF9TMSwgY2xhbXBlZENvb3JkKTtyZXR1cm4gdGV4dHVyZUNvbG9yO30KICAxMgkKICAxMwlo
YWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3Jkcykg
ewogIDE0CXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKF9pbnB1dCwgKCh1bWF0cml4
X1MxX2MwX2MwKSAqIF9jb29yZHMueHkxKS54eSk7CiAgMTUJfQogIDE2CQogIDE3CWhhbGY0IHJ1
bnRpbWVfc2hhZGVyX1MxX2MwKGhhbGY0IF9pbnB1dCkgewogIDE4CWhhbGY0IF90bXBfMF9pbkNv
bG9yID0gX2lucHV0OwogIDE5CWZsb2F0MiBfdG1wXzFfY29vcmRzID0gdlRyYW5zZm9ybWVkQ29v
cmRzXzJfUzA7CiAgMjAJaGFsZjQgc3VtID0gaGFsZjQoMC4wKTsKICAyMQlmb3IgKGludCBpID0g
MDtpIDwga01heExvb3BMaW1pdF9TMV9jMDsgKytpKSB7CiAgMjIJaGFsZjQgcyA9IHVvZmZzZXRz
QW5kS2VybmVsX1MxX2MwW2ldOwogIDIzCXN1bSArPSBzLnkgKiBNYXRyaXhFZmZlY3RfUzFfYzBf
YzAoX3RtcF8wX2luQ29sb3IsIF90bXBfMV9jb29yZHMgKyBmbG9hdDIocy54ICogdWRpcl9TMV9j
MCkpOwogIDI0CXN1bSArPSBzLncgKiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX3RtcF8wX2luQ29s
b3IsIF90bXBfMV9jb29yZHMgKyBmbG9hdDIocy56ICogdWRpcl9TMV9jMCkpOwogIDI1CX0KICAy
NglyZXR1cm4gaGFsZjQoc3VtKTsKICAyNwl9CiAgMjgJCiAgMjkJaGFsZjQgTWF0cml4RWZmZWN0
X1MxKGhhbGY0IF9pbnB1dCkgewogIDMwCXJldHVybiBydW50aW1lX3NoYWRlcl9TMV9jMChfaW5w
dXQpOwogIDMxCX0KICAzMgkKICAzMwl2b2lkIG1haW4oKSB7Ly8gU3RhZ2UgMCwgUXVhZFBlckVk
Z2VBQUdlb21ldHJ5UHJvY2Vzc29yCiAgMzQJaGFsZjQgb3V0cHV0Q29sb3JfUzA7b3V0cHV0Q29s
b3JfUzAgPSB2Y29sb3JfUzA7Y29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgx
KTtoYWxmNCBvdXRwdXRfUzE7b3V0cHV0X1MxID0gTWF0cml4RWZmZWN0X1MxKG91dHB1dENvbG9y
X1MwKTt7IC8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgogIDM1CXNrX0ZyYWdDb2xvciA9
IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwO319CiAgMzYJLy8gVmVydGV4IEdMU0wKICAz
NwkjdmVyc2lvbiAxMDAKICAzOAkKICAzOQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKICA0MAlw
cmVjaXNpb24gbWVkaXVtcCBzYW1wbGVyMkQ7CiAgNDEJdW5pZm9ybSBoaWdocCB2ZWM0IHNrX1JU
QWRqdXN0OwogIDQyCXVuaWZvcm0gaGlnaHAgbWF0MyB1bWF0cml4X1MxOwogIDQzCWF0dHJpYnV0
ZSBoaWdocCB2ZWMyIHBvc2l0aW9uOwogIDQ0CWF0dHJpYnV0ZSBtZWRpdW1wIHZlYzQgY29sb3I7
CiAgNDUJYXR0cmlidXRlIGhpZ2hwIHZlYzIgbG9jYWxDb29yZDsKICA0Ngl2YXJ5aW5nIG1lZGl1
bXAgdmVjNCB2Y29sb3JfUzA7CiAgNDcJdmFyeWluZyBoaWdocCB2ZWMyIHZUcmFuc2Zvcm1lZENv
b3Jkc18yX1MwOwogIDQ4CXZvaWQgbWFpbigpIHsKICA0OQl2Y29sb3JfUzAgPSBjb2xvcjsKICA1
MAlnbF9Qb3NpdGlvbiA9IHZlYzQocG9zaXRpb24sIDAuMCwgMS4wKTsKICA1MQl7CiAgNTIJdlRy
YW5zZm9ybWVkQ29vcmRzXzJfUzAgPSAodW1hdHJpeF9TMSAqIHZlYzMobG9jYWxDb29yZCwgMS4w
KSkueHk7CiAgNTMJfQogIDU0CWdsX1Bvc2l0aW9uID0gdmVjNChnbF9Qb3NpdGlvbi54eSAqIHNr
X1JUQWRqdXN0Lnh6ICsgZ2xfUG9zaXRpb24ud3cgKiBza19SVEFkanVzdC55dywgMC4wLCBnbF9Q
b3NpdGlvbi53KTsKICA1NQl9CiAgNTYJCiAgNTcJLy8gRnJhZ21lbnQgR0xTTAogIDU4CSN2ZXJz
aW9uIDEwMAogIDU5CQogIDYwCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwogIDYxCXByZWNpc2lv
biBtZWRpdW1wIHNhbXBsZXIyRDsKICA2Mgljb25zdCBoaWdocCBpbnQga01heExvb3BMaW1pdF9T
MV9jMCA9IDI7CiAgNjMJdW5pZm9ybSBoaWdocCB2ZWM0IHVjbGFtcF9TMV9jMF9jMF9jMDsKICA2
NAl1bmlmb3JtIGhpZ2hwIG1hdDMgdW1hdHJpeF9TMV9jMF9jMDsKICA2NQl1bmlmb3JtIG1lZGl1
bXAgdmVjNCB1b2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFsxNF07CiAgNjYJdW5pZm9ybSBtZWRpdW1w
IHZlYzIgdWRpcl9TMV9jMDsKICA2Nwl1bmlmb3JtIGhpZ2hwIG1hdDMgdW1hdHJpeF9TMTsKICA2
OAl1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKICA2OQl2YXJ5aW5nIG1l
ZGl1bXAgdmVjNCB2Y29sb3JfUzA7CiAgNzAJdmFyeWluZyBoaWdocCB2ZWMyIHZUcmFuc2Zvcm1l
ZENvb3Jkc18yX1MwOwogIDcxCXZvaWQgbWFpbigpIHsKICA3MgloaWdocCB2ZWMyIF8yNl90bXBf
MV9jb29yZHMgPSB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKICA3MwltZWRpdW1wIHZlYzQgXzI3
X3N1bSA9IHZlYzQoMC4wKTsKICA3NAlmb3IgKGhpZ2hwIGludCBfMjhfaSA9IDA7XzI4X2kgPCBr
TWF4TG9vcExpbWl0X1MxX2MwOyArK18yOF9pKSB7CiAgNzUJbWVkaXVtcCB2ZWM0IF8yOV9zID0g
dW9mZnNldHNBbmRLZXJuZWxfUzFfYzBbXzI4X2ldOwogIDc2CWhpZ2hwIHZlYzIgXzMwX2luQ29v
cmQgPSAodW1hdHJpeF9TMV9jMF9jMCAqIHZlYzMoXzI2X3RtcF8xX2Nvb3JkcyArIF8yOV9zLngg
KiB1ZGlyX1MxX2MwLCAxLjApKS54eTsKICA3NwloaWdocCB2ZWMyIF8zMV9zdWJzZXRDb29yZDsK
ICA3OAlfMzFfc3Vic2V0Q29vcmQueCA9IF8zMF9pbkNvb3JkLng7CiAgNzkJXzMxX3N1YnNldENv
b3JkLnkgPSBfMzBfaW5Db29yZC55OwogIDgwCWhpZ2hwIHZlYzIgXzMyX2NsYW1wZWRDb29yZCA9
IGNsYW1wKF8zMV9zdWJzZXRDb29yZCwgdWNsYW1wX1MxX2MwX2MwX2MwLnh5LCB1Y2xhbXBfUzFf
YzBfYzBfYzAuencpOwogIDgxCW1lZGl1bXAgdmVjNCBfMzNfdGV4dHVyZUNvbG9yID0gdGV4dHVy
ZTJEKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfMzJfY2xhbXBlZENvb3JkLCAtMC40NzUpOwogIDgy
CV8yN19zdW0gKz0gXzI5X3MueSAqIF8zM190ZXh0dXJlQ29sb3I7CiAgODMJaGlnaHAgdmVjMiBf
MzRfaW5Db29yZCA9ICh1bWF0cml4X1MxX2MwX2MwICogdmVjMyhfMjZfdG1wXzFfY29vcmRzICsg
XzI5X3MueiAqIHVkaXJfUzFfYzAsIDEuMCkpLnh5OwogIDg0CWhpZ2hwIHZlYzIgXzM1X3N1YnNl
dENvb3JkOwogIDg1CV8zNV9zdWJzZXRDb29yZC54ID0gXzM0X2luQ29vcmQueDsKICA4NglfMzVf
c3Vic2V0Q29vcmQueSA9IF8zNF9pbkNvb3JkLnk7CiAgODcJaGlnaHAgdmVjMiBfMzZfY2xhbXBl
ZENvb3JkID0gY2xhbXAoXzM1X3N1YnNldENvb3JkLCB1Y2xhbXBfUzFfYzBfYzBfYzAueHksIHVj
bGFtcF9TMV9jMF9jMF9jMC56dyk7CiAgODgJbWVkaXVtcCB2ZWM0IF8zN190ZXh0dXJlQ29sb3Ig
PSB0ZXh0dXJlMkQodVRleHR1cmVTYW1wbGVyXzBfUzEsIF8zNl9jbGFtcGVkQ29vcmQsIC0wLjQ3
NSk7CiAgODkJXzI3X3N1bSArPSBfMjlfcy53ICogXzM3X3RleHR1cmVDb2xvcjsKICA5MAl9CiAg
OTEJbWVkaXVtcCB2ZWM0IG91dHB1dF9TMSA9IF8yN19zdW07CiAgOTIJewogIDkzCWdsX0ZyYWdD
b2xvciA9IG91dHB1dF9TMTsKICA5NAl9CiAgOTUJfQogIDk2CQogIDk3CQpFcnJvcnM6CmVycm9y
OiBFeGNlZWRlZCBtYXggbnIgaW5kaXJlY3QgdGV4dHVyZSBsb29rdXBzICg1LzQpCgpTaGFkZXIg
Y29tcGlsYXRpb24gZXJyb3IKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIDEJLy8gVmVydGV4
IFNLU0wKICAgMgl1bmlmb3JtIGZsb2F0NCBza19SVEFkanVzdDt1bmlmb3JtIGZsb2F0M3gzIHVt
YXRyaXhfUzE7aW4gZmxvYXQyIHBvc2l0aW9uO2luIGhhbGY0IGNvbG9yO2luIGZsb2F0MiBsb2Nh
bENvb3JkO291dCBoYWxmNCB2Y29sb3JfUzA7b3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNf
Ml9TMDt2b2lkIG1haW4oKSB7Ly8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2Vv
bWV0cnlQcm9jZXNzb3IKICAgMwl2Y29sb3JfUzAgPSBjb2xvcjtza19Qb3NpdGlvbiA9IHBvc2l0
aW9uLnh5MDE7ewogICA0CXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gKHVtYXRyaXhfUzEgKiBs
b2NhbENvb3JkLnh5MSkueHk7CiAgIDUJfQogICA2CX0KICAgNwkvLyBGcmFnbWVudCBTS1NMCiAg
IDgJY29uc3QgaW50IGtNYXhMb29wTGltaXRfUzFfYzAgPSA0OwogICA5CXVuaWZvcm0gZmxvYXQ0
IHVjbGFtcF9TMV9jMF9jMF9jMDt1bmlmb3JtIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzA7dW5p
Zm9ybSBoYWxmNCB1b2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFsxNF07dW5pZm9ybSBoYWxmMiB1ZGly
X1MxX2MwO3VuaWZvcm0gZmxvYXQzeDMgdW1hdHJpeF9TMTtzYW1wbGVyMkQgdVRleHR1cmVTYW1w
bGVyXzBfUzE7CiAgMTAJaW4gaGFsZjQgdmNvbG9yX1MwO2luIGZsb2F0MiB2VHJhbnNmb3JtZWRD
b29yZHNfMl9TMDtoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwg
ZmxvYXQyIF9jb29yZHMpIHsKICAxMQlmbG9hdDIgaW5Db29yZCA9IF9jb29yZHM7ZmxvYXQyIHN1
YnNldENvb3JkO3N1YnNldENvb3JkLnggPSBpbkNvb3JkLng7c3Vic2V0Q29vcmQueSA9IGluQ29v
cmQueTtmbG9hdDIgY2xhbXBlZENvb3JkO2NsYW1wZWRDb29yZCA9IGNsYW1wKHN1YnNldENvb3Jk
LCB1Y2xhbXBfUzFfYzBfYzBfYzAueHksIHVjbGFtcF9TMV9jMF9jMF9jMC56dyk7aGFsZjQgdGV4
dHVyZUNvbG9yID0gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBjbGFtcGVkQ29vcmQpO3Jl
dHVybiB0ZXh0dXJlQ29sb3I7fQogIDEyCQogIDEzCWhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9j
MChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSB7CiAgMTQJcmV0dXJuIFRleHR1cmVFZmZl
Y3RfUzFfYzBfYzBfYzAoX2lucHV0LCAoKHVtYXRyaXhfUzFfYzBfYzApICogX2Nvb3Jkcy54eTEp
Lnh5KTsKICAxNQl9CiAgMTYJCiAgMTcJaGFsZjQgcnVudGltZV9zaGFkZXJfUzFfYzAoaGFsZjQg
X2lucHV0KSB7CiAgMTgJaGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CiAgMTkJZmxvYXQy
IF90bXBfMV9jb29yZHMgPSB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKICAyMAloYWxmNCBzdW0g
PSBoYWxmNCgwLjApOwogIDIxCWZvciAoaW50IGkgPSAwO2kgPCBrTWF4TG9vcExpbWl0X1MxX2Mw
OyArK2kpIHsKICAyMgloYWxmNCBzID0gdW9mZnNldHNBbmRLZXJuZWxfUzFfYzBbaV07CiAgMjMJ
c3VtICs9IHMueSAqIE1hdHJpeEVmZmVjdF9TMV9jMF9jMChfdG1wXzBfaW5Db2xvciwgX3RtcF8x
X2Nvb3JkcyArIGZsb2F0MihzLnggKiB1ZGlyX1MxX2MwKSk7CiAgMjQJc3VtICs9IHMudyAqIE1h
dHJpeEVmZmVjdF9TMV9jMF9jMChfdG1wXzBfaW5Db2xvciwgX3RtcF8xX2Nvb3JkcyArIGZsb2F0
MihzLnogKiB1ZGlyX1MxX2MwKSk7CiAgMjUJfQogIDI2CXJldHVybiBoYWxmNChzdW0pOwogIDI3
CX0KICAyOAkKICAyOQloYWxmNCBNYXRyaXhFZmZlY3RfUzEoaGFsZjQgX2lucHV0KSB7CiAgMzAJ
cmV0dXJuIHJ1bnRpbWVfc2hhZGVyX1MxX2MwKF9pbnB1dCk7CiAgMzEJfQogIDMyCQogIDMzCXZv
aWQgbWFpbigpIHsvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKICAz
NAloYWxmNCBvdXRwdXRDb2xvcl9TMDtvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDtjb25zdCBo
YWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpO2hhbGY0IG91dHB1dF9TMTtvdXRwdXRf
UzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3JfUzApO3sgLy8gWGZlciBQcm9jZXNzb3I6
IFBvcnRlciBEdWZmCiAgMzUJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJh
Z2VfUzA7fX0KICAzNgkvLyBWZXJ0ZXggR0xTTAogIDM3CSN2ZXJzaW9uIDEwMAogIDM4CQogIDM5
CXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwogIDQwCXByZWNpc2lvbiBtZWRpdW1wIHNhbXBsZXIy
RDsKICA0MQl1bmlmb3JtIGhpZ2hwIHZlYzQgc2tfUlRBZGp1c3Q7CiAgNDIJdW5pZm9ybSBoaWdo
cCBtYXQzIHVtYXRyaXhfUzE7CiAgNDMJYXR0cmlidXRlIGhpZ2hwIHZlYzIgcG9zaXRpb247CiAg
NDQJYXR0cmlidXRlIG1lZGl1bXAgdmVjNCBjb2xvcjsKICA0NQlhdHRyaWJ1dGUgaGlnaHAgdmVj
MiBsb2NhbENvb3JkOwogIDQ2CXZhcnlpbmcgbWVkaXVtcCB2ZWM0IHZjb2xvcl9TMDsKICA0Nwl2
YXJ5aW5nIGhpZ2hwIHZlYzIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CiAgNDgJdm9pZCBtYWlu
KCkgewogIDQ5CXZjb2xvcl9TMCA9IGNvbG9yOwogIDUwCWdsX1Bvc2l0aW9uID0gdmVjNChwb3Np
dGlvbiwgMC4wLCAxLjApOwogIDUxCXsKICA1Mgl2VHJhbnNmb3JtZWRDb29yZHNfMl9TMCA9ICh1
bWF0cml4X1MxICogdmVjMyhsb2NhbENvb3JkLCAxLjApKS54eTsKICA1Mwl9CiAgNTQJZ2xfUG9z
aXRpb24gPSB2ZWM0KGdsX1Bvc2l0aW9uLnh5ICogc2tfUlRBZGp1c3QueHogKyBnbF9Qb3NpdGlv
bi53dyAqIHNrX1JUQWRqdXN0Lnl3LCAwLjAsIGdsX1Bvc2l0aW9uLncpOwogIDU1CX0KICA1NgkK
ICA1NwkvLyBGcmFnbWVudCBHTFNMCiAgNTgJI3ZlcnNpb24gMTAwCiAgNTkJCiAgNjAJcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7CiAgNjEJcHJlY2lzaW9uIG1lZGl1bXAgc2FtcGxlcjJEOwogIDYy
CWNvbnN0IGhpZ2hwIGludCBrTWF4TG9vcExpbWl0X1MxX2MwID0gNDsKICA2Mwl1bmlmb3JtIGhp
Z2hwIHZlYzQgdWNsYW1wX1MxX2MwX2MwX2MwOwogIDY0CXVuaWZvcm0gaGlnaHAgbWF0MyB1bWF0
cml4X1MxX2MwX2MwOwogIDY1CXVuaWZvcm0gbWVkaXVtcCB2ZWM0IHVvZmZzZXRzQW5kS2VybmVs
X1MxX2MwWzE0XTsKICA2Ngl1bmlmb3JtIG1lZGl1bXAgdmVjMiB1ZGlyX1MxX2MwOwogIDY3CXVu
aWZvcm0gaGlnaHAgbWF0MyB1bWF0cml4X1MxOwogIDY4CXVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0
dXJlU2FtcGxlcl8wX1MxOwogIDY5CXZhcnlpbmcgbWVkaXVtcCB2ZWM0IHZjb2xvcl9TMDsKICA3
MAl2YXJ5aW5nIGhpZ2hwIHZlYzIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CiAgNzEJdm9pZCBt
YWluKCkgewogIDcyCWhpZ2hwIHZlYzIgXzI2X3RtcF8xX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENv
b3Jkc18yX1MwOwogIDczCW1lZGl1bXAgdmVjNCBfMjdfc3VtID0gdmVjNCgwLjApOwogIDc0CWZv
ciAoaGlnaHAgaW50IF8yOF9pID0gMDtfMjhfaSA8IGtNYXhMb29wTGltaXRfUzFfYzA7ICsrXzI4
X2kpIHsKICA3NQltZWRpdW1wIHZlYzQgXzI5X3MgPSB1b2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtf
MjhfaV07CiAgNzYJaGlnaHAgdmVjMiBfMzBfaW5Db29yZCA9ICh1bWF0cml4X1MxX2MwX2MwICog
dmVjMyhfMjZfdG1wXzFfY29vcmRzICsgXzI5X3MueCAqIHVkaXJfUzFfYzAsIDEuMCkpLnh5Owog
IDc3CWhpZ2hwIHZlYzIgXzMxX3N1YnNldENvb3JkOwogIDc4CV8zMV9zdWJzZXRDb29yZC54ID0g
XzMwX2luQ29vcmQueDsKICA3OQlfMzFfc3Vic2V0Q29vcmQueSA9IF8zMF9pbkNvb3JkLnk7CiAg
ODAJaGlnaHAgdmVjMiBfMzJfY2xhbXBlZENvb3JkID0gY2xhbXAoXzMxX3N1YnNldENvb3JkLCB1
Y2xhbXBfUzFfYzBfYzBfYzAueHksIHVjbGFtcF9TMV9jMF9jMF9jMC56dyk7CiAgODEJbWVkaXVt
cCB2ZWM0IF8zM190ZXh0dXJlQ29sb3IgPSB0ZXh0dXJlMkQodVRleHR1cmVTYW1wbGVyXzBfUzEs
IF8zMl9jbGFtcGVkQ29vcmQsIC0wLjQ3NSk7CiAgODIJXzI3X3N1bSArPSBfMjlfcy55ICogXzMz
X3RleHR1cmVDb2xvcjsKICA4MwloaWdocCB2ZWMyIF8zNF9pbkNvb3JkID0gKHVtYXRyaXhfUzFf
YzBfYzAgKiB2ZWMzKF8yNl90bXBfMV9jb29yZHMgKyBfMjlfcy56ICogdWRpcl9TMV9jMCwgMS4w
KSkueHk7CiAgODQJaGlnaHAgdmVjMiBfMzVfc3Vic2V0Q29vcmQ7CiAgODUJXzM1X3N1YnNldENv
b3JkLnggPSBfMzRfaW5Db29yZC54OwogIDg2CV8zNV9zdWJzZXRDb29yZC55ID0gXzM0X2luQ29v
cmQueTsKICA4NwloaWdocCB2ZWMyIF8zNl9jbGFtcGVkQ29vcmQgPSBjbGFtcChfMzVfc3Vic2V0
Q29vcmQsIHVjbGFtcF9TMV9jMF9jMF9jMC54eSwgdWNsYW1wX1MxX2MwX2MwX2MwLnp3KTsKICA4
OAltZWRpdW1wIHZlYzQgXzM3X3RleHR1cmVDb2xvciA9IHRleHR1cmUyRCh1VGV4dHVyZVNhbXBs
ZXJfMF9TMSwgXzM2X2NsYW1wZWRDb29yZCwgLTAuNDc1KTsKICA4OQlfMjdfc3VtICs9IF8yOV9z
LncgKiBfMzdfdGV4dHVyZUNvbG9yOwogIDkwCX0KICA5MQltZWRpdW1wIHZlYzQgb3V0cHV0X1Mx
ID0gXzI3X3N1bTsKICA5Mgl7CiAgOTMJZ2xfRnJhZ0NvbG9yID0gb3V0cHV0X1MxOwogIDk0CX0K
ICA5NQl9CiAgOTYJCiAgOTcJCkVycm9yczoKZXJyb3I6IEV4Y2VlZGVkIG1heCBuciBpbmRpcmVj
dCB0ZXh0dXJlIGxvb2t1cHMgKDkvNCkKCkZhaWxlZCB0byBjcmVhdGUgRE1BLUJVRiB0ZXh0dXJl
IG9mIHNpemUgMTAyNHg2OTM6IFVuc3VwcG9ydGVkIGRtYWJ1ZiBmb3JtYXQ6IFhSMjQ6MHhmZmZm
ZmZmZmZmZmZmZgpTaGFkZXIgY29tcGlsYXRpb24gZXJyb3IKLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAgIDEJLy8gVmVydGV4IFNLU0wKICAgMgl1bmlmb3JtIGZsb2F0NCBza19SVEFkanVzdDt1
bmlmb3JtIGZsb2F0M3gzIHVtYXRyaXhfUzE7aW4gZmxvYXQyIHBvc2l0aW9uO2luIGhhbGY0IGNv
bG9yO2luIGZsb2F0MiBsb2NhbENvb3JkO291dCBoYWxmNCB2Y29sb3JfUzA7b3V0IGZsb2F0MiB2
VHJhbnNmb3JtZWRDb29yZHNfMl9TMDt2b2lkIG1haW4oKSB7Ly8gUHJpbWl0aXZlIFByb2Nlc3Nv
ciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKICAgMwl2Y29sb3JfUzAgPSBjb2xvcjtz
a19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7ewogICA0CXZUcmFuc2Zvcm1lZENvb3Jkc18yX1Mw
ID0gKHVtYXRyaXhfUzEgKiBsb2NhbENvb3JkLnh5MSkueHk7CiAgIDUJfQogICA2CX0KICAgNwkv
LyBGcmFnbWVudCBTS1NMCiAgIDgJY29uc3QgaW50IGtNYXhMb29wTGltaXRfUzFfYzAgPSA0Owog
ICA5CXVuaWZvcm0gZmxvYXQ0IHVjbGFtcF9TMV9jMF9jMF9jMDt1bmlmb3JtIGZsb2F0M3gzIHVt
YXRyaXhfUzFfYzBfYzA7dW5pZm9ybSBoYWxmNCB1b2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFsxNF07
dW5pZm9ybSBoYWxmMiB1ZGlyX1MxX2MwO3VuaWZvcm0gZmxvYXQzeDMgdW1hdHJpeF9TMTtzYW1w
bGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CiAgMTAJaW4gaGFsZjQgdmNvbG9yX1MwO2luIGZs
b2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDtoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MwX2Mw
X2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIHsKICAxMQlmbG9hdDIgaW5Db29yZCA9
IF9jb29yZHM7ZmxvYXQyIHN1YnNldENvb3JkO3N1YnNldENvb3JkLnggPSBpbkNvb3JkLng7c3Vi
c2V0Q29vcmQueSA9IGluQ29vcmQueTtmbG9hdDIgY2xhbXBlZENvb3JkO2NsYW1wZWRDb29yZCA9
IGNsYW1wKHN1YnNldENvb3JkLCB1Y2xhbXBfUzFfYzBfYzBfYzAueHksIHVjbGFtcF9TMV9jMF9j
MF9jMC56dyk7aGFsZjQgdGV4dHVyZUNvbG9yID0gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1Mx
LCBjbGFtcGVkQ29vcmQpO3JldHVybiB0ZXh0dXJlQ29sb3I7fQogIDEyCQogIDEzCWhhbGY0IE1h
dHJpeEVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSB7CiAgMTQJ
cmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoX2lucHV0LCAoKHVtYXRyaXhfUzFfYzBf
YzApICogX2Nvb3Jkcy54eTEpLnh5KTsKICAxNQl9CiAgMTYJCiAgMTcJaGFsZjQgcnVudGltZV9z
aGFkZXJfUzFfYzAoaGFsZjQgX2lucHV0KSB7CiAgMTgJaGFsZjQgX3RtcF8wX2luQ29sb3IgPSBf
aW5wdXQ7CiAgMTkJZmxvYXQyIF90bXBfMV9jb29yZHMgPSB2VHJhbnNmb3JtZWRDb29yZHNfMl9T
MDsKICAyMAloYWxmNCBzdW0gPSBoYWxmNCgwLjApOwogIDIxCWZvciAoaW50IGkgPSAwO2kgPCBr
TWF4TG9vcExpbWl0X1MxX2MwOyArK2kpIHsKICAyMgloYWxmNCBzID0gdW9mZnNldHNBbmRLZXJu
ZWxfUzFfYzBbaV07CiAgMjMJc3VtICs9IHMueSAqIE1hdHJpeEVmZmVjdF9TMV9jMF9jMChfdG1w
XzBfaW5Db2xvciwgX3RtcF8xX2Nvb3JkcyArIGZsb2F0MihzLnggKiB1ZGlyX1MxX2MwKSk7CiAg
MjQJc3VtICs9IHMudyAqIE1hdHJpeEVmZmVjdF9TMV9jMF9jMChfdG1wXzBfaW5Db2xvciwgX3Rt
cF8xX2Nvb3JkcyArIGZsb2F0MihzLnogKiB1ZGlyX1MxX2MwKSk7CiAgMjUJfQogIDI2CXJldHVy
biBoYWxmNChzdW0pOwogIDI3CX0KICAyOAkKICAyOQloYWxmNCBNYXRyaXhFZmZlY3RfUzEoaGFs
ZjQgX2lucHV0KSB7CiAgMzAJcmV0dXJuIHJ1bnRpbWVfc2hhZGVyX1MxX2MwKF9pbnB1dCk7CiAg
MzEJfQogIDMyCQogIDMzCXZvaWQgbWFpbigpIHsvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2Vv
bWV0cnlQcm9jZXNzb3IKICAzNAloYWxmNCBvdXRwdXRDb2xvcl9TMDtvdXRwdXRDb2xvcl9TMCA9
IHZjb2xvcl9TMDtjb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpO2hhbGY0
IG91dHB1dF9TMTtvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3JfUzApO3sg
Ly8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCiAgMzUJc2tfRnJhZ0NvbG9yID0gb3V0cHV0
X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7fX0KICAzNgkvLyBWZXJ0ZXggR0xTTAogIDM3CSN2ZXJz
aW9uIDEwMAogIDM4CQogIDM5CXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwogIDQwCXByZWNpc2lv
biBtZWRpdW1wIHNhbXBsZXIyRDsKICA0MQl1bmlmb3JtIGhpZ2hwIHZlYzQgc2tfUlRBZGp1c3Q7
CiAgNDIJdW5pZm9ybSBoaWdocCBtYXQzIHVtYXRyaXhfUzE7CiAgNDMJYXR0cmlidXRlIGhpZ2hw
IHZlYzIgcG9zaXRpb247CiAgNDQJYXR0cmlidXRlIG1lZGl1bXAgdmVjNCBjb2xvcjsKICA0NQlh
dHRyaWJ1dGUgaGlnaHAgdmVjMiBsb2NhbENvb3JkOwogIDQ2CXZhcnlpbmcgbWVkaXVtcCB2ZWM0
IHZjb2xvcl9TMDsKICA0Nwl2YXJ5aW5nIGhpZ2hwIHZlYzIgdlRyYW5zZm9ybWVkQ29vcmRzXzJf
UzA7CiAgNDgJdm9pZCBtYWluKCkgewogIDQ5CXZjb2xvcl9TMCA9IGNvbG9yOwogIDUwCWdsX1Bv
c2l0aW9uID0gdmVjNChwb3NpdGlvbiwgMC4wLCAxLjApOwogIDUxCXsKICA1Mgl2VHJhbnNmb3Jt
ZWRDb29yZHNfMl9TMCA9ICh1bWF0cml4X1MxICogdmVjMyhsb2NhbENvb3JkLCAxLjApKS54eTsK
ICA1Mwl9CiAgNTQJZ2xfUG9zaXRpb24gPSB2ZWM0KGdsX1Bvc2l0aW9uLnh5ICogc2tfUlRBZGp1
c3QueHogKyBnbF9Qb3NpdGlvbi53dyAqIHNrX1JUQWRqdXN0Lnl3LCAwLjAsIGdsX1Bvc2l0aW9u
LncpOwogIDU1CX0KICA1NgkKICA1NwkvLyBGcmFnbWVudCBHTFNMCiAgNTgJI3ZlcnNpb24gMTAw
CiAgNTkJCiAgNjAJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CiAgNjEJcHJlY2lzaW9uIG1lZGl1
bXAgc2FtcGxlcjJEOwogIDYyCWNvbnN0IGhpZ2hwIGludCBrTWF4TG9vcExpbWl0X1MxX2MwID0g
NDsKICA2Mwl1bmlmb3JtIGhpZ2hwIHZlYzQgdWNsYW1wX1MxX2MwX2MwX2MwOwogIDY0CXVuaWZv
cm0gaGlnaHAgbWF0MyB1bWF0cml4X1MxX2MwX2MwOwogIDY1CXVuaWZvcm0gbWVkaXVtcCB2ZWM0
IHVvZmZzZXRzQW5kS2VybmVsX1MxX2MwWzE0XTsKICA2Ngl1bmlmb3JtIG1lZGl1bXAgdmVjMiB1
ZGlyX1MxX2MwOwogIDY3CXVuaWZvcm0gaGlnaHAgbWF0MyB1bWF0cml4X1MxOwogIDY4CXVuaWZv
cm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwogIDY5CXZhcnlpbmcgbWVkaXVtcCB2
ZWM0IHZjb2xvcl9TMDsKICA3MAl2YXJ5aW5nIGhpZ2hwIHZlYzIgdlRyYW5zZm9ybWVkQ29vcmRz
XzJfUzA7CiAgNzEJdm9pZCBtYWluKCkgewogIDcyCWhpZ2hwIHZlYzIgXzI2X3RtcF8xX2Nvb3Jk
cyA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwogIDczCW1lZGl1bXAgdmVjNCBfMjdfc3VtID0g
dmVjNCgwLjApOwogIDc0CWZvciAoaGlnaHAgaW50IF8yOF9pID0gMDtfMjhfaSA8IGtNYXhMb29w
TGltaXRfUzFfYzA7ICsrXzI4X2kpIHsKICA3NQltZWRpdW1wIHZlYzQgXzI5X3MgPSB1b2Zmc2V0
c0FuZEtlcm5lbF9TMV9jMFtfMjhfaV07CiAgNzYJaGlnaHAgdmVjMiBfMzBfaW5Db29yZCA9ICh1
bWF0cml4X1MxX2MwX2MwICogdmVjMyhfMjZfdG1wXzFfY29vcmRzICsgXzI5X3MueCAqIHVkaXJf
UzFfYzAsIDEuMCkpLnh5OwogIDc3CWhpZ2hwIHZlYzIgXzMxX3N1YnNldENvb3JkOwogIDc4CV8z
MV9zdWJzZXRDb29yZC54ID0gXzMwX2luQ29vcmQueDsKICA3OQlfMzFfc3Vic2V0Q29vcmQueSA9
IF8zMF9pbkNvb3JkLnk7CiAgODAJaGlnaHAgdmVjMiBfMzJfY2xhbXBlZENvb3JkID0gY2xhbXAo
XzMxX3N1YnNldENvb3JkLCB1Y2xhbXBfUzFfYzBfYzBfYzAueHksIHVjbGFtcF9TMV9jMF9jMF9j
MC56dyk7CiAgODEJbWVkaXVtcCB2ZWM0IF8zM190ZXh0dXJlQ29sb3IgPSB0ZXh0dXJlMkQodVRl
eHR1cmVTYW1wbGVyXzBfUzEsIF8zMl9jbGFtcGVkQ29vcmQsIC0wLjQ3NSk7CiAgODIJXzI3X3N1
bSArPSBfMjlfcy55ICogXzMzX3RleHR1cmVDb2xvcjsKICA4MwloaWdocCB2ZWMyIF8zNF9pbkNv
b3JkID0gKHVtYXRyaXhfUzFfYzBfYzAgKiB2ZWMzKF8yNl90bXBfMV9jb29yZHMgKyBfMjlfcy56
ICogdWRpcl9TMV9jMCwgMS4wKSkueHk7CiAgODQJaGlnaHAgdmVjMiBfMzVfc3Vic2V0Q29vcmQ7
CiAgODUJXzM1X3N1YnNldENvb3JkLnggPSBfMzRfaW5Db29yZC54OwogIDg2CV8zNV9zdWJzZXRD
b29yZC55ID0gXzM0X2luQ29vcmQueTsKICA4NwloaWdocCB2ZWMyIF8zNl9jbGFtcGVkQ29vcmQg
PSBjbGFtcChfMzVfc3Vic2V0Q29vcmQsIHVjbGFtcF9TMV9jMF9jMF9jMC54eSwgdWNsYW1wX1Mx
X2MwX2MwX2MwLnp3KTsKICA4OAltZWRpdW1wIHZlYzQgXzM3X3RleHR1cmVDb2xvciA9IHRleHR1
cmUyRCh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgXzM2X2NsYW1wZWRDb29yZCwgLTAuNDc1KTsKICA4
OQlfMjdfc3VtICs9IF8yOV9zLncgKiBfMzdfdGV4dHVyZUNvbG9yOwogIDkwCX0KICA5MQltZWRp
dW1wIHZlYzQgb3V0cHV0X1MxID0gXzI3X3N1bTsKICA5Mgl7CiAgOTMJZ2xfRnJhZ0NvbG9yID0g
b3V0cHV0X1MxOwogIDk0CX0KICA5NQl9CiAgOTYJCiAgOTcJCkVycm9yczoKZXJyb3I6IEV4Y2Vl
ZGVkIG1heCBuciBpbmRpcmVjdCB0ZXh0dXJlIGxvb2t1cHMgKDkvNCkKCkZhaWxlZCB0byBjcmVh
dGUgRE1BLUJVRiB0ZXh0dXJlIG9mIHNpemUgMTAyNHg2OTM6IFVuc3VwcG9ydGVkIGRtYWJ1ZiBm
b3JtYXQ6IFhSMjQ6MHhmZmZmZmZmZmZmZmZmZgpTaGFkZXIgY29tcGlsYXRpb24gZXJyb3IKLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIDEJLy8gVmVydGV4IFNLU0wKICAgMgl1bmlmb3JtIGZs
b2F0NCBza19SVEFkanVzdDt1bmlmb3JtIGZsb2F0M3gzIHVtYXRyaXhfUzE7aW4gZmxvYXQyIHBv
c2l0aW9uO2luIGhhbGY0IGNvbG9yO2luIGZsb2F0MiBsb2NhbENvb3JkO291dCBoYWxmNCB2Y29s
b3JfUzA7b3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDt2b2lkIG1haW4oKSB7Ly8g
UHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKICAgMwl2
Y29sb3JfUzAgPSBjb2xvcjtza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7ewogICA0CXZUcmFu
c2Zvcm1lZENvb3Jkc18yX1MwID0gKHVtYXRyaXhfUzEgKiBsb2NhbENvb3JkLnh5MSkueHk7CiAg
IDUJfQogICA2CX0KICAgNwkvLyBGcmFnbWVudCBTS1NMCiAgIDgJY29uc3QgaW50IGtNYXhMb29w
TGltaXRfUzFfYzAgPSAyOwogICA5CXVuaWZvcm0gZmxvYXQ0IHVjbGFtcF9TMV9jMF9jMF9jMDt1
bmlmb3JtIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzA7dW5pZm9ybSBoYWxmNCB1b2Zmc2V0c0Fu
ZEtlcm5lbF9TMV9jMFsxNF07dW5pZm9ybSBoYWxmMiB1ZGlyX1MxX2MwO3VuaWZvcm0gZmxvYXQz
eDMgdW1hdHJpeF9TMTtzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CiAgMTAJaW4gaGFs
ZjQgdmNvbG9yX1MwO2luIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDtoYWxmNCBUZXh0
dXJlRWZmZWN0X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIHsKICAx
MQlmbG9hdDIgaW5Db29yZCA9IF9jb29yZHM7ZmxvYXQyIHN1YnNldENvb3JkO3N1YnNldENvb3Jk
LnggPSBpbkNvb3JkLng7c3Vic2V0Q29vcmQueSA9IGluQ29vcmQueTtmbG9hdDIgY2xhbXBlZENv
b3JkO2NsYW1wZWRDb29yZCA9IGNsYW1wKHN1YnNldENvb3JkLCB1Y2xhbXBfUzFfYzBfYzBfYzAu
eHksIHVjbGFtcF9TMV9jMF9jMF9jMC56dyk7aGFsZjQgdGV4dHVyZUNvbG9yID0gc2FtcGxlKHVU
ZXh0dXJlU2FtcGxlcl8wX1MxLCBjbGFtcGVkQ29vcmQpO3JldHVybiB0ZXh0dXJlQ29sb3I7fQog
IDEyCQogIDEzCWhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0
MiBfY29vcmRzKSB7CiAgMTQJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoX2lucHV0
LCAoKHVtYXRyaXhfUzFfYzBfYzApICogX2Nvb3Jkcy54eTEpLnh5KTsKICAxNQl9CiAgMTYJCiAg
MTcJaGFsZjQgcnVudGltZV9zaGFkZXJfUzFfYzAoaGFsZjQgX2lucHV0KSB7CiAgMTgJaGFsZjQg
X3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CiAgMTkJZmxvYXQyIF90bXBfMV9jb29yZHMgPSB2VHJh
bnNmb3JtZWRDb29yZHNfMl9TMDsKICAyMAloYWxmNCBzdW0gPSBoYWxmNCgwLjApOwogIDIxCWZv
ciAoaW50IGkgPSAwO2kgPCBrTWF4TG9vcExpbWl0X1MxX2MwOyArK2kpIHsKICAyMgloYWxmNCBz
ID0gdW9mZnNldHNBbmRLZXJuZWxfUzFfYzBbaV07CiAgMjMJc3VtICs9IHMueSAqIE1hdHJpeEVm
ZmVjdF9TMV9jMF9jMChfdG1wXzBfaW5Db2xvciwgX3RtcF8xX2Nvb3JkcyArIGZsb2F0MihzLngg
KiB1ZGlyX1MxX2MwKSk7CiAgMjQJc3VtICs9IHMudyAqIE1hdHJpeEVmZmVjdF9TMV9jMF9jMChf
dG1wXzBfaW5Db2xvciwgX3RtcF8xX2Nvb3JkcyArIGZsb2F0MihzLnogKiB1ZGlyX1MxX2MwKSk7
CiAgMjUJfQogIDI2CXJldHVybiBoYWxmNChzdW0pOwogIDI3CX0KICAyOAkKICAyOQloYWxmNCBN
YXRyaXhFZmZlY3RfUzEoaGFsZjQgX2lucHV0KSB7CiAgMzAJcmV0dXJuIHJ1bnRpbWVfc2hhZGVy
X1MxX2MwKF9pbnB1dCk7CiAgMzEJfQogIDMyCQogIDMzCXZvaWQgbWFpbigpIHsvLyBTdGFnZSAw
LCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKICAzNAloYWxmNCBvdXRwdXRDb2xvcl9T
MDtvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDtjb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9T
MCA9IGhhbGY0KDEpO2hhbGY0IG91dHB1dF9TMTtvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEo
b3V0cHV0Q29sb3JfUzApO3sgLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCiAgMzUJc2tf
RnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7fX0KICAzNgkvLyBWZXJ0
ZXggR0xTTAogIDM3CSN2ZXJzaW9uIDEwMAogIDM4CQogIDM5CXByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OwogIDQwCXByZWNpc2lvbiBtZWRpdW1wIHNhbXBsZXIyRDsKICA0MQl1bmlmb3JtIGhpZ2hw
IHZlYzQgc2tfUlRBZGp1c3Q7CiAgNDIJdW5pZm9ybSBoaWdocCBtYXQzIHVtYXRyaXhfUzE7CiAg
NDMJYXR0cmlidXRlIGhpZ2hwIHZlYzIgcG9zaXRpb247CiAgNDQJYXR0cmlidXRlIG1lZGl1bXAg
dmVjNCBjb2xvcjsKICA0NQlhdHRyaWJ1dGUgaGlnaHAgdmVjMiBsb2NhbENvb3JkOwogIDQ2CXZh
cnlpbmcgbWVkaXVtcCB2ZWM0IHZjb2xvcl9TMDsKICA0Nwl2YXJ5aW5nIGhpZ2hwIHZlYzIgdlRy
YW5zZm9ybWVkQ29vcmRzXzJfUzA7CiAgNDgJdm9pZCBtYWluKCkgewogIDQ5CXZjb2xvcl9TMCA9
IGNvbG9yOwogIDUwCWdsX1Bvc2l0aW9uID0gdmVjNChwb3NpdGlvbiwgMC4wLCAxLjApOwogIDUx
CXsKICA1Mgl2VHJhbnNmb3JtZWRDb29yZHNfMl9TMCA9ICh1bWF0cml4X1MxICogdmVjMyhsb2Nh
bENvb3JkLCAxLjApKS54eTsKICA1Mwl9CiAgNTQJZ2xfUG9zaXRpb24gPSB2ZWM0KGdsX1Bvc2l0
aW9uLnh5ICogc2tfUlRBZGp1c3QueHogKyBnbF9Qb3NpdGlvbi53dyAqIHNrX1JUQWRqdXN0Lnl3
LCAwLjAsIGdsX1Bvc2l0aW9uLncpOwogIDU1CX0KICA1NgkKICA1NwkvLyBGcmFnbWVudCBHTFNM
CiAgNTgJI3ZlcnNpb24gMTAwCiAgNTkJCiAgNjAJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CiAg
NjEJcHJlY2lzaW9uIG1lZGl1bXAgc2FtcGxlcjJEOwogIDYyCWNvbnN0IGhpZ2hwIGludCBrTWF4
TG9vcExpbWl0X1MxX2MwID0gMjsKICA2Mwl1bmlmb3JtIGhpZ2hwIHZlYzQgdWNsYW1wX1MxX2Mw
X2MwX2MwOwogIDY0CXVuaWZvcm0gaGlnaHAgbWF0MyB1bWF0cml4X1MxX2MwX2MwOwogIDY1CXVu
aWZvcm0gbWVkaXVtcCB2ZWM0IHVvZmZzZXRzQW5kS2VybmVsX1MxX2MwWzE0XTsKICA2Ngl1bmlm
b3JtIG1lZGl1bXAgdmVjMiB1ZGlyX1MxX2MwOwogIDY3CXVuaWZvcm0gaGlnaHAgbWF0MyB1bWF0
cml4X1MxOwogIDY4CXVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwogIDY5
CXZhcnlpbmcgbWVkaXVtcCB2ZWM0IHZjb2xvcl9TMDsKICA3MAl2YXJ5aW5nIGhpZ2hwIHZlYzIg
dlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CiAgNzEJdm9pZCBtYWluKCkgewogIDcyCWhpZ2hwIHZl
YzIgXzI2X3RtcF8xX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwogIDczCW1lZGl1
bXAgdmVjNCBfMjdfc3VtID0gdmVjNCgwLjApOwogIDc0CWZvciAoaGlnaHAgaW50IF8yOF9pID0g
MDtfMjhfaSA8IGtNYXhMb29wTGltaXRfUzFfYzA7ICsrXzI4X2kpIHsKICA3NQltZWRpdW1wIHZl
YzQgXzI5X3MgPSB1b2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtfMjhfaV07CiAgNzYJaGlnaHAgdmVj
MiBfMzBfaW5Db29yZCA9ICh1bWF0cml4X1MxX2MwX2MwICogdmVjMyhfMjZfdG1wXzFfY29vcmRz
ICsgXzI5X3MueCAqIHVkaXJfUzFfYzAsIDEuMCkpLnh5OwogIDc3CWhpZ2hwIHZlYzIgXzMxX3N1
YnNldENvb3JkOwogIDc4CV8zMV9zdWJzZXRDb29yZC54ID0gXzMwX2luQ29vcmQueDsKICA3OQlf
MzFfc3Vic2V0Q29vcmQueSA9IF8zMF9pbkNvb3JkLnk7CiAgODAJaGlnaHAgdmVjMiBfMzJfY2xh
bXBlZENvb3JkID0gY2xhbXAoXzMxX3N1YnNldENvb3JkLCB1Y2xhbXBfUzFfYzBfYzBfYzAueHks
IHVjbGFtcF9TMV9jMF9jMF9jMC56dyk7CiAgODEJbWVkaXVtcCB2ZWM0IF8zM190ZXh0dXJlQ29s
b3IgPSB0ZXh0dXJlMkQodVRleHR1cmVTYW1wbGVyXzBfUzEsIF8zMl9jbGFtcGVkQ29vcmQsIC0w
LjQ3NSk7CiAgODIJXzI3X3N1bSArPSBfMjlfcy55ICogXzMzX3RleHR1cmVDb2xvcjsKICA4Mwlo
aWdocCB2ZWMyIF8zNF9pbkNvb3JkID0gKHVtYXRyaXhfUzFfYzBfYzAgKiB2ZWMzKF8yNl90bXBf
MV9jb29yZHMgKyBfMjlfcy56ICogdWRpcl9TMV9jMCwgMS4wKSkueHk7CiAgODQJaGlnaHAgdmVj
MiBfMzVfc3Vic2V0Q29vcmQ7CiAgODUJXzM1X3N1YnNldENvb3JkLnggPSBfMzRfaW5Db29yZC54
OwogIDg2CV8zNV9zdWJzZXRDb29yZC55ID0gXzM0X2luQ29vcmQueTsKICA4NwloaWdocCB2ZWMy
IF8zNl9jbGFtcGVkQ29vcmQgPSBjbGFtcChfMzVfc3Vic2V0Q29vcmQsIHVjbGFtcF9TMV9jMF9j
MF9jMC54eSwgdWNsYW1wX1MxX2MwX2MwX2MwLnp3KTsKICA4OAltZWRpdW1wIHZlYzQgXzM3X3Rl
eHR1cmVDb2xvciA9IHRleHR1cmUyRCh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgXzM2X2NsYW1wZWRD
b29yZCwgLTAuNDc1KTsKICA4OQlfMjdfc3VtICs9IF8yOV9zLncgKiBfMzdfdGV4dHVyZUNvbG9y
OwogIDkwCX0KICA5MQltZWRpdW1wIHZlYzQgb3V0cHV0X1MxID0gXzI3X3N1bTsKICA5Mgl7CiAg
OTMJZ2xfRnJhZ0NvbG9yID0gb3V0cHV0X1MxOwogIDk0CX0KICA5NQl9CiAgOTYJCiAgOTcJCkVy
cm9yczoKZXJyb3I6IEV4Y2VlZGVkIG1heCBuciBpbmRpcmVjdCB0ZXh0dXJlIGxvb2t1cHMgKDUv
NCkKClNoYWRlciBjb21waWxhdGlvbiBlcnJvcgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAg
MQkvLyBWZXJ0ZXggU0tTTAogICAyCXVuaWZvcm0gZmxvYXQ0IHNrX1JUQWRqdXN0O3VuaWZvcm0g
ZmxvYXQzeDMgdW1hdHJpeF9TMTtpbiBmbG9hdDIgcG9zaXRpb247aW4gaGFsZjQgY29sb3I7aW4g
ZmxvYXQyIGxvY2FsQ29vcmQ7b3V0IGhhbGY0IHZjb2xvcl9TMDtvdXQgZmxvYXQyIHZUcmFuc2Zv
cm1lZENvb3Jkc18yX1MwO3ZvaWQgbWFpbigpIHsvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQ
ZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgogICAzCXZjb2xvcl9TMCA9IGNvbG9yO3NrX1Bvc2l0
aW9uID0gcG9zaXRpb24ueHkwMTt7CiAgIDQJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAgPSAodW1h
dHJpeF9TMSAqIGxvY2FsQ29vcmQueHkxKS54eTsKICAgNQl9CiAgIDYJfQogICA3CS8vIEZyYWdt
ZW50IFNLU0wKICAgOAljb25zdCBpbnQga01heExvb3BMaW1pdF9TMV9jMCA9IDI7CiAgIDkJdW5p
Zm9ybSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwX2MwO3VuaWZvcm0gZmxvYXQzeDMgdW1hdHJpeF9T
MV9jMF9jMDt1bmlmb3JtIGhhbGY0IHVvZmZzZXRzQW5kS2VybmVsX1MxX2MwWzE0XTt1bmlmb3Jt
IGhhbGYyIHVkaXJfUzFfYzA7dW5pZm9ybSBmbG9hdDN4MyB1bWF0cml4X1MxO3NhbXBsZXIyRCB1
VGV4dHVyZVNhbXBsZXJfMF9TMTsKICAxMAlpbiBoYWxmNCB2Y29sb3JfUzA7aW4gZmxvYXQyIHZU
cmFuc2Zvcm1lZENvb3Jkc18yX1MwO2hhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoaGFs
ZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgewogIDExCWZsb2F0MiBpbkNvb3JkID0gX2Nvb3Jk
cztmbG9hdDIgc3Vic2V0Q29vcmQ7c3Vic2V0Q29vcmQueCA9IGluQ29vcmQueDtzdWJzZXRDb29y
ZC55ID0gaW5Db29yZC55O2Zsb2F0MiBjbGFtcGVkQ29vcmQ7Y2xhbXBlZENvb3JkID0gY2xhbXAo
c3Vic2V0Q29vcmQsIHVjbGFtcF9TMV9jMF9jMF9jMC54eSwgdWNsYW1wX1MxX2MwX2MwX2MwLnp3
KTtoYWxmNCB0ZXh0dXJlQ29sb3IgPSBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIGNsYW1w
ZWRDb29yZCk7cmV0dXJuIHRleHR1cmVDb2xvcjt9CiAgMTIJCiAgMTMJaGFsZjQgTWF0cml4RWZm
ZWN0X1MxX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIHsKICAxNAlyZXR1cm4g
VGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChfaW5wdXQsICgodW1hdHJpeF9TMV9jMF9jMCkgKiBf
Y29vcmRzLnh5MSkueHkpOwogIDE1CX0KICAxNgkKICAxNwloYWxmNCBydW50aW1lX3NoYWRlcl9T
MV9jMChoYWxmNCBfaW5wdXQpIHsKICAxOAloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsK
ICAxOQlmbG9hdDIgX3RtcF8xX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwogIDIw
CWhhbGY0IHN1bSA9IGhhbGY0KDAuMCk7CiAgMjEJZm9yIChpbnQgaSA9IDA7aSA8IGtNYXhMb29w
TGltaXRfUzFfYzA7ICsraSkgewogIDIyCWhhbGY0IHMgPSB1b2Zmc2V0c0FuZEtlcm5lbF9TMV9j
MFtpXTsKICAyMwlzdW0gKz0gcy55ICogTWF0cml4RWZmZWN0X1MxX2MwX2MwKF90bXBfMF9pbkNv
bG9yLCBfdG1wXzFfY29vcmRzICsgZmxvYXQyKHMueCAqIHVkaXJfUzFfYzApKTsKICAyNAlzdW0g
Kz0gcy53ICogTWF0cml4RWZmZWN0X1MxX2MwX2MwKF90bXBfMF9pbkNvbG9yLCBfdG1wXzFfY29v
cmRzICsgZmxvYXQyKHMueiAqIHVkaXJfUzFfYzApKTsKICAyNQl9CiAgMjYJcmV0dXJuIGhhbGY0
KHN1bSk7CiAgMjcJfQogIDI4CQogIDI5CWhhbGY0IE1hdHJpeEVmZmVjdF9TMShoYWxmNCBfaW5w
dXQpIHsKICAzMAlyZXR1cm4gcnVudGltZV9zaGFkZXJfUzFfYzAoX2lucHV0KTsKICAzMQl9CiAg
MzIJCiAgMzMJdm9pZCBtYWluKCkgey8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVBy
b2Nlc3NvcgogIDM0CWhhbGY0IG91dHB1dENvbG9yX1MwO291dHB1dENvbG9yX1MwID0gdmNvbG9y
X1MwO2NvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7aGFsZjQgb3V0cHV0
X1MxO291dHB1dF9TMSA9IE1hdHJpeEVmZmVjdF9TMShvdXRwdXRDb2xvcl9TMCk7eyAvLyBYZmVy
IFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKICAzNQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBv
dXRwdXRDb3ZlcmFnZV9TMDt9fQogIDM2CS8vIFZlcnRleCBHTFNMCiAgMzcJI3ZlcnNpb24gMTAw
CiAgMzgJCiAgMzkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CiAgNDAJcHJlY2lzaW9uIG1lZGl1
bXAgc2FtcGxlcjJEOwogIDQxCXVuaWZvcm0gaGlnaHAgdmVjNCBza19SVEFkanVzdDsKICA0Mgl1
bmlmb3JtIGhpZ2hwIG1hdDMgdW1hdHJpeF9TMTsKICA0MwlhdHRyaWJ1dGUgaGlnaHAgdmVjMiBw
b3NpdGlvbjsKICA0NAlhdHRyaWJ1dGUgbWVkaXVtcCB2ZWM0IGNvbG9yOwogIDQ1CWF0dHJpYnV0
ZSBoaWdocCB2ZWMyIGxvY2FsQ29vcmQ7CiAgNDYJdmFyeWluZyBtZWRpdW1wIHZlYzQgdmNvbG9y
X1MwOwogIDQ3CXZhcnlpbmcgaGlnaHAgdmVjMiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKICA0
OAl2b2lkIG1haW4oKSB7CiAgNDkJdmNvbG9yX1MwID0gY29sb3I7CiAgNTAJZ2xfUG9zaXRpb24g
PSB2ZWM0KHBvc2l0aW9uLCAwLjAsIDEuMCk7CiAgNTEJewogIDUyCXZUcmFuc2Zvcm1lZENvb3Jk
c18yX1MwID0gKHVtYXRyaXhfUzEgKiB2ZWMzKGxvY2FsQ29vcmQsIDEuMCkpLnh5OwogIDUzCX0K
ICA1NAlnbF9Qb3NpdGlvbiA9IHZlYzQoZ2xfUG9zaXRpb24ueHkgKiBza19SVEFkanVzdC54eiAr
IGdsX1Bvc2l0aW9uLnd3ICogc2tfUlRBZGp1c3QueXcsIDAuMCwgZ2xfUG9zaXRpb24udyk7CiAg
NTUJfQogIDU2CQogIDU3CS8vIEZyYWdtZW50IEdMU0wKICA1OAkjdmVyc2lvbiAxMDAKICA1OQkK
ICA2MAlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKICA2MQlwcmVjaXNpb24gbWVkaXVtcCBzYW1w
bGVyMkQ7CiAgNjIJY29uc3QgaGlnaHAgaW50IGtNYXhMb29wTGltaXRfUzFfYzAgPSAyOwogIDYz
CXVuaWZvcm0gaGlnaHAgdmVjNCB1Y2xhbXBfUzFfYzBfYzBfYzA7CiAgNjQJdW5pZm9ybSBoaWdo
cCBtYXQzIHVtYXRyaXhfUzFfYzBfYzA7CiAgNjUJdW5pZm9ybSBtZWRpdW1wIHZlYzQgdW9mZnNl
dHNBbmRLZXJuZWxfUzFfYzBbMTRdOwogIDY2CXVuaWZvcm0gbWVkaXVtcCB2ZWMyIHVkaXJfUzFf
YzA7CiAgNjcJdW5pZm9ybSBoaWdocCBtYXQzIHVtYXRyaXhfUzE7CiAgNjgJdW5pZm9ybSBzYW1w
bGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CiAgNjkJdmFyeWluZyBtZWRpdW1wIHZlYzQgdmNv
bG9yX1MwOwogIDcwCXZhcnlpbmcgaGlnaHAgdmVjMiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsK
ICA3MQl2b2lkIG1haW4oKSB7CiAgNzIJaGlnaHAgdmVjMiBfMjZfdG1wXzFfY29vcmRzID0gdlRy
YW5zZm9ybWVkQ29vcmRzXzJfUzA7CiAgNzMJbWVkaXVtcCB2ZWM0IF8yN19zdW0gPSB2ZWM0KDAu
MCk7CiAgNzQJZm9yIChoaWdocCBpbnQgXzI4X2kgPSAwO18yOF9pIDwga01heExvb3BMaW1pdF9T
MV9jMDsgKytfMjhfaSkgewogIDc1CW1lZGl1bXAgdmVjNCBfMjlfcyA9IHVvZmZzZXRzQW5kS2Vy
bmVsX1MxX2MwW18yOF9pXTsKICA3NgloaWdocCB2ZWMyIF8zMF9pbkNvb3JkID0gKHVtYXRyaXhf
UzFfYzBfYzAgKiB2ZWMzKF8yNl90bXBfMV9jb29yZHMgKyBfMjlfcy54ICogdWRpcl9TMV9jMCwg
MS4wKSkueHk7CiAgNzcJaGlnaHAgdmVjMiBfMzFfc3Vic2V0Q29vcmQ7CiAgNzgJXzMxX3N1YnNl
dENvb3JkLnggPSBfMzBfaW5Db29yZC54OwogIDc5CV8zMV9zdWJzZXRDb29yZC55ID0gXzMwX2lu
Q29vcmQueTsKICA4MAloaWdocCB2ZWMyIF8zMl9jbGFtcGVkQ29vcmQgPSBjbGFtcChfMzFfc3Vi
c2V0Q29vcmQsIHVjbGFtcF9TMV9jMF9jMF9jMC54eSwgdWNsYW1wX1MxX2MwX2MwX2MwLnp3KTsK
ICA4MQltZWRpdW1wIHZlYzQgXzMzX3RleHR1cmVDb2xvciA9IHRleHR1cmUyRCh1VGV4dHVyZVNh
bXBsZXJfMF9TMSwgXzMyX2NsYW1wZWRDb29yZCwgLTAuNDc1KTsKICA4MglfMjdfc3VtICs9IF8y
OV9zLnkgKiBfMzNfdGV4dHVyZUNvbG9yOwogIDgzCWhpZ2hwIHZlYzIgXzM0X2luQ29vcmQgPSAo
dW1hdHJpeF9TMV9jMF9jMCAqIHZlYzMoXzI2X3RtcF8xX2Nvb3JkcyArIF8yOV9zLnogKiB1ZGly
X1MxX2MwLCAxLjApKS54eTsKICA4NAloaWdocCB2ZWMyIF8zNV9zdWJzZXRDb29yZDsKICA4NQlf
MzVfc3Vic2V0Q29vcmQueCA9IF8zNF9pbkNvb3JkLng7CiAgODYJXzM1X3N1YnNldENvb3JkLnkg
PSBfMzRfaW5Db29yZC55OwogIDg3CWhpZ2hwIHZlYzIgXzM2X2NsYW1wZWRDb29yZCA9IGNsYW1w
KF8zNV9zdWJzZXRDb29yZCwgdWNsYW1wX1MxX2MwX2MwX2MwLnh5LCB1Y2xhbXBfUzFfYzBfYzBf
YzAuencpOwogIDg4CW1lZGl1bXAgdmVjNCBfMzdfdGV4dHVyZUNvbG9yID0gdGV4dHVyZTJEKHVU
ZXh0dXJlU2FtcGxlcl8wX1MxLCBfMzZfY2xhbXBlZENvb3JkLCAtMC40NzUpOwogIDg5CV8yN19z
dW0gKz0gXzI5X3MudyAqIF8zN190ZXh0dXJlQ29sb3I7CiAgOTAJfQogIDkxCW1lZGl1bXAgdmVj
NCBvdXRwdXRfUzEgPSBfMjdfc3VtOwogIDkyCXsKICA5MwlnbF9GcmFnQ29sb3IgPSBvdXRwdXRf
UzE7CiAgOTQJfQogIDk1CX0KICA5NgkKICA5NwkKRXJyb3JzOgplcnJvcjogRXhjZWVkZWQgbWF4
IG5yIGluZGlyZWN0IHRleHR1cmUgbG9va3VwcyAoNS80KQoKU2hhZGVyIGNvbXBpbGF0aW9uIGVy
cm9yCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAxCS8vIFZlcnRleCBTS1NMCiAgIDIJdW5p
Zm9ybSBmbG9hdDQgc2tfUlRBZGp1c3Q7dW5pZm9ybSBmbG9hdDN4MyB1bWF0cml4X1MxO2luIGZs
b2F0MiBwb3NpdGlvbjtpbiBoYWxmNCBjb2xvcjtpbiBmbG9hdDIgbG9jYWxDb29yZDtvdXQgaGFs
ZjQgdmNvbG9yX1MwO291dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7dm9pZCBtYWlu
KCkgey8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29y
CiAgIDMJdmNvbG9yX1MwID0gY29sb3I7c2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxO3sKICAg
NAl2VHJhbnNmb3JtZWRDb29yZHNfMl9TMCA9ICh1bWF0cml4X1MxICogbG9jYWxDb29yZC54eTEp
Lnh5OwogICA1CX0KICAgNgl9CiAgIDcJLy8gRnJhZ21lbnQgU0tTTAogICA4CWNvbnN0IGludCBr
TWF4TG9vcExpbWl0X1MxX2MwID0gNDsKICAgOQl1bmlmb3JtIGZsb2F0NCB1Y2xhbXBfUzFfYzBf
YzBfYzA7dW5pZm9ybSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwO3VuaWZvcm0gaGFsZjQgdW9m
ZnNldHNBbmRLZXJuZWxfUzFfYzBbMTRdO3VuaWZvcm0gaGFsZjIgdWRpcl9TMV9jMDt1bmlmb3Jt
IGZsb2F0M3gzIHVtYXRyaXhfUzE7c2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwogIDEw
CWluIGhhbGY0IHZjb2xvcl9TMDtpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7aGFs
ZjQgVGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRz
KSB7CiAgMTEJZmxvYXQyIGluQ29vcmQgPSBfY29vcmRzO2Zsb2F0MiBzdWJzZXRDb29yZDtzdWJz
ZXRDb29yZC54ID0gaW5Db29yZC54O3N1YnNldENvb3JkLnkgPSBpbkNvb3JkLnk7ZmxvYXQyIGNs
YW1wZWRDb29yZDtjbGFtcGVkQ29vcmQgPSBjbGFtcChzdWJzZXRDb29yZCwgdWNsYW1wX1MxX2Mw
X2MwX2MwLnh5LCB1Y2xhbXBfUzFfYzBfYzBfYzAuencpO2hhbGY0IHRleHR1cmVDb2xvciA9IHNh
bXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgY2xhbXBlZENvb3JkKTtyZXR1cm4gdGV4dHVyZUNv
bG9yO30KICAxMgkKICAxMwloYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoaGFsZjQgX2lucHV0
LCBmbG9hdDIgX2Nvb3JkcykgewogIDE0CXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2Mw
KF9pbnB1dCwgKCh1bWF0cml4X1MxX2MwX2MwKSAqIF9jb29yZHMueHkxKS54eSk7CiAgMTUJfQog
IDE2CQogIDE3CWhhbGY0IHJ1bnRpbWVfc2hhZGVyX1MxX2MwKGhhbGY0IF9pbnB1dCkgewogIDE4
CWhhbGY0IF90bXBfMF9pbkNvbG9yID0gX2lucHV0OwogIDE5CWZsb2F0MiBfdG1wXzFfY29vcmRz
ID0gdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CiAgMjAJaGFsZjQgc3VtID0gaGFsZjQoMC4wKTsK
ICAyMQlmb3IgKGludCBpID0gMDtpIDwga01heExvb3BMaW1pdF9TMV9jMDsgKytpKSB7CiAgMjIJ
aGFsZjQgcyA9IHVvZmZzZXRzQW5kS2VybmVsX1MxX2MwW2ldOwogIDIzCXN1bSArPSBzLnkgKiBN
YXRyaXhFZmZlY3RfUzFfYzBfYzAoX3RtcF8wX2luQ29sb3IsIF90bXBfMV9jb29yZHMgKyBmbG9h
dDIocy54ICogdWRpcl9TMV9jMCkpOwogIDI0CXN1bSArPSBzLncgKiBNYXRyaXhFZmZlY3RfUzFf
YzBfYzAoX3RtcF8wX2luQ29sb3IsIF90bXBfMV9jb29yZHMgKyBmbG9hdDIocy56ICogdWRpcl9T
MV9jMCkpOwogIDI1CX0KICAyNglyZXR1cm4gaGFsZjQoc3VtKTsKICAyNwl9CiAgMjgJCiAgMjkJ
aGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgewogIDMwCXJldHVybiBydW50aW1l
X3NoYWRlcl9TMV9jMChfaW5wdXQpOwogIDMxCX0KICAzMgkKICAzMwl2b2lkIG1haW4oKSB7Ly8g
U3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCiAgMzQJaGFsZjQgb3V0cHV0
Q29sb3JfUzA7b3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7Y29uc3QgaGFsZjQgb3V0cHV0Q292
ZXJhZ2VfUzAgPSBoYWxmNCgxKTtoYWxmNCBvdXRwdXRfUzE7b3V0cHV0X1MxID0gTWF0cml4RWZm
ZWN0X1MxKG91dHB1dENvbG9yX1MwKTt7IC8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgog
IDM1CXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwO319CiAgMzYJ
Ly8gVmVydGV4IEdMU0wKICAzNwkjdmVyc2lvbiAxMDAKICAzOAkKICAzOQlwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKICA0MAlwcmVjaXNpb24gbWVkaXVtcCBzYW1wbGVyMkQ7CiAgNDEJdW5pZm9y
bSBoaWdocCB2ZWM0IHNrX1JUQWRqdXN0OwogIDQyCXVuaWZvcm0gaGlnaHAgbWF0MyB1bWF0cml4
X1MxOwogIDQzCWF0dHJpYnV0ZSBoaWdocCB2ZWMyIHBvc2l0aW9uOwogIDQ0CWF0dHJpYnV0ZSBt
ZWRpdW1wIHZlYzQgY29sb3I7CiAgNDUJYXR0cmlidXRlIGhpZ2hwIHZlYzIgbG9jYWxDb29yZDsK
ICA0Ngl2YXJ5aW5nIG1lZGl1bXAgdmVjNCB2Y29sb3JfUzA7CiAgNDcJdmFyeWluZyBoaWdocCB2
ZWMyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwogIDQ4CXZvaWQgbWFpbigpIHsKICA0OQl2Y29s
b3JfUzAgPSBjb2xvcjsKICA1MAlnbF9Qb3NpdGlvbiA9IHZlYzQocG9zaXRpb24sIDAuMCwgMS4w
KTsKICA1MQl7CiAgNTIJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAgPSAodW1hdHJpeF9TMSAqIHZl
YzMobG9jYWxDb29yZCwgMS4wKSkueHk7CiAgNTMJfQogIDU0CWdsX1Bvc2l0aW9uID0gdmVjNChn
bF9Qb3NpdGlvbi54eSAqIHNrX1JUQWRqdXN0Lnh6ICsgZ2xfUG9zaXRpb24ud3cgKiBza19SVEFk
anVzdC55dywgMC4wLCBnbF9Qb3NpdGlvbi53KTsKICA1NQl9CiAgNTYJCiAgNTcJLy8gRnJhZ21l
bnQgR0xTTAogIDU4CSN2ZXJzaW9uIDEwMAogIDU5CQogIDYwCXByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OwogIDYxCXByZWNpc2lvbiBtZWRpdW1wIHNhbXBsZXIyRDsKICA2Mgljb25zdCBoaWdocCBp
bnQga01heExvb3BMaW1pdF9TMV9jMCA9IDQ7CiAgNjMJdW5pZm9ybSBoaWdocCB2ZWM0IHVjbGFt
cF9TMV9jMF9jMF9jMDsKICA2NAl1bmlmb3JtIGhpZ2hwIG1hdDMgdW1hdHJpeF9TMV9jMF9jMDsK
ICA2NQl1bmlmb3JtIG1lZGl1bXAgdmVjNCB1b2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFsxNF07CiAg
NjYJdW5pZm9ybSBtZWRpdW1wIHZlYzIgdWRpcl9TMV9jMDsKICA2Nwl1bmlmb3JtIGhpZ2hwIG1h
dDMgdW1hdHJpeF9TMTsKICA2OAl1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9T
MTsKICA2OQl2YXJ5aW5nIG1lZGl1bXAgdmVjNCB2Y29sb3JfUzA7CiAgNzAJdmFyeWluZyBoaWdo
cCB2ZWMyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwogIDcxCXZvaWQgbWFpbigpIHsKICA3Mglo
aWdocCB2ZWMyIF8yNl90bXBfMV9jb29yZHMgPSB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKICA3
MwltZWRpdW1wIHZlYzQgXzI3X3N1bSA9IHZlYzQoMC4wKTsKICA3NAlmb3IgKGhpZ2hwIGludCBf
MjhfaSA9IDA7XzI4X2kgPCBrTWF4TG9vcExpbWl0X1MxX2MwOyArK18yOF9pKSB7CiAgNzUJbWVk
aXVtcCB2ZWM0IF8yOV9zID0gdW9mZnNldHNBbmRLZXJuZWxfUzFfYzBbXzI4X2ldOwogIDc2CWhp
Z2hwIHZlYzIgXzMwX2luQ29vcmQgPSAodW1hdHJpeF9TMV9jMF9jMCAqIHZlYzMoXzI2X3RtcF8x
X2Nvb3JkcyArIF8yOV9zLnggKiB1ZGlyX1MxX2MwLCAxLjApKS54eTsKICA3NwloaWdocCB2ZWMy
IF8zMV9zdWJzZXRDb29yZDsKICA3OAlfMzFfc3Vic2V0Q29vcmQueCA9IF8zMF9pbkNvb3JkLng7
CiAgNzkJXzMxX3N1YnNldENvb3JkLnkgPSBfMzBfaW5Db29yZC55OwogIDgwCWhpZ2hwIHZlYzIg
XzMyX2NsYW1wZWRDb29yZCA9IGNsYW1wKF8zMV9zdWJzZXRDb29yZCwgdWNsYW1wX1MxX2MwX2Mw
X2MwLnh5LCB1Y2xhbXBfUzFfYzBfYzBfYzAuencpOwogIDgxCW1lZGl1bXAgdmVjNCBfMzNfdGV4
dHVyZUNvbG9yID0gdGV4dHVyZTJEKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfMzJfY2xhbXBlZENv
b3JkLCAtMC40NzUpOwogIDgyCV8yN19zdW0gKz0gXzI5X3MueSAqIF8zM190ZXh0dXJlQ29sb3I7
CiAgODMJaGlnaHAgdmVjMiBfMzRfaW5Db29yZCA9ICh1bWF0cml4X1MxX2MwX2MwICogdmVjMyhf
MjZfdG1wXzFfY29vcmRzICsgXzI5X3MueiAqIHVkaXJfUzFfYzAsIDEuMCkpLnh5OwogIDg0CWhp
Z2hwIHZlYzIgXzM1X3N1YnNldENvb3JkOwogIDg1CV8zNV9zdWJzZXRDb29yZC54ID0gXzM0X2lu
Q29vcmQueDsKICA4NglfMzVfc3Vic2V0Q29vcmQueSA9IF8zNF9pbkNvb3JkLnk7CiAgODcJaGln
aHAgdmVjMiBfMzZfY2xhbXBlZENvb3JkID0gY2xhbXAoXzM1X3N1YnNldENvb3JkLCB1Y2xhbXBf
UzFfYzBfYzBfYzAueHksIHVjbGFtcF9TMV9jMF9jMF9jMC56dyk7CiAgODgJbWVkaXVtcCB2ZWM0
IF8zN190ZXh0dXJlQ29sb3IgPSB0ZXh0dXJlMkQodVRleHR1cmVTYW1wbGVyXzBfUzEsIF8zNl9j
bGFtcGVkQ29vcmQsIC0wLjQ3NSk7CiAgODkJXzI3X3N1bSArPSBfMjlfcy53ICogXzM3X3RleHR1
cmVDb2xvcjsKICA5MAl9CiAgOTEJbWVkaXVtcCB2ZWM0IG91dHB1dF9TMSA9IF8yN19zdW07CiAg
OTIJewogIDkzCWdsX0ZyYWdDb2xvciA9IG91dHB1dF9TMTsKICA5NAl9CiAgOTUJfQogIDk2CQog
IDk3CQpFcnJvcnM6CmVycm9yOiBFeGNlZWRlZCBtYXggbnIgaW5kaXJlY3QgdGV4dHVyZSBsb29r
dXBzICg5LzQpCgpGYWlsZWQgdG8gY3JlYXRlIERNQS1CVUYgdGV4dHVyZSBvZiBzaXplIDEwMjR4
NjkzOiBVbnN1cHBvcnRlZCBkbWFidWYgZm9ybWF0OiBYUjI0OjB4ZmZmZmZmZmZmZmZmZmYKU2hh
ZGVyIGNvbXBpbGF0aW9uIGVycm9yCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAxCS8vIFZl
cnRleCBTS1NMCiAgIDIJdW5pZm9ybSBmbG9hdDQgc2tfUlRBZGp1c3Q7dW5pZm9ybSBmbG9hdDN4
MyB1bWF0cml4X1MxO2luIGZsb2F0MiBwb3NpdGlvbjtpbiBoYWxmNCBjb2xvcjtpbiBmbG9hdDIg
bG9jYWxDb29yZDtvdXQgaGFsZjQgdmNvbG9yX1MwO291dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29v
cmRzXzJfUzA7dm9pZCBtYWluKCkgey8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VB
QUdlb21ldHJ5UHJvY2Vzc29yCiAgIDMJdmNvbG9yX1MwID0gY29sb3I7c2tfUG9zaXRpb24gPSBw
b3NpdGlvbi54eTAxO3sKICAgNAl2VHJhbnNmb3JtZWRDb29yZHNfMl9TMCA9ICh1bWF0cml4X1Mx
ICogbG9jYWxDb29yZC54eTEpLnh5OwogICA1CX0KICAgNgl9CiAgIDcJLy8gRnJhZ21lbnQgU0tT
TAogICA4CWNvbnN0IGludCBrTWF4TG9vcExpbWl0X1MxX2MwID0gNDsKICAgOQl1bmlmb3JtIGZs
b2F0NCB1Y2xhbXBfUzFfYzBfYzBfYzA7dW5pZm9ybSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2Mw
O3VuaWZvcm0gaGFsZjQgdW9mZnNldHNBbmRLZXJuZWxfUzFfYzBbMTRdO3VuaWZvcm0gaGFsZjIg
dWRpcl9TMV9jMDt1bmlmb3JtIGZsb2F0M3gzIHVtYXRyaXhfUzE7c2FtcGxlcjJEIHVUZXh0dXJl
U2FtcGxlcl8wX1MxOwogIDEwCWluIGhhbGY0IHZjb2xvcl9TMDtpbiBmbG9hdDIgdlRyYW5zZm9y
bWVkQ29vcmRzXzJfUzA7aGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChoYWxmNCBfaW5w
dXQsIGZsb2F0MiBfY29vcmRzKSB7CiAgMTEJZmxvYXQyIGluQ29vcmQgPSBfY29vcmRzO2Zsb2F0
MiBzdWJzZXRDb29yZDtzdWJzZXRDb29yZC54ID0gaW5Db29yZC54O3N1YnNldENvb3JkLnkgPSBp
bkNvb3JkLnk7ZmxvYXQyIGNsYW1wZWRDb29yZDtjbGFtcGVkQ29vcmQgPSBjbGFtcChzdWJzZXRD
b29yZCwgdWNsYW1wX1MxX2MwX2MwX2MwLnh5LCB1Y2xhbXBfUzFfYzBfYzBfYzAuencpO2hhbGY0
IHRleHR1cmVDb2xvciA9IHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgY2xhbXBlZENvb3Jk
KTtyZXR1cm4gdGV4dHVyZUNvbG9yO30KICAxMgkKICAxMwloYWxmNCBNYXRyaXhFZmZlY3RfUzFf
YzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgewogIDE0CXJldHVybiBUZXh0dXJl
RWZmZWN0X1MxX2MwX2MwX2MwKF9pbnB1dCwgKCh1bWF0cml4X1MxX2MwX2MwKSAqIF9jb29yZHMu
eHkxKS54eSk7CiAgMTUJfQogIDE2CQogIDE3CWhhbGY0IHJ1bnRpbWVfc2hhZGVyX1MxX2MwKGhh
bGY0IF9pbnB1dCkgewogIDE4CWhhbGY0IF90bXBfMF9pbkNvbG9yID0gX2lucHV0OwogIDE5CWZs
b2F0MiBfdG1wXzFfY29vcmRzID0gdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CiAgMjAJaGFsZjQg
c3VtID0gaGFsZjQoMC4wKTsKICAyMQlmb3IgKGludCBpID0gMDtpIDwga01heExvb3BMaW1pdF9T
MV9jMDsgKytpKSB7CiAgMjIJaGFsZjQgcyA9IHVvZmZzZXRzQW5kS2VybmVsX1MxX2MwW2ldOwog
IDIzCXN1bSArPSBzLnkgKiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX3RtcF8wX2luQ29sb3IsIF90
bXBfMV9jb29yZHMgKyBmbG9hdDIocy54ICogdWRpcl9TMV9jMCkpOwogIDI0CXN1bSArPSBzLncg
KiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX3RtcF8wX2luQ29sb3IsIF90bXBfMV9jb29yZHMgKyBm
bG9hdDIocy56ICogdWRpcl9TMV9jMCkpOwogIDI1CX0KICAyNglyZXR1cm4gaGFsZjQoc3VtKTsK
ICAyNwl9CiAgMjgJCiAgMjkJaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgewog
IDMwCXJldHVybiBydW50aW1lX3NoYWRlcl9TMV9jMChfaW5wdXQpOwogIDMxCX0KICAzMgkKICAz
Mwl2b2lkIG1haW4oKSB7Ly8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29y
CiAgMzQJaGFsZjQgb3V0cHV0Q29sb3JfUzA7b3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7Y29u
c3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTtoYWxmNCBvdXRwdXRfUzE7b3V0
cHV0X1MxID0gTWF0cml4RWZmZWN0X1MxKG91dHB1dENvbG9yX1MwKTt7IC8vIFhmZXIgUHJvY2Vz
c29yOiBQb3J0ZXIgRHVmZgogIDM1CXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENv
dmVyYWdlX1MwO319CiAgMzYJLy8gVmVydGV4IEdMU0wKICAzNwkjdmVyc2lvbiAxMDAKICAzOAkK
ICAzOQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKICA0MAlwcmVjaXNpb24gbWVkaXVtcCBzYW1w
bGVyMkQ7CiAgNDEJdW5pZm9ybSBoaWdocCB2ZWM0IHNrX1JUQWRqdXN0OwogIDQyCXVuaWZvcm0g
aGlnaHAgbWF0MyB1bWF0cml4X1MxOwogIDQzCWF0dHJpYnV0ZSBoaWdocCB2ZWMyIHBvc2l0aW9u
OwogIDQ0CWF0dHJpYnV0ZSBtZWRpdW1wIHZlYzQgY29sb3I7CiAgNDUJYXR0cmlidXRlIGhpZ2hw
IHZlYzIgbG9jYWxDb29yZDsKICA0Ngl2YXJ5aW5nIG1lZGl1bXAgdmVjNCB2Y29sb3JfUzA7CiAg
NDcJdmFyeWluZyBoaWdocCB2ZWMyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwogIDQ4CXZvaWQg
bWFpbigpIHsKICA0OQl2Y29sb3JfUzAgPSBjb2xvcjsKICA1MAlnbF9Qb3NpdGlvbiA9IHZlYzQo
cG9zaXRpb24sIDAuMCwgMS4wKTsKICA1MQl7CiAgNTIJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAg
PSAodW1hdHJpeF9TMSAqIHZlYzMobG9jYWxDb29yZCwgMS4wKSkueHk7CiAgNTMJfQogIDU0CWds
X1Bvc2l0aW9uID0gdmVjNChnbF9Qb3NpdGlvbi54eSAqIHNrX1JUQWRqdXN0Lnh6ICsgZ2xfUG9z
aXRpb24ud3cgKiBza19SVEFkanVzdC55dywgMC4wLCBnbF9Qb3NpdGlvbi53KTsKICA1NQl9CiAg
NTYJCiAgNTcJLy8gRnJhZ21lbnQgR0xTTAogIDU4CSN2ZXJzaW9uIDEwMAogIDU5CQogIDYwCXBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwogIDYxCXByZWNpc2lvbiBtZWRpdW1wIHNhbXBsZXIyRDsK
ICA2Mgljb25zdCBoaWdocCBpbnQga01heExvb3BMaW1pdF9TMV9jMCA9IDQ7CiAgNjMJdW5pZm9y
bSBoaWdocCB2ZWM0IHVjbGFtcF9TMV9jMF9jMF9jMDsKICA2NAl1bmlmb3JtIGhpZ2hwIG1hdDMg
dW1hdHJpeF9TMV9jMF9jMDsKICA2NQl1bmlmb3JtIG1lZGl1bXAgdmVjNCB1b2Zmc2V0c0FuZEtl
cm5lbF9TMV9jMFsxNF07CiAgNjYJdW5pZm9ybSBtZWRpdW1wIHZlYzIgdWRpcl9TMV9jMDsKICA2
Nwl1bmlmb3JtIGhpZ2hwIG1hdDMgdW1hdHJpeF9TMTsKICA2OAl1bmlmb3JtIHNhbXBsZXIyRCB1
VGV4dHVyZVNhbXBsZXJfMF9TMTsKICA2OQl2YXJ5aW5nIG1lZGl1bXAgdmVjNCB2Y29sb3JfUzA7
CiAgNzAJdmFyeWluZyBoaWdocCB2ZWMyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwogIDcxCXZv
aWQgbWFpbigpIHsKICA3MgloaWdocCB2ZWMyIF8yNl90bXBfMV9jb29yZHMgPSB2VHJhbnNmb3Jt
ZWRDb29yZHNfMl9TMDsKICA3MwltZWRpdW1wIHZlYzQgXzI3X3N1bSA9IHZlYzQoMC4wKTsKICA3
NAlmb3IgKGhpZ2hwIGludCBfMjhfaSA9IDA7XzI4X2kgPCBrTWF4TG9vcExpbWl0X1MxX2MwOyAr
K18yOF9pKSB7CiAgNzUJbWVkaXVtcCB2ZWM0IF8yOV9zID0gdW9mZnNldHNBbmRLZXJuZWxfUzFf
YzBbXzI4X2ldOwogIDc2CWhpZ2hwIHZlYzIgXzMwX2luQ29vcmQgPSAodW1hdHJpeF9TMV9jMF9j
MCAqIHZlYzMoXzI2X3RtcF8xX2Nvb3JkcyArIF8yOV9zLnggKiB1ZGlyX1MxX2MwLCAxLjApKS54
eTsKICA3NwloaWdocCB2ZWMyIF8zMV9zdWJzZXRDb29yZDsKICA3OAlfMzFfc3Vic2V0Q29vcmQu
eCA9IF8zMF9pbkNvb3JkLng7CiAgNzkJXzMxX3N1YnNldENvb3JkLnkgPSBfMzBfaW5Db29yZC55
OwogIDgwCWhpZ2hwIHZlYzIgXzMyX2NsYW1wZWRDb29yZCA9IGNsYW1wKF8zMV9zdWJzZXRDb29y
ZCwgdWNsYW1wX1MxX2MwX2MwX2MwLnh5LCB1Y2xhbXBfUzFfYzBfYzBfYzAuencpOwogIDgxCW1l
ZGl1bXAgdmVjNCBfMzNfdGV4dHVyZUNvbG9yID0gdGV4dHVyZTJEKHVUZXh0dXJlU2FtcGxlcl8w
X1MxLCBfMzJfY2xhbXBlZENvb3JkLCAtMC40NzUpOwogIDgyCV8yN19zdW0gKz0gXzI5X3MueSAq
IF8zM190ZXh0dXJlQ29sb3I7CiAgODMJaGlnaHAgdmVjMiBfMzRfaW5Db29yZCA9ICh1bWF0cml4
X1MxX2MwX2MwICogdmVjMyhfMjZfdG1wXzFfY29vcmRzICsgXzI5X3MueiAqIHVkaXJfUzFfYzAs
IDEuMCkpLnh5OwogIDg0CWhpZ2hwIHZlYzIgXzM1X3N1YnNldENvb3JkOwogIDg1CV8zNV9zdWJz
ZXRDb29yZC54ID0gXzM0X2luQ29vcmQueDsKICA4NglfMzVfc3Vic2V0Q29vcmQueSA9IF8zNF9p
bkNvb3JkLnk7CiAgODcJaGlnaHAgdmVjMiBfMzZfY2xhbXBlZENvb3JkID0gY2xhbXAoXzM1X3N1
YnNldENvb3JkLCB1Y2xhbXBfUzFfYzBfYzBfYzAueHksIHVjbGFtcF9TMV9jMF9jMF9jMC56dyk7
CiAgODgJbWVkaXVtcCB2ZWM0IF8zN190ZXh0dXJlQ29sb3IgPSB0ZXh0dXJlMkQodVRleHR1cmVT
YW1wbGVyXzBfUzEsIF8zNl9jbGFtcGVkQ29vcmQsIC0wLjQ3NSk7CiAgODkJXzI3X3N1bSArPSBf
Mjlfcy53ICogXzM3X3RleHR1cmVDb2xvcjsKICA5MAl9CiAgOTEJbWVkaXVtcCB2ZWM0IG91dHB1
dF9TMSA9IF8yN19zdW07CiAgOTIJewogIDkzCWdsX0ZyYWdDb2xvciA9IG91dHB1dF9TMTsKICA5
NAl9CiAgOTUJfQogIDk2CQogIDk3CQpFcnJvcnM6CmVycm9yOiBFeGNlZWRlZCBtYXggbnIgaW5k
aXJlY3QgdGV4dHVyZSBsb29rdXBzICg5LzQpCgpGYWlsZWQgdG8gY3JlYXRlIERNQS1CVUYgdGV4
dHVyZSBvZiBzaXplIDEwMjR4NjkzOiBVbnN1cHBvcnRlZCBkbWFidWYgZm9ybWF0OiBYUjI0OjB4
ZmZmZmZmZmZmZmZmZmYKRmFpbGVkIHRvIGNyZWF0ZSBETUEtQlVGIHRleHR1cmUgb2Ygc2l6ZSAx
MDI0eDY5MzogVW5zdXBwb3J0ZWQgZG1hYnVmIGZvcm1hdDogWFIyNDoweGZmZmZmZmZmZmZmZmZm
ClNoYWRlciBjb21waWxhdGlvbiBlcnJvcgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgMQkv
LyBWZXJ0ZXggU0tTTAogICAyCXVuaWZvcm0gZmxvYXQ0IHNrX1JUQWRqdXN0O3VuaWZvcm0gZmxv
YXQzeDMgdW1hdHJpeF9TMTtpbiBmbG9hdDIgcG9zaXRpb247aW4gaGFsZjQgY29sb3I7aW4gZmxv
YXQyIGxvY2FsQ29vcmQ7b3V0IGhhbGY0IHZjb2xvcl9TMDtvdXQgZmxvYXQyIHZUcmFuc2Zvcm1l
ZENvb3Jkc18yX1MwO3ZvaWQgbWFpbigpIHsvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJF
ZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgogICAzCXZjb2xvcl9TMCA9IGNvbG9yO3NrX1Bvc2l0aW9u
ID0gcG9zaXRpb24ueHkwMTt7CiAgIDQJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAgPSAodW1hdHJp
eF9TMSAqIGxvY2FsQ29vcmQueHkxKS54eTsKICAgNQl9CiAgIDYJfQogICA3CS8vIEZyYWdtZW50
IFNLU0wKICAgOAljb25zdCBpbnQga01heExvb3BMaW1pdF9TMV9jMCA9IDI7CiAgIDkJdW5pZm9y
bSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwX2MwO3VuaWZvcm0gZmxvYXQzeDMgdW1hdHJpeF9TMV9j
MF9jMDt1bmlmb3JtIGhhbGY0IHVvZmZzZXRzQW5kS2VybmVsX1MxX2MwWzE0XTt1bmlmb3JtIGhh
bGYyIHVkaXJfUzFfYzA7dW5pZm9ybSBmbG9hdDN4MyB1bWF0cml4X1MxO3NhbXBsZXIyRCB1VGV4
dHVyZVNhbXBsZXJfMF9TMTsKICAxMAlpbiBoYWxmNCB2Y29sb3JfUzA7aW4gZmxvYXQyIHZUcmFu
c2Zvcm1lZENvb3Jkc18yX1MwO2hhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoaGFsZjQg
X2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgewogIDExCWZsb2F0MiBpbkNvb3JkID0gX2Nvb3Jkcztm
bG9hdDIgc3Vic2V0Q29vcmQ7c3Vic2V0Q29vcmQueCA9IGluQ29vcmQueDtzdWJzZXRDb29yZC55
ID0gaW5Db29yZC55O2Zsb2F0MiBjbGFtcGVkQ29vcmQ7Y2xhbXBlZENvb3JkID0gY2xhbXAoc3Vi
c2V0Q29vcmQsIHVjbGFtcF9TMV9jMF9jMF9jMC54eSwgdWNsYW1wX1MxX2MwX2MwX2MwLnp3KTto
YWxmNCB0ZXh0dXJlQ29sb3IgPSBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIGNsYW1wZWRD
b29yZCk7cmV0dXJuIHRleHR1cmVDb2xvcjt9CiAgMTIJCiAgMTMJaGFsZjQgTWF0cml4RWZmZWN0
X1MxX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIHsKICAxNAlyZXR1cm4gVGV4
dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChfaW5wdXQsICgodW1hdHJpeF9TMV9jMF9jMCkgKiBfY29v
cmRzLnh5MSkueHkpOwogIDE1CX0KICAxNgkKICAxNwloYWxmNCBydW50aW1lX3NoYWRlcl9TMV9j
MChoYWxmNCBfaW5wdXQpIHsKICAxOAloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKICAx
OQlmbG9hdDIgX3RtcF8xX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwogIDIwCWhh
bGY0IHN1bSA9IGhhbGY0KDAuMCk7CiAgMjEJZm9yIChpbnQgaSA9IDA7aSA8IGtNYXhMb29wTGlt
aXRfUzFfYzA7ICsraSkgewogIDIyCWhhbGY0IHMgPSB1b2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtp
XTsKICAyMwlzdW0gKz0gcy55ICogTWF0cml4RWZmZWN0X1MxX2MwX2MwKF90bXBfMF9pbkNvbG9y
LCBfdG1wXzFfY29vcmRzICsgZmxvYXQyKHMueCAqIHVkaXJfUzFfYzApKTsKICAyNAlzdW0gKz0g
cy53ICogTWF0cml4RWZmZWN0X1MxX2MwX2MwKF90bXBfMF9pbkNvbG9yLCBfdG1wXzFfY29vcmRz
ICsgZmxvYXQyKHMueiAqIHVkaXJfUzFfYzApKTsKICAyNQl9CiAgMjYJcmV0dXJuIGhhbGY0KHN1
bSk7CiAgMjcJfQogIDI4CQogIDI5CWhhbGY0IE1hdHJpeEVmZmVjdF9TMShoYWxmNCBfaW5wdXQp
IHsKICAzMAlyZXR1cm4gcnVudGltZV9zaGFkZXJfUzFfYzAoX2lucHV0KTsKICAzMQl9CiAgMzIJ
CiAgMzMJdm9pZCBtYWluKCkgey8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nl
c3NvcgogIDM0CWhhbGY0IG91dHB1dENvbG9yX1MwO291dHB1dENvbG9yX1MwID0gdmNvbG9yX1Mw
O2NvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7aGFsZjQgb3V0cHV0X1Mx
O291dHB1dF9TMSA9IE1hdHJpeEVmZmVjdF9TMShvdXRwdXRDb2xvcl9TMCk7eyAvLyBYZmVyIFBy
b2Nlc3NvcjogUG9ydGVyIER1ZmYKICAzNQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRw
dXRDb3ZlcmFnZV9TMDt9fQogIDM2CS8vIFZlcnRleCBHTFNMCiAgMzcJI3ZlcnNpb24gMTAwCiAg
MzgJCiAgMzkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CiAgNDAJcHJlY2lzaW9uIG1lZGl1bXAg
c2FtcGxlcjJEOwogIDQxCXVuaWZvcm0gaGlnaHAgdmVjNCBza19SVEFkanVzdDsKICA0Mgl1bmlm
b3JtIGhpZ2hwIG1hdDMgdW1hdHJpeF9TMTsKICA0MwlhdHRyaWJ1dGUgaGlnaHAgdmVjMiBwb3Np
dGlvbjsKICA0NAlhdHRyaWJ1dGUgbWVkaXVtcCB2ZWM0IGNvbG9yOwogIDQ1CWF0dHJpYnV0ZSBo
aWdocCB2ZWMyIGxvY2FsQ29vcmQ7CiAgNDYJdmFyeWluZyBtZWRpdW1wIHZlYzQgdmNvbG9yX1Mw
OwogIDQ3CXZhcnlpbmcgaGlnaHAgdmVjMiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKICA0OAl2
b2lkIG1haW4oKSB7CiAgNDkJdmNvbG9yX1MwID0gY29sb3I7CiAgNTAJZ2xfUG9zaXRpb24gPSB2
ZWM0KHBvc2l0aW9uLCAwLjAsIDEuMCk7CiAgNTEJewogIDUyCXZUcmFuc2Zvcm1lZENvb3Jkc18y
X1MwID0gKHVtYXRyaXhfUzEgKiB2ZWMzKGxvY2FsQ29vcmQsIDEuMCkpLnh5OwogIDUzCX0KICA1
NAlnbF9Qb3NpdGlvbiA9IHZlYzQoZ2xfUG9zaXRpb24ueHkgKiBza19SVEFkanVzdC54eiArIGds
X1Bvc2l0aW9uLnd3ICogc2tfUlRBZGp1c3QueXcsIDAuMCwgZ2xfUG9zaXRpb24udyk7CiAgNTUJ
fQogIDU2CQogIDU3CS8vIEZyYWdtZW50IEdMU0wKICA1OAkjdmVyc2lvbiAxMDAKICA1OQkKICA2
MAlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKICA2MQlwcmVjaXNpb24gbWVkaXVtcCBzYW1wbGVy
MkQ7CiAgNjIJY29uc3QgaGlnaHAgaW50IGtNYXhMb29wTGltaXRfUzFfYzAgPSAyOwogIDYzCXVu
aWZvcm0gaGlnaHAgdmVjNCB1Y2xhbXBfUzFfYzBfYzBfYzA7CiAgNjQJdW5pZm9ybSBoaWdocCBt
YXQzIHVtYXRyaXhfUzFfYzBfYzA7CiAgNjUJdW5pZm9ybSBtZWRpdW1wIHZlYzQgdW9mZnNldHNB
bmRLZXJuZWxfUzFfYzBbMTRdOwogIDY2CXVuaWZvcm0gbWVkaXVtcCB2ZWMyIHVkaXJfUzFfYzA7
CiAgNjcJdW5pZm9ybSBoaWdocCBtYXQzIHVtYXRyaXhfUzE7CiAgNjgJdW5pZm9ybSBzYW1wbGVy
MkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CiAgNjkJdmFyeWluZyBtZWRpdW1wIHZlYzQgdmNvbG9y
X1MwOwogIDcwCXZhcnlpbmcgaGlnaHAgdmVjMiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKICA3
MQl2b2lkIG1haW4oKSB7CiAgNzIJaGlnaHAgdmVjMiBfMjZfdG1wXzFfY29vcmRzID0gdlRyYW5z
Zm9ybWVkQ29vcmRzXzJfUzA7CiAgNzMJbWVkaXVtcCB2ZWM0IF8yN19zdW0gPSB2ZWM0KDAuMCk7
CiAgNzQJZm9yIChoaWdocCBpbnQgXzI4X2kgPSAwO18yOF9pIDwga01heExvb3BMaW1pdF9TMV9j
MDsgKytfMjhfaSkgewogIDc1CW1lZGl1bXAgdmVjNCBfMjlfcyA9IHVvZmZzZXRzQW5kS2VybmVs
X1MxX2MwW18yOF9pXTsKICA3NgloaWdocCB2ZWMyIF8zMF9pbkNvb3JkID0gKHVtYXRyaXhfUzFf
YzBfYzAgKiB2ZWMzKF8yNl90bXBfMV9jb29yZHMgKyBfMjlfcy54ICogdWRpcl9TMV9jMCwgMS4w
KSkueHk7CiAgNzcJaGlnaHAgdmVjMiBfMzFfc3Vic2V0Q29vcmQ7CiAgNzgJXzMxX3N1YnNldENv
b3JkLnggPSBfMzBfaW5Db29yZC54OwogIDc5CV8zMV9zdWJzZXRDb29yZC55ID0gXzMwX2luQ29v
cmQueTsKICA4MAloaWdocCB2ZWMyIF8zMl9jbGFtcGVkQ29vcmQgPSBjbGFtcChfMzFfc3Vic2V0
Q29vcmQsIHVjbGFtcF9TMV9jMF9jMF9jMC54eSwgdWNsYW1wX1MxX2MwX2MwX2MwLnp3KTsKICA4
MQltZWRpdW1wIHZlYzQgXzMzX3RleHR1cmVDb2xvciA9IHRleHR1cmUyRCh1VGV4dHVyZVNhbXBs
ZXJfMF9TMSwgXzMyX2NsYW1wZWRDb29yZCwgLTAuNDc1KTsKICA4MglfMjdfc3VtICs9IF8yOV9z
LnkgKiBfMzNfdGV4dHVyZUNvbG9yOwogIDgzCWhpZ2hwIHZlYzIgXzM0X2luQ29vcmQgPSAodW1h
dHJpeF9TMV9jMF9jMCAqIHZlYzMoXzI2X3RtcF8xX2Nvb3JkcyArIF8yOV9zLnogKiB1ZGlyX1Mx
X2MwLCAxLjApKS54eTsKICA4NAloaWdocCB2ZWMyIF8zNV9zdWJzZXRDb29yZDsKICA4NQlfMzVf
c3Vic2V0Q29vcmQueCA9IF8zNF9pbkNvb3JkLng7CiAgODYJXzM1X3N1YnNldENvb3JkLnkgPSBf
MzRfaW5Db29yZC55OwogIDg3CWhpZ2hwIHZlYzIgXzM2X2NsYW1wZWRDb29yZCA9IGNsYW1wKF8z
NV9zdWJzZXRDb29yZCwgdWNsYW1wX1MxX2MwX2MwX2MwLnh5LCB1Y2xhbXBfUzFfYzBfYzBfYzAu
encpOwogIDg4CW1lZGl1bXAgdmVjNCBfMzdfdGV4dHVyZUNvbG9yID0gdGV4dHVyZTJEKHVUZXh0
dXJlU2FtcGxlcl8wX1MxLCBfMzZfY2xhbXBlZENvb3JkLCAtMC40NzUpOwogIDg5CV8yN19zdW0g
Kz0gXzI5X3MudyAqIF8zN190ZXh0dXJlQ29sb3I7CiAgOTAJfQogIDkxCW1lZGl1bXAgdmVjNCBv
dXRwdXRfUzEgPSBfMjdfc3VtOwogIDkyCXsKICA5MwlnbF9GcmFnQ29sb3IgPSBvdXRwdXRfUzE7
CiAgOTQJfQogIDk1CX0KICA5NgkKICA5NwkKRXJyb3JzOgplcnJvcjogRXhjZWVkZWQgbWF4IG5y
IGluZGlyZWN0IHRleHR1cmUgbG9va3VwcyAoNS80KQoKU2hhZGVyIGNvbXBpbGF0aW9uIGVycm9y
Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAxCS8vIFZlcnRleCBTS1NMCiAgIDIJdW5pZm9y
bSBmbG9hdDQgc2tfUlRBZGp1c3Q7dW5pZm9ybSBmbG9hdDN4MyB1bWF0cml4X1MxO2luIGZsb2F0
MiBwb3NpdGlvbjtpbiBoYWxmNCBjb2xvcjtpbiBmbG9hdDIgbG9jYWxDb29yZDtvdXQgaGFsZjQg
dmNvbG9yX1MwO291dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7dm9pZCBtYWluKCkg
ey8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCiAg
IDMJdmNvbG9yX1MwID0gY29sb3I7c2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxO3sKICAgNAl2
VHJhbnNmb3JtZWRDb29yZHNfMl9TMCA9ICh1bWF0cml4X1MxICogbG9jYWxDb29yZC54eTEpLnh5
OwogICA1CX0KICAgNgl9CiAgIDcJLy8gRnJhZ21lbnQgU0tTTAogICA4CWNvbnN0IGludCBrTWF4
TG9vcExpbWl0X1MxX2MwID0gMjsKICAgOQl1bmlmb3JtIGZsb2F0NCB1Y2xhbXBfUzFfYzBfYzBf
YzA7dW5pZm9ybSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwO3VuaWZvcm0gaGFsZjQgdW9mZnNl
dHNBbmRLZXJuZWxfUzFfYzBbMTRdO3VuaWZvcm0gaGFsZjIgdWRpcl9TMV9jMDt1bmlmb3JtIGZs
b2F0M3gzIHVtYXRyaXhfUzE7c2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwogIDEwCWlu
IGhhbGY0IHZjb2xvcl9TMDtpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7aGFsZjQg
VGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSB7
CiAgMTEJZmxvYXQyIGluQ29vcmQgPSBfY29vcmRzO2Zsb2F0MiBzdWJzZXRDb29yZDtzdWJzZXRD
b29yZC54ID0gaW5Db29yZC54O3N1YnNldENvb3JkLnkgPSBpbkNvb3JkLnk7ZmxvYXQyIGNsYW1w
ZWRDb29yZDtjbGFtcGVkQ29vcmQgPSBjbGFtcChzdWJzZXRDb29yZCwgdWNsYW1wX1MxX2MwX2Mw
X2MwLnh5LCB1Y2xhbXBfUzFfYzBfYzBfYzAuencpO2hhbGY0IHRleHR1cmVDb2xvciA9IHNhbXBs
ZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgY2xhbXBlZENvb3JkKTtyZXR1cm4gdGV4dHVyZUNvbG9y
O30KICAxMgkKICAxMwloYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoaGFsZjQgX2lucHV0LCBm
bG9hdDIgX2Nvb3JkcykgewogIDE0CXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKF9p
bnB1dCwgKCh1bWF0cml4X1MxX2MwX2MwKSAqIF9jb29yZHMueHkxKS54eSk7CiAgMTUJfQogIDE2
CQogIDE3CWhhbGY0IHJ1bnRpbWVfc2hhZGVyX1MxX2MwKGhhbGY0IF9pbnB1dCkgewogIDE4CWhh
bGY0IF90bXBfMF9pbkNvbG9yID0gX2lucHV0OwogIDE5CWZsb2F0MiBfdG1wXzFfY29vcmRzID0g
dlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CiAgMjAJaGFsZjQgc3VtID0gaGFsZjQoMC4wKTsKICAy
MQlmb3IgKGludCBpID0gMDtpIDwga01heExvb3BMaW1pdF9TMV9jMDsgKytpKSB7CiAgMjIJaGFs
ZjQgcyA9IHVvZmZzZXRzQW5kS2VybmVsX1MxX2MwW2ldOwogIDIzCXN1bSArPSBzLnkgKiBNYXRy
aXhFZmZlY3RfUzFfYzBfYzAoX3RtcF8wX2luQ29sb3IsIF90bXBfMV9jb29yZHMgKyBmbG9hdDIo
cy54ICogdWRpcl9TMV9jMCkpOwogIDI0CXN1bSArPSBzLncgKiBNYXRyaXhFZmZlY3RfUzFfYzBf
YzAoX3RtcF8wX2luQ29sb3IsIF90bXBfMV9jb29yZHMgKyBmbG9hdDIocy56ICogdWRpcl9TMV9j
MCkpOwogIDI1CX0KICAyNglyZXR1cm4gaGFsZjQoc3VtKTsKICAyNwl9CiAgMjgJCiAgMjkJaGFs
ZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgewogIDMwCXJldHVybiBydW50aW1lX3No
YWRlcl9TMV9jMChfaW5wdXQpOwogIDMxCX0KICAzMgkKICAzMwl2b2lkIG1haW4oKSB7Ly8gU3Rh
Z2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCiAgMzQJaGFsZjQgb3V0cHV0Q29s
b3JfUzA7b3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7Y29uc3QgaGFsZjQgb3V0cHV0Q292ZXJh
Z2VfUzAgPSBoYWxmNCgxKTtoYWxmNCBvdXRwdXRfUzE7b3V0cHV0X1MxID0gTWF0cml4RWZmZWN0
X1MxKG91dHB1dENvbG9yX1MwKTt7IC8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgogIDM1
CXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwO319CiAgMzYJLy8g
VmVydGV4IEdMU0wKICAzNwkjdmVyc2lvbiAxMDAKICAzOAkKICAzOQlwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKICA0MAlwcmVjaXNpb24gbWVkaXVtcCBzYW1wbGVyMkQ7CiAgNDEJdW5pZm9ybSBo
aWdocCB2ZWM0IHNrX1JUQWRqdXN0OwogIDQyCXVuaWZvcm0gaGlnaHAgbWF0MyB1bWF0cml4X1Mx
OwogIDQzCWF0dHJpYnV0ZSBoaWdocCB2ZWMyIHBvc2l0aW9uOwogIDQ0CWF0dHJpYnV0ZSBtZWRp
dW1wIHZlYzQgY29sb3I7CiAgNDUJYXR0cmlidXRlIGhpZ2hwIHZlYzIgbG9jYWxDb29yZDsKICA0
Ngl2YXJ5aW5nIG1lZGl1bXAgdmVjNCB2Y29sb3JfUzA7CiAgNDcJdmFyeWluZyBoaWdocCB2ZWMy
IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwogIDQ4CXZvaWQgbWFpbigpIHsKICA0OQl2Y29sb3Jf
UzAgPSBjb2xvcjsKICA1MAlnbF9Qb3NpdGlvbiA9IHZlYzQocG9zaXRpb24sIDAuMCwgMS4wKTsK
ICA1MQl7CiAgNTIJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAgPSAodW1hdHJpeF9TMSAqIHZlYzMo
bG9jYWxDb29yZCwgMS4wKSkueHk7CiAgNTMJfQogIDU0CWdsX1Bvc2l0aW9uID0gdmVjNChnbF9Q
b3NpdGlvbi54eSAqIHNrX1JUQWRqdXN0Lnh6ICsgZ2xfUG9zaXRpb24ud3cgKiBza19SVEFkanVz
dC55dywgMC4wLCBnbF9Qb3NpdGlvbi53KTsKICA1NQl9CiAgNTYJCiAgNTcJLy8gRnJhZ21lbnQg
R0xTTAogIDU4CSN2ZXJzaW9uIDEwMAogIDU5CQogIDYwCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OwogIDYxCXByZWNpc2lvbiBtZWRpdW1wIHNhbXBsZXIyRDsKICA2Mgljb25zdCBoaWdocCBpbnQg
a01heExvb3BMaW1pdF9TMV9jMCA9IDI7CiAgNjMJdW5pZm9ybSBoaWdocCB2ZWM0IHVjbGFtcF9T
MV9jMF9jMF9jMDsKICA2NAl1bmlmb3JtIGhpZ2hwIG1hdDMgdW1hdHJpeF9TMV9jMF9jMDsKICA2
NQl1bmlmb3JtIG1lZGl1bXAgdmVjNCB1b2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFsxNF07CiAgNjYJ
dW5pZm9ybSBtZWRpdW1wIHZlYzIgdWRpcl9TMV9jMDsKICA2Nwl1bmlmb3JtIGhpZ2hwIG1hdDMg
dW1hdHJpeF9TMTsKICA2OAl1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsK
ICA2OQl2YXJ5aW5nIG1lZGl1bXAgdmVjNCB2Y29sb3JfUzA7CiAgNzAJdmFyeWluZyBoaWdocCB2
ZWMyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwogIDcxCXZvaWQgbWFpbigpIHsKICA3MgloaWdo
cCB2ZWMyIF8yNl90bXBfMV9jb29yZHMgPSB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKICA3Mwlt
ZWRpdW1wIHZlYzQgXzI3X3N1bSA9IHZlYzQoMC4wKTsKICA3NAlmb3IgKGhpZ2hwIGludCBfMjhf
aSA9IDA7XzI4X2kgPCBrTWF4TG9vcExpbWl0X1MxX2MwOyArK18yOF9pKSB7CiAgNzUJbWVkaXVt
cCB2ZWM0IF8yOV9zID0gdW9mZnNldHNBbmRLZXJuZWxfUzFfYzBbXzI4X2ldOwogIDc2CWhpZ2hw
IHZlYzIgXzMwX2luQ29vcmQgPSAodW1hdHJpeF9TMV9jMF9jMCAqIHZlYzMoXzI2X3RtcF8xX2Nv
b3JkcyArIF8yOV9zLnggKiB1ZGlyX1MxX2MwLCAxLjApKS54eTsKICA3NwloaWdocCB2ZWMyIF8z
MV9zdWJzZXRDb29yZDsKICA3OAlfMzFfc3Vic2V0Q29vcmQueCA9IF8zMF9pbkNvb3JkLng7CiAg
NzkJXzMxX3N1YnNldENvb3JkLnkgPSBfMzBfaW5Db29yZC55OwogIDgwCWhpZ2hwIHZlYzIgXzMy
X2NsYW1wZWRDb29yZCA9IGNsYW1wKF8zMV9zdWJzZXRDb29yZCwgdWNsYW1wX1MxX2MwX2MwX2Mw
Lnh5LCB1Y2xhbXBfUzFfYzBfYzBfYzAuencpOwogIDgxCW1lZGl1bXAgdmVjNCBfMzNfdGV4dHVy
ZUNvbG9yID0gdGV4dHVyZTJEKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfMzJfY2xhbXBlZENvb3Jk
LCAtMC40NzUpOwogIDgyCV8yN19zdW0gKz0gXzI5X3MueSAqIF8zM190ZXh0dXJlQ29sb3I7CiAg
ODMJaGlnaHAgdmVjMiBfMzRfaW5Db29yZCA9ICh1bWF0cml4X1MxX2MwX2MwICogdmVjMyhfMjZf
dG1wXzFfY29vcmRzICsgXzI5X3MueiAqIHVkaXJfUzFfYzAsIDEuMCkpLnh5OwogIDg0CWhpZ2hw
IHZlYzIgXzM1X3N1YnNldENvb3JkOwogIDg1CV8zNV9zdWJzZXRDb29yZC54ID0gXzM0X2luQ29v
cmQueDsKICA4NglfMzVfc3Vic2V0Q29vcmQueSA9IF8zNF9pbkNvb3JkLnk7CiAgODcJaGlnaHAg
dmVjMiBfMzZfY2xhbXBlZENvb3JkID0gY2xhbXAoXzM1X3N1YnNldENvb3JkLCB1Y2xhbXBfUzFf
YzBfYzBfYzAueHksIHVjbGFtcF9TMV9jMF9jMF9jMC56dyk7CiAgODgJbWVkaXVtcCB2ZWM0IF8z
N190ZXh0dXJlQ29sb3IgPSB0ZXh0dXJlMkQodVRleHR1cmVTYW1wbGVyXzBfUzEsIF8zNl9jbGFt
cGVkQ29vcmQsIC0wLjQ3NSk7CiAgODkJXzI3X3N1bSArPSBfMjlfcy53ICogXzM3X3RleHR1cmVD
b2xvcjsKICA5MAl9CiAgOTEJbWVkaXVtcCB2ZWM0IG91dHB1dF9TMSA9IF8yN19zdW07CiAgOTIJ
ewogIDkzCWdsX0ZyYWdDb2xvciA9IG91dHB1dF9TMTsKICA5NAl9CiAgOTUJfQogIDk2CQogIDk3
CQpFcnJvcnM6CmVycm9yOiBFeGNlZWRlZCBtYXggbnIgaW5kaXJlY3QgdGV4dHVyZSBsb29rdXBz
ICg1LzQpCgpGYWlsZWQgdG8gY3JlYXRlIERNQS1CVUYgdGV4dHVyZSBvZiBzaXplIDEwMjR4Njkz
OiBVbnN1cHBvcnRlZCBkbWFidWYgZm9ybWF0OiBYUjI0OjB4ZmZmZmZmZmZmZmZmZmYKU2hhZGVy
IGNvbXBpbGF0aW9uIGVycm9yCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAxCS8vIFZlcnRl
eCBTS1NMCiAgIDIJdW5pZm9ybSBmbG9hdDQgc2tfUlRBZGp1c3Q7dW5pZm9ybSBmbG9hdDN4MyB1
bWF0cml4X1MxO2luIGZsb2F0MiBwb3NpdGlvbjtpbiBoYWxmNCBjb2xvcjtpbiBmbG9hdDIgbG9j
YWxDb29yZDtvdXQgaGFsZjQgdmNvbG9yX1MwO291dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRz
XzJfUzA7dm9pZCBtYWluKCkgey8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdl
b21ldHJ5UHJvY2Vzc29yCiAgIDMJdmNvbG9yX1MwID0gY29sb3I7c2tfUG9zaXRpb24gPSBwb3Np
dGlvbi54eTAxO3sKICAgNAl2VHJhbnNmb3JtZWRDb29yZHNfMl9TMCA9ICh1bWF0cml4X1MxICog
bG9jYWxDb29yZC54eTEpLnh5OwogICA1CX0KICAgNgl9CiAgIDcJLy8gRnJhZ21lbnQgU0tTTAog
ICA4CWNvbnN0IGludCBrTWF4TG9vcExpbWl0X1MxX2MwID0gNDsKICAgOQl1bmlmb3JtIGZsb2F0
NCB1Y2xhbXBfUzFfYzBfYzBfYzA7dW5pZm9ybSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwO3Vu
aWZvcm0gaGFsZjQgdW9mZnNldHNBbmRLZXJuZWxfUzFfYzBbMTRdO3VuaWZvcm0gaGFsZjIgdWRp
cl9TMV9jMDt1bmlmb3JtIGZsb2F0M3gzIHVtYXRyaXhfUzE7c2FtcGxlcjJEIHVUZXh0dXJlU2Ft
cGxlcl8wX1MxOwogIDEwCWluIGhhbGY0IHZjb2xvcl9TMDtpbiBmbG9hdDIgdlRyYW5zZm9ybWVk
Q29vcmRzXzJfUzA7aGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQs
IGZsb2F0MiBfY29vcmRzKSB7CiAgMTEJZmxvYXQyIGluQ29vcmQgPSBfY29vcmRzO2Zsb2F0MiBz
dWJzZXRDb29yZDtzdWJzZXRDb29yZC54ID0gaW5Db29yZC54O3N1YnNldENvb3JkLnkgPSBpbkNv
b3JkLnk7ZmxvYXQyIGNsYW1wZWRDb29yZDtjbGFtcGVkQ29vcmQgPSBjbGFtcChzdWJzZXRDb29y
ZCwgdWNsYW1wX1MxX2MwX2MwX2MwLnh5LCB1Y2xhbXBfUzFfYzBfYzBfYzAuencpO2hhbGY0IHRl
eHR1cmVDb2xvciA9IHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgY2xhbXBlZENvb3JkKTty
ZXR1cm4gdGV4dHVyZUNvbG9yO30KICAxMgkKICAxMwloYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBf
YzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgewogIDE0CXJldHVybiBUZXh0dXJlRWZm
ZWN0X1MxX2MwX2MwX2MwKF9pbnB1dCwgKCh1bWF0cml4X1MxX2MwX2MwKSAqIF9jb29yZHMueHkx
KS54eSk7CiAgMTUJfQogIDE2CQogIDE3CWhhbGY0IHJ1bnRpbWVfc2hhZGVyX1MxX2MwKGhhbGY0
IF9pbnB1dCkgewogIDE4CWhhbGY0IF90bXBfMF9pbkNvbG9yID0gX2lucHV0OwogIDE5CWZsb2F0
MiBfdG1wXzFfY29vcmRzID0gdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CiAgMjAJaGFsZjQgc3Vt
ID0gaGFsZjQoMC4wKTsKICAyMQlmb3IgKGludCBpID0gMDtpIDwga01heExvb3BMaW1pdF9TMV9j
MDsgKytpKSB7CiAgMjIJaGFsZjQgcyA9IHVvZmZzZXRzQW5kS2VybmVsX1MxX2MwW2ldOwogIDIz
CXN1bSArPSBzLnkgKiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX3RtcF8wX2luQ29sb3IsIF90bXBf
MV9jb29yZHMgKyBmbG9hdDIocy54ICogdWRpcl9TMV9jMCkpOwogIDI0CXN1bSArPSBzLncgKiBN
YXRyaXhFZmZlY3RfUzFfYzBfYzAoX3RtcF8wX2luQ29sb3IsIF90bXBfMV9jb29yZHMgKyBmbG9h
dDIocy56ICogdWRpcl9TMV9jMCkpOwogIDI1CX0KICAyNglyZXR1cm4gaGFsZjQoc3VtKTsKICAy
Nwl9CiAgMjgJCiAgMjkJaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgewogIDMw
CXJldHVybiBydW50aW1lX3NoYWRlcl9TMV9jMChfaW5wdXQpOwogIDMxCX0KICAzMgkKICAzMwl2
b2lkIG1haW4oKSB7Ly8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCiAg
MzQJaGFsZjQgb3V0cHV0Q29sb3JfUzA7b3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7Y29uc3Qg
aGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTtoYWxmNCBvdXRwdXRfUzE7b3V0cHV0
X1MxID0gTWF0cml4RWZmZWN0X1MxKG91dHB1dENvbG9yX1MwKTt7IC8vIFhmZXIgUHJvY2Vzc29y
OiBQb3J0ZXIgRHVmZgogIDM1CXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVy
YWdlX1MwO319CiAgMzYJLy8gVmVydGV4IEdMU0wKICAzNwkjdmVyc2lvbiAxMDAKICAzOAkKICAz
OQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKICA0MAlwcmVjaXNpb24gbWVkaXVtcCBzYW1wbGVy
MkQ7CiAgNDEJdW5pZm9ybSBoaWdocCB2ZWM0IHNrX1JUQWRqdXN0OwogIDQyCXVuaWZvcm0gaGln
aHAgbWF0MyB1bWF0cml4X1MxOwogIDQzCWF0dHJpYnV0ZSBoaWdocCB2ZWMyIHBvc2l0aW9uOwog
IDQ0CWF0dHJpYnV0ZSBtZWRpdW1wIHZlYzQgY29sb3I7CiAgNDUJYXR0cmlidXRlIGhpZ2hwIHZl
YzIgbG9jYWxDb29yZDsKICA0Ngl2YXJ5aW5nIG1lZGl1bXAgdmVjNCB2Y29sb3JfUzA7CiAgNDcJ
dmFyeWluZyBoaWdocCB2ZWMyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwogIDQ4CXZvaWQgbWFp
bigpIHsKICA0OQl2Y29sb3JfUzAgPSBjb2xvcjsKICA1MAlnbF9Qb3NpdGlvbiA9IHZlYzQocG9z
aXRpb24sIDAuMCwgMS4wKTsKICA1MQl7CiAgNTIJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAgPSAo
dW1hdHJpeF9TMSAqIHZlYzMobG9jYWxDb29yZCwgMS4wKSkueHk7CiAgNTMJfQogIDU0CWdsX1Bv
c2l0aW9uID0gdmVjNChnbF9Qb3NpdGlvbi54eSAqIHNrX1JUQWRqdXN0Lnh6ICsgZ2xfUG9zaXRp
b24ud3cgKiBza19SVEFkanVzdC55dywgMC4wLCBnbF9Qb3NpdGlvbi53KTsKICA1NQl9CiAgNTYJ
CiAgNTcJLy8gRnJhZ21lbnQgR0xTTAogIDU4CSN2ZXJzaW9uIDEwMAogIDU5CQogIDYwCXByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OwogIDYxCXByZWNpc2lvbiBtZWRpdW1wIHNhbXBsZXIyRDsKICA2
Mgljb25zdCBoaWdocCBpbnQga01heExvb3BMaW1pdF9TMV9jMCA9IDQ7CiAgNjMJdW5pZm9ybSBo
aWdocCB2ZWM0IHVjbGFtcF9TMV9jMF9jMF9jMDsKICA2NAl1bmlmb3JtIGhpZ2hwIG1hdDMgdW1h
dHJpeF9TMV9jMF9jMDsKICA2NQl1bmlmb3JtIG1lZGl1bXAgdmVjNCB1b2Zmc2V0c0FuZEtlcm5l
bF9TMV9jMFsxNF07CiAgNjYJdW5pZm9ybSBtZWRpdW1wIHZlYzIgdWRpcl9TMV9jMDsKICA2Nwl1
bmlmb3JtIGhpZ2hwIG1hdDMgdW1hdHJpeF9TMTsKICA2OAl1bmlmb3JtIHNhbXBsZXIyRCB1VGV4
dHVyZVNhbXBsZXJfMF9TMTsKICA2OQl2YXJ5aW5nIG1lZGl1bXAgdmVjNCB2Y29sb3JfUzA7CiAg
NzAJdmFyeWluZyBoaWdocCB2ZWMyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwogIDcxCXZvaWQg
bWFpbigpIHsKICA3MgloaWdocCB2ZWMyIF8yNl90bXBfMV9jb29yZHMgPSB2VHJhbnNmb3JtZWRD
b29yZHNfMl9TMDsKICA3MwltZWRpdW1wIHZlYzQgXzI3X3N1bSA9IHZlYzQoMC4wKTsKICA3NAlm
b3IgKGhpZ2hwIGludCBfMjhfaSA9IDA7XzI4X2kgPCBrTWF4TG9vcExpbWl0X1MxX2MwOyArK18y
OF9pKSB7CiAgNzUJbWVkaXVtcCB2ZWM0IF8yOV9zID0gdW9mZnNldHNBbmRLZXJuZWxfUzFfYzBb
XzI4X2ldOwogIDc2CWhpZ2hwIHZlYzIgXzMwX2luQ29vcmQgPSAodW1hdHJpeF9TMV9jMF9jMCAq
IHZlYzMoXzI2X3RtcF8xX2Nvb3JkcyArIF8yOV9zLnggKiB1ZGlyX1MxX2MwLCAxLjApKS54eTsK
ICA3NwloaWdocCB2ZWMyIF8zMV9zdWJzZXRDb29yZDsKICA3OAlfMzFfc3Vic2V0Q29vcmQueCA9
IF8zMF9pbkNvb3JkLng7CiAgNzkJXzMxX3N1YnNldENvb3JkLnkgPSBfMzBfaW5Db29yZC55Owog
IDgwCWhpZ2hwIHZlYzIgXzMyX2NsYW1wZWRDb29yZCA9IGNsYW1wKF8zMV9zdWJzZXRDb29yZCwg
dWNsYW1wX1MxX2MwX2MwX2MwLnh5LCB1Y2xhbXBfUzFfYzBfYzBfYzAuencpOwogIDgxCW1lZGl1
bXAgdmVjNCBfMzNfdGV4dHVyZUNvbG9yID0gdGV4dHVyZTJEKHVUZXh0dXJlU2FtcGxlcl8wX1Mx
LCBfMzJfY2xhbXBlZENvb3JkLCAtMC40NzUpOwogIDgyCV8yN19zdW0gKz0gXzI5X3MueSAqIF8z
M190ZXh0dXJlQ29sb3I7CiAgODMJaGlnaHAgdmVjMiBfMzRfaW5Db29yZCA9ICh1bWF0cml4X1Mx
X2MwX2MwICogdmVjMyhfMjZfdG1wXzFfY29vcmRzICsgXzI5X3MueiAqIHVkaXJfUzFfYzAsIDEu
MCkpLnh5OwogIDg0CWhpZ2hwIHZlYzIgXzM1X3N1YnNldENvb3JkOwogIDg1CV8zNV9zdWJzZXRD
b29yZC54ID0gXzM0X2luQ29vcmQueDsKICA4NglfMzVfc3Vic2V0Q29vcmQueSA9IF8zNF9pbkNv
b3JkLnk7CiAgODcJaGlnaHAgdmVjMiBfMzZfY2xhbXBlZENvb3JkID0gY2xhbXAoXzM1X3N1YnNl
dENvb3JkLCB1Y2xhbXBfUzFfYzBfYzBfYzAueHksIHVjbGFtcF9TMV9jMF9jMF9jMC56dyk7CiAg
ODgJbWVkaXVtcCB2ZWM0IF8zN190ZXh0dXJlQ29sb3IgPSB0ZXh0dXJlMkQodVRleHR1cmVTYW1w
bGVyXzBfUzEsIF8zNl9jbGFtcGVkQ29vcmQsIC0wLjQ3NSk7CiAgODkJXzI3X3N1bSArPSBfMjlf
cy53ICogXzM3X3RleHR1cmVDb2xvcjsKICA5MAl9CiAgOTEJbWVkaXVtcCB2ZWM0IG91dHB1dF9T
MSA9IF8yN19zdW07CiAgOTIJewogIDkzCWdsX0ZyYWdDb2xvciA9IG91dHB1dF9TMTsKICA5NAl9
CiAgOTUJfQogIDk2CQogIDk3CQpFcnJvcnM6CmVycm9yOiBFeGNlZWRlZCBtYXggbnIgaW5kaXJl
Y3QgdGV4dHVyZSBsb29rdXBzICg5LzQpCgpTaGFkZXIgY29tcGlsYXRpb24gZXJyb3IKLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCiAgIDEJLy8gVmVydGV4IFNLU0wKICAgMgl1bmlmb3JtIGZsb2F0
NCBza19SVEFkanVzdDt1bmlmb3JtIGZsb2F0M3gzIHVtYXRyaXhfUzE7aW4gZmxvYXQyIHBvc2l0
aW9uO2luIGhhbGY0IGNvbG9yO2luIGZsb2F0MiBsb2NhbENvb3JkO291dCBoYWxmNCB2Y29sb3Jf
UzA7b3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDt2b2lkIG1haW4oKSB7Ly8gUHJp
bWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKICAgMwl2Y29s
b3JfUzAgPSBjb2xvcjtza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7ewogICA0CXZUcmFuc2Zv
cm1lZENvb3Jkc18yX1MwID0gKHVtYXRyaXhfUzEgKiBsb2NhbENvb3JkLnh5MSkueHk7CiAgIDUJ
fQogICA2CX0KICAgNwkvLyBGcmFnbWVudCBTS1NMCiAgIDgJY29uc3QgaW50IGtNYXhMb29wTGlt
aXRfUzFfYzAgPSA0OwogICA5CXVuaWZvcm0gZmxvYXQ0IHVjbGFtcF9TMV9jMF9jMF9jMDt1bmlm
b3JtIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzA7dW5pZm9ybSBoYWxmNCB1b2Zmc2V0c0FuZEtl
cm5lbF9TMV9jMFsxNF07dW5pZm9ybSBoYWxmMiB1ZGlyX1MxX2MwO3VuaWZvcm0gZmxvYXQzeDMg
dW1hdHJpeF9TMTtzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CiAgMTAJaW4gaGFsZjQg
dmNvbG9yX1MwO2luIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDtoYWxmNCBUZXh0dXJl
RWZmZWN0X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIHsKICAxMQlm
bG9hdDIgaW5Db29yZCA9IF9jb29yZHM7ZmxvYXQyIHN1YnNldENvb3JkO3N1YnNldENvb3JkLngg
PSBpbkNvb3JkLng7c3Vic2V0Q29vcmQueSA9IGluQ29vcmQueTtmbG9hdDIgY2xhbXBlZENvb3Jk
O2NsYW1wZWRDb29yZCA9IGNsYW1wKHN1YnNldENvb3JkLCB1Y2xhbXBfUzFfYzBfYzBfYzAueHks
IHVjbGFtcF9TMV9jMF9jMF9jMC56dyk7aGFsZjQgdGV4dHVyZUNvbG9yID0gc2FtcGxlKHVUZXh0
dXJlU2FtcGxlcl8wX1MxLCBjbGFtcGVkQ29vcmQpO3JldHVybiB0ZXh0dXJlQ29sb3I7fQogIDEy
CQogIDEzCWhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBf
Y29vcmRzKSB7CiAgMTQJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoX2lucHV0LCAo
KHVtYXRyaXhfUzFfYzBfYzApICogX2Nvb3Jkcy54eTEpLnh5KTsKICAxNQl9CiAgMTYJCiAgMTcJ
aGFsZjQgcnVudGltZV9zaGFkZXJfUzFfYzAoaGFsZjQgX2lucHV0KSB7CiAgMTgJaGFsZjQgX3Rt
cF8wX2luQ29sb3IgPSBfaW5wdXQ7CiAgMTkJZmxvYXQyIF90bXBfMV9jb29yZHMgPSB2VHJhbnNm
b3JtZWRDb29yZHNfMl9TMDsKICAyMAloYWxmNCBzdW0gPSBoYWxmNCgwLjApOwogIDIxCWZvciAo
aW50IGkgPSAwO2kgPCBrTWF4TG9vcExpbWl0X1MxX2MwOyArK2kpIHsKICAyMgloYWxmNCBzID0g
dW9mZnNldHNBbmRLZXJuZWxfUzFfYzBbaV07CiAgMjMJc3VtICs9IHMueSAqIE1hdHJpeEVmZmVj
dF9TMV9jMF9jMChfdG1wXzBfaW5Db2xvciwgX3RtcF8xX2Nvb3JkcyArIGZsb2F0MihzLnggKiB1
ZGlyX1MxX2MwKSk7CiAgMjQJc3VtICs9IHMudyAqIE1hdHJpeEVmZmVjdF9TMV9jMF9jMChfdG1w
XzBfaW5Db2xvciwgX3RtcF8xX2Nvb3JkcyArIGZsb2F0MihzLnogKiB1ZGlyX1MxX2MwKSk7CiAg
MjUJfQogIDI2CXJldHVybiBoYWxmNChzdW0pOwogIDI3CX0KICAyOAkKICAyOQloYWxmNCBNYXRy
aXhFZmZlY3RfUzEoaGFsZjQgX2lucHV0KSB7CiAgMzAJcmV0dXJuIHJ1bnRpbWVfc2hhZGVyX1Mx
X2MwKF9pbnB1dCk7CiAgMzEJfQogIDMyCQogIDMzCXZvaWQgbWFpbigpIHsvLyBTdGFnZSAwLCBR
dWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKICAzNAloYWxmNCBvdXRwdXRDb2xvcl9TMDtv
dXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDtjb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9
IGhhbGY0KDEpO2hhbGY0IG91dHB1dF9TMTtvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0
cHV0Q29sb3JfUzApO3sgLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCiAgMzUJc2tfRnJh
Z0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7fX0KICAzNgkvLyBWZXJ0ZXgg
R0xTTAogIDM3CSN2ZXJzaW9uIDEwMAogIDM4CQogIDM5CXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OwogIDQwCXByZWNpc2lvbiBtZWRpdW1wIHNhbXBsZXIyRDsKICA0MQl1bmlmb3JtIGhpZ2hwIHZl
YzQgc2tfUlRBZGp1c3Q7CiAgNDIJdW5pZm9ybSBoaWdocCBtYXQzIHVtYXRyaXhfUzE7CiAgNDMJ
YXR0cmlidXRlIGhpZ2hwIHZlYzIgcG9zaXRpb247CiAgNDQJYXR0cmlidXRlIG1lZGl1bXAgdmVj
NCBjb2xvcjsKICA0NQlhdHRyaWJ1dGUgaGlnaHAgdmVjMiBsb2NhbENvb3JkOwogIDQ2CXZhcnlp
bmcgbWVkaXVtcCB2ZWM0IHZjb2xvcl9TMDsKICA0Nwl2YXJ5aW5nIGhpZ2hwIHZlYzIgdlRyYW5z
Zm9ybWVkQ29vcmRzXzJfUzA7CiAgNDgJdm9pZCBtYWluKCkgewogIDQ5CXZjb2xvcl9TMCA9IGNv
bG9yOwogIDUwCWdsX1Bvc2l0aW9uID0gdmVjNChwb3NpdGlvbiwgMC4wLCAxLjApOwogIDUxCXsK
ICA1Mgl2VHJhbnNmb3JtZWRDb29yZHNfMl9TMCA9ICh1bWF0cml4X1MxICogdmVjMyhsb2NhbENv
b3JkLCAxLjApKS54eTsKICA1Mwl9CiAgNTQJZ2xfUG9zaXRpb24gPSB2ZWM0KGdsX1Bvc2l0aW9u
Lnh5ICogc2tfUlRBZGp1c3QueHogKyBnbF9Qb3NpdGlvbi53dyAqIHNrX1JUQWRqdXN0Lnl3LCAw
LjAsIGdsX1Bvc2l0aW9uLncpOwogIDU1CX0KICA1NgkKICA1NwkvLyBGcmFnbWVudCBHTFNMCiAg
NTgJI3ZlcnNpb24gMTAwCiAgNTkJCiAgNjAJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CiAgNjEJ
cHJlY2lzaW9uIG1lZGl1bXAgc2FtcGxlcjJEOwogIDYyCWNvbnN0IGhpZ2hwIGludCBrTWF4TG9v
cExpbWl0X1MxX2MwID0gNDsKICA2Mwl1bmlmb3JtIGhpZ2hwIHZlYzQgdWNsYW1wX1MxX2MwX2Mw
X2MwOwogIDY0CXVuaWZvcm0gaGlnaHAgbWF0MyB1bWF0cml4X1MxX2MwX2MwOwogIDY1CXVuaWZv
cm0gbWVkaXVtcCB2ZWM0IHVvZmZzZXRzQW5kS2VybmVsX1MxX2MwWzE0XTsKICA2Ngl1bmlmb3Jt
IG1lZGl1bXAgdmVjMiB1ZGlyX1MxX2MwOwogIDY3CXVuaWZvcm0gaGlnaHAgbWF0MyB1bWF0cml4
X1MxOwogIDY4CXVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwogIDY5CXZh
cnlpbmcgbWVkaXVtcCB2ZWM0IHZjb2xvcl9TMDsKICA3MAl2YXJ5aW5nIGhpZ2hwIHZlYzIgdlRy
YW5zZm9ybWVkQ29vcmRzXzJfUzA7CiAgNzEJdm9pZCBtYWluKCkgewogIDcyCWhpZ2hwIHZlYzIg
XzI2X3RtcF8xX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwogIDczCW1lZGl1bXAg
dmVjNCBfMjdfc3VtID0gdmVjNCgwLjApOwogIDc0CWZvciAoaGlnaHAgaW50IF8yOF9pID0gMDtf
MjhfaSA8IGtNYXhMb29wTGltaXRfUzFfYzA7ICsrXzI4X2kpIHsKICA3NQltZWRpdW1wIHZlYzQg
XzI5X3MgPSB1b2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtfMjhfaV07CiAgNzYJaGlnaHAgdmVjMiBf
MzBfaW5Db29yZCA9ICh1bWF0cml4X1MxX2MwX2MwICogdmVjMyhfMjZfdG1wXzFfY29vcmRzICsg
XzI5X3MueCAqIHVkaXJfUzFfYzAsIDEuMCkpLnh5OwogIDc3CWhpZ2hwIHZlYzIgXzMxX3N1YnNl
dENvb3JkOwogIDc4CV8zMV9zdWJzZXRDb29yZC54ID0gXzMwX2luQ29vcmQueDsKICA3OQlfMzFf
c3Vic2V0Q29vcmQueSA9IF8zMF9pbkNvb3JkLnk7CiAgODAJaGlnaHAgdmVjMiBfMzJfY2xhbXBl
ZENvb3JkID0gY2xhbXAoXzMxX3N1YnNldENvb3JkLCB1Y2xhbXBfUzFfYzBfYzBfYzAueHksIHVj
bGFtcF9TMV9jMF9jMF9jMC56dyk7CiAgODEJbWVkaXVtcCB2ZWM0IF8zM190ZXh0dXJlQ29sb3Ig
PSB0ZXh0dXJlMkQodVRleHR1cmVTYW1wbGVyXzBfUzEsIF8zMl9jbGFtcGVkQ29vcmQsIC0wLjQ3
NSk7CiAgODIJXzI3X3N1bSArPSBfMjlfcy55ICogXzMzX3RleHR1cmVDb2xvcjsKICA4MwloaWdo
cCB2ZWMyIF8zNF9pbkNvb3JkID0gKHVtYXRyaXhfUzFfYzBfYzAgKiB2ZWMzKF8yNl90bXBfMV9j
b29yZHMgKyBfMjlfcy56ICogdWRpcl9TMV9jMCwgMS4wKSkueHk7CiAgODQJaGlnaHAgdmVjMiBf
MzVfc3Vic2V0Q29vcmQ7CiAgODUJXzM1X3N1YnNldENvb3JkLnggPSBfMzRfaW5Db29yZC54Owog
IDg2CV8zNV9zdWJzZXRDb29yZC55ID0gXzM0X2luQ29vcmQueTsKICA4NwloaWdocCB2ZWMyIF8z
Nl9jbGFtcGVkQ29vcmQgPSBjbGFtcChfMzVfc3Vic2V0Q29vcmQsIHVjbGFtcF9TMV9jMF9jMF9j
MC54eSwgdWNsYW1wX1MxX2MwX2MwX2MwLnp3KTsKICA4OAltZWRpdW1wIHZlYzQgXzM3X3RleHR1
cmVDb2xvciA9IHRleHR1cmUyRCh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgXzM2X2NsYW1wZWRDb29y
ZCwgLTAuNDc1KTsKICA4OQlfMjdfc3VtICs9IF8yOV9zLncgKiBfMzdfdGV4dHVyZUNvbG9yOwog
IDkwCX0KICA5MQltZWRpdW1wIHZlYzQgb3V0cHV0X1MxID0gXzI3X3N1bTsKICA5Mgl7CiAgOTMJ
Z2xfRnJhZ0NvbG9yID0gb3V0cHV0X1MxOwogIDk0CX0KICA5NQl9CiAgOTYJCiAgOTcJCkVycm9y
czoKZXJyb3I6IEV4Y2VlZGVkIG1heCBuciBpbmRpcmVjdCB0ZXh0dXJlIGxvb2t1cHMgKDkvNCkK
CkZhaWxlZCB0byBjcmVhdGUgRE1BLUJVRiB0ZXh0dXJlIG9mIHNpemUgMTAyNHg2OTM6IFVuc3Vw
cG9ydGVkIGRtYWJ1ZiBmb3JtYXQ6IFhSMjQ6MHhmZmZmZmZmZmZmZmZmZgpTaGFkZXIgY29tcGls
YXRpb24gZXJyb3IKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIDEJLy8gVmVydGV4IFNLU0wK
ICAgMgl1bmlmb3JtIGZsb2F0NCBza19SVEFkanVzdDt1bmlmb3JtIGZsb2F0M3gzIHVtYXRyaXhf
UzE7aW4gZmxvYXQyIHBvc2l0aW9uO2luIGhhbGY0IGNvbG9yO2luIGZsb2F0MiBsb2NhbENvb3Jk
O291dCBoYWxmNCB2Y29sb3JfUzA7b3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDt2
b2lkIG1haW4oKSB7Ly8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQ
cm9jZXNzb3IKICAgMwl2Y29sb3JfUzAgPSBjb2xvcjtza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5
MDE7ewogICA0CXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gKHVtYXRyaXhfUzEgKiBsb2NhbENv
b3JkLnh5MSkueHk7CiAgIDUJfQogICA2CX0KICAgNwkvLyBGcmFnbWVudCBTS1NMCiAgIDgJY29u
c3QgaW50IGtNYXhMb29wTGltaXRfUzFfYzAgPSAyOwogICA5CXVuaWZvcm0gZmxvYXQ0IHVjbGFt
cF9TMV9jMF9jMF9jMDt1bmlmb3JtIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzA7dW5pZm9ybSBo
YWxmNCB1b2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFsxNF07dW5pZm9ybSBoYWxmMiB1ZGlyX1MxX2Mw
O3VuaWZvcm0gZmxvYXQzeDMgdW1hdHJpeF9TMTtzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBf
UzE7CiAgMTAJaW4gaGFsZjQgdmNvbG9yX1MwO2luIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNf
Ml9TMDtoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQy
IF9jb29yZHMpIHsKICAxMQlmbG9hdDIgaW5Db29yZCA9IF9jb29yZHM7ZmxvYXQyIHN1YnNldENv
b3JkO3N1YnNldENvb3JkLnggPSBpbkNvb3JkLng7c3Vic2V0Q29vcmQueSA9IGluQ29vcmQueTtm
bG9hdDIgY2xhbXBlZENvb3JkO2NsYW1wZWRDb29yZCA9IGNsYW1wKHN1YnNldENvb3JkLCB1Y2xh
bXBfUzFfYzBfYzBfYzAueHksIHVjbGFtcF9TMV9jMF9jMF9jMC56dyk7aGFsZjQgdGV4dHVyZUNv
bG9yID0gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBjbGFtcGVkQ29vcmQpO3JldHVybiB0
ZXh0dXJlQ29sb3I7fQogIDEyCQogIDEzCWhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMChoYWxm
NCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSB7CiAgMTQJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFf
YzBfYzBfYzAoX2lucHV0LCAoKHVtYXRyaXhfUzFfYzBfYzApICogX2Nvb3Jkcy54eTEpLnh5KTsK
ICAxNQl9CiAgMTYJCiAgMTcJaGFsZjQgcnVudGltZV9zaGFkZXJfUzFfYzAoaGFsZjQgX2lucHV0
KSB7CiAgMTgJaGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CiAgMTkJZmxvYXQyIF90bXBf
MV9jb29yZHMgPSB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKICAyMAloYWxmNCBzdW0gPSBoYWxm
NCgwLjApOwogIDIxCWZvciAoaW50IGkgPSAwO2kgPCBrTWF4TG9vcExpbWl0X1MxX2MwOyArK2kp
IHsKICAyMgloYWxmNCBzID0gdW9mZnNldHNBbmRLZXJuZWxfUzFfYzBbaV07CiAgMjMJc3VtICs9
IHMueSAqIE1hdHJpeEVmZmVjdF9TMV9jMF9jMChfdG1wXzBfaW5Db2xvciwgX3RtcF8xX2Nvb3Jk
cyArIGZsb2F0MihzLnggKiB1ZGlyX1MxX2MwKSk7CiAgMjQJc3VtICs9IHMudyAqIE1hdHJpeEVm
ZmVjdF9TMV9jMF9jMChfdG1wXzBfaW5Db2xvciwgX3RtcF8xX2Nvb3JkcyArIGZsb2F0MihzLnog
KiB1ZGlyX1MxX2MwKSk7CiAgMjUJfQogIDI2CXJldHVybiBoYWxmNChzdW0pOwogIDI3CX0KICAy
OAkKICAyOQloYWxmNCBNYXRyaXhFZmZlY3RfUzEoaGFsZjQgX2lucHV0KSB7CiAgMzAJcmV0dXJu
IHJ1bnRpbWVfc2hhZGVyX1MxX2MwKF9pbnB1dCk7CiAgMzEJfQogIDMyCQogIDMzCXZvaWQgbWFp
bigpIHsvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKICAzNAloYWxm
NCBvdXRwdXRDb2xvcl9TMDtvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDtjb25zdCBoYWxmNCBv
dXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpO2hhbGY0IG91dHB1dF9TMTtvdXRwdXRfUzEgPSBN
YXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3JfUzApO3sgLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRl
ciBEdWZmCiAgMzUJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7
fX0KICAzNgkvLyBWZXJ0ZXggR0xTTAogIDM3CSN2ZXJzaW9uIDEwMAogIDM4CQogIDM5CXByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OwogIDQwCXByZWNpc2lvbiBtZWRpdW1wIHNhbXBsZXIyRDsKICA0
MQl1bmlmb3JtIGhpZ2hwIHZlYzQgc2tfUlRBZGp1c3Q7CiAgNDIJdW5pZm9ybSBoaWdocCBtYXQz
IHVtYXRyaXhfUzE7CiAgNDMJYXR0cmlidXRlIGhpZ2hwIHZlYzIgcG9zaXRpb247CiAgNDQJYXR0
cmlidXRlIG1lZGl1bXAgdmVjNCBjb2xvcjsKICA0NQlhdHRyaWJ1dGUgaGlnaHAgdmVjMiBsb2Nh
bENvb3JkOwogIDQ2CXZhcnlpbmcgbWVkaXVtcCB2ZWM0IHZjb2xvcl9TMDsKICA0Nwl2YXJ5aW5n
IGhpZ2hwIHZlYzIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CiAgNDgJdm9pZCBtYWluKCkgewog
IDQ5CXZjb2xvcl9TMCA9IGNvbG9yOwogIDUwCWdsX1Bvc2l0aW9uID0gdmVjNChwb3NpdGlvbiwg
MC4wLCAxLjApOwogIDUxCXsKICA1Mgl2VHJhbnNmb3JtZWRDb29yZHNfMl9TMCA9ICh1bWF0cml4
X1MxICogdmVjMyhsb2NhbENvb3JkLCAxLjApKS54eTsKICA1Mwl9CiAgNTQJZ2xfUG9zaXRpb24g
PSB2ZWM0KGdsX1Bvc2l0aW9uLnh5ICogc2tfUlRBZGp1c3QueHogKyBnbF9Qb3NpdGlvbi53dyAq
IHNrX1JUQWRqdXN0Lnl3LCAwLjAsIGdsX1Bvc2l0aW9uLncpOwogIDU1CX0KICA1NgkKICA1Nwkv
LyBGcmFnbWVudCBHTFNMCiAgNTgJI3ZlcnNpb24gMTAwCiAgNTkJCiAgNjAJcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CiAgNjEJcHJlY2lzaW9uIG1lZGl1bXAgc2FtcGxlcjJEOwogIDYyCWNvbnN0
IGhpZ2hwIGludCBrTWF4TG9vcExpbWl0X1MxX2MwID0gMjsKICA2Mwl1bmlmb3JtIGhpZ2hwIHZl
YzQgdWNsYW1wX1MxX2MwX2MwX2MwOwogIDY0CXVuaWZvcm0gaGlnaHAgbWF0MyB1bWF0cml4X1Mx
X2MwX2MwOwogIDY1CXVuaWZvcm0gbWVkaXVtcCB2ZWM0IHVvZmZzZXRzQW5kS2VybmVsX1MxX2Mw
WzE0XTsKICA2Ngl1bmlmb3JtIG1lZGl1bXAgdmVjMiB1ZGlyX1MxX2MwOwogIDY3CXVuaWZvcm0g
aGlnaHAgbWF0MyB1bWF0cml4X1MxOwogIDY4CXVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2Ft
cGxlcl8wX1MxOwogIDY5CXZhcnlpbmcgbWVkaXVtcCB2ZWM0IHZjb2xvcl9TMDsKICA3MAl2YXJ5
aW5nIGhpZ2hwIHZlYzIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CiAgNzEJdm9pZCBtYWluKCkg
ewogIDcyCWhpZ2hwIHZlYzIgXzI2X3RtcF8xX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc18y
X1MwOwogIDczCW1lZGl1bXAgdmVjNCBfMjdfc3VtID0gdmVjNCgwLjApOwogIDc0CWZvciAoaGln
aHAgaW50IF8yOF9pID0gMDtfMjhfaSA8IGtNYXhMb29wTGltaXRfUzFfYzA7ICsrXzI4X2kpIHsK
ICA3NQltZWRpdW1wIHZlYzQgXzI5X3MgPSB1b2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtfMjhfaV07
CiAgNzYJaGlnaHAgdmVjMiBfMzBfaW5Db29yZCA9ICh1bWF0cml4X1MxX2MwX2MwICogdmVjMyhf
MjZfdG1wXzFfY29vcmRzICsgXzI5X3MueCAqIHVkaXJfUzFfYzAsIDEuMCkpLnh5OwogIDc3CWhp
Z2hwIHZlYzIgXzMxX3N1YnNldENvb3JkOwogIDc4CV8zMV9zdWJzZXRDb29yZC54ID0gXzMwX2lu
Q29vcmQueDsKICA3OQlfMzFfc3Vic2V0Q29vcmQueSA9IF8zMF9pbkNvb3JkLnk7CiAgODAJaGln
aHAgdmVjMiBfMzJfY2xhbXBlZENvb3JkID0gY2xhbXAoXzMxX3N1YnNldENvb3JkLCB1Y2xhbXBf
UzFfYzBfYzBfYzAueHksIHVjbGFtcF9TMV9jMF9jMF9jMC56dyk7CiAgODEJbWVkaXVtcCB2ZWM0
IF8zM190ZXh0dXJlQ29sb3IgPSB0ZXh0dXJlMkQodVRleHR1cmVTYW1wbGVyXzBfUzEsIF8zMl9j
bGFtcGVkQ29vcmQsIC0wLjQ3NSk7CiAgODIJXzI3X3N1bSArPSBfMjlfcy55ICogXzMzX3RleHR1
cmVDb2xvcjsKICA4MwloaWdocCB2ZWMyIF8zNF9pbkNvb3JkID0gKHVtYXRyaXhfUzFfYzBfYzAg
KiB2ZWMzKF8yNl90bXBfMV9jb29yZHMgKyBfMjlfcy56ICogdWRpcl9TMV9jMCwgMS4wKSkueHk7
CiAgODQJaGlnaHAgdmVjMiBfMzVfc3Vic2V0Q29vcmQ7CiAgODUJXzM1X3N1YnNldENvb3JkLngg
PSBfMzRfaW5Db29yZC54OwogIDg2CV8zNV9zdWJzZXRDb29yZC55ID0gXzM0X2luQ29vcmQueTsK
ICA4NwloaWdocCB2ZWMyIF8zNl9jbGFtcGVkQ29vcmQgPSBjbGFtcChfMzVfc3Vic2V0Q29vcmQs
IHVjbGFtcF9TMV9jMF9jMF9jMC54eSwgdWNsYW1wX1MxX2MwX2MwX2MwLnp3KTsKICA4OAltZWRp
dW1wIHZlYzQgXzM3X3RleHR1cmVDb2xvciA9IHRleHR1cmUyRCh1VGV4dHVyZVNhbXBsZXJfMF9T
MSwgXzM2X2NsYW1wZWRDb29yZCwgLTAuNDc1KTsKICA4OQlfMjdfc3VtICs9IF8yOV9zLncgKiBf
MzdfdGV4dHVyZUNvbG9yOwogIDkwCX0KICA5MQltZWRpdW1wIHZlYzQgb3V0cHV0X1MxID0gXzI3
X3N1bTsKICA5Mgl7CiAgOTMJZ2xfRnJhZ0NvbG9yID0gb3V0cHV0X1MxOwogIDk0CX0KICA5NQl9
CiAgOTYJCiAgOTcJCkVycm9yczoKZXJyb3I6IEV4Y2VlZGVkIG1heCBuciBpbmRpcmVjdCB0ZXh0
dXJlIGxvb2t1cHMgKDUvNCkKCkZhaWxlZCB0byBjcmVhdGUgRE1BLUJVRiB0ZXh0dXJlIG9mIHNp
emUgMTAyNHg2OTM6IFVuc3VwcG9ydGVkIGRtYWJ1ZiBmb3JtYXQ6IFhSMjQ6MHhmZmZmZmZmZmZm
ZmZmZgpTaGFkZXIgY29tcGlsYXRpb24gZXJyb3IKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAg
IDEJLy8gVmVydGV4IFNLU0wKICAgMgl1bmlmb3JtIGZsb2F0NCBza19SVEFkanVzdDt1bmlmb3Jt
IGZsb2F0M3gzIHVtYXRyaXhfUzE7aW4gZmxvYXQyIHBvc2l0aW9uO2luIGhhbGY0IGNvbG9yO2lu
IGZsb2F0MiBsb2NhbENvb3JkO291dCBoYWxmNCB2Y29sb3JfUzA7b3V0IGZsb2F0MiB2VHJhbnNm
b3JtZWRDb29yZHNfMl9TMDt2b2lkIG1haW4oKSB7Ly8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFk
UGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKICAgMwl2Y29sb3JfUzAgPSBjb2xvcjtza19Qb3Np
dGlvbiA9IHBvc2l0aW9uLnh5MDE7ewogICA0CXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gKHVt
YXRyaXhfUzEgKiBsb2NhbENvb3JkLnh5MSkueHk7CiAgIDUJfQogICA2CX0KICAgNwkvLyBGcmFn
bWVudCBTS1NMCiAgIDgJY29uc3QgaW50IGtNYXhMb29wTGltaXRfUzFfYzAgPSAyOwogICA5CXVu
aWZvcm0gZmxvYXQ0IHVjbGFtcF9TMV9jMF9jMF9jMDt1bmlmb3JtIGZsb2F0M3gzIHVtYXRyaXhf
UzFfYzBfYzA7dW5pZm9ybSBoYWxmNCB1b2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFsxNF07dW5pZm9y
bSBoYWxmMiB1ZGlyX1MxX2MwO3VuaWZvcm0gZmxvYXQzeDMgdW1hdHJpeF9TMTtzYW1wbGVyMkQg
dVRleHR1cmVTYW1wbGVyXzBfUzE7CiAgMTAJaW4gaGFsZjQgdmNvbG9yX1MwO2luIGZsb2F0MiB2
VHJhbnNmb3JtZWRDb29yZHNfMl9TMDtoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKGhh
bGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIHsKICAxMQlmbG9hdDIgaW5Db29yZCA9IF9jb29y
ZHM7ZmxvYXQyIHN1YnNldENvb3JkO3N1YnNldENvb3JkLnggPSBpbkNvb3JkLng7c3Vic2V0Q29v
cmQueSA9IGluQ29vcmQueTtmbG9hdDIgY2xhbXBlZENvb3JkO2NsYW1wZWRDb29yZCA9IGNsYW1w
KHN1YnNldENvb3JkLCB1Y2xhbXBfUzFfYzBfYzBfYzAueHksIHVjbGFtcF9TMV9jMF9jMF9jMC56
dyk7aGFsZjQgdGV4dHVyZUNvbG9yID0gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBjbGFt
cGVkQ29vcmQpO3JldHVybiB0ZXh0dXJlQ29sb3I7fQogIDEyCQogIDEzCWhhbGY0IE1hdHJpeEVm
ZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSB7CiAgMTQJcmV0dXJu
IFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoX2lucHV0LCAoKHVtYXRyaXhfUzFfYzBfYzApICog
X2Nvb3Jkcy54eTEpLnh5KTsKICAxNQl9CiAgMTYJCiAgMTcJaGFsZjQgcnVudGltZV9zaGFkZXJf
UzFfYzAoaGFsZjQgX2lucHV0KSB7CiAgMTgJaGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7
CiAgMTkJZmxvYXQyIF90bXBfMV9jb29yZHMgPSB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKICAy
MAloYWxmNCBzdW0gPSBoYWxmNCgwLjApOwogIDIxCWZvciAoaW50IGkgPSAwO2kgPCBrTWF4TG9v
cExpbWl0X1MxX2MwOyArK2kpIHsKICAyMgloYWxmNCBzID0gdW9mZnNldHNBbmRLZXJuZWxfUzFf
YzBbaV07CiAgMjMJc3VtICs9IHMueSAqIE1hdHJpeEVmZmVjdF9TMV9jMF9jMChfdG1wXzBfaW5D
b2xvciwgX3RtcF8xX2Nvb3JkcyArIGZsb2F0MihzLnggKiB1ZGlyX1MxX2MwKSk7CiAgMjQJc3Vt
ICs9IHMudyAqIE1hdHJpeEVmZmVjdF9TMV9jMF9jMChfdG1wXzBfaW5Db2xvciwgX3RtcF8xX2Nv
b3JkcyArIGZsb2F0MihzLnogKiB1ZGlyX1MxX2MwKSk7CiAgMjUJfQogIDI2CXJldHVybiBoYWxm
NChzdW0pOwogIDI3CX0KICAyOAkKICAyOQloYWxmNCBNYXRyaXhFZmZlY3RfUzEoaGFsZjQgX2lu
cHV0KSB7CiAgMzAJcmV0dXJuIHJ1bnRpbWVfc2hhZGVyX1MxX2MwKF9pbnB1dCk7CiAgMzEJfQog
IDMyCQogIDMzCXZvaWQgbWFpbigpIHsvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQ
cm9jZXNzb3IKICAzNAloYWxmNCBvdXRwdXRDb2xvcl9TMDtvdXRwdXRDb2xvcl9TMCA9IHZjb2xv
cl9TMDtjb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpO2hhbGY0IG91dHB1
dF9TMTtvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3JfUzApO3sgLy8gWGZl
ciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCiAgMzUJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICog
b3V0cHV0Q292ZXJhZ2VfUzA7fX0KICAzNgkvLyBWZXJ0ZXggR0xTTAogIDM3CSN2ZXJzaW9uIDEw
MAogIDM4CQogIDM5CXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwogIDQwCXByZWNpc2lvbiBtZWRp
dW1wIHNhbXBsZXIyRDsKICA0MQl1bmlmb3JtIGhpZ2hwIHZlYzQgc2tfUlRBZGp1c3Q7CiAgNDIJ
dW5pZm9ybSBoaWdocCBtYXQzIHVtYXRyaXhfUzE7CiAgNDMJYXR0cmlidXRlIGhpZ2hwIHZlYzIg
cG9zaXRpb247CiAgNDQJYXR0cmlidXRlIG1lZGl1bXAgdmVjNCBjb2xvcjsKICA0NQlhdHRyaWJ1
dGUgaGlnaHAgdmVjMiBsb2NhbENvb3JkOwogIDQ2CXZhcnlpbmcgbWVkaXVtcCB2ZWM0IHZjb2xv
cl9TMDsKICA0Nwl2YXJ5aW5nIGhpZ2hwIHZlYzIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CiAg
NDgJdm9pZCBtYWluKCkgewogIDQ5CXZjb2xvcl9TMCA9IGNvbG9yOwogIDUwCWdsX1Bvc2l0aW9u
ID0gdmVjNChwb3NpdGlvbiwgMC4wLCAxLjApOwogIDUxCXsKICA1Mgl2VHJhbnNmb3JtZWRDb29y
ZHNfMl9TMCA9ICh1bWF0cml4X1MxICogdmVjMyhsb2NhbENvb3JkLCAxLjApKS54eTsKICA1Mwl9
CiAgNTQJZ2xfUG9zaXRpb24gPSB2ZWM0KGdsX1Bvc2l0aW9uLnh5ICogc2tfUlRBZGp1c3QueHog
KyBnbF9Qb3NpdGlvbi53dyAqIHNrX1JUQWRqdXN0Lnl3LCAwLjAsIGdsX1Bvc2l0aW9uLncpOwog
IDU1CX0KICA1NgkKICA1NwkvLyBGcmFnbWVudCBHTFNMCiAgNTgJI3ZlcnNpb24gMTAwCiAgNTkJ
CiAgNjAJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CiAgNjEJcHJlY2lzaW9uIG1lZGl1bXAgc2Ft
cGxlcjJEOwogIDYyCWNvbnN0IGhpZ2hwIGludCBrTWF4TG9vcExpbWl0X1MxX2MwID0gMjsKICA2
Mwl1bmlmb3JtIGhpZ2hwIHZlYzQgdWNsYW1wX1MxX2MwX2MwX2MwOwogIDY0CXVuaWZvcm0gaGln
aHAgbWF0MyB1bWF0cml4X1MxX2MwX2MwOwogIDY1CXVuaWZvcm0gbWVkaXVtcCB2ZWM0IHVvZmZz
ZXRzQW5kS2VybmVsX1MxX2MwWzE0XTsKICA2Ngl1bmlmb3JtIG1lZGl1bXAgdmVjMiB1ZGlyX1Mx
X2MwOwogIDY3CXVuaWZvcm0gaGlnaHAgbWF0MyB1bWF0cml4X1MxOwogIDY4CXVuaWZvcm0gc2Ft
cGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwogIDY5CXZhcnlpbmcgbWVkaXVtcCB2ZWM0IHZj
b2xvcl9TMDsKICA3MAl2YXJ5aW5nIGhpZ2hwIHZlYzIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7
CiAgNzEJdm9pZCBtYWluKCkgewogIDcyCWhpZ2hwIHZlYzIgXzI2X3RtcF8xX2Nvb3JkcyA9IHZU
cmFuc2Zvcm1lZENvb3Jkc18yX1MwOwogIDczCW1lZGl1bXAgdmVjNCBfMjdfc3VtID0gdmVjNCgw
LjApOwogIDc0CWZvciAoaGlnaHAgaW50IF8yOF9pID0gMDtfMjhfaSA8IGtNYXhMb29wTGltaXRf
UzFfYzA7ICsrXzI4X2kpIHsKICA3NQltZWRpdW1wIHZlYzQgXzI5X3MgPSB1b2Zmc2V0c0FuZEtl
cm5lbF9TMV9jMFtfMjhfaV07CiAgNzYJaGlnaHAgdmVjMiBfMzBfaW5Db29yZCA9ICh1bWF0cml4
X1MxX2MwX2MwICogdmVjMyhfMjZfdG1wXzFfY29vcmRzICsgXzI5X3MueCAqIHVkaXJfUzFfYzAs
IDEuMCkpLnh5OwogIDc3CWhpZ2hwIHZlYzIgXzMxX3N1YnNldENvb3JkOwogIDc4CV8zMV9zdWJz
ZXRDb29yZC54ID0gXzMwX2luQ29vcmQueDsKICA3OQlfMzFfc3Vic2V0Q29vcmQueSA9IF8zMF9p
bkNvb3JkLnk7CiAgODAJaGlnaHAgdmVjMiBfMzJfY2xhbXBlZENvb3JkID0gY2xhbXAoXzMxX3N1
YnNldENvb3JkLCB1Y2xhbXBfUzFfYzBfYzBfYzAueHksIHVjbGFtcF9TMV9jMF9jMF9jMC56dyk7
CiAgODEJbWVkaXVtcCB2ZWM0IF8zM190ZXh0dXJlQ29sb3IgPSB0ZXh0dXJlMkQodVRleHR1cmVT
YW1wbGVyXzBfUzEsIF8zMl9jbGFtcGVkQ29vcmQsIC0wLjQ3NSk7CiAgODIJXzI3X3N1bSArPSBf
Mjlfcy55ICogXzMzX3RleHR1cmVDb2xvcjsKICA4MwloaWdocCB2ZWMyIF8zNF9pbkNvb3JkID0g
KHVtYXRyaXhfUzFfYzBfYzAgKiB2ZWMzKF8yNl90bXBfMV9jb29yZHMgKyBfMjlfcy56ICogdWRp
cl9TMV9jMCwgMS4wKSkueHk7CiAgODQJaGlnaHAgdmVjMiBfMzVfc3Vic2V0Q29vcmQ7CiAgODUJ
XzM1X3N1YnNldENvb3JkLnggPSBfMzRfaW5Db29yZC54OwogIDg2CV8zNV9zdWJzZXRDb29yZC55
ID0gXzM0X2luQ29vcmQueTsKICA4NwloaWdocCB2ZWMyIF8zNl9jbGFtcGVkQ29vcmQgPSBjbGFt
cChfMzVfc3Vic2V0Q29vcmQsIHVjbGFtcF9TMV9jMF9jMF9jMC54eSwgdWNsYW1wX1MxX2MwX2Mw
X2MwLnp3KTsKICA4OAltZWRpdW1wIHZlYzQgXzM3X3RleHR1cmVDb2xvciA9IHRleHR1cmUyRCh1
VGV4dHVyZVNhbXBsZXJfMF9TMSwgXzM2X2NsYW1wZWRDb29yZCwgLTAuNDc1KTsKICA4OQlfMjdf
c3VtICs9IF8yOV9zLncgKiBfMzdfdGV4dHVyZUNvbG9yOwogIDkwCX0KICA5MQltZWRpdW1wIHZl
YzQgb3V0cHV0X1MxID0gXzI3X3N1bTsKICA5Mgl7CiAgOTMJZ2xfRnJhZ0NvbG9yID0gb3V0cHV0
X1MxOwogIDk0CX0KICA5NQl9CiAgOTYJCiAgOTcJCkVycm9yczoKZXJyb3I6IEV4Y2VlZGVkIG1h
eCBuciBpbmRpcmVjdCB0ZXh0dXJlIGxvb2t1cHMgKDUvNCkKClNoYWRlciBjb21waWxhdGlvbiBl
cnJvcgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgMQkvLyBWZXJ0ZXggU0tTTAogICAyCXVu
aWZvcm0gZmxvYXQ0IHNrX1JUQWRqdXN0O3VuaWZvcm0gZmxvYXQzeDMgdW1hdHJpeF9TMTtpbiBm
bG9hdDIgcG9zaXRpb247aW4gaGFsZjQgY29sb3I7aW4gZmxvYXQyIGxvY2FsQ29vcmQ7b3V0IGhh
bGY0IHZjb2xvcl9TMDtvdXQgZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwO3ZvaWQgbWFp
bigpIHsvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3Nv
cgogICAzCXZjb2xvcl9TMCA9IGNvbG9yO3NrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTt7CiAg
IDQJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAgPSAodW1hdHJpeF9TMSAqIGxvY2FsQ29vcmQueHkx
KS54eTsKICAgNQl9CiAgIDYJfQogICA3CS8vIEZyYWdtZW50IFNLU0wKICAgOAljb25zdCBpbnQg
a01heExvb3BMaW1pdF9TMV9jMCA9IDQ7CiAgIDkJdW5pZm9ybSBmbG9hdDQgdWNsYW1wX1MxX2Mw
X2MwX2MwO3VuaWZvcm0gZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDt1bmlmb3JtIGhhbGY0IHVv
ZmZzZXRzQW5kS2VybmVsX1MxX2MwWzE0XTt1bmlmb3JtIGhhbGYyIHVkaXJfUzFfYzA7dW5pZm9y
bSBmbG9hdDN4MyB1bWF0cml4X1MxO3NhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKICAx
MAlpbiBoYWxmNCB2Y29sb3JfUzA7aW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwO2hh
bGY0IFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3Jk
cykgewogIDExCWZsb2F0MiBpbkNvb3JkID0gX2Nvb3JkcztmbG9hdDIgc3Vic2V0Q29vcmQ7c3Vi
c2V0Q29vcmQueCA9IGluQ29vcmQueDtzdWJzZXRDb29yZC55ID0gaW5Db29yZC55O2Zsb2F0MiBj
bGFtcGVkQ29vcmQ7Y2xhbXBlZENvb3JkID0gY2xhbXAoc3Vic2V0Q29vcmQsIHVjbGFtcF9TMV9j
MF9jMF9jMC54eSwgdWNsYW1wX1MxX2MwX2MwX2MwLnp3KTtoYWxmNCB0ZXh0dXJlQ29sb3IgPSBz
YW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIGNsYW1wZWRDb29yZCk7cmV0dXJuIHRleHR1cmVD
b2xvcjt9CiAgMTIJCiAgMTMJaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwKGhhbGY0IF9pbnB1
dCwgZmxvYXQyIF9jb29yZHMpIHsKICAxNAlyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9j
MChfaW5wdXQsICgodW1hdHJpeF9TMV9jMF9jMCkgKiBfY29vcmRzLnh5MSkueHkpOwogIDE1CX0K
ICAxNgkKICAxNwloYWxmNCBydW50aW1lX3NoYWRlcl9TMV9jMChoYWxmNCBfaW5wdXQpIHsKICAx
OAloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKICAxOQlmbG9hdDIgX3RtcF8xX2Nvb3Jk
cyA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwogIDIwCWhhbGY0IHN1bSA9IGhhbGY0KDAuMCk7
CiAgMjEJZm9yIChpbnQgaSA9IDA7aSA8IGtNYXhMb29wTGltaXRfUzFfYzA7ICsraSkgewogIDIy
CWhhbGY0IHMgPSB1b2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtpXTsKICAyMwlzdW0gKz0gcy55ICog
TWF0cml4RWZmZWN0X1MxX2MwX2MwKF90bXBfMF9pbkNvbG9yLCBfdG1wXzFfY29vcmRzICsgZmxv
YXQyKHMueCAqIHVkaXJfUzFfYzApKTsKICAyNAlzdW0gKz0gcy53ICogTWF0cml4RWZmZWN0X1Mx
X2MwX2MwKF90bXBfMF9pbkNvbG9yLCBfdG1wXzFfY29vcmRzICsgZmxvYXQyKHMueiAqIHVkaXJf
UzFfYzApKTsKICAyNQl9CiAgMjYJcmV0dXJuIGhhbGY0KHN1bSk7CiAgMjcJfQogIDI4CQogIDI5
CWhhbGY0IE1hdHJpeEVmZmVjdF9TMShoYWxmNCBfaW5wdXQpIHsKICAzMAlyZXR1cm4gcnVudGlt
ZV9zaGFkZXJfUzFfYzAoX2lucHV0KTsKICAzMQl9CiAgMzIJCiAgMzMJdm9pZCBtYWluKCkgey8v
IFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgogIDM0CWhhbGY0IG91dHB1
dENvbG9yX1MwO291dHB1dENvbG9yX1MwID0gdmNvbG9yX1MwO2NvbnN0IGhhbGY0IG91dHB1dENv
dmVyYWdlX1MwID0gaGFsZjQoMSk7aGFsZjQgb3V0cHV0X1MxO291dHB1dF9TMSA9IE1hdHJpeEVm
ZmVjdF9TMShvdXRwdXRDb2xvcl9TMCk7eyAvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYK
ICAzNQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDt9fQogIDM2
CS8vIFZlcnRleCBHTFNMCiAgMzcJI3ZlcnNpb24gMTAwCiAgMzgJCiAgMzkJcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7CiAgNDAJcHJlY2lzaW9uIG1lZGl1bXAgc2FtcGxlcjJEOwogIDQxCXVuaWZv
cm0gaGlnaHAgdmVjNCBza19SVEFkanVzdDsKICA0Mgl1bmlmb3JtIGhpZ2hwIG1hdDMgdW1hdHJp
eF9TMTsKICA0MwlhdHRyaWJ1dGUgaGlnaHAgdmVjMiBwb3NpdGlvbjsKICA0NAlhdHRyaWJ1dGUg
bWVkaXVtcCB2ZWM0IGNvbG9yOwogIDQ1CWF0dHJpYnV0ZSBoaWdocCB2ZWMyIGxvY2FsQ29vcmQ7
CiAgNDYJdmFyeWluZyBtZWRpdW1wIHZlYzQgdmNvbG9yX1MwOwogIDQ3CXZhcnlpbmcgaGlnaHAg
dmVjMiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKICA0OAl2b2lkIG1haW4oKSB7CiAgNDkJdmNv
bG9yX1MwID0gY29sb3I7CiAgNTAJZ2xfUG9zaXRpb24gPSB2ZWM0KHBvc2l0aW9uLCAwLjAsIDEu
MCk7CiAgNTEJewogIDUyCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gKHVtYXRyaXhfUzEgKiB2
ZWMzKGxvY2FsQ29vcmQsIDEuMCkpLnh5OwogIDUzCX0KICA1NAlnbF9Qb3NpdGlvbiA9IHZlYzQo
Z2xfUG9zaXRpb24ueHkgKiBza19SVEFkanVzdC54eiArIGdsX1Bvc2l0aW9uLnd3ICogc2tfUlRB
ZGp1c3QueXcsIDAuMCwgZ2xfUG9zaXRpb24udyk7CiAgNTUJfQogIDU2CQogIDU3CS8vIEZyYWdt
ZW50IEdMU0wKICA1OAkjdmVyc2lvbiAxMDAKICA1OQkKICA2MAlwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKICA2MQlwcmVjaXNpb24gbWVkaXVtcCBzYW1wbGVyMkQ7CiAgNjIJY29uc3QgaGlnaHAg
aW50IGtNYXhMb29wTGltaXRfUzFfYzAgPSA0OwogIDYzCXVuaWZvcm0gaGlnaHAgdmVjNCB1Y2xh
bXBfUzFfYzBfYzBfYzA7CiAgNjQJdW5pZm9ybSBoaWdocCBtYXQzIHVtYXRyaXhfUzFfYzBfYzA7
CiAgNjUJdW5pZm9ybSBtZWRpdW1wIHZlYzQgdW9mZnNldHNBbmRLZXJuZWxfUzFfYzBbMTRdOwog
IDY2CXVuaWZvcm0gbWVkaXVtcCB2ZWMyIHVkaXJfUzFfYzA7CiAgNjcJdW5pZm9ybSBoaWdocCBt
YXQzIHVtYXRyaXhfUzE7CiAgNjgJdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBf
UzE7CiAgNjkJdmFyeWluZyBtZWRpdW1wIHZlYzQgdmNvbG9yX1MwOwogIDcwCXZhcnlpbmcgaGln
aHAgdmVjMiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKICA3MQl2b2lkIG1haW4oKSB7CiAgNzIJ
aGlnaHAgdmVjMiBfMjZfdG1wXzFfY29vcmRzID0gdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CiAg
NzMJbWVkaXVtcCB2ZWM0IF8yN19zdW0gPSB2ZWM0KDAuMCk7CiAgNzQJZm9yIChoaWdocCBpbnQg
XzI4X2kgPSAwO18yOF9pIDwga01heExvb3BMaW1pdF9TMV9jMDsgKytfMjhfaSkgewogIDc1CW1l
ZGl1bXAgdmVjNCBfMjlfcyA9IHVvZmZzZXRzQW5kS2VybmVsX1MxX2MwW18yOF9pXTsKICA3Nglo
aWdocCB2ZWMyIF8zMF9pbkNvb3JkID0gKHVtYXRyaXhfUzFfYzBfYzAgKiB2ZWMzKF8yNl90bXBf
MV9jb29yZHMgKyBfMjlfcy54ICogdWRpcl9TMV9jMCwgMS4wKSkueHk7CiAgNzcJaGlnaHAgdmVj
MiBfMzFfc3Vic2V0Q29vcmQ7CiAgNzgJXzMxX3N1YnNldENvb3JkLnggPSBfMzBfaW5Db29yZC54
OwogIDc5CV8zMV9zdWJzZXRDb29yZC55ID0gXzMwX2luQ29vcmQueTsKICA4MAloaWdocCB2ZWMy
IF8zMl9jbGFtcGVkQ29vcmQgPSBjbGFtcChfMzFfc3Vic2V0Q29vcmQsIHVjbGFtcF9TMV9jMF9j
MF9jMC54eSwgdWNsYW1wX1MxX2MwX2MwX2MwLnp3KTsKICA4MQltZWRpdW1wIHZlYzQgXzMzX3Rl
eHR1cmVDb2xvciA9IHRleHR1cmUyRCh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgXzMyX2NsYW1wZWRD
b29yZCwgLTAuNDc1KTsKICA4MglfMjdfc3VtICs9IF8yOV9zLnkgKiBfMzNfdGV4dHVyZUNvbG9y
OwogIDgzCWhpZ2hwIHZlYzIgXzM0X2luQ29vcmQgPSAodW1hdHJpeF9TMV9jMF9jMCAqIHZlYzMo
XzI2X3RtcF8xX2Nvb3JkcyArIF8yOV9zLnogKiB1ZGlyX1MxX2MwLCAxLjApKS54eTsKICA4NAlo
aWdocCB2ZWMyIF8zNV9zdWJzZXRDb29yZDsKICA4NQlfMzVfc3Vic2V0Q29vcmQueCA9IF8zNF9p
bkNvb3JkLng7CiAgODYJXzM1X3N1YnNldENvb3JkLnkgPSBfMzRfaW5Db29yZC55OwogIDg3CWhp
Z2hwIHZlYzIgXzM2X2NsYW1wZWRDb29yZCA9IGNsYW1wKF8zNV9zdWJzZXRDb29yZCwgdWNsYW1w
X1MxX2MwX2MwX2MwLnh5LCB1Y2xhbXBfUzFfYzBfYzBfYzAuencpOwogIDg4CW1lZGl1bXAgdmVj
NCBfMzdfdGV4dHVyZUNvbG9yID0gdGV4dHVyZTJEKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfMzZf
Y2xhbXBlZENvb3JkLCAtMC40NzUpOwogIDg5CV8yN19zdW0gKz0gXzI5X3MudyAqIF8zN190ZXh0
dXJlQ29sb3I7CiAgOTAJfQogIDkxCW1lZGl1bXAgdmVjNCBvdXRwdXRfUzEgPSBfMjdfc3VtOwog
IDkyCXsKICA5MwlnbF9GcmFnQ29sb3IgPSBvdXRwdXRfUzE7CiAgOTQJfQogIDk1CX0KICA5NgkK
ICA5NwkKRXJyb3JzOgplcnJvcjogRXhjZWVkZWQgbWF4IG5yIGluZGlyZWN0IHRleHR1cmUgbG9v
a3VwcyAoOS80KQoKU2hhZGVyIGNvbXBpbGF0aW9uIGVycm9yCi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogICAxCS8vIFZlcnRleCBTS1NMCiAgIDIJdW5pZm9ybSBmbG9hdDQgc2tfUlRBZGp1c3Q7
dW5pZm9ybSBmbG9hdDN4MyB1bWF0cml4X1MxO2luIGZsb2F0MiBwb3NpdGlvbjtpbiBoYWxmNCBj
b2xvcjtpbiBmbG9hdDIgbG9jYWxDb29yZDtvdXQgaGFsZjQgdmNvbG9yX1MwO291dCBmbG9hdDIg
dlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7dm9pZCBtYWluKCkgey8vIFByaW1pdGl2ZSBQcm9jZXNz
b3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCiAgIDMJdmNvbG9yX1MwID0gY29sb3I7
c2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxO3sKICAgNAl2VHJhbnNmb3JtZWRDb29yZHNfMl9T
MCA9ICh1bWF0cml4X1MxICogbG9jYWxDb29yZC54eTEpLnh5OwogICA1CX0KICAgNgl9CiAgIDcJ
Ly8gRnJhZ21lbnQgU0tTTAogICA4CWNvbnN0IGludCBrTWF4TG9vcExpbWl0X1MxX2MwID0gNDsK
ICAgOQl1bmlmb3JtIGZsb2F0NCB1Y2xhbXBfUzFfYzBfYzBfYzA7dW5pZm9ybSBmbG9hdDN4MyB1
bWF0cml4X1MxX2MwX2MwO3VuaWZvcm0gaGFsZjQgdW9mZnNldHNBbmRLZXJuZWxfUzFfYzBbMTRd
O3VuaWZvcm0gaGFsZjIgdWRpcl9TMV9jMDt1bmlmb3JtIGZsb2F0M3gzIHVtYXRyaXhfUzE7c2Ft
cGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwogIDEwCWluIGhhbGY0IHZjb2xvcl9TMDtpbiBm
bG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7aGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMF9j
MF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSB7CiAgMTEJZmxvYXQyIGluQ29vcmQg
PSBfY29vcmRzO2Zsb2F0MiBzdWJzZXRDb29yZDtzdWJzZXRDb29yZC54ID0gaW5Db29yZC54O3N1
YnNldENvb3JkLnkgPSBpbkNvb3JkLnk7ZmxvYXQyIGNsYW1wZWRDb29yZDtjbGFtcGVkQ29vcmQg
PSBjbGFtcChzdWJzZXRDb29yZCwgdWNsYW1wX1MxX2MwX2MwX2MwLnh5LCB1Y2xhbXBfUzFfYzBf
YzBfYzAuencpO2hhbGY0IHRleHR1cmVDb2xvciA9IHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9T
MSwgY2xhbXBlZENvb3JkKTtyZXR1cm4gdGV4dHVyZUNvbG9yO30KICAxMgkKICAxMwloYWxmNCBN
YXRyaXhFZmZlY3RfUzFfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgewogIDE0
CXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKF9pbnB1dCwgKCh1bWF0cml4X1MxX2Mw
X2MwKSAqIF9jb29yZHMueHkxKS54eSk7CiAgMTUJfQogIDE2CQogIDE3CWhhbGY0IHJ1bnRpbWVf
c2hhZGVyX1MxX2MwKGhhbGY0IF9pbnB1dCkgewogIDE4CWhhbGY0IF90bXBfMF9pbkNvbG9yID0g
X2lucHV0OwogIDE5CWZsb2F0MiBfdG1wXzFfY29vcmRzID0gdlRyYW5zZm9ybWVkQ29vcmRzXzJf
UzA7CiAgMjAJaGFsZjQgc3VtID0gaGFsZjQoMC4wKTsKICAyMQlmb3IgKGludCBpID0gMDtpIDwg
a01heExvb3BMaW1pdF9TMV9jMDsgKytpKSB7CiAgMjIJaGFsZjQgcyA9IHVvZmZzZXRzQW5kS2Vy
bmVsX1MxX2MwW2ldOwogIDIzCXN1bSArPSBzLnkgKiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX3Rt
cF8wX2luQ29sb3IsIF90bXBfMV9jb29yZHMgKyBmbG9hdDIocy54ICogdWRpcl9TMV9jMCkpOwog
IDI0CXN1bSArPSBzLncgKiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX3RtcF8wX2luQ29sb3IsIF90
bXBfMV9jb29yZHMgKyBmbG9hdDIocy56ICogdWRpcl9TMV9jMCkpOwogIDI1CX0KICAyNglyZXR1
cm4gaGFsZjQoc3VtKTsKICAyNwl9CiAgMjgJCiAgMjkJaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhh
bGY0IF9pbnB1dCkgewogIDMwCXJldHVybiBydW50aW1lX3NoYWRlcl9TMV9jMChfaW5wdXQpOwog
IDMxCX0KICAzMgkKICAzMwl2b2lkIG1haW4oKSB7Ly8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdl
b21ldHJ5UHJvY2Vzc29yCiAgMzQJaGFsZjQgb3V0cHV0Q29sb3JfUzA7b3V0cHV0Q29sb3JfUzAg
PSB2Y29sb3JfUzA7Y29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTtoYWxm
NCBvdXRwdXRfUzE7b3V0cHV0X1MxID0gTWF0cml4RWZmZWN0X1MxKG91dHB1dENvbG9yX1MwKTt7
IC8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgogIDM1CXNrX0ZyYWdDb2xvciA9IG91dHB1
dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwO319CiAgMzYJLy8gVmVydGV4IEdMU0wKICAzNwkjdmVy
c2lvbiAxMDAKICAzOAkKICAzOQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKICA0MAlwcmVjaXNp
b24gbWVkaXVtcCBzYW1wbGVyMkQ7CiAgNDEJdW5pZm9ybSBoaWdocCB2ZWM0IHNrX1JUQWRqdXN0
OwogIDQyCXVuaWZvcm0gaGlnaHAgbWF0MyB1bWF0cml4X1MxOwogIDQzCWF0dHJpYnV0ZSBoaWdo
cCB2ZWMyIHBvc2l0aW9uOwogIDQ0CWF0dHJpYnV0ZSBtZWRpdW1wIHZlYzQgY29sb3I7CiAgNDUJ
YXR0cmlidXRlIGhpZ2hwIHZlYzIgbG9jYWxDb29yZDsKICA0Ngl2YXJ5aW5nIG1lZGl1bXAgdmVj
NCB2Y29sb3JfUzA7CiAgNDcJdmFyeWluZyBoaWdocCB2ZWMyIHZUcmFuc2Zvcm1lZENvb3Jkc18y
X1MwOwogIDQ4CXZvaWQgbWFpbigpIHsKICA0OQl2Y29sb3JfUzAgPSBjb2xvcjsKICA1MAlnbF9Q
b3NpdGlvbiA9IHZlYzQocG9zaXRpb24sIDAuMCwgMS4wKTsKICA1MQl7CiAgNTIJdlRyYW5zZm9y
bWVkQ29vcmRzXzJfUzAgPSAodW1hdHJpeF9TMSAqIHZlYzMobG9jYWxDb29yZCwgMS4wKSkueHk7
CiAgNTMJfQogIDU0CWdsX1Bvc2l0aW9uID0gdmVjNChnbF9Qb3NpdGlvbi54eSAqIHNrX1JUQWRq
dXN0Lnh6ICsgZ2xfUG9zaXRpb24ud3cgKiBza19SVEFkanVzdC55dywgMC4wLCBnbF9Qb3NpdGlv
bi53KTsKICA1NQl9CiAgNTYJCiAgNTcJLy8gRnJhZ21lbnQgR0xTTAogIDU4CSN2ZXJzaW9uIDEw
MAogIDU5CQogIDYwCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwogIDYxCXByZWNpc2lvbiBtZWRp
dW1wIHNhbXBsZXIyRDsKICA2Mgljb25zdCBoaWdocCBpbnQga01heExvb3BMaW1pdF9TMV9jMCA9
IDQ7CiAgNjMJdW5pZm9ybSBoaWdocCB2ZWM0IHVjbGFtcF9TMV9jMF9jMF9jMDsKICA2NAl1bmlm
b3JtIGhpZ2hwIG1hdDMgdW1hdHJpeF9TMV9jMF9jMDsKICA2NQl1bmlmb3JtIG1lZGl1bXAgdmVj
NCB1b2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFsxNF07CiAgNjYJdW5pZm9ybSBtZWRpdW1wIHZlYzIg
dWRpcl9TMV9jMDsKICA2Nwl1bmlmb3JtIGhpZ2hwIG1hdDMgdW1hdHJpeF9TMTsKICA2OAl1bmlm
b3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKICA2OQl2YXJ5aW5nIG1lZGl1bXAg
dmVjNCB2Y29sb3JfUzA7CiAgNzAJdmFyeWluZyBoaWdocCB2ZWMyIHZUcmFuc2Zvcm1lZENvb3Jk
c18yX1MwOwogIDcxCXZvaWQgbWFpbigpIHsKICA3MgloaWdocCB2ZWMyIF8yNl90bXBfMV9jb29y
ZHMgPSB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKICA3MwltZWRpdW1wIHZlYzQgXzI3X3N1bSA9
IHZlYzQoMC4wKTsKICA3NAlmb3IgKGhpZ2hwIGludCBfMjhfaSA9IDA7XzI4X2kgPCBrTWF4TG9v
cExpbWl0X1MxX2MwOyArK18yOF9pKSB7CiAgNzUJbWVkaXVtcCB2ZWM0IF8yOV9zID0gdW9mZnNl
dHNBbmRLZXJuZWxfUzFfYzBbXzI4X2ldOwogIDc2CWhpZ2hwIHZlYzIgXzMwX2luQ29vcmQgPSAo
dW1hdHJpeF9TMV9jMF9jMCAqIHZlYzMoXzI2X3RtcF8xX2Nvb3JkcyArIF8yOV9zLnggKiB1ZGly
X1MxX2MwLCAxLjApKS54eTsKICA3NwloaWdocCB2ZWMyIF8zMV9zdWJzZXRDb29yZDsKICA3OAlf
MzFfc3Vic2V0Q29vcmQueCA9IF8zMF9pbkNvb3JkLng7CiAgNzkJXzMxX3N1YnNldENvb3JkLnkg
PSBfMzBfaW5Db29yZC55OwogIDgwCWhpZ2hwIHZlYzIgXzMyX2NsYW1wZWRDb29yZCA9IGNsYW1w
KF8zMV9zdWJzZXRDb29yZCwgdWNsYW1wX1MxX2MwX2MwX2MwLnh5LCB1Y2xhbXBfUzFfYzBfYzBf
YzAuencpOwogIDgxCW1lZGl1bXAgdmVjNCBfMzNfdGV4dHVyZUNvbG9yID0gdGV4dHVyZTJEKHVU
ZXh0dXJlU2FtcGxlcl8wX1MxLCBfMzJfY2xhbXBlZENvb3JkLCAtMC40NzUpOwogIDgyCV8yN19z
dW0gKz0gXzI5X3MueSAqIF8zM190ZXh0dXJlQ29sb3I7CiAgODMJaGlnaHAgdmVjMiBfMzRfaW5D
b29yZCA9ICh1bWF0cml4X1MxX2MwX2MwICogdmVjMyhfMjZfdG1wXzFfY29vcmRzICsgXzI5X3Mu
eiAqIHVkaXJfUzFfYzAsIDEuMCkpLnh5OwogIDg0CWhpZ2hwIHZlYzIgXzM1X3N1YnNldENvb3Jk
OwogIDg1CV8zNV9zdWJzZXRDb29yZC54ID0gXzM0X2luQ29vcmQueDsKICA4NglfMzVfc3Vic2V0
Q29vcmQueSA9IF8zNF9pbkNvb3JkLnk7CiAgODcJaGlnaHAgdmVjMiBfMzZfY2xhbXBlZENvb3Jk
ID0gY2xhbXAoXzM1X3N1YnNldENvb3JkLCB1Y2xhbXBfUzFfYzBfYzBfYzAueHksIHVjbGFtcF9T
MV9jMF9jMF9jMC56dyk7CiAgODgJbWVkaXVtcCB2ZWM0IF8zN190ZXh0dXJlQ29sb3IgPSB0ZXh0
dXJlMkQodVRleHR1cmVTYW1wbGVyXzBfUzEsIF8zNl9jbGFtcGVkQ29vcmQsIC0wLjQ3NSk7CiAg
ODkJXzI3X3N1bSArPSBfMjlfcy53ICogXzM3X3RleHR1cmVDb2xvcjsKICA5MAl9CiAgOTEJbWVk
aXVtcCB2ZWM0IG91dHB1dF9TMSA9IF8yN19zdW07CiAgOTIJewogIDkzCWdsX0ZyYWdDb2xvciA9
IG91dHB1dF9TMTsKICA5NAl9CiAgOTUJfQogIDk2CQogIDk3CQpFcnJvcnM6CmVycm9yOiBFeGNl
ZWRlZCBtYXggbnIgaW5kaXJlY3QgdGV4dHVyZSBsb29rdXBzICg5LzQpCgpGYWlsZWQgdG8gY3Jl
YXRlIERNQS1CVUYgdGV4dHVyZSBvZiBzaXplIDEwMjR4NjkzOiBVbnN1cHBvcnRlZCBkbWFidWYg
Zm9ybWF0OiBYUjI0OjB4ZmZmZmZmZmZmZmZmZmYKU2hhZGVyIGNvbXBpbGF0aW9uIGVycm9yCi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAxCS8vIFZlcnRleCBTS1NMCiAgIDIJdW5pZm9ybSBm
bG9hdDQgc2tfUlRBZGp1c3Q7dW5pZm9ybSBmbG9hdDN4MyB1bWF0cml4X1MxO2luIGZsb2F0MiBw
b3NpdGlvbjtpbiBoYWxmNCBjb2xvcjtpbiBmbG9hdDIgbG9jYWxDb29yZDtvdXQgaGFsZjQgdmNv
bG9yX1MwO291dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7dm9pZCBtYWluKCkgey8v
IFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCiAgIDMJ
dmNvbG9yX1MwID0gY29sb3I7c2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxO3sKICAgNAl2VHJh
bnNmb3JtZWRDb29yZHNfMl9TMCA9ICh1bWF0cml4X1MxICogbG9jYWxDb29yZC54eTEpLnh5Owog
ICA1CX0KICAgNgl9CiAgIDcJLy8gRnJhZ21lbnQgU0tTTAogICA4CWNvbnN0IGludCBrTWF4TG9v
cExpbWl0X1MxX2MwID0gMjsKICAgOQl1bmlmb3JtIGZsb2F0NCB1Y2xhbXBfUzFfYzBfYzBfYzA7
dW5pZm9ybSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwO3VuaWZvcm0gaGFsZjQgdW9mZnNldHNB
bmRLZXJuZWxfUzFfYzBbMTRdO3VuaWZvcm0gaGFsZjIgdWRpcl9TMV9jMDt1bmlmb3JtIGZsb2F0
M3gzIHVtYXRyaXhfUzE7c2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwogIDEwCWluIGhh
bGY0IHZjb2xvcl9TMDtpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7aGFsZjQgVGV4
dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSB7CiAg
MTEJZmxvYXQyIGluQ29vcmQgPSBfY29vcmRzO2Zsb2F0MiBzdWJzZXRDb29yZDtzdWJzZXRDb29y
ZC54ID0gaW5Db29yZC54O3N1YnNldENvb3JkLnkgPSBpbkNvb3JkLnk7ZmxvYXQyIGNsYW1wZWRD
b29yZDtjbGFtcGVkQ29vcmQgPSBjbGFtcChzdWJzZXRDb29yZCwgdWNsYW1wX1MxX2MwX2MwX2Mw
Lnh5LCB1Y2xhbXBfUzFfYzBfYzBfYzAuencpO2hhbGY0IHRleHR1cmVDb2xvciA9IHNhbXBsZSh1
VGV4dHVyZVNhbXBsZXJfMF9TMSwgY2xhbXBlZENvb3JkKTtyZXR1cm4gdGV4dHVyZUNvbG9yO30K
ICAxMgkKICAxMwloYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9h
dDIgX2Nvb3JkcykgewogIDE0CXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKF9pbnB1
dCwgKCh1bWF0cml4X1MxX2MwX2MwKSAqIF9jb29yZHMueHkxKS54eSk7CiAgMTUJfQogIDE2CQog
IDE3CWhhbGY0IHJ1bnRpbWVfc2hhZGVyX1MxX2MwKGhhbGY0IF9pbnB1dCkgewogIDE4CWhhbGY0
IF90bXBfMF9pbkNvbG9yID0gX2lucHV0OwogIDE5CWZsb2F0MiBfdG1wXzFfY29vcmRzID0gdlRy
YW5zZm9ybWVkQ29vcmRzXzJfUzA7CiAgMjAJaGFsZjQgc3VtID0gaGFsZjQoMC4wKTsKICAyMQlm
b3IgKGludCBpID0gMDtpIDwga01heExvb3BMaW1pdF9TMV9jMDsgKytpKSB7CiAgMjIJaGFsZjQg
cyA9IHVvZmZzZXRzQW5kS2VybmVsX1MxX2MwW2ldOwogIDIzCXN1bSArPSBzLnkgKiBNYXRyaXhF
ZmZlY3RfUzFfYzBfYzAoX3RtcF8wX2luQ29sb3IsIF90bXBfMV9jb29yZHMgKyBmbG9hdDIocy54
ICogdWRpcl9TMV9jMCkpOwogIDI0CXN1bSArPSBzLncgKiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAo
X3RtcF8wX2luQ29sb3IsIF90bXBfMV9jb29yZHMgKyBmbG9hdDIocy56ICogdWRpcl9TMV9jMCkp
OwogIDI1CX0KICAyNglyZXR1cm4gaGFsZjQoc3VtKTsKICAyNwl9CiAgMjgJCiAgMjkJaGFsZjQg
TWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgewogIDMwCXJldHVybiBydW50aW1lX3NoYWRl
cl9TMV9jMChfaW5wdXQpOwogIDMxCX0KICAzMgkKICAzMwl2b2lkIG1haW4oKSB7Ly8gU3RhZ2Ug
MCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCiAgMzQJaGFsZjQgb3V0cHV0Q29sb3Jf
UzA7b3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7Y29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2Vf
UzAgPSBoYWxmNCgxKTtoYWxmNCBvdXRwdXRfUzE7b3V0cHV0X1MxID0gTWF0cml4RWZmZWN0X1Mx
KG91dHB1dENvbG9yX1MwKTt7IC8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgogIDM1CXNr
X0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwO319CiAgMzYJLy8gVmVy
dGV4IEdMU0wKICAzNwkjdmVyc2lvbiAxMDAKICAzOAkKICAzOQlwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKICA0MAlwcmVjaXNpb24gbWVkaXVtcCBzYW1wbGVyMkQ7CiAgNDEJdW5pZm9ybSBoaWdo
cCB2ZWM0IHNrX1JUQWRqdXN0OwogIDQyCXVuaWZvcm0gaGlnaHAgbWF0MyB1bWF0cml4X1MxOwog
IDQzCWF0dHJpYnV0ZSBoaWdocCB2ZWMyIHBvc2l0aW9uOwogIDQ0CWF0dHJpYnV0ZSBtZWRpdW1w
IHZlYzQgY29sb3I7CiAgNDUJYXR0cmlidXRlIGhpZ2hwIHZlYzIgbG9jYWxDb29yZDsKICA0Ngl2
YXJ5aW5nIG1lZGl1bXAgdmVjNCB2Y29sb3JfUzA7CiAgNDcJdmFyeWluZyBoaWdocCB2ZWMyIHZU
cmFuc2Zvcm1lZENvb3Jkc18yX1MwOwogIDQ4CXZvaWQgbWFpbigpIHsKICA0OQl2Y29sb3JfUzAg
PSBjb2xvcjsKICA1MAlnbF9Qb3NpdGlvbiA9IHZlYzQocG9zaXRpb24sIDAuMCwgMS4wKTsKICA1
MQl7CiAgNTIJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAgPSAodW1hdHJpeF9TMSAqIHZlYzMobG9j
YWxDb29yZCwgMS4wKSkueHk7CiAgNTMJfQogIDU0CWdsX1Bvc2l0aW9uID0gdmVjNChnbF9Qb3Np
dGlvbi54eSAqIHNrX1JUQWRqdXN0Lnh6ICsgZ2xfUG9zaXRpb24ud3cgKiBza19SVEFkanVzdC55
dywgMC4wLCBnbF9Qb3NpdGlvbi53KTsKICA1NQl9CiAgNTYJCiAgNTcJLy8gRnJhZ21lbnQgR0xT
TAogIDU4CSN2ZXJzaW9uIDEwMAogIDU5CQogIDYwCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owog
IDYxCXByZWNpc2lvbiBtZWRpdW1wIHNhbXBsZXIyRDsKICA2Mgljb25zdCBoaWdocCBpbnQga01h
eExvb3BMaW1pdF9TMV9jMCA9IDI7CiAgNjMJdW5pZm9ybSBoaWdocCB2ZWM0IHVjbGFtcF9TMV9j
MF9jMF9jMDsKICA2NAl1bmlmb3JtIGhpZ2hwIG1hdDMgdW1hdHJpeF9TMV9jMF9jMDsKICA2NQl1
bmlmb3JtIG1lZGl1bXAgdmVjNCB1b2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFsxNF07CiAgNjYJdW5p
Zm9ybSBtZWRpdW1wIHZlYzIgdWRpcl9TMV9jMDsKICA2Nwl1bmlmb3JtIGhpZ2hwIG1hdDMgdW1h
dHJpeF9TMTsKICA2OAl1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKICA2
OQl2YXJ5aW5nIG1lZGl1bXAgdmVjNCB2Y29sb3JfUzA7CiAgNzAJdmFyeWluZyBoaWdocCB2ZWMy
IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwogIDcxCXZvaWQgbWFpbigpIHsKICA3MgloaWdocCB2
ZWMyIF8yNl90bXBfMV9jb29yZHMgPSB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKICA3MwltZWRp
dW1wIHZlYzQgXzI3X3N1bSA9IHZlYzQoMC4wKTsKICA3NAlmb3IgKGhpZ2hwIGludCBfMjhfaSA9
IDA7XzI4X2kgPCBrTWF4TG9vcExpbWl0X1MxX2MwOyArK18yOF9pKSB7CiAgNzUJbWVkaXVtcCB2
ZWM0IF8yOV9zID0gdW9mZnNldHNBbmRLZXJuZWxfUzFfYzBbXzI4X2ldOwogIDc2CWhpZ2hwIHZl
YzIgXzMwX2luQ29vcmQgPSAodW1hdHJpeF9TMV9jMF9jMCAqIHZlYzMoXzI2X3RtcF8xX2Nvb3Jk
cyArIF8yOV9zLnggKiB1ZGlyX1MxX2MwLCAxLjApKS54eTsKICA3NwloaWdocCB2ZWMyIF8zMV9z
dWJzZXRDb29yZDsKICA3OAlfMzFfc3Vic2V0Q29vcmQueCA9IF8zMF9pbkNvb3JkLng7CiAgNzkJ
XzMxX3N1YnNldENvb3JkLnkgPSBfMzBfaW5Db29yZC55OwogIDgwCWhpZ2hwIHZlYzIgXzMyX2Ns
YW1wZWRDb29yZCA9IGNsYW1wKF8zMV9zdWJzZXRDb29yZCwgdWNsYW1wX1MxX2MwX2MwX2MwLnh5
LCB1Y2xhbXBfUzFfYzBfYzBfYzAuencpOwogIDgxCW1lZGl1bXAgdmVjNCBfMzNfdGV4dHVyZUNv
bG9yID0gdGV4dHVyZTJEKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfMzJfY2xhbXBlZENvb3JkLCAt
MC40NzUpOwogIDgyCV8yN19zdW0gKz0gXzI5X3MueSAqIF8zM190ZXh0dXJlQ29sb3I7CiAgODMJ
aGlnaHAgdmVjMiBfMzRfaW5Db29yZCA9ICh1bWF0cml4X1MxX2MwX2MwICogdmVjMyhfMjZfdG1w
XzFfY29vcmRzICsgXzI5X3MueiAqIHVkaXJfUzFfYzAsIDEuMCkpLnh5OwogIDg0CWhpZ2hwIHZl
YzIgXzM1X3N1YnNldENvb3JkOwogIDg1CV8zNV9zdWJzZXRDb29yZC54ID0gXzM0X2luQ29vcmQu
eDsKICA4NglfMzVfc3Vic2V0Q29vcmQueSA9IF8zNF9pbkNvb3JkLnk7CiAgODcJaGlnaHAgdmVj
MiBfMzZfY2xhbXBlZENvb3JkID0gY2xhbXAoXzM1X3N1YnNldENvb3JkLCB1Y2xhbXBfUzFfYzBf
YzBfYzAueHksIHVjbGFtcF9TMV9jMF9jMF9jMC56dyk7CiAgODgJbWVkaXVtcCB2ZWM0IF8zN190
ZXh0dXJlQ29sb3IgPSB0ZXh0dXJlMkQodVRleHR1cmVTYW1wbGVyXzBfUzEsIF8zNl9jbGFtcGVk
Q29vcmQsIC0wLjQ3NSk7CiAgODkJXzI3X3N1bSArPSBfMjlfcy53ICogXzM3X3RleHR1cmVDb2xv
cjsKICA5MAl9CiAgOTEJbWVkaXVtcCB2ZWM0IG91dHB1dF9TMSA9IF8yN19zdW07CiAgOTIJewog
IDkzCWdsX0ZyYWdDb2xvciA9IG91dHB1dF9TMTsKICA5NAl9CiAgOTUJfQogIDk2CQogIDk3CQpF
cnJvcnM6CmVycm9yOiBFeGNlZWRlZCBtYXggbnIgaW5kaXJlY3QgdGV4dHVyZSBsb29rdXBzICg1
LzQpCgpGYWlsZWQgdG8gY3JlYXRlIERNQS1CVUYgdGV4dHVyZSBvZiBzaXplIDEwMjR4NjkzOiBV
bnN1cHBvcnRlZCBkbWFidWYgZm9ybWF0OiBYUjI0OjB4ZmZmZmZmZmZmZmZmZmYKU2hhZGVyIGNv
bXBpbGF0aW9uIGVycm9yCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAxCS8vIFZlcnRleCBT
S1NMCiAgIDIJdW5pZm9ybSBmbG9hdDQgc2tfUlRBZGp1c3Q7dW5pZm9ybSBmbG9hdDN4MyB1bWF0
cml4X1MxO2luIGZsb2F0MiBwb3NpdGlvbjtpbiBoYWxmNCBjb2xvcjtpbiBmbG9hdDIgbG9jYWxD
b29yZDtvdXQgaGFsZjQgdmNvbG9yX1MwO291dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJf
UzA7dm9pZCBtYWluKCkgey8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21l
dHJ5UHJvY2Vzc29yCiAgIDMJdmNvbG9yX1MwID0gY29sb3I7c2tfUG9zaXRpb24gPSBwb3NpdGlv
bi54eTAxO3sKICAgNAl2VHJhbnNmb3JtZWRDb29yZHNfMl9TMCA9ICh1bWF0cml4X1MxICogbG9j
YWxDb29yZC54eTEpLnh5OwogICA1CX0KICAgNgl9CiAgIDcJLy8gRnJhZ21lbnQgU0tTTAogICA4
CWNvbnN0IGludCBrTWF4TG9vcExpbWl0X1MxX2MwID0gMjsKICAgOQl1bmlmb3JtIGZsb2F0NCB1
Y2xhbXBfUzFfYzBfYzBfYzA7dW5pZm9ybSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwO3VuaWZv
cm0gaGFsZjQgdW9mZnNldHNBbmRLZXJuZWxfUzFfYzBbMTRdO3VuaWZvcm0gaGFsZjIgdWRpcl9T
MV9jMDt1bmlmb3JtIGZsb2F0M3gzIHVtYXRyaXhfUzE7c2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxl
cl8wX1MxOwogIDEwCWluIGhhbGY0IHZjb2xvcl9TMDtpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29v
cmRzXzJfUzA7aGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQsIGZs
b2F0MiBfY29vcmRzKSB7CiAgMTEJZmxvYXQyIGluQ29vcmQgPSBfY29vcmRzO2Zsb2F0MiBzdWJz
ZXRDb29yZDtzdWJzZXRDb29yZC54ID0gaW5Db29yZC54O3N1YnNldENvb3JkLnkgPSBpbkNvb3Jk
Lnk7ZmxvYXQyIGNsYW1wZWRDb29yZDtjbGFtcGVkQ29vcmQgPSBjbGFtcChzdWJzZXRDb29yZCwg
dWNsYW1wX1MxX2MwX2MwX2MwLnh5LCB1Y2xhbXBfUzFfYzBfYzBfYzAuencpO2hhbGY0IHRleHR1
cmVDb2xvciA9IHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgY2xhbXBlZENvb3JkKTtyZXR1
cm4gdGV4dHVyZUNvbG9yO30KICAxMgkKICAxMwloYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzAo
aGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgewogIDE0CXJldHVybiBUZXh0dXJlRWZmZWN0
X1MxX2MwX2MwX2MwKF9pbnB1dCwgKCh1bWF0cml4X1MxX2MwX2MwKSAqIF9jb29yZHMueHkxKS54
eSk7CiAgMTUJfQogIDE2CQogIDE3CWhhbGY0IHJ1bnRpbWVfc2hhZGVyX1MxX2MwKGhhbGY0IF9p
bnB1dCkgewogIDE4CWhhbGY0IF90bXBfMF9pbkNvbG9yID0gX2lucHV0OwogIDE5CWZsb2F0MiBf
dG1wXzFfY29vcmRzID0gdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CiAgMjAJaGFsZjQgc3VtID0g
aGFsZjQoMC4wKTsKICAyMQlmb3IgKGludCBpID0gMDtpIDwga01heExvb3BMaW1pdF9TMV9jMDsg
KytpKSB7CiAgMjIJaGFsZjQgcyA9IHVvZmZzZXRzQW5kS2VybmVsX1MxX2MwW2ldOwogIDIzCXN1
bSArPSBzLnkgKiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX3RtcF8wX2luQ29sb3IsIF90bXBfMV9j
b29yZHMgKyBmbG9hdDIocy54ICogdWRpcl9TMV9jMCkpOwogIDI0CXN1bSArPSBzLncgKiBNYXRy
aXhFZmZlY3RfUzFfYzBfYzAoX3RtcF8wX2luQ29sb3IsIF90bXBfMV9jb29yZHMgKyBmbG9hdDIo
cy56ICogdWRpcl9TMV9jMCkpOwogIDI1CX0KICAyNglyZXR1cm4gaGFsZjQoc3VtKTsKICAyNwl9
CiAgMjgJCiAgMjkJaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgewogIDMwCXJl
dHVybiBydW50aW1lX3NoYWRlcl9TMV9jMChfaW5wdXQpOwogIDMxCX0KICAzMgkKICAzMwl2b2lk
IG1haW4oKSB7Ly8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCiAgMzQJ
aGFsZjQgb3V0cHV0Q29sb3JfUzA7b3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7Y29uc3QgaGFs
ZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTtoYWxmNCBvdXRwdXRfUzE7b3V0cHV0X1Mx
ID0gTWF0cml4RWZmZWN0X1MxKG91dHB1dENvbG9yX1MwKTt7IC8vIFhmZXIgUHJvY2Vzc29yOiBQ
b3J0ZXIgRHVmZgogIDM1CXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdl
X1MwO319CiAgMzYJLy8gVmVydGV4IEdMU0wKICAzNwkjdmVyc2lvbiAxMDAKICAzOAkKICAzOQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKICA0MAlwcmVjaXNpb24gbWVkaXVtcCBzYW1wbGVyMkQ7
CiAgNDEJdW5pZm9ybSBoaWdocCB2ZWM0IHNrX1JUQWRqdXN0OwogIDQyCXVuaWZvcm0gaGlnaHAg
bWF0MyB1bWF0cml4X1MxOwogIDQzCWF0dHJpYnV0ZSBoaWdocCB2ZWMyIHBvc2l0aW9uOwogIDQ0
CWF0dHJpYnV0ZSBtZWRpdW1wIHZlYzQgY29sb3I7CiAgNDUJYXR0cmlidXRlIGhpZ2hwIHZlYzIg
bG9jYWxDb29yZDsKICA0Ngl2YXJ5aW5nIG1lZGl1bXAgdmVjNCB2Y29sb3JfUzA7CiAgNDcJdmFy
eWluZyBoaWdocCB2ZWMyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwogIDQ4CXZvaWQgbWFpbigp
IHsKICA0OQl2Y29sb3JfUzAgPSBjb2xvcjsKICA1MAlnbF9Qb3NpdGlvbiA9IHZlYzQocG9zaXRp
b24sIDAuMCwgMS4wKTsKICA1MQl7CiAgNTIJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAgPSAodW1h
dHJpeF9TMSAqIHZlYzMobG9jYWxDb29yZCwgMS4wKSkueHk7CiAgNTMJfQogIDU0CWdsX1Bvc2l0
aW9uID0gdmVjNChnbF9Qb3NpdGlvbi54eSAqIHNrX1JUQWRqdXN0Lnh6ICsgZ2xfUG9zaXRpb24u
d3cgKiBza19SVEFkanVzdC55dywgMC4wLCBnbF9Qb3NpdGlvbi53KTsKICA1NQl9CiAgNTYJCiAg
NTcJLy8gRnJhZ21lbnQgR0xTTAogIDU4CSN2ZXJzaW9uIDEwMAogIDU5CQogIDYwCXByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OwogIDYxCXByZWNpc2lvbiBtZWRpdW1wIHNhbXBsZXIyRDsKICA2Mglj
b25zdCBoaWdocCBpbnQga01heExvb3BMaW1pdF9TMV9jMCA9IDI7CiAgNjMJdW5pZm9ybSBoaWdo
cCB2ZWM0IHVjbGFtcF9TMV9jMF9jMF9jMDsKICA2NAl1bmlmb3JtIGhpZ2hwIG1hdDMgdW1hdHJp
eF9TMV9jMF9jMDsKICA2NQl1bmlmb3JtIG1lZGl1bXAgdmVjNCB1b2Zmc2V0c0FuZEtlcm5lbF9T
MV9jMFsxNF07CiAgNjYJdW5pZm9ybSBtZWRpdW1wIHZlYzIgdWRpcl9TMV9jMDsKICA2Nwl1bmlm
b3JtIGhpZ2hwIG1hdDMgdW1hdHJpeF9TMTsKICA2OAl1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVy
ZVNhbXBsZXJfMF9TMTsKICA2OQl2YXJ5aW5nIG1lZGl1bXAgdmVjNCB2Y29sb3JfUzA7CiAgNzAJ
dmFyeWluZyBoaWdocCB2ZWMyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwogIDcxCXZvaWQgbWFp
bigpIHsKICA3MgloaWdocCB2ZWMyIF8yNl90bXBfMV9jb29yZHMgPSB2VHJhbnNmb3JtZWRDb29y
ZHNfMl9TMDsKICA3MwltZWRpdW1wIHZlYzQgXzI3X3N1bSA9IHZlYzQoMC4wKTsKICA3NAlmb3Ig
KGhpZ2hwIGludCBfMjhfaSA9IDA7XzI4X2kgPCBrTWF4TG9vcExpbWl0X1MxX2MwOyArK18yOF9p
KSB7CiAgNzUJbWVkaXVtcCB2ZWM0IF8yOV9zID0gdW9mZnNldHNBbmRLZXJuZWxfUzFfYzBbXzI4
X2ldOwogIDc2CWhpZ2hwIHZlYzIgXzMwX2luQ29vcmQgPSAodW1hdHJpeF9TMV9jMF9jMCAqIHZl
YzMoXzI2X3RtcF8xX2Nvb3JkcyArIF8yOV9zLnggKiB1ZGlyX1MxX2MwLCAxLjApKS54eTsKICA3
NwloaWdocCB2ZWMyIF8zMV9zdWJzZXRDb29yZDsKICA3OAlfMzFfc3Vic2V0Q29vcmQueCA9IF8z
MF9pbkNvb3JkLng7CiAgNzkJXzMxX3N1YnNldENvb3JkLnkgPSBfMzBfaW5Db29yZC55OwogIDgw
CWhpZ2hwIHZlYzIgXzMyX2NsYW1wZWRDb29yZCA9IGNsYW1wKF8zMV9zdWJzZXRDb29yZCwgdWNs
YW1wX1MxX2MwX2MwX2MwLnh5LCB1Y2xhbXBfUzFfYzBfYzBfYzAuencpOwogIDgxCW1lZGl1bXAg
dmVjNCBfMzNfdGV4dHVyZUNvbG9yID0gdGV4dHVyZTJEKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBf
MzJfY2xhbXBlZENvb3JkLCAtMC40NzUpOwogIDgyCV8yN19zdW0gKz0gXzI5X3MueSAqIF8zM190
ZXh0dXJlQ29sb3I7CiAgODMJaGlnaHAgdmVjMiBfMzRfaW5Db29yZCA9ICh1bWF0cml4X1MxX2Mw
X2MwICogdmVjMyhfMjZfdG1wXzFfY29vcmRzICsgXzI5X3MueiAqIHVkaXJfUzFfYzAsIDEuMCkp
Lnh5OwogIDg0CWhpZ2hwIHZlYzIgXzM1X3N1YnNldENvb3JkOwogIDg1CV8zNV9zdWJzZXRDb29y
ZC54ID0gXzM0X2luQ29vcmQueDsKICA4NglfMzVfc3Vic2V0Q29vcmQueSA9IF8zNF9pbkNvb3Jk
Lnk7CiAgODcJaGlnaHAgdmVjMiBfMzZfY2xhbXBlZENvb3JkID0gY2xhbXAoXzM1X3N1YnNldENv
b3JkLCB1Y2xhbXBfUzFfYzBfYzBfYzAueHksIHVjbGFtcF9TMV9jMF9jMF9jMC56dyk7CiAgODgJ
bWVkaXVtcCB2ZWM0IF8zN190ZXh0dXJlQ29sb3IgPSB0ZXh0dXJlMkQodVRleHR1cmVTYW1wbGVy
XzBfUzEsIF8zNl9jbGFtcGVkQ29vcmQsIC0wLjQ3NSk7CiAgODkJXzI3X3N1bSArPSBfMjlfcy53
ICogXzM3X3RleHR1cmVDb2xvcjsKICA5MAl9CiAgOTEJbWVkaXVtcCB2ZWM0IG91dHB1dF9TMSA9
IF8yN19zdW07CiAgOTIJewogIDkzCWdsX0ZyYWdDb2xvciA9IG91dHB1dF9TMTsKICA5NAl9CiAg
OTUJfQogIDk2CQogIDk3CQpFcnJvcnM6CmVycm9yOiBFeGNlZWRlZCBtYXggbnIgaW5kaXJlY3Qg
dGV4dHVyZSBsb29rdXBzICg1LzQpCgpTaGFkZXIgY29tcGlsYXRpb24gZXJyb3IKLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiAgIDEJLy8gVmVydGV4IFNLU0wKICAgMgl1bmlmb3JtIGZsb2F0NCBz
a19SVEFkanVzdDt1bmlmb3JtIGZsb2F0M3gzIHVtYXRyaXhfUzE7aW4gZmxvYXQyIHBvc2l0aW9u
O2luIGhhbGY0IGNvbG9yO2luIGZsb2F0MiBsb2NhbENvb3JkO291dCBoYWxmNCB2Y29sb3JfUzA7
b3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDt2b2lkIG1haW4oKSB7Ly8gUHJpbWl0
aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKICAgMwl2Y29sb3Jf
UzAgPSBjb2xvcjtza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7ewogICA0CXZUcmFuc2Zvcm1l
ZENvb3Jkc18yX1MwID0gKHVtYXRyaXhfUzEgKiBsb2NhbENvb3JkLnh5MSkueHk7CiAgIDUJfQog
ICA2CX0KICAgNwkvLyBGcmFnbWVudCBTS1NMCiAgIDgJY29uc3QgaW50IGtNYXhMb29wTGltaXRf
UzFfYzAgPSA0OwogICA5CXVuaWZvcm0gZmxvYXQ0IHVjbGFtcF9TMV9jMF9jMF9jMDt1bmlmb3Jt
IGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzA7dW5pZm9ybSBoYWxmNCB1b2Zmc2V0c0FuZEtlcm5l
bF9TMV9jMFsxNF07dW5pZm9ybSBoYWxmMiB1ZGlyX1MxX2MwO3VuaWZvcm0gZmxvYXQzeDMgdW1h
dHJpeF9TMTtzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CiAgMTAJaW4gaGFsZjQgdmNv
bG9yX1MwO2luIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDtoYWxmNCBUZXh0dXJlRWZm
ZWN0X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIHsKICAxMQlmbG9h
dDIgaW5Db29yZCA9IF9jb29yZHM7ZmxvYXQyIHN1YnNldENvb3JkO3N1YnNldENvb3JkLnggPSBp
bkNvb3JkLng7c3Vic2V0Q29vcmQueSA9IGluQ29vcmQueTtmbG9hdDIgY2xhbXBlZENvb3JkO2Ns
YW1wZWRDb29yZCA9IGNsYW1wKHN1YnNldENvb3JkLCB1Y2xhbXBfUzFfYzBfYzBfYzAueHksIHVj
bGFtcF9TMV9jMF9jMF9jMC56dyk7aGFsZjQgdGV4dHVyZUNvbG9yID0gc2FtcGxlKHVUZXh0dXJl
U2FtcGxlcl8wX1MxLCBjbGFtcGVkQ29vcmQpO3JldHVybiB0ZXh0dXJlQ29sb3I7fQogIDEyCQog
IDEzCWhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29v
cmRzKSB7CiAgMTQJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoX2lucHV0LCAoKHVt
YXRyaXhfUzFfYzBfYzApICogX2Nvb3Jkcy54eTEpLnh5KTsKICAxNQl9CiAgMTYJCiAgMTcJaGFs
ZjQgcnVudGltZV9zaGFkZXJfUzFfYzAoaGFsZjQgX2lucHV0KSB7CiAgMTgJaGFsZjQgX3RtcF8w
X2luQ29sb3IgPSBfaW5wdXQ7CiAgMTkJZmxvYXQyIF90bXBfMV9jb29yZHMgPSB2VHJhbnNmb3Jt
ZWRDb29yZHNfMl9TMDsKICAyMAloYWxmNCBzdW0gPSBoYWxmNCgwLjApOwogIDIxCWZvciAoaW50
IGkgPSAwO2kgPCBrTWF4TG9vcExpbWl0X1MxX2MwOyArK2kpIHsKICAyMgloYWxmNCBzID0gdW9m
ZnNldHNBbmRLZXJuZWxfUzFfYzBbaV07CiAgMjMJc3VtICs9IHMueSAqIE1hdHJpeEVmZmVjdF9T
MV9jMF9jMChfdG1wXzBfaW5Db2xvciwgX3RtcF8xX2Nvb3JkcyArIGZsb2F0MihzLnggKiB1ZGly
X1MxX2MwKSk7CiAgMjQJc3VtICs9IHMudyAqIE1hdHJpeEVmZmVjdF9TMV9jMF9jMChfdG1wXzBf
aW5Db2xvciwgX3RtcF8xX2Nvb3JkcyArIGZsb2F0MihzLnogKiB1ZGlyX1MxX2MwKSk7CiAgMjUJ
fQogIDI2CXJldHVybiBoYWxmNChzdW0pOwogIDI3CX0KICAyOAkKICAyOQloYWxmNCBNYXRyaXhF
ZmZlY3RfUzEoaGFsZjQgX2lucHV0KSB7CiAgMzAJcmV0dXJuIHJ1bnRpbWVfc2hhZGVyX1MxX2Mw
KF9pbnB1dCk7CiAgMzEJfQogIDMyCQogIDMzCXZvaWQgbWFpbigpIHsvLyBTdGFnZSAwLCBRdWFk
UGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKICAzNAloYWxmNCBvdXRwdXRDb2xvcl9TMDtvdXRw
dXRDb2xvcl9TMCA9IHZjb2xvcl9TMDtjb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhh
bGY0KDEpO2hhbGY0IG91dHB1dF9TMTtvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0
Q29sb3JfUzApO3sgLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCiAgMzUJc2tfRnJhZ0Nv
bG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7fX0KICAzNgkvLyBWZXJ0ZXggR0xT
TAogIDM3CSN2ZXJzaW9uIDEwMAogIDM4CQogIDM5CXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owog
IDQwCXByZWNpc2lvbiBtZWRpdW1wIHNhbXBsZXIyRDsKICA0MQl1bmlmb3JtIGhpZ2hwIHZlYzQg
c2tfUlRBZGp1c3Q7CiAgNDIJdW5pZm9ybSBoaWdocCBtYXQzIHVtYXRyaXhfUzE7CiAgNDMJYXR0
cmlidXRlIGhpZ2hwIHZlYzIgcG9zaXRpb247CiAgNDQJYXR0cmlidXRlIG1lZGl1bXAgdmVjNCBj
b2xvcjsKICA0NQlhdHRyaWJ1dGUgaGlnaHAgdmVjMiBsb2NhbENvb3JkOwogIDQ2CXZhcnlpbmcg
bWVkaXVtcCB2ZWM0IHZjb2xvcl9TMDsKICA0Nwl2YXJ5aW5nIGhpZ2hwIHZlYzIgdlRyYW5zZm9y
bWVkQ29vcmRzXzJfUzA7CiAgNDgJdm9pZCBtYWluKCkgewogIDQ5CXZjb2xvcl9TMCA9IGNvbG9y
OwogIDUwCWdsX1Bvc2l0aW9uID0gdmVjNChwb3NpdGlvbiwgMC4wLCAxLjApOwogIDUxCXsKICA1
Mgl2VHJhbnNmb3JtZWRDb29yZHNfMl9TMCA9ICh1bWF0cml4X1MxICogdmVjMyhsb2NhbENvb3Jk
LCAxLjApKS54eTsKICA1Mwl9CiAgNTQJZ2xfUG9zaXRpb24gPSB2ZWM0KGdsX1Bvc2l0aW9uLnh5
ICogc2tfUlRBZGp1c3QueHogKyBnbF9Qb3NpdGlvbi53dyAqIHNrX1JUQWRqdXN0Lnl3LCAwLjAs
IGdsX1Bvc2l0aW9uLncpOwogIDU1CX0KICA1NgkKICA1NwkvLyBGcmFnbWVudCBHTFNMCiAgNTgJ
I3ZlcnNpb24gMTAwCiAgNTkJCiAgNjAJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CiAgNjEJcHJl
Y2lzaW9uIG1lZGl1bXAgc2FtcGxlcjJEOwogIDYyCWNvbnN0IGhpZ2hwIGludCBrTWF4TG9vcExp
bWl0X1MxX2MwID0gNDsKICA2Mwl1bmlmb3JtIGhpZ2hwIHZlYzQgdWNsYW1wX1MxX2MwX2MwX2Mw
OwogIDY0CXVuaWZvcm0gaGlnaHAgbWF0MyB1bWF0cml4X1MxX2MwX2MwOwogIDY1CXVuaWZvcm0g
bWVkaXVtcCB2ZWM0IHVvZmZzZXRzQW5kS2VybmVsX1MxX2MwWzE0XTsKICA2Ngl1bmlmb3JtIG1l
ZGl1bXAgdmVjMiB1ZGlyX1MxX2MwOwogIDY3CXVuaWZvcm0gaGlnaHAgbWF0MyB1bWF0cml4X1Mx
OwogIDY4CXVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwogIDY5CXZhcnlp
bmcgbWVkaXVtcCB2ZWM0IHZjb2xvcl9TMDsKICA3MAl2YXJ5aW5nIGhpZ2hwIHZlYzIgdlRyYW5z
Zm9ybWVkQ29vcmRzXzJfUzA7CiAgNzEJdm9pZCBtYWluKCkgewogIDcyCWhpZ2hwIHZlYzIgXzI2
X3RtcF8xX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwogIDczCW1lZGl1bXAgdmVj
NCBfMjdfc3VtID0gdmVjNCgwLjApOwogIDc0CWZvciAoaGlnaHAgaW50IF8yOF9pID0gMDtfMjhf
aSA8IGtNYXhMb29wTGltaXRfUzFfYzA7ICsrXzI4X2kpIHsKICA3NQltZWRpdW1wIHZlYzQgXzI5
X3MgPSB1b2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtfMjhfaV07CiAgNzYJaGlnaHAgdmVjMiBfMzBf
aW5Db29yZCA9ICh1bWF0cml4X1MxX2MwX2MwICogdmVjMyhfMjZfdG1wXzFfY29vcmRzICsgXzI5
X3MueCAqIHVkaXJfUzFfYzAsIDEuMCkpLnh5OwogIDc3CWhpZ2hwIHZlYzIgXzMxX3N1YnNldENv
b3JkOwogIDc4CV8zMV9zdWJzZXRDb29yZC54ID0gXzMwX2luQ29vcmQueDsKICA3OQlfMzFfc3Vi
c2V0Q29vcmQueSA9IF8zMF9pbkNvb3JkLnk7CiAgODAJaGlnaHAgdmVjMiBfMzJfY2xhbXBlZENv
b3JkID0gY2xhbXAoXzMxX3N1YnNldENvb3JkLCB1Y2xhbXBfUzFfYzBfYzBfYzAueHksIHVjbGFt
cF9TMV9jMF9jMF9jMC56dyk7CiAgODEJbWVkaXVtcCB2ZWM0IF8zM190ZXh0dXJlQ29sb3IgPSB0
ZXh0dXJlMkQodVRleHR1cmVTYW1wbGVyXzBfUzEsIF8zMl9jbGFtcGVkQ29vcmQsIC0wLjQ3NSk7
CiAgODIJXzI3X3N1bSArPSBfMjlfcy55ICogXzMzX3RleHR1cmVDb2xvcjsKICA4MwloaWdocCB2
ZWMyIF8zNF9pbkNvb3JkID0gKHVtYXRyaXhfUzFfYzBfYzAgKiB2ZWMzKF8yNl90bXBfMV9jb29y
ZHMgKyBfMjlfcy56ICogdWRpcl9TMV9jMCwgMS4wKSkueHk7CiAgODQJaGlnaHAgdmVjMiBfMzVf
c3Vic2V0Q29vcmQ7CiAgODUJXzM1X3N1YnNldENvb3JkLnggPSBfMzRfaW5Db29yZC54OwogIDg2
CV8zNV9zdWJzZXRDb29yZC55ID0gXzM0X2luQ29vcmQueTsKICA4NwloaWdocCB2ZWMyIF8zNl9j
bGFtcGVkQ29vcmQgPSBjbGFtcChfMzVfc3Vic2V0Q29vcmQsIHVjbGFtcF9TMV9jMF9jMF9jMC54
eSwgdWNsYW1wX1MxX2MwX2MwX2MwLnp3KTsKICA4OAltZWRpdW1wIHZlYzQgXzM3X3RleHR1cmVD
b2xvciA9IHRleHR1cmUyRCh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgXzM2X2NsYW1wZWRDb29yZCwg
LTAuNDc1KTsKICA4OQlfMjdfc3VtICs9IF8yOV9zLncgKiBfMzdfdGV4dHVyZUNvbG9yOwogIDkw
CX0KICA5MQltZWRpdW1wIHZlYzQgb3V0cHV0X1MxID0gXzI3X3N1bTsKICA5Mgl7CiAgOTMJZ2xf
RnJhZ0NvbG9yID0gb3V0cHV0X1MxOwogIDk0CX0KICA5NQl9CiAgOTYJCiAgOTcJCkVycm9yczoK
ZXJyb3I6IEV4Y2VlZGVkIG1heCBuciBpbmRpcmVjdCB0ZXh0dXJlIGxvb2t1cHMgKDkvNCkKClNo
YWRlciBjb21waWxhdGlvbiBlcnJvcgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgMQkvLyBW
ZXJ0ZXggU0tTTAogICAyCXVuaWZvcm0gZmxvYXQ0IHNrX1JUQWRqdXN0O3VuaWZvcm0gZmxvYXQz
eDMgdW1hdHJpeF9TMTtpbiBmbG9hdDIgcG9zaXRpb247aW4gaGFsZjQgY29sb3I7aW4gZmxvYXQy
IGxvY2FsQ29vcmQ7b3V0IGhhbGY0IHZjb2xvcl9TMDtvdXQgZmxvYXQyIHZUcmFuc2Zvcm1lZENv
b3Jkc18yX1MwO3ZvaWQgbWFpbigpIHsvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdl
QUFHZW9tZXRyeVByb2Nlc3NvcgogICAzCXZjb2xvcl9TMCA9IGNvbG9yO3NrX1Bvc2l0aW9uID0g
cG9zaXRpb24ueHkwMTt7CiAgIDQJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAgPSAodW1hdHJpeF9T
MSAqIGxvY2FsQ29vcmQueHkxKS54eTsKICAgNQl9CiAgIDYJfQogICA3CS8vIEZyYWdtZW50IFNL
U0wKICAgOAljb25zdCBpbnQga01heExvb3BMaW1pdF9TMV9jMCA9IDQ7CiAgIDkJdW5pZm9ybSBm
bG9hdDQgdWNsYW1wX1MxX2MwX2MwX2MwO3VuaWZvcm0gZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9j
MDt1bmlmb3JtIGhhbGY0IHVvZmZzZXRzQW5kS2VybmVsX1MxX2MwWzE0XTt1bmlmb3JtIGhhbGYy
IHVkaXJfUzFfYzA7dW5pZm9ybSBmbG9hdDN4MyB1bWF0cml4X1MxO3NhbXBsZXIyRCB1VGV4dHVy
ZVNhbXBsZXJfMF9TMTsKICAxMAlpbiBoYWxmNCB2Y29sb3JfUzA7aW4gZmxvYXQyIHZUcmFuc2Zv
cm1lZENvb3Jkc18yX1MwO2hhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoaGFsZjQgX2lu
cHV0LCBmbG9hdDIgX2Nvb3JkcykgewogIDExCWZsb2F0MiBpbkNvb3JkID0gX2Nvb3JkcztmbG9h
dDIgc3Vic2V0Q29vcmQ7c3Vic2V0Q29vcmQueCA9IGluQ29vcmQueDtzdWJzZXRDb29yZC55ID0g
aW5Db29yZC55O2Zsb2F0MiBjbGFtcGVkQ29vcmQ7Y2xhbXBlZENvb3JkID0gY2xhbXAoc3Vic2V0
Q29vcmQsIHVjbGFtcF9TMV9jMF9jMF9jMC54eSwgdWNsYW1wX1MxX2MwX2MwX2MwLnp3KTtoYWxm
NCB0ZXh0dXJlQ29sb3IgPSBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIGNsYW1wZWRDb29y
ZCk7cmV0dXJuIHRleHR1cmVDb2xvcjt9CiAgMTIJCiAgMTMJaGFsZjQgTWF0cml4RWZmZWN0X1Mx
X2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIHsKICAxNAlyZXR1cm4gVGV4dHVy
ZUVmZmVjdF9TMV9jMF9jMF9jMChfaW5wdXQsICgodW1hdHJpeF9TMV9jMF9jMCkgKiBfY29vcmRz
Lnh5MSkueHkpOwogIDE1CX0KICAxNgkKICAxNwloYWxmNCBydW50aW1lX3NoYWRlcl9TMV9jMCho
YWxmNCBfaW5wdXQpIHsKICAxOAloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKICAxOQlm
bG9hdDIgX3RtcF8xX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwogIDIwCWhhbGY0
IHN1bSA9IGhhbGY0KDAuMCk7CiAgMjEJZm9yIChpbnQgaSA9IDA7aSA8IGtNYXhMb29wTGltaXRf
UzFfYzA7ICsraSkgewogIDIyCWhhbGY0IHMgPSB1b2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtpXTsK
ICAyMwlzdW0gKz0gcy55ICogTWF0cml4RWZmZWN0X1MxX2MwX2MwKF90bXBfMF9pbkNvbG9yLCBf
dG1wXzFfY29vcmRzICsgZmxvYXQyKHMueCAqIHVkaXJfUzFfYzApKTsKICAyNAlzdW0gKz0gcy53
ICogTWF0cml4RWZmZWN0X1MxX2MwX2MwKF90bXBfMF9pbkNvbG9yLCBfdG1wXzFfY29vcmRzICsg
ZmxvYXQyKHMueiAqIHVkaXJfUzFfYzApKTsKICAyNQl9CiAgMjYJcmV0dXJuIGhhbGY0KHN1bSk7
CiAgMjcJfQogIDI4CQogIDI5CWhhbGY0IE1hdHJpeEVmZmVjdF9TMShoYWxmNCBfaW5wdXQpIHsK
ICAzMAlyZXR1cm4gcnVudGltZV9zaGFkZXJfUzFfYzAoX2lucHV0KTsKICAzMQl9CiAgMzIJCiAg
MzMJdm9pZCBtYWluKCkgey8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3Nv
cgogIDM0CWhhbGY0IG91dHB1dENvbG9yX1MwO291dHB1dENvbG9yX1MwID0gdmNvbG9yX1MwO2Nv
bnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7aGFsZjQgb3V0cHV0X1MxO291
dHB1dF9TMSA9IE1hdHJpeEVmZmVjdF9TMShvdXRwdXRDb2xvcl9TMCk7eyAvLyBYZmVyIFByb2Nl
c3NvcjogUG9ydGVyIER1ZmYKICAzNQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRD
b3ZlcmFnZV9TMDt9fQogIDM2CS8vIFZlcnRleCBHTFNMCiAgMzcJI3ZlcnNpb24gMTAwCiAgMzgJ
CiAgMzkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CiAgNDAJcHJlY2lzaW9uIG1lZGl1bXAgc2Ft
cGxlcjJEOwogIDQxCXVuaWZvcm0gaGlnaHAgdmVjNCBza19SVEFkanVzdDsKICA0Mgl1bmlmb3Jt
IGhpZ2hwIG1hdDMgdW1hdHJpeF9TMTsKICA0MwlhdHRyaWJ1dGUgaGlnaHAgdmVjMiBwb3NpdGlv
bjsKICA0NAlhdHRyaWJ1dGUgbWVkaXVtcCB2ZWM0IGNvbG9yOwogIDQ1CWF0dHJpYnV0ZSBoaWdo
cCB2ZWMyIGxvY2FsQ29vcmQ7CiAgNDYJdmFyeWluZyBtZWRpdW1wIHZlYzQgdmNvbG9yX1MwOwog
IDQ3CXZhcnlpbmcgaGlnaHAgdmVjMiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKICA0OAl2b2lk
IG1haW4oKSB7CiAgNDkJdmNvbG9yX1MwID0gY29sb3I7CiAgNTAJZ2xfUG9zaXRpb24gPSB2ZWM0
KHBvc2l0aW9uLCAwLjAsIDEuMCk7CiAgNTEJewogIDUyCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1Mw
ID0gKHVtYXRyaXhfUzEgKiB2ZWMzKGxvY2FsQ29vcmQsIDEuMCkpLnh5OwogIDUzCX0KICA1NAln
bF9Qb3NpdGlvbiA9IHZlYzQoZ2xfUG9zaXRpb24ueHkgKiBza19SVEFkanVzdC54eiArIGdsX1Bv
c2l0aW9uLnd3ICogc2tfUlRBZGp1c3QueXcsIDAuMCwgZ2xfUG9zaXRpb24udyk7CiAgNTUJfQog
IDU2CQogIDU3CS8vIEZyYWdtZW50IEdMU0wKICA1OAkjdmVyc2lvbiAxMDAKICA1OQkKICA2MAlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKICA2MQlwcmVjaXNpb24gbWVkaXVtcCBzYW1wbGVyMkQ7
CiAgNjIJY29uc3QgaGlnaHAgaW50IGtNYXhMb29wTGltaXRfUzFfYzAgPSA0OwogIDYzCXVuaWZv
cm0gaGlnaHAgdmVjNCB1Y2xhbXBfUzFfYzBfYzBfYzA7CiAgNjQJdW5pZm9ybSBoaWdocCBtYXQz
IHVtYXRyaXhfUzFfYzBfYzA7CiAgNjUJdW5pZm9ybSBtZWRpdW1wIHZlYzQgdW9mZnNldHNBbmRL
ZXJuZWxfUzFfYzBbMTRdOwogIDY2CXVuaWZvcm0gbWVkaXVtcCB2ZWMyIHVkaXJfUzFfYzA7CiAg
NjcJdW5pZm9ybSBoaWdocCBtYXQzIHVtYXRyaXhfUzE7CiAgNjgJdW5pZm9ybSBzYW1wbGVyMkQg
dVRleHR1cmVTYW1wbGVyXzBfUzE7CiAgNjkJdmFyeWluZyBtZWRpdW1wIHZlYzQgdmNvbG9yX1Mw
OwogIDcwCXZhcnlpbmcgaGlnaHAgdmVjMiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKICA3MQl2
b2lkIG1haW4oKSB7CiAgNzIJaGlnaHAgdmVjMiBfMjZfdG1wXzFfY29vcmRzID0gdlRyYW5zZm9y
bWVkQ29vcmRzXzJfUzA7CiAgNzMJbWVkaXVtcCB2ZWM0IF8yN19zdW0gPSB2ZWM0KDAuMCk7CiAg
NzQJZm9yIChoaWdocCBpbnQgXzI4X2kgPSAwO18yOF9pIDwga01heExvb3BMaW1pdF9TMV9jMDsg
KytfMjhfaSkgewogIDc1CW1lZGl1bXAgdmVjNCBfMjlfcyA9IHVvZmZzZXRzQW5kS2VybmVsX1Mx
X2MwW18yOF9pXTsKICA3NgloaWdocCB2ZWMyIF8zMF9pbkNvb3JkID0gKHVtYXRyaXhfUzFfYzBf
YzAgKiB2ZWMzKF8yNl90bXBfMV9jb29yZHMgKyBfMjlfcy54ICogdWRpcl9TMV9jMCwgMS4wKSku
eHk7CiAgNzcJaGlnaHAgdmVjMiBfMzFfc3Vic2V0Q29vcmQ7CiAgNzgJXzMxX3N1YnNldENvb3Jk
LnggPSBfMzBfaW5Db29yZC54OwogIDc5CV8zMV9zdWJzZXRDb29yZC55ID0gXzMwX2luQ29vcmQu
eTsKICA4MAloaWdocCB2ZWMyIF8zMl9jbGFtcGVkQ29vcmQgPSBjbGFtcChfMzFfc3Vic2V0Q29v
cmQsIHVjbGFtcF9TMV9jMF9jMF9jMC54eSwgdWNsYW1wX1MxX2MwX2MwX2MwLnp3KTsKICA4MQlt
ZWRpdW1wIHZlYzQgXzMzX3RleHR1cmVDb2xvciA9IHRleHR1cmUyRCh1VGV4dHVyZVNhbXBsZXJf
MF9TMSwgXzMyX2NsYW1wZWRDb29yZCwgLTAuNDc1KTsKICA4MglfMjdfc3VtICs9IF8yOV9zLnkg
KiBfMzNfdGV4dHVyZUNvbG9yOwogIDgzCWhpZ2hwIHZlYzIgXzM0X2luQ29vcmQgPSAodW1hdHJp
eF9TMV9jMF9jMCAqIHZlYzMoXzI2X3RtcF8xX2Nvb3JkcyArIF8yOV9zLnogKiB1ZGlyX1MxX2Mw
LCAxLjApKS54eTsKICA4NAloaWdocCB2ZWMyIF8zNV9zdWJzZXRDb29yZDsKICA4NQlfMzVfc3Vi
c2V0Q29vcmQueCA9IF8zNF9pbkNvb3JkLng7CiAgODYJXzM1X3N1YnNldENvb3JkLnkgPSBfMzRf
aW5Db29yZC55OwogIDg3CWhpZ2hwIHZlYzIgXzM2X2NsYW1wZWRDb29yZCA9IGNsYW1wKF8zNV9z
dWJzZXRDb29yZCwgdWNsYW1wX1MxX2MwX2MwX2MwLnh5LCB1Y2xhbXBfUzFfYzBfYzBfYzAuencp
OwogIDg4CW1lZGl1bXAgdmVjNCBfMzdfdGV4dHVyZUNvbG9yID0gdGV4dHVyZTJEKHVUZXh0dXJl
U2FtcGxlcl8wX1MxLCBfMzZfY2xhbXBlZENvb3JkLCAtMC40NzUpOwogIDg5CV8yN19zdW0gKz0g
XzI5X3MudyAqIF8zN190ZXh0dXJlQ29sb3I7CiAgOTAJfQogIDkxCW1lZGl1bXAgdmVjNCBvdXRw
dXRfUzEgPSBfMjdfc3VtOwogIDkyCXsKICA5MwlnbF9GcmFnQ29sb3IgPSBvdXRwdXRfUzE7CiAg
OTQJfQogIDk1CX0KICA5NgkKICA5NwkKRXJyb3JzOgplcnJvcjogRXhjZWVkZWQgbWF4IG5yIGlu
ZGlyZWN0IHRleHR1cmUgbG9va3VwcyAoOS80KQoKRmFpbGVkIHRvIGNyZWF0ZSBETUEtQlVGIHRl
eHR1cmUgb2Ygc2l6ZSAxMDI0eDY5MzogVW5zdXBwb3J0ZWQgZG1hYnVmIGZvcm1hdDogWFIyNDow
eGZmZmZmZmZmZmZmZmZmClNoYWRlciBjb21waWxhdGlvbiBlcnJvcgotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KICAgMQkvLyBWZXJ0ZXggU0tTTAogICAyCXVuaWZvcm0gZmxvYXQ0IHNrX1JUQWRq
dXN0O3VuaWZvcm0gZmxvYXQzeDMgdW1hdHJpeF9TMTtpbiBmbG9hdDIgcG9zaXRpb247aW4gaGFs
ZjQgY29sb3I7aW4gZmxvYXQyIGxvY2FsQ29vcmQ7b3V0IGhhbGY0IHZjb2xvcl9TMDtvdXQgZmxv
YXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwO3ZvaWQgbWFpbigpIHsvLyBQcmltaXRpdmUgUHJv
Y2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgogICAzCXZjb2xvcl9TMCA9IGNv
bG9yO3NrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTt7CiAgIDQJdlRyYW5zZm9ybWVkQ29vcmRz
XzJfUzAgPSAodW1hdHJpeF9TMSAqIGxvY2FsQ29vcmQueHkxKS54eTsKICAgNQl9CiAgIDYJfQog
ICA3CS8vIEZyYWdtZW50IFNLU0wKICAgOAljb25zdCBpbnQga01heExvb3BMaW1pdF9TMV9jMCA9
IDI7CiAgIDkJdW5pZm9ybSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwX2MwO3VuaWZvcm0gZmxvYXQz
eDMgdW1hdHJpeF9TMV9jMF9jMDt1bmlmb3JtIGhhbGY0IHVvZmZzZXRzQW5kS2VybmVsX1MxX2Mw
WzE0XTt1bmlmb3JtIGhhbGYyIHVkaXJfUzFfYzA7dW5pZm9ybSBmbG9hdDN4MyB1bWF0cml4X1Mx
O3NhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKICAxMAlpbiBoYWxmNCB2Y29sb3JfUzA7
aW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwO2hhbGY0IFRleHR1cmVFZmZlY3RfUzFf
YzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgewogIDExCWZsb2F0MiBpbkNv
b3JkID0gX2Nvb3JkcztmbG9hdDIgc3Vic2V0Q29vcmQ7c3Vic2V0Q29vcmQueCA9IGluQ29vcmQu
eDtzdWJzZXRDb29yZC55ID0gaW5Db29yZC55O2Zsb2F0MiBjbGFtcGVkQ29vcmQ7Y2xhbXBlZENv
b3JkID0gY2xhbXAoc3Vic2V0Q29vcmQsIHVjbGFtcF9TMV9jMF9jMF9jMC54eSwgdWNsYW1wX1Mx
X2MwX2MwX2MwLnp3KTtoYWxmNCB0ZXh0dXJlQ29sb3IgPSBzYW1wbGUodVRleHR1cmVTYW1wbGVy
XzBfUzEsIGNsYW1wZWRDb29yZCk7cmV0dXJuIHRleHR1cmVDb2xvcjt9CiAgMTIJCiAgMTMJaGFs
ZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIHsK
ICAxNAlyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChfaW5wdXQsICgodW1hdHJpeF9T
MV9jMF9jMCkgKiBfY29vcmRzLnh5MSkueHkpOwogIDE1CX0KICAxNgkKICAxNwloYWxmNCBydW50
aW1lX3NoYWRlcl9TMV9jMChoYWxmNCBfaW5wdXQpIHsKICAxOAloYWxmNCBfdG1wXzBfaW5Db2xv
ciA9IF9pbnB1dDsKICAxOQlmbG9hdDIgX3RtcF8xX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jk
c18yX1MwOwogIDIwCWhhbGY0IHN1bSA9IGhhbGY0KDAuMCk7CiAgMjEJZm9yIChpbnQgaSA9IDA7
aSA8IGtNYXhMb29wTGltaXRfUzFfYzA7ICsraSkgewogIDIyCWhhbGY0IHMgPSB1b2Zmc2V0c0Fu
ZEtlcm5lbF9TMV9jMFtpXTsKICAyMwlzdW0gKz0gcy55ICogTWF0cml4RWZmZWN0X1MxX2MwX2Mw
KF90bXBfMF9pbkNvbG9yLCBfdG1wXzFfY29vcmRzICsgZmxvYXQyKHMueCAqIHVkaXJfUzFfYzAp
KTsKICAyNAlzdW0gKz0gcy53ICogTWF0cml4RWZmZWN0X1MxX2MwX2MwKF90bXBfMF9pbkNvbG9y
LCBfdG1wXzFfY29vcmRzICsgZmxvYXQyKHMueiAqIHVkaXJfUzFfYzApKTsKICAyNQl9CiAgMjYJ
cmV0dXJuIGhhbGY0KHN1bSk7CiAgMjcJfQogIDI4CQogIDI5CWhhbGY0IE1hdHJpeEVmZmVjdF9T
MShoYWxmNCBfaW5wdXQpIHsKICAzMAlyZXR1cm4gcnVudGltZV9zaGFkZXJfUzFfYzAoX2lucHV0
KTsKICAzMQl9CiAgMzIJCiAgMzMJdm9pZCBtYWluKCkgey8vIFN0YWdlIDAsIFF1YWRQZXJFZGdl
QUFHZW9tZXRyeVByb2Nlc3NvcgogIDM0CWhhbGY0IG91dHB1dENvbG9yX1MwO291dHB1dENvbG9y
X1MwID0gdmNvbG9yX1MwO2NvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7
aGFsZjQgb3V0cHV0X1MxO291dHB1dF9TMSA9IE1hdHJpeEVmZmVjdF9TMShvdXRwdXRDb2xvcl9T
MCk7eyAvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKICAzNQlza19GcmFnQ29sb3IgPSBv
dXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDt9fQogIDM2CS8vIFZlcnRleCBHTFNMCiAgMzcJ
I3ZlcnNpb24gMTAwCiAgMzgJCiAgMzkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CiAgNDAJcHJl
Y2lzaW9uIG1lZGl1bXAgc2FtcGxlcjJEOwogIDQxCXVuaWZvcm0gaGlnaHAgdmVjNCBza19SVEFk
anVzdDsKICA0Mgl1bmlmb3JtIGhpZ2hwIG1hdDMgdW1hdHJpeF9TMTsKICA0MwlhdHRyaWJ1dGUg
aGlnaHAgdmVjMiBwb3NpdGlvbjsKICA0NAlhdHRyaWJ1dGUgbWVkaXVtcCB2ZWM0IGNvbG9yOwog
IDQ1CWF0dHJpYnV0ZSBoaWdocCB2ZWMyIGxvY2FsQ29vcmQ7CiAgNDYJdmFyeWluZyBtZWRpdW1w
IHZlYzQgdmNvbG9yX1MwOwogIDQ3CXZhcnlpbmcgaGlnaHAgdmVjMiB2VHJhbnNmb3JtZWRDb29y
ZHNfMl9TMDsKICA0OAl2b2lkIG1haW4oKSB7CiAgNDkJdmNvbG9yX1MwID0gY29sb3I7CiAgNTAJ
Z2xfUG9zaXRpb24gPSB2ZWM0KHBvc2l0aW9uLCAwLjAsIDEuMCk7CiAgNTEJewogIDUyCXZUcmFu
c2Zvcm1lZENvb3Jkc18yX1MwID0gKHVtYXRyaXhfUzEgKiB2ZWMzKGxvY2FsQ29vcmQsIDEuMCkp
Lnh5OwogIDUzCX0KICA1NAlnbF9Qb3NpdGlvbiA9IHZlYzQoZ2xfUG9zaXRpb24ueHkgKiBza19S
VEFkanVzdC54eiArIGdsX1Bvc2l0aW9uLnd3ICogc2tfUlRBZGp1c3QueXcsIDAuMCwgZ2xfUG9z
aXRpb24udyk7CiAgNTUJfQogIDU2CQogIDU3CS8vIEZyYWdtZW50IEdMU0wKICA1OAkjdmVyc2lv
biAxMDAKICA1OQkKICA2MAlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKICA2MQlwcmVjaXNpb24g
bWVkaXVtcCBzYW1wbGVyMkQ7CiAgNjIJY29uc3QgaGlnaHAgaW50IGtNYXhMb29wTGltaXRfUzFf
YzAgPSAyOwogIDYzCXVuaWZvcm0gaGlnaHAgdmVjNCB1Y2xhbXBfUzFfYzBfYzBfYzA7CiAgNjQJ
dW5pZm9ybSBoaWdocCBtYXQzIHVtYXRyaXhfUzFfYzBfYzA7CiAgNjUJdW5pZm9ybSBtZWRpdW1w
IHZlYzQgdW9mZnNldHNBbmRLZXJuZWxfUzFfYzBbMTRdOwogIDY2CXVuaWZvcm0gbWVkaXVtcCB2
ZWMyIHVkaXJfUzFfYzA7CiAgNjcJdW5pZm9ybSBoaWdocCBtYXQzIHVtYXRyaXhfUzE7CiAgNjgJ
dW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CiAgNjkJdmFyeWluZyBtZWRp
dW1wIHZlYzQgdmNvbG9yX1MwOwogIDcwCXZhcnlpbmcgaGlnaHAgdmVjMiB2VHJhbnNmb3JtZWRD
b29yZHNfMl9TMDsKICA3MQl2b2lkIG1haW4oKSB7CiAgNzIJaGlnaHAgdmVjMiBfMjZfdG1wXzFf
Y29vcmRzID0gdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CiAgNzMJbWVkaXVtcCB2ZWM0IF8yN19z
dW0gPSB2ZWM0KDAuMCk7CiAgNzQJZm9yIChoaWdocCBpbnQgXzI4X2kgPSAwO18yOF9pIDwga01h
eExvb3BMaW1pdF9TMV9jMDsgKytfMjhfaSkgewogIDc1CW1lZGl1bXAgdmVjNCBfMjlfcyA9IHVv
ZmZzZXRzQW5kS2VybmVsX1MxX2MwW18yOF9pXTsKICA3NgloaWdocCB2ZWMyIF8zMF9pbkNvb3Jk
ID0gKHVtYXRyaXhfUzFfYzBfYzAgKiB2ZWMzKF8yNl90bXBfMV9jb29yZHMgKyBfMjlfcy54ICog
dWRpcl9TMV9jMCwgMS4wKSkueHk7CiAgNzcJaGlnaHAgdmVjMiBfMzFfc3Vic2V0Q29vcmQ7CiAg
NzgJXzMxX3N1YnNldENvb3JkLnggPSBfMzBfaW5Db29yZC54OwogIDc5CV8zMV9zdWJzZXRDb29y
ZC55ID0gXzMwX2luQ29vcmQueTsKICA4MAloaWdocCB2ZWMyIF8zMl9jbGFtcGVkQ29vcmQgPSBj
bGFtcChfMzFfc3Vic2V0Q29vcmQsIHVjbGFtcF9TMV9jMF9jMF9jMC54eSwgdWNsYW1wX1MxX2Mw
X2MwX2MwLnp3KTsKICA4MQltZWRpdW1wIHZlYzQgXzMzX3RleHR1cmVDb2xvciA9IHRleHR1cmUy
RCh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgXzMyX2NsYW1wZWRDb29yZCwgLTAuNDc1KTsKICA4Mglf
Mjdfc3VtICs9IF8yOV9zLnkgKiBfMzNfdGV4dHVyZUNvbG9yOwogIDgzCWhpZ2hwIHZlYzIgXzM0
X2luQ29vcmQgPSAodW1hdHJpeF9TMV9jMF9jMCAqIHZlYzMoXzI2X3RtcF8xX2Nvb3JkcyArIF8y
OV9zLnogKiB1ZGlyX1MxX2MwLCAxLjApKS54eTsKICA4NAloaWdocCB2ZWMyIF8zNV9zdWJzZXRD
b29yZDsKICA4NQlfMzVfc3Vic2V0Q29vcmQueCA9IF8zNF9pbkNvb3JkLng7CiAgODYJXzM1X3N1
YnNldENvb3JkLnkgPSBfMzRfaW5Db29yZC55OwogIDg3CWhpZ2hwIHZlYzIgXzM2X2NsYW1wZWRD
b29yZCA9IGNsYW1wKF8zNV9zdWJzZXRDb29yZCwgdWNsYW1wX1MxX2MwX2MwX2MwLnh5LCB1Y2xh
bXBfUzFfYzBfYzBfYzAuencpOwogIDg4CW1lZGl1bXAgdmVjNCBfMzdfdGV4dHVyZUNvbG9yID0g
dGV4dHVyZTJEKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfMzZfY2xhbXBlZENvb3JkLCAtMC40NzUp
OwogIDg5CV8yN19zdW0gKz0gXzI5X3MudyAqIF8zN190ZXh0dXJlQ29sb3I7CiAgOTAJfQogIDkx
CW1lZGl1bXAgdmVjNCBvdXRwdXRfUzEgPSBfMjdfc3VtOwogIDkyCXsKICA5MwlnbF9GcmFnQ29s
b3IgPSBvdXRwdXRfUzE7CiAgOTQJfQogIDk1CX0KICA5NgkKICA5NwkKRXJyb3JzOgplcnJvcjog
RXhjZWVkZWQgbWF4IG5yIGluZGlyZWN0IHRleHR1cmUgbG9va3VwcyAoNS80KQoKU2hhZGVyIGNv
bXBpbGF0aW9uIGVycm9yCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAxCS8vIFZlcnRleCBT
S1NMCiAgIDIJdW5pZm9ybSBmbG9hdDQgc2tfUlRBZGp1c3Q7dW5pZm9ybSBmbG9hdDN4MyB1bWF0
cml4X1MxO2luIGZsb2F0MiBwb3NpdGlvbjtpbiBoYWxmNCBjb2xvcjtpbiBmbG9hdDIgbG9jYWxD
b29yZDtvdXQgaGFsZjQgdmNvbG9yX1MwO291dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJf
UzA7dm9pZCBtYWluKCkgey8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21l
dHJ5UHJvY2Vzc29yCiAgIDMJdmNvbG9yX1MwID0gY29sb3I7c2tfUG9zaXRpb24gPSBwb3NpdGlv
bi54eTAxO3sKICAgNAl2VHJhbnNmb3JtZWRDb29yZHNfMl9TMCA9ICh1bWF0cml4X1MxICogbG9j
YWxDb29yZC54eTEpLnh5OwogICA1CX0KICAgNgl9CiAgIDcJLy8gRnJhZ21lbnQgU0tTTAogICA4
CWNvbnN0IGludCBrTWF4TG9vcExpbWl0X1MxX2MwID0gMjsKICAgOQl1bmlmb3JtIGZsb2F0NCB1
Y2xhbXBfUzFfYzBfYzBfYzA7dW5pZm9ybSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwO3VuaWZv
cm0gaGFsZjQgdW9mZnNldHNBbmRLZXJuZWxfUzFfYzBbMTRdO3VuaWZvcm0gaGFsZjIgdWRpcl9T
MV9jMDt1bmlmb3JtIGZsb2F0M3gzIHVtYXRyaXhfUzE7c2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxl
cl8wX1MxOwogIDEwCWluIGhhbGY0IHZjb2xvcl9TMDtpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29v
cmRzXzJfUzA7aGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQsIGZs
b2F0MiBfY29vcmRzKSB7CiAgMTEJZmxvYXQyIGluQ29vcmQgPSBfY29vcmRzO2Zsb2F0MiBzdWJz
ZXRDb29yZDtzdWJzZXRDb29yZC54ID0gaW5Db29yZC54O3N1YnNldENvb3JkLnkgPSBpbkNvb3Jk
Lnk7ZmxvYXQyIGNsYW1wZWRDb29yZDtjbGFtcGVkQ29vcmQgPSBjbGFtcChzdWJzZXRDb29yZCwg
dWNsYW1wX1MxX2MwX2MwX2MwLnh5LCB1Y2xhbXBfUzFfYzBfYzBfYzAuencpO2hhbGY0IHRleHR1
cmVDb2xvciA9IHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgY2xhbXBlZENvb3JkKTtyZXR1
cm4gdGV4dHVyZUNvbG9yO30KICAxMgkKICAxMwloYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzAo
aGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgewogIDE0CXJldHVybiBUZXh0dXJlRWZmZWN0
X1MxX2MwX2MwX2MwKF9pbnB1dCwgKCh1bWF0cml4X1MxX2MwX2MwKSAqIF9jb29yZHMueHkxKS54
eSk7CiAgMTUJfQogIDE2CQogIDE3CWhhbGY0IHJ1bnRpbWVfc2hhZGVyX1MxX2MwKGhhbGY0IF9p
bnB1dCkgewogIDE4CWhhbGY0IF90bXBfMF9pbkNvbG9yID0gX2lucHV0OwogIDE5CWZsb2F0MiBf
dG1wXzFfY29vcmRzID0gdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CiAgMjAJaGFsZjQgc3VtID0g
aGFsZjQoMC4wKTsKICAyMQlmb3IgKGludCBpID0gMDtpIDwga01heExvb3BMaW1pdF9TMV9jMDsg
KytpKSB7CiAgMjIJaGFsZjQgcyA9IHVvZmZzZXRzQW5kS2VybmVsX1MxX2MwW2ldOwogIDIzCXN1
bSArPSBzLnkgKiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX3RtcF8wX2luQ29sb3IsIF90bXBfMV9j
b29yZHMgKyBmbG9hdDIocy54ICogdWRpcl9TMV9jMCkpOwogIDI0CXN1bSArPSBzLncgKiBNYXRy
aXhFZmZlY3RfUzFfYzBfYzAoX3RtcF8wX2luQ29sb3IsIF90bXBfMV9jb29yZHMgKyBmbG9hdDIo
cy56ICogdWRpcl9TMV9jMCkpOwogIDI1CX0KICAyNglyZXR1cm4gaGFsZjQoc3VtKTsKICAyNwl9
CiAgMjgJCiAgMjkJaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgewogIDMwCXJl
dHVybiBydW50aW1lX3NoYWRlcl9TMV9jMChfaW5wdXQpOwogIDMxCX0KICAzMgkKICAzMwl2b2lk
IG1haW4oKSB7Ly8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCiAgMzQJ
aGFsZjQgb3V0cHV0Q29sb3JfUzA7b3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7Y29uc3QgaGFs
ZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTtoYWxmNCBvdXRwdXRfUzE7b3V0cHV0X1Mx
ID0gTWF0cml4RWZmZWN0X1MxKG91dHB1dENvbG9yX1MwKTt7IC8vIFhmZXIgUHJvY2Vzc29yOiBQ
b3J0ZXIgRHVmZgogIDM1CXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdl
X1MwO319CiAgMzYJLy8gVmVydGV4IEdMU0wKICAzNwkjdmVyc2lvbiAxMDAKICAzOAkKICAzOQlw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKICA0MAlwcmVjaXNpb24gbWVkaXVtcCBzYW1wbGVyMkQ7
CiAgNDEJdW5pZm9ybSBoaWdocCB2ZWM0IHNrX1JUQWRqdXN0OwogIDQyCXVuaWZvcm0gaGlnaHAg
bWF0MyB1bWF0cml4X1MxOwogIDQzCWF0dHJpYnV0ZSBoaWdocCB2ZWMyIHBvc2l0aW9uOwogIDQ0
CWF0dHJpYnV0ZSBtZWRpdW1wIHZlYzQgY29sb3I7CiAgNDUJYXR0cmlidXRlIGhpZ2hwIHZlYzIg
bG9jYWxDb29yZDsKICA0Ngl2YXJ5aW5nIG1lZGl1bXAgdmVjNCB2Y29sb3JfUzA7CiAgNDcJdmFy
eWluZyBoaWdocCB2ZWMyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwogIDQ4CXZvaWQgbWFpbigp
IHsKICA0OQl2Y29sb3JfUzAgPSBjb2xvcjsKICA1MAlnbF9Qb3NpdGlvbiA9IHZlYzQocG9zaXRp
b24sIDAuMCwgMS4wKTsKICA1MQl7CiAgNTIJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAgPSAodW1h
dHJpeF9TMSAqIHZlYzMobG9jYWxDb29yZCwgMS4wKSkueHk7CiAgNTMJfQogIDU0CWdsX1Bvc2l0
aW9uID0gdmVjNChnbF9Qb3NpdGlvbi54eSAqIHNrX1JUQWRqdXN0Lnh6ICsgZ2xfUG9zaXRpb24u
d3cgKiBza19SVEFkanVzdC55dywgMC4wLCBnbF9Qb3NpdGlvbi53KTsKICA1NQl9CiAgNTYJCiAg
NTcJLy8gRnJhZ21lbnQgR0xTTAogIDU4CSN2ZXJzaW9uIDEwMAogIDU5CQogIDYwCXByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OwogIDYxCXByZWNpc2lvbiBtZWRpdW1wIHNhbXBsZXIyRDsKICA2Mglj
b25zdCBoaWdocCBpbnQga01heExvb3BMaW1pdF9TMV9jMCA9IDI7CiAgNjMJdW5pZm9ybSBoaWdo
cCB2ZWM0IHVjbGFtcF9TMV9jMF9jMF9jMDsKICA2NAl1bmlmb3JtIGhpZ2hwIG1hdDMgdW1hdHJp
eF9TMV9jMF9jMDsKICA2NQl1bmlmb3JtIG1lZGl1bXAgdmVjNCB1b2Zmc2V0c0FuZEtlcm5lbF9T
MV9jMFsxNF07CiAgNjYJdW5pZm9ybSBtZWRpdW1wIHZlYzIgdWRpcl9TMV9jMDsKICA2Nwl1bmlm
b3JtIGhpZ2hwIG1hdDMgdW1hdHJpeF9TMTsKICA2OAl1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVy
ZVNhbXBsZXJfMF9TMTsKICA2OQl2YXJ5aW5nIG1lZGl1bXAgdmVjNCB2Y29sb3JfUzA7CiAgNzAJ
dmFyeWluZyBoaWdocCB2ZWMyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwogIDcxCXZvaWQgbWFp
bigpIHsKICA3MgloaWdocCB2ZWMyIF8yNl90bXBfMV9jb29yZHMgPSB2VHJhbnNmb3JtZWRDb29y
ZHNfMl9TMDsKICA3MwltZWRpdW1wIHZlYzQgXzI3X3N1bSA9IHZlYzQoMC4wKTsKICA3NAlmb3Ig
KGhpZ2hwIGludCBfMjhfaSA9IDA7XzI4X2kgPCBrTWF4TG9vcExpbWl0X1MxX2MwOyArK18yOF9p
KSB7CiAgNzUJbWVkaXVtcCB2ZWM0IF8yOV9zID0gdW9mZnNldHNBbmRLZXJuZWxfUzFfYzBbXzI4
X2ldOwogIDc2CWhpZ2hwIHZlYzIgXzMwX2luQ29vcmQgPSAodW1hdHJpeF9TMV9jMF9jMCAqIHZl
YzMoXzI2X3RtcF8xX2Nvb3JkcyArIF8yOV9zLnggKiB1ZGlyX1MxX2MwLCAxLjApKS54eTsKICA3
NwloaWdocCB2ZWMyIF8zMV9zdWJzZXRDb29yZDsKICA3OAlfMzFfc3Vic2V0Q29vcmQueCA9IF8z
MF9pbkNvb3JkLng7CiAgNzkJXzMxX3N1YnNldENvb3JkLnkgPSBfMzBfaW5Db29yZC55OwogIDgw
CWhpZ2hwIHZlYzIgXzMyX2NsYW1wZWRDb29yZCA9IGNsYW1wKF8zMV9zdWJzZXRDb29yZCwgdWNs
YW1wX1MxX2MwX2MwX2MwLnh5LCB1Y2xhbXBfUzFfYzBfYzBfYzAuencpOwogIDgxCW1lZGl1bXAg
dmVjNCBfMzNfdGV4dHVyZUNvbG9yID0gdGV4dHVyZTJEKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBf
MzJfY2xhbXBlZENvb3JkLCAtMC40NzUpOwogIDgyCV8yN19zdW0gKz0gXzI5X3MueSAqIF8zM190
ZXh0dXJlQ29sb3I7CiAgODMJaGlnaHAgdmVjMiBfMzRfaW5Db29yZCA9ICh1bWF0cml4X1MxX2Mw
X2MwICogdmVjMyhfMjZfdG1wXzFfY29vcmRzICsgXzI5X3MueiAqIHVkaXJfUzFfYzAsIDEuMCkp
Lnh5OwogIDg0CWhpZ2hwIHZlYzIgXzM1X3N1YnNldENvb3JkOwogIDg1CV8zNV9zdWJzZXRDb29y
ZC54ID0gXzM0X2luQ29vcmQueDsKICA4NglfMzVfc3Vic2V0Q29vcmQueSA9IF8zNF9pbkNvb3Jk
Lnk7CiAgODcJaGlnaHAgdmVjMiBfMzZfY2xhbXBlZENvb3JkID0gY2xhbXAoXzM1X3N1YnNldENv
b3JkLCB1Y2xhbXBfUzFfYzBfYzBfYzAueHksIHVjbGFtcF9TMV9jMF9jMF9jMC56dyk7CiAgODgJ
bWVkaXVtcCB2ZWM0IF8zN190ZXh0dXJlQ29sb3IgPSB0ZXh0dXJlMkQodVRleHR1cmVTYW1wbGVy
XzBfUzEsIF8zNl9jbGFtcGVkQ29vcmQsIC0wLjQ3NSk7CiAgODkJXzI3X3N1bSArPSBfMjlfcy53
ICogXzM3X3RleHR1cmVDb2xvcjsKICA5MAl9CiAgOTEJbWVkaXVtcCB2ZWM0IG91dHB1dF9TMSA9
IF8yN19zdW07CiAgOTIJewogIDkzCWdsX0ZyYWdDb2xvciA9IG91dHB1dF9TMTsKICA5NAl9CiAg
OTUJfQogIDk2CQogIDk3CQpFcnJvcnM6CmVycm9yOiBFeGNlZWRlZCBtYXggbnIgaW5kaXJlY3Qg
dGV4dHVyZSBsb29rdXBzICg1LzQpCgpGYWlsZWQgdG8gY3JlYXRlIERNQS1CVUYgdGV4dHVyZSBv
ZiBzaXplIDEwMjR4NjkzOiBVbnN1cHBvcnRlZCBkbWFidWYgZm9ybWF0OiBYUjI0OjB4ZmZmZmZm
ZmZmZmZmZmYKU2hhZGVyIGNvbXBpbGF0aW9uIGVycm9yCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQogICAxCS8vIFZlcnRleCBTS1NMCiAgIDIJdW5pZm9ybSBmbG9hdDQgc2tfUlRBZGp1c3Q7dW5p
Zm9ybSBmbG9hdDN4MyB1bWF0cml4X1MxO2luIGZsb2F0MiBwb3NpdGlvbjtpbiBoYWxmNCBjb2xv
cjtpbiBmbG9hdDIgbG9jYWxDb29yZDtvdXQgaGFsZjQgdmNvbG9yX1MwO291dCBmbG9hdDIgdlRy
YW5zZm9ybWVkQ29vcmRzXzJfUzA7dm9pZCBtYWluKCkgey8vIFByaW1pdGl2ZSBQcm9jZXNzb3Ig
UXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCiAgIDMJdmNvbG9yX1MwID0gY29sb3I7c2tf
UG9zaXRpb24gPSBwb3NpdGlvbi54eTAxO3sKICAgNAl2VHJhbnNmb3JtZWRDb29yZHNfMl9TMCA9
ICh1bWF0cml4X1MxICogbG9jYWxDb29yZC54eTEpLnh5OwogICA1CX0KICAgNgl9CiAgIDcJLy8g
RnJhZ21lbnQgU0tTTAogICA4CWNvbnN0IGludCBrTWF4TG9vcExpbWl0X1MxX2MwID0gNDsKICAg
OQl1bmlmb3JtIGZsb2F0NCB1Y2xhbXBfUzFfYzBfYzBfYzA7dW5pZm9ybSBmbG9hdDN4MyB1bWF0
cml4X1MxX2MwX2MwO3VuaWZvcm0gaGFsZjQgdW9mZnNldHNBbmRLZXJuZWxfUzFfYzBbMTRdO3Vu
aWZvcm0gaGFsZjIgdWRpcl9TMV9jMDt1bmlmb3JtIGZsb2F0M3gzIHVtYXRyaXhfUzE7c2FtcGxl
cjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwogIDEwCWluIGhhbGY0IHZjb2xvcl9TMDtpbiBmbG9h
dDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7aGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9j
MChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSB7CiAgMTEJZmxvYXQyIGluQ29vcmQgPSBf
Y29vcmRzO2Zsb2F0MiBzdWJzZXRDb29yZDtzdWJzZXRDb29yZC54ID0gaW5Db29yZC54O3N1YnNl
dENvb3JkLnkgPSBpbkNvb3JkLnk7ZmxvYXQyIGNsYW1wZWRDb29yZDtjbGFtcGVkQ29vcmQgPSBj
bGFtcChzdWJzZXRDb29yZCwgdWNsYW1wX1MxX2MwX2MwX2MwLnh5LCB1Y2xhbXBfUzFfYzBfYzBf
YzAuencpO2hhbGY0IHRleHR1cmVDb2xvciA9IHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwg
Y2xhbXBlZENvb3JkKTtyZXR1cm4gdGV4dHVyZUNvbG9yO30KICAxMgkKICAxMwloYWxmNCBNYXRy
aXhFZmZlY3RfUzFfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgewogIDE0CXJl
dHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKF9pbnB1dCwgKCh1bWF0cml4X1MxX2MwX2Mw
KSAqIF9jb29yZHMueHkxKS54eSk7CiAgMTUJfQogIDE2CQogIDE3CWhhbGY0IHJ1bnRpbWVfc2hh
ZGVyX1MxX2MwKGhhbGY0IF9pbnB1dCkgewogIDE4CWhhbGY0IF90bXBfMF9pbkNvbG9yID0gX2lu
cHV0OwogIDE5CWZsb2F0MiBfdG1wXzFfY29vcmRzID0gdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7
CiAgMjAJaGFsZjQgc3VtID0gaGFsZjQoMC4wKTsKICAyMQlmb3IgKGludCBpID0gMDtpIDwga01h
eExvb3BMaW1pdF9TMV9jMDsgKytpKSB7CiAgMjIJaGFsZjQgcyA9IHVvZmZzZXRzQW5kS2VybmVs
X1MxX2MwW2ldOwogIDIzCXN1bSArPSBzLnkgKiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX3RtcF8w
X2luQ29sb3IsIF90bXBfMV9jb29yZHMgKyBmbG9hdDIocy54ICogdWRpcl9TMV9jMCkpOwogIDI0
CXN1bSArPSBzLncgKiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX3RtcF8wX2luQ29sb3IsIF90bXBf
MV9jb29yZHMgKyBmbG9hdDIocy56ICogdWRpcl9TMV9jMCkpOwogIDI1CX0KICAyNglyZXR1cm4g
aGFsZjQoc3VtKTsKICAyNwl9CiAgMjgJCiAgMjkJaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0
IF9pbnB1dCkgewogIDMwCXJldHVybiBydW50aW1lX3NoYWRlcl9TMV9jMChfaW5wdXQpOwogIDMx
CX0KICAzMgkKICAzMwl2b2lkIG1haW4oKSB7Ly8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21l
dHJ5UHJvY2Vzc29yCiAgMzQJaGFsZjQgb3V0cHV0Q29sb3JfUzA7b3V0cHV0Q29sb3JfUzAgPSB2
Y29sb3JfUzA7Y29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTtoYWxmNCBv
dXRwdXRfUzE7b3V0cHV0X1MxID0gTWF0cml4RWZmZWN0X1MxKG91dHB1dENvbG9yX1MwKTt7IC8v
IFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgogIDM1CXNrX0ZyYWdDb2xvciA9IG91dHB1dF9T
MSAqIG91dHB1dENvdmVyYWdlX1MwO319CiAgMzYJLy8gVmVydGV4IEdMU0wKICAzNwkjdmVyc2lv
biAxMDAKICAzOAkKICAzOQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKICA0MAlwcmVjaXNpb24g
bWVkaXVtcCBzYW1wbGVyMkQ7CiAgNDEJdW5pZm9ybSBoaWdocCB2ZWM0IHNrX1JUQWRqdXN0Owog
IDQyCXVuaWZvcm0gaGlnaHAgbWF0MyB1bWF0cml4X1MxOwogIDQzCWF0dHJpYnV0ZSBoaWdocCB2
ZWMyIHBvc2l0aW9uOwogIDQ0CWF0dHJpYnV0ZSBtZWRpdW1wIHZlYzQgY29sb3I7CiAgNDUJYXR0
cmlidXRlIGhpZ2hwIHZlYzIgbG9jYWxDb29yZDsKICA0Ngl2YXJ5aW5nIG1lZGl1bXAgdmVjNCB2
Y29sb3JfUzA7CiAgNDcJdmFyeWluZyBoaWdocCB2ZWMyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1Mw
OwogIDQ4CXZvaWQgbWFpbigpIHsKICA0OQl2Y29sb3JfUzAgPSBjb2xvcjsKICA1MAlnbF9Qb3Np
dGlvbiA9IHZlYzQocG9zaXRpb24sIDAuMCwgMS4wKTsKICA1MQl7CiAgNTIJdlRyYW5zZm9ybWVk
Q29vcmRzXzJfUzAgPSAodW1hdHJpeF9TMSAqIHZlYzMobG9jYWxDb29yZCwgMS4wKSkueHk7CiAg
NTMJfQogIDU0CWdsX1Bvc2l0aW9uID0gdmVjNChnbF9Qb3NpdGlvbi54eSAqIHNrX1JUQWRqdXN0
Lnh6ICsgZ2xfUG9zaXRpb24ud3cgKiBza19SVEFkanVzdC55dywgMC4wLCBnbF9Qb3NpdGlvbi53
KTsKICA1NQl9CiAgNTYJCiAgNTcJLy8gRnJhZ21lbnQgR0xTTAogIDU4CSN2ZXJzaW9uIDEwMAog
IDU5CQogIDYwCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwogIDYxCXByZWNpc2lvbiBtZWRpdW1w
IHNhbXBsZXIyRDsKICA2Mgljb25zdCBoaWdocCBpbnQga01heExvb3BMaW1pdF9TMV9jMCA9IDQ7
CiAgNjMJdW5pZm9ybSBoaWdocCB2ZWM0IHVjbGFtcF9TMV9jMF9jMF9jMDsKICA2NAl1bmlmb3Jt
IGhpZ2hwIG1hdDMgdW1hdHJpeF9TMV9jMF9jMDsKICA2NQl1bmlmb3JtIG1lZGl1bXAgdmVjNCB1
b2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFsxNF07CiAgNjYJdW5pZm9ybSBtZWRpdW1wIHZlYzIgdWRp
cl9TMV9jMDsKICA2Nwl1bmlmb3JtIGhpZ2hwIG1hdDMgdW1hdHJpeF9TMTsKICA2OAl1bmlmb3Jt
IHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKICA2OQl2YXJ5aW5nIG1lZGl1bXAgdmVj
NCB2Y29sb3JfUzA7CiAgNzAJdmFyeWluZyBoaWdocCB2ZWMyIHZUcmFuc2Zvcm1lZENvb3Jkc18y
X1MwOwogIDcxCXZvaWQgbWFpbigpIHsKICA3MgloaWdocCB2ZWMyIF8yNl90bXBfMV9jb29yZHMg
PSB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKICA3MwltZWRpdW1wIHZlYzQgXzI3X3N1bSA9IHZl
YzQoMC4wKTsKICA3NAlmb3IgKGhpZ2hwIGludCBfMjhfaSA9IDA7XzI4X2kgPCBrTWF4TG9vcExp
bWl0X1MxX2MwOyArK18yOF9pKSB7CiAgNzUJbWVkaXVtcCB2ZWM0IF8yOV9zID0gdW9mZnNldHNB
bmRLZXJuZWxfUzFfYzBbXzI4X2ldOwogIDc2CWhpZ2hwIHZlYzIgXzMwX2luQ29vcmQgPSAodW1h
dHJpeF9TMV9jMF9jMCAqIHZlYzMoXzI2X3RtcF8xX2Nvb3JkcyArIF8yOV9zLnggKiB1ZGlyX1Mx
X2MwLCAxLjApKS54eTsKICA3NwloaWdocCB2ZWMyIF8zMV9zdWJzZXRDb29yZDsKICA3OAlfMzFf
c3Vic2V0Q29vcmQueCA9IF8zMF9pbkNvb3JkLng7CiAgNzkJXzMxX3N1YnNldENvb3JkLnkgPSBf
MzBfaW5Db29yZC55OwogIDgwCWhpZ2hwIHZlYzIgXzMyX2NsYW1wZWRDb29yZCA9IGNsYW1wKF8z
MV9zdWJzZXRDb29yZCwgdWNsYW1wX1MxX2MwX2MwX2MwLnh5LCB1Y2xhbXBfUzFfYzBfYzBfYzAu
encpOwogIDgxCW1lZGl1bXAgdmVjNCBfMzNfdGV4dHVyZUNvbG9yID0gdGV4dHVyZTJEKHVUZXh0
dXJlU2FtcGxlcl8wX1MxLCBfMzJfY2xhbXBlZENvb3JkLCAtMC40NzUpOwogIDgyCV8yN19zdW0g
Kz0gXzI5X3MueSAqIF8zM190ZXh0dXJlQ29sb3I7CiAgODMJaGlnaHAgdmVjMiBfMzRfaW5Db29y
ZCA9ICh1bWF0cml4X1MxX2MwX2MwICogdmVjMyhfMjZfdG1wXzFfY29vcmRzICsgXzI5X3MueiAq
IHVkaXJfUzFfYzAsIDEuMCkpLnh5OwogIDg0CWhpZ2hwIHZlYzIgXzM1X3N1YnNldENvb3JkOwog
IDg1CV8zNV9zdWJzZXRDb29yZC54ID0gXzM0X2luQ29vcmQueDsKICA4NglfMzVfc3Vic2V0Q29v
cmQueSA9IF8zNF9pbkNvb3JkLnk7CiAgODcJaGlnaHAgdmVjMiBfMzZfY2xhbXBlZENvb3JkID0g
Y2xhbXAoXzM1X3N1YnNldENvb3JkLCB1Y2xhbXBfUzFfYzBfYzBfYzAueHksIHVjbGFtcF9TMV9j
MF9jMF9jMC56dyk7CiAgODgJbWVkaXVtcCB2ZWM0IF8zN190ZXh0dXJlQ29sb3IgPSB0ZXh0dXJl
MkQodVRleHR1cmVTYW1wbGVyXzBfUzEsIF8zNl9jbGFtcGVkQ29vcmQsIC0wLjQ3NSk7CiAgODkJ
XzI3X3N1bSArPSBfMjlfcy53ICogXzM3X3RleHR1cmVDb2xvcjsKICA5MAl9CiAgOTEJbWVkaXVt
cCB2ZWM0IG91dHB1dF9TMSA9IF8yN19zdW07CiAgOTIJewogIDkzCWdsX0ZyYWdDb2xvciA9IG91
dHB1dF9TMTsKICA5NAl9CiAgOTUJfQogIDk2CQogIDk3CQpFcnJvcnM6CmVycm9yOiBFeGNlZWRl
ZCBtYXggbnIgaW5kaXJlY3QgdGV4dHVyZSBsb29rdXBzICg5LzQpCgpTaGFkZXIgY29tcGlsYXRp
b24gZXJyb3IKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIDEJLy8gVmVydGV4IFNLU0wKICAg
Mgl1bmlmb3JtIGZsb2F0NCBza19SVEFkanVzdDt1bmlmb3JtIGZsb2F0M3gzIHVtYXRyaXhfUzE7
aW4gZmxvYXQyIHBvc2l0aW9uO2luIGhhbGY0IGNvbG9yO2luIGZsb2F0MiBsb2NhbENvb3JkO291
dCBoYWxmNCB2Y29sb3JfUzA7b3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDt2b2lk
IG1haW4oKSB7Ly8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9j
ZXNzb3IKICAgMwl2Y29sb3JfUzAgPSBjb2xvcjtza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7
ewogICA0CXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gKHVtYXRyaXhfUzEgKiBsb2NhbENvb3Jk
Lnh5MSkueHk7CiAgIDUJfQogICA2CX0KICAgNwkvLyBGcmFnbWVudCBTS1NMCiAgIDgJY29uc3Qg
aW50IGtNYXhMb29wTGltaXRfUzFfYzAgPSA0OwogICA5CXVuaWZvcm0gZmxvYXQ0IHVjbGFtcF9T
MV9jMF9jMF9jMDt1bmlmb3JtIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzA7dW5pZm9ybSBoYWxm
NCB1b2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFsxNF07dW5pZm9ybSBoYWxmMiB1ZGlyX1MxX2MwO3Vu
aWZvcm0gZmxvYXQzeDMgdW1hdHJpeF9TMTtzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7
CiAgMTAJaW4gaGFsZjQgdmNvbG9yX1MwO2luIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9T
MDtoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9j
b29yZHMpIHsKICAxMQlmbG9hdDIgaW5Db29yZCA9IF9jb29yZHM7ZmxvYXQyIHN1YnNldENvb3Jk
O3N1YnNldENvb3JkLnggPSBpbkNvb3JkLng7c3Vic2V0Q29vcmQueSA9IGluQ29vcmQueTtmbG9h
dDIgY2xhbXBlZENvb3JkO2NsYW1wZWRDb29yZCA9IGNsYW1wKHN1YnNldENvb3JkLCB1Y2xhbXBf
UzFfYzBfYzBfYzAueHksIHVjbGFtcF9TMV9jMF9jMF9jMC56dyk7aGFsZjQgdGV4dHVyZUNvbG9y
ID0gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBjbGFtcGVkQ29vcmQpO3JldHVybiB0ZXh0
dXJlQ29sb3I7fQogIDEyCQogIDEzCWhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMChoYWxmNCBf
aW5wdXQsIGZsb2F0MiBfY29vcmRzKSB7CiAgMTQJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzBf
YzBfYzAoX2lucHV0LCAoKHVtYXRyaXhfUzFfYzBfYzApICogX2Nvb3Jkcy54eTEpLnh5KTsKICAx
NQl9CiAgMTYJCiAgMTcJaGFsZjQgcnVudGltZV9zaGFkZXJfUzFfYzAoaGFsZjQgX2lucHV0KSB7
CiAgMTgJaGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CiAgMTkJZmxvYXQyIF90bXBfMV9j
b29yZHMgPSB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKICAyMAloYWxmNCBzdW0gPSBoYWxmNCgw
LjApOwogIDIxCWZvciAoaW50IGkgPSAwO2kgPCBrTWF4TG9vcExpbWl0X1MxX2MwOyArK2kpIHsK
ICAyMgloYWxmNCBzID0gdW9mZnNldHNBbmRLZXJuZWxfUzFfYzBbaV07CiAgMjMJc3VtICs9IHMu
eSAqIE1hdHJpeEVmZmVjdF9TMV9jMF9jMChfdG1wXzBfaW5Db2xvciwgX3RtcF8xX2Nvb3JkcyAr
IGZsb2F0MihzLnggKiB1ZGlyX1MxX2MwKSk7CiAgMjQJc3VtICs9IHMudyAqIE1hdHJpeEVmZmVj
dF9TMV9jMF9jMChfdG1wXzBfaW5Db2xvciwgX3RtcF8xX2Nvb3JkcyArIGZsb2F0MihzLnogKiB1
ZGlyX1MxX2MwKSk7CiAgMjUJfQogIDI2CXJldHVybiBoYWxmNChzdW0pOwogIDI3CX0KICAyOAkK
ICAyOQloYWxmNCBNYXRyaXhFZmZlY3RfUzEoaGFsZjQgX2lucHV0KSB7CiAgMzAJcmV0dXJuIHJ1
bnRpbWVfc2hhZGVyX1MxX2MwKF9pbnB1dCk7CiAgMzEJfQogIDMyCQogIDMzCXZvaWQgbWFpbigp
IHsvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKICAzNAloYWxmNCBv
dXRwdXRDb2xvcl9TMDtvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDtjb25zdCBoYWxmNCBvdXRw
dXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpO2hhbGY0IG91dHB1dF9TMTtvdXRwdXRfUzEgPSBNYXRy
aXhFZmZlY3RfUzEob3V0cHV0Q29sb3JfUzApO3sgLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBE
dWZmCiAgMzUJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7fX0K
ICAzNgkvLyBWZXJ0ZXggR0xTTAogIDM3CSN2ZXJzaW9uIDEwMAogIDM4CQogIDM5CXByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OwogIDQwCXByZWNpc2lvbiBtZWRpdW1wIHNhbXBsZXIyRDsKICA0MQl1
bmlmb3JtIGhpZ2hwIHZlYzQgc2tfUlRBZGp1c3Q7CiAgNDIJdW5pZm9ybSBoaWdocCBtYXQzIHVt
YXRyaXhfUzE7CiAgNDMJYXR0cmlidXRlIGhpZ2hwIHZlYzIgcG9zaXRpb247CiAgNDQJYXR0cmli
dXRlIG1lZGl1bXAgdmVjNCBjb2xvcjsKICA0NQlhdHRyaWJ1dGUgaGlnaHAgdmVjMiBsb2NhbENv
b3JkOwogIDQ2CXZhcnlpbmcgbWVkaXVtcCB2ZWM0IHZjb2xvcl9TMDsKICA0Nwl2YXJ5aW5nIGhp
Z2hwIHZlYzIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CiAgNDgJdm9pZCBtYWluKCkgewogIDQ5
CXZjb2xvcl9TMCA9IGNvbG9yOwogIDUwCWdsX1Bvc2l0aW9uID0gdmVjNChwb3NpdGlvbiwgMC4w
LCAxLjApOwogIDUxCXsKICA1Mgl2VHJhbnNmb3JtZWRDb29yZHNfMl9TMCA9ICh1bWF0cml4X1Mx
ICogdmVjMyhsb2NhbENvb3JkLCAxLjApKS54eTsKICA1Mwl9CiAgNTQJZ2xfUG9zaXRpb24gPSB2
ZWM0KGdsX1Bvc2l0aW9uLnh5ICogc2tfUlRBZGp1c3QueHogKyBnbF9Qb3NpdGlvbi53dyAqIHNr
X1JUQWRqdXN0Lnl3LCAwLjAsIGdsX1Bvc2l0aW9uLncpOwogIDU1CX0KICA1NgkKICA1NwkvLyBG
cmFnbWVudCBHTFNMCiAgNTgJI3ZlcnNpb24gMTAwCiAgNTkJCiAgNjAJcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7CiAgNjEJcHJlY2lzaW9uIG1lZGl1bXAgc2FtcGxlcjJEOwogIDYyCWNvbnN0IGhp
Z2hwIGludCBrTWF4TG9vcExpbWl0X1MxX2MwID0gNDsKICA2Mwl1bmlmb3JtIGhpZ2hwIHZlYzQg
dWNsYW1wX1MxX2MwX2MwX2MwOwogIDY0CXVuaWZvcm0gaGlnaHAgbWF0MyB1bWF0cml4X1MxX2Mw
X2MwOwogIDY1CXVuaWZvcm0gbWVkaXVtcCB2ZWM0IHVvZmZzZXRzQW5kS2VybmVsX1MxX2MwWzE0
XTsKICA2Ngl1bmlmb3JtIG1lZGl1bXAgdmVjMiB1ZGlyX1MxX2MwOwogIDY3CXVuaWZvcm0gaGln
aHAgbWF0MyB1bWF0cml4X1MxOwogIDY4CXVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxl
cl8wX1MxOwogIDY5CXZhcnlpbmcgbWVkaXVtcCB2ZWM0IHZjb2xvcl9TMDsKICA3MAl2YXJ5aW5n
IGhpZ2hwIHZlYzIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CiAgNzEJdm9pZCBtYWluKCkgewog
IDcyCWhpZ2hwIHZlYzIgXzI2X3RtcF8xX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1Mw
OwogIDczCW1lZGl1bXAgdmVjNCBfMjdfc3VtID0gdmVjNCgwLjApOwogIDc0CWZvciAoaGlnaHAg
aW50IF8yOF9pID0gMDtfMjhfaSA8IGtNYXhMb29wTGltaXRfUzFfYzA7ICsrXzI4X2kpIHsKICA3
NQltZWRpdW1wIHZlYzQgXzI5X3MgPSB1b2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtfMjhfaV07CiAg
NzYJaGlnaHAgdmVjMiBfMzBfaW5Db29yZCA9ICh1bWF0cml4X1MxX2MwX2MwICogdmVjMyhfMjZf
dG1wXzFfY29vcmRzICsgXzI5X3MueCAqIHVkaXJfUzFfYzAsIDEuMCkpLnh5OwogIDc3CWhpZ2hw
IHZlYzIgXzMxX3N1YnNldENvb3JkOwogIDc4CV8zMV9zdWJzZXRDb29yZC54ID0gXzMwX2luQ29v
cmQueDsKICA3OQlfMzFfc3Vic2V0Q29vcmQueSA9IF8zMF9pbkNvb3JkLnk7CiAgODAJaGlnaHAg
dmVjMiBfMzJfY2xhbXBlZENvb3JkID0gY2xhbXAoXzMxX3N1YnNldENvb3JkLCB1Y2xhbXBfUzFf
YzBfYzBfYzAueHksIHVjbGFtcF9TMV9jMF9jMF9jMC56dyk7CiAgODEJbWVkaXVtcCB2ZWM0IF8z
M190ZXh0dXJlQ29sb3IgPSB0ZXh0dXJlMkQodVRleHR1cmVTYW1wbGVyXzBfUzEsIF8zMl9jbGFt
cGVkQ29vcmQsIC0wLjQ3NSk7CiAgODIJXzI3X3N1bSArPSBfMjlfcy55ICogXzMzX3RleHR1cmVD
b2xvcjsKICA4MwloaWdocCB2ZWMyIF8zNF9pbkNvb3JkID0gKHVtYXRyaXhfUzFfYzBfYzAgKiB2
ZWMzKF8yNl90bXBfMV9jb29yZHMgKyBfMjlfcy56ICogdWRpcl9TMV9jMCwgMS4wKSkueHk7CiAg
ODQJaGlnaHAgdmVjMiBfMzVfc3Vic2V0Q29vcmQ7CiAgODUJXzM1X3N1YnNldENvb3JkLnggPSBf
MzRfaW5Db29yZC54OwogIDg2CV8zNV9zdWJzZXRDb29yZC55ID0gXzM0X2luQ29vcmQueTsKICA4
NwloaWdocCB2ZWMyIF8zNl9jbGFtcGVkQ29vcmQgPSBjbGFtcChfMzVfc3Vic2V0Q29vcmQsIHVj
bGFtcF9TMV9jMF9jMF9jMC54eSwgdWNsYW1wX1MxX2MwX2MwX2MwLnp3KTsKICA4OAltZWRpdW1w
IHZlYzQgXzM3X3RleHR1cmVDb2xvciA9IHRleHR1cmUyRCh1VGV4dHVyZVNhbXBsZXJfMF9TMSwg
XzM2X2NsYW1wZWRDb29yZCwgLTAuNDc1KTsKICA4OQlfMjdfc3VtICs9IF8yOV9zLncgKiBfMzdf
dGV4dHVyZUNvbG9yOwogIDkwCX0KICA5MQltZWRpdW1wIHZlYzQgb3V0cHV0X1MxID0gXzI3X3N1
bTsKICA5Mgl7CiAgOTMJZ2xfRnJhZ0NvbG9yID0gb3V0cHV0X1MxOwogIDk0CX0KICA5NQl9CiAg
OTYJCiAgOTcJCkVycm9yczoKZXJyb3I6IEV4Y2VlZGVkIG1heCBuciBpbmRpcmVjdCB0ZXh0dXJl
IGxvb2t1cHMgKDkvNCkKCkZhaWxlZCB0byBjcmVhdGUgRE1BLUJVRiB0ZXh0dXJlIG9mIHNpemUg
MTAyNHg2OTM6IFVuc3VwcG9ydGVkIGRtYWJ1ZiBmb3JtYXQ6IFhSMjQ6MHhmZmZmZmZmZmZmZmZm
ZgpTaGFkZXIgY29tcGlsYXRpb24gZXJyb3IKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIDEJ
Ly8gVmVydGV4IFNLU0wKICAgMgl1bmlmb3JtIGZsb2F0NCBza19SVEFkanVzdDt1bmlmb3JtIGZs
b2F0M3gzIHVtYXRyaXhfUzE7aW4gZmxvYXQyIHBvc2l0aW9uO2luIGhhbGY0IGNvbG9yO2luIGZs
b2F0MiBsb2NhbENvb3JkO291dCBoYWxmNCB2Y29sb3JfUzA7b3V0IGZsb2F0MiB2VHJhbnNmb3Jt
ZWRDb29yZHNfMl9TMDt2b2lkIG1haW4oKSB7Ly8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVy
RWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKICAgMwl2Y29sb3JfUzAgPSBjb2xvcjtza19Qb3NpdGlv
biA9IHBvc2l0aW9uLnh5MDE7ewogICA0CXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gKHVtYXRy
aXhfUzEgKiBsb2NhbENvb3JkLnh5MSkueHk7CiAgIDUJfQogICA2CX0KICAgNwkvLyBGcmFnbWVu
dCBTS1NMCiAgIDgJY29uc3QgaW50IGtNYXhMb29wTGltaXRfUzFfYzAgPSAyOwogICA5CXVuaWZv
cm0gZmxvYXQ0IHVjbGFtcF9TMV9jMF9jMF9jMDt1bmlmb3JtIGZsb2F0M3gzIHVtYXRyaXhfUzFf
YzBfYzA7dW5pZm9ybSBoYWxmNCB1b2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFsxNF07dW5pZm9ybSBo
YWxmMiB1ZGlyX1MxX2MwO3VuaWZvcm0gZmxvYXQzeDMgdW1hdHJpeF9TMTtzYW1wbGVyMkQgdVRl
eHR1cmVTYW1wbGVyXzBfUzE7CiAgMTAJaW4gaGFsZjQgdmNvbG9yX1MwO2luIGZsb2F0MiB2VHJh
bnNmb3JtZWRDb29yZHNfMl9TMDtoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKGhhbGY0
IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIHsKICAxMQlmbG9hdDIgaW5Db29yZCA9IF9jb29yZHM7
ZmxvYXQyIHN1YnNldENvb3JkO3N1YnNldENvb3JkLnggPSBpbkNvb3JkLng7c3Vic2V0Q29vcmQu
eSA9IGluQ29vcmQueTtmbG9hdDIgY2xhbXBlZENvb3JkO2NsYW1wZWRDb29yZCA9IGNsYW1wKHN1
YnNldENvb3JkLCB1Y2xhbXBfUzFfYzBfYzBfYzAueHksIHVjbGFtcF9TMV9jMF9jMF9jMC56dyk7
aGFsZjQgdGV4dHVyZUNvbG9yID0gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBjbGFtcGVk
Q29vcmQpO3JldHVybiB0ZXh0dXJlQ29sb3I7fQogIDEyCQogIDEzCWhhbGY0IE1hdHJpeEVmZmVj
dF9TMV9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSB7CiAgMTQJcmV0dXJuIFRl
eHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoX2lucHV0LCAoKHVtYXRyaXhfUzFfYzBfYzApICogX2Nv
b3Jkcy54eTEpLnh5KTsKICAxNQl9CiAgMTYJCiAgMTcJaGFsZjQgcnVudGltZV9zaGFkZXJfUzFf
YzAoaGFsZjQgX2lucHV0KSB7CiAgMTgJaGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CiAg
MTkJZmxvYXQyIF90bXBfMV9jb29yZHMgPSB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKICAyMAlo
YWxmNCBzdW0gPSBoYWxmNCgwLjApOwogIDIxCWZvciAoaW50IGkgPSAwO2kgPCBrTWF4TG9vcExp
bWl0X1MxX2MwOyArK2kpIHsKICAyMgloYWxmNCBzID0gdW9mZnNldHNBbmRLZXJuZWxfUzFfYzBb
aV07CiAgMjMJc3VtICs9IHMueSAqIE1hdHJpeEVmZmVjdF9TMV9jMF9jMChfdG1wXzBfaW5Db2xv
ciwgX3RtcF8xX2Nvb3JkcyArIGZsb2F0MihzLnggKiB1ZGlyX1MxX2MwKSk7CiAgMjQJc3VtICs9
IHMudyAqIE1hdHJpeEVmZmVjdF9TMV9jMF9jMChfdG1wXzBfaW5Db2xvciwgX3RtcF8xX2Nvb3Jk
cyArIGZsb2F0MihzLnogKiB1ZGlyX1MxX2MwKSk7CiAgMjUJfQogIDI2CXJldHVybiBoYWxmNChz
dW0pOwogIDI3CX0KICAyOAkKICAyOQloYWxmNCBNYXRyaXhFZmZlY3RfUzEoaGFsZjQgX2lucHV0
KSB7CiAgMzAJcmV0dXJuIHJ1bnRpbWVfc2hhZGVyX1MxX2MwKF9pbnB1dCk7CiAgMzEJfQogIDMy
CQogIDMzCXZvaWQgbWFpbigpIHsvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9j
ZXNzb3IKICAzNAloYWxmNCBvdXRwdXRDb2xvcl9TMDtvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9T
MDtjb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpO2hhbGY0IG91dHB1dF9T
MTtvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3JfUzApO3sgLy8gWGZlciBQ
cm9jZXNzb3I6IFBvcnRlciBEdWZmCiAgMzUJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0
cHV0Q292ZXJhZ2VfUzA7fX0KICAzNgkvLyBWZXJ0ZXggR0xTTAogIDM3CSN2ZXJzaW9uIDEwMAog
IDM4CQogIDM5CXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwogIDQwCXByZWNpc2lvbiBtZWRpdW1w
IHNhbXBsZXIyRDsKICA0MQl1bmlmb3JtIGhpZ2hwIHZlYzQgc2tfUlRBZGp1c3Q7CiAgNDIJdW5p
Zm9ybSBoaWdocCBtYXQzIHVtYXRyaXhfUzE7CiAgNDMJYXR0cmlidXRlIGhpZ2hwIHZlYzIgcG9z
aXRpb247CiAgNDQJYXR0cmlidXRlIG1lZGl1bXAgdmVjNCBjb2xvcjsKICA0NQlhdHRyaWJ1dGUg
aGlnaHAgdmVjMiBsb2NhbENvb3JkOwogIDQ2CXZhcnlpbmcgbWVkaXVtcCB2ZWM0IHZjb2xvcl9T
MDsKICA0Nwl2YXJ5aW5nIGhpZ2hwIHZlYzIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CiAgNDgJ
dm9pZCBtYWluKCkgewogIDQ5CXZjb2xvcl9TMCA9IGNvbG9yOwogIDUwCWdsX1Bvc2l0aW9uID0g
dmVjNChwb3NpdGlvbiwgMC4wLCAxLjApOwogIDUxCXsKICA1Mgl2VHJhbnNmb3JtZWRDb29yZHNf
Ml9TMCA9ICh1bWF0cml4X1MxICogdmVjMyhsb2NhbENvb3JkLCAxLjApKS54eTsKICA1Mwl9CiAg
NTQJZ2xfUG9zaXRpb24gPSB2ZWM0KGdsX1Bvc2l0aW9uLnh5ICogc2tfUlRBZGp1c3QueHogKyBn
bF9Qb3NpdGlvbi53dyAqIHNrX1JUQWRqdXN0Lnl3LCAwLjAsIGdsX1Bvc2l0aW9uLncpOwogIDU1
CX0KICA1NgkKICA1NwkvLyBGcmFnbWVudCBHTFNMCiAgNTgJI3ZlcnNpb24gMTAwCiAgNTkJCiAg
NjAJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CiAgNjEJcHJlY2lzaW9uIG1lZGl1bXAgc2FtcGxl
cjJEOwogIDYyCWNvbnN0IGhpZ2hwIGludCBrTWF4TG9vcExpbWl0X1MxX2MwID0gMjsKICA2Mwl1
bmlmb3JtIGhpZ2hwIHZlYzQgdWNsYW1wX1MxX2MwX2MwX2MwOwogIDY0CXVuaWZvcm0gaGlnaHAg
bWF0MyB1bWF0cml4X1MxX2MwX2MwOwogIDY1CXVuaWZvcm0gbWVkaXVtcCB2ZWM0IHVvZmZzZXRz
QW5kS2VybmVsX1MxX2MwWzE0XTsKICA2Ngl1bmlmb3JtIG1lZGl1bXAgdmVjMiB1ZGlyX1MxX2Mw
OwogIDY3CXVuaWZvcm0gaGlnaHAgbWF0MyB1bWF0cml4X1MxOwogIDY4CXVuaWZvcm0gc2FtcGxl
cjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwogIDY5CXZhcnlpbmcgbWVkaXVtcCB2ZWM0IHZjb2xv
cl9TMDsKICA3MAl2YXJ5aW5nIGhpZ2hwIHZlYzIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CiAg
NzEJdm9pZCBtYWluKCkgewogIDcyCWhpZ2hwIHZlYzIgXzI2X3RtcF8xX2Nvb3JkcyA9IHZUcmFu
c2Zvcm1lZENvb3Jkc18yX1MwOwogIDczCW1lZGl1bXAgdmVjNCBfMjdfc3VtID0gdmVjNCgwLjAp
OwogIDc0CWZvciAoaGlnaHAgaW50IF8yOF9pID0gMDtfMjhfaSA8IGtNYXhMb29wTGltaXRfUzFf
YzA7ICsrXzI4X2kpIHsKICA3NQltZWRpdW1wIHZlYzQgXzI5X3MgPSB1b2Zmc2V0c0FuZEtlcm5l
bF9TMV9jMFtfMjhfaV07CiAgNzYJaGlnaHAgdmVjMiBfMzBfaW5Db29yZCA9ICh1bWF0cml4X1Mx
X2MwX2MwICogdmVjMyhfMjZfdG1wXzFfY29vcmRzICsgXzI5X3MueCAqIHVkaXJfUzFfYzAsIDEu
MCkpLnh5OwogIDc3CWhpZ2hwIHZlYzIgXzMxX3N1YnNldENvb3JkOwogIDc4CV8zMV9zdWJzZXRD
b29yZC54ID0gXzMwX2luQ29vcmQueDsKICA3OQlfMzFfc3Vic2V0Q29vcmQueSA9IF8zMF9pbkNv
b3JkLnk7CiAgODAJaGlnaHAgdmVjMiBfMzJfY2xhbXBlZENvb3JkID0gY2xhbXAoXzMxX3N1YnNl
dENvb3JkLCB1Y2xhbXBfUzFfYzBfYzBfYzAueHksIHVjbGFtcF9TMV9jMF9jMF9jMC56dyk7CiAg
ODEJbWVkaXVtcCB2ZWM0IF8zM190ZXh0dXJlQ29sb3IgPSB0ZXh0dXJlMkQodVRleHR1cmVTYW1w
bGVyXzBfUzEsIF8zMl9jbGFtcGVkQ29vcmQsIC0wLjQ3NSk7CiAgODIJXzI3X3N1bSArPSBfMjlf
cy55ICogXzMzX3RleHR1cmVDb2xvcjsKICA4MwloaWdocCB2ZWMyIF8zNF9pbkNvb3JkID0gKHVt
YXRyaXhfUzFfYzBfYzAgKiB2ZWMzKF8yNl90bXBfMV9jb29yZHMgKyBfMjlfcy56ICogdWRpcl9T
MV9jMCwgMS4wKSkueHk7CiAgODQJaGlnaHAgdmVjMiBfMzVfc3Vic2V0Q29vcmQ7CiAgODUJXzM1
X3N1YnNldENvb3JkLnggPSBfMzRfaW5Db29yZC54OwogIDg2CV8zNV9zdWJzZXRDb29yZC55ID0g
XzM0X2luQ29vcmQueTsKICA4NwloaWdocCB2ZWMyIF8zNl9jbGFtcGVkQ29vcmQgPSBjbGFtcChf
MzVfc3Vic2V0Q29vcmQsIHVjbGFtcF9TMV9jMF9jMF9jMC54eSwgdWNsYW1wX1MxX2MwX2MwX2Mw
Lnp3KTsKICA4OAltZWRpdW1wIHZlYzQgXzM3X3RleHR1cmVDb2xvciA9IHRleHR1cmUyRCh1VGV4
dHVyZVNhbXBsZXJfMF9TMSwgXzM2X2NsYW1wZWRDb29yZCwgLTAuNDc1KTsKICA4OQlfMjdfc3Vt
ICs9IF8yOV9zLncgKiBfMzdfdGV4dHVyZUNvbG9yOwogIDkwCX0KICA5MQltZWRpdW1wIHZlYzQg
b3V0cHV0X1MxID0gXzI3X3N1bTsKICA5Mgl7CiAgOTMJZ2xfRnJhZ0NvbG9yID0gb3V0cHV0X1Mx
OwogIDk0CX0KICA5NQl9CiAgOTYJCiAgOTcJCkVycm9yczoKZXJyb3I6IEV4Y2VlZGVkIG1heCBu
ciBpbmRpcmVjdCB0ZXh0dXJlIGxvb2t1cHMgKDUvNCkKClNoYWRlciBjb21waWxhdGlvbiBlcnJv
cgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgMQkvLyBWZXJ0ZXggU0tTTAogICAyCXVuaWZv
cm0gZmxvYXQ0IHNrX1JUQWRqdXN0O3VuaWZvcm0gZmxvYXQzeDMgdW1hdHJpeF9TMTtpbiBmbG9h
dDIgcG9zaXRpb247aW4gaGFsZjQgY29sb3I7aW4gZmxvYXQyIGxvY2FsQ29vcmQ7b3V0IGhhbGY0
IHZjb2xvcl9TMDtvdXQgZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwO3ZvaWQgbWFpbigp
IHsvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3Nvcgog
ICAzCXZjb2xvcl9TMCA9IGNvbG9yO3NrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTt7CiAgIDQJ
dlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAgPSAodW1hdHJpeF9TMSAqIGxvY2FsQ29vcmQueHkxKS54
eTsKICAgNQl9CiAgIDYJfQogICA3CS8vIEZyYWdtZW50IFNLU0wKICAgOAljb25zdCBpbnQga01h
eExvb3BMaW1pdF9TMV9jMCA9IDI7CiAgIDkJdW5pZm9ybSBmbG9hdDQgdWNsYW1wX1MxX2MwX2Mw
X2MwO3VuaWZvcm0gZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDt1bmlmb3JtIGhhbGY0IHVvZmZz
ZXRzQW5kS2VybmVsX1MxX2MwWzE0XTt1bmlmb3JtIGhhbGYyIHVkaXJfUzFfYzA7dW5pZm9ybSBm
bG9hdDN4MyB1bWF0cml4X1MxO3NhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKICAxMAlp
biBoYWxmNCB2Y29sb3JfUzA7aW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwO2hhbGY0
IFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3Jkcykg
ewogIDExCWZsb2F0MiBpbkNvb3JkID0gX2Nvb3JkcztmbG9hdDIgc3Vic2V0Q29vcmQ7c3Vic2V0
Q29vcmQueCA9IGluQ29vcmQueDtzdWJzZXRDb29yZC55ID0gaW5Db29yZC55O2Zsb2F0MiBjbGFt
cGVkQ29vcmQ7Y2xhbXBlZENvb3JkID0gY2xhbXAoc3Vic2V0Q29vcmQsIHVjbGFtcF9TMV9jMF9j
MF9jMC54eSwgdWNsYW1wX1MxX2MwX2MwX2MwLnp3KTtoYWxmNCB0ZXh0dXJlQ29sb3IgPSBzYW1w
bGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIGNsYW1wZWRDb29yZCk7cmV0dXJuIHRleHR1cmVDb2xv
cjt9CiAgMTIJCiAgMTMJaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwKGhhbGY0IF9pbnB1dCwg
ZmxvYXQyIF9jb29yZHMpIHsKICAxNAlyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChf
aW5wdXQsICgodW1hdHJpeF9TMV9jMF9jMCkgKiBfY29vcmRzLnh5MSkueHkpOwogIDE1CX0KICAx
NgkKICAxNwloYWxmNCBydW50aW1lX3NoYWRlcl9TMV9jMChoYWxmNCBfaW5wdXQpIHsKICAxOAlo
YWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKICAxOQlmbG9hdDIgX3RtcF8xX2Nvb3JkcyA9
IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwogIDIwCWhhbGY0IHN1bSA9IGhhbGY0KDAuMCk7CiAg
MjEJZm9yIChpbnQgaSA9IDA7aSA8IGtNYXhMb29wTGltaXRfUzFfYzA7ICsraSkgewogIDIyCWhh
bGY0IHMgPSB1b2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtpXTsKICAyMwlzdW0gKz0gcy55ICogTWF0
cml4RWZmZWN0X1MxX2MwX2MwKF90bXBfMF9pbkNvbG9yLCBfdG1wXzFfY29vcmRzICsgZmxvYXQy
KHMueCAqIHVkaXJfUzFfYzApKTsKICAyNAlzdW0gKz0gcy53ICogTWF0cml4RWZmZWN0X1MxX2Mw
X2MwKF90bXBfMF9pbkNvbG9yLCBfdG1wXzFfY29vcmRzICsgZmxvYXQyKHMueiAqIHVkaXJfUzFf
YzApKTsKICAyNQl9CiAgMjYJcmV0dXJuIGhhbGY0KHN1bSk7CiAgMjcJfQogIDI4CQogIDI5CWhh
bGY0IE1hdHJpeEVmZmVjdF9TMShoYWxmNCBfaW5wdXQpIHsKICAzMAlyZXR1cm4gcnVudGltZV9z
aGFkZXJfUzFfYzAoX2lucHV0KTsKICAzMQl9CiAgMzIJCiAgMzMJdm9pZCBtYWluKCkgey8vIFN0
YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgogIDM0CWhhbGY0IG91dHB1dENv
bG9yX1MwO291dHB1dENvbG9yX1MwID0gdmNvbG9yX1MwO2NvbnN0IGhhbGY0IG91dHB1dENvdmVy
YWdlX1MwID0gaGFsZjQoMSk7aGFsZjQgb3V0cHV0X1MxO291dHB1dF9TMSA9IE1hdHJpeEVmZmVj
dF9TMShvdXRwdXRDb2xvcl9TMCk7eyAvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKICAz
NQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDt9fQogIDM2CS8v
IFZlcnRleCBHTFNMCiAgMzcJI3ZlcnNpb24gMTAwCiAgMzgJCiAgMzkJcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7CiAgNDAJcHJlY2lzaW9uIG1lZGl1bXAgc2FtcGxlcjJEOwogIDQxCXVuaWZvcm0g
aGlnaHAgdmVjNCBza19SVEFkanVzdDsKICA0Mgl1bmlmb3JtIGhpZ2hwIG1hdDMgdW1hdHJpeF9T
MTsKICA0MwlhdHRyaWJ1dGUgaGlnaHAgdmVjMiBwb3NpdGlvbjsKICA0NAlhdHRyaWJ1dGUgbWVk
aXVtcCB2ZWM0IGNvbG9yOwogIDQ1CWF0dHJpYnV0ZSBoaWdocCB2ZWMyIGxvY2FsQ29vcmQ7CiAg
NDYJdmFyeWluZyBtZWRpdW1wIHZlYzQgdmNvbG9yX1MwOwogIDQ3CXZhcnlpbmcgaGlnaHAgdmVj
MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKICA0OAl2b2lkIG1haW4oKSB7CiAgNDkJdmNvbG9y
X1MwID0gY29sb3I7CiAgNTAJZ2xfUG9zaXRpb24gPSB2ZWM0KHBvc2l0aW9uLCAwLjAsIDEuMCk7
CiAgNTEJewogIDUyCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gKHVtYXRyaXhfUzEgKiB2ZWMz
KGxvY2FsQ29vcmQsIDEuMCkpLnh5OwogIDUzCX0KICA1NAlnbF9Qb3NpdGlvbiA9IHZlYzQoZ2xf
UG9zaXRpb24ueHkgKiBza19SVEFkanVzdC54eiArIGdsX1Bvc2l0aW9uLnd3ICogc2tfUlRBZGp1
c3QueXcsIDAuMCwgZ2xfUG9zaXRpb24udyk7CiAgNTUJfQogIDU2CQogIDU3CS8vIEZyYWdtZW50
IEdMU0wKICA1OAkjdmVyc2lvbiAxMDAKICA1OQkKICA2MAlwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKICA2MQlwcmVjaXNpb24gbWVkaXVtcCBzYW1wbGVyMkQ7CiAgNjIJY29uc3QgaGlnaHAgaW50
IGtNYXhMb29wTGltaXRfUzFfYzAgPSAyOwogIDYzCXVuaWZvcm0gaGlnaHAgdmVjNCB1Y2xhbXBf
UzFfYzBfYzBfYzA7CiAgNjQJdW5pZm9ybSBoaWdocCBtYXQzIHVtYXRyaXhfUzFfYzBfYzA7CiAg
NjUJdW5pZm9ybSBtZWRpdW1wIHZlYzQgdW9mZnNldHNBbmRLZXJuZWxfUzFfYzBbMTRdOwogIDY2
CXVuaWZvcm0gbWVkaXVtcCB2ZWMyIHVkaXJfUzFfYzA7CiAgNjcJdW5pZm9ybSBoaWdocCBtYXQz
IHVtYXRyaXhfUzE7CiAgNjgJdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7
CiAgNjkJdmFyeWluZyBtZWRpdW1wIHZlYzQgdmNvbG9yX1MwOwogIDcwCXZhcnlpbmcgaGlnaHAg
dmVjMiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKICA3MQl2b2lkIG1haW4oKSB7CiAgNzIJaGln
aHAgdmVjMiBfMjZfdG1wXzFfY29vcmRzID0gdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CiAgNzMJ
bWVkaXVtcCB2ZWM0IF8yN19zdW0gPSB2ZWM0KDAuMCk7CiAgNzQJZm9yIChoaWdocCBpbnQgXzI4
X2kgPSAwO18yOF9pIDwga01heExvb3BMaW1pdF9TMV9jMDsgKytfMjhfaSkgewogIDc1CW1lZGl1
bXAgdmVjNCBfMjlfcyA9IHVvZmZzZXRzQW5kS2VybmVsX1MxX2MwW18yOF9pXTsKICA3NgloaWdo
cCB2ZWMyIF8zMF9pbkNvb3JkID0gKHVtYXRyaXhfUzFfYzBfYzAgKiB2ZWMzKF8yNl90bXBfMV9j
b29yZHMgKyBfMjlfcy54ICogdWRpcl9TMV9jMCwgMS4wKSkueHk7CiAgNzcJaGlnaHAgdmVjMiBf
MzFfc3Vic2V0Q29vcmQ7CiAgNzgJXzMxX3N1YnNldENvb3JkLnggPSBfMzBfaW5Db29yZC54Owog
IDc5CV8zMV9zdWJzZXRDb29yZC55ID0gXzMwX2luQ29vcmQueTsKICA4MAloaWdocCB2ZWMyIF8z
Ml9jbGFtcGVkQ29vcmQgPSBjbGFtcChfMzFfc3Vic2V0Q29vcmQsIHVjbGFtcF9TMV9jMF9jMF9j
MC54eSwgdWNsYW1wX1MxX2MwX2MwX2MwLnp3KTsKICA4MQltZWRpdW1wIHZlYzQgXzMzX3RleHR1
cmVDb2xvciA9IHRleHR1cmUyRCh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgXzMyX2NsYW1wZWRDb29y
ZCwgLTAuNDc1KTsKICA4MglfMjdfc3VtICs9IF8yOV9zLnkgKiBfMzNfdGV4dHVyZUNvbG9yOwog
IDgzCWhpZ2hwIHZlYzIgXzM0X2luQ29vcmQgPSAodW1hdHJpeF9TMV9jMF9jMCAqIHZlYzMoXzI2
X3RtcF8xX2Nvb3JkcyArIF8yOV9zLnogKiB1ZGlyX1MxX2MwLCAxLjApKS54eTsKICA4NAloaWdo
cCB2ZWMyIF8zNV9zdWJzZXRDb29yZDsKICA4NQlfMzVfc3Vic2V0Q29vcmQueCA9IF8zNF9pbkNv
b3JkLng7CiAgODYJXzM1X3N1YnNldENvb3JkLnkgPSBfMzRfaW5Db29yZC55OwogIDg3CWhpZ2hw
IHZlYzIgXzM2X2NsYW1wZWRDb29yZCA9IGNsYW1wKF8zNV9zdWJzZXRDb29yZCwgdWNsYW1wX1Mx
X2MwX2MwX2MwLnh5LCB1Y2xhbXBfUzFfYzBfYzBfYzAuencpOwogIDg4CW1lZGl1bXAgdmVjNCBf
MzdfdGV4dHVyZUNvbG9yID0gdGV4dHVyZTJEKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfMzZfY2xh
bXBlZENvb3JkLCAtMC40NzUpOwogIDg5CV8yN19zdW0gKz0gXzI5X3MudyAqIF8zN190ZXh0dXJl
Q29sb3I7CiAgOTAJfQogIDkxCW1lZGl1bXAgdmVjNCBvdXRwdXRfUzEgPSBfMjdfc3VtOwogIDky
CXsKICA5MwlnbF9GcmFnQ29sb3IgPSBvdXRwdXRfUzE7CiAgOTQJfQogIDk1CX0KICA5NgkKICA5
NwkKRXJyb3JzOgplcnJvcjogRXhjZWVkZWQgbWF4IG5yIGluZGlyZWN0IHRleHR1cmUgbG9va3Vw
cyAoNS80KQoKRmFpbGVkIHRvIGNyZWF0ZSBETUEtQlVGIHRleHR1cmUgb2Ygc2l6ZSAxMDI0eDY5
MzogVW5zdXBwb3J0ZWQgZG1hYnVmIGZvcm1hdDogWFIyNDoweGZmZmZmZmZmZmZmZmZmClNoYWRl
ciBjb21waWxhdGlvbiBlcnJvcgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgMQkvLyBWZXJ0
ZXggU0tTTAogICAyCXVuaWZvcm0gZmxvYXQ0IHNrX1JUQWRqdXN0O3VuaWZvcm0gZmxvYXQzeDMg
dW1hdHJpeF9TMTtpbiBmbG9hdDIgcG9zaXRpb247aW4gaGFsZjQgY29sb3I7aW4gZmxvYXQyIGxv
Y2FsQ29vcmQ7b3V0IGhhbGY0IHZjb2xvcl9TMDtvdXQgZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jk
c18yX1MwO3ZvaWQgbWFpbigpIHsvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFH
ZW9tZXRyeVByb2Nlc3NvcgogICAzCXZjb2xvcl9TMCA9IGNvbG9yO3NrX1Bvc2l0aW9uID0gcG9z
aXRpb24ueHkwMTt7CiAgIDQJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAgPSAodW1hdHJpeF9TMSAq
IGxvY2FsQ29vcmQueHkxKS54eTsKICAgNQl9CiAgIDYJfQogICA3CS8vIEZyYWdtZW50IFNLU0wK
ICAgOAljb25zdCBpbnQga01heExvb3BMaW1pdF9TMV9jMCA9IDQ7CiAgIDkJdW5pZm9ybSBmbG9h
dDQgdWNsYW1wX1MxX2MwX2MwX2MwO3VuaWZvcm0gZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDt1
bmlmb3JtIGhhbGY0IHVvZmZzZXRzQW5kS2VybmVsX1MxX2MwWzE0XTt1bmlmb3JtIGhhbGYyIHVk
aXJfUzFfYzA7dW5pZm9ybSBmbG9hdDN4MyB1bWF0cml4X1MxO3NhbXBsZXIyRCB1VGV4dHVyZVNh
bXBsZXJfMF9TMTsKICAxMAlpbiBoYWxmNCB2Y29sb3JfUzA7aW4gZmxvYXQyIHZUcmFuc2Zvcm1l
ZENvb3Jkc18yX1MwO2hhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0
LCBmbG9hdDIgX2Nvb3JkcykgewogIDExCWZsb2F0MiBpbkNvb3JkID0gX2Nvb3JkcztmbG9hdDIg
c3Vic2V0Q29vcmQ7c3Vic2V0Q29vcmQueCA9IGluQ29vcmQueDtzdWJzZXRDb29yZC55ID0gaW5D
b29yZC55O2Zsb2F0MiBjbGFtcGVkQ29vcmQ7Y2xhbXBlZENvb3JkID0gY2xhbXAoc3Vic2V0Q29v
cmQsIHVjbGFtcF9TMV9jMF9jMF9jMC54eSwgdWNsYW1wX1MxX2MwX2MwX2MwLnp3KTtoYWxmNCB0
ZXh0dXJlQ29sb3IgPSBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIGNsYW1wZWRDb29yZCk7
cmV0dXJuIHRleHR1cmVDb2xvcjt9CiAgMTIJCiAgMTMJaGFsZjQgTWF0cml4RWZmZWN0X1MxX2Mw
X2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIHsKICAxNAlyZXR1cm4gVGV4dHVyZUVm
ZmVjdF9TMV9jMF9jMF9jMChfaW5wdXQsICgodW1hdHJpeF9TMV9jMF9jMCkgKiBfY29vcmRzLnh5
MSkueHkpOwogIDE1CX0KICAxNgkKICAxNwloYWxmNCBydW50aW1lX3NoYWRlcl9TMV9jMChoYWxm
NCBfaW5wdXQpIHsKICAxOAloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKICAxOQlmbG9h
dDIgX3RtcF8xX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwogIDIwCWhhbGY0IHN1
bSA9IGhhbGY0KDAuMCk7CiAgMjEJZm9yIChpbnQgaSA9IDA7aSA8IGtNYXhMb29wTGltaXRfUzFf
YzA7ICsraSkgewogIDIyCWhhbGY0IHMgPSB1b2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtpXTsKICAy
MwlzdW0gKz0gcy55ICogTWF0cml4RWZmZWN0X1MxX2MwX2MwKF90bXBfMF9pbkNvbG9yLCBfdG1w
XzFfY29vcmRzICsgZmxvYXQyKHMueCAqIHVkaXJfUzFfYzApKTsKICAyNAlzdW0gKz0gcy53ICog
TWF0cml4RWZmZWN0X1MxX2MwX2MwKF90bXBfMF9pbkNvbG9yLCBfdG1wXzFfY29vcmRzICsgZmxv
YXQyKHMueiAqIHVkaXJfUzFfYzApKTsKICAyNQl9CiAgMjYJcmV0dXJuIGhhbGY0KHN1bSk7CiAg
MjcJfQogIDI4CQogIDI5CWhhbGY0IE1hdHJpeEVmZmVjdF9TMShoYWxmNCBfaW5wdXQpIHsKICAz
MAlyZXR1cm4gcnVudGltZV9zaGFkZXJfUzFfYzAoX2lucHV0KTsKICAzMQl9CiAgMzIJCiAgMzMJ
dm9pZCBtYWluKCkgey8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3Nvcgog
IDM0CWhhbGY0IG91dHB1dENvbG9yX1MwO291dHB1dENvbG9yX1MwID0gdmNvbG9yX1MwO2NvbnN0
IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7aGFsZjQgb3V0cHV0X1MxO291dHB1
dF9TMSA9IE1hdHJpeEVmZmVjdF9TMShvdXRwdXRDb2xvcl9TMCk7eyAvLyBYZmVyIFByb2Nlc3Nv
cjogUG9ydGVyIER1ZmYKICAzNQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3Zl
cmFnZV9TMDt9fQogIDM2CS8vIFZlcnRleCBHTFNMCiAgMzcJI3ZlcnNpb24gMTAwCiAgMzgJCiAg
MzkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CiAgNDAJcHJlY2lzaW9uIG1lZGl1bXAgc2FtcGxl
cjJEOwogIDQxCXVuaWZvcm0gaGlnaHAgdmVjNCBza19SVEFkanVzdDsKICA0Mgl1bmlmb3JtIGhp
Z2hwIG1hdDMgdW1hdHJpeF9TMTsKICA0MwlhdHRyaWJ1dGUgaGlnaHAgdmVjMiBwb3NpdGlvbjsK
ICA0NAlhdHRyaWJ1dGUgbWVkaXVtcCB2ZWM0IGNvbG9yOwogIDQ1CWF0dHJpYnV0ZSBoaWdocCB2
ZWMyIGxvY2FsQ29vcmQ7CiAgNDYJdmFyeWluZyBtZWRpdW1wIHZlYzQgdmNvbG9yX1MwOwogIDQ3
CXZhcnlpbmcgaGlnaHAgdmVjMiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKICA0OAl2b2lkIG1h
aW4oKSB7CiAgNDkJdmNvbG9yX1MwID0gY29sb3I7CiAgNTAJZ2xfUG9zaXRpb24gPSB2ZWM0KHBv
c2l0aW9uLCAwLjAsIDEuMCk7CiAgNTEJewogIDUyCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0g
KHVtYXRyaXhfUzEgKiB2ZWMzKGxvY2FsQ29vcmQsIDEuMCkpLnh5OwogIDUzCX0KICA1NAlnbF9Q
b3NpdGlvbiA9IHZlYzQoZ2xfUG9zaXRpb24ueHkgKiBza19SVEFkanVzdC54eiArIGdsX1Bvc2l0
aW9uLnd3ICogc2tfUlRBZGp1c3QueXcsIDAuMCwgZ2xfUG9zaXRpb24udyk7CiAgNTUJfQogIDU2
CQogIDU3CS8vIEZyYWdtZW50IEdMU0wKICA1OAkjdmVyc2lvbiAxMDAKICA1OQkKICA2MAlwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKICA2MQlwcmVjaXNpb24gbWVkaXVtcCBzYW1wbGVyMkQ7CiAg
NjIJY29uc3QgaGlnaHAgaW50IGtNYXhMb29wTGltaXRfUzFfYzAgPSA0OwogIDYzCXVuaWZvcm0g
aGlnaHAgdmVjNCB1Y2xhbXBfUzFfYzBfYzBfYzA7CiAgNjQJdW5pZm9ybSBoaWdocCBtYXQzIHVt
YXRyaXhfUzFfYzBfYzA7CiAgNjUJdW5pZm9ybSBtZWRpdW1wIHZlYzQgdW9mZnNldHNBbmRLZXJu
ZWxfUzFfYzBbMTRdOwogIDY2CXVuaWZvcm0gbWVkaXVtcCB2ZWMyIHVkaXJfUzFfYzA7CiAgNjcJ
dW5pZm9ybSBoaWdocCBtYXQzIHVtYXRyaXhfUzE7CiAgNjgJdW5pZm9ybSBzYW1wbGVyMkQgdVRl
eHR1cmVTYW1wbGVyXzBfUzE7CiAgNjkJdmFyeWluZyBtZWRpdW1wIHZlYzQgdmNvbG9yX1MwOwog
IDcwCXZhcnlpbmcgaGlnaHAgdmVjMiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKICA3MQl2b2lk
IG1haW4oKSB7CiAgNzIJaGlnaHAgdmVjMiBfMjZfdG1wXzFfY29vcmRzID0gdlRyYW5zZm9ybWVk
Q29vcmRzXzJfUzA7CiAgNzMJbWVkaXVtcCB2ZWM0IF8yN19zdW0gPSB2ZWM0KDAuMCk7CiAgNzQJ
Zm9yIChoaWdocCBpbnQgXzI4X2kgPSAwO18yOF9pIDwga01heExvb3BMaW1pdF9TMV9jMDsgKytf
MjhfaSkgewogIDc1CW1lZGl1bXAgdmVjNCBfMjlfcyA9IHVvZmZzZXRzQW5kS2VybmVsX1MxX2Mw
W18yOF9pXTsKICA3NgloaWdocCB2ZWMyIF8zMF9pbkNvb3JkID0gKHVtYXRyaXhfUzFfYzBfYzAg
KiB2ZWMzKF8yNl90bXBfMV9jb29yZHMgKyBfMjlfcy54ICogdWRpcl9TMV9jMCwgMS4wKSkueHk7
CiAgNzcJaGlnaHAgdmVjMiBfMzFfc3Vic2V0Q29vcmQ7CiAgNzgJXzMxX3N1YnNldENvb3JkLngg
PSBfMzBfaW5Db29yZC54OwogIDc5CV8zMV9zdWJzZXRDb29yZC55ID0gXzMwX2luQ29vcmQueTsK
ICA4MAloaWdocCB2ZWMyIF8zMl9jbGFtcGVkQ29vcmQgPSBjbGFtcChfMzFfc3Vic2V0Q29vcmQs
IHVjbGFtcF9TMV9jMF9jMF9jMC54eSwgdWNsYW1wX1MxX2MwX2MwX2MwLnp3KTsKICA4MQltZWRp
dW1wIHZlYzQgXzMzX3RleHR1cmVDb2xvciA9IHRleHR1cmUyRCh1VGV4dHVyZVNhbXBsZXJfMF9T
MSwgXzMyX2NsYW1wZWRDb29yZCwgLTAuNDc1KTsKICA4MglfMjdfc3VtICs9IF8yOV9zLnkgKiBf
MzNfdGV4dHVyZUNvbG9yOwogIDgzCWhpZ2hwIHZlYzIgXzM0X2luQ29vcmQgPSAodW1hdHJpeF9T
MV9jMF9jMCAqIHZlYzMoXzI2X3RtcF8xX2Nvb3JkcyArIF8yOV9zLnogKiB1ZGlyX1MxX2MwLCAx
LjApKS54eTsKICA4NAloaWdocCB2ZWMyIF8zNV9zdWJzZXRDb29yZDsKICA4NQlfMzVfc3Vic2V0
Q29vcmQueCA9IF8zNF9pbkNvb3JkLng7CiAgODYJXzM1X3N1YnNldENvb3JkLnkgPSBfMzRfaW5D
b29yZC55OwogIDg3CWhpZ2hwIHZlYzIgXzM2X2NsYW1wZWRDb29yZCA9IGNsYW1wKF8zNV9zdWJz
ZXRDb29yZCwgdWNsYW1wX1MxX2MwX2MwX2MwLnh5LCB1Y2xhbXBfUzFfYzBfYzBfYzAuencpOwog
IDg4CW1lZGl1bXAgdmVjNCBfMzdfdGV4dHVyZUNvbG9yID0gdGV4dHVyZTJEKHVUZXh0dXJlU2Ft
cGxlcl8wX1MxLCBfMzZfY2xhbXBlZENvb3JkLCAtMC40NzUpOwogIDg5CV8yN19zdW0gKz0gXzI5
X3MudyAqIF8zN190ZXh0dXJlQ29sb3I7CiAgOTAJfQogIDkxCW1lZGl1bXAgdmVjNCBvdXRwdXRf
UzEgPSBfMjdfc3VtOwogIDkyCXsKICA5MwlnbF9GcmFnQ29sb3IgPSBvdXRwdXRfUzE7CiAgOTQJ
fQogIDk1CX0KICA5NgkKICA5NwkKRXJyb3JzOgplcnJvcjogRXhjZWVkZWQgbWF4IG5yIGluZGly
ZWN0IHRleHR1cmUgbG9va3VwcyAoOS80KQoKU2hhZGVyIGNvbXBpbGF0aW9uIGVycm9yCi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogICAxCS8vIFZlcnRleCBTS1NMCiAgIDIJdW5pZm9ybSBmbG9h
dDQgc2tfUlRBZGp1c3Q7dW5pZm9ybSBmbG9hdDN4MyB1bWF0cml4X1MxO2luIGZsb2F0MiBwb3Np
dGlvbjtpbiBoYWxmNCBjb2xvcjtpbiBmbG9hdDIgbG9jYWxDb29yZDtvdXQgaGFsZjQgdmNvbG9y
X1MwO291dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7dm9pZCBtYWluKCkgey8vIFBy
aW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCiAgIDMJdmNv
bG9yX1MwID0gY29sb3I7c2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxO3sKICAgNAl2VHJhbnNm
b3JtZWRDb29yZHNfMl9TMCA9ICh1bWF0cml4X1MxICogbG9jYWxDb29yZC54eTEpLnh5OwogICA1
CX0KICAgNgl9CiAgIDcJLy8gRnJhZ21lbnQgU0tTTAogICA4CWNvbnN0IGludCBrTWF4TG9vcExp
bWl0X1MxX2MwID0gNDsKICAgOQl1bmlmb3JtIGZsb2F0NCB1Y2xhbXBfUzFfYzBfYzBfYzA7dW5p
Zm9ybSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwO3VuaWZvcm0gaGFsZjQgdW9mZnNldHNBbmRL
ZXJuZWxfUzFfYzBbMTRdO3VuaWZvcm0gaGFsZjIgdWRpcl9TMV9jMDt1bmlmb3JtIGZsb2F0M3gz
IHVtYXRyaXhfUzE7c2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwogIDEwCWluIGhhbGY0
IHZjb2xvcl9TMDtpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7aGFsZjQgVGV4dHVy
ZUVmZmVjdF9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSB7CiAgMTEJ
ZmxvYXQyIGluQ29vcmQgPSBfY29vcmRzO2Zsb2F0MiBzdWJzZXRDb29yZDtzdWJzZXRDb29yZC54
ID0gaW5Db29yZC54O3N1YnNldENvb3JkLnkgPSBpbkNvb3JkLnk7ZmxvYXQyIGNsYW1wZWRDb29y
ZDtjbGFtcGVkQ29vcmQgPSBjbGFtcChzdWJzZXRDb29yZCwgdWNsYW1wX1MxX2MwX2MwX2MwLnh5
LCB1Y2xhbXBfUzFfYzBfYzBfYzAuencpO2hhbGY0IHRleHR1cmVDb2xvciA9IHNhbXBsZSh1VGV4
dHVyZVNhbXBsZXJfMF9TMSwgY2xhbXBlZENvb3JkKTtyZXR1cm4gdGV4dHVyZUNvbG9yO30KICAx
MgkKICAxMwloYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIg
X2Nvb3JkcykgewogIDE0CXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKF9pbnB1dCwg
KCh1bWF0cml4X1MxX2MwX2MwKSAqIF9jb29yZHMueHkxKS54eSk7CiAgMTUJfQogIDE2CQogIDE3
CWhhbGY0IHJ1bnRpbWVfc2hhZGVyX1MxX2MwKGhhbGY0IF9pbnB1dCkgewogIDE4CWhhbGY0IF90
bXBfMF9pbkNvbG9yID0gX2lucHV0OwogIDE5CWZsb2F0MiBfdG1wXzFfY29vcmRzID0gdlRyYW5z
Zm9ybWVkQ29vcmRzXzJfUzA7CiAgMjAJaGFsZjQgc3VtID0gaGFsZjQoMC4wKTsKICAyMQlmb3Ig
KGludCBpID0gMDtpIDwga01heExvb3BMaW1pdF9TMV9jMDsgKytpKSB7CiAgMjIJaGFsZjQgcyA9
IHVvZmZzZXRzQW5kS2VybmVsX1MxX2MwW2ldOwogIDIzCXN1bSArPSBzLnkgKiBNYXRyaXhFZmZl
Y3RfUzFfYzBfYzAoX3RtcF8wX2luQ29sb3IsIF90bXBfMV9jb29yZHMgKyBmbG9hdDIocy54ICog
dWRpcl9TMV9jMCkpOwogIDI0CXN1bSArPSBzLncgKiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX3Rt
cF8wX2luQ29sb3IsIF90bXBfMV9jb29yZHMgKyBmbG9hdDIocy56ICogdWRpcl9TMV9jMCkpOwog
IDI1CX0KICAyNglyZXR1cm4gaGFsZjQoc3VtKTsKICAyNwl9CiAgMjgJCiAgMjkJaGFsZjQgTWF0
cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgewogIDMwCXJldHVybiBydW50aW1lX3NoYWRlcl9T
MV9jMChfaW5wdXQpOwogIDMxCX0KICAzMgkKICAzMwl2b2lkIG1haW4oKSB7Ly8gU3RhZ2UgMCwg
UXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCiAgMzQJaGFsZjQgb3V0cHV0Q29sb3JfUzA7
b3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7Y29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAg
PSBoYWxmNCgxKTtoYWxmNCBvdXRwdXRfUzE7b3V0cHV0X1MxID0gTWF0cml4RWZmZWN0X1MxKG91
dHB1dENvbG9yX1MwKTt7IC8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgogIDM1CXNrX0Zy
YWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwO319CiAgMzYJLy8gVmVydGV4
IEdMU0wKICAzNwkjdmVyc2lvbiAxMDAKICAzOAkKICAzOQlwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKICA0MAlwcmVjaXNpb24gbWVkaXVtcCBzYW1wbGVyMkQ7CiAgNDEJdW5pZm9ybSBoaWdocCB2
ZWM0IHNrX1JUQWRqdXN0OwogIDQyCXVuaWZvcm0gaGlnaHAgbWF0MyB1bWF0cml4X1MxOwogIDQz
CWF0dHJpYnV0ZSBoaWdocCB2ZWMyIHBvc2l0aW9uOwogIDQ0CWF0dHJpYnV0ZSBtZWRpdW1wIHZl
YzQgY29sb3I7CiAgNDUJYXR0cmlidXRlIGhpZ2hwIHZlYzIgbG9jYWxDb29yZDsKICA0Ngl2YXJ5
aW5nIG1lZGl1bXAgdmVjNCB2Y29sb3JfUzA7CiAgNDcJdmFyeWluZyBoaWdocCB2ZWMyIHZUcmFu
c2Zvcm1lZENvb3Jkc18yX1MwOwogIDQ4CXZvaWQgbWFpbigpIHsKICA0OQl2Y29sb3JfUzAgPSBj
b2xvcjsKICA1MAlnbF9Qb3NpdGlvbiA9IHZlYzQocG9zaXRpb24sIDAuMCwgMS4wKTsKICA1MQl7
CiAgNTIJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAgPSAodW1hdHJpeF9TMSAqIHZlYzMobG9jYWxD
b29yZCwgMS4wKSkueHk7CiAgNTMJfQogIDU0CWdsX1Bvc2l0aW9uID0gdmVjNChnbF9Qb3NpdGlv
bi54eSAqIHNrX1JUQWRqdXN0Lnh6ICsgZ2xfUG9zaXRpb24ud3cgKiBza19SVEFkanVzdC55dywg
MC4wLCBnbF9Qb3NpdGlvbi53KTsKICA1NQl9CiAgNTYJCiAgNTcJLy8gRnJhZ21lbnQgR0xTTAog
IDU4CSN2ZXJzaW9uIDEwMAogIDU5CQogIDYwCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwogIDYx
CXByZWNpc2lvbiBtZWRpdW1wIHNhbXBsZXIyRDsKICA2Mgljb25zdCBoaWdocCBpbnQga01heExv
b3BMaW1pdF9TMV9jMCA9IDQ7CiAgNjMJdW5pZm9ybSBoaWdocCB2ZWM0IHVjbGFtcF9TMV9jMF9j
MF9jMDsKICA2NAl1bmlmb3JtIGhpZ2hwIG1hdDMgdW1hdHJpeF9TMV9jMF9jMDsKICA2NQl1bmlm
b3JtIG1lZGl1bXAgdmVjNCB1b2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFsxNF07CiAgNjYJdW5pZm9y
bSBtZWRpdW1wIHZlYzIgdWRpcl9TMV9jMDsKICA2Nwl1bmlmb3JtIGhpZ2hwIG1hdDMgdW1hdHJp
eF9TMTsKICA2OAl1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKICA2OQl2
YXJ5aW5nIG1lZGl1bXAgdmVjNCB2Y29sb3JfUzA7CiAgNzAJdmFyeWluZyBoaWdocCB2ZWMyIHZU
cmFuc2Zvcm1lZENvb3Jkc18yX1MwOwogIDcxCXZvaWQgbWFpbigpIHsKICA3MgloaWdocCB2ZWMy
IF8yNl90bXBfMV9jb29yZHMgPSB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKICA3MwltZWRpdW1w
IHZlYzQgXzI3X3N1bSA9IHZlYzQoMC4wKTsKICA3NAlmb3IgKGhpZ2hwIGludCBfMjhfaSA9IDA7
XzI4X2kgPCBrTWF4TG9vcExpbWl0X1MxX2MwOyArK18yOF9pKSB7CiAgNzUJbWVkaXVtcCB2ZWM0
IF8yOV9zID0gdW9mZnNldHNBbmRLZXJuZWxfUzFfYzBbXzI4X2ldOwogIDc2CWhpZ2hwIHZlYzIg
XzMwX2luQ29vcmQgPSAodW1hdHJpeF9TMV9jMF9jMCAqIHZlYzMoXzI2X3RtcF8xX2Nvb3JkcyAr
IF8yOV9zLnggKiB1ZGlyX1MxX2MwLCAxLjApKS54eTsKICA3NwloaWdocCB2ZWMyIF8zMV9zdWJz
ZXRDb29yZDsKICA3OAlfMzFfc3Vic2V0Q29vcmQueCA9IF8zMF9pbkNvb3JkLng7CiAgNzkJXzMx
X3N1YnNldENvb3JkLnkgPSBfMzBfaW5Db29yZC55OwogIDgwCWhpZ2hwIHZlYzIgXzMyX2NsYW1w
ZWRDb29yZCA9IGNsYW1wKF8zMV9zdWJzZXRDb29yZCwgdWNsYW1wX1MxX2MwX2MwX2MwLnh5LCB1
Y2xhbXBfUzFfYzBfYzBfYzAuencpOwogIDgxCW1lZGl1bXAgdmVjNCBfMzNfdGV4dHVyZUNvbG9y
ID0gdGV4dHVyZTJEKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfMzJfY2xhbXBlZENvb3JkLCAtMC40
NzUpOwogIDgyCV8yN19zdW0gKz0gXzI5X3MueSAqIF8zM190ZXh0dXJlQ29sb3I7CiAgODMJaGln
aHAgdmVjMiBfMzRfaW5Db29yZCA9ICh1bWF0cml4X1MxX2MwX2MwICogdmVjMyhfMjZfdG1wXzFf
Y29vcmRzICsgXzI5X3MueiAqIHVkaXJfUzFfYzAsIDEuMCkpLnh5OwogIDg0CWhpZ2hwIHZlYzIg
XzM1X3N1YnNldENvb3JkOwogIDg1CV8zNV9zdWJzZXRDb29yZC54ID0gXzM0X2luQ29vcmQueDsK
ICA4NglfMzVfc3Vic2V0Q29vcmQueSA9IF8zNF9pbkNvb3JkLnk7CiAgODcJaGlnaHAgdmVjMiBf
MzZfY2xhbXBlZENvb3JkID0gY2xhbXAoXzM1X3N1YnNldENvb3JkLCB1Y2xhbXBfUzFfYzBfYzBf
YzAueHksIHVjbGFtcF9TMV9jMF9jMF9jMC56dyk7CiAgODgJbWVkaXVtcCB2ZWM0IF8zN190ZXh0
dXJlQ29sb3IgPSB0ZXh0dXJlMkQodVRleHR1cmVTYW1wbGVyXzBfUzEsIF8zNl9jbGFtcGVkQ29v
cmQsIC0wLjQ3NSk7CiAgODkJXzI3X3N1bSArPSBfMjlfcy53ICogXzM3X3RleHR1cmVDb2xvcjsK
ICA5MAl9CiAgOTEJbWVkaXVtcCB2ZWM0IG91dHB1dF9TMSA9IF8yN19zdW07CiAgOTIJewogIDkz
CWdsX0ZyYWdDb2xvciA9IG91dHB1dF9TMTsKICA5NAl9CiAgOTUJfQogIDk2CQogIDk3CQpFcnJv
cnM6CmVycm9yOiBFeGNlZWRlZCBtYXggbnIgaW5kaXJlY3QgdGV4dHVyZSBsb29rdXBzICg5LzQp
CgpGYWlsZWQgdG8gY3JlYXRlIERNQS1CVUYgdGV4dHVyZSBvZiBzaXplIDEwMjR4NjkzOiBVbnN1
cHBvcnRlZCBkbWFidWYgZm9ybWF0OiBYUjI0OjB4ZmZmZmZmZmZmZmZmZmYKU2hhZGVyIGNvbXBp
bGF0aW9uIGVycm9yCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAxCS8vIFZlcnRleCBTS1NM
CiAgIDIJdW5pZm9ybSBmbG9hdDQgc2tfUlRBZGp1c3Q7dW5pZm9ybSBmbG9hdDN4MyB1bWF0cml4
X1MxO2luIGZsb2F0MiBwb3NpdGlvbjtpbiBoYWxmNCBjb2xvcjtpbiBmbG9hdDIgbG9jYWxDb29y
ZDtvdXQgaGFsZjQgdmNvbG9yX1MwO291dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7
dm9pZCBtYWluKCkgey8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5
UHJvY2Vzc29yCiAgIDMJdmNvbG9yX1MwID0gY29sb3I7c2tfUG9zaXRpb24gPSBwb3NpdGlvbi54
eTAxO3sKICAgNAl2VHJhbnNmb3JtZWRDb29yZHNfMl9TMCA9ICh1bWF0cml4X1MxICogbG9jYWxD
b29yZC54eTEpLnh5OwogICA1CX0KICAgNgl9CiAgIDcJLy8gRnJhZ21lbnQgU0tTTAogICA4CWNv
bnN0IGludCBrTWF4TG9vcExpbWl0X1MxX2MwID0gMjsKICAgOQl1bmlmb3JtIGZsb2F0NCB1Y2xh
bXBfUzFfYzBfYzBfYzA7dW5pZm9ybSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwO3VuaWZvcm0g
aGFsZjQgdW9mZnNldHNBbmRLZXJuZWxfUzFfYzBbMTRdO3VuaWZvcm0gaGFsZjIgdWRpcl9TMV9j
MDt1bmlmb3JtIGZsb2F0M3gzIHVtYXRyaXhfUzE7c2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8w
X1MxOwogIDEwCWluIGhhbGY0IHZjb2xvcl9TMDtpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRz
XzJfUzA7aGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0
MiBfY29vcmRzKSB7CiAgMTEJZmxvYXQyIGluQ29vcmQgPSBfY29vcmRzO2Zsb2F0MiBzdWJzZXRD
b29yZDtzdWJzZXRDb29yZC54ID0gaW5Db29yZC54O3N1YnNldENvb3JkLnkgPSBpbkNvb3JkLnk7
ZmxvYXQyIGNsYW1wZWRDb29yZDtjbGFtcGVkQ29vcmQgPSBjbGFtcChzdWJzZXRDb29yZCwgdWNs
YW1wX1MxX2MwX2MwX2MwLnh5LCB1Y2xhbXBfUzFfYzBfYzBfYzAuencpO2hhbGY0IHRleHR1cmVD
b2xvciA9IHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgY2xhbXBlZENvb3JkKTtyZXR1cm4g
dGV4dHVyZUNvbG9yO30KICAxMgkKICAxMwloYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoaGFs
ZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgewogIDE0CXJldHVybiBUZXh0dXJlRWZmZWN0X1Mx
X2MwX2MwX2MwKF9pbnB1dCwgKCh1bWF0cml4X1MxX2MwX2MwKSAqIF9jb29yZHMueHkxKS54eSk7
CiAgMTUJfQogIDE2CQogIDE3CWhhbGY0IHJ1bnRpbWVfc2hhZGVyX1MxX2MwKGhhbGY0IF9pbnB1
dCkgewogIDE4CWhhbGY0IF90bXBfMF9pbkNvbG9yID0gX2lucHV0OwogIDE5CWZsb2F0MiBfdG1w
XzFfY29vcmRzID0gdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CiAgMjAJaGFsZjQgc3VtID0gaGFs
ZjQoMC4wKTsKICAyMQlmb3IgKGludCBpID0gMDtpIDwga01heExvb3BMaW1pdF9TMV9jMDsgKytp
KSB7CiAgMjIJaGFsZjQgcyA9IHVvZmZzZXRzQW5kS2VybmVsX1MxX2MwW2ldOwogIDIzCXN1bSAr
PSBzLnkgKiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX3RtcF8wX2luQ29sb3IsIF90bXBfMV9jb29y
ZHMgKyBmbG9hdDIocy54ICogdWRpcl9TMV9jMCkpOwogIDI0CXN1bSArPSBzLncgKiBNYXRyaXhF
ZmZlY3RfUzFfYzBfYzAoX3RtcF8wX2luQ29sb3IsIF90bXBfMV9jb29yZHMgKyBmbG9hdDIocy56
ICogdWRpcl9TMV9jMCkpOwogIDI1CX0KICAyNglyZXR1cm4gaGFsZjQoc3VtKTsKICAyNwl9CiAg
MjgJCiAgMjkJaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgewogIDMwCXJldHVy
biBydW50aW1lX3NoYWRlcl9TMV9jMChfaW5wdXQpOwogIDMxCX0KICAzMgkKICAzMwl2b2lkIG1h
aW4oKSB7Ly8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCiAgMzQJaGFs
ZjQgb3V0cHV0Q29sb3JfUzA7b3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7Y29uc3QgaGFsZjQg
b3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTtoYWxmNCBvdXRwdXRfUzE7b3V0cHV0X1MxID0g
TWF0cml4RWZmZWN0X1MxKG91dHB1dENvbG9yX1MwKTt7IC8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0
ZXIgRHVmZgogIDM1CXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1Mw
O319CiAgMzYJLy8gVmVydGV4IEdMU0wKICAzNwkjdmVyc2lvbiAxMDAKICAzOAkKICAzOQlwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKICA0MAlwcmVjaXNpb24gbWVkaXVtcCBzYW1wbGVyMkQ7CiAg
NDEJdW5pZm9ybSBoaWdocCB2ZWM0IHNrX1JUQWRqdXN0OwogIDQyCXVuaWZvcm0gaGlnaHAgbWF0
MyB1bWF0cml4X1MxOwogIDQzCWF0dHJpYnV0ZSBoaWdocCB2ZWMyIHBvc2l0aW9uOwogIDQ0CWF0
dHJpYnV0ZSBtZWRpdW1wIHZlYzQgY29sb3I7CiAgNDUJYXR0cmlidXRlIGhpZ2hwIHZlYzIgbG9j
YWxDb29yZDsKICA0Ngl2YXJ5aW5nIG1lZGl1bXAgdmVjNCB2Y29sb3JfUzA7CiAgNDcJdmFyeWlu
ZyBoaWdocCB2ZWMyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwogIDQ4CXZvaWQgbWFpbigpIHsK
ICA0OQl2Y29sb3JfUzAgPSBjb2xvcjsKICA1MAlnbF9Qb3NpdGlvbiA9IHZlYzQocG9zaXRpb24s
IDAuMCwgMS4wKTsKICA1MQl7CiAgNTIJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAgPSAodW1hdHJp
eF9TMSAqIHZlYzMobG9jYWxDb29yZCwgMS4wKSkueHk7CiAgNTMJfQogIDU0CWdsX1Bvc2l0aW9u
ID0gdmVjNChnbF9Qb3NpdGlvbi54eSAqIHNrX1JUQWRqdXN0Lnh6ICsgZ2xfUG9zaXRpb24ud3cg
KiBza19SVEFkanVzdC55dywgMC4wLCBnbF9Qb3NpdGlvbi53KTsKICA1NQl9CiAgNTYJCiAgNTcJ
Ly8gRnJhZ21lbnQgR0xTTAogIDU4CSN2ZXJzaW9uIDEwMAogIDU5CQogIDYwCXByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OwogIDYxCXByZWNpc2lvbiBtZWRpdW1wIHNhbXBsZXIyRDsKICA2Mgljb25z
dCBoaWdocCBpbnQga01heExvb3BMaW1pdF9TMV9jMCA9IDI7CiAgNjMJdW5pZm9ybSBoaWdocCB2
ZWM0IHVjbGFtcF9TMV9jMF9jMF9jMDsKICA2NAl1bmlmb3JtIGhpZ2hwIG1hdDMgdW1hdHJpeF9T
MV9jMF9jMDsKICA2NQl1bmlmb3JtIG1lZGl1bXAgdmVjNCB1b2Zmc2V0c0FuZEtlcm5lbF9TMV9j
MFsxNF07CiAgNjYJdW5pZm9ybSBtZWRpdW1wIHZlYzIgdWRpcl9TMV9jMDsKICA2Nwl1bmlmb3Jt
IGhpZ2hwIG1hdDMgdW1hdHJpeF9TMTsKICA2OAl1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNh
bXBsZXJfMF9TMTsKICA2OQl2YXJ5aW5nIG1lZGl1bXAgdmVjNCB2Y29sb3JfUzA7CiAgNzAJdmFy
eWluZyBoaWdocCB2ZWMyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwogIDcxCXZvaWQgbWFpbigp
IHsKICA3MgloaWdocCB2ZWMyIF8yNl90bXBfMV9jb29yZHMgPSB2VHJhbnNmb3JtZWRDb29yZHNf
Ml9TMDsKICA3MwltZWRpdW1wIHZlYzQgXzI3X3N1bSA9IHZlYzQoMC4wKTsKICA3NAlmb3IgKGhp
Z2hwIGludCBfMjhfaSA9IDA7XzI4X2kgPCBrTWF4TG9vcExpbWl0X1MxX2MwOyArK18yOF9pKSB7
CiAgNzUJbWVkaXVtcCB2ZWM0IF8yOV9zID0gdW9mZnNldHNBbmRLZXJuZWxfUzFfYzBbXzI4X2ld
OwogIDc2CWhpZ2hwIHZlYzIgXzMwX2luQ29vcmQgPSAodW1hdHJpeF9TMV9jMF9jMCAqIHZlYzMo
XzI2X3RtcF8xX2Nvb3JkcyArIF8yOV9zLnggKiB1ZGlyX1MxX2MwLCAxLjApKS54eTsKICA3Nwlo
aWdocCB2ZWMyIF8zMV9zdWJzZXRDb29yZDsKICA3OAlfMzFfc3Vic2V0Q29vcmQueCA9IF8zMF9p
bkNvb3JkLng7CiAgNzkJXzMxX3N1YnNldENvb3JkLnkgPSBfMzBfaW5Db29yZC55OwogIDgwCWhp
Z2hwIHZlYzIgXzMyX2NsYW1wZWRDb29yZCA9IGNsYW1wKF8zMV9zdWJzZXRDb29yZCwgdWNsYW1w
X1MxX2MwX2MwX2MwLnh5LCB1Y2xhbXBfUzFfYzBfYzBfYzAuencpOwogIDgxCW1lZGl1bXAgdmVj
NCBfMzNfdGV4dHVyZUNvbG9yID0gdGV4dHVyZTJEKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfMzJf
Y2xhbXBlZENvb3JkLCAtMC40NzUpOwogIDgyCV8yN19zdW0gKz0gXzI5X3MueSAqIF8zM190ZXh0
dXJlQ29sb3I7CiAgODMJaGlnaHAgdmVjMiBfMzRfaW5Db29yZCA9ICh1bWF0cml4X1MxX2MwX2Mw
ICogdmVjMyhfMjZfdG1wXzFfY29vcmRzICsgXzI5X3MueiAqIHVkaXJfUzFfYzAsIDEuMCkpLnh5
OwogIDg0CWhpZ2hwIHZlYzIgXzM1X3N1YnNldENvb3JkOwogIDg1CV8zNV9zdWJzZXRDb29yZC54
ID0gXzM0X2luQ29vcmQueDsKICA4NglfMzVfc3Vic2V0Q29vcmQueSA9IF8zNF9pbkNvb3JkLnk7
CiAgODcJaGlnaHAgdmVjMiBfMzZfY2xhbXBlZENvb3JkID0gY2xhbXAoXzM1X3N1YnNldENvb3Jk
LCB1Y2xhbXBfUzFfYzBfYzBfYzAueHksIHVjbGFtcF9TMV9jMF9jMF9jMC56dyk7CiAgODgJbWVk
aXVtcCB2ZWM0IF8zN190ZXh0dXJlQ29sb3IgPSB0ZXh0dXJlMkQodVRleHR1cmVTYW1wbGVyXzBf
UzEsIF8zNl9jbGFtcGVkQ29vcmQsIC0wLjQ3NSk7CiAgODkJXzI3X3N1bSArPSBfMjlfcy53ICog
XzM3X3RleHR1cmVDb2xvcjsKICA5MAl9CiAgOTEJbWVkaXVtcCB2ZWM0IG91dHB1dF9TMSA9IF8y
N19zdW07CiAgOTIJewogIDkzCWdsX0ZyYWdDb2xvciA9IG91dHB1dF9TMTsKICA5NAl9CiAgOTUJ
fQogIDk2CQogIDk3CQpFcnJvcnM6CmVycm9yOiBFeGNlZWRlZCBtYXggbnIgaW5kaXJlY3QgdGV4
dHVyZSBsb29rdXBzICg1LzQpCgpTaGFkZXIgY29tcGlsYXRpb24gZXJyb3IKLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiAgIDEJLy8gVmVydGV4IFNLU0wKICAgMgl1bmlmb3JtIGZsb2F0NCBza19S
VEFkanVzdDt1bmlmb3JtIGZsb2F0M3gzIHVtYXRyaXhfUzE7aW4gZmxvYXQyIHBvc2l0aW9uO2lu
IGhhbGY0IGNvbG9yO2luIGZsb2F0MiBsb2NhbENvb3JkO291dCBoYWxmNCB2Y29sb3JfUzA7b3V0
IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDt2b2lkIG1haW4oKSB7Ly8gUHJpbWl0aXZl
IFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKICAgMwl2Y29sb3JfUzAg
PSBjb2xvcjtza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7ewogICA0CXZUcmFuc2Zvcm1lZENv
b3Jkc18yX1MwID0gKHVtYXRyaXhfUzEgKiBsb2NhbENvb3JkLnh5MSkueHk7CiAgIDUJfQogICA2
CX0KICAgNwkvLyBGcmFnbWVudCBTS1NMCiAgIDgJY29uc3QgaW50IGtNYXhMb29wTGltaXRfUzFf
YzAgPSAyOwogICA5CXVuaWZvcm0gZmxvYXQ0IHVjbGFtcF9TMV9jMF9jMF9jMDt1bmlmb3JtIGZs
b2F0M3gzIHVtYXRyaXhfUzFfYzBfYzA7dW5pZm9ybSBoYWxmNCB1b2Zmc2V0c0FuZEtlcm5lbF9T
MV9jMFsxNF07dW5pZm9ybSBoYWxmMiB1ZGlyX1MxX2MwO3VuaWZvcm0gZmxvYXQzeDMgdW1hdHJp
eF9TMTtzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CiAgMTAJaW4gaGFsZjQgdmNvbG9y
X1MwO2luIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDtoYWxmNCBUZXh0dXJlRWZmZWN0
X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIHsKICAxMQlmbG9hdDIg
aW5Db29yZCA9IF9jb29yZHM7ZmxvYXQyIHN1YnNldENvb3JkO3N1YnNldENvb3JkLnggPSBpbkNv
b3JkLng7c3Vic2V0Q29vcmQueSA9IGluQ29vcmQueTtmbG9hdDIgY2xhbXBlZENvb3JkO2NsYW1w
ZWRDb29yZCA9IGNsYW1wKHN1YnNldENvb3JkLCB1Y2xhbXBfUzFfYzBfYzBfYzAueHksIHVjbGFt
cF9TMV9jMF9jMF9jMC56dyk7aGFsZjQgdGV4dHVyZUNvbG9yID0gc2FtcGxlKHVUZXh0dXJlU2Ft
cGxlcl8wX1MxLCBjbGFtcGVkQ29vcmQpO3JldHVybiB0ZXh0dXJlQ29sb3I7fQogIDEyCQogIDEz
CWhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRz
KSB7CiAgMTQJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoX2lucHV0LCAoKHVtYXRy
aXhfUzFfYzBfYzApICogX2Nvb3Jkcy54eTEpLnh5KTsKICAxNQl9CiAgMTYJCiAgMTcJaGFsZjQg
cnVudGltZV9zaGFkZXJfUzFfYzAoaGFsZjQgX2lucHV0KSB7CiAgMTgJaGFsZjQgX3RtcF8wX2lu
Q29sb3IgPSBfaW5wdXQ7CiAgMTkJZmxvYXQyIF90bXBfMV9jb29yZHMgPSB2VHJhbnNmb3JtZWRD
b29yZHNfMl9TMDsKICAyMAloYWxmNCBzdW0gPSBoYWxmNCgwLjApOwogIDIxCWZvciAoaW50IGkg
PSAwO2kgPCBrTWF4TG9vcExpbWl0X1MxX2MwOyArK2kpIHsKICAyMgloYWxmNCBzID0gdW9mZnNl
dHNBbmRLZXJuZWxfUzFfYzBbaV07CiAgMjMJc3VtICs9IHMueSAqIE1hdHJpeEVmZmVjdF9TMV9j
MF9jMChfdG1wXzBfaW5Db2xvciwgX3RtcF8xX2Nvb3JkcyArIGZsb2F0MihzLnggKiB1ZGlyX1Mx
X2MwKSk7CiAgMjQJc3VtICs9IHMudyAqIE1hdHJpeEVmZmVjdF9TMV9jMF9jMChfdG1wXzBfaW5D
b2xvciwgX3RtcF8xX2Nvb3JkcyArIGZsb2F0MihzLnogKiB1ZGlyX1MxX2MwKSk7CiAgMjUJfQog
IDI2CXJldHVybiBoYWxmNChzdW0pOwogIDI3CX0KICAyOAkKICAyOQloYWxmNCBNYXRyaXhFZmZl
Y3RfUzEoaGFsZjQgX2lucHV0KSB7CiAgMzAJcmV0dXJuIHJ1bnRpbWVfc2hhZGVyX1MxX2MwKF9p
bnB1dCk7CiAgMzEJfQogIDMyCQogIDMzCXZvaWQgbWFpbigpIHsvLyBTdGFnZSAwLCBRdWFkUGVy
RWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKICAzNAloYWxmNCBvdXRwdXRDb2xvcl9TMDtvdXRwdXRD
b2xvcl9TMCA9IHZjb2xvcl9TMDtjb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0
KDEpO2hhbGY0IG91dHB1dF9TMTtvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29s
b3JfUzApO3sgLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCiAgMzUJc2tfRnJhZ0NvbG9y
ID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7fX0KICAzNgkvLyBWZXJ0ZXggR0xTTAog
IDM3CSN2ZXJzaW9uIDEwMAogIDM4CQogIDM5CXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwogIDQw
CXByZWNpc2lvbiBtZWRpdW1wIHNhbXBsZXIyRDsKICA0MQl1bmlmb3JtIGhpZ2hwIHZlYzQgc2tf
UlRBZGp1c3Q7CiAgNDIJdW5pZm9ybSBoaWdocCBtYXQzIHVtYXRyaXhfUzE7CiAgNDMJYXR0cmli
dXRlIGhpZ2hwIHZlYzIgcG9zaXRpb247CiAgNDQJYXR0cmlidXRlIG1lZGl1bXAgdmVjNCBjb2xv
cjsKICA0NQlhdHRyaWJ1dGUgaGlnaHAgdmVjMiBsb2NhbENvb3JkOwogIDQ2CXZhcnlpbmcgbWVk
aXVtcCB2ZWM0IHZjb2xvcl9TMDsKICA0Nwl2YXJ5aW5nIGhpZ2hwIHZlYzIgdlRyYW5zZm9ybWVk
Q29vcmRzXzJfUzA7CiAgNDgJdm9pZCBtYWluKCkgewogIDQ5CXZjb2xvcl9TMCA9IGNvbG9yOwog
IDUwCWdsX1Bvc2l0aW9uID0gdmVjNChwb3NpdGlvbiwgMC4wLCAxLjApOwogIDUxCXsKICA1Mgl2
VHJhbnNmb3JtZWRDb29yZHNfMl9TMCA9ICh1bWF0cml4X1MxICogdmVjMyhsb2NhbENvb3JkLCAx
LjApKS54eTsKICA1Mwl9CiAgNTQJZ2xfUG9zaXRpb24gPSB2ZWM0KGdsX1Bvc2l0aW9uLnh5ICog
c2tfUlRBZGp1c3QueHogKyBnbF9Qb3NpdGlvbi53dyAqIHNrX1JUQWRqdXN0Lnl3LCAwLjAsIGds
X1Bvc2l0aW9uLncpOwogIDU1CX0KICA1NgkKICA1NwkvLyBGcmFnbWVudCBHTFNMCiAgNTgJI3Zl
cnNpb24gMTAwCiAgNTkJCiAgNjAJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CiAgNjEJcHJlY2lz
aW9uIG1lZGl1bXAgc2FtcGxlcjJEOwogIDYyCWNvbnN0IGhpZ2hwIGludCBrTWF4TG9vcExpbWl0
X1MxX2MwID0gMjsKICA2Mwl1bmlmb3JtIGhpZ2hwIHZlYzQgdWNsYW1wX1MxX2MwX2MwX2MwOwog
IDY0CXVuaWZvcm0gaGlnaHAgbWF0MyB1bWF0cml4X1MxX2MwX2MwOwogIDY1CXVuaWZvcm0gbWVk
aXVtcCB2ZWM0IHVvZmZzZXRzQW5kS2VybmVsX1MxX2MwWzE0XTsKICA2Ngl1bmlmb3JtIG1lZGl1
bXAgdmVjMiB1ZGlyX1MxX2MwOwogIDY3CXVuaWZvcm0gaGlnaHAgbWF0MyB1bWF0cml4X1MxOwog
IDY4CXVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwogIDY5CXZhcnlpbmcg
bWVkaXVtcCB2ZWM0IHZjb2xvcl9TMDsKICA3MAl2YXJ5aW5nIGhpZ2hwIHZlYzIgdlRyYW5zZm9y
bWVkQ29vcmRzXzJfUzA7CiAgNzEJdm9pZCBtYWluKCkgewogIDcyCWhpZ2hwIHZlYzIgXzI2X3Rt
cF8xX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwogIDczCW1lZGl1bXAgdmVjNCBf
Mjdfc3VtID0gdmVjNCgwLjApOwogIDc0CWZvciAoaGlnaHAgaW50IF8yOF9pID0gMDtfMjhfaSA8
IGtNYXhMb29wTGltaXRfUzFfYzA7ICsrXzI4X2kpIHsKICA3NQltZWRpdW1wIHZlYzQgXzI5X3Mg
PSB1b2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtfMjhfaV07CiAgNzYJaGlnaHAgdmVjMiBfMzBfaW5D
b29yZCA9ICh1bWF0cml4X1MxX2MwX2MwICogdmVjMyhfMjZfdG1wXzFfY29vcmRzICsgXzI5X3Mu
eCAqIHVkaXJfUzFfYzAsIDEuMCkpLnh5OwogIDc3CWhpZ2hwIHZlYzIgXzMxX3N1YnNldENvb3Jk
OwogIDc4CV8zMV9zdWJzZXRDb29yZC54ID0gXzMwX2luQ29vcmQueDsKICA3OQlfMzFfc3Vic2V0
Q29vcmQueSA9IF8zMF9pbkNvb3JkLnk7CiAgODAJaGlnaHAgdmVjMiBfMzJfY2xhbXBlZENvb3Jk
ID0gY2xhbXAoXzMxX3N1YnNldENvb3JkLCB1Y2xhbXBfUzFfYzBfYzBfYzAueHksIHVjbGFtcF9T
MV9jMF9jMF9jMC56dyk7CiAgODEJbWVkaXVtcCB2ZWM0IF8zM190ZXh0dXJlQ29sb3IgPSB0ZXh0
dXJlMkQodVRleHR1cmVTYW1wbGVyXzBfUzEsIF8zMl9jbGFtcGVkQ29vcmQsIC0wLjQ3NSk7CiAg
ODIJXzI3X3N1bSArPSBfMjlfcy55ICogXzMzX3RleHR1cmVDb2xvcjsKICA4MwloaWdocCB2ZWMy
IF8zNF9pbkNvb3JkID0gKHVtYXRyaXhfUzFfYzBfYzAgKiB2ZWMzKF8yNl90bXBfMV9jb29yZHMg
KyBfMjlfcy56ICogdWRpcl9TMV9jMCwgMS4wKSkueHk7CiAgODQJaGlnaHAgdmVjMiBfMzVfc3Vi
c2V0Q29vcmQ7CiAgODUJXzM1X3N1YnNldENvb3JkLnggPSBfMzRfaW5Db29yZC54OwogIDg2CV8z
NV9zdWJzZXRDb29yZC55ID0gXzM0X2luQ29vcmQueTsKICA4NwloaWdocCB2ZWMyIF8zNl9jbGFt
cGVkQ29vcmQgPSBjbGFtcChfMzVfc3Vic2V0Q29vcmQsIHVjbGFtcF9TMV9jMF9jMF9jMC54eSwg
dWNsYW1wX1MxX2MwX2MwX2MwLnp3KTsKICA4OAltZWRpdW1wIHZlYzQgXzM3X3RleHR1cmVDb2xv
ciA9IHRleHR1cmUyRCh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgXzM2X2NsYW1wZWRDb29yZCwgLTAu
NDc1KTsKICA4OQlfMjdfc3VtICs9IF8yOV9zLncgKiBfMzdfdGV4dHVyZUNvbG9yOwogIDkwCX0K
ICA5MQltZWRpdW1wIHZlYzQgb3V0cHV0X1MxID0gXzI3X3N1bTsKICA5Mgl7CiAgOTMJZ2xfRnJh
Z0NvbG9yID0gb3V0cHV0X1MxOwogIDk0CX0KICA5NQl9CiAgOTYJCiAgOTcJCkVycm9yczoKZXJy
b3I6IEV4Y2VlZGVkIG1heCBuciBpbmRpcmVjdCB0ZXh0dXJlIGxvb2t1cHMgKDUvNCkKCkZhaWxl
ZCB0byBjcmVhdGUgRE1BLUJVRiB0ZXh0dXJlIG9mIHNpemUgMTAyNHg2OTM6IFVuc3VwcG9ydGVk
IGRtYWJ1ZiBmb3JtYXQ6IFhSMjQ6MHhmZmZmZmZmZmZmZmZmZgpTaGFkZXIgY29tcGlsYXRpb24g
ZXJyb3IKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIDEJLy8gVmVydGV4IFNLU0wKICAgMgl1
bmlmb3JtIGZsb2F0NCBza19SVEFkanVzdDt1bmlmb3JtIGZsb2F0M3gzIHVtYXRyaXhfUzE7aW4g
ZmxvYXQyIHBvc2l0aW9uO2luIGhhbGY0IGNvbG9yO2luIGZsb2F0MiBsb2NhbENvb3JkO291dCBo
YWxmNCB2Y29sb3JfUzA7b3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDt2b2lkIG1h
aW4oKSB7Ly8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNz
b3IKICAgMwl2Y29sb3JfUzAgPSBjb2xvcjtza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7ewog
ICA0CXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gKHVtYXRyaXhfUzEgKiBsb2NhbENvb3JkLnh5
MSkueHk7CiAgIDUJfQogICA2CX0KICAgNwkvLyBGcmFnbWVudCBTS1NMCiAgIDgJY29uc3QgaW50
IGtNYXhMb29wTGltaXRfUzFfYzAgPSA0OwogICA5CXVuaWZvcm0gZmxvYXQ0IHVjbGFtcF9TMV9j
MF9jMF9jMDt1bmlmb3JtIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzA7dW5pZm9ybSBoYWxmNCB1
b2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFsxNF07dW5pZm9ybSBoYWxmMiB1ZGlyX1MxX2MwO3VuaWZv
cm0gZmxvYXQzeDMgdW1hdHJpeF9TMTtzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CiAg
MTAJaW4gaGFsZjQgdmNvbG9yX1MwO2luIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDto
YWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29y
ZHMpIHsKICAxMQlmbG9hdDIgaW5Db29yZCA9IF9jb29yZHM7ZmxvYXQyIHN1YnNldENvb3JkO3N1
YnNldENvb3JkLnggPSBpbkNvb3JkLng7c3Vic2V0Q29vcmQueSA9IGluQ29vcmQueTtmbG9hdDIg
Y2xhbXBlZENvb3JkO2NsYW1wZWRDb29yZCA9IGNsYW1wKHN1YnNldENvb3JkLCB1Y2xhbXBfUzFf
YzBfYzBfYzAueHksIHVjbGFtcF9TMV9jMF9jMF9jMC56dyk7aGFsZjQgdGV4dHVyZUNvbG9yID0g
c2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBjbGFtcGVkQ29vcmQpO3JldHVybiB0ZXh0dXJl
Q29sb3I7fQogIDEyCQogIDEzCWhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5w
dXQsIGZsb2F0MiBfY29vcmRzKSB7CiAgMTQJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzBfYzBf
YzAoX2lucHV0LCAoKHVtYXRyaXhfUzFfYzBfYzApICogX2Nvb3Jkcy54eTEpLnh5KTsKICAxNQl9
CiAgMTYJCiAgMTcJaGFsZjQgcnVudGltZV9zaGFkZXJfUzFfYzAoaGFsZjQgX2lucHV0KSB7CiAg
MTgJaGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CiAgMTkJZmxvYXQyIF90bXBfMV9jb29y
ZHMgPSB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKICAyMAloYWxmNCBzdW0gPSBoYWxmNCgwLjAp
OwogIDIxCWZvciAoaW50IGkgPSAwO2kgPCBrTWF4TG9vcExpbWl0X1MxX2MwOyArK2kpIHsKICAy
MgloYWxmNCBzID0gdW9mZnNldHNBbmRLZXJuZWxfUzFfYzBbaV07CiAgMjMJc3VtICs9IHMueSAq
IE1hdHJpeEVmZmVjdF9TMV9jMF9jMChfdG1wXzBfaW5Db2xvciwgX3RtcF8xX2Nvb3JkcyArIGZs
b2F0MihzLnggKiB1ZGlyX1MxX2MwKSk7CiAgMjQJc3VtICs9IHMudyAqIE1hdHJpeEVmZmVjdF9T
MV9jMF9jMChfdG1wXzBfaW5Db2xvciwgX3RtcF8xX2Nvb3JkcyArIGZsb2F0MihzLnogKiB1ZGly
X1MxX2MwKSk7CiAgMjUJfQogIDI2CXJldHVybiBoYWxmNChzdW0pOwogIDI3CX0KICAyOAkKICAy
OQloYWxmNCBNYXRyaXhFZmZlY3RfUzEoaGFsZjQgX2lucHV0KSB7CiAgMzAJcmV0dXJuIHJ1bnRp
bWVfc2hhZGVyX1MxX2MwKF9pbnB1dCk7CiAgMzEJfQogIDMyCQogIDMzCXZvaWQgbWFpbigpIHsv
LyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKICAzNAloYWxmNCBvdXRw
dXRDb2xvcl9TMDtvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDtjb25zdCBoYWxmNCBvdXRwdXRD
b3ZlcmFnZV9TMCA9IGhhbGY0KDEpO2hhbGY0IG91dHB1dF9TMTtvdXRwdXRfUzEgPSBNYXRyaXhF
ZmZlY3RfUzEob3V0cHV0Q29sb3JfUzApO3sgLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZm
CiAgMzUJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7fX0KICAz
NgkvLyBWZXJ0ZXggR0xTTAogIDM3CSN2ZXJzaW9uIDEwMAogIDM4CQogIDM5CXByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OwogIDQwCXByZWNpc2lvbiBtZWRpdW1wIHNhbXBsZXIyRDsKICA0MQl1bmlm
b3JtIGhpZ2hwIHZlYzQgc2tfUlRBZGp1c3Q7CiAgNDIJdW5pZm9ybSBoaWdocCBtYXQzIHVtYXRy
aXhfUzE7CiAgNDMJYXR0cmlidXRlIGhpZ2hwIHZlYzIgcG9zaXRpb247CiAgNDQJYXR0cmlidXRl
IG1lZGl1bXAgdmVjNCBjb2xvcjsKICA0NQlhdHRyaWJ1dGUgaGlnaHAgdmVjMiBsb2NhbENvb3Jk
OwogIDQ2CXZhcnlpbmcgbWVkaXVtcCB2ZWM0IHZjb2xvcl9TMDsKICA0Nwl2YXJ5aW5nIGhpZ2hw
IHZlYzIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CiAgNDgJdm9pZCBtYWluKCkgewogIDQ5CXZj
b2xvcl9TMCA9IGNvbG9yOwogIDUwCWdsX1Bvc2l0aW9uID0gdmVjNChwb3NpdGlvbiwgMC4wLCAx
LjApOwogIDUxCXsKICA1Mgl2VHJhbnNmb3JtZWRDb29yZHNfMl9TMCA9ICh1bWF0cml4X1MxICog
dmVjMyhsb2NhbENvb3JkLCAxLjApKS54eTsKICA1Mwl9CiAgNTQJZ2xfUG9zaXRpb24gPSB2ZWM0
KGdsX1Bvc2l0aW9uLnh5ICogc2tfUlRBZGp1c3QueHogKyBnbF9Qb3NpdGlvbi53dyAqIHNrX1JU
QWRqdXN0Lnl3LCAwLjAsIGdsX1Bvc2l0aW9uLncpOwogIDU1CX0KICA1NgkKICA1NwkvLyBGcmFn
bWVudCBHTFNMCiAgNTgJI3ZlcnNpb24gMTAwCiAgNTkJCiAgNjAJcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CiAgNjEJcHJlY2lzaW9uIG1lZGl1bXAgc2FtcGxlcjJEOwogIDYyCWNvbnN0IGhpZ2hw
IGludCBrTWF4TG9vcExpbWl0X1MxX2MwID0gNDsKICA2Mwl1bmlmb3JtIGhpZ2hwIHZlYzQgdWNs
YW1wX1MxX2MwX2MwX2MwOwogIDY0CXVuaWZvcm0gaGlnaHAgbWF0MyB1bWF0cml4X1MxX2MwX2Mw
OwogIDY1CXVuaWZvcm0gbWVkaXVtcCB2ZWM0IHVvZmZzZXRzQW5kS2VybmVsX1MxX2MwWzE0XTsK
ICA2Ngl1bmlmb3JtIG1lZGl1bXAgdmVjMiB1ZGlyX1MxX2MwOwogIDY3CXVuaWZvcm0gaGlnaHAg
bWF0MyB1bWF0cml4X1MxOwogIDY4CXVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8w
X1MxOwogIDY5CXZhcnlpbmcgbWVkaXVtcCB2ZWM0IHZjb2xvcl9TMDsKICA3MAl2YXJ5aW5nIGhp
Z2hwIHZlYzIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CiAgNzEJdm9pZCBtYWluKCkgewogIDcy
CWhpZ2hwIHZlYzIgXzI2X3RtcF8xX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwog
IDczCW1lZGl1bXAgdmVjNCBfMjdfc3VtID0gdmVjNCgwLjApOwogIDc0CWZvciAoaGlnaHAgaW50
IF8yOF9pID0gMDtfMjhfaSA8IGtNYXhMb29wTGltaXRfUzFfYzA7ICsrXzI4X2kpIHsKICA3NQlt
ZWRpdW1wIHZlYzQgXzI5X3MgPSB1b2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtfMjhfaV07CiAgNzYJ
aGlnaHAgdmVjMiBfMzBfaW5Db29yZCA9ICh1bWF0cml4X1MxX2MwX2MwICogdmVjMyhfMjZfdG1w
XzFfY29vcmRzICsgXzI5X3MueCAqIHVkaXJfUzFfYzAsIDEuMCkpLnh5OwogIDc3CWhpZ2hwIHZl
YzIgXzMxX3N1YnNldENvb3JkOwogIDc4CV8zMV9zdWJzZXRDb29yZC54ID0gXzMwX2luQ29vcmQu
eDsKICA3OQlfMzFfc3Vic2V0Q29vcmQueSA9IF8zMF9pbkNvb3JkLnk7CiAgODAJaGlnaHAgdmVj
MiBfMzJfY2xhbXBlZENvb3JkID0gY2xhbXAoXzMxX3N1YnNldENvb3JkLCB1Y2xhbXBfUzFfYzBf
YzBfYzAueHksIHVjbGFtcF9TMV9jMF9jMF9jMC56dyk7CiAgODEJbWVkaXVtcCB2ZWM0IF8zM190
ZXh0dXJlQ29sb3IgPSB0ZXh0dXJlMkQodVRleHR1cmVTYW1wbGVyXzBfUzEsIF8zMl9jbGFtcGVk
Q29vcmQsIC0wLjQ3NSk7CiAgODIJXzI3X3N1bSArPSBfMjlfcy55ICogXzMzX3RleHR1cmVDb2xv
cjsKICA4MwloaWdocCB2ZWMyIF8zNF9pbkNvb3JkID0gKHVtYXRyaXhfUzFfYzBfYzAgKiB2ZWMz
KF8yNl90bXBfMV9jb29yZHMgKyBfMjlfcy56ICogdWRpcl9TMV9jMCwgMS4wKSkueHk7CiAgODQJ
aGlnaHAgdmVjMiBfMzVfc3Vic2V0Q29vcmQ7CiAgODUJXzM1X3N1YnNldENvb3JkLnggPSBfMzRf
aW5Db29yZC54OwogIDg2CV8zNV9zdWJzZXRDb29yZC55ID0gXzM0X2luQ29vcmQueTsKICA4Nwlo
aWdocCB2ZWMyIF8zNl9jbGFtcGVkQ29vcmQgPSBjbGFtcChfMzVfc3Vic2V0Q29vcmQsIHVjbGFt
cF9TMV9jMF9jMF9jMC54eSwgdWNsYW1wX1MxX2MwX2MwX2MwLnp3KTsKICA4OAltZWRpdW1wIHZl
YzQgXzM3X3RleHR1cmVDb2xvciA9IHRleHR1cmUyRCh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgXzM2
X2NsYW1wZWRDb29yZCwgLTAuNDc1KTsKICA4OQlfMjdfc3VtICs9IF8yOV9zLncgKiBfMzdfdGV4
dHVyZUNvbG9yOwogIDkwCX0KICA5MQltZWRpdW1wIHZlYzQgb3V0cHV0X1MxID0gXzI3X3N1bTsK
ICA5Mgl7CiAgOTMJZ2xfRnJhZ0NvbG9yID0gb3V0cHV0X1MxOwogIDk0CX0KICA5NQl9CiAgOTYJ
CiAgOTcJCkVycm9yczoKZXJyb3I6IEV4Y2VlZGVkIG1heCBuciBpbmRpcmVjdCB0ZXh0dXJlIGxv
b2t1cHMgKDkvNCkKClNoYWRlciBjb21waWxhdGlvbiBlcnJvcgotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KICAgMQkvLyBWZXJ0ZXggU0tTTAogICAyCXVuaWZvcm0gZmxvYXQ0IHNrX1JUQWRqdXN0
O3VuaWZvcm0gZmxvYXQzeDMgdW1hdHJpeF9TMTtpbiBmbG9hdDIgcG9zaXRpb247aW4gaGFsZjQg
Y29sb3I7aW4gZmxvYXQyIGxvY2FsQ29vcmQ7b3V0IGhhbGY0IHZjb2xvcl9TMDtvdXQgZmxvYXQy
IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwO3ZvaWQgbWFpbigpIHsvLyBQcmltaXRpdmUgUHJvY2Vz
c29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgogICAzCXZjb2xvcl9TMCA9IGNvbG9y
O3NrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTt7CiAgIDQJdlRyYW5zZm9ybWVkQ29vcmRzXzJf
UzAgPSAodW1hdHJpeF9TMSAqIGxvY2FsQ29vcmQueHkxKS54eTsKICAgNQl9CiAgIDYJfQogICA3
CS8vIEZyYWdtZW50IFNLU0wKICAgOAljb25zdCBpbnQga01heExvb3BMaW1pdF9TMV9jMCA9IDQ7
CiAgIDkJdW5pZm9ybSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwX2MwO3VuaWZvcm0gZmxvYXQzeDMg
dW1hdHJpeF9TMV9jMF9jMDt1bmlmb3JtIGhhbGY0IHVvZmZzZXRzQW5kS2VybmVsX1MxX2MwWzE0
XTt1bmlmb3JtIGhhbGYyIHVkaXJfUzFfYzA7dW5pZm9ybSBmbG9hdDN4MyB1bWF0cml4X1MxO3Nh
bXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKICAxMAlpbiBoYWxmNCB2Y29sb3JfUzA7aW4g
ZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwO2hhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzBf
YzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgewogIDExCWZsb2F0MiBpbkNvb3Jk
ID0gX2Nvb3JkcztmbG9hdDIgc3Vic2V0Q29vcmQ7c3Vic2V0Q29vcmQueCA9IGluQ29vcmQueDtz
dWJzZXRDb29yZC55ID0gaW5Db29yZC55O2Zsb2F0MiBjbGFtcGVkQ29vcmQ7Y2xhbXBlZENvb3Jk
ID0gY2xhbXAoc3Vic2V0Q29vcmQsIHVjbGFtcF9TMV9jMF9jMF9jMC54eSwgdWNsYW1wX1MxX2Mw
X2MwX2MwLnp3KTtoYWxmNCB0ZXh0dXJlQ29sb3IgPSBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBf
UzEsIGNsYW1wZWRDb29yZCk7cmV0dXJuIHRleHR1cmVDb2xvcjt9CiAgMTIJCiAgMTMJaGFsZjQg
TWF0cml4RWZmZWN0X1MxX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIHsKICAx
NAlyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChfaW5wdXQsICgodW1hdHJpeF9TMV9j
MF9jMCkgKiBfY29vcmRzLnh5MSkueHkpOwogIDE1CX0KICAxNgkKICAxNwloYWxmNCBydW50aW1l
X3NoYWRlcl9TMV9jMChoYWxmNCBfaW5wdXQpIHsKICAxOAloYWxmNCBfdG1wXzBfaW5Db2xvciA9
IF9pbnB1dDsKICAxOQlmbG9hdDIgX3RtcF8xX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc18y
X1MwOwogIDIwCWhhbGY0IHN1bSA9IGhhbGY0KDAuMCk7CiAgMjEJZm9yIChpbnQgaSA9IDA7aSA8
IGtNYXhMb29wTGltaXRfUzFfYzA7ICsraSkgewogIDIyCWhhbGY0IHMgPSB1b2Zmc2V0c0FuZEtl
cm5lbF9TMV9jMFtpXTsKICAyMwlzdW0gKz0gcy55ICogTWF0cml4RWZmZWN0X1MxX2MwX2MwKF90
bXBfMF9pbkNvbG9yLCBfdG1wXzFfY29vcmRzICsgZmxvYXQyKHMueCAqIHVkaXJfUzFfYzApKTsK
ICAyNAlzdW0gKz0gcy53ICogTWF0cml4RWZmZWN0X1MxX2MwX2MwKF90bXBfMF9pbkNvbG9yLCBf
dG1wXzFfY29vcmRzICsgZmxvYXQyKHMueiAqIHVkaXJfUzFfYzApKTsKICAyNQl9CiAgMjYJcmV0
dXJuIGhhbGY0KHN1bSk7CiAgMjcJfQogIDI4CQogIDI5CWhhbGY0IE1hdHJpeEVmZmVjdF9TMSho
YWxmNCBfaW5wdXQpIHsKICAzMAlyZXR1cm4gcnVudGltZV9zaGFkZXJfUzFfYzAoX2lucHV0KTsK
ICAzMQl9CiAgMzIJCiAgMzMJdm9pZCBtYWluKCkgey8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFH
ZW9tZXRyeVByb2Nlc3NvcgogIDM0CWhhbGY0IG91dHB1dENvbG9yX1MwO291dHB1dENvbG9yX1Mw
ID0gdmNvbG9yX1MwO2NvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7aGFs
ZjQgb3V0cHV0X1MxO291dHB1dF9TMSA9IE1hdHJpeEVmZmVjdF9TMShvdXRwdXRDb2xvcl9TMCk7
eyAvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKICAzNQlza19GcmFnQ29sb3IgPSBvdXRw
dXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDt9fQogIDM2CS8vIFZlcnRleCBHTFNMCiAgMzcJI3Zl
cnNpb24gMTAwCiAgMzgJCiAgMzkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CiAgNDAJcHJlY2lz
aW9uIG1lZGl1bXAgc2FtcGxlcjJEOwogIDQxCXVuaWZvcm0gaGlnaHAgdmVjNCBza19SVEFkanVz
dDsKICA0Mgl1bmlmb3JtIGhpZ2hwIG1hdDMgdW1hdHJpeF9TMTsKICA0MwlhdHRyaWJ1dGUgaGln
aHAgdmVjMiBwb3NpdGlvbjsKICA0NAlhdHRyaWJ1dGUgbWVkaXVtcCB2ZWM0IGNvbG9yOwogIDQ1
CWF0dHJpYnV0ZSBoaWdocCB2ZWMyIGxvY2FsQ29vcmQ7CiAgNDYJdmFyeWluZyBtZWRpdW1wIHZl
YzQgdmNvbG9yX1MwOwogIDQ3CXZhcnlpbmcgaGlnaHAgdmVjMiB2VHJhbnNmb3JtZWRDb29yZHNf
Ml9TMDsKICA0OAl2b2lkIG1haW4oKSB7CiAgNDkJdmNvbG9yX1MwID0gY29sb3I7CiAgNTAJZ2xf
UG9zaXRpb24gPSB2ZWM0KHBvc2l0aW9uLCAwLjAsIDEuMCk7CiAgNTEJewogIDUyCXZUcmFuc2Zv
cm1lZENvb3Jkc18yX1MwID0gKHVtYXRyaXhfUzEgKiB2ZWMzKGxvY2FsQ29vcmQsIDEuMCkpLnh5
OwogIDUzCX0KICA1NAlnbF9Qb3NpdGlvbiA9IHZlYzQoZ2xfUG9zaXRpb24ueHkgKiBza19SVEFk
anVzdC54eiArIGdsX1Bvc2l0aW9uLnd3ICogc2tfUlRBZGp1c3QueXcsIDAuMCwgZ2xfUG9zaXRp
b24udyk7CiAgNTUJfQogIDU2CQogIDU3CS8vIEZyYWdtZW50IEdMU0wKICA1OAkjdmVyc2lvbiAx
MDAKICA1OQkKICA2MAlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKICA2MQlwcmVjaXNpb24gbWVk
aXVtcCBzYW1wbGVyMkQ7CiAgNjIJY29uc3QgaGlnaHAgaW50IGtNYXhMb29wTGltaXRfUzFfYzAg
PSA0OwogIDYzCXVuaWZvcm0gaGlnaHAgdmVjNCB1Y2xhbXBfUzFfYzBfYzBfYzA7CiAgNjQJdW5p
Zm9ybSBoaWdocCBtYXQzIHVtYXRyaXhfUzFfYzBfYzA7CiAgNjUJdW5pZm9ybSBtZWRpdW1wIHZl
YzQgdW9mZnNldHNBbmRLZXJuZWxfUzFfYzBbMTRdOwogIDY2CXVuaWZvcm0gbWVkaXVtcCB2ZWMy
IHVkaXJfUzFfYzA7CiAgNjcJdW5pZm9ybSBoaWdocCBtYXQzIHVtYXRyaXhfUzE7CiAgNjgJdW5p
Zm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CiAgNjkJdmFyeWluZyBtZWRpdW1w
IHZlYzQgdmNvbG9yX1MwOwogIDcwCXZhcnlpbmcgaGlnaHAgdmVjMiB2VHJhbnNmb3JtZWRDb29y
ZHNfMl9TMDsKICA3MQl2b2lkIG1haW4oKSB7CiAgNzIJaGlnaHAgdmVjMiBfMjZfdG1wXzFfY29v
cmRzID0gdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CiAgNzMJbWVkaXVtcCB2ZWM0IF8yN19zdW0g
PSB2ZWM0KDAuMCk7CiAgNzQJZm9yIChoaWdocCBpbnQgXzI4X2kgPSAwO18yOF9pIDwga01heExv
b3BMaW1pdF9TMV9jMDsgKytfMjhfaSkgewogIDc1CW1lZGl1bXAgdmVjNCBfMjlfcyA9IHVvZmZz
ZXRzQW5kS2VybmVsX1MxX2MwW18yOF9pXTsKICA3NgloaWdocCB2ZWMyIF8zMF9pbkNvb3JkID0g
KHVtYXRyaXhfUzFfYzBfYzAgKiB2ZWMzKF8yNl90bXBfMV9jb29yZHMgKyBfMjlfcy54ICogdWRp
cl9TMV9jMCwgMS4wKSkueHk7CiAgNzcJaGlnaHAgdmVjMiBfMzFfc3Vic2V0Q29vcmQ7CiAgNzgJ
XzMxX3N1YnNldENvb3JkLnggPSBfMzBfaW5Db29yZC54OwogIDc5CV8zMV9zdWJzZXRDb29yZC55
ID0gXzMwX2luQ29vcmQueTsKICA4MAloaWdocCB2ZWMyIF8zMl9jbGFtcGVkQ29vcmQgPSBjbGFt
cChfMzFfc3Vic2V0Q29vcmQsIHVjbGFtcF9TMV9jMF9jMF9jMC54eSwgdWNsYW1wX1MxX2MwX2Mw
X2MwLnp3KTsKICA4MQltZWRpdW1wIHZlYzQgXzMzX3RleHR1cmVDb2xvciA9IHRleHR1cmUyRCh1
VGV4dHVyZVNhbXBsZXJfMF9TMSwgXzMyX2NsYW1wZWRDb29yZCwgLTAuNDc1KTsKICA4MglfMjdf
c3VtICs9IF8yOV9zLnkgKiBfMzNfdGV4dHVyZUNvbG9yOwogIDgzCWhpZ2hwIHZlYzIgXzM0X2lu
Q29vcmQgPSAodW1hdHJpeF9TMV9jMF9jMCAqIHZlYzMoXzI2X3RtcF8xX2Nvb3JkcyArIF8yOV9z
LnogKiB1ZGlyX1MxX2MwLCAxLjApKS54eTsKICA4NAloaWdocCB2ZWMyIF8zNV9zdWJzZXRDb29y
ZDsKICA4NQlfMzVfc3Vic2V0Q29vcmQueCA9IF8zNF9pbkNvb3JkLng7CiAgODYJXzM1X3N1YnNl
dENvb3JkLnkgPSBfMzRfaW5Db29yZC55OwogIDg3CWhpZ2hwIHZlYzIgXzM2X2NsYW1wZWRDb29y
ZCA9IGNsYW1wKF8zNV9zdWJzZXRDb29yZCwgdWNsYW1wX1MxX2MwX2MwX2MwLnh5LCB1Y2xhbXBf
UzFfYzBfYzBfYzAuencpOwogIDg4CW1lZGl1bXAgdmVjNCBfMzdfdGV4dHVyZUNvbG9yID0gdGV4
dHVyZTJEKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfMzZfY2xhbXBlZENvb3JkLCAtMC40NzUpOwog
IDg5CV8yN19zdW0gKz0gXzI5X3MudyAqIF8zN190ZXh0dXJlQ29sb3I7CiAgOTAJfQogIDkxCW1l
ZGl1bXAgdmVjNCBvdXRwdXRfUzEgPSBfMjdfc3VtOwogIDkyCXsKICA5MwlnbF9GcmFnQ29sb3Ig
PSBvdXRwdXRfUzE7CiAgOTQJfQogIDk1CX0KICA5NgkKICA5NwkKRXJyb3JzOgplcnJvcjogRXhj
ZWVkZWQgbWF4IG5yIGluZGlyZWN0IHRleHR1cmUgbG9va3VwcyAoOS80KQoKRmFpbGVkIHRvIGNy
ZWF0ZSBETUEtQlVGIHRleHR1cmUgb2Ygc2l6ZSAxMDI0eDY5MzogVW5zdXBwb3J0ZWQgZG1hYnVm
IGZvcm1hdDogWFIyNDoweGZmZmZmZmZmZmZmZmZmClNoYWRlciBjb21waWxhdGlvbiBlcnJvcgot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgMQkvLyBWZXJ0ZXggU0tTTAogICAyCXVuaWZvcm0g
ZmxvYXQ0IHNrX1JUQWRqdXN0O3VuaWZvcm0gZmxvYXQzeDMgdW1hdHJpeF9TMTtpbiBmbG9hdDIg
cG9zaXRpb247aW4gaGFsZjQgY29sb3I7aW4gZmxvYXQyIGxvY2FsQ29vcmQ7b3V0IGhhbGY0IHZj
b2xvcl9TMDtvdXQgZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwO3ZvaWQgbWFpbigpIHsv
LyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgogICAz
CXZjb2xvcl9TMCA9IGNvbG9yO3NrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTt7CiAgIDQJdlRy
YW5zZm9ybWVkQ29vcmRzXzJfUzAgPSAodW1hdHJpeF9TMSAqIGxvY2FsQ29vcmQueHkxKS54eTsK
ICAgNQl9CiAgIDYJfQogICA3CS8vIEZyYWdtZW50IFNLU0wKICAgOAljb25zdCBpbnQga01heExv
b3BMaW1pdF9TMV9jMCA9IDI7CiAgIDkJdW5pZm9ybSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwX2Mw
O3VuaWZvcm0gZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDt1bmlmb3JtIGhhbGY0IHVvZmZzZXRz
QW5kS2VybmVsX1MxX2MwWzE0XTt1bmlmb3JtIGhhbGYyIHVkaXJfUzFfYzA7dW5pZm9ybSBmbG9h
dDN4MyB1bWF0cml4X1MxO3NhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKICAxMAlpbiBo
YWxmNCB2Y29sb3JfUzA7aW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwO2hhbGY0IFRl
eHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3Jkcykgewog
IDExCWZsb2F0MiBpbkNvb3JkID0gX2Nvb3JkcztmbG9hdDIgc3Vic2V0Q29vcmQ7c3Vic2V0Q29v
cmQueCA9IGluQ29vcmQueDtzdWJzZXRDb29yZC55ID0gaW5Db29yZC55O2Zsb2F0MiBjbGFtcGVk
Q29vcmQ7Y2xhbXBlZENvb3JkID0gY2xhbXAoc3Vic2V0Q29vcmQsIHVjbGFtcF9TMV9jMF9jMF9j
MC54eSwgdWNsYW1wX1MxX2MwX2MwX2MwLnp3KTtoYWxmNCB0ZXh0dXJlQ29sb3IgPSBzYW1wbGUo
dVRleHR1cmVTYW1wbGVyXzBfUzEsIGNsYW1wZWRDb29yZCk7cmV0dXJuIHRleHR1cmVDb2xvcjt9
CiAgMTIJCiAgMTMJaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxv
YXQyIF9jb29yZHMpIHsKICAxNAlyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChfaW5w
dXQsICgodW1hdHJpeF9TMV9jMF9jMCkgKiBfY29vcmRzLnh5MSkueHkpOwogIDE1CX0KICAxNgkK
ICAxNwloYWxmNCBydW50aW1lX3NoYWRlcl9TMV9jMChoYWxmNCBfaW5wdXQpIHsKICAxOAloYWxm
NCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKICAxOQlmbG9hdDIgX3RtcF8xX2Nvb3JkcyA9IHZU
cmFuc2Zvcm1lZENvb3Jkc18yX1MwOwogIDIwCWhhbGY0IHN1bSA9IGhhbGY0KDAuMCk7CiAgMjEJ
Zm9yIChpbnQgaSA9IDA7aSA8IGtNYXhMb29wTGltaXRfUzFfYzA7ICsraSkgewogIDIyCWhhbGY0
IHMgPSB1b2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtpXTsKICAyMwlzdW0gKz0gcy55ICogTWF0cml4
RWZmZWN0X1MxX2MwX2MwKF90bXBfMF9pbkNvbG9yLCBfdG1wXzFfY29vcmRzICsgZmxvYXQyKHMu
eCAqIHVkaXJfUzFfYzApKTsKICAyNAlzdW0gKz0gcy53ICogTWF0cml4RWZmZWN0X1MxX2MwX2Mw
KF90bXBfMF9pbkNvbG9yLCBfdG1wXzFfY29vcmRzICsgZmxvYXQyKHMueiAqIHVkaXJfUzFfYzAp
KTsKICAyNQl9CiAgMjYJcmV0dXJuIGhhbGY0KHN1bSk7CiAgMjcJfQogIDI4CQogIDI5CWhhbGY0
IE1hdHJpeEVmZmVjdF9TMShoYWxmNCBfaW5wdXQpIHsKICAzMAlyZXR1cm4gcnVudGltZV9zaGFk
ZXJfUzFfYzAoX2lucHV0KTsKICAzMQl9CiAgMzIJCiAgMzMJdm9pZCBtYWluKCkgey8vIFN0YWdl
IDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgogIDM0CWhhbGY0IG91dHB1dENvbG9y
X1MwO291dHB1dENvbG9yX1MwID0gdmNvbG9yX1MwO2NvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdl
X1MwID0gaGFsZjQoMSk7aGFsZjQgb3V0cHV0X1MxO291dHB1dF9TMSA9IE1hdHJpeEVmZmVjdF9T
MShvdXRwdXRDb2xvcl9TMCk7eyAvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKICAzNQlz
a19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDt9fQogIDM2CS8vIFZl
cnRleCBHTFNMCiAgMzcJI3ZlcnNpb24gMTAwCiAgMzgJCiAgMzkJcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7CiAgNDAJcHJlY2lzaW9uIG1lZGl1bXAgc2FtcGxlcjJEOwogIDQxCXVuaWZvcm0gaGln
aHAgdmVjNCBza19SVEFkanVzdDsKICA0Mgl1bmlmb3JtIGhpZ2hwIG1hdDMgdW1hdHJpeF9TMTsK
ICA0MwlhdHRyaWJ1dGUgaGlnaHAgdmVjMiBwb3NpdGlvbjsKICA0NAlhdHRyaWJ1dGUgbWVkaXVt
cCB2ZWM0IGNvbG9yOwogIDQ1CWF0dHJpYnV0ZSBoaWdocCB2ZWMyIGxvY2FsQ29vcmQ7CiAgNDYJ
dmFyeWluZyBtZWRpdW1wIHZlYzQgdmNvbG9yX1MwOwogIDQ3CXZhcnlpbmcgaGlnaHAgdmVjMiB2
VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKICA0OAl2b2lkIG1haW4oKSB7CiAgNDkJdmNvbG9yX1Mw
ID0gY29sb3I7CiAgNTAJZ2xfUG9zaXRpb24gPSB2ZWM0KHBvc2l0aW9uLCAwLjAsIDEuMCk7CiAg
NTEJewogIDUyCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gKHVtYXRyaXhfUzEgKiB2ZWMzKGxv
Y2FsQ29vcmQsIDEuMCkpLnh5OwogIDUzCX0KICA1NAlnbF9Qb3NpdGlvbiA9IHZlYzQoZ2xfUG9z
aXRpb24ueHkgKiBza19SVEFkanVzdC54eiArIGdsX1Bvc2l0aW9uLnd3ICogc2tfUlRBZGp1c3Qu
eXcsIDAuMCwgZ2xfUG9zaXRpb24udyk7CiAgNTUJfQogIDU2CQogIDU3CS8vIEZyYWdtZW50IEdM
U0wKICA1OAkjdmVyc2lvbiAxMDAKICA1OQkKICA2MAlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
ICA2MQlwcmVjaXNpb24gbWVkaXVtcCBzYW1wbGVyMkQ7CiAgNjIJY29uc3QgaGlnaHAgaW50IGtN
YXhMb29wTGltaXRfUzFfYzAgPSAyOwogIDYzCXVuaWZvcm0gaGlnaHAgdmVjNCB1Y2xhbXBfUzFf
YzBfYzBfYzA7CiAgNjQJdW5pZm9ybSBoaWdocCBtYXQzIHVtYXRyaXhfUzFfYzBfYzA7CiAgNjUJ
dW5pZm9ybSBtZWRpdW1wIHZlYzQgdW9mZnNldHNBbmRLZXJuZWxfUzFfYzBbMTRdOwogIDY2CXVu
aWZvcm0gbWVkaXVtcCB2ZWMyIHVkaXJfUzFfYzA7CiAgNjcJdW5pZm9ybSBoaWdocCBtYXQzIHVt
YXRyaXhfUzE7CiAgNjgJdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CiAg
NjkJdmFyeWluZyBtZWRpdW1wIHZlYzQgdmNvbG9yX1MwOwogIDcwCXZhcnlpbmcgaGlnaHAgdmVj
MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKICA3MQl2b2lkIG1haW4oKSB7CiAgNzIJaGlnaHAg
dmVjMiBfMjZfdG1wXzFfY29vcmRzID0gdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CiAgNzMJbWVk
aXVtcCB2ZWM0IF8yN19zdW0gPSB2ZWM0KDAuMCk7CiAgNzQJZm9yIChoaWdocCBpbnQgXzI4X2kg
PSAwO18yOF9pIDwga01heExvb3BMaW1pdF9TMV9jMDsgKytfMjhfaSkgewogIDc1CW1lZGl1bXAg
dmVjNCBfMjlfcyA9IHVvZmZzZXRzQW5kS2VybmVsX1MxX2MwW18yOF9pXTsKICA3NgloaWdocCB2
ZWMyIF8zMF9pbkNvb3JkID0gKHVtYXRyaXhfUzFfYzBfYzAgKiB2ZWMzKF8yNl90bXBfMV9jb29y
ZHMgKyBfMjlfcy54ICogdWRpcl9TMV9jMCwgMS4wKSkueHk7CiAgNzcJaGlnaHAgdmVjMiBfMzFf
c3Vic2V0Q29vcmQ7CiAgNzgJXzMxX3N1YnNldENvb3JkLnggPSBfMzBfaW5Db29yZC54OwogIDc5
CV8zMV9zdWJzZXRDb29yZC55ID0gXzMwX2luQ29vcmQueTsKICA4MAloaWdocCB2ZWMyIF8zMl9j
bGFtcGVkQ29vcmQgPSBjbGFtcChfMzFfc3Vic2V0Q29vcmQsIHVjbGFtcF9TMV9jMF9jMF9jMC54
eSwgdWNsYW1wX1MxX2MwX2MwX2MwLnp3KTsKICA4MQltZWRpdW1wIHZlYzQgXzMzX3RleHR1cmVD
b2xvciA9IHRleHR1cmUyRCh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgXzMyX2NsYW1wZWRDb29yZCwg
LTAuNDc1KTsKICA4MglfMjdfc3VtICs9IF8yOV9zLnkgKiBfMzNfdGV4dHVyZUNvbG9yOwogIDgz
CWhpZ2hwIHZlYzIgXzM0X2luQ29vcmQgPSAodW1hdHJpeF9TMV9jMF9jMCAqIHZlYzMoXzI2X3Rt
cF8xX2Nvb3JkcyArIF8yOV9zLnogKiB1ZGlyX1MxX2MwLCAxLjApKS54eTsKICA4NAloaWdocCB2
ZWMyIF8zNV9zdWJzZXRDb29yZDsKICA4NQlfMzVfc3Vic2V0Q29vcmQueCA9IF8zNF9pbkNvb3Jk
Lng7CiAgODYJXzM1X3N1YnNldENvb3JkLnkgPSBfMzRfaW5Db29yZC55OwogIDg3CWhpZ2hwIHZl
YzIgXzM2X2NsYW1wZWRDb29yZCA9IGNsYW1wKF8zNV9zdWJzZXRDb29yZCwgdWNsYW1wX1MxX2Mw
X2MwX2MwLnh5LCB1Y2xhbXBfUzFfYzBfYzBfYzAuencpOwogIDg4CW1lZGl1bXAgdmVjNCBfMzdf
dGV4dHVyZUNvbG9yID0gdGV4dHVyZTJEKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfMzZfY2xhbXBl
ZENvb3JkLCAtMC40NzUpOwogIDg5CV8yN19zdW0gKz0gXzI5X3MudyAqIF8zN190ZXh0dXJlQ29s
b3I7CiAgOTAJfQogIDkxCW1lZGl1bXAgdmVjNCBvdXRwdXRfUzEgPSBfMjdfc3VtOwogIDkyCXsK
ICA5MwlnbF9GcmFnQ29sb3IgPSBvdXRwdXRfUzE7CiAgOTQJfQogIDk1CX0KICA5NgkKICA5NwkK
RXJyb3JzOgplcnJvcjogRXhjZWVkZWQgbWF4IG5yIGluZGlyZWN0IHRleHR1cmUgbG9va3VwcyAo
NS80KQoKU2hhZGVyIGNvbXBpbGF0aW9uIGVycm9yCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
ICAxCS8vIFZlcnRleCBTS1NMCiAgIDIJdW5pZm9ybSBmbG9hdDQgc2tfUlRBZGp1c3Q7dW5pZm9y
bSBmbG9hdDN4MyB1bWF0cml4X1MxO2luIGZsb2F0MiBwb3NpdGlvbjtpbiBoYWxmNCBjb2xvcjtp
biBmbG9hdDIgbG9jYWxDb29yZDtvdXQgaGFsZjQgdmNvbG9yX1MwO291dCBmbG9hdDIgdlRyYW5z
Zm9ybWVkQ29vcmRzXzJfUzA7dm9pZCBtYWluKCkgey8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVh
ZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCiAgIDMJdmNvbG9yX1MwID0gY29sb3I7c2tfUG9z
aXRpb24gPSBwb3NpdGlvbi54eTAxO3sKICAgNAl2VHJhbnNmb3JtZWRDb29yZHNfMl9TMCA9ICh1
bWF0cml4X1MxICogbG9jYWxDb29yZC54eTEpLnh5OwogICA1CX0KICAgNgl9CiAgIDcJLy8gRnJh
Z21lbnQgU0tTTAogICA4CWNvbnN0IGludCBrTWF4TG9vcExpbWl0X1MxX2MwID0gMjsKICAgOQl1
bmlmb3JtIGZsb2F0NCB1Y2xhbXBfUzFfYzBfYzBfYzA7dW5pZm9ybSBmbG9hdDN4MyB1bWF0cml4
X1MxX2MwX2MwO3VuaWZvcm0gaGFsZjQgdW9mZnNldHNBbmRLZXJuZWxfUzFfYzBbMTRdO3VuaWZv
cm0gaGFsZjIgdWRpcl9TMV9jMDt1bmlmb3JtIGZsb2F0M3gzIHVtYXRyaXhfUzE7c2FtcGxlcjJE
IHVUZXh0dXJlU2FtcGxlcl8wX1MxOwogIDEwCWluIGhhbGY0IHZjb2xvcl9TMDtpbiBmbG9hdDIg
dlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7aGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9jMCho
YWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSB7CiAgMTEJZmxvYXQyIGluQ29vcmQgPSBfY29v
cmRzO2Zsb2F0MiBzdWJzZXRDb29yZDtzdWJzZXRDb29yZC54ID0gaW5Db29yZC54O3N1YnNldENv
b3JkLnkgPSBpbkNvb3JkLnk7ZmxvYXQyIGNsYW1wZWRDb29yZDtjbGFtcGVkQ29vcmQgPSBjbGFt
cChzdWJzZXRDb29yZCwgdWNsYW1wX1MxX2MwX2MwX2MwLnh5LCB1Y2xhbXBfUzFfYzBfYzBfYzAu
encpO2hhbGY0IHRleHR1cmVDb2xvciA9IHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgY2xh
bXBlZENvb3JkKTtyZXR1cm4gdGV4dHVyZUNvbG9yO30KICAxMgkKICAxMwloYWxmNCBNYXRyaXhF
ZmZlY3RfUzFfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgewogIDE0CXJldHVy
biBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKF9pbnB1dCwgKCh1bWF0cml4X1MxX2MwX2MwKSAq
IF9jb29yZHMueHkxKS54eSk7CiAgMTUJfQogIDE2CQogIDE3CWhhbGY0IHJ1bnRpbWVfc2hhZGVy
X1MxX2MwKGhhbGY0IF9pbnB1dCkgewogIDE4CWhhbGY0IF90bXBfMF9pbkNvbG9yID0gX2lucHV0
OwogIDE5CWZsb2F0MiBfdG1wXzFfY29vcmRzID0gdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CiAg
MjAJaGFsZjQgc3VtID0gaGFsZjQoMC4wKTsKICAyMQlmb3IgKGludCBpID0gMDtpIDwga01heExv
b3BMaW1pdF9TMV9jMDsgKytpKSB7CiAgMjIJaGFsZjQgcyA9IHVvZmZzZXRzQW5kS2VybmVsX1Mx
X2MwW2ldOwogIDIzCXN1bSArPSBzLnkgKiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX3RtcF8wX2lu
Q29sb3IsIF90bXBfMV9jb29yZHMgKyBmbG9hdDIocy54ICogdWRpcl9TMV9jMCkpOwogIDI0CXN1
bSArPSBzLncgKiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX3RtcF8wX2luQ29sb3IsIF90bXBfMV9j
b29yZHMgKyBmbG9hdDIocy56ICogdWRpcl9TMV9jMCkpOwogIDI1CX0KICAyNglyZXR1cm4gaGFs
ZjQoc3VtKTsKICAyNwl9CiAgMjgJCiAgMjkJaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9p
bnB1dCkgewogIDMwCXJldHVybiBydW50aW1lX3NoYWRlcl9TMV9jMChfaW5wdXQpOwogIDMxCX0K
ICAzMgkKICAzMwl2b2lkIG1haW4oKSB7Ly8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5
UHJvY2Vzc29yCiAgMzQJaGFsZjQgb3V0cHV0Q29sb3JfUzA7b3V0cHV0Q29sb3JfUzAgPSB2Y29s
b3JfUzA7Y29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTtoYWxmNCBvdXRw
dXRfUzE7b3V0cHV0X1MxID0gTWF0cml4RWZmZWN0X1MxKG91dHB1dENvbG9yX1MwKTt7IC8vIFhm
ZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgogIDM1CXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAq
IG91dHB1dENvdmVyYWdlX1MwO319CiAgMzYJLy8gVmVydGV4IEdMU0wKICAzNwkjdmVyc2lvbiAx
MDAKICAzOAkKICAzOQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKICA0MAlwcmVjaXNpb24gbWVk
aXVtcCBzYW1wbGVyMkQ7CiAgNDEJdW5pZm9ybSBoaWdocCB2ZWM0IHNrX1JUQWRqdXN0OwogIDQy
CXVuaWZvcm0gaGlnaHAgbWF0MyB1bWF0cml4X1MxOwogIDQzCWF0dHJpYnV0ZSBoaWdocCB2ZWMy
IHBvc2l0aW9uOwogIDQ0CWF0dHJpYnV0ZSBtZWRpdW1wIHZlYzQgY29sb3I7CiAgNDUJYXR0cmli
dXRlIGhpZ2hwIHZlYzIgbG9jYWxDb29yZDsKICA0Ngl2YXJ5aW5nIG1lZGl1bXAgdmVjNCB2Y29s
b3JfUzA7CiAgNDcJdmFyeWluZyBoaWdocCB2ZWMyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwog
IDQ4CXZvaWQgbWFpbigpIHsKICA0OQl2Y29sb3JfUzAgPSBjb2xvcjsKICA1MAlnbF9Qb3NpdGlv
biA9IHZlYzQocG9zaXRpb24sIDAuMCwgMS4wKTsKICA1MQl7CiAgNTIJdlRyYW5zZm9ybWVkQ29v
cmRzXzJfUzAgPSAodW1hdHJpeF9TMSAqIHZlYzMobG9jYWxDb29yZCwgMS4wKSkueHk7CiAgNTMJ
fQogIDU0CWdsX1Bvc2l0aW9uID0gdmVjNChnbF9Qb3NpdGlvbi54eSAqIHNrX1JUQWRqdXN0Lnh6
ICsgZ2xfUG9zaXRpb24ud3cgKiBza19SVEFkanVzdC55dywgMC4wLCBnbF9Qb3NpdGlvbi53KTsK
ICA1NQl9CiAgNTYJCiAgNTcJLy8gRnJhZ21lbnQgR0xTTAogIDU4CSN2ZXJzaW9uIDEwMAogIDU5
CQogIDYwCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwogIDYxCXByZWNpc2lvbiBtZWRpdW1wIHNh
bXBsZXIyRDsKICA2Mgljb25zdCBoaWdocCBpbnQga01heExvb3BMaW1pdF9TMV9jMCA9IDI7CiAg
NjMJdW5pZm9ybSBoaWdocCB2ZWM0IHVjbGFtcF9TMV9jMF9jMF9jMDsKICA2NAl1bmlmb3JtIGhp
Z2hwIG1hdDMgdW1hdHJpeF9TMV9jMF9jMDsKICA2NQl1bmlmb3JtIG1lZGl1bXAgdmVjNCB1b2Zm
c2V0c0FuZEtlcm5lbF9TMV9jMFsxNF07CiAgNjYJdW5pZm9ybSBtZWRpdW1wIHZlYzIgdWRpcl9T
MV9jMDsKICA2Nwl1bmlmb3JtIGhpZ2hwIG1hdDMgdW1hdHJpeF9TMTsKICA2OAl1bmlmb3JtIHNh
bXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKICA2OQl2YXJ5aW5nIG1lZGl1bXAgdmVjNCB2
Y29sb3JfUzA7CiAgNzAJdmFyeWluZyBoaWdocCB2ZWMyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1Mw
OwogIDcxCXZvaWQgbWFpbigpIHsKICA3MgloaWdocCB2ZWMyIF8yNl90bXBfMV9jb29yZHMgPSB2
VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKICA3MwltZWRpdW1wIHZlYzQgXzI3X3N1bSA9IHZlYzQo
MC4wKTsKICA3NAlmb3IgKGhpZ2hwIGludCBfMjhfaSA9IDA7XzI4X2kgPCBrTWF4TG9vcExpbWl0
X1MxX2MwOyArK18yOF9pKSB7CiAgNzUJbWVkaXVtcCB2ZWM0IF8yOV9zID0gdW9mZnNldHNBbmRL
ZXJuZWxfUzFfYzBbXzI4X2ldOwogIDc2CWhpZ2hwIHZlYzIgXzMwX2luQ29vcmQgPSAodW1hdHJp
eF9TMV9jMF9jMCAqIHZlYzMoXzI2X3RtcF8xX2Nvb3JkcyArIF8yOV9zLnggKiB1ZGlyX1MxX2Mw
LCAxLjApKS54eTsKICA3NwloaWdocCB2ZWMyIF8zMV9zdWJzZXRDb29yZDsKICA3OAlfMzFfc3Vi
c2V0Q29vcmQueCA9IF8zMF9pbkNvb3JkLng7CiAgNzkJXzMxX3N1YnNldENvb3JkLnkgPSBfMzBf
aW5Db29yZC55OwogIDgwCWhpZ2hwIHZlYzIgXzMyX2NsYW1wZWRDb29yZCA9IGNsYW1wKF8zMV9z
dWJzZXRDb29yZCwgdWNsYW1wX1MxX2MwX2MwX2MwLnh5LCB1Y2xhbXBfUzFfYzBfYzBfYzAuencp
OwogIDgxCW1lZGl1bXAgdmVjNCBfMzNfdGV4dHVyZUNvbG9yID0gdGV4dHVyZTJEKHVUZXh0dXJl
U2FtcGxlcl8wX1MxLCBfMzJfY2xhbXBlZENvb3JkLCAtMC40NzUpOwogIDgyCV8yN19zdW0gKz0g
XzI5X3MueSAqIF8zM190ZXh0dXJlQ29sb3I7CiAgODMJaGlnaHAgdmVjMiBfMzRfaW5Db29yZCA9
ICh1bWF0cml4X1MxX2MwX2MwICogdmVjMyhfMjZfdG1wXzFfY29vcmRzICsgXzI5X3MueiAqIHVk
aXJfUzFfYzAsIDEuMCkpLnh5OwogIDg0CWhpZ2hwIHZlYzIgXzM1X3N1YnNldENvb3JkOwogIDg1
CV8zNV9zdWJzZXRDb29yZC54ID0gXzM0X2luQ29vcmQueDsKICA4NglfMzVfc3Vic2V0Q29vcmQu
eSA9IF8zNF9pbkNvb3JkLnk7CiAgODcJaGlnaHAgdmVjMiBfMzZfY2xhbXBlZENvb3JkID0gY2xh
bXAoXzM1X3N1YnNldENvb3JkLCB1Y2xhbXBfUzFfYzBfYzBfYzAueHksIHVjbGFtcF9TMV9jMF9j
MF9jMC56dyk7CiAgODgJbWVkaXVtcCB2ZWM0IF8zN190ZXh0dXJlQ29sb3IgPSB0ZXh0dXJlMkQo
dVRleHR1cmVTYW1wbGVyXzBfUzEsIF8zNl9jbGFtcGVkQ29vcmQsIC0wLjQ3NSk7CiAgODkJXzI3
X3N1bSArPSBfMjlfcy53ICogXzM3X3RleHR1cmVDb2xvcjsKICA5MAl9CiAgOTEJbWVkaXVtcCB2
ZWM0IG91dHB1dF9TMSA9IF8yN19zdW07CiAgOTIJewogIDkzCWdsX0ZyYWdDb2xvciA9IG91dHB1
dF9TMTsKICA5NAl9CiAgOTUJfQogIDk2CQogIDk3CQpFcnJvcnM6CmVycm9yOiBFeGNlZWRlZCBt
YXggbnIgaW5kaXJlY3QgdGV4dHVyZSBsb29rdXBzICg1LzQpCgpGYWlsZWQgdG8gY3JlYXRlIERN
QS1CVUYgdGV4dHVyZSBvZiBzaXplIDEwMjR4NjkzOiBVbnN1cHBvcnRlZCBkbWFidWYgZm9ybWF0
OiBYUjI0OjB4ZmZmZmZmZmZmZmZmZmYKU2hhZGVyIGNvbXBpbGF0aW9uIGVycm9yCi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQogICAxCS8vIFZlcnRleCBTS1NMCiAgIDIJdW5pZm9ybSBmbG9hdDQg
c2tfUlRBZGp1c3Q7dW5pZm9ybSBmbG9hdDN4MyB1bWF0cml4X1MxO2luIGZsb2F0MiBwb3NpdGlv
bjtpbiBoYWxmNCBjb2xvcjtpbiBmbG9hdDIgbG9jYWxDb29yZDtvdXQgaGFsZjQgdmNvbG9yX1Mw
O291dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7dm9pZCBtYWluKCkgey8vIFByaW1p
dGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCiAgIDMJdmNvbG9y
X1MwID0gY29sb3I7c2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxO3sKICAgNAl2VHJhbnNmb3Jt
ZWRDb29yZHNfMl9TMCA9ICh1bWF0cml4X1MxICogbG9jYWxDb29yZC54eTEpLnh5OwogICA1CX0K
ICAgNgl9CiAgIDcJLy8gRnJhZ21lbnQgU0tTTAogICA4CWNvbnN0IGludCBrTWF4TG9vcExpbWl0
X1MxX2MwID0gNDsKICAgOQl1bmlmb3JtIGZsb2F0NCB1Y2xhbXBfUzFfYzBfYzBfYzA7dW5pZm9y
bSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwO3VuaWZvcm0gaGFsZjQgdW9mZnNldHNBbmRLZXJu
ZWxfUzFfYzBbMTRdO3VuaWZvcm0gaGFsZjIgdWRpcl9TMV9jMDt1bmlmb3JtIGZsb2F0M3gzIHVt
YXRyaXhfUzE7c2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwogIDEwCWluIGhhbGY0IHZj
b2xvcl9TMDtpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7aGFsZjQgVGV4dHVyZUVm
ZmVjdF9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSB7CiAgMTEJZmxv
YXQyIGluQ29vcmQgPSBfY29vcmRzO2Zsb2F0MiBzdWJzZXRDb29yZDtzdWJzZXRDb29yZC54ID0g
aW5Db29yZC54O3N1YnNldENvb3JkLnkgPSBpbkNvb3JkLnk7ZmxvYXQyIGNsYW1wZWRDb29yZDtj
bGFtcGVkQ29vcmQgPSBjbGFtcChzdWJzZXRDb29yZCwgdWNsYW1wX1MxX2MwX2MwX2MwLnh5LCB1
Y2xhbXBfUzFfYzBfYzBfYzAuencpO2hhbGY0IHRleHR1cmVDb2xvciA9IHNhbXBsZSh1VGV4dHVy
ZVNhbXBsZXJfMF9TMSwgY2xhbXBlZENvb3JkKTtyZXR1cm4gdGV4dHVyZUNvbG9yO30KICAxMgkK
ICAxMwloYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nv
b3JkcykgewogIDE0CXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKF9pbnB1dCwgKCh1
bWF0cml4X1MxX2MwX2MwKSAqIF9jb29yZHMueHkxKS54eSk7CiAgMTUJfQogIDE2CQogIDE3CWhh
bGY0IHJ1bnRpbWVfc2hhZGVyX1MxX2MwKGhhbGY0IF9pbnB1dCkgewogIDE4CWhhbGY0IF90bXBf
MF9pbkNvbG9yID0gX2lucHV0OwogIDE5CWZsb2F0MiBfdG1wXzFfY29vcmRzID0gdlRyYW5zZm9y
bWVkQ29vcmRzXzJfUzA7CiAgMjAJaGFsZjQgc3VtID0gaGFsZjQoMC4wKTsKICAyMQlmb3IgKGlu
dCBpID0gMDtpIDwga01heExvb3BMaW1pdF9TMV9jMDsgKytpKSB7CiAgMjIJaGFsZjQgcyA9IHVv
ZmZzZXRzQW5kS2VybmVsX1MxX2MwW2ldOwogIDIzCXN1bSArPSBzLnkgKiBNYXRyaXhFZmZlY3Rf
UzFfYzBfYzAoX3RtcF8wX2luQ29sb3IsIF90bXBfMV9jb29yZHMgKyBmbG9hdDIocy54ICogdWRp
cl9TMV9jMCkpOwogIDI0CXN1bSArPSBzLncgKiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX3RtcF8w
X2luQ29sb3IsIF90bXBfMV9jb29yZHMgKyBmbG9hdDIocy56ICogdWRpcl9TMV9jMCkpOwogIDI1
CX0KICAyNglyZXR1cm4gaGFsZjQoc3VtKTsKICAyNwl9CiAgMjgJCiAgMjkJaGFsZjQgTWF0cml4
RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgewogIDMwCXJldHVybiBydW50aW1lX3NoYWRlcl9TMV9j
MChfaW5wdXQpOwogIDMxCX0KICAzMgkKICAzMwl2b2lkIG1haW4oKSB7Ly8gU3RhZ2UgMCwgUXVh
ZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCiAgMzQJaGFsZjQgb3V0cHV0Q29sb3JfUzA7b3V0
cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7Y29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBo
YWxmNCgxKTtoYWxmNCBvdXRwdXRfUzE7b3V0cHV0X1MxID0gTWF0cml4RWZmZWN0X1MxKG91dHB1
dENvbG9yX1MwKTt7IC8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgogIDM1CXNrX0ZyYWdD
b2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwO319CiAgMzYJLy8gVmVydGV4IEdM
U0wKICAzNwkjdmVyc2lvbiAxMDAKICAzOAkKICAzOQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
ICA0MAlwcmVjaXNpb24gbWVkaXVtcCBzYW1wbGVyMkQ7CiAgNDEJdW5pZm9ybSBoaWdocCB2ZWM0
IHNrX1JUQWRqdXN0OwogIDQyCXVuaWZvcm0gaGlnaHAgbWF0MyB1bWF0cml4X1MxOwogIDQzCWF0
dHJpYnV0ZSBoaWdocCB2ZWMyIHBvc2l0aW9uOwogIDQ0CWF0dHJpYnV0ZSBtZWRpdW1wIHZlYzQg
Y29sb3I7CiAgNDUJYXR0cmlidXRlIGhpZ2hwIHZlYzIgbG9jYWxDb29yZDsKICA0Ngl2YXJ5aW5n
IG1lZGl1bXAgdmVjNCB2Y29sb3JfUzA7CiAgNDcJdmFyeWluZyBoaWdocCB2ZWMyIHZUcmFuc2Zv
cm1lZENvb3Jkc18yX1MwOwogIDQ4CXZvaWQgbWFpbigpIHsKICA0OQl2Y29sb3JfUzAgPSBjb2xv
cjsKICA1MAlnbF9Qb3NpdGlvbiA9IHZlYzQocG9zaXRpb24sIDAuMCwgMS4wKTsKICA1MQl7CiAg
NTIJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAgPSAodW1hdHJpeF9TMSAqIHZlYzMobG9jYWxDb29y
ZCwgMS4wKSkueHk7CiAgNTMJfQogIDU0CWdsX1Bvc2l0aW9uID0gdmVjNChnbF9Qb3NpdGlvbi54
eSAqIHNrX1JUQWRqdXN0Lnh6ICsgZ2xfUG9zaXRpb24ud3cgKiBza19SVEFkanVzdC55dywgMC4w
LCBnbF9Qb3NpdGlvbi53KTsKICA1NQl9CiAgNTYJCiAgNTcJLy8gRnJhZ21lbnQgR0xTTAogIDU4
CSN2ZXJzaW9uIDEwMAogIDU5CQogIDYwCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwogIDYxCXBy
ZWNpc2lvbiBtZWRpdW1wIHNhbXBsZXIyRDsKICA2Mgljb25zdCBoaWdocCBpbnQga01heExvb3BM
aW1pdF9TMV9jMCA9IDQ7CiAgNjMJdW5pZm9ybSBoaWdocCB2ZWM0IHVjbGFtcF9TMV9jMF9jMF9j
MDsKICA2NAl1bmlmb3JtIGhpZ2hwIG1hdDMgdW1hdHJpeF9TMV9jMF9jMDsKICA2NQl1bmlmb3Jt
IG1lZGl1bXAgdmVjNCB1b2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFsxNF07CiAgNjYJdW5pZm9ybSBt
ZWRpdW1wIHZlYzIgdWRpcl9TMV9jMDsKICA2Nwl1bmlmb3JtIGhpZ2hwIG1hdDMgdW1hdHJpeF9T
MTsKICA2OAl1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKICA2OQl2YXJ5
aW5nIG1lZGl1bXAgdmVjNCB2Y29sb3JfUzA7CiAgNzAJdmFyeWluZyBoaWdocCB2ZWMyIHZUcmFu
c2Zvcm1lZENvb3Jkc18yX1MwOwogIDcxCXZvaWQgbWFpbigpIHsKICA3MgloaWdocCB2ZWMyIF8y
Nl90bXBfMV9jb29yZHMgPSB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKICA3MwltZWRpdW1wIHZl
YzQgXzI3X3N1bSA9IHZlYzQoMC4wKTsKICA3NAlmb3IgKGhpZ2hwIGludCBfMjhfaSA9IDA7XzI4
X2kgPCBrTWF4TG9vcExpbWl0X1MxX2MwOyArK18yOF9pKSB7CiAgNzUJbWVkaXVtcCB2ZWM0IF8y
OV9zID0gdW9mZnNldHNBbmRLZXJuZWxfUzFfYzBbXzI4X2ldOwogIDc2CWhpZ2hwIHZlYzIgXzMw
X2luQ29vcmQgPSAodW1hdHJpeF9TMV9jMF9jMCAqIHZlYzMoXzI2X3RtcF8xX2Nvb3JkcyArIF8y
OV9zLnggKiB1ZGlyX1MxX2MwLCAxLjApKS54eTsKICA3NwloaWdocCB2ZWMyIF8zMV9zdWJzZXRD
b29yZDsKICA3OAlfMzFfc3Vic2V0Q29vcmQueCA9IF8zMF9pbkNvb3JkLng7CiAgNzkJXzMxX3N1
YnNldENvb3JkLnkgPSBfMzBfaW5Db29yZC55OwogIDgwCWhpZ2hwIHZlYzIgXzMyX2NsYW1wZWRD
b29yZCA9IGNsYW1wKF8zMV9zdWJzZXRDb29yZCwgdWNsYW1wX1MxX2MwX2MwX2MwLnh5LCB1Y2xh
bXBfUzFfYzBfYzBfYzAuencpOwogIDgxCW1lZGl1bXAgdmVjNCBfMzNfdGV4dHVyZUNvbG9yID0g
dGV4dHVyZTJEKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfMzJfY2xhbXBlZENvb3JkLCAtMC40NzUp
OwogIDgyCV8yN19zdW0gKz0gXzI5X3MueSAqIF8zM190ZXh0dXJlQ29sb3I7CiAgODMJaGlnaHAg
dmVjMiBfMzRfaW5Db29yZCA9ICh1bWF0cml4X1MxX2MwX2MwICogdmVjMyhfMjZfdG1wXzFfY29v
cmRzICsgXzI5X3MueiAqIHVkaXJfUzFfYzAsIDEuMCkpLnh5OwogIDg0CWhpZ2hwIHZlYzIgXzM1
X3N1YnNldENvb3JkOwogIDg1CV8zNV9zdWJzZXRDb29yZC54ID0gXzM0X2luQ29vcmQueDsKICA4
NglfMzVfc3Vic2V0Q29vcmQueSA9IF8zNF9pbkNvb3JkLnk7CiAgODcJaGlnaHAgdmVjMiBfMzZf
Y2xhbXBlZENvb3JkID0gY2xhbXAoXzM1X3N1YnNldENvb3JkLCB1Y2xhbXBfUzFfYzBfYzBfYzAu
eHksIHVjbGFtcF9TMV9jMF9jMF9jMC56dyk7CiAgODgJbWVkaXVtcCB2ZWM0IF8zN190ZXh0dXJl
Q29sb3IgPSB0ZXh0dXJlMkQodVRleHR1cmVTYW1wbGVyXzBfUzEsIF8zNl9jbGFtcGVkQ29vcmQs
IC0wLjQ3NSk7CiAgODkJXzI3X3N1bSArPSBfMjlfcy53ICogXzM3X3RleHR1cmVDb2xvcjsKICA5
MAl9CiAgOTEJbWVkaXVtcCB2ZWM0IG91dHB1dF9TMSA9IF8yN19zdW07CiAgOTIJewogIDkzCWds
X0ZyYWdDb2xvciA9IG91dHB1dF9TMTsKICA5NAl9CiAgOTUJfQogIDk2CQogIDk3CQpFcnJvcnM6
CmVycm9yOiBFeGNlZWRlZCBtYXggbnIgaW5kaXJlY3QgdGV4dHVyZSBsb29rdXBzICg5LzQpCgpT
aGFkZXIgY29tcGlsYXRpb24gZXJyb3IKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIDEJLy8g
VmVydGV4IFNLU0wKICAgMgl1bmlmb3JtIGZsb2F0NCBza19SVEFkanVzdDt1bmlmb3JtIGZsb2F0
M3gzIHVtYXRyaXhfUzE7aW4gZmxvYXQyIHBvc2l0aW9uO2luIGhhbGY0IGNvbG9yO2luIGZsb2F0
MiBsb2NhbENvb3JkO291dCBoYWxmNCB2Y29sb3JfUzA7b3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRD
b29yZHNfMl9TMDt2b2lkIG1haW4oKSB7Ly8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRn
ZUFBR2VvbWV0cnlQcm9jZXNzb3IKICAgMwl2Y29sb3JfUzAgPSBjb2xvcjtza19Qb3NpdGlvbiA9
IHBvc2l0aW9uLnh5MDE7ewogICA0CXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gKHVtYXRyaXhf
UzEgKiBsb2NhbENvb3JkLnh5MSkueHk7CiAgIDUJfQogICA2CX0KICAgNwkvLyBGcmFnbWVudCBT
S1NMCiAgIDgJY29uc3QgaW50IGtNYXhMb29wTGltaXRfUzFfYzAgPSA0OwogICA5CXVuaWZvcm0g
ZmxvYXQ0IHVjbGFtcF9TMV9jMF9jMF9jMDt1bmlmb3JtIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBf
YzA7dW5pZm9ybSBoYWxmNCB1b2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFsxNF07dW5pZm9ybSBoYWxm
MiB1ZGlyX1MxX2MwO3VuaWZvcm0gZmxvYXQzeDMgdW1hdHJpeF9TMTtzYW1wbGVyMkQgdVRleHR1
cmVTYW1wbGVyXzBfUzE7CiAgMTAJaW4gaGFsZjQgdmNvbG9yX1MwO2luIGZsb2F0MiB2VHJhbnNm
b3JtZWRDb29yZHNfMl9TMDtoYWxmNCBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKGhhbGY0IF9p
bnB1dCwgZmxvYXQyIF9jb29yZHMpIHsKICAxMQlmbG9hdDIgaW5Db29yZCA9IF9jb29yZHM7Zmxv
YXQyIHN1YnNldENvb3JkO3N1YnNldENvb3JkLnggPSBpbkNvb3JkLng7c3Vic2V0Q29vcmQueSA9
IGluQ29vcmQueTtmbG9hdDIgY2xhbXBlZENvb3JkO2NsYW1wZWRDb29yZCA9IGNsYW1wKHN1YnNl
dENvb3JkLCB1Y2xhbXBfUzFfYzBfYzBfYzAueHksIHVjbGFtcF9TMV9jMF9jMF9jMC56dyk7aGFs
ZjQgdGV4dHVyZUNvbG9yID0gc2FtcGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBjbGFtcGVkQ29v
cmQpO3JldHVybiB0ZXh0dXJlQ29sb3I7fQogIDEyCQogIDEzCWhhbGY0IE1hdHJpeEVmZmVjdF9T
MV9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSB7CiAgMTQJcmV0dXJuIFRleHR1
cmVFZmZlY3RfUzFfYzBfYzBfYzAoX2lucHV0LCAoKHVtYXRyaXhfUzFfYzBfYzApICogX2Nvb3Jk
cy54eTEpLnh5KTsKICAxNQl9CiAgMTYJCiAgMTcJaGFsZjQgcnVudGltZV9zaGFkZXJfUzFfYzAo
aGFsZjQgX2lucHV0KSB7CiAgMTgJaGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CiAgMTkJ
ZmxvYXQyIF90bXBfMV9jb29yZHMgPSB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKICAyMAloYWxm
NCBzdW0gPSBoYWxmNCgwLjApOwogIDIxCWZvciAoaW50IGkgPSAwO2kgPCBrTWF4TG9vcExpbWl0
X1MxX2MwOyArK2kpIHsKICAyMgloYWxmNCBzID0gdW9mZnNldHNBbmRLZXJuZWxfUzFfYzBbaV07
CiAgMjMJc3VtICs9IHMueSAqIE1hdHJpeEVmZmVjdF9TMV9jMF9jMChfdG1wXzBfaW5Db2xvciwg
X3RtcF8xX2Nvb3JkcyArIGZsb2F0MihzLnggKiB1ZGlyX1MxX2MwKSk7CiAgMjQJc3VtICs9IHMu
dyAqIE1hdHJpeEVmZmVjdF9TMV9jMF9jMChfdG1wXzBfaW5Db2xvciwgX3RtcF8xX2Nvb3JkcyAr
IGZsb2F0MihzLnogKiB1ZGlyX1MxX2MwKSk7CiAgMjUJfQogIDI2CXJldHVybiBoYWxmNChzdW0p
OwogIDI3CX0KICAyOAkKICAyOQloYWxmNCBNYXRyaXhFZmZlY3RfUzEoaGFsZjQgX2lucHV0KSB7
CiAgMzAJcmV0dXJuIHJ1bnRpbWVfc2hhZGVyX1MxX2MwKF9pbnB1dCk7CiAgMzEJfQogIDMyCQog
IDMzCXZvaWQgbWFpbigpIHsvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNz
b3IKICAzNAloYWxmNCBvdXRwdXRDb2xvcl9TMDtvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDtj
b25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpO2hhbGY0IG91dHB1dF9TMTtv
dXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3JfUzApO3sgLy8gWGZlciBQcm9j
ZXNzb3I6IFBvcnRlciBEdWZmCiAgMzUJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0
Q292ZXJhZ2VfUzA7fX0KICAzNgkvLyBWZXJ0ZXggR0xTTAogIDM3CSN2ZXJzaW9uIDEwMAogIDM4
CQogIDM5CXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwogIDQwCXByZWNpc2lvbiBtZWRpdW1wIHNh
bXBsZXIyRDsKICA0MQl1bmlmb3JtIGhpZ2hwIHZlYzQgc2tfUlRBZGp1c3Q7CiAgNDIJdW5pZm9y
bSBoaWdocCBtYXQzIHVtYXRyaXhfUzE7CiAgNDMJYXR0cmlidXRlIGhpZ2hwIHZlYzIgcG9zaXRp
b247CiAgNDQJYXR0cmlidXRlIG1lZGl1bXAgdmVjNCBjb2xvcjsKICA0NQlhdHRyaWJ1dGUgaGln
aHAgdmVjMiBsb2NhbENvb3JkOwogIDQ2CXZhcnlpbmcgbWVkaXVtcCB2ZWM0IHZjb2xvcl9TMDsK
ICA0Nwl2YXJ5aW5nIGhpZ2hwIHZlYzIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CiAgNDgJdm9p
ZCBtYWluKCkgewogIDQ5CXZjb2xvcl9TMCA9IGNvbG9yOwogIDUwCWdsX1Bvc2l0aW9uID0gdmVj
NChwb3NpdGlvbiwgMC4wLCAxLjApOwogIDUxCXsKICA1Mgl2VHJhbnNmb3JtZWRDb29yZHNfMl9T
MCA9ICh1bWF0cml4X1MxICogdmVjMyhsb2NhbENvb3JkLCAxLjApKS54eTsKICA1Mwl9CiAgNTQJ
Z2xfUG9zaXRpb24gPSB2ZWM0KGdsX1Bvc2l0aW9uLnh5ICogc2tfUlRBZGp1c3QueHogKyBnbF9Q
b3NpdGlvbi53dyAqIHNrX1JUQWRqdXN0Lnl3LCAwLjAsIGdsX1Bvc2l0aW9uLncpOwogIDU1CX0K
ICA1NgkKICA1NwkvLyBGcmFnbWVudCBHTFNMCiAgNTgJI3ZlcnNpb24gMTAwCiAgNTkJCiAgNjAJ
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CiAgNjEJcHJlY2lzaW9uIG1lZGl1bXAgc2FtcGxlcjJE
OwogIDYyCWNvbnN0IGhpZ2hwIGludCBrTWF4TG9vcExpbWl0X1MxX2MwID0gNDsKICA2Mwl1bmlm
b3JtIGhpZ2hwIHZlYzQgdWNsYW1wX1MxX2MwX2MwX2MwOwogIDY0CXVuaWZvcm0gaGlnaHAgbWF0
MyB1bWF0cml4X1MxX2MwX2MwOwogIDY1CXVuaWZvcm0gbWVkaXVtcCB2ZWM0IHVvZmZzZXRzQW5k
S2VybmVsX1MxX2MwWzE0XTsKICA2Ngl1bmlmb3JtIG1lZGl1bXAgdmVjMiB1ZGlyX1MxX2MwOwog
IDY3CXVuaWZvcm0gaGlnaHAgbWF0MyB1bWF0cml4X1MxOwogIDY4CXVuaWZvcm0gc2FtcGxlcjJE
IHVUZXh0dXJlU2FtcGxlcl8wX1MxOwogIDY5CXZhcnlpbmcgbWVkaXVtcCB2ZWM0IHZjb2xvcl9T
MDsKICA3MAl2YXJ5aW5nIGhpZ2hwIHZlYzIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CiAgNzEJ
dm9pZCBtYWluKCkgewogIDcyCWhpZ2hwIHZlYzIgXzI2X3RtcF8xX2Nvb3JkcyA9IHZUcmFuc2Zv
cm1lZENvb3Jkc18yX1MwOwogIDczCW1lZGl1bXAgdmVjNCBfMjdfc3VtID0gdmVjNCgwLjApOwog
IDc0CWZvciAoaGlnaHAgaW50IF8yOF9pID0gMDtfMjhfaSA8IGtNYXhMb29wTGltaXRfUzFfYzA7
ICsrXzI4X2kpIHsKICA3NQltZWRpdW1wIHZlYzQgXzI5X3MgPSB1b2Zmc2V0c0FuZEtlcm5lbF9T
MV9jMFtfMjhfaV07CiAgNzYJaGlnaHAgdmVjMiBfMzBfaW5Db29yZCA9ICh1bWF0cml4X1MxX2Mw
X2MwICogdmVjMyhfMjZfdG1wXzFfY29vcmRzICsgXzI5X3MueCAqIHVkaXJfUzFfYzAsIDEuMCkp
Lnh5OwogIDc3CWhpZ2hwIHZlYzIgXzMxX3N1YnNldENvb3JkOwogIDc4CV8zMV9zdWJzZXRDb29y
ZC54ID0gXzMwX2luQ29vcmQueDsKICA3OQlfMzFfc3Vic2V0Q29vcmQueSA9IF8zMF9pbkNvb3Jk
Lnk7CiAgODAJaGlnaHAgdmVjMiBfMzJfY2xhbXBlZENvb3JkID0gY2xhbXAoXzMxX3N1YnNldENv
b3JkLCB1Y2xhbXBfUzFfYzBfYzBfYzAueHksIHVjbGFtcF9TMV9jMF9jMF9jMC56dyk7CiAgODEJ
bWVkaXVtcCB2ZWM0IF8zM190ZXh0dXJlQ29sb3IgPSB0ZXh0dXJlMkQodVRleHR1cmVTYW1wbGVy
XzBfUzEsIF8zMl9jbGFtcGVkQ29vcmQsIC0wLjQ3NSk7CiAgODIJXzI3X3N1bSArPSBfMjlfcy55
ICogXzMzX3RleHR1cmVDb2xvcjsKICA4MwloaWdocCB2ZWMyIF8zNF9pbkNvb3JkID0gKHVtYXRy
aXhfUzFfYzBfYzAgKiB2ZWMzKF8yNl90bXBfMV9jb29yZHMgKyBfMjlfcy56ICogdWRpcl9TMV9j
MCwgMS4wKSkueHk7CiAgODQJaGlnaHAgdmVjMiBfMzVfc3Vic2V0Q29vcmQ7CiAgODUJXzM1X3N1
YnNldENvb3JkLnggPSBfMzRfaW5Db29yZC54OwogIDg2CV8zNV9zdWJzZXRDb29yZC55ID0gXzM0
X2luQ29vcmQueTsKICA4NwloaWdocCB2ZWMyIF8zNl9jbGFtcGVkQ29vcmQgPSBjbGFtcChfMzVf
c3Vic2V0Q29vcmQsIHVjbGFtcF9TMV9jMF9jMF9jMC54eSwgdWNsYW1wX1MxX2MwX2MwX2MwLnp3
KTsKICA4OAltZWRpdW1wIHZlYzQgXzM3X3RleHR1cmVDb2xvciA9IHRleHR1cmUyRCh1VGV4dHVy
ZVNhbXBsZXJfMF9TMSwgXzM2X2NsYW1wZWRDb29yZCwgLTAuNDc1KTsKICA4OQlfMjdfc3VtICs9
IF8yOV9zLncgKiBfMzdfdGV4dHVyZUNvbG9yOwogIDkwCX0KICA5MQltZWRpdW1wIHZlYzQgb3V0
cHV0X1MxID0gXzI3X3N1bTsKICA5Mgl7CiAgOTMJZ2xfRnJhZ0NvbG9yID0gb3V0cHV0X1MxOwog
IDk0CX0KICA5NQl9CiAgOTYJCiAgOTcJCkVycm9yczoKZXJyb3I6IEV4Y2VlZGVkIG1heCBuciBp
bmRpcmVjdCB0ZXh0dXJlIGxvb2t1cHMgKDkvNCkKCkZhaWxlZCB0byBjcmVhdGUgRE1BLUJVRiB0
ZXh0dXJlIG9mIHNpemUgMTAyNHg2OTM6IFVuc3VwcG9ydGVkIGRtYWJ1ZiBmb3JtYXQ6IFhSMjQ6
MHhmZmZmZmZmZmZmZmZmZgpTaGFkZXIgY29tcGlsYXRpb24gZXJyb3IKLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCiAgIDEJLy8gVmVydGV4IFNLU0wKICAgMgl1bmlmb3JtIGZsb2F0NCBza19SVEFk
anVzdDt1bmlmb3JtIGZsb2F0M3gzIHVtYXRyaXhfUzE7aW4gZmxvYXQyIHBvc2l0aW9uO2luIGhh
bGY0IGNvbG9yO2luIGZsb2F0MiBsb2NhbENvb3JkO291dCBoYWxmNCB2Y29sb3JfUzA7b3V0IGZs
b2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDt2b2lkIG1haW4oKSB7Ly8gUHJpbWl0aXZlIFBy
b2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKICAgMwl2Y29sb3JfUzAgPSBj
b2xvcjtza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7ewogICA0CXZUcmFuc2Zvcm1lZENvb3Jk
c18yX1MwID0gKHVtYXRyaXhfUzEgKiBsb2NhbENvb3JkLnh5MSkueHk7CiAgIDUJfQogICA2CX0K
ICAgNwkvLyBGcmFnbWVudCBTS1NMCiAgIDgJY29uc3QgaW50IGtNYXhMb29wTGltaXRfUzFfYzAg
PSAyOwogICA5CXVuaWZvcm0gZmxvYXQ0IHVjbGFtcF9TMV9jMF9jMF9jMDt1bmlmb3JtIGZsb2F0
M3gzIHVtYXRyaXhfUzFfYzBfYzA7dW5pZm9ybSBoYWxmNCB1b2Zmc2V0c0FuZEtlcm5lbF9TMV9j
MFsxNF07dW5pZm9ybSBoYWxmMiB1ZGlyX1MxX2MwO3VuaWZvcm0gZmxvYXQzeDMgdW1hdHJpeF9T
MTtzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CiAgMTAJaW4gaGFsZjQgdmNvbG9yX1Mw
O2luIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDtoYWxmNCBUZXh0dXJlRWZmZWN0X1Mx
X2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIHsKICAxMQlmbG9hdDIgaW5D
b29yZCA9IF9jb29yZHM7ZmxvYXQyIHN1YnNldENvb3JkO3N1YnNldENvb3JkLnggPSBpbkNvb3Jk
Lng7c3Vic2V0Q29vcmQueSA9IGluQ29vcmQueTtmbG9hdDIgY2xhbXBlZENvb3JkO2NsYW1wZWRD
b29yZCA9IGNsYW1wKHN1YnNldENvb3JkLCB1Y2xhbXBfUzFfYzBfYzBfYzAueHksIHVjbGFtcF9T
MV9jMF9jMF9jMC56dyk7aGFsZjQgdGV4dHVyZUNvbG9yID0gc2FtcGxlKHVUZXh0dXJlU2FtcGxl
cl8wX1MxLCBjbGFtcGVkQ29vcmQpO3JldHVybiB0ZXh0dXJlQ29sb3I7fQogIDEyCQogIDEzCWhh
bGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSB7
CiAgMTQJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoX2lucHV0LCAoKHVtYXRyaXhf
UzFfYzBfYzApICogX2Nvb3Jkcy54eTEpLnh5KTsKICAxNQl9CiAgMTYJCiAgMTcJaGFsZjQgcnVu
dGltZV9zaGFkZXJfUzFfYzAoaGFsZjQgX2lucHV0KSB7CiAgMTgJaGFsZjQgX3RtcF8wX2luQ29s
b3IgPSBfaW5wdXQ7CiAgMTkJZmxvYXQyIF90bXBfMV9jb29yZHMgPSB2VHJhbnNmb3JtZWRDb29y
ZHNfMl9TMDsKICAyMAloYWxmNCBzdW0gPSBoYWxmNCgwLjApOwogIDIxCWZvciAoaW50IGkgPSAw
O2kgPCBrTWF4TG9vcExpbWl0X1MxX2MwOyArK2kpIHsKICAyMgloYWxmNCBzID0gdW9mZnNldHNB
bmRLZXJuZWxfUzFfYzBbaV07CiAgMjMJc3VtICs9IHMueSAqIE1hdHJpeEVmZmVjdF9TMV9jMF9j
MChfdG1wXzBfaW5Db2xvciwgX3RtcF8xX2Nvb3JkcyArIGZsb2F0MihzLnggKiB1ZGlyX1MxX2Mw
KSk7CiAgMjQJc3VtICs9IHMudyAqIE1hdHJpeEVmZmVjdF9TMV9jMF9jMChfdG1wXzBfaW5Db2xv
ciwgX3RtcF8xX2Nvb3JkcyArIGZsb2F0MihzLnogKiB1ZGlyX1MxX2MwKSk7CiAgMjUJfQogIDI2
CXJldHVybiBoYWxmNChzdW0pOwogIDI3CX0KICAyOAkKICAyOQloYWxmNCBNYXRyaXhFZmZlY3Rf
UzEoaGFsZjQgX2lucHV0KSB7CiAgMzAJcmV0dXJuIHJ1bnRpbWVfc2hhZGVyX1MxX2MwKF9pbnB1
dCk7CiAgMzEJfQogIDMyCQogIDMzCXZvaWQgbWFpbigpIHsvLyBTdGFnZSAwLCBRdWFkUGVyRWRn
ZUFBR2VvbWV0cnlQcm9jZXNzb3IKICAzNAloYWxmNCBvdXRwdXRDb2xvcl9TMDtvdXRwdXRDb2xv
cl9TMCA9IHZjb2xvcl9TMDtjb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEp
O2hhbGY0IG91dHB1dF9TMTtvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3Jf
UzApO3sgLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCiAgMzUJc2tfRnJhZ0NvbG9yID0g
b3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7fX0KICAzNgkvLyBWZXJ0ZXggR0xTTAogIDM3
CSN2ZXJzaW9uIDEwMAogIDM4CQogIDM5CXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwogIDQwCXBy
ZWNpc2lvbiBtZWRpdW1wIHNhbXBsZXIyRDsKICA0MQl1bmlmb3JtIGhpZ2hwIHZlYzQgc2tfUlRB
ZGp1c3Q7CiAgNDIJdW5pZm9ybSBoaWdocCBtYXQzIHVtYXRyaXhfUzE7CiAgNDMJYXR0cmlidXRl
IGhpZ2hwIHZlYzIgcG9zaXRpb247CiAgNDQJYXR0cmlidXRlIG1lZGl1bXAgdmVjNCBjb2xvcjsK
ICA0NQlhdHRyaWJ1dGUgaGlnaHAgdmVjMiBsb2NhbENvb3JkOwogIDQ2CXZhcnlpbmcgbWVkaXVt
cCB2ZWM0IHZjb2xvcl9TMDsKICA0Nwl2YXJ5aW5nIGhpZ2hwIHZlYzIgdlRyYW5zZm9ybWVkQ29v
cmRzXzJfUzA7CiAgNDgJdm9pZCBtYWluKCkgewogIDQ5CXZjb2xvcl9TMCA9IGNvbG9yOwogIDUw
CWdsX1Bvc2l0aW9uID0gdmVjNChwb3NpdGlvbiwgMC4wLCAxLjApOwogIDUxCXsKICA1Mgl2VHJh
bnNmb3JtZWRDb29yZHNfMl9TMCA9ICh1bWF0cml4X1MxICogdmVjMyhsb2NhbENvb3JkLCAxLjAp
KS54eTsKICA1Mwl9CiAgNTQJZ2xfUG9zaXRpb24gPSB2ZWM0KGdsX1Bvc2l0aW9uLnh5ICogc2tf
UlRBZGp1c3QueHogKyBnbF9Qb3NpdGlvbi53dyAqIHNrX1JUQWRqdXN0Lnl3LCAwLjAsIGdsX1Bv
c2l0aW9uLncpOwogIDU1CX0KICA1NgkKICA1NwkvLyBGcmFnbWVudCBHTFNMCiAgNTgJI3ZlcnNp
b24gMTAwCiAgNTkJCiAgNjAJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CiAgNjEJcHJlY2lzaW9u
IG1lZGl1bXAgc2FtcGxlcjJEOwogIDYyCWNvbnN0IGhpZ2hwIGludCBrTWF4TG9vcExpbWl0X1Mx
X2MwID0gMjsKICA2Mwl1bmlmb3JtIGhpZ2hwIHZlYzQgdWNsYW1wX1MxX2MwX2MwX2MwOwogIDY0
CXVuaWZvcm0gaGlnaHAgbWF0MyB1bWF0cml4X1MxX2MwX2MwOwogIDY1CXVuaWZvcm0gbWVkaXVt
cCB2ZWM0IHVvZmZzZXRzQW5kS2VybmVsX1MxX2MwWzE0XTsKICA2Ngl1bmlmb3JtIG1lZGl1bXAg
dmVjMiB1ZGlyX1MxX2MwOwogIDY3CXVuaWZvcm0gaGlnaHAgbWF0MyB1bWF0cml4X1MxOwogIDY4
CXVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwogIDY5CXZhcnlpbmcgbWVk
aXVtcCB2ZWM0IHZjb2xvcl9TMDsKICA3MAl2YXJ5aW5nIGhpZ2hwIHZlYzIgdlRyYW5zZm9ybWVk
Q29vcmRzXzJfUzA7CiAgNzEJdm9pZCBtYWluKCkgewogIDcyCWhpZ2hwIHZlYzIgXzI2X3RtcF8x
X2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwogIDczCW1lZGl1bXAgdmVjNCBfMjdf
c3VtID0gdmVjNCgwLjApOwogIDc0CWZvciAoaGlnaHAgaW50IF8yOF9pID0gMDtfMjhfaSA8IGtN
YXhMb29wTGltaXRfUzFfYzA7ICsrXzI4X2kpIHsKICA3NQltZWRpdW1wIHZlYzQgXzI5X3MgPSB1
b2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtfMjhfaV07CiAgNzYJaGlnaHAgdmVjMiBfMzBfaW5Db29y
ZCA9ICh1bWF0cml4X1MxX2MwX2MwICogdmVjMyhfMjZfdG1wXzFfY29vcmRzICsgXzI5X3MueCAq
IHVkaXJfUzFfYzAsIDEuMCkpLnh5OwogIDc3CWhpZ2hwIHZlYzIgXzMxX3N1YnNldENvb3JkOwog
IDc4CV8zMV9zdWJzZXRDb29yZC54ID0gXzMwX2luQ29vcmQueDsKICA3OQlfMzFfc3Vic2V0Q29v
cmQueSA9IF8zMF9pbkNvb3JkLnk7CiAgODAJaGlnaHAgdmVjMiBfMzJfY2xhbXBlZENvb3JkID0g
Y2xhbXAoXzMxX3N1YnNldENvb3JkLCB1Y2xhbXBfUzFfYzBfYzBfYzAueHksIHVjbGFtcF9TMV9j
MF9jMF9jMC56dyk7CiAgODEJbWVkaXVtcCB2ZWM0IF8zM190ZXh0dXJlQ29sb3IgPSB0ZXh0dXJl
MkQodVRleHR1cmVTYW1wbGVyXzBfUzEsIF8zMl9jbGFtcGVkQ29vcmQsIC0wLjQ3NSk7CiAgODIJ
XzI3X3N1bSArPSBfMjlfcy55ICogXzMzX3RleHR1cmVDb2xvcjsKICA4MwloaWdocCB2ZWMyIF8z
NF9pbkNvb3JkID0gKHVtYXRyaXhfUzFfYzBfYzAgKiB2ZWMzKF8yNl90bXBfMV9jb29yZHMgKyBf
Mjlfcy56ICogdWRpcl9TMV9jMCwgMS4wKSkueHk7CiAgODQJaGlnaHAgdmVjMiBfMzVfc3Vic2V0
Q29vcmQ7CiAgODUJXzM1X3N1YnNldENvb3JkLnggPSBfMzRfaW5Db29yZC54OwogIDg2CV8zNV9z
dWJzZXRDb29yZC55ID0gXzM0X2luQ29vcmQueTsKICA4NwloaWdocCB2ZWMyIF8zNl9jbGFtcGVk
Q29vcmQgPSBjbGFtcChfMzVfc3Vic2V0Q29vcmQsIHVjbGFtcF9TMV9jMF9jMF9jMC54eSwgdWNs
YW1wX1MxX2MwX2MwX2MwLnp3KTsKICA4OAltZWRpdW1wIHZlYzQgXzM3X3RleHR1cmVDb2xvciA9
IHRleHR1cmUyRCh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgXzM2X2NsYW1wZWRDb29yZCwgLTAuNDc1
KTsKICA4OQlfMjdfc3VtICs9IF8yOV9zLncgKiBfMzdfdGV4dHVyZUNvbG9yOwogIDkwCX0KICA5
MQltZWRpdW1wIHZlYzQgb3V0cHV0X1MxID0gXzI3X3N1bTsKICA5Mgl7CiAgOTMJZ2xfRnJhZ0Nv
bG9yID0gb3V0cHV0X1MxOwogIDk0CX0KICA5NQl9CiAgOTYJCiAgOTcJCkVycm9yczoKZXJyb3I6
IEV4Y2VlZGVkIG1heCBuciBpbmRpcmVjdCB0ZXh0dXJlIGxvb2t1cHMgKDUvNCkKClNoYWRlciBj
b21waWxhdGlvbiBlcnJvcgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgMQkvLyBWZXJ0ZXgg
U0tTTAogICAyCXVuaWZvcm0gZmxvYXQ0IHNrX1JUQWRqdXN0O3VuaWZvcm0gZmxvYXQzeDMgdW1h
dHJpeF9TMTtpbiBmbG9hdDIgcG9zaXRpb247aW4gaGFsZjQgY29sb3I7aW4gZmxvYXQyIGxvY2Fs
Q29vcmQ7b3V0IGhhbGY0IHZjb2xvcl9TMDtvdXQgZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18y
X1MwO3ZvaWQgbWFpbigpIHsvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9t
ZXRyeVByb2Nlc3NvcgogICAzCXZjb2xvcl9TMCA9IGNvbG9yO3NrX1Bvc2l0aW9uID0gcG9zaXRp
b24ueHkwMTt7CiAgIDQJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAgPSAodW1hdHJpeF9TMSAqIGxv
Y2FsQ29vcmQueHkxKS54eTsKICAgNQl9CiAgIDYJfQogICA3CS8vIEZyYWdtZW50IFNLU0wKICAg
OAljb25zdCBpbnQga01heExvb3BMaW1pdF9TMV9jMCA9IDI7CiAgIDkJdW5pZm9ybSBmbG9hdDQg
dWNsYW1wX1MxX2MwX2MwX2MwO3VuaWZvcm0gZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDt1bmlm
b3JtIGhhbGY0IHVvZmZzZXRzQW5kS2VybmVsX1MxX2MwWzE0XTt1bmlmb3JtIGhhbGYyIHVkaXJf
UzFfYzA7dW5pZm9ybSBmbG9hdDN4MyB1bWF0cml4X1MxO3NhbXBsZXIyRCB1VGV4dHVyZVNhbXBs
ZXJfMF9TMTsKICAxMAlpbiBoYWxmNCB2Y29sb3JfUzA7aW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENv
b3Jkc18yX1MwO2hhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBm
bG9hdDIgX2Nvb3JkcykgewogIDExCWZsb2F0MiBpbkNvb3JkID0gX2Nvb3JkcztmbG9hdDIgc3Vi
c2V0Q29vcmQ7c3Vic2V0Q29vcmQueCA9IGluQ29vcmQueDtzdWJzZXRDb29yZC55ID0gaW5Db29y
ZC55O2Zsb2F0MiBjbGFtcGVkQ29vcmQ7Y2xhbXBlZENvb3JkID0gY2xhbXAoc3Vic2V0Q29vcmQs
IHVjbGFtcF9TMV9jMF9jMF9jMC54eSwgdWNsYW1wX1MxX2MwX2MwX2MwLnp3KTtoYWxmNCB0ZXh0
dXJlQ29sb3IgPSBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIGNsYW1wZWRDb29yZCk7cmV0
dXJuIHRleHR1cmVDb2xvcjt9CiAgMTIJCiAgMTMJaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2Mw
KGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIHsKICAxNAlyZXR1cm4gVGV4dHVyZUVmZmVj
dF9TMV9jMF9jMF9jMChfaW5wdXQsICgodW1hdHJpeF9TMV9jMF9jMCkgKiBfY29vcmRzLnh5MSku
eHkpOwogIDE1CX0KICAxNgkKICAxNwloYWxmNCBydW50aW1lX3NoYWRlcl9TMV9jMChoYWxmNCBf
aW5wdXQpIHsKICAxOAloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKICAxOQlmbG9hdDIg
X3RtcF8xX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwogIDIwCWhhbGY0IHN1bSA9
IGhhbGY0KDAuMCk7CiAgMjEJZm9yIChpbnQgaSA9IDA7aSA8IGtNYXhMb29wTGltaXRfUzFfYzA7
ICsraSkgewogIDIyCWhhbGY0IHMgPSB1b2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtpXTsKICAyMwlz
dW0gKz0gcy55ICogTWF0cml4RWZmZWN0X1MxX2MwX2MwKF90bXBfMF9pbkNvbG9yLCBfdG1wXzFf
Y29vcmRzICsgZmxvYXQyKHMueCAqIHVkaXJfUzFfYzApKTsKICAyNAlzdW0gKz0gcy53ICogTWF0
cml4RWZmZWN0X1MxX2MwX2MwKF90bXBfMF9pbkNvbG9yLCBfdG1wXzFfY29vcmRzICsgZmxvYXQy
KHMueiAqIHVkaXJfUzFfYzApKTsKICAyNQl9CiAgMjYJcmV0dXJuIGhhbGY0KHN1bSk7CiAgMjcJ
fQogIDI4CQogIDI5CWhhbGY0IE1hdHJpeEVmZmVjdF9TMShoYWxmNCBfaW5wdXQpIHsKICAzMAly
ZXR1cm4gcnVudGltZV9zaGFkZXJfUzFfYzAoX2lucHV0KTsKICAzMQl9CiAgMzIJCiAgMzMJdm9p
ZCBtYWluKCkgey8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgogIDM0
CWhhbGY0IG91dHB1dENvbG9yX1MwO291dHB1dENvbG9yX1MwID0gdmNvbG9yX1MwO2NvbnN0IGhh
bGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7aGFsZjQgb3V0cHV0X1MxO291dHB1dF9T
MSA9IE1hdHJpeEVmZmVjdF9TMShvdXRwdXRDb2xvcl9TMCk7eyAvLyBYZmVyIFByb2Nlc3Nvcjog
UG9ydGVyIER1ZmYKICAzNQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFn
ZV9TMDt9fQogIDM2CS8vIFZlcnRleCBHTFNMCiAgMzcJI3ZlcnNpb24gMTAwCiAgMzgJCiAgMzkJ
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CiAgNDAJcHJlY2lzaW9uIG1lZGl1bXAgc2FtcGxlcjJE
OwogIDQxCXVuaWZvcm0gaGlnaHAgdmVjNCBza19SVEFkanVzdDsKICA0Mgl1bmlmb3JtIGhpZ2hw
IG1hdDMgdW1hdHJpeF9TMTsKICA0MwlhdHRyaWJ1dGUgaGlnaHAgdmVjMiBwb3NpdGlvbjsKICA0
NAlhdHRyaWJ1dGUgbWVkaXVtcCB2ZWM0IGNvbG9yOwogIDQ1CWF0dHJpYnV0ZSBoaWdocCB2ZWMy
IGxvY2FsQ29vcmQ7CiAgNDYJdmFyeWluZyBtZWRpdW1wIHZlYzQgdmNvbG9yX1MwOwogIDQ3CXZh
cnlpbmcgaGlnaHAgdmVjMiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKICA0OAl2b2lkIG1haW4o
KSB7CiAgNDkJdmNvbG9yX1MwID0gY29sb3I7CiAgNTAJZ2xfUG9zaXRpb24gPSB2ZWM0KHBvc2l0
aW9uLCAwLjAsIDEuMCk7CiAgNTEJewogIDUyCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gKHVt
YXRyaXhfUzEgKiB2ZWMzKGxvY2FsQ29vcmQsIDEuMCkpLnh5OwogIDUzCX0KICA1NAlnbF9Qb3Np
dGlvbiA9IHZlYzQoZ2xfUG9zaXRpb24ueHkgKiBza19SVEFkanVzdC54eiArIGdsX1Bvc2l0aW9u
Lnd3ICogc2tfUlRBZGp1c3QueXcsIDAuMCwgZ2xfUG9zaXRpb24udyk7CiAgNTUJfQogIDU2CQog
IDU3CS8vIEZyYWdtZW50IEdMU0wKICA1OAkjdmVyc2lvbiAxMDAKICA1OQkKICA2MAlwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKICA2MQlwcmVjaXNpb24gbWVkaXVtcCBzYW1wbGVyMkQ7CiAgNjIJ
Y29uc3QgaGlnaHAgaW50IGtNYXhMb29wTGltaXRfUzFfYzAgPSAyOwogIDYzCXVuaWZvcm0gaGln
aHAgdmVjNCB1Y2xhbXBfUzFfYzBfYzBfYzA7CiAgNjQJdW5pZm9ybSBoaWdocCBtYXQzIHVtYXRy
aXhfUzFfYzBfYzA7CiAgNjUJdW5pZm9ybSBtZWRpdW1wIHZlYzQgdW9mZnNldHNBbmRLZXJuZWxf
UzFfYzBbMTRdOwogIDY2CXVuaWZvcm0gbWVkaXVtcCB2ZWMyIHVkaXJfUzFfYzA7CiAgNjcJdW5p
Zm9ybSBoaWdocCBtYXQzIHVtYXRyaXhfUzE7CiAgNjgJdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1
cmVTYW1wbGVyXzBfUzE7CiAgNjkJdmFyeWluZyBtZWRpdW1wIHZlYzQgdmNvbG9yX1MwOwogIDcw
CXZhcnlpbmcgaGlnaHAgdmVjMiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKICA3MQl2b2lkIG1h
aW4oKSB7CiAgNzIJaGlnaHAgdmVjMiBfMjZfdG1wXzFfY29vcmRzID0gdlRyYW5zZm9ybWVkQ29v
cmRzXzJfUzA7CiAgNzMJbWVkaXVtcCB2ZWM0IF8yN19zdW0gPSB2ZWM0KDAuMCk7CiAgNzQJZm9y
IChoaWdocCBpbnQgXzI4X2kgPSAwO18yOF9pIDwga01heExvb3BMaW1pdF9TMV9jMDsgKytfMjhf
aSkgewogIDc1CW1lZGl1bXAgdmVjNCBfMjlfcyA9IHVvZmZzZXRzQW5kS2VybmVsX1MxX2MwW18y
OF9pXTsKICA3NgloaWdocCB2ZWMyIF8zMF9pbkNvb3JkID0gKHVtYXRyaXhfUzFfYzBfYzAgKiB2
ZWMzKF8yNl90bXBfMV9jb29yZHMgKyBfMjlfcy54ICogdWRpcl9TMV9jMCwgMS4wKSkueHk7CiAg
NzcJaGlnaHAgdmVjMiBfMzFfc3Vic2V0Q29vcmQ7CiAgNzgJXzMxX3N1YnNldENvb3JkLnggPSBf
MzBfaW5Db29yZC54OwogIDc5CV8zMV9zdWJzZXRDb29yZC55ID0gXzMwX2luQ29vcmQueTsKICA4
MAloaWdocCB2ZWMyIF8zMl9jbGFtcGVkQ29vcmQgPSBjbGFtcChfMzFfc3Vic2V0Q29vcmQsIHVj
bGFtcF9TMV9jMF9jMF9jMC54eSwgdWNsYW1wX1MxX2MwX2MwX2MwLnp3KTsKICA4MQltZWRpdW1w
IHZlYzQgXzMzX3RleHR1cmVDb2xvciA9IHRleHR1cmUyRCh1VGV4dHVyZVNhbXBsZXJfMF9TMSwg
XzMyX2NsYW1wZWRDb29yZCwgLTAuNDc1KTsKICA4MglfMjdfc3VtICs9IF8yOV9zLnkgKiBfMzNf
dGV4dHVyZUNvbG9yOwogIDgzCWhpZ2hwIHZlYzIgXzM0X2luQ29vcmQgPSAodW1hdHJpeF9TMV9j
MF9jMCAqIHZlYzMoXzI2X3RtcF8xX2Nvb3JkcyArIF8yOV9zLnogKiB1ZGlyX1MxX2MwLCAxLjAp
KS54eTsKICA4NAloaWdocCB2ZWMyIF8zNV9zdWJzZXRDb29yZDsKICA4NQlfMzVfc3Vic2V0Q29v
cmQueCA9IF8zNF9pbkNvb3JkLng7CiAgODYJXzM1X3N1YnNldENvb3JkLnkgPSBfMzRfaW5Db29y
ZC55OwogIDg3CWhpZ2hwIHZlYzIgXzM2X2NsYW1wZWRDb29yZCA9IGNsYW1wKF8zNV9zdWJzZXRD
b29yZCwgdWNsYW1wX1MxX2MwX2MwX2MwLnh5LCB1Y2xhbXBfUzFfYzBfYzBfYzAuencpOwogIDg4
CW1lZGl1bXAgdmVjNCBfMzdfdGV4dHVyZUNvbG9yID0gdGV4dHVyZTJEKHVUZXh0dXJlU2FtcGxl
cl8wX1MxLCBfMzZfY2xhbXBlZENvb3JkLCAtMC40NzUpOwogIDg5CV8yN19zdW0gKz0gXzI5X3Mu
dyAqIF8zN190ZXh0dXJlQ29sb3I7CiAgOTAJfQogIDkxCW1lZGl1bXAgdmVjNCBvdXRwdXRfUzEg
PSBfMjdfc3VtOwogIDkyCXsKICA5MwlnbF9GcmFnQ29sb3IgPSBvdXRwdXRfUzE7CiAgOTQJfQog
IDk1CX0KICA5NgkKICA5NwkKRXJyb3JzOgplcnJvcjogRXhjZWVkZWQgbWF4IG5yIGluZGlyZWN0
IHRleHR1cmUgbG9va3VwcyAoNS80KQoKRmFpbGVkIHRvIGNyZWF0ZSBETUEtQlVGIHRleHR1cmUg
b2Ygc2l6ZSAxMDI0eDY5MzogVW5zdXBwb3J0ZWQgZG1hYnVmIGZvcm1hdDogWFIyNDoweGZmZmZm
ZmZmZmZmZmZmClNoYWRlciBjb21waWxhdGlvbiBlcnJvcgotLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KICAgMQkvLyBWZXJ0ZXggU0tTTAogICAyCXVuaWZvcm0gZmxvYXQ0IHNrX1JUQWRqdXN0O3Vu
aWZvcm0gZmxvYXQzeDMgdW1hdHJpeF9TMTtpbiBmbG9hdDIgcG9zaXRpb247aW4gaGFsZjQgY29s
b3I7aW4gZmxvYXQyIGxvY2FsQ29vcmQ7b3V0IGhhbGY0IHZjb2xvcl9TMDtvdXQgZmxvYXQyIHZU
cmFuc2Zvcm1lZENvb3Jkc18yX1MwO3ZvaWQgbWFpbigpIHsvLyBQcmltaXRpdmUgUHJvY2Vzc29y
IFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgogICAzCXZjb2xvcl9TMCA9IGNvbG9yO3Nr
X1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTt7CiAgIDQJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAg
PSAodW1hdHJpeF9TMSAqIGxvY2FsQ29vcmQueHkxKS54eTsKICAgNQl9CiAgIDYJfQogICA3CS8v
IEZyYWdtZW50IFNLU0wKICAgOAljb25zdCBpbnQga01heExvb3BMaW1pdF9TMV9jMCA9IDQ7CiAg
IDkJdW5pZm9ybSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwX2MwO3VuaWZvcm0gZmxvYXQzeDMgdW1h
dHJpeF9TMV9jMF9jMDt1bmlmb3JtIGhhbGY0IHVvZmZzZXRzQW5kS2VybmVsX1MxX2MwWzE0XTt1
bmlmb3JtIGhhbGYyIHVkaXJfUzFfYzA7dW5pZm9ybSBmbG9hdDN4MyB1bWF0cml4X1MxO3NhbXBs
ZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKICAxMAlpbiBoYWxmNCB2Y29sb3JfUzA7aW4gZmxv
YXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwO2hhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzBfYzBf
YzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgewogIDExCWZsb2F0MiBpbkNvb3JkID0g
X2Nvb3JkcztmbG9hdDIgc3Vic2V0Q29vcmQ7c3Vic2V0Q29vcmQueCA9IGluQ29vcmQueDtzdWJz
ZXRDb29yZC55ID0gaW5Db29yZC55O2Zsb2F0MiBjbGFtcGVkQ29vcmQ7Y2xhbXBlZENvb3JkID0g
Y2xhbXAoc3Vic2V0Q29vcmQsIHVjbGFtcF9TMV9jMF9jMF9jMC54eSwgdWNsYW1wX1MxX2MwX2Mw
X2MwLnp3KTtoYWxmNCB0ZXh0dXJlQ29sb3IgPSBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEs
IGNsYW1wZWRDb29yZCk7cmV0dXJuIHRleHR1cmVDb2xvcjt9CiAgMTIJCiAgMTMJaGFsZjQgTWF0
cml4RWZmZWN0X1MxX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMpIHsKICAxNAly
ZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChfaW5wdXQsICgodW1hdHJpeF9TMV9jMF9j
MCkgKiBfY29vcmRzLnh5MSkueHkpOwogIDE1CX0KICAxNgkKICAxNwloYWxmNCBydW50aW1lX3No
YWRlcl9TMV9jMChoYWxmNCBfaW5wdXQpIHsKICAxOAloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9p
bnB1dDsKICAxOQlmbG9hdDIgX3RtcF8xX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1Mw
OwogIDIwCWhhbGY0IHN1bSA9IGhhbGY0KDAuMCk7CiAgMjEJZm9yIChpbnQgaSA9IDA7aSA8IGtN
YXhMb29wTGltaXRfUzFfYzA7ICsraSkgewogIDIyCWhhbGY0IHMgPSB1b2Zmc2V0c0FuZEtlcm5l
bF9TMV9jMFtpXTsKICAyMwlzdW0gKz0gcy55ICogTWF0cml4RWZmZWN0X1MxX2MwX2MwKF90bXBf
MF9pbkNvbG9yLCBfdG1wXzFfY29vcmRzICsgZmxvYXQyKHMueCAqIHVkaXJfUzFfYzApKTsKICAy
NAlzdW0gKz0gcy53ICogTWF0cml4RWZmZWN0X1MxX2MwX2MwKF90bXBfMF9pbkNvbG9yLCBfdG1w
XzFfY29vcmRzICsgZmxvYXQyKHMueiAqIHVkaXJfUzFfYzApKTsKICAyNQl9CiAgMjYJcmV0dXJu
IGhhbGY0KHN1bSk7CiAgMjcJfQogIDI4CQogIDI5CWhhbGY0IE1hdHJpeEVmZmVjdF9TMShoYWxm
NCBfaW5wdXQpIHsKICAzMAlyZXR1cm4gcnVudGltZV9zaGFkZXJfUzFfYzAoX2lucHV0KTsKICAz
MQl9CiAgMzIJCiAgMzMJdm9pZCBtYWluKCkgey8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9t
ZXRyeVByb2Nlc3NvcgogIDM0CWhhbGY0IG91dHB1dENvbG9yX1MwO291dHB1dENvbG9yX1MwID0g
dmNvbG9yX1MwO2NvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7aGFsZjQg
b3V0cHV0X1MxO291dHB1dF9TMSA9IE1hdHJpeEVmZmVjdF9TMShvdXRwdXRDb2xvcl9TMCk7eyAv
LyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKICAzNQlza19GcmFnQ29sb3IgPSBvdXRwdXRf
UzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDt9fQogIDM2CS8vIFZlcnRleCBHTFNMCiAgMzcJI3ZlcnNp
b24gMTAwCiAgMzgJCiAgMzkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CiAgNDAJcHJlY2lzaW9u
IG1lZGl1bXAgc2FtcGxlcjJEOwogIDQxCXVuaWZvcm0gaGlnaHAgdmVjNCBza19SVEFkanVzdDsK
ICA0Mgl1bmlmb3JtIGhpZ2hwIG1hdDMgdW1hdHJpeF9TMTsKICA0MwlhdHRyaWJ1dGUgaGlnaHAg
dmVjMiBwb3NpdGlvbjsKICA0NAlhdHRyaWJ1dGUgbWVkaXVtcCB2ZWM0IGNvbG9yOwogIDQ1CWF0
dHJpYnV0ZSBoaWdocCB2ZWMyIGxvY2FsQ29vcmQ7CiAgNDYJdmFyeWluZyBtZWRpdW1wIHZlYzQg
dmNvbG9yX1MwOwogIDQ3CXZhcnlpbmcgaGlnaHAgdmVjMiB2VHJhbnNmb3JtZWRDb29yZHNfMl9T
MDsKICA0OAl2b2lkIG1haW4oKSB7CiAgNDkJdmNvbG9yX1MwID0gY29sb3I7CiAgNTAJZ2xfUG9z
aXRpb24gPSB2ZWM0KHBvc2l0aW9uLCAwLjAsIDEuMCk7CiAgNTEJewogIDUyCXZUcmFuc2Zvcm1l
ZENvb3Jkc18yX1MwID0gKHVtYXRyaXhfUzEgKiB2ZWMzKGxvY2FsQ29vcmQsIDEuMCkpLnh5Owog
IDUzCX0KICA1NAlnbF9Qb3NpdGlvbiA9IHZlYzQoZ2xfUG9zaXRpb24ueHkgKiBza19SVEFkanVz
dC54eiArIGdsX1Bvc2l0aW9uLnd3ICogc2tfUlRBZGp1c3QueXcsIDAuMCwgZ2xfUG9zaXRpb24u
dyk7CiAgNTUJfQogIDU2CQogIDU3CS8vIEZyYWdtZW50IEdMU0wKICA1OAkjdmVyc2lvbiAxMDAK
ICA1OQkKICA2MAlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKICA2MQlwcmVjaXNpb24gbWVkaXVt
cCBzYW1wbGVyMkQ7CiAgNjIJY29uc3QgaGlnaHAgaW50IGtNYXhMb29wTGltaXRfUzFfYzAgPSA0
OwogIDYzCXVuaWZvcm0gaGlnaHAgdmVjNCB1Y2xhbXBfUzFfYzBfYzBfYzA7CiAgNjQJdW5pZm9y
bSBoaWdocCBtYXQzIHVtYXRyaXhfUzFfYzBfYzA7CiAgNjUJdW5pZm9ybSBtZWRpdW1wIHZlYzQg
dW9mZnNldHNBbmRLZXJuZWxfUzFfYzBbMTRdOwogIDY2CXVuaWZvcm0gbWVkaXVtcCB2ZWMyIHVk
aXJfUzFfYzA7CiAgNjcJdW5pZm9ybSBoaWdocCBtYXQzIHVtYXRyaXhfUzE7CiAgNjgJdW5pZm9y
bSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CiAgNjkJdmFyeWluZyBtZWRpdW1wIHZl
YzQgdmNvbG9yX1MwOwogIDcwCXZhcnlpbmcgaGlnaHAgdmVjMiB2VHJhbnNmb3JtZWRDb29yZHNf
Ml9TMDsKICA3MQl2b2lkIG1haW4oKSB7CiAgNzIJaGlnaHAgdmVjMiBfMjZfdG1wXzFfY29vcmRz
ID0gdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CiAgNzMJbWVkaXVtcCB2ZWM0IF8yN19zdW0gPSB2
ZWM0KDAuMCk7CiAgNzQJZm9yIChoaWdocCBpbnQgXzI4X2kgPSAwO18yOF9pIDwga01heExvb3BM
aW1pdF9TMV9jMDsgKytfMjhfaSkgewogIDc1CW1lZGl1bXAgdmVjNCBfMjlfcyA9IHVvZmZzZXRz
QW5kS2VybmVsX1MxX2MwW18yOF9pXTsKICA3NgloaWdocCB2ZWMyIF8zMF9pbkNvb3JkID0gKHVt
YXRyaXhfUzFfYzBfYzAgKiB2ZWMzKF8yNl90bXBfMV9jb29yZHMgKyBfMjlfcy54ICogdWRpcl9T
MV9jMCwgMS4wKSkueHk7CiAgNzcJaGlnaHAgdmVjMiBfMzFfc3Vic2V0Q29vcmQ7CiAgNzgJXzMx
X3N1YnNldENvb3JkLnggPSBfMzBfaW5Db29yZC54OwogIDc5CV8zMV9zdWJzZXRDb29yZC55ID0g
XzMwX2luQ29vcmQueTsKICA4MAloaWdocCB2ZWMyIF8zMl9jbGFtcGVkQ29vcmQgPSBjbGFtcChf
MzFfc3Vic2V0Q29vcmQsIHVjbGFtcF9TMV9jMF9jMF9jMC54eSwgdWNsYW1wX1MxX2MwX2MwX2Mw
Lnp3KTsKICA4MQltZWRpdW1wIHZlYzQgXzMzX3RleHR1cmVDb2xvciA9IHRleHR1cmUyRCh1VGV4
dHVyZVNhbXBsZXJfMF9TMSwgXzMyX2NsYW1wZWRDb29yZCwgLTAuNDc1KTsKICA4MglfMjdfc3Vt
ICs9IF8yOV9zLnkgKiBfMzNfdGV4dHVyZUNvbG9yOwogIDgzCWhpZ2hwIHZlYzIgXzM0X2luQ29v
cmQgPSAodW1hdHJpeF9TMV9jMF9jMCAqIHZlYzMoXzI2X3RtcF8xX2Nvb3JkcyArIF8yOV9zLnog
KiB1ZGlyX1MxX2MwLCAxLjApKS54eTsKICA4NAloaWdocCB2ZWMyIF8zNV9zdWJzZXRDb29yZDsK
ICA4NQlfMzVfc3Vic2V0Q29vcmQueCA9IF8zNF9pbkNvb3JkLng7CiAgODYJXzM1X3N1YnNldENv
b3JkLnkgPSBfMzRfaW5Db29yZC55OwogIDg3CWhpZ2hwIHZlYzIgXzM2X2NsYW1wZWRDb29yZCA9
IGNsYW1wKF8zNV9zdWJzZXRDb29yZCwgdWNsYW1wX1MxX2MwX2MwX2MwLnh5LCB1Y2xhbXBfUzFf
YzBfYzBfYzAuencpOwogIDg4CW1lZGl1bXAgdmVjNCBfMzdfdGV4dHVyZUNvbG9yID0gdGV4dHVy
ZTJEKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfMzZfY2xhbXBlZENvb3JkLCAtMC40NzUpOwogIDg5
CV8yN19zdW0gKz0gXzI5X3MudyAqIF8zN190ZXh0dXJlQ29sb3I7CiAgOTAJfQogIDkxCW1lZGl1
bXAgdmVjNCBvdXRwdXRfUzEgPSBfMjdfc3VtOwogIDkyCXsKICA5MwlnbF9GcmFnQ29sb3IgPSBv
dXRwdXRfUzE7CiAgOTQJfQogIDk1CX0KICA5NgkKICA5NwkKRXJyb3JzOgplcnJvcjogRXhjZWVk
ZWQgbWF4IG5yIGluZGlyZWN0IHRleHR1cmUgbG9va3VwcyAoOS80KQoKU2hhZGVyIGNvbXBpbGF0
aW9uIGVycm9yCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAxCS8vIFZlcnRleCBTS1NMCiAg
IDIJdW5pZm9ybSBmbG9hdDQgc2tfUlRBZGp1c3Q7dW5pZm9ybSBmbG9hdDN4MyB1bWF0cml4X1Mx
O2luIGZsb2F0MiBwb3NpdGlvbjtpbiBoYWxmNCBjb2xvcjtpbiBmbG9hdDIgbG9jYWxDb29yZDtv
dXQgaGFsZjQgdmNvbG9yX1MwO291dCBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7dm9p
ZCBtYWluKCkgey8vIFByaW1pdGl2ZSBQcm9jZXNzb3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJv
Y2Vzc29yCiAgIDMJdmNvbG9yX1MwID0gY29sb3I7c2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAx
O3sKICAgNAl2VHJhbnNmb3JtZWRDb29yZHNfMl9TMCA9ICh1bWF0cml4X1MxICogbG9jYWxDb29y
ZC54eTEpLnh5OwogICA1CX0KICAgNgl9CiAgIDcJLy8gRnJhZ21lbnQgU0tTTAogICA4CWNvbnN0
IGludCBrTWF4TG9vcExpbWl0X1MxX2MwID0gNDsKICAgOQl1bmlmb3JtIGZsb2F0NCB1Y2xhbXBf
UzFfYzBfYzBfYzA7dW5pZm9ybSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwO3VuaWZvcm0gaGFs
ZjQgdW9mZnNldHNBbmRLZXJuZWxfUzFfYzBbMTRdO3VuaWZvcm0gaGFsZjIgdWRpcl9TMV9jMDt1
bmlmb3JtIGZsb2F0M3gzIHVtYXRyaXhfUzE7c2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1Mx
OwogIDEwCWluIGhhbGY0IHZjb2xvcl9TMDtpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJf
UzA7aGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBf
Y29vcmRzKSB7CiAgMTEJZmxvYXQyIGluQ29vcmQgPSBfY29vcmRzO2Zsb2F0MiBzdWJzZXRDb29y
ZDtzdWJzZXRDb29yZC54ID0gaW5Db29yZC54O3N1YnNldENvb3JkLnkgPSBpbkNvb3JkLnk7Zmxv
YXQyIGNsYW1wZWRDb29yZDtjbGFtcGVkQ29vcmQgPSBjbGFtcChzdWJzZXRDb29yZCwgdWNsYW1w
X1MxX2MwX2MwX2MwLnh5LCB1Y2xhbXBfUzFfYzBfYzBfYzAuencpO2hhbGY0IHRleHR1cmVDb2xv
ciA9IHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgY2xhbXBlZENvb3JkKTtyZXR1cm4gdGV4
dHVyZUNvbG9yO30KICAxMgkKICAxMwloYWxmNCBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoaGFsZjQg
X2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgewogIDE0CXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2Mw
X2MwX2MwKF9pbnB1dCwgKCh1bWF0cml4X1MxX2MwX2MwKSAqIF9jb29yZHMueHkxKS54eSk7CiAg
MTUJfQogIDE2CQogIDE3CWhhbGY0IHJ1bnRpbWVfc2hhZGVyX1MxX2MwKGhhbGY0IF9pbnB1dCkg
ewogIDE4CWhhbGY0IF90bXBfMF9pbkNvbG9yID0gX2lucHV0OwogIDE5CWZsb2F0MiBfdG1wXzFf
Y29vcmRzID0gdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CiAgMjAJaGFsZjQgc3VtID0gaGFsZjQo
MC4wKTsKICAyMQlmb3IgKGludCBpID0gMDtpIDwga01heExvb3BMaW1pdF9TMV9jMDsgKytpKSB7
CiAgMjIJaGFsZjQgcyA9IHVvZmZzZXRzQW5kS2VybmVsX1MxX2MwW2ldOwogIDIzCXN1bSArPSBz
LnkgKiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX3RtcF8wX2luQ29sb3IsIF90bXBfMV9jb29yZHMg
KyBmbG9hdDIocy54ICogdWRpcl9TMV9jMCkpOwogIDI0CXN1bSArPSBzLncgKiBNYXRyaXhFZmZl
Y3RfUzFfYzBfYzAoX3RtcF8wX2luQ29sb3IsIF90bXBfMV9jb29yZHMgKyBmbG9hdDIocy56ICog
dWRpcl9TMV9jMCkpOwogIDI1CX0KICAyNglyZXR1cm4gaGFsZjQoc3VtKTsKICAyNwl9CiAgMjgJ
CiAgMjkJaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhhbGY0IF9pbnB1dCkgewogIDMwCXJldHVybiBy
dW50aW1lX3NoYWRlcl9TMV9jMChfaW5wdXQpOwogIDMxCX0KICAzMgkKICAzMwl2b2lkIG1haW4o
KSB7Ly8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCiAgMzQJaGFsZjQg
b3V0cHV0Q29sb3JfUzA7b3V0cHV0Q29sb3JfUzAgPSB2Y29sb3JfUzA7Y29uc3QgaGFsZjQgb3V0
cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTtoYWxmNCBvdXRwdXRfUzE7b3V0cHV0X1MxID0gTWF0
cml4RWZmZWN0X1MxKG91dHB1dENvbG9yX1MwKTt7IC8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIg
RHVmZgogIDM1CXNrX0ZyYWdDb2xvciA9IG91dHB1dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwO319
CiAgMzYJLy8gVmVydGV4IEdMU0wKICAzNwkjdmVyc2lvbiAxMDAKICAzOAkKICAzOQlwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKICA0MAlwcmVjaXNpb24gbWVkaXVtcCBzYW1wbGVyMkQ7CiAgNDEJ
dW5pZm9ybSBoaWdocCB2ZWM0IHNrX1JUQWRqdXN0OwogIDQyCXVuaWZvcm0gaGlnaHAgbWF0MyB1
bWF0cml4X1MxOwogIDQzCWF0dHJpYnV0ZSBoaWdocCB2ZWMyIHBvc2l0aW9uOwogIDQ0CWF0dHJp
YnV0ZSBtZWRpdW1wIHZlYzQgY29sb3I7CiAgNDUJYXR0cmlidXRlIGhpZ2hwIHZlYzIgbG9jYWxD
b29yZDsKICA0Ngl2YXJ5aW5nIG1lZGl1bXAgdmVjNCB2Y29sb3JfUzA7CiAgNDcJdmFyeWluZyBo
aWdocCB2ZWMyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwogIDQ4CXZvaWQgbWFpbigpIHsKICA0
OQl2Y29sb3JfUzAgPSBjb2xvcjsKICA1MAlnbF9Qb3NpdGlvbiA9IHZlYzQocG9zaXRpb24sIDAu
MCwgMS4wKTsKICA1MQl7CiAgNTIJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAgPSAodW1hdHJpeF9T
MSAqIHZlYzMobG9jYWxDb29yZCwgMS4wKSkueHk7CiAgNTMJfQogIDU0CWdsX1Bvc2l0aW9uID0g
dmVjNChnbF9Qb3NpdGlvbi54eSAqIHNrX1JUQWRqdXN0Lnh6ICsgZ2xfUG9zaXRpb24ud3cgKiBz
a19SVEFkanVzdC55dywgMC4wLCBnbF9Qb3NpdGlvbi53KTsKICA1NQl9CiAgNTYJCiAgNTcJLy8g
RnJhZ21lbnQgR0xTTAogIDU4CSN2ZXJzaW9uIDEwMAogIDU5CQogIDYwCXByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OwogIDYxCXByZWNpc2lvbiBtZWRpdW1wIHNhbXBsZXIyRDsKICA2Mgljb25zdCBo
aWdocCBpbnQga01heExvb3BMaW1pdF9TMV9jMCA9IDQ7CiAgNjMJdW5pZm9ybSBoaWdocCB2ZWM0
IHVjbGFtcF9TMV9jMF9jMF9jMDsKICA2NAl1bmlmb3JtIGhpZ2hwIG1hdDMgdW1hdHJpeF9TMV9j
MF9jMDsKICA2NQl1bmlmb3JtIG1lZGl1bXAgdmVjNCB1b2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFsx
NF07CiAgNjYJdW5pZm9ybSBtZWRpdW1wIHZlYzIgdWRpcl9TMV9jMDsKICA2Nwl1bmlmb3JtIGhp
Z2hwIG1hdDMgdW1hdHJpeF9TMTsKICA2OAl1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBs
ZXJfMF9TMTsKICA2OQl2YXJ5aW5nIG1lZGl1bXAgdmVjNCB2Y29sb3JfUzA7CiAgNzAJdmFyeWlu
ZyBoaWdocCB2ZWMyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwogIDcxCXZvaWQgbWFpbigpIHsK
ICA3MgloaWdocCB2ZWMyIF8yNl90bXBfMV9jb29yZHMgPSB2VHJhbnNmb3JtZWRDb29yZHNfMl9T
MDsKICA3MwltZWRpdW1wIHZlYzQgXzI3X3N1bSA9IHZlYzQoMC4wKTsKICA3NAlmb3IgKGhpZ2hw
IGludCBfMjhfaSA9IDA7XzI4X2kgPCBrTWF4TG9vcExpbWl0X1MxX2MwOyArK18yOF9pKSB7CiAg
NzUJbWVkaXVtcCB2ZWM0IF8yOV9zID0gdW9mZnNldHNBbmRLZXJuZWxfUzFfYzBbXzI4X2ldOwog
IDc2CWhpZ2hwIHZlYzIgXzMwX2luQ29vcmQgPSAodW1hdHJpeF9TMV9jMF9jMCAqIHZlYzMoXzI2
X3RtcF8xX2Nvb3JkcyArIF8yOV9zLnggKiB1ZGlyX1MxX2MwLCAxLjApKS54eTsKICA3NwloaWdo
cCB2ZWMyIF8zMV9zdWJzZXRDb29yZDsKICA3OAlfMzFfc3Vic2V0Q29vcmQueCA9IF8zMF9pbkNv
b3JkLng7CiAgNzkJXzMxX3N1YnNldENvb3JkLnkgPSBfMzBfaW5Db29yZC55OwogIDgwCWhpZ2hw
IHZlYzIgXzMyX2NsYW1wZWRDb29yZCA9IGNsYW1wKF8zMV9zdWJzZXRDb29yZCwgdWNsYW1wX1Mx
X2MwX2MwX2MwLnh5LCB1Y2xhbXBfUzFfYzBfYzBfYzAuencpOwogIDgxCW1lZGl1bXAgdmVjNCBf
MzNfdGV4dHVyZUNvbG9yID0gdGV4dHVyZTJEKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfMzJfY2xh
bXBlZENvb3JkLCAtMC40NzUpOwogIDgyCV8yN19zdW0gKz0gXzI5X3MueSAqIF8zM190ZXh0dXJl
Q29sb3I7CiAgODMJaGlnaHAgdmVjMiBfMzRfaW5Db29yZCA9ICh1bWF0cml4X1MxX2MwX2MwICog
dmVjMyhfMjZfdG1wXzFfY29vcmRzICsgXzI5X3MueiAqIHVkaXJfUzFfYzAsIDEuMCkpLnh5Owog
IDg0CWhpZ2hwIHZlYzIgXzM1X3N1YnNldENvb3JkOwogIDg1CV8zNV9zdWJzZXRDb29yZC54ID0g
XzM0X2luQ29vcmQueDsKICA4NglfMzVfc3Vic2V0Q29vcmQueSA9IF8zNF9pbkNvb3JkLnk7CiAg
ODcJaGlnaHAgdmVjMiBfMzZfY2xhbXBlZENvb3JkID0gY2xhbXAoXzM1X3N1YnNldENvb3JkLCB1
Y2xhbXBfUzFfYzBfYzBfYzAueHksIHVjbGFtcF9TMV9jMF9jMF9jMC56dyk7CiAgODgJbWVkaXVt
cCB2ZWM0IF8zN190ZXh0dXJlQ29sb3IgPSB0ZXh0dXJlMkQodVRleHR1cmVTYW1wbGVyXzBfUzEs
IF8zNl9jbGFtcGVkQ29vcmQsIC0wLjQ3NSk7CiAgODkJXzI3X3N1bSArPSBfMjlfcy53ICogXzM3
X3RleHR1cmVDb2xvcjsKICA5MAl9CiAgOTEJbWVkaXVtcCB2ZWM0IG91dHB1dF9TMSA9IF8yN19z
dW07CiAgOTIJewogIDkzCWdsX0ZyYWdDb2xvciA9IG91dHB1dF9TMTsKICA5NAl9CiAgOTUJfQog
IDk2CQogIDk3CQpFcnJvcnM6CmVycm9yOiBFeGNlZWRlZCBtYXggbnIgaW5kaXJlY3QgdGV4dHVy
ZSBsb29rdXBzICg5LzQpCgpGYWlsZWQgdG8gY3JlYXRlIERNQS1CVUYgdGV4dHVyZSBvZiBzaXpl
IDEwMjR4NjkzOiBVbnN1cHBvcnRlZCBkbWFidWYgZm9ybWF0OiBYUjI0OjB4ZmZmZmZmZmZmZmZm
ZmYKRmFpbGVkIHRvIGNyZWF0ZSBETUEtQlVGIHRleHR1cmUgb2Ygc2l6ZSAxMDI0eDY5MzogVW5z
dXBwb3J0ZWQgZG1hYnVmIGZvcm1hdDogWFIyNDoweGZmZmZmZmZmZmZmZmZmCkZhaWxlZCB0byBj
cmVhdGUgRE1BLUJVRiB0ZXh0dXJlIG9mIHNpemUgMTAyNHg2OTM6IFVuc3VwcG9ydGVkIGRtYWJ1
ZiBmb3JtYXQ6IFhSMjQ6MHhmZmZmZmZmZmZmZmZmZgpGYWlsZWQgdG8gY3JlYXRlIERNQS1CVUYg
dGV4dHVyZSBvZiBzaXplIDEwMjR4NjkzOiBVbnN1cHBvcnRlZCBkbWFidWYgZm9ybWF0OiBYUjI0
OjB4ZmZmZmZmZmZmZmZmZmYKRmFpbGVkIHRvIGNyZWF0ZSBETUEtQlVGIHRleHR1cmUgb2Ygc2l6
ZSAxMDI0eDY5MzogVW5zdXBwb3J0ZWQgZG1hYnVmIGZvcm1hdDogWFIyNDoweGZmZmZmZmZmZmZm
ZmZmCkZhaWxlZCB0byBjcmVhdGUgRE1BLUJVRiB0ZXh0dXJlIG9mIHNpemUgMTAyNHg2OTM6IFVu
c3VwcG9ydGVkIGRtYWJ1ZiBmb3JtYXQ6IFhSMjQ6MHhmZmZmZmZmZmZmZmZmZgpGYWlsZWQgdG8g
Y3JlYXRlIERNQS1CVUYgdGV4dHVyZSBvZiBzaXplIDEwMjR4NjkzOiBVbnN1cHBvcnRlZCBkbWFi
dWYgZm9ybWF0OiBYUjI0OjB4ZmZmZmZmZmZmZmZmZmYKRmFpbGVkIHRvIGNyZWF0ZSBETUEtQlVG
IHRleHR1cmUgb2Ygc2l6ZSAxMDI0eDY5MzogVW5zdXBwb3J0ZWQgZG1hYnVmIGZvcm1hdDogWFIy
NDoweGZmZmZmZmZmZmZmZmZmClNoYWRlciBjb21waWxhdGlvbiBlcnJvcgotLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KICAgMQkvLyBWZXJ0ZXggU0tTTAogICAyCXVuaWZvcm0gZmxvYXQ0IHNrX1JU
QWRqdXN0O3VuaWZvcm0gZmxvYXQzeDMgdW1hdHJpeF9TMTtpbiBmbG9hdDIgcG9zaXRpb247aW4g
aGFsZjQgY29sb3I7aW4gZmxvYXQyIGxvY2FsQ29vcmQ7b3V0IGhhbGY0IHZjb2xvcl9TMDtvdXQg
ZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwO3ZvaWQgbWFpbigpIHsvLyBQcmltaXRpdmUg
UHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgogICAzCXZjb2xvcl9TMCA9
IGNvbG9yO3NrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTt7CiAgIDQJdlRyYW5zZm9ybWVkQ29v
cmRzXzJfUzAgPSAodW1hdHJpeF9TMSAqIGxvY2FsQ29vcmQueHkxKS54eTsKICAgNQl9CiAgIDYJ
fQogICA3CS8vIEZyYWdtZW50IFNLU0wKICAgOAljb25zdCBpbnQga01heExvb3BMaW1pdF9TMV9j
MCA9IDI7CiAgIDkJdW5pZm9ybSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwO3VuaWZvcm0gaGFs
ZjQgdW9mZnNldHNBbmRLZXJuZWxfUzFfYzBbMTRdO3VuaWZvcm0gaGFsZjIgdWRpcl9TMV9jMDt1
bmlmb3JtIGZsb2F0M3gzIHVtYXRyaXhfUzE7c2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1Mx
OwogIDEwCWluIGhhbGY0IHZjb2xvcl9TMDtpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJf
UzA7aGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBf
Y29vcmRzKSB7CiAgMTEJcmV0dXJuIHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgX2Nvb3Jk
cyk7fQogIDEyCQogIDEzCWhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQs
IGZsb2F0MiBfY29vcmRzKSB7CiAgMTQJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAo
X2lucHV0LCAoKHVtYXRyaXhfUzFfYzBfYzApICogX2Nvb3Jkcy54eTEpLnh5KTsKICAxNQl9CiAg
MTYJCiAgMTcJaGFsZjQgcnVudGltZV9zaGFkZXJfUzFfYzAoaGFsZjQgX2lucHV0KSB7CiAgMTgJ
aGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CiAgMTkJZmxvYXQyIF90bXBfMV9jb29yZHMg
PSB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKICAyMAloYWxmNCBzdW0gPSBoYWxmNCgwLjApOwog
IDIxCWZvciAoaW50IGkgPSAwO2kgPCBrTWF4TG9vcExpbWl0X1MxX2MwOyArK2kpIHsKICAyMglo
YWxmNCBzID0gdW9mZnNldHNBbmRLZXJuZWxfUzFfYzBbaV07CiAgMjMJc3VtICs9IHMueSAqIE1h
dHJpeEVmZmVjdF9TMV9jMF9jMChfdG1wXzBfaW5Db2xvciwgX3RtcF8xX2Nvb3JkcyArIGZsb2F0
MihzLnggKiB1ZGlyX1MxX2MwKSk7CiAgMjQJc3VtICs9IHMudyAqIE1hdHJpeEVmZmVjdF9TMV9j
MF9jMChfdG1wXzBfaW5Db2xvciwgX3RtcF8xX2Nvb3JkcyArIGZsb2F0MihzLnogKiB1ZGlyX1Mx
X2MwKSk7CiAgMjUJfQogIDI2CXJldHVybiBoYWxmNChzdW0pOwogIDI3CX0KICAyOAkKICAyOQlo
YWxmNCBNYXRyaXhFZmZlY3RfUzEoaGFsZjQgX2lucHV0KSB7CiAgMzAJcmV0dXJuIHJ1bnRpbWVf
c2hhZGVyX1MxX2MwKF9pbnB1dCk7CiAgMzEJfQogIDMyCQogIDMzCXZvaWQgbWFpbigpIHsvLyBT
dGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKICAzNAloYWxmNCBvdXRwdXRD
b2xvcl9TMDtvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDtjb25zdCBoYWxmNCBvdXRwdXRDb3Zl
cmFnZV9TMCA9IGhhbGY0KDEpO2hhbGY0IG91dHB1dF9TMTtvdXRwdXRfUzEgPSBNYXRyaXhFZmZl
Y3RfUzEob3V0cHV0Q29sb3JfUzApO3sgLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCiAg
MzUJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7fX0KICAzNgkv
LyBWZXJ0ZXggR0xTTAogIDM3CSN2ZXJzaW9uIDEwMAogIDM4CQogIDM5CXByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OwogIDQwCXByZWNpc2lvbiBtZWRpdW1wIHNhbXBsZXIyRDsKICA0MQl1bmlmb3Jt
IGhpZ2hwIHZlYzQgc2tfUlRBZGp1c3Q7CiAgNDIJdW5pZm9ybSBoaWdocCBtYXQzIHVtYXRyaXhf
UzE7CiAgNDMJYXR0cmlidXRlIGhpZ2hwIHZlYzIgcG9zaXRpb247CiAgNDQJYXR0cmlidXRlIG1l
ZGl1bXAgdmVjNCBjb2xvcjsKICA0NQlhdHRyaWJ1dGUgaGlnaHAgdmVjMiBsb2NhbENvb3JkOwog
IDQ2CXZhcnlpbmcgbWVkaXVtcCB2ZWM0IHZjb2xvcl9TMDsKICA0Nwl2YXJ5aW5nIGhpZ2hwIHZl
YzIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CiAgNDgJdm9pZCBtYWluKCkgewogIDQ5CXZjb2xv
cl9TMCA9IGNvbG9yOwogIDUwCWdsX1Bvc2l0aW9uID0gdmVjNChwb3NpdGlvbiwgMC4wLCAxLjAp
OwogIDUxCXsKICA1Mgl2VHJhbnNmb3JtZWRDb29yZHNfMl9TMCA9ICh1bWF0cml4X1MxICogdmVj
Myhsb2NhbENvb3JkLCAxLjApKS54eTsKICA1Mwl9CiAgNTQJZ2xfUG9zaXRpb24gPSB2ZWM0KGds
X1Bvc2l0aW9uLnh5ICogc2tfUlRBZGp1c3QueHogKyBnbF9Qb3NpdGlvbi53dyAqIHNrX1JUQWRq
dXN0Lnl3LCAwLjAsIGdsX1Bvc2l0aW9uLncpOwogIDU1CX0KICA1NgkKICA1NwkvLyBGcmFnbWVu
dCBHTFNMCiAgNTgJI3ZlcnNpb24gMTAwCiAgNTkJCiAgNjAJcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CiAgNjEJcHJlY2lzaW9uIG1lZGl1bXAgc2FtcGxlcjJEOwogIDYyCWNvbnN0IGhpZ2hwIGlu
dCBrTWF4TG9vcExpbWl0X1MxX2MwID0gMjsKICA2Mwl1bmlmb3JtIGhpZ2hwIG1hdDMgdW1hdHJp
eF9TMV9jMF9jMDsKICA2NAl1bmlmb3JtIG1lZGl1bXAgdmVjNCB1b2Zmc2V0c0FuZEtlcm5lbF9T
MV9jMFsxNF07CiAgNjUJdW5pZm9ybSBtZWRpdW1wIHZlYzIgdWRpcl9TMV9jMDsKICA2Ngl1bmlm
b3JtIGhpZ2hwIG1hdDMgdW1hdHJpeF9TMTsKICA2Nwl1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVy
ZVNhbXBsZXJfMF9TMTsKICA2OAl2YXJ5aW5nIG1lZGl1bXAgdmVjNCB2Y29sb3JfUzA7CiAgNjkJ
dmFyeWluZyBoaWdocCB2ZWMyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwogIDcwCXZvaWQgbWFp
bigpIHsKICA3MQloaWdocCB2ZWMyIF82X3RtcF8xX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jk
c18yX1MwOwogIDcyCW1lZGl1bXAgdmVjNCBfN19zdW0gPSB2ZWM0KDAuMCk7CiAgNzMJZm9yICho
aWdocCBpbnQgXzhfaSA9IDA7XzhfaSA8IGtNYXhMb29wTGltaXRfUzFfYzA7ICsrXzhfaSkgewog
IDc0CW1lZGl1bXAgdmVjNCBfOV9zID0gdW9mZnNldHNBbmRLZXJuZWxfUzFfYzBbXzhfaV07CiAg
NzUJXzdfc3VtICs9IF85X3MueSAqIHRleHR1cmUyRCh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgKHVt
YXRyaXhfUzFfYzBfYzAgKiB2ZWMzKF82X3RtcF8xX2Nvb3JkcyArIF85X3MueCAqIHVkaXJfUzFf
YzAsIDEuMCkpLnh5LCAtMC40NzUpOwogIDc2CV83X3N1bSArPSBfOV9zLncgKiB0ZXh0dXJlMkQo
dVRleHR1cmVTYW1wbGVyXzBfUzEsICh1bWF0cml4X1MxX2MwX2MwICogdmVjMyhfNl90bXBfMV9j
b29yZHMgKyBfOV9zLnogKiB1ZGlyX1MxX2MwLCAxLjApKS54eSwgLTAuNDc1KTsKICA3Nwl9CiAg
NzgJbWVkaXVtcCB2ZWM0IG91dHB1dF9TMSA9IF83X3N1bTsKICA3OQl7CiAgODAJZ2xfRnJhZ0Nv
bG9yID0gb3V0cHV0X1MxOwogIDgxCX0KICA4Mgl9CiAgODMJCiAgODQJCkVycm9yczoKZXJyb3I6
IEV4Y2VlZGVkIG1heCBuciBpbmRpcmVjdCB0ZXh0dXJlIGxvb2t1cHMgKDUvNCkKCkZhaWxlZCB0
byBjcmVhdGUgRE1BLUJVRiB0ZXh0dXJlIG9mIHNpemUgMTAyNHg2OTM6IFVuc3VwcG9ydGVkIGRt
YWJ1ZiBmb3JtYXQ6IFhSMjQ6MHhmZmZmZmZmZmZmZmZmZgpTaGFkZXIgY29tcGlsYXRpb24gZXJy
b3IKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIDEJLy8gVmVydGV4IFNLU0wKICAgMgl1bmlm
b3JtIGZsb2F0NCBza19SVEFkanVzdDt1bmlmb3JtIGZsb2F0M3gzIHVtYXRyaXhfUzE7aW4gZmxv
YXQyIHBvc2l0aW9uO2luIGhhbGY0IGNvbG9yO2luIGZsb2F0MiBsb2NhbENvb3JkO291dCBoYWxm
NCB2Y29sb3JfUzA7b3V0IGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDt2b2lkIG1haW4o
KSB7Ly8gUHJpbWl0aXZlIFByb2Nlc3NvciBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IK
ICAgMwl2Y29sb3JfUzAgPSBjb2xvcjtza19Qb3NpdGlvbiA9IHBvc2l0aW9uLnh5MDE7ewogICA0
CXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gKHVtYXRyaXhfUzEgKiBsb2NhbENvb3JkLnh5MSku
eHk7CiAgIDUJfQogICA2CX0KICAgNwkvLyBGcmFnbWVudCBTS1NMCiAgIDgJY29uc3QgaW50IGtN
YXhMb29wTGltaXRfUzFfYzAgPSAyOwogICA5CXVuaWZvcm0gZmxvYXQ0IHVjbGFtcF9TMV9jMF9j
MF9jMDt1bmlmb3JtIGZsb2F0M3gzIHVtYXRyaXhfUzFfYzBfYzA7dW5pZm9ybSBoYWxmNCB1b2Zm
c2V0c0FuZEtlcm5lbF9TMV9jMFsxNF07dW5pZm9ybSBoYWxmMiB1ZGlyX1MxX2MwO3VuaWZvcm0g
ZmxvYXQzeDMgdW1hdHJpeF9TMTtzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CiAgMTAJ
aW4gaGFsZjQgdmNvbG9yX1MwO2luIGZsb2F0MiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDtoYWxm
NCBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29yZHMp
IHsKICAxMQlmbG9hdDIgaW5Db29yZCA9IF9jb29yZHM7ZmxvYXQyIHN1YnNldENvb3JkO3N1YnNl
dENvb3JkLnggPSBpbkNvb3JkLng7c3Vic2V0Q29vcmQueSA9IGluQ29vcmQueTtmbG9hdDIgY2xh
bXBlZENvb3JkO2NsYW1wZWRDb29yZCA9IGNsYW1wKHN1YnNldENvb3JkLCB1Y2xhbXBfUzFfYzBf
YzBfYzAueHksIHVjbGFtcF9TMV9jMF9jMF9jMC56dyk7aGFsZjQgdGV4dHVyZUNvbG9yID0gc2Ft
cGxlKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBjbGFtcGVkQ29vcmQpO3JldHVybiB0ZXh0dXJlQ29s
b3I7fQogIDEyCQogIDEzCWhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQs
IGZsb2F0MiBfY29vcmRzKSB7CiAgMTQJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAo
X2lucHV0LCAoKHVtYXRyaXhfUzFfYzBfYzApICogX2Nvb3Jkcy54eTEpLnh5KTsKICAxNQl9CiAg
MTYJCiAgMTcJaGFsZjQgcnVudGltZV9zaGFkZXJfUzFfYzAoaGFsZjQgX2lucHV0KSB7CiAgMTgJ
aGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CiAgMTkJZmxvYXQyIF90bXBfMV9jb29yZHMg
PSB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKICAyMAloYWxmNCBzdW0gPSBoYWxmNCgwLjApOwog
IDIxCWZvciAoaW50IGkgPSAwO2kgPCBrTWF4TG9vcExpbWl0X1MxX2MwOyArK2kpIHsKICAyMglo
YWxmNCBzID0gdW9mZnNldHNBbmRLZXJuZWxfUzFfYzBbaV07CiAgMjMJc3VtICs9IHMueSAqIE1h
dHJpeEVmZmVjdF9TMV9jMF9jMChfdG1wXzBfaW5Db2xvciwgX3RtcF8xX2Nvb3JkcyArIGZsb2F0
MihzLnggKiB1ZGlyX1MxX2MwKSk7CiAgMjQJc3VtICs9IHMudyAqIE1hdHJpeEVmZmVjdF9TMV9j
MF9jMChfdG1wXzBfaW5Db2xvciwgX3RtcF8xX2Nvb3JkcyArIGZsb2F0MihzLnogKiB1ZGlyX1Mx
X2MwKSk7CiAgMjUJfQogIDI2CXJldHVybiBoYWxmNChzdW0pOwogIDI3CX0KICAyOAkKICAyOQlo
YWxmNCBNYXRyaXhFZmZlY3RfUzEoaGFsZjQgX2lucHV0KSB7CiAgMzAJcmV0dXJuIHJ1bnRpbWVf
c2hhZGVyX1MxX2MwKF9pbnB1dCk7CiAgMzEJfQogIDMyCQogIDMzCXZvaWQgbWFpbigpIHsvLyBT
dGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKICAzNAloYWxmNCBvdXRwdXRD
b2xvcl9TMDtvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDtjb25zdCBoYWxmNCBvdXRwdXRDb3Zl
cmFnZV9TMCA9IGhhbGY0KDEpO2hhbGY0IG91dHB1dF9TMTtvdXRwdXRfUzEgPSBNYXRyaXhFZmZl
Y3RfUzEob3V0cHV0Q29sb3JfUzApO3sgLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCiAg
MzUJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7fX0KICAzNgkv
LyBWZXJ0ZXggR0xTTAogIDM3CSN2ZXJzaW9uIDEwMAogIDM4CQogIDM5CXByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OwogIDQwCXByZWNpc2lvbiBtZWRpdW1wIHNhbXBsZXIyRDsKICA0MQl1bmlmb3Jt
IGhpZ2hwIHZlYzQgc2tfUlRBZGp1c3Q7CiAgNDIJdW5pZm9ybSBoaWdocCBtYXQzIHVtYXRyaXhf
UzE7CiAgNDMJYXR0cmlidXRlIGhpZ2hwIHZlYzIgcG9zaXRpb247CiAgNDQJYXR0cmlidXRlIG1l
ZGl1bXAgdmVjNCBjb2xvcjsKICA0NQlhdHRyaWJ1dGUgaGlnaHAgdmVjMiBsb2NhbENvb3JkOwog
IDQ2CXZhcnlpbmcgbWVkaXVtcCB2ZWM0IHZjb2xvcl9TMDsKICA0Nwl2YXJ5aW5nIGhpZ2hwIHZl
YzIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CiAgNDgJdm9pZCBtYWluKCkgewogIDQ5CXZjb2xv
cl9TMCA9IGNvbG9yOwogIDUwCWdsX1Bvc2l0aW9uID0gdmVjNChwb3NpdGlvbiwgMC4wLCAxLjAp
OwogIDUxCXsKICA1Mgl2VHJhbnNmb3JtZWRDb29yZHNfMl9TMCA9ICh1bWF0cml4X1MxICogdmVj
Myhsb2NhbENvb3JkLCAxLjApKS54eTsKICA1Mwl9CiAgNTQJZ2xfUG9zaXRpb24gPSB2ZWM0KGds
X1Bvc2l0aW9uLnh5ICogc2tfUlRBZGp1c3QueHogKyBnbF9Qb3NpdGlvbi53dyAqIHNrX1JUQWRq
dXN0Lnl3LCAwLjAsIGdsX1Bvc2l0aW9uLncpOwogIDU1CX0KICA1NgkKICA1NwkvLyBGcmFnbWVu
dCBHTFNMCiAgNTgJI3ZlcnNpb24gMTAwCiAgNTkJCiAgNjAJcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CiAgNjEJcHJlY2lzaW9uIG1lZGl1bXAgc2FtcGxlcjJEOwogIDYyCWNvbnN0IGhpZ2hwIGlu
dCBrTWF4TG9vcExpbWl0X1MxX2MwID0gMjsKICA2Mwl1bmlmb3JtIGhpZ2hwIHZlYzQgdWNsYW1w
X1MxX2MwX2MwX2MwOwogIDY0CXVuaWZvcm0gaGlnaHAgbWF0MyB1bWF0cml4X1MxX2MwX2MwOwog
IDY1CXVuaWZvcm0gbWVkaXVtcCB2ZWM0IHVvZmZzZXRzQW5kS2VybmVsX1MxX2MwWzE0XTsKICA2
Ngl1bmlmb3JtIG1lZGl1bXAgdmVjMiB1ZGlyX1MxX2MwOwogIDY3CXVuaWZvcm0gaGlnaHAgbWF0
MyB1bWF0cml4X1MxOwogIDY4CXVuaWZvcm0gc2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1Mx
OwogIDY5CXZhcnlpbmcgbWVkaXVtcCB2ZWM0IHZjb2xvcl9TMDsKICA3MAl2YXJ5aW5nIGhpZ2hw
IHZlYzIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CiAgNzEJdm9pZCBtYWluKCkgewogIDcyCWhp
Z2hwIHZlYzIgXzI2X3RtcF8xX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwogIDcz
CW1lZGl1bXAgdmVjNCBfMjdfc3VtID0gdmVjNCgwLjApOwogIDc0CWZvciAoaGlnaHAgaW50IF8y
OF9pID0gMDtfMjhfaSA8IGtNYXhMb29wTGltaXRfUzFfYzA7ICsrXzI4X2kpIHsKICA3NQltZWRp
dW1wIHZlYzQgXzI5X3MgPSB1b2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtfMjhfaV07CiAgNzYJaGln
aHAgdmVjMiBfMzBfaW5Db29yZCA9ICh1bWF0cml4X1MxX2MwX2MwICogdmVjMyhfMjZfdG1wXzFf
Y29vcmRzICsgXzI5X3MueCAqIHVkaXJfUzFfYzAsIDEuMCkpLnh5OwogIDc3CWhpZ2hwIHZlYzIg
XzMxX3N1YnNldENvb3JkOwogIDc4CV8zMV9zdWJzZXRDb29yZC54ID0gXzMwX2luQ29vcmQueDsK
ICA3OQlfMzFfc3Vic2V0Q29vcmQueSA9IF8zMF9pbkNvb3JkLnk7CiAgODAJaGlnaHAgdmVjMiBf
MzJfY2xhbXBlZENvb3JkID0gY2xhbXAoXzMxX3N1YnNldENvb3JkLCB1Y2xhbXBfUzFfYzBfYzBf
YzAueHksIHVjbGFtcF9TMV9jMF9jMF9jMC56dyk7CiAgODEJbWVkaXVtcCB2ZWM0IF8zM190ZXh0
dXJlQ29sb3IgPSB0ZXh0dXJlMkQodVRleHR1cmVTYW1wbGVyXzBfUzEsIF8zMl9jbGFtcGVkQ29v
cmQsIC0wLjQ3NSk7CiAgODIJXzI3X3N1bSArPSBfMjlfcy55ICogXzMzX3RleHR1cmVDb2xvcjsK
ICA4MwloaWdocCB2ZWMyIF8zNF9pbkNvb3JkID0gKHVtYXRyaXhfUzFfYzBfYzAgKiB2ZWMzKF8y
Nl90bXBfMV9jb29yZHMgKyBfMjlfcy56ICogdWRpcl9TMV9jMCwgMS4wKSkueHk7CiAgODQJaGln
aHAgdmVjMiBfMzVfc3Vic2V0Q29vcmQ7CiAgODUJXzM1X3N1YnNldENvb3JkLnggPSBfMzRfaW5D
b29yZC54OwogIDg2CV8zNV9zdWJzZXRDb29yZC55ID0gXzM0X2luQ29vcmQueTsKICA4NwloaWdo
cCB2ZWMyIF8zNl9jbGFtcGVkQ29vcmQgPSBjbGFtcChfMzVfc3Vic2V0Q29vcmQsIHVjbGFtcF9T
MV9jMF9jMF9jMC54eSwgdWNsYW1wX1MxX2MwX2MwX2MwLnp3KTsKICA4OAltZWRpdW1wIHZlYzQg
XzM3X3RleHR1cmVDb2xvciA9IHRleHR1cmUyRCh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgXzM2X2Ns
YW1wZWRDb29yZCwgLTAuNDc1KTsKICA4OQlfMjdfc3VtICs9IF8yOV9zLncgKiBfMzdfdGV4dHVy
ZUNvbG9yOwogIDkwCX0KICA5MQltZWRpdW1wIHZlYzQgb3V0cHV0X1MxID0gXzI3X3N1bTsKICA5
Mgl7CiAgOTMJZ2xfRnJhZ0NvbG9yID0gb3V0cHV0X1MxOwogIDk0CX0KICA5NQl9CiAgOTYJCiAg
OTcJCkVycm9yczoKZXJyb3I6IEV4Y2VlZGVkIG1heCBuciBpbmRpcmVjdCB0ZXh0dXJlIGxvb2t1
cHMgKDUvNCkKClNoYWRlciBjb21waWxhdGlvbiBlcnJvcgotLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KICAgMQkvLyBWZXJ0ZXggU0tTTAogICAyCXVuaWZvcm0gZmxvYXQ0IHNrX1JUQWRqdXN0O3Vu
aWZvcm0gZmxvYXQzeDMgdW1hdHJpeF9TMTtpbiBmbG9hdDIgcG9zaXRpb247aW4gaGFsZjQgY29s
b3I7aW4gZmxvYXQyIGxvY2FsQ29vcmQ7b3V0IGhhbGY0IHZjb2xvcl9TMDtvdXQgZmxvYXQyIHZU
cmFuc2Zvcm1lZENvb3Jkc18yX1MwO3ZvaWQgbWFpbigpIHsvLyBQcmltaXRpdmUgUHJvY2Vzc29y
IFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgogICAzCXZjb2xvcl9TMCA9IGNvbG9yO3Nr
X1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTt7CiAgIDQJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAg
PSAodW1hdHJpeF9TMSAqIGxvY2FsQ29vcmQueHkxKS54eTsKICAgNQl9CiAgIDYJfQogICA3CS8v
IEZyYWdtZW50IFNLU0wKICAgOAljb25zdCBpbnQga01heExvb3BMaW1pdF9TMV9jMCA9IDI7CiAg
IDkJdW5pZm9ybSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwO3VuaWZvcm0gaGFsZjQgdW9mZnNl
dHNBbmRLZXJuZWxfUzFfYzBbMTRdO3VuaWZvcm0gaGFsZjIgdWRpcl9TMV9jMDt1bmlmb3JtIGZs
b2F0M3gzIHVtYXRyaXhfUzE7c2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwogIDEwCWlu
IGhhbGY0IHZjb2xvcl9TMDtpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7aGFsZjQg
VGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSB7
CiAgMTEJcmV0dXJuIHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgX2Nvb3Jkcyk7fQogIDEy
CQogIDEzCWhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBf
Y29vcmRzKSB7CiAgMTQJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoX2lucHV0LCAo
KHVtYXRyaXhfUzFfYzBfYzApICogX2Nvb3Jkcy54eTEpLnh5KTsKICAxNQl9CiAgMTYJCiAgMTcJ
aGFsZjQgcnVudGltZV9zaGFkZXJfUzFfYzAoaGFsZjQgX2lucHV0KSB7CiAgMTgJaGFsZjQgX3Rt
cF8wX2luQ29sb3IgPSBfaW5wdXQ7CiAgMTkJZmxvYXQyIF90bXBfMV9jb29yZHMgPSB2VHJhbnNm
b3JtZWRDb29yZHNfMl9TMDsKICAyMAloYWxmNCBzdW0gPSBoYWxmNCgwLjApOwogIDIxCWZvciAo
aW50IGkgPSAwO2kgPCBrTWF4TG9vcExpbWl0X1MxX2MwOyArK2kpIHsKICAyMgloYWxmNCBzID0g
dW9mZnNldHNBbmRLZXJuZWxfUzFfYzBbaV07CiAgMjMJc3VtICs9IHMueSAqIE1hdHJpeEVmZmVj
dF9TMV9jMF9jMChfdG1wXzBfaW5Db2xvciwgX3RtcF8xX2Nvb3JkcyArIGZsb2F0MihzLnggKiB1
ZGlyX1MxX2MwKSk7CiAgMjQJc3VtICs9IHMudyAqIE1hdHJpeEVmZmVjdF9TMV9jMF9jMChfdG1w
XzBfaW5Db2xvciwgX3RtcF8xX2Nvb3JkcyArIGZsb2F0MihzLnogKiB1ZGlyX1MxX2MwKSk7CiAg
MjUJfQogIDI2CXJldHVybiBoYWxmNChzdW0pOwogIDI3CX0KICAyOAkKICAyOQloYWxmNCBNYXRy
aXhFZmZlY3RfUzEoaGFsZjQgX2lucHV0KSB7CiAgMzAJcmV0dXJuIHJ1bnRpbWVfc2hhZGVyX1Mx
X2MwKF9pbnB1dCk7CiAgMzEJfQogIDMyCQogIDMzCXZvaWQgbWFpbigpIHsvLyBTdGFnZSAwLCBR
dWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKICAzNAloYWxmNCBvdXRwdXRDb2xvcl9TMDtv
dXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDtjb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9
IGhhbGY0KDEpO2hhbGY0IG91dHB1dF9TMTtvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0
cHV0Q29sb3JfUzApO3sgLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCiAgMzUJc2tfRnJh
Z0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7fX0KICAzNgkvLyBWZXJ0ZXgg
R0xTTAogIDM3CSN2ZXJzaW9uIDEwMAogIDM4CQogIDM5CXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OwogIDQwCXByZWNpc2lvbiBtZWRpdW1wIHNhbXBsZXIyRDsKICA0MQl1bmlmb3JtIGhpZ2hwIHZl
YzQgc2tfUlRBZGp1c3Q7CiAgNDIJdW5pZm9ybSBoaWdocCBtYXQzIHVtYXRyaXhfUzE7CiAgNDMJ
YXR0cmlidXRlIGhpZ2hwIHZlYzIgcG9zaXRpb247CiAgNDQJYXR0cmlidXRlIG1lZGl1bXAgdmVj
NCBjb2xvcjsKICA0NQlhdHRyaWJ1dGUgaGlnaHAgdmVjMiBsb2NhbENvb3JkOwogIDQ2CXZhcnlp
bmcgbWVkaXVtcCB2ZWM0IHZjb2xvcl9TMDsKICA0Nwl2YXJ5aW5nIGhpZ2hwIHZlYzIgdlRyYW5z
Zm9ybWVkQ29vcmRzXzJfUzA7CiAgNDgJdm9pZCBtYWluKCkgewogIDQ5CXZjb2xvcl9TMCA9IGNv
bG9yOwogIDUwCWdsX1Bvc2l0aW9uID0gdmVjNChwb3NpdGlvbiwgMC4wLCAxLjApOwogIDUxCXsK
ICA1Mgl2VHJhbnNmb3JtZWRDb29yZHNfMl9TMCA9ICh1bWF0cml4X1MxICogdmVjMyhsb2NhbENv
b3JkLCAxLjApKS54eTsKICA1Mwl9CiAgNTQJZ2xfUG9zaXRpb24gPSB2ZWM0KGdsX1Bvc2l0aW9u
Lnh5ICogc2tfUlRBZGp1c3QueHogKyBnbF9Qb3NpdGlvbi53dyAqIHNrX1JUQWRqdXN0Lnl3LCAw
LjAsIGdsX1Bvc2l0aW9uLncpOwogIDU1CX0KICA1NgkKICA1NwkvLyBGcmFnbWVudCBHTFNMCiAg
NTgJI3ZlcnNpb24gMTAwCiAgNTkJCiAgNjAJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CiAgNjEJ
cHJlY2lzaW9uIG1lZGl1bXAgc2FtcGxlcjJEOwogIDYyCWNvbnN0IGhpZ2hwIGludCBrTWF4TG9v
cExpbWl0X1MxX2MwID0gMjsKICA2Mwl1bmlmb3JtIGhpZ2hwIG1hdDMgdW1hdHJpeF9TMV9jMF9j
MDsKICA2NAl1bmlmb3JtIG1lZGl1bXAgdmVjNCB1b2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFsxNF07
CiAgNjUJdW5pZm9ybSBtZWRpdW1wIHZlYzIgdWRpcl9TMV9jMDsKICA2Ngl1bmlmb3JtIGhpZ2hw
IG1hdDMgdW1hdHJpeF9TMTsKICA2Nwl1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJf
MF9TMTsKICA2OAl2YXJ5aW5nIG1lZGl1bXAgdmVjNCB2Y29sb3JfUzA7CiAgNjkJdmFyeWluZyBo
aWdocCB2ZWMyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwogIDcwCXZvaWQgbWFpbigpIHsKICA3
MQloaWdocCB2ZWMyIF82X3RtcF8xX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwog
IDcyCW1lZGl1bXAgdmVjNCBfN19zdW0gPSB2ZWM0KDAuMCk7CiAgNzMJZm9yIChoaWdocCBpbnQg
XzhfaSA9IDA7XzhfaSA8IGtNYXhMb29wTGltaXRfUzFfYzA7ICsrXzhfaSkgewogIDc0CW1lZGl1
bXAgdmVjNCBfOV9zID0gdW9mZnNldHNBbmRLZXJuZWxfUzFfYzBbXzhfaV07CiAgNzUJXzdfc3Vt
ICs9IF85X3MueSAqIHRleHR1cmUyRCh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgKHVtYXRyaXhfUzFf
YzBfYzAgKiB2ZWMzKF82X3RtcF8xX2Nvb3JkcyArIF85X3MueCAqIHVkaXJfUzFfYzAsIDEuMCkp
Lnh5LCAtMC40NzUpOwogIDc2CV83X3N1bSArPSBfOV9zLncgKiB0ZXh0dXJlMkQodVRleHR1cmVT
YW1wbGVyXzBfUzEsICh1bWF0cml4X1MxX2MwX2MwICogdmVjMyhfNl90bXBfMV9jb29yZHMgKyBf
OV9zLnogKiB1ZGlyX1MxX2MwLCAxLjApKS54eSwgLTAuNDc1KTsKICA3Nwl9CiAgNzgJbWVkaXVt
cCB2ZWM0IG91dHB1dF9TMSA9IF83X3N1bTsKICA3OQl7CiAgODAJZ2xfRnJhZ0NvbG9yID0gb3V0
cHV0X1MxOwogIDgxCX0KICA4Mgl9CiAgODMJCiAgODQJCkVycm9yczoKZXJyb3I6IEV4Y2VlZGVk
IG1heCBuciBpbmRpcmVjdCB0ZXh0dXJlIGxvb2t1cHMgKDUvNCkKClNoYWRlciBjb21waWxhdGlv
biBlcnJvcgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgMQkvLyBWZXJ0ZXggU0tTTAogICAy
CXVuaWZvcm0gZmxvYXQ0IHNrX1JUQWRqdXN0O3VuaWZvcm0gZmxvYXQzeDMgdW1hdHJpeF9TMTtp
biBmbG9hdDIgcG9zaXRpb247aW4gaGFsZjQgY29sb3I7aW4gZmxvYXQyIGxvY2FsQ29vcmQ7b3V0
IGhhbGY0IHZjb2xvcl9TMDtvdXQgZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwO3ZvaWQg
bWFpbigpIHsvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nl
c3NvcgogICAzCXZjb2xvcl9TMCA9IGNvbG9yO3NrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTt7
CiAgIDQJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAgPSAodW1hdHJpeF9TMSAqIGxvY2FsQ29vcmQu
eHkxKS54eTsKICAgNQl9CiAgIDYJfQogICA3CS8vIEZyYWdtZW50IFNLU0wKICAgOAljb25zdCBp
bnQga01heExvb3BMaW1pdF9TMV9jMCA9IDI7CiAgIDkJdW5pZm9ybSBmbG9hdDQgdWNsYW1wX1Mx
X2MwX2MwX2MwO3VuaWZvcm0gZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDt1bmlmb3JtIGhhbGY0
IHVvZmZzZXRzQW5kS2VybmVsX1MxX2MwWzE0XTt1bmlmb3JtIGhhbGYyIHVkaXJfUzFfYzA7dW5p
Zm9ybSBmbG9hdDN4MyB1bWF0cml4X1MxO3NhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsK
ICAxMAlpbiBoYWxmNCB2Y29sb3JfUzA7aW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1Mw
O2hhbGY0IFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nv
b3JkcykgewogIDExCWZsb2F0MiBpbkNvb3JkID0gX2Nvb3JkcztmbG9hdDIgc3Vic2V0Q29vcmQ7
c3Vic2V0Q29vcmQueCA9IGluQ29vcmQueDtzdWJzZXRDb29yZC55ID0gaW5Db29yZC55O2Zsb2F0
MiBjbGFtcGVkQ29vcmQ7Y2xhbXBlZENvb3JkID0gY2xhbXAoc3Vic2V0Q29vcmQsIHVjbGFtcF9T
MV9jMF9jMF9jMC54eSwgdWNsYW1wX1MxX2MwX2MwX2MwLnp3KTtoYWxmNCB0ZXh0dXJlQ29sb3Ig
PSBzYW1wbGUodVRleHR1cmVTYW1wbGVyXzBfUzEsIGNsYW1wZWRDb29yZCk7cmV0dXJuIHRleHR1
cmVDb2xvcjt9CiAgMTIJCiAgMTMJaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwKGhhbGY0IF9p
bnB1dCwgZmxvYXQyIF9jb29yZHMpIHsKICAxNAlyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMF9j
MF9jMChfaW5wdXQsICgodW1hdHJpeF9TMV9jMF9jMCkgKiBfY29vcmRzLnh5MSkueHkpOwogIDE1
CX0KICAxNgkKICAxNwloYWxmNCBydW50aW1lX3NoYWRlcl9TMV9jMChoYWxmNCBfaW5wdXQpIHsK
ICAxOAloYWxmNCBfdG1wXzBfaW5Db2xvciA9IF9pbnB1dDsKICAxOQlmbG9hdDIgX3RtcF8xX2Nv
b3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwogIDIwCWhhbGY0IHN1bSA9IGhhbGY0KDAu
MCk7CiAgMjEJZm9yIChpbnQgaSA9IDA7aSA8IGtNYXhMb29wTGltaXRfUzFfYzA7ICsraSkgewog
IDIyCWhhbGY0IHMgPSB1b2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFtpXTsKICAyMwlzdW0gKz0gcy55
ICogTWF0cml4RWZmZWN0X1MxX2MwX2MwKF90bXBfMF9pbkNvbG9yLCBfdG1wXzFfY29vcmRzICsg
ZmxvYXQyKHMueCAqIHVkaXJfUzFfYzApKTsKICAyNAlzdW0gKz0gcy53ICogTWF0cml4RWZmZWN0
X1MxX2MwX2MwKF90bXBfMF9pbkNvbG9yLCBfdG1wXzFfY29vcmRzICsgZmxvYXQyKHMueiAqIHVk
aXJfUzFfYzApKTsKICAyNQl9CiAgMjYJcmV0dXJuIGhhbGY0KHN1bSk7CiAgMjcJfQogIDI4CQog
IDI5CWhhbGY0IE1hdHJpeEVmZmVjdF9TMShoYWxmNCBfaW5wdXQpIHsKICAzMAlyZXR1cm4gcnVu
dGltZV9zaGFkZXJfUzFfYzAoX2lucHV0KTsKICAzMQl9CiAgMzIJCiAgMzMJdm9pZCBtYWluKCkg
ey8vIFN0YWdlIDAsIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgogIDM0CWhhbGY0IG91
dHB1dENvbG9yX1MwO291dHB1dENvbG9yX1MwID0gdmNvbG9yX1MwO2NvbnN0IGhhbGY0IG91dHB1
dENvdmVyYWdlX1MwID0gaGFsZjQoMSk7aGFsZjQgb3V0cHV0X1MxO291dHB1dF9TMSA9IE1hdHJp
eEVmZmVjdF9TMShvdXRwdXRDb2xvcl9TMCk7eyAvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1
ZmYKICAzNQlza19GcmFnQ29sb3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDt9fQog
IDM2CS8vIFZlcnRleCBHTFNMCiAgMzcJI3ZlcnNpb24gMTAwCiAgMzgJCiAgMzkJcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7CiAgNDAJcHJlY2lzaW9uIG1lZGl1bXAgc2FtcGxlcjJEOwogIDQxCXVu
aWZvcm0gaGlnaHAgdmVjNCBza19SVEFkanVzdDsKICA0Mgl1bmlmb3JtIGhpZ2hwIG1hdDMgdW1h
dHJpeF9TMTsKICA0MwlhdHRyaWJ1dGUgaGlnaHAgdmVjMiBwb3NpdGlvbjsKICA0NAlhdHRyaWJ1
dGUgbWVkaXVtcCB2ZWM0IGNvbG9yOwogIDQ1CWF0dHJpYnV0ZSBoaWdocCB2ZWMyIGxvY2FsQ29v
cmQ7CiAgNDYJdmFyeWluZyBtZWRpdW1wIHZlYzQgdmNvbG9yX1MwOwogIDQ3CXZhcnlpbmcgaGln
aHAgdmVjMiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKICA0OAl2b2lkIG1haW4oKSB7CiAgNDkJ
dmNvbG9yX1MwID0gY29sb3I7CiAgNTAJZ2xfUG9zaXRpb24gPSB2ZWM0KHBvc2l0aW9uLCAwLjAs
IDEuMCk7CiAgNTEJewogIDUyCXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gKHVtYXRyaXhfUzEg
KiB2ZWMzKGxvY2FsQ29vcmQsIDEuMCkpLnh5OwogIDUzCX0KICA1NAlnbF9Qb3NpdGlvbiA9IHZl
YzQoZ2xfUG9zaXRpb24ueHkgKiBza19SVEFkanVzdC54eiArIGdsX1Bvc2l0aW9uLnd3ICogc2tf
UlRBZGp1c3QueXcsIDAuMCwgZ2xfUG9zaXRpb24udyk7CiAgNTUJfQogIDU2CQogIDU3CS8vIEZy
YWdtZW50IEdMU0wKICA1OAkjdmVyc2lvbiAxMDAKICA1OQkKICA2MAlwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKICA2MQlwcmVjaXNpb24gbWVkaXVtcCBzYW1wbGVyMkQ7CiAgNjIJY29uc3QgaGln
aHAgaW50IGtNYXhMb29wTGltaXRfUzFfYzAgPSAyOwogIDYzCXVuaWZvcm0gaGlnaHAgdmVjNCB1
Y2xhbXBfUzFfYzBfYzBfYzA7CiAgNjQJdW5pZm9ybSBoaWdocCBtYXQzIHVtYXRyaXhfUzFfYzBf
YzA7CiAgNjUJdW5pZm9ybSBtZWRpdW1wIHZlYzQgdW9mZnNldHNBbmRLZXJuZWxfUzFfYzBbMTRd
OwogIDY2CXVuaWZvcm0gbWVkaXVtcCB2ZWMyIHVkaXJfUzFfYzA7CiAgNjcJdW5pZm9ybSBoaWdo
cCBtYXQzIHVtYXRyaXhfUzE7CiAgNjgJdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVy
XzBfUzE7CiAgNjkJdmFyeWluZyBtZWRpdW1wIHZlYzQgdmNvbG9yX1MwOwogIDcwCXZhcnlpbmcg
aGlnaHAgdmVjMiB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKICA3MQl2b2lkIG1haW4oKSB7CiAg
NzIJaGlnaHAgdmVjMiBfMjZfdG1wXzFfY29vcmRzID0gdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7
CiAgNzMJbWVkaXVtcCB2ZWM0IF8yN19zdW0gPSB2ZWM0KDAuMCk7CiAgNzQJZm9yIChoaWdocCBp
bnQgXzI4X2kgPSAwO18yOF9pIDwga01heExvb3BMaW1pdF9TMV9jMDsgKytfMjhfaSkgewogIDc1
CW1lZGl1bXAgdmVjNCBfMjlfcyA9IHVvZmZzZXRzQW5kS2VybmVsX1MxX2MwW18yOF9pXTsKICA3
NgloaWdocCB2ZWMyIF8zMF9pbkNvb3JkID0gKHVtYXRyaXhfUzFfYzBfYzAgKiB2ZWMzKF8yNl90
bXBfMV9jb29yZHMgKyBfMjlfcy54ICogdWRpcl9TMV9jMCwgMS4wKSkueHk7CiAgNzcJaGlnaHAg
dmVjMiBfMzFfc3Vic2V0Q29vcmQ7CiAgNzgJXzMxX3N1YnNldENvb3JkLnggPSBfMzBfaW5Db29y
ZC54OwogIDc5CV8zMV9zdWJzZXRDb29yZC55ID0gXzMwX2luQ29vcmQueTsKICA4MAloaWdocCB2
ZWMyIF8zMl9jbGFtcGVkQ29vcmQgPSBjbGFtcChfMzFfc3Vic2V0Q29vcmQsIHVjbGFtcF9TMV9j
MF9jMF9jMC54eSwgdWNsYW1wX1MxX2MwX2MwX2MwLnp3KTsKICA4MQltZWRpdW1wIHZlYzQgXzMz
X3RleHR1cmVDb2xvciA9IHRleHR1cmUyRCh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgXzMyX2NsYW1w
ZWRDb29yZCwgLTAuNDc1KTsKICA4MglfMjdfc3VtICs9IF8yOV9zLnkgKiBfMzNfdGV4dHVyZUNv
bG9yOwogIDgzCWhpZ2hwIHZlYzIgXzM0X2luQ29vcmQgPSAodW1hdHJpeF9TMV9jMF9jMCAqIHZl
YzMoXzI2X3RtcF8xX2Nvb3JkcyArIF8yOV9zLnogKiB1ZGlyX1MxX2MwLCAxLjApKS54eTsKICA4
NAloaWdocCB2ZWMyIF8zNV9zdWJzZXRDb29yZDsKICA4NQlfMzVfc3Vic2V0Q29vcmQueCA9IF8z
NF9pbkNvb3JkLng7CiAgODYJXzM1X3N1YnNldENvb3JkLnkgPSBfMzRfaW5Db29yZC55OwogIDg3
CWhpZ2hwIHZlYzIgXzM2X2NsYW1wZWRDb29yZCA9IGNsYW1wKF8zNV9zdWJzZXRDb29yZCwgdWNs
YW1wX1MxX2MwX2MwX2MwLnh5LCB1Y2xhbXBfUzFfYzBfYzBfYzAuencpOwogIDg4CW1lZGl1bXAg
dmVjNCBfMzdfdGV4dHVyZUNvbG9yID0gdGV4dHVyZTJEKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBf
MzZfY2xhbXBlZENvb3JkLCAtMC40NzUpOwogIDg5CV8yN19zdW0gKz0gXzI5X3MudyAqIF8zN190
ZXh0dXJlQ29sb3I7CiAgOTAJfQogIDkxCW1lZGl1bXAgdmVjNCBvdXRwdXRfUzEgPSBfMjdfc3Vt
OwogIDkyCXsKICA5MwlnbF9GcmFnQ29sb3IgPSBvdXRwdXRfUzE7CiAgOTQJfQogIDk1CX0KICA5
NgkKICA5NwkKRXJyb3JzOgplcnJvcjogRXhjZWVkZWQgbWF4IG5yIGluZGlyZWN0IHRleHR1cmUg
bG9va3VwcyAoNS80KQoKRmFpbGVkIHRvIGNyZWF0ZSBETUEtQlVGIHRleHR1cmUgb2Ygc2l6ZSAx
MDI0eDY5MzogVW5zdXBwb3J0ZWQgZG1hYnVmIGZvcm1hdDogWFIyNDoweGZmZmZmZmZmZmZmZmZm
ClNoYWRlciBjb21waWxhdGlvbiBlcnJvcgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgMQkv
LyBWZXJ0ZXggU0tTTAogICAyCXVuaWZvcm0gZmxvYXQ0IHNrX1JUQWRqdXN0O3VuaWZvcm0gZmxv
YXQzeDMgdW1hdHJpeF9TMTtpbiBmbG9hdDIgcG9zaXRpb247aW4gaGFsZjQgY29sb3I7aW4gZmxv
YXQyIGxvY2FsQ29vcmQ7b3V0IGhhbGY0IHZjb2xvcl9TMDtvdXQgZmxvYXQyIHZUcmFuc2Zvcm1l
ZENvb3Jkc18yX1MwO3ZvaWQgbWFpbigpIHsvLyBQcmltaXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJF
ZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgogICAzCXZjb2xvcl9TMCA9IGNvbG9yO3NrX1Bvc2l0aW9u
ID0gcG9zaXRpb24ueHkwMTt7CiAgIDQJdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzAgPSAodW1hdHJp
eF9TMSAqIGxvY2FsQ29vcmQueHkxKS54eTsKICAgNQl9CiAgIDYJfQogICA3CS8vIEZyYWdtZW50
IFNLU0wKICAgOAljb25zdCBpbnQga01heExvb3BMaW1pdF9TMV9jMCA9IDY7CiAgIDkJdW5pZm9y
bSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwO3VuaWZvcm0gaGFsZjQgdW9mZnNldHNBbmRLZXJu
ZWxfUzFfYzBbMTRdO3VuaWZvcm0gaGFsZjIgdWRpcl9TMV9jMDt1bmlmb3JtIGZsb2F0M3gzIHVt
YXRyaXhfUzE7c2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwogIDEwCWluIGhhbGY0IHZj
b2xvcl9TMDtpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7aGFsZjQgVGV4dHVyZUVm
ZmVjdF9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSB7CiAgMTEJcmV0
dXJuIHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgX2Nvb3Jkcyk7fQogIDEyCQogIDEzCWhh
bGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSB7
CiAgMTQJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzBfYzBfYzAoX2lucHV0LCAoKHVtYXRyaXhf
UzFfYzBfYzApICogX2Nvb3Jkcy54eTEpLnh5KTsKICAxNQl9CiAgMTYJCiAgMTcJaGFsZjQgcnVu
dGltZV9zaGFkZXJfUzFfYzAoaGFsZjQgX2lucHV0KSB7CiAgMTgJaGFsZjQgX3RtcF8wX2luQ29s
b3IgPSBfaW5wdXQ7CiAgMTkJZmxvYXQyIF90bXBfMV9jb29yZHMgPSB2VHJhbnNmb3JtZWRDb29y
ZHNfMl9TMDsKICAyMAloYWxmNCBzdW0gPSBoYWxmNCgwLjApOwogIDIxCWZvciAoaW50IGkgPSAw
O2kgPCBrTWF4TG9vcExpbWl0X1MxX2MwOyArK2kpIHsKICAyMgloYWxmNCBzID0gdW9mZnNldHNB
bmRLZXJuZWxfUzFfYzBbaV07CiAgMjMJc3VtICs9IHMueSAqIE1hdHJpeEVmZmVjdF9TMV9jMF9j
MChfdG1wXzBfaW5Db2xvciwgX3RtcF8xX2Nvb3JkcyArIGZsb2F0MihzLnggKiB1ZGlyX1MxX2Mw
KSk7CiAgMjQJc3VtICs9IHMudyAqIE1hdHJpeEVmZmVjdF9TMV9jMF9jMChfdG1wXzBfaW5Db2xv
ciwgX3RtcF8xX2Nvb3JkcyArIGZsb2F0MihzLnogKiB1ZGlyX1MxX2MwKSk7CiAgMjUJfQogIDI2
CXJldHVybiBoYWxmNChzdW0pOwogIDI3CX0KICAyOAkKICAyOQloYWxmNCBNYXRyaXhFZmZlY3Rf
UzEoaGFsZjQgX2lucHV0KSB7CiAgMzAJcmV0dXJuIHJ1bnRpbWVfc2hhZGVyX1MxX2MwKF9pbnB1
dCk7CiAgMzEJfQogIDMyCQogIDMzCXZvaWQgbWFpbigpIHsvLyBTdGFnZSAwLCBRdWFkUGVyRWRn
ZUFBR2VvbWV0cnlQcm9jZXNzb3IKICAzNAloYWxmNCBvdXRwdXRDb2xvcl9TMDtvdXRwdXRDb2xv
cl9TMCA9IHZjb2xvcl9TMDtjb25zdCBoYWxmNCBvdXRwdXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEp
O2hhbGY0IG91dHB1dF9TMTtvdXRwdXRfUzEgPSBNYXRyaXhFZmZlY3RfUzEob3V0cHV0Q29sb3Jf
UzApO3sgLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBEdWZmCiAgMzUJc2tfRnJhZ0NvbG9yID0g
b3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7fX0KICAzNgkvLyBWZXJ0ZXggR0xTTAogIDM3
CSN2ZXJzaW9uIDEwMAogIDM4CQogIDM5CXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwogIDQwCXBy
ZWNpc2lvbiBtZWRpdW1wIHNhbXBsZXIyRDsKICA0MQl1bmlmb3JtIGhpZ2hwIHZlYzQgc2tfUlRB
ZGp1c3Q7CiAgNDIJdW5pZm9ybSBoaWdocCBtYXQzIHVtYXRyaXhfUzE7CiAgNDMJYXR0cmlidXRl
IGhpZ2hwIHZlYzIgcG9zaXRpb247CiAgNDQJYXR0cmlidXRlIG1lZGl1bXAgdmVjNCBjb2xvcjsK
ICA0NQlhdHRyaWJ1dGUgaGlnaHAgdmVjMiBsb2NhbENvb3JkOwogIDQ2CXZhcnlpbmcgbWVkaXVt
cCB2ZWM0IHZjb2xvcl9TMDsKICA0Nwl2YXJ5aW5nIGhpZ2hwIHZlYzIgdlRyYW5zZm9ybWVkQ29v
cmRzXzJfUzA7CiAgNDgJdm9pZCBtYWluKCkgewogIDQ5CXZjb2xvcl9TMCA9IGNvbG9yOwogIDUw
CWdsX1Bvc2l0aW9uID0gdmVjNChwb3NpdGlvbiwgMC4wLCAxLjApOwogIDUxCXsKICA1Mgl2VHJh
bnNmb3JtZWRDb29yZHNfMl9TMCA9ICh1bWF0cml4X1MxICogdmVjMyhsb2NhbENvb3JkLCAxLjAp
KS54eTsKICA1Mwl9CiAgNTQJZ2xfUG9zaXRpb24gPSB2ZWM0KGdsX1Bvc2l0aW9uLnh5ICogc2tf
UlRBZGp1c3QueHogKyBnbF9Qb3NpdGlvbi53dyAqIHNrX1JUQWRqdXN0Lnl3LCAwLjAsIGdsX1Bv
c2l0aW9uLncpOwogIDU1CX0KICA1NgkKICA1NwkvLyBGcmFnbWVudCBHTFNMCiAgNTgJI3ZlcnNp
b24gMTAwCiAgNTkJCiAgNjAJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CiAgNjEJcHJlY2lzaW9u
IG1lZGl1bXAgc2FtcGxlcjJEOwogIDYyCWNvbnN0IGhpZ2hwIGludCBrTWF4TG9vcExpbWl0X1Mx
X2MwID0gNjsKICA2Mwl1bmlmb3JtIGhpZ2hwIG1hdDMgdW1hdHJpeF9TMV9jMF9jMDsKICA2NAl1
bmlmb3JtIG1lZGl1bXAgdmVjNCB1b2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFsxNF07CiAgNjUJdW5p
Zm9ybSBtZWRpdW1wIHZlYzIgdWRpcl9TMV9jMDsKICA2Ngl1bmlmb3JtIGhpZ2hwIG1hdDMgdW1h
dHJpeF9TMTsKICA2Nwl1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKICA2
OAl2YXJ5aW5nIG1lZGl1bXAgdmVjNCB2Y29sb3JfUzA7CiAgNjkJdmFyeWluZyBoaWdocCB2ZWMy
IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwogIDcwCXZvaWQgbWFpbigpIHsKICA3MQloaWdocCB2
ZWMyIF82X3RtcF8xX2Nvb3JkcyA9IHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwogIDcyCW1lZGl1
bXAgdmVjNCBfN19zdW0gPSB2ZWM0KDAuMCk7CiAgNzMJZm9yIChoaWdocCBpbnQgXzhfaSA9IDA7
XzhfaSA8IGtNYXhMb29wTGltaXRfUzFfYzA7ICsrXzhfaSkgewogIDc0CW1lZGl1bXAgdmVjNCBf
OV9zID0gdW9mZnNldHNBbmRLZXJuZWxfUzFfYzBbXzhfaV07CiAgNzUJXzdfc3VtICs9IF85X3Mu
eSAqIHRleHR1cmUyRCh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgKHVtYXRyaXhfUzFfYzBfYzAgKiB2
ZWMzKF82X3RtcF8xX2Nvb3JkcyArIF85X3MueCAqIHVkaXJfUzFfYzAsIDEuMCkpLnh5LCAtMC40
NzUpOwogIDc2CV83X3N1bSArPSBfOV9zLncgKiB0ZXh0dXJlMkQodVRleHR1cmVTYW1wbGVyXzBf
UzEsICh1bWF0cml4X1MxX2MwX2MwICogdmVjMyhfNl90bXBfMV9jb29yZHMgKyBfOV9zLnogKiB1
ZGlyX1MxX2MwLCAxLjApKS54eSwgLTAuNDc1KTsKICA3Nwl9CiAgNzgJbWVkaXVtcCB2ZWM0IG91
dHB1dF9TMSA9IF83X3N1bTsKICA3OQl7CiAgODAJZ2xfRnJhZ0NvbG9yID0gb3V0cHV0X1MxOwog
IDgxCX0KICA4Mgl9CiAgODMJCiAgODQJCkVycm9yczoKZXJyb3I6IEV4Y2VlZGVkIG1heCBuciBp
bmRpcmVjdCB0ZXh0dXJlIGxvb2t1cHMgKDEzLzQpCkV4Y2VlZGVkIG1heCBBTFUgaW5zdHJ1Y3Rp
b25zICg2Ni82NCkKU2hhZGVyIGNvbXBpbGF0aW9uIGVycm9yCi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogICAxCS8vIFZlcnRleCBTS1NMCiAgIDIJdW5pZm9ybSBmbG9hdDQgc2tfUlRBZGp1c3Q7
dW5pZm9ybSBmbG9hdDN4MyB1bWF0cml4X1MxO2luIGZsb2F0MiBwb3NpdGlvbjtpbiBoYWxmNCBj
b2xvcjtpbiBmbG9hdDIgbG9jYWxDb29yZDtvdXQgaGFsZjQgdmNvbG9yX1MwO291dCBmbG9hdDIg
dlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7dm9pZCBtYWluKCkgey8vIFByaW1pdGl2ZSBQcm9jZXNz
b3IgUXVhZFBlckVkZ2VBQUdlb21ldHJ5UHJvY2Vzc29yCiAgIDMJdmNvbG9yX1MwID0gY29sb3I7
c2tfUG9zaXRpb24gPSBwb3NpdGlvbi54eTAxO3sKICAgNAl2VHJhbnNmb3JtZWRDb29yZHNfMl9T
MCA9ICh1bWF0cml4X1MxICogbG9jYWxDb29yZC54eTEpLnh5OwogICA1CX0KICAgNgl9CiAgIDcJ
Ly8gRnJhZ21lbnQgU0tTTAogICA4CWNvbnN0IGludCBrTWF4TG9vcExpbWl0X1MxX2MwID0gNjsK
ICAgOQl1bmlmb3JtIGZsb2F0NCB1Y2xhbXBfUzFfYzBfYzBfYzA7dW5pZm9ybSBmbG9hdDN4MyB1
bWF0cml4X1MxX2MwX2MwO3VuaWZvcm0gaGFsZjQgdW9mZnNldHNBbmRLZXJuZWxfUzFfYzBbMTRd
O3VuaWZvcm0gaGFsZjIgdWRpcl9TMV9jMDt1bmlmb3JtIGZsb2F0M3gzIHVtYXRyaXhfUzE7c2Ft
cGxlcjJEIHVUZXh0dXJlU2FtcGxlcl8wX1MxOwogIDEwCWluIGhhbGY0IHZjb2xvcl9TMDtpbiBm
bG9hdDIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7aGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMF9j
MF9jMChoYWxmNCBfaW5wdXQsIGZsb2F0MiBfY29vcmRzKSB7CiAgMTEJZmxvYXQyIGluQ29vcmQg
PSBfY29vcmRzO2Zsb2F0MiBzdWJzZXRDb29yZDtzdWJzZXRDb29yZC54ID0gaW5Db29yZC54O3N1
YnNldENvb3JkLnkgPSBpbkNvb3JkLnk7ZmxvYXQyIGNsYW1wZWRDb29yZDtjbGFtcGVkQ29vcmQg
PSBjbGFtcChzdWJzZXRDb29yZCwgdWNsYW1wX1MxX2MwX2MwX2MwLnh5LCB1Y2xhbXBfUzFfYzBf
YzBfYzAuencpO2hhbGY0IHRleHR1cmVDb2xvciA9IHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9T
MSwgY2xhbXBlZENvb3JkKTtyZXR1cm4gdGV4dHVyZUNvbG9yO30KICAxMgkKICAxMwloYWxmNCBN
YXRyaXhFZmZlY3RfUzFfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgewogIDE0
CXJldHVybiBUZXh0dXJlRWZmZWN0X1MxX2MwX2MwX2MwKF9pbnB1dCwgKCh1bWF0cml4X1MxX2Mw
X2MwKSAqIF9jb29yZHMueHkxKS54eSk7CiAgMTUJfQogIDE2CQogIDE3CWhhbGY0IHJ1bnRpbWVf
c2hhZGVyX1MxX2MwKGhhbGY0IF9pbnB1dCkgewogIDE4CWhhbGY0IF90bXBfMF9pbkNvbG9yID0g
X2lucHV0OwogIDE5CWZsb2F0MiBfdG1wXzFfY29vcmRzID0gdlRyYW5zZm9ybWVkQ29vcmRzXzJf
UzA7CiAgMjAJaGFsZjQgc3VtID0gaGFsZjQoMC4wKTsKICAyMQlmb3IgKGludCBpID0gMDtpIDwg
a01heExvb3BMaW1pdF9TMV9jMDsgKytpKSB7CiAgMjIJaGFsZjQgcyA9IHVvZmZzZXRzQW5kS2Vy
bmVsX1MxX2MwW2ldOwogIDIzCXN1bSArPSBzLnkgKiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX3Rt
cF8wX2luQ29sb3IsIF90bXBfMV9jb29yZHMgKyBmbG9hdDIocy54ICogdWRpcl9TMV9jMCkpOwog
IDI0CXN1bSArPSBzLncgKiBNYXRyaXhFZmZlY3RfUzFfYzBfYzAoX3RtcF8wX2luQ29sb3IsIF90
bXBfMV9jb29yZHMgKyBmbG9hdDIocy56ICogdWRpcl9TMV9jMCkpOwogIDI1CX0KICAyNglyZXR1
cm4gaGFsZjQoc3VtKTsKICAyNwl9CiAgMjgJCiAgMjkJaGFsZjQgTWF0cml4RWZmZWN0X1MxKGhh
bGY0IF9pbnB1dCkgewogIDMwCXJldHVybiBydW50aW1lX3NoYWRlcl9TMV9jMChfaW5wdXQpOwog
IDMxCX0KICAzMgkKICAzMwl2b2lkIG1haW4oKSB7Ly8gU3RhZ2UgMCwgUXVhZFBlckVkZ2VBQUdl
b21ldHJ5UHJvY2Vzc29yCiAgMzQJaGFsZjQgb3V0cHV0Q29sb3JfUzA7b3V0cHV0Q29sb3JfUzAg
PSB2Y29sb3JfUzA7Y29uc3QgaGFsZjQgb3V0cHV0Q292ZXJhZ2VfUzAgPSBoYWxmNCgxKTtoYWxm
NCBvdXRwdXRfUzE7b3V0cHV0X1MxID0gTWF0cml4RWZmZWN0X1MxKG91dHB1dENvbG9yX1MwKTt7
IC8vIFhmZXIgUHJvY2Vzc29yOiBQb3J0ZXIgRHVmZgogIDM1CXNrX0ZyYWdDb2xvciA9IG91dHB1
dF9TMSAqIG91dHB1dENvdmVyYWdlX1MwO319CiAgMzYJLy8gVmVydGV4IEdMU0wKICAzNwkjdmVy
c2lvbiAxMDAKICAzOAkKICAzOQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKICA0MAlwcmVjaXNp
b24gbWVkaXVtcCBzYW1wbGVyMkQ7CiAgNDEJdW5pZm9ybSBoaWdocCB2ZWM0IHNrX1JUQWRqdXN0
OwogIDQyCXVuaWZvcm0gaGlnaHAgbWF0MyB1bWF0cml4X1MxOwogIDQzCWF0dHJpYnV0ZSBoaWdo
cCB2ZWMyIHBvc2l0aW9uOwogIDQ0CWF0dHJpYnV0ZSBtZWRpdW1wIHZlYzQgY29sb3I7CiAgNDUJ
YXR0cmlidXRlIGhpZ2hwIHZlYzIgbG9jYWxDb29yZDsKICA0Ngl2YXJ5aW5nIG1lZGl1bXAgdmVj
NCB2Y29sb3JfUzA7CiAgNDcJdmFyeWluZyBoaWdocCB2ZWMyIHZUcmFuc2Zvcm1lZENvb3Jkc18y
X1MwOwogIDQ4CXZvaWQgbWFpbigpIHsKICA0OQl2Y29sb3JfUzAgPSBjb2xvcjsKICA1MAlnbF9Q
b3NpdGlvbiA9IHZlYzQocG9zaXRpb24sIDAuMCwgMS4wKTsKICA1MQl7CiAgNTIJdlRyYW5zZm9y
bWVkQ29vcmRzXzJfUzAgPSAodW1hdHJpeF9TMSAqIHZlYzMobG9jYWxDb29yZCwgMS4wKSkueHk7
CiAgNTMJfQogIDU0CWdsX1Bvc2l0aW9uID0gdmVjNChnbF9Qb3NpdGlvbi54eSAqIHNrX1JUQWRq
dXN0Lnh6ICsgZ2xfUG9zaXRpb24ud3cgKiBza19SVEFkanVzdC55dywgMC4wLCBnbF9Qb3NpdGlv
bi53KTsKICA1NQl9CiAgNTYJCiAgNTcJLy8gRnJhZ21lbnQgR0xTTAogIDU4CSN2ZXJzaW9uIDEw
MAogIDU5CQogIDYwCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwogIDYxCXByZWNpc2lvbiBtZWRp
dW1wIHNhbXBsZXIyRDsKICA2Mgljb25zdCBoaWdocCBpbnQga01heExvb3BMaW1pdF9TMV9jMCA9
IDY7CiAgNjMJdW5pZm9ybSBoaWdocCB2ZWM0IHVjbGFtcF9TMV9jMF9jMF9jMDsKICA2NAl1bmlm
b3JtIGhpZ2hwIG1hdDMgdW1hdHJpeF9TMV9jMF9jMDsKICA2NQl1bmlmb3JtIG1lZGl1bXAgdmVj
NCB1b2Zmc2V0c0FuZEtlcm5lbF9TMV9jMFsxNF07CiAgNjYJdW5pZm9ybSBtZWRpdW1wIHZlYzIg
dWRpcl9TMV9jMDsKICA2Nwl1bmlmb3JtIGhpZ2hwIG1hdDMgdW1hdHJpeF9TMTsKICA2OAl1bmlm
b3JtIHNhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKICA2OQl2YXJ5aW5nIG1lZGl1bXAg
dmVjNCB2Y29sb3JfUzA7CiAgNzAJdmFyeWluZyBoaWdocCB2ZWMyIHZUcmFuc2Zvcm1lZENvb3Jk
c18yX1MwOwogIDcxCXZvaWQgbWFpbigpIHsKICA3MgloaWdocCB2ZWMyIF8yNl90bXBfMV9jb29y
ZHMgPSB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKICA3MwltZWRpdW1wIHZlYzQgXzI3X3N1bSA9
IHZlYzQoMC4wKTsKICA3NAlmb3IgKGhpZ2hwIGludCBfMjhfaSA9IDA7XzI4X2kgPCBrTWF4TG9v
cExpbWl0X1MxX2MwOyArK18yOF9pKSB7CiAgNzUJbWVkaXVtcCB2ZWM0IF8yOV9zID0gdW9mZnNl
dHNBbmRLZXJuZWxfUzFfYzBbXzI4X2ldOwogIDc2CWhpZ2hwIHZlYzIgXzMwX2luQ29vcmQgPSAo
dW1hdHJpeF9TMV9jMF9jMCAqIHZlYzMoXzI2X3RtcF8xX2Nvb3JkcyArIF8yOV9zLnggKiB1ZGly
X1MxX2MwLCAxLjApKS54eTsKICA3NwloaWdocCB2ZWMyIF8zMV9zdWJzZXRDb29yZDsKICA3OAlf
MzFfc3Vic2V0Q29vcmQueCA9IF8zMF9pbkNvb3JkLng7CiAgNzkJXzMxX3N1YnNldENvb3JkLnkg
PSBfMzBfaW5Db29yZC55OwogIDgwCWhpZ2hwIHZlYzIgXzMyX2NsYW1wZWRDb29yZCA9IGNsYW1w
KF8zMV9zdWJzZXRDb29yZCwgdWNsYW1wX1MxX2MwX2MwX2MwLnh5LCB1Y2xhbXBfUzFfYzBfYzBf
YzAuencpOwogIDgxCW1lZGl1bXAgdmVjNCBfMzNfdGV4dHVyZUNvbG9yID0gdGV4dHVyZTJEKHVU
ZXh0dXJlU2FtcGxlcl8wX1MxLCBfMzJfY2xhbXBlZENvb3JkLCAtMC40NzUpOwogIDgyCV8yN19z
dW0gKz0gXzI5X3MueSAqIF8zM190ZXh0dXJlQ29sb3I7CiAgODMJaGlnaHAgdmVjMiBfMzRfaW5D
b29yZCA9ICh1bWF0cml4X1MxX2MwX2MwICogdmVjMyhfMjZfdG1wXzFfY29vcmRzICsgXzI5X3Mu
eiAqIHVkaXJfUzFfYzAsIDEuMCkpLnh5OwogIDg0CWhpZ2hwIHZlYzIgXzM1X3N1YnNldENvb3Jk
OwogIDg1CV8zNV9zdWJzZXRDb29yZC54ID0gXzM0X2luQ29vcmQueDsKICA4NglfMzVfc3Vic2V0
Q29vcmQueSA9IF8zNF9pbkNvb3JkLnk7CiAgODcJaGlnaHAgdmVjMiBfMzZfY2xhbXBlZENvb3Jk
ID0gY2xhbXAoXzM1X3N1YnNldENvb3JkLCB1Y2xhbXBfUzFfYzBfYzBfYzAueHksIHVjbGFtcF9T
MV9jMF9jMF9jMC56dyk7CiAgODgJbWVkaXVtcCB2ZWM0IF8zN190ZXh0dXJlQ29sb3IgPSB0ZXh0
dXJlMkQodVRleHR1cmVTYW1wbGVyXzBfUzEsIF8zNl9jbGFtcGVkQ29vcmQsIC0wLjQ3NSk7CiAg
ODkJXzI3X3N1bSArPSBfMjlfcy53ICogXzM3X3RleHR1cmVDb2xvcjsKICA5MAl9CiAgOTEJbWVk
aXVtcCB2ZWM0IG91dHB1dF9TMSA9IF8yN19zdW07CiAgOTIJewogIDkzCWdsX0ZyYWdDb2xvciA9
IG91dHB1dF9TMTsKICA5NAl9CiAgOTUJfQogIDk2CQogIDk3CQpFcnJvcnM6CmVycm9yOiBFeGNl
ZWRlZCBtYXggbnIgaW5kaXJlY3QgdGV4dHVyZSBsb29rdXBzICgxMy80KQpFeGNlZWRlZCBtYXgg
QUxVIGluc3RydWN0aW9ucyAoNzgvNjQpClNoYWRlciBjb21waWxhdGlvbiBlcnJvcgotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KICAgMQkvLyBWZXJ0ZXggU0tTTAogICAyCXVuaWZvcm0gZmxvYXQ0
IHNrX1JUQWRqdXN0O3VuaWZvcm0gZmxvYXQzeDMgdW1hdHJpeF9TMTtpbiBmbG9hdDIgcG9zaXRp
b247aW4gaGFsZjQgY29sb3I7aW4gZmxvYXQyIGxvY2FsQ29vcmQ7b3V0IGhhbGY0IHZjb2xvcl9T
MDtvdXQgZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwO3ZvaWQgbWFpbigpIHsvLyBQcmlt
aXRpdmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgogICAzCXZjb2xv
cl9TMCA9IGNvbG9yO3NrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTt7CiAgIDQJdlRyYW5zZm9y
bWVkQ29vcmRzXzJfUzAgPSAodW1hdHJpeF9TMSAqIGxvY2FsQ29vcmQueHkxKS54eTsKICAgNQl9
CiAgIDYJfQogICA3CS8vIEZyYWdtZW50IFNLU0wKICAgOAljb25zdCBpbnQga01heExvb3BMaW1p
dF9TMV9jMCA9IDY7CiAgIDkJdW5pZm9ybSBmbG9hdDN4MyB1bWF0cml4X1MxX2MwX2MwO3VuaWZv
cm0gaGFsZjQgdW9mZnNldHNBbmRLZXJuZWxfUzFfYzBbMTRdO3VuaWZvcm0gaGFsZjIgdWRpcl9T
MV9jMDt1bmlmb3JtIGZsb2F0M3gzIHVtYXRyaXhfUzE7c2FtcGxlcjJEIHVUZXh0dXJlU2FtcGxl
cl8wX1MxOwogIDEwCWluIGhhbGY0IHZjb2xvcl9TMDtpbiBmbG9hdDIgdlRyYW5zZm9ybWVkQ29v
cmRzXzJfUzA7aGFsZjQgVGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChoYWxmNCBfaW5wdXQsIGZs
b2F0MiBfY29vcmRzKSB7CiAgMTEJcmV0dXJuIHNhbXBsZSh1VGV4dHVyZVNhbXBsZXJfMF9TMSwg
X2Nvb3Jkcyk7fQogIDEyCQogIDEzCWhhbGY0IE1hdHJpeEVmZmVjdF9TMV9jMF9jMChoYWxmNCBf
aW5wdXQsIGZsb2F0MiBfY29vcmRzKSB7CiAgMTQJcmV0dXJuIFRleHR1cmVFZmZlY3RfUzFfYzBf
YzBfYzAoX2lucHV0LCAoKHVtYXRyaXhfUzFfYzBfYzApICogX2Nvb3Jkcy54eTEpLnh5KTsKICAx
NQl9CiAgMTYJCiAgMTcJaGFsZjQgcnVudGltZV9zaGFkZXJfUzFfYzAoaGFsZjQgX2lucHV0KSB7
CiAgMTgJaGFsZjQgX3RtcF8wX2luQ29sb3IgPSBfaW5wdXQ7CiAgMTkJZmxvYXQyIF90bXBfMV9j
b29yZHMgPSB2VHJhbnNmb3JtZWRDb29yZHNfMl9TMDsKICAyMAloYWxmNCBzdW0gPSBoYWxmNCgw
LjApOwogIDIxCWZvciAoaW50IGkgPSAwO2kgPCBrTWF4TG9vcExpbWl0X1MxX2MwOyArK2kpIHsK
ICAyMgloYWxmNCBzID0gdW9mZnNldHNBbmRLZXJuZWxfUzFfYzBbaV07CiAgMjMJc3VtICs9IHMu
eSAqIE1hdHJpeEVmZmVjdF9TMV9jMF9jMChfdG1wXzBfaW5Db2xvciwgX3RtcF8xX2Nvb3JkcyAr
IGZsb2F0MihzLnggKiB1ZGlyX1MxX2MwKSk7CiAgMjQJc3VtICs9IHMudyAqIE1hdHJpeEVmZmVj
dF9TMV9jMF9jMChfdG1wXzBfaW5Db2xvciwgX3RtcF8xX2Nvb3JkcyArIGZsb2F0MihzLnogKiB1
ZGlyX1MxX2MwKSk7CiAgMjUJfQogIDI2CXJldHVybiBoYWxmNChzdW0pOwogIDI3CX0KICAyOAkK
ICAyOQloYWxmNCBNYXRyaXhFZmZlY3RfUzEoaGFsZjQgX2lucHV0KSB7CiAgMzAJcmV0dXJuIHJ1
bnRpbWVfc2hhZGVyX1MxX2MwKF9pbnB1dCk7CiAgMzEJfQogIDMyCQogIDMzCXZvaWQgbWFpbigp
IHsvLyBTdGFnZSAwLCBRdWFkUGVyRWRnZUFBR2VvbWV0cnlQcm9jZXNzb3IKICAzNAloYWxmNCBv
dXRwdXRDb2xvcl9TMDtvdXRwdXRDb2xvcl9TMCA9IHZjb2xvcl9TMDtjb25zdCBoYWxmNCBvdXRw
dXRDb3ZlcmFnZV9TMCA9IGhhbGY0KDEpO2hhbGY0IG91dHB1dF9TMTtvdXRwdXRfUzEgPSBNYXRy
aXhFZmZlY3RfUzEob3V0cHV0Q29sb3JfUzApO3sgLy8gWGZlciBQcm9jZXNzb3I6IFBvcnRlciBE
dWZmCiAgMzUJc2tfRnJhZ0NvbG9yID0gb3V0cHV0X1MxICogb3V0cHV0Q292ZXJhZ2VfUzA7fX0K
ICAzNgkvLyBWZXJ0ZXggR0xTTAogIDM3CSN2ZXJzaW9uIDEwMAogIDM4CQogIDM5CXByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OwogIDQwCXByZWNpc2lvbiBtZWRpdW1wIHNhbXBsZXIyRDsKICA0MQl1
bmlmb3JtIGhpZ2hwIHZlYzQgc2tfUlRBZGp1c3Q7CiAgNDIJdW5pZm9ybSBoaWdocCBtYXQzIHVt
YXRyaXhfUzE7CiAgNDMJYXR0cmlidXRlIGhpZ2hwIHZlYzIgcG9zaXRpb247CiAgNDQJYXR0cmli
dXRlIG1lZGl1bXAgdmVjNCBjb2xvcjsKICA0NQlhdHRyaWJ1dGUgaGlnaHAgdmVjMiBsb2NhbENv
b3JkOwogIDQ2CXZhcnlpbmcgbWVkaXVtcCB2ZWM0IHZjb2xvcl9TMDsKICA0Nwl2YXJ5aW5nIGhp
Z2hwIHZlYzIgdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CiAgNDgJdm9pZCBtYWluKCkgewogIDQ5
CXZjb2xvcl9TMCA9IGNvbG9yOwogIDUwCWdsX1Bvc2l0aW9uID0gdmVjNChwb3NpdGlvbiwgMC4w
LCAxLjApOwogIDUxCXsKICA1Mgl2VHJhbnNmb3JtZWRDb29yZHNfMl9TMCA9ICh1bWF0cml4X1Mx
ICogdmVjMyhsb2NhbENvb3JkLCAxLjApKS54eTsKICA1Mwl9CiAgNTQJZ2xfUG9zaXRpb24gPSB2
ZWM0KGdsX1Bvc2l0aW9uLnh5ICogc2tfUlRBZGp1c3QueHogKyBnbF9Qb3NpdGlvbi53dyAqIHNr
X1JUQWRqdXN0Lnl3LCAwLjAsIGdsX1Bvc2l0aW9uLncpOwogIDU1CX0KICA1NgkKICA1NwkvLyBG
cmFnbWVudCBHTFNMCiAgNTgJI3ZlcnNpb24gMTAwCiAgNTkJCiAgNjAJcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7CiAgNjEJcHJlY2lzaW9uIG1lZGl1bXAgc2FtcGxlcjJEOwogIDYyCWNvbnN0IGhp
Z2hwIGludCBrTWF4TG9vcExpbWl0X1MxX2MwID0gNjsKICA2Mwl1bmlmb3JtIGhpZ2hwIG1hdDMg
dW1hdHJpeF9TMV9jMF9jMDsKICA2NAl1bmlmb3JtIG1lZGl1bXAgdmVjNCB1b2Zmc2V0c0FuZEtl
cm5lbF9TMV9jMFsxNF07CiAgNjUJdW5pZm9ybSBtZWRpdW1wIHZlYzIgdWRpcl9TMV9jMDsKICA2
Ngl1bmlmb3JtIGhpZ2hwIG1hdDMgdW1hdHJpeF9TMTsKICA2Nwl1bmlmb3JtIHNhbXBsZXIyRCB1
VGV4dHVyZVNhbXBsZXJfMF9TMTsKICA2OAl2YXJ5aW5nIG1lZGl1bXAgdmVjNCB2Y29sb3JfUzA7
CiAgNjkJdmFyeWluZyBoaWdocCB2ZWMyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwOwogIDcwCXZv
aWQgbWFpbigpIHsKICA3MQloaWdocCB2ZWMyIF82X3RtcF8xX2Nvb3JkcyA9IHZUcmFuc2Zvcm1l
ZENvb3Jkc18yX1MwOwogIDcyCW1lZGl1bXAgdmVjNCBfN19zdW0gPSB2ZWM0KDAuMCk7CiAgNzMJ
Zm9yIChoaWdocCBpbnQgXzhfaSA9IDA7XzhfaSA8IGtNYXhMb29wTGltaXRfUzFfYzA7ICsrXzhf
aSkgewogIDc0CW1lZGl1bXAgdmVjNCBfOV9zID0gdW9mZnNldHNBbmRLZXJuZWxfUzFfYzBbXzhf
aV07CiAgNzUJXzdfc3VtICs9IF85X3MueSAqIHRleHR1cmUyRCh1VGV4dHVyZVNhbXBsZXJfMF9T
MSwgKHVtYXRyaXhfUzFfYzBfYzAgKiB2ZWMzKF82X3RtcF8xX2Nvb3JkcyArIF85X3MueCAqIHVk
aXJfUzFfYzAsIDEuMCkpLnh5LCAtMC40NzUpOwogIDc2CV83X3N1bSArPSBfOV9zLncgKiB0ZXh0
dXJlMkQodVRleHR1cmVTYW1wbGVyXzBfUzEsICh1bWF0cml4X1MxX2MwX2MwICogdmVjMyhfNl90
bXBfMV9jb29yZHMgKyBfOV9zLnogKiB1ZGlyX1MxX2MwLCAxLjApKS54eSwgLTAuNDc1KTsKICA3
Nwl9CiAgNzgJbWVkaXVtcCB2ZWM0IG91dHB1dF9TMSA9IF83X3N1bTsKICA3OQl7CiAgODAJZ2xf
RnJhZ0NvbG9yID0gb3V0cHV0X1MxOwogIDgxCX0KICA4Mgl9CiAgODMJCiAgODQJCkVycm9yczoK
ZXJyb3I6IEV4Y2VlZGVkIG1heCBuciBpbmRpcmVjdCB0ZXh0dXJlIGxvb2t1cHMgKDEzLzQpCkV4
Y2VlZGVkIG1heCBBTFUgaW5zdHJ1Y3Rpb25zICg2Ni82NCkKRmFpbGVkIHRvIGNyZWF0ZSBETUEt
QlVGIHRleHR1cmUgb2Ygc2l6ZSAxMDI0eDY5MzogVW5zdXBwb3J0ZWQgZG1hYnVmIGZvcm1hdDog
WFIyNDoweGZmZmZmZmZmZmZmZmZmClNoYWRlciBjb21waWxhdGlvbiBlcnJvcgotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KICAgMQkvLyBWZXJ0ZXggU0tTTAogICAyCXVuaWZvcm0gZmxvYXQ0IHNr
X1JUQWRqdXN0O3VuaWZvcm0gZmxvYXQzeDMgdW1hdHJpeF9TMTtpbiBmbG9hdDIgcG9zaXRpb247
aW4gaGFsZjQgY29sb3I7aW4gZmxvYXQyIGxvY2FsQ29vcmQ7b3V0IGhhbGY0IHZjb2xvcl9TMDtv
dXQgZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwO3ZvaWQgbWFpbigpIHsvLyBQcmltaXRp
dmUgUHJvY2Vzc29yIFF1YWRQZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgogICAzCXZjb2xvcl9T
MCA9IGNvbG9yO3NrX1Bvc2l0aW9uID0gcG9zaXRpb24ueHkwMTt7CiAgIDQJdlRyYW5zZm9ybWVk
Q29vcmRzXzJfUzAgPSAodW1hdHJpeF9TMSAqIGxvY2FsQ29vcmQueHkxKS54eTsKICAgNQl9CiAg
IDYJfQogICA3CS8vIEZyYWdtZW50IFNLU0wKICAgOAljb25zdCBpbnQga01heExvb3BMaW1pdF9T
MV9jMCA9IDY7CiAgIDkJdW5pZm9ybSBmbG9hdDQgdWNsYW1wX1MxX2MwX2MwX2MwO3VuaWZvcm0g
ZmxvYXQzeDMgdW1hdHJpeF9TMV9jMF9jMDt1bmlmb3JtIGhhbGY0IHVvZmZzZXRzQW5kS2VybmVs
X1MxX2MwWzE0XTt1bmlmb3JtIGhhbGYyIHVkaXJfUzFfYzA7dW5pZm9ybSBmbG9hdDN4MyB1bWF0
cml4X1MxO3NhbXBsZXIyRCB1VGV4dHVyZVNhbXBsZXJfMF9TMTsKICAxMAlpbiBoYWxmNCB2Y29s
b3JfUzA7aW4gZmxvYXQyIHZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwO2hhbGY0IFRleHR1cmVFZmZl
Y3RfUzFfYzBfYzBfYzAoaGFsZjQgX2lucHV0LCBmbG9hdDIgX2Nvb3JkcykgewogIDExCWZsb2F0
MiBpbkNvb3JkID0gX2Nvb3JkcztmbG9hdDIgc3Vic2V0Q29vcmQ7c3Vic2V0Q29vcmQueCA9IGlu
Q29vcmQueDtzdWJzZXRDb29yZC55ID0gaW5Db29yZC55O2Zsb2F0MiBjbGFtcGVkQ29vcmQ7Y2xh
bXBlZENvb3JkID0gY2xhbXAoc3Vic2V0Q29vcmQsIHVjbGFtcF9TMV9jMF9jMF9jMC54eSwgdWNs
YW1wX1MxX2MwX2MwX2MwLnp3KTtoYWxmNCB0ZXh0dXJlQ29sb3IgPSBzYW1wbGUodVRleHR1cmVT
YW1wbGVyXzBfUzEsIGNsYW1wZWRDb29yZCk7cmV0dXJuIHRleHR1cmVDb2xvcjt9CiAgMTIJCiAg
MTMJaGFsZjQgTWF0cml4RWZmZWN0X1MxX2MwX2MwKGhhbGY0IF9pbnB1dCwgZmxvYXQyIF9jb29y
ZHMpIHsKICAxNAlyZXR1cm4gVGV4dHVyZUVmZmVjdF9TMV9jMF9jMF9jMChfaW5wdXQsICgodW1h
dHJpeF9TMV9jMF9jMCkgKiBfY29vcmRzLnh5MSkueHkpOwogIDE1CX0KICAxNgkKICAxNwloYWxm
NCBydW50aW1lX3NoYWRlcl9TMV9jMChoYWxmNCBfaW5wdXQpIHsKICAxOAloYWxmNCBfdG1wXzBf
aW5Db2xvciA9IF9pbnB1dDsKICAxOQlmbG9hdDIgX3RtcF8xX2Nvb3JkcyA9IHZUcmFuc2Zvcm1l
ZENvb3Jkc18yX1MwOwogIDIwCWhhbGY0IHN1bSA9IGhhbGY0KDAuMCk7CiAgMjEJZm9yIChpbnQg
aSA9IDA7aSA8IGtNYXhMb29wTGltaXRfUzFfYzA7ICsraSkgewogIDIyCWhhbGY0IHMgPSB1b2Zm
c2V0c0FuZEtlcm5lbF9TMV9jMFtpXTsKICAyMwlzdW0gKz0gcy55ICogTWF0cml4RWZmZWN0X1Mx
X2MwX2MwKF90bXBfMF9pbkNvbG9yLCBfdG1wXzFfY29vcmRzICsgZmxvYXQyKHMueCAqIHVkaXJf
UzFfYzApKTsKICAyNAlzdW0gKz0gcy53ICogTWF0cml4RWZmZWN0X1MxX2MwX2MwKF90bXBfMF9p
bkNvbG9yLCBfdG1wXzFfY29vcmRzICsgZmxvYXQyKHMueiAqIHVkaXJfUzFfYzApKTsKICAyNQl9
CiAgMjYJcmV0dXJuIGhhbGY0KHN1bSk7CiAgMjcJfQogIDI4CQogIDI5CWhhbGY0IE1hdHJpeEVm
ZmVjdF9TMShoYWxmNCBfaW5wdXQpIHsKICAzMAlyZXR1cm4gcnVudGltZV9zaGFkZXJfUzFfYzAo
X2lucHV0KTsKICAzMQl9CiAgMzIJCiAgMzMJdm9pZCBtYWluKCkgey8vIFN0YWdlIDAsIFF1YWRQ
ZXJFZGdlQUFHZW9tZXRyeVByb2Nlc3NvcgogIDM0CWhhbGY0IG91dHB1dENvbG9yX1MwO291dHB1
dENvbG9yX1MwID0gdmNvbG9yX1MwO2NvbnN0IGhhbGY0IG91dHB1dENvdmVyYWdlX1MwID0gaGFs
ZjQoMSk7aGFsZjQgb3V0cHV0X1MxO291dHB1dF9TMSA9IE1hdHJpeEVmZmVjdF9TMShvdXRwdXRD
b2xvcl9TMCk7eyAvLyBYZmVyIFByb2Nlc3NvcjogUG9ydGVyIER1ZmYKICAzNQlza19GcmFnQ29s
b3IgPSBvdXRwdXRfUzEgKiBvdXRwdXRDb3ZlcmFnZV9TMDt9fQogIDM2CS8vIFZlcnRleCBHTFNM
CiAgMzcJI3ZlcnNpb24gMTAwCiAgMzgJCiAgMzkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CiAg
NDAJcHJlY2lzaW9uIG1lZGl1bXAgc2FtcGxlcjJEOwogIDQxCXVuaWZvcm0gaGlnaHAgdmVjNCBz
a19SVEFkanVzdDsKICA0Mgl1bmlmb3JtIGhpZ2hwIG1hdDMgdW1hdHJpeF9TMTsKICA0MwlhdHRy
aWJ1dGUgaGlnaHAgdmVjMiBwb3NpdGlvbjsKICA0NAlhdHRyaWJ1dGUgbWVkaXVtcCB2ZWM0IGNv
bG9yOwogIDQ1CWF0dHJpYnV0ZSBoaWdocCB2ZWMyIGxvY2FsQ29vcmQ7CiAgNDYJdmFyeWluZyBt
ZWRpdW1wIHZlYzQgdmNvbG9yX1MwOwogIDQ3CXZhcnlpbmcgaGlnaHAgdmVjMiB2VHJhbnNmb3Jt
ZWRDb29yZHNfMl9TMDsKICA0OAl2b2lkIG1haW4oKSB7CiAgNDkJdmNvbG9yX1MwID0gY29sb3I7
CiAgNTAJZ2xfUG9zaXRpb24gPSB2ZWM0KHBvc2l0aW9uLCAwLjAsIDEuMCk7CiAgNTEJewogIDUy
CXZUcmFuc2Zvcm1lZENvb3Jkc18yX1MwID0gKHVtYXRyaXhfUzEgKiB2ZWMzKGxvY2FsQ29vcmQs
IDEuMCkpLnh5OwogIDUzCX0KICA1NAlnbF9Qb3NpdGlvbiA9IHZlYzQoZ2xfUG9zaXRpb24ueHkg
KiBza19SVEFkanVzdC54eiArIGdsX1Bvc2l0aW9uLnd3ICogc2tfUlRBZGp1c3QueXcsIDAuMCwg
Z2xfUG9zaXRpb24udyk7CiAgNTUJfQogIDU2CQogIDU3CS8vIEZyYWdtZW50IEdMU0wKICA1OAkj
dmVyc2lvbiAxMDAKICA1OQkKICA2MAlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKICA2MQlwcmVj
aXNpb24gbWVkaXVtcCBzYW1wbGVyMkQ7CiAgNjIJY29uc3QgaGlnaHAgaW50IGtNYXhMb29wTGlt
aXRfUzFfYzAgPSA2OwogIDYzCXVuaWZvcm0gaGlnaHAgdmVjNCB1Y2xhbXBfUzFfYzBfYzBfYzA7
CiAgNjQJdW5pZm9ybSBoaWdocCBtYXQzIHVtYXRyaXhfUzFfYzBfYzA7CiAgNjUJdW5pZm9ybSBt
ZWRpdW1wIHZlYzQgdW9mZnNldHNBbmRLZXJuZWxfUzFfYzBbMTRdOwogIDY2CXVuaWZvcm0gbWVk
aXVtcCB2ZWMyIHVkaXJfUzFfYzA7CiAgNjcJdW5pZm9ybSBoaWdocCBtYXQzIHVtYXRyaXhfUzE7
CiAgNjgJdW5pZm9ybSBzYW1wbGVyMkQgdVRleHR1cmVTYW1wbGVyXzBfUzE7CiAgNjkJdmFyeWlu
ZyBtZWRpdW1wIHZlYzQgdmNvbG9yX1MwOwogIDcwCXZhcnlpbmcgaGlnaHAgdmVjMiB2VHJhbnNm
b3JtZWRDb29yZHNfMl9TMDsKICA3MQl2b2lkIG1haW4oKSB7CiAgNzIJaGlnaHAgdmVjMiBfMjZf
dG1wXzFfY29vcmRzID0gdlRyYW5zZm9ybWVkQ29vcmRzXzJfUzA7CiAgNzMJbWVkaXVtcCB2ZWM0
IF8yN19zdW0gPSB2ZWM0KDAuMCk7CiAgNzQJZm9yIChoaWdocCBpbnQgXzI4X2kgPSAwO18yOF9p
IDwga01heExvb3BMaW1pdF9TMV9jMDsgKytfMjhfaSkgewogIDc1CW1lZGl1bXAgdmVjNCBfMjlf
cyA9IHVvZmZzZXRzQW5kS2VybmVsX1MxX2MwW18yOF9pXTsKICA3NgloaWdocCB2ZWMyIF8zMF9p
bkNvb3JkID0gKHVtYXRyaXhfUzFfYzBfYzAgKiB2ZWMzKF8yNl90bXBfMV9jb29yZHMgKyBfMjlf
cy54ICogdWRpcl9TMV9jMCwgMS4wKSkueHk7CiAgNzcJaGlnaHAgdmVjMiBfMzFfc3Vic2V0Q29v
cmQ7CiAgNzgJXzMxX3N1YnNldENvb3JkLnggPSBfMzBfaW5Db29yZC54OwogIDc5CV8zMV9zdWJz
ZXRDb29yZC55ID0gXzMwX2luQ29vcmQueTsKICA4MAloaWdocCB2ZWMyIF8zMl9jbGFtcGVkQ29v
cmQgPSBjbGFtcChfMzFfc3Vic2V0Q29vcmQsIHVjbGFtcF9TMV9jMF9jMF9jMC54eSwgdWNsYW1w
X1MxX2MwX2MwX2MwLnp3KTsKICA4MQltZWRpdW1wIHZlYzQgXzMzX3RleHR1cmVDb2xvciA9IHRl
eHR1cmUyRCh1VGV4dHVyZVNhbXBsZXJfMF9TMSwgXzMyX2NsYW1wZWRDb29yZCwgLTAuNDc1KTsK
ICA4MglfMjdfc3VtICs9IF8yOV9zLnkgKiBfMzNfdGV4dHVyZUNvbG9yOwogIDgzCWhpZ2hwIHZl
YzIgXzM0X2luQ29vcmQgPSAodW1hdHJpeF9TMV9jMF9jMCAqIHZlYzMoXzI2X3RtcF8xX2Nvb3Jk
cyArIF8yOV9zLnogKiB1ZGlyX1MxX2MwLCAxLjApKS54eTsKICA4NAloaWdocCB2ZWMyIF8zNV9z
dWJzZXRDb29yZDsKICA4NQlfMzVfc3Vic2V0Q29vcmQueCA9IF8zNF9pbkNvb3JkLng7CiAgODYJ
XzM1X3N1YnNldENvb3JkLnkgPSBfMzRfaW5Db29yZC55OwogIDg3CWhpZ2hwIHZlYzIgXzM2X2Ns
YW1wZWRDb29yZCA9IGNsYW1wKF8zNV9zdWJzZXRDb29yZCwgdWNsYW1wX1MxX2MwX2MwX2MwLnh5
LCB1Y2xhbXBfUzFfYzBfYzBfYzAuencpOwogIDg4CW1lZGl1bXAgdmVjNCBfMzdfdGV4dHVyZUNv
bG9yID0gdGV4dHVyZTJEKHVUZXh0dXJlU2FtcGxlcl8wX1MxLCBfMzZfY2xhbXBlZENvb3JkLCAt
MC40NzUpOwogIDg5CV8yN19zdW0gKz0gXzI5X3MudyAqIF8zN190ZXh0dXJlQ29sb3I7CiAgOTAJ
fQogIDkxCW1lZGl1bXAgdmVjNCBvdXRwdXRfUzEgPSBfMjdfc3VtOwogIDkyCXsKICA5MwlnbF9G
cmFnQ29sb3IgPSBvdXRwdXRfUzE7CiAgOTQJfQogIDk1CX0KICA5NgkKICA5NwkKRXJyb3JzOgpl
cnJvcjogRXhjZWVkZWQgbWF4IG5yIGluZGlyZWN0IHRleHR1cmUgbG9va3VwcyAoMTMvNCkKRXhj
ZWVkZWQgbWF4IEFMVSBpbnN0cnVjdGlvbnMgKDc4LzY0KQpGYWlsZWQgdG8gY3JlYXRlIERNQS1C
VUYgdGV4dHVyZSBvZiBzaXplIDEwMjR4NjkzOiBVbnN1cHBvcnRlZCBkbWFidWYgZm9ybWF0OiBY
UjI0OjB4ZmZmZmZmZmZmZmZmZmYKRmFpbGVkIHRvIGNyZWF0ZSBETUEtQlVGIHRleHR1cmUgb2Yg
c2l6ZSAxMDI0eDY5MzogVW5zdXBwb3J0ZWQgZG1hYnVmIGZvcm1hdDogWFIyNDoweGZmZmZmZmZm
ZmZmZmZmCgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>472686</attachid>
            <date>2024-09-25 19:19:10 -0700</date>
            <delta_ts>2024-09-25 19:19:10 -0700</delta_ts>
            <desc>about:gpu output</desc>
            <filename>webkitgtk6 minibrowser blank page on LLVM graphics - about GPU output.txt</filename>
            <type>text/plain</type>
            <size>7061</size>
            <attacher name="Jeff Fortin">nekohayo</attacher>
            
              <data encoding="base64">VmVyc2lvbiBJbmZvcm1hdGlvbgoKCVdlYktpdCB2ZXJzaW9uCglXZWJLaXRHVEsgMi40NS45MSAo
dGFyYmFsbCkKCU9wZXJhdGluZyBzeXN0ZW0KCUxpbnV4IDYuOC4xLTMwMC5mYzQwLng4Nl82NCAj
MSBTTVAgUFJFRU1QVF9EWU5BTUlDIFdlZCBNYXIgMjAgMDQ6Mzk6MzAgVVRDIDIwMjQgeDg2XzY0
CglEZXNrdG9wCglHTk9NRQoJR1N0cmVhbWVyIHZlcnNpb24KCTEuMjQuNyAoYnVpbGQpIEdTdHJl
YW1lciAxLjI0LjggKHJ1bnRpbWUpCglHVEsgdmVyc2lvbgoJNC4xNS41IChidWlsZCkgNC4xNi4x
IChydW50aW1lKQoKCkRpc3BsYXkgSW5mb3JtYXRpb24KCglJZGVudGlmaWVyCgkxCglUeXBlCglX
YXlsYW5kCglTY3JlZW4gZ2VvbWV0cnkKCTAsMCAxOTIweDEwODAKCVNjcmVlbiB3b3JrIGFyZWEK
CTAsMCAxOTIweDEwODAKCURlcHRoCgkyNAoJQml0cyBwZXIgY29sb3IgY29tcG9uZW50Cgk4CglG
b250IFNjYWxpbmcgRFBJCgk5NgoJU2NyZWVuIERQSQoJODEuMTM1MTQwMDQ2NTgxOTcKCVZCbGFu
ayB0eXBlCglEUk0KCVZCbGFuayByZWZyZXNoIHJhdGUKCTYwSHoKCURSTSBEZXZpY2UKCS9kZXYv
ZHJpL2NhcmQwCglEUk0gUmVuZGVyIE5vZGUKCS9kZXYvZHJpL3JlbmRlckQxMjgKCgpIYXJkd2Fy
ZSBBY2NlbGVyYXRpb24gSW5mb3JtYXRpb24KClBvbGljeQphbHdheXMKV2ViR0wgZW5hYmxlZApZ
ZXMKMkQgY2FudmFzCkFjY2VsZXJhdGVkCkFQSQpPcGVuR0wgRVMgMiAobGliZXBveHkpClJlbmRl
cmVyCkRNQUJ1ZiAoU3VwcG9ydGVkIGJ1ZmZlcnM6IEhhcmR3YXJlLCBTaGFyZWQgTWVtb3J5KQpC
dWZmZXIgZm9ybWF0CkRNQS1CVUY6IFhSMjQgKE5PTkVfSU5WQUxJRCkgW1JlbmRlcmluZ10KTmF0
aXZlIGludGVyZmFjZQpFR0wKR0xfUkVOREVSRVIKaTkxNSAoY2hpcHNldDogRzMzKQpHTF9WRU5E
T1IKTWVzYSBQcm9qZWN0CkdMX1ZFUlNJT04KT3BlbkdMIEVTIDIuMCBNZXNhIDI0LjIuMwpHTF9T
SEFESU5HX0xBTkdVQUdFX1ZFUlNJT04KT3BlbkdMIEVTIEdMU0wgRVMgMS4wLjE2CkdMX0VYVEVO
U0lPTlMKR0xfRVhUX2JsZW5kX21pbm1heCBHTF9FWFRfbXVsdGlfZHJhd19hcnJheXMgR0xfRVhU
X3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIEdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3Mz
dGMgR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MSBHTF9FWFRfdGV4dHVyZV9mb3JtYXRf
QkdSQTg4ODggR0xfT0VTX2NvbXByZXNzZWRfRVRDMV9SR0I4X3RleHR1cmUgR0xfT0VTX2RlcHRo
MjQgR0xfT0VTX2VsZW1lbnRfaW5kZXhfdWludCBHTF9PRVNfZmJvX3JlbmRlcl9taXBtYXAgR0xf
T0VTX21hcGJ1ZmZlciBHTF9PRVNfcmdiOF9yZ2JhOCBHTF9PRVNfc3RlbmNpbDggR0xfT0VTX3Rl
eHR1cmVfM0QgR0xfT0VTX3RleHR1cmVfbnBvdCBHTF9PRVNfdmVydGV4X2hhbGZfZmxvYXQgR0xf
RVhUX2RyYXdfaW5zdGFuY2VkIEdMX09FU19FR0xfaW1hZ2UgR0xfT0VTX2RlcHRoX3RleHR1cmUg
R0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIEdMX0VYVF90ZXh0dXJlX3R5cGVfMl8xMF8xMF8x
MF9SRVYgR0xfT0VTX2dldF9wcm9ncmFtX2JpbmFyeSBHTF9BUFBMRV90ZXh0dXJlX21heF9sZXZl
bCBHTF9FWFRfZGlzY2FyZF9mcmFtZWJ1ZmZlciBHTF9FWFRfcmVhZF9mb3JtYXRfYmdyYSBHTF9F
WFRfdGV4dHVyZV9zdG9yYWdlIEdMX05WX3BhY2tfc3ViaW1hZ2UgR0xfRVhUX2ZyYWdfZGVwdGgg
R0xfTlZfZmJvX2NvbG9yX2F0dGFjaG1lbnRzIEdMX09FU19FR0xfaW1hZ2VfZXh0ZXJuYWwgR0xf
T0VTX0VHTF9zeW5jIEdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0IEdMX0FOR0xFX3BhY2tfcmV2
ZXJzZV9yb3dfb3JkZXIgR0xfQU5HTEVfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQzIEdMX0FOR0xF
X3RleHR1cmVfY29tcHJlc3Npb25fZHh0NSBHTF9FWFRfdW5wYWNrX3N1YmltYWdlIEdMX05WX2Ry
YXdfYnVmZmVycyBHTF9OVl9yZWFkX2J1ZmZlciBHTF9OVl9yZWFkX2RlcHRoIEdMX05WX3JlYWRf
ZGVwdGhfc3RlbmNpbCBHTF9OVl9yZWFkX3N0ZW5jaWwgR0xfQVBQTEVfc3luYyBHTF9FWFRfZHJh
d19idWZmZXJzIEdMX0VYVF9pbnN0YW5jZWRfYXJyYXlzIEdMX0VYVF9tYXBfYnVmZmVyX3Jhbmdl
IEdMX0VYVF9zaGFkb3dfc2FtcGxlcnMgR0xfS0hSX2RlYnVnIEdMX05WX3BpeGVsX2J1ZmZlcl9v
YmplY3QgR0xfT0VTX3JlcXVpcmVkX2ludGVybmFsZm9ybWF0IEdMX09FU19zdXJmYWNlbGVzc19j
b250ZXh0IEdMX0VYVF9kZWJ1Z19sYWJlbCBHTF9FWFRfc2VwYXJhdGVfc2hhZGVyX29iamVjdHMg
R0xfRVhUX2NvbXByZXNzZWRfRVRDMV9SR0I4X3N1Yl90ZXh0dXJlIEdMX0VYVF9kcmF3X2VsZW1l
bnRzX2Jhc2VfdmVydGV4IEdMX0VYVF90ZXh0dXJlX2JvcmRlcl9jbGFtcCBHTF9LSFJfY29udGV4
dF9mbHVzaF9jb250cm9sIEdMX09FU19kcmF3X2VsZW1lbnRzX2Jhc2VfdmVydGV4IEdMX09FU190
ZXh0dXJlX2JvcmRlcl9jbGFtcCBHTF9LSFJfbm9fZXJyb3IgR0xfRVhUX3RleHR1cmVfY29tcHJl
c3Npb25fczN0Y19zcmdiIEdMX0tIUl9wYXJhbGxlbF9zaGFkZXJfY29tcGlsZSBHTF9NRVNBX3Nh
bXBsZXJfb2JqZWN0cyBHTF9NRVNBX2JncmEKRUdMX1ZFUlNJT04KMS40CkVHTF9WRU5ET1IKTWVz
YSBQcm9qZWN0CkVHTF9FWFRFTlNJT05TCkVHTF9FWFRfZGV2aWNlX2Jhc2UgRUdMX0VYVF9kZXZp
Y2VfZW51bWVyYXRpb24gRUdMX0VYVF9kZXZpY2VfcXVlcnkgRUdMX0VYVF9wbGF0Zm9ybV9iYXNl
IEVHTF9LSFJfY2xpZW50X2dldF9hbGxfcHJvY19hZGRyZXNzZXMgRUdMX0VYVF9jbGllbnRfZXh0
ZW5zaW9ucyBFR0xfS0hSX2RlYnVnIEVHTF9FWFRfcGxhdGZvcm1fZGV2aWNlIEVHTF9FWFRfZXhw
bGljaXRfZGV2aWNlIEVHTF9FWFRfcGxhdGZvcm1fd2F5bGFuZCBFR0xfS0hSX3BsYXRmb3JtX3dh
eWxhbmQgRUdMX0VYVF9wbGF0Zm9ybV94MTEgRUdMX0tIUl9wbGF0Zm9ybV94MTEgRUdMX0VYVF9w
bGF0Zm9ybV94Y2IgRUdMX01FU0FfcGxhdGZvcm1fZ2JtIEVHTF9LSFJfcGxhdGZvcm1fZ2JtIEVH
TF9NRVNBX3BsYXRmb3JtX3N1cmZhY2VsZXNzIEVHTF9BTkRST0lEX2Jsb2JfY2FjaGUgRUdMX0VY
VF9idWZmZXJfYWdlIEVHTF9FWFRfY29uZmlnX3NlbGVjdF9ncm91cCBFR0xfRVhUX2ltYWdlX2Rt
YV9idWZfaW1wb3J0IEVHTF9FWFRfaW1hZ2VfZG1hX2J1Zl9pbXBvcnRfbW9kaWZpZXJzIEVHTF9F
WFRfcHJlc2VudF9vcGFxdWUgRUdMX0VYVF9zdXJmYWNlX2NvbXByZXNzaW9uIEVHTF9FWFRfc3dh
cF9idWZmZXJzX3dpdGhfZGFtYWdlIEVHTF9LSFJfY2xfZXZlbnQyIEVHTF9LSFJfY29uZmlnX2F0
dHJpYnMgRUdMX0tIUl9jb250ZXh0X2ZsdXNoX2NvbnRyb2wgRUdMX0tIUl9jcmVhdGVfY29udGV4
dCBFR0xfS0hSX2NyZWF0ZV9jb250ZXh0X25vX2Vycm9yIEVHTF9LSFJfZmVuY2Vfc3luYyBFR0xf
S0hSX2dldF9hbGxfcHJvY19hZGRyZXNzZXMgRUdMX0tIUl9nbF9yZW5kZXJidWZmZXJfaW1hZ2Ug
RUdMX0tIUl9nbF90ZXh0dXJlXzJEX2ltYWdlIEVHTF9LSFJfZ2xfdGV4dHVyZV8zRF9pbWFnZSBF
R0xfS0hSX2dsX3RleHR1cmVfY3ViZW1hcF9pbWFnZSBFR0xfS0hSX2ltYWdlX2Jhc2UgRUdMX0tI
Ul9ub19jb25maWdfY29udGV4dCBFR0xfS0hSX3JldXNhYmxlX3N5bmMgRUdMX0tIUl9zdXJmYWNl
bGVzc19jb250ZXh0IEVHTF9LSFJfc3dhcF9idWZmZXJzX3dpdGhfZGFtYWdlIEVHTF9FWFRfcGl4
ZWxfZm9ybWF0X2Zsb2F0IEVHTF9LSFJfd2FpdF9zeW5jIEVHTF9NRVNBX2NvbmZpZ2xlc3NfY29u
dGV4dCBFR0xfTUVTQV9kcm1faW1hZ2UgRUdMX01FU0FfZ2xfaW50ZXJvcCBFR0xfTUVTQV9pbWFn
ZV9kbWFfYnVmX2V4cG9ydCBFR0xfTUVTQV9xdWVyeV9kcml2ZXIgRUdMX01FU0FfeDExX25hdGl2
ZV92aXN1YWxfaWQgRUdMX1dMX2JpbmRfd2F5bGFuZF9kaXNwbGF5IEVHTF9XTF9jcmVhdGVfd2F5
bGFuZF9idWZmZXJfZnJvbV9pbWFnZQoKCkhhcmR3YXJlIEFjY2VsZXJhdGlvbiBJbmZvcm1hdGlv
biAoUmVuZGVyIFByb2Nlc3MpClBsYXRmb3JtCkdCTQpEUk0gdmVyc2lvbgppOTE1IChJbnRlbCBH
cmFwaGljcykgMS42LjAuIDIwMjMwOTI5CkdMX1JFTkRFUkVSCmk5MTUgKGNoaXBzZXQ6IEczMykK
R0xfVkVORE9SCk1lc2EgUHJvamVjdApHTF9WRVJTSU9OCk9wZW5HTCBFUyAyLjAgTWVzYSAyNC4y
LjMKR0xfU0hBRElOR19MQU5HVUFHRV9WRVJTSU9OCk9wZW5HTCBFUyBHTFNMIEVTIDEuMC4xNgpH
TF9FWFRFTlNJT05TCkdMX0VYVF9ibGVuZF9taW5tYXggR0xfRVhUX211bHRpX2RyYXdfYXJyYXlz
IEdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyBHTF9FWFRfdGV4dHVyZV9jb21wcmVz
c2lvbl9zM3RjIEdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEgR0xfRVhUX3RleHR1cmVf
Zm9ybWF0X0JHUkE4ODg4IEdMX09FU19jb21wcmVzc2VkX0VUQzFfUkdCOF90ZXh0dXJlIEdMX09F
U19kZXB0aDI0IEdMX09FU19lbGVtZW50X2luZGV4X3VpbnQgR0xfT0VTX2Zib19yZW5kZXJfbWlw
bWFwIEdMX09FU19tYXBidWZmZXIgR0xfT0VTX3JnYjhfcmdiYTggR0xfT0VTX3N0ZW5jaWw4IEdM
X09FU190ZXh0dXJlXzNEIEdMX09FU190ZXh0dXJlX25wb3QgR0xfT0VTX3ZlcnRleF9oYWxmX2Zs
b2F0IEdMX0VYVF9kcmF3X2luc3RhbmNlZCBHTF9PRVNfRUdMX2ltYWdlIEdMX09FU19kZXB0aF90
ZXh0dXJlIEdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCBHTF9FWFRfdGV4dHVyZV90eXBlXzJf
MTBfMTBfMTBfUkVWIEdMX09FU19nZXRfcHJvZ3JhbV9iaW5hcnkgR0xfQVBQTEVfdGV4dHVyZV9t
YXhfbGV2ZWwgR0xfRVhUX2Rpc2NhcmRfZnJhbWVidWZmZXIgR0xfRVhUX3JlYWRfZm9ybWF0X2Jn
cmEgR0xfRVhUX3RleHR1cmVfc3RvcmFnZSBHTF9OVl9wYWNrX3N1YmltYWdlIEdMX0VYVF9mcmFn
X2RlcHRoIEdMX05WX2Zib19jb2xvcl9hdHRhY2htZW50cyBHTF9PRVNfRUdMX2ltYWdlX2V4dGVy
bmFsIEdMX09FU19FR0xfc3luYyBHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdCBHTF9BTkdMRV9w
YWNrX3JldmVyc2Vfcm93X29yZGVyIEdMX0FOR0xFX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MyBH
TF9BTkdMRV90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDUgR0xfRVhUX3VucGFja19zdWJpbWFnZSBH
TF9OVl9kcmF3X2J1ZmZlcnMgR0xfTlZfcmVhZF9idWZmZXIgR0xfTlZfcmVhZF9kZXB0aCBHTF9O
Vl9yZWFkX2RlcHRoX3N0ZW5jaWwgR0xfTlZfcmVhZF9zdGVuY2lsIEdMX0FQUExFX3N5bmMgR0xf
RVhUX2RyYXdfYnVmZmVycyBHTF9FWFRfaW5zdGFuY2VkX2FycmF5cyBHTF9FWFRfbWFwX2J1ZmZl
cl9yYW5nZSBHTF9FWFRfc2hhZG93X3NhbXBsZXJzIEdMX0tIUl9kZWJ1ZyBHTF9OVl9waXhlbF9i
dWZmZXJfb2JqZWN0IEdMX09FU19yZXF1aXJlZF9pbnRlcm5hbGZvcm1hdCBHTF9PRVNfc3VyZmFj
ZWxlc3NfY29udGV4dCBHTF9FWFRfZGVidWdfbGFiZWwgR0xfRVhUX3NlcGFyYXRlX3NoYWRlcl9v
YmplY3RzIEdMX0VYVF9jb21wcmVzc2VkX0VUQzFfUkdCOF9zdWJfdGV4dHVyZSBHTF9FWFRfZHJh
d19lbGVtZW50c19iYXNlX3ZlcnRleCBHTF9FWFRfdGV4dHVyZV9ib3JkZXJfY2xhbXAgR0xfS0hS
X2NvbnRleHRfZmx1c2hfY29udHJvbCBHTF9PRVNfZHJhd19lbGVtZW50c19iYXNlX3ZlcnRleCBH
TF9PRVNfdGV4dHVyZV9ib3JkZXJfY2xhbXAgR0xfS0hSX25vX2Vycm9yIEdMX0VYVF90ZXh0dXJl
X2NvbXByZXNzaW9uX3MzdGNfc3JnYiBHTF9LSFJfcGFyYWxsZWxfc2hhZGVyX2NvbXBpbGUgR0xf
TUVTQV9zYW1wbGVyX29iamVjdHMgR0xfTUVTQV9iZ3JhCkVHTF9WRVJTSU9OCjEuNApFR0xfVkVO
RE9SCk1lc2EgUHJvamVjdApFR0xfRVhURU5TSU9OUwpFR0xfRVhUX2RldmljZV9iYXNlIEVHTF9F
WFRfZGV2aWNlX2VudW1lcmF0aW9uIEVHTF9FWFRfZGV2aWNlX3F1ZXJ5IEVHTF9FWFRfcGxhdGZv
cm1fYmFzZSBFR0xfS0hSX2NsaWVudF9nZXRfYWxsX3Byb2NfYWRkcmVzc2VzIEVHTF9FWFRfY2xp
ZW50X2V4dGVuc2lvbnMgRUdMX0tIUl9kZWJ1ZyBFR0xfRVhUX3BsYXRmb3JtX2RldmljZSBFR0xf
RVhUX2V4cGxpY2l0X2RldmljZSBFR0xfRVhUX3BsYXRmb3JtX3dheWxhbmQgRUdMX0tIUl9wbGF0
Zm9ybV93YXlsYW5kIEVHTF9FWFRfcGxhdGZvcm1feDExIEVHTF9LSFJfcGxhdGZvcm1feDExIEVH
TF9FWFRfcGxhdGZvcm1feGNiIEVHTF9NRVNBX3BsYXRmb3JtX2dibSBFR0xfS0hSX3BsYXRmb3Jt
X2dibSBFR0xfTUVTQV9wbGF0Zm9ybV9zdXJmYWNlbGVzcyBFR0xfQU5EUk9JRF9ibG9iX2NhY2hl
IEVHTF9FWFRfYnVmZmVyX2FnZSBFR0xfRVhUX2NvbmZpZ19zZWxlY3RfZ3JvdXAgRUdMX0VYVF9p
bWFnZV9kbWFfYnVmX2ltcG9ydCBFR0xfRVhUX2ltYWdlX2RtYV9idWZfaW1wb3J0X21vZGlmaWVy
cyBFR0xfRVhUX3N1cmZhY2VfY29tcHJlc3Npb24gRUdMX0tIUl9jbF9ldmVudDIgRUdMX0tIUl9j
b25maWdfYXR0cmlicyBFR0xfS0hSX2NvbnRleHRfZmx1c2hfY29udHJvbCBFR0xfS0hSX2NyZWF0
ZV9jb250ZXh0IEVHTF9LSFJfY3JlYXRlX2NvbnRleHRfbm9fZXJyb3IgRUdMX0tIUl9mZW5jZV9z
eW5jIEVHTF9LSFJfZ2V0X2FsbF9wcm9jX2FkZHJlc3NlcyBFR0xfS0hSX2dsX3JlbmRlcmJ1ZmZl
cl9pbWFnZSBFR0xfS0hSX2dsX3RleHR1cmVfMkRfaW1hZ2UgRUdMX0tIUl9nbF90ZXh0dXJlXzNE
X2ltYWdlIEVHTF9LSFJfZ2xfdGV4dHVyZV9jdWJlbWFwX2ltYWdlIEVHTF9LSFJfaW1hZ2UgRUdM
X0tIUl9pbWFnZV9iYXNlIEVHTF9LSFJfaW1hZ2VfcGl4bWFwIEVHTF9LSFJfbm9fY29uZmlnX2Nv
bnRleHQgRUdMX0tIUl9yZXVzYWJsZV9zeW5jIEVHTF9LSFJfc3VyZmFjZWxlc3NfY29udGV4dCBF
R0xfRVhUX3BpeGVsX2Zvcm1hdF9mbG9hdCBFR0xfS0hSX3dhaXRfc3luYyBFR0xfTUVTQV9jb25m
aWdsZXNzX2NvbnRleHQgRUdMX01FU0FfZHJtX2ltYWdlIEVHTF9NRVNBX2dsX2ludGVyb3AgRUdM
X01FU0FfaW1hZ2VfZG1hX2J1Zl9leHBvcnQgRUdMX01FU0FfcXVlcnlfZHJpdmVyIEVHTF9NRVNB
X3gxMV9uYXRpdmVfdmlzdWFsX2lkIEVHTF9XTF9iaW5kX3dheWxhbmRfZGlzcGxheQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>