<?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>148267</bug_id>
          
          <creation_ts>2015-08-20 16:59:32 -0700</creation_ts>
          <short_desc>Investigate asm.js memory growth perf</short_desc>
          <delta_ts>2015-08-23 04:51:54 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alon Zakai">alonzakai</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dtc-llvm</cc>
    
    <cc>fpizlo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1119460</commentid>
    <comment_count>0</comment_count>
      <attachid>259529</attachid>
    <who name="Alon Zakai">alonzakai</who>
    <bug_when>2015-08-20 16:59:32 -0700</bug_when>
    <thetext>Created attachment 259529
Fannkuch benchmark with memory growth

Attached is an example benchmark of fannkuch compiled by emscripten with asm.js memory growth. That means that the typed arrays representing memory (HEAP8, etc.) are modifiable, we replace them when we resize memory. (This uses ArrayBuffer.transfer when present, but does not depend on that.)

This is efficient in Firefox and Edge, as part of asm.js validation and the AOT compilation approach. On Chrome it is known to be slow,

https://code.google.com/p/v8/issues/detail?id=3907

Filip asked me to file this issue here, to investigate performance in JavaScriptCore.

Note that memory growth is disabled by default in emscripten, so probably not much code out there uses it. If we can see that it&apos;s fast across the board, it would be nice to enable it, as it lets people compile their code without deciding ahead of time on the maximum amount of memory.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119490</commentid>
    <comment_count>1</comment_count>
      <attachid>259537</attachid>
    <who name="Alon Zakai">alonzakai</who>
    <bug_when>2015-08-20 17:34:01 -0700</bug_when>
    <thetext>Created attachment 259537
Fannkuch benchmark without memory growth

For comparison, Fannkuch without memory growth.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>259529</attachid>
            <date>2015-08-20 16:59:32 -0700</date>
            <delta_ts>2015-08-20 16:59:32 -0700</delta_ts>
            <desc>Fannkuch benchmark with memory growth</desc>
            <filename>fannkuch_growth.js</filename>
            <type>application/javascript</type>
            <size>291716</size>
            <attacher name="Alon Zakai">alonzakai</attacher>
            
              <data encoding="base64">dmFyIE1vZHVsZTsKaWYgKCFNb2R1bGUpIE1vZHVsZSA9ICh0eXBlb2YgTW9kdWxlICE9PSAidW5k
ZWZpbmVkIiA/IE1vZHVsZSA6IG51bGwpIHx8IHt9Owp2YXIgbW9kdWxlT3ZlcnJpZGVzID0ge307
CmZvciAodmFyIGtleSBpbiBNb2R1bGUpIHsKIGlmIChNb2R1bGUuaGFzT3duUHJvcGVydHkoa2V5
KSkgewogIG1vZHVsZU92ZXJyaWRlc1trZXldID0gTW9kdWxlW2tleV07CiB9Cn0KdmFyIEVOVklS
T05NRU5UX0lTX1dFQiA9IHR5cGVvZiB3aW5kb3cgPT09ICJvYmplY3QiOwp2YXIgRU5WSVJPTk1F
TlRfSVNfV09SS0VSID0gdHlwZW9mIGltcG9ydFNjcmlwdHMgPT09ICJmdW5jdGlvbiI7CnZhciBF
TlZJUk9OTUVOVF9JU19OT0RFID0gdHlwZW9mIHByb2Nlc3MgPT09ICJvYmplY3QiICYmIHR5cGVv
ZiByZXF1aXJlID09PSAiZnVuY3Rpb24iICYmICFFTlZJUk9OTUVOVF9JU19XRUIgJiYgIUVOVklS
T05NRU5UX0lTX1dPUktFUjsKdmFyIEVOVklST05NRU5UX0lTX1NIRUxMID0gIUVOVklST05NRU5U
X0lTX1dFQiAmJiAhRU5WSVJPTk1FTlRfSVNfTk9ERSAmJiAhRU5WSVJPTk1FTlRfSVNfV09SS0VS
OwppZiAoRU5WSVJPTk1FTlRfSVNfTk9ERSkgewogaWYgKCFNb2R1bGVbInByaW50Il0pIE1vZHVs
ZVsicHJpbnQiXSA9IGZ1bmN0aW9uIHByaW50KHgpIHsKICBwcm9jZXNzWyJzdGRvdXQiXS53cml0
ZSh4ICsgIlxuIik7CiB9OwogaWYgKCFNb2R1bGVbInByaW50RXJyIl0pIE1vZHVsZVsicHJpbnRF
cnIiXSA9IGZ1bmN0aW9uIHByaW50RXJyKHgpIHsKICBwcm9jZXNzWyJzdGRlcnIiXS53cml0ZSh4
ICsgIlxuIik7CiB9OwogdmFyIG5vZGVGUyA9IHJlcXVpcmUoImZzIik7CiB2YXIgbm9kZVBhdGgg
PSByZXF1aXJlKCJwYXRoIik7CiBNb2R1bGVbInJlYWQiXSA9IGZ1bmN0aW9uIHJlYWQoZmlsZW5h
bWUsIGJpbmFyeSkgewogIGZpbGVuYW1lID0gbm9kZVBhdGhbIm5vcm1hbGl6ZSJdKGZpbGVuYW1l
KTsKICB2YXIgcmV0ID0gbm9kZUZTWyJyZWFkRmlsZVN5bmMiXShmaWxlbmFtZSk7CiAgaWYgKCFy
ZXQgJiYgZmlsZW5hbWUgIT0gbm9kZVBhdGhbInJlc29sdmUiXShmaWxlbmFtZSkpIHsKICAgZmls
ZW5hbWUgPSBwYXRoLmpvaW4oX19kaXJuYW1lLCAiLi4iLCAic3JjIiwgZmlsZW5hbWUpOwogICBy
ZXQgPSBub2RlRlNbInJlYWRGaWxlU3luYyJdKGZpbGVuYW1lKTsKICB9CiAgaWYgKHJldCAmJiAh
YmluYXJ5KSByZXQgPSByZXQudG9TdHJpbmcoKTsKICByZXR1cm4gcmV0OwogfTsKIE1vZHVsZVsi
cmVhZEJpbmFyeSJdID0gZnVuY3Rpb24gcmVhZEJpbmFyeShmaWxlbmFtZSkgewogIHJldHVybiBN
b2R1bGVbInJlYWQiXShmaWxlbmFtZSwgdHJ1ZSk7CiB9OwogTW9kdWxlWyJsb2FkIl0gPSBmdW5j
dGlvbiBsb2FkKGYpIHsKICBnbG9iYWxFdmFsKHJlYWQoZikpOwogfTsKIGlmICghTW9kdWxlWyJ0
aGlzUHJvZ3JhbSJdKSB7CiAgaWYgKHByb2Nlc3NbImFyZ3YiXS5sZW5ndGggPiAxKSB7CiAgIE1v
ZHVsZVsidGhpc1Byb2dyYW0iXSA9IHByb2Nlc3NbImFyZ3YiXVsxXS5yZXBsYWNlKC9cXC9nLCAi
LyIpOwogIH0gZWxzZSB7CiAgIE1vZHVsZVsidGhpc1Byb2dyYW0iXSA9ICJ1bmtub3duLXByb2dy
YW0iOwogIH0KIH0KIE1vZHVsZVsiYXJndW1lbnRzIl0gPSBwcm9jZXNzWyJhcmd2Il0uc2xpY2Uo
Mik7CiBpZiAodHlwZW9mIG1vZHVsZSAhPT0gInVuZGVmaW5lZCIpIHsKICBtb2R1bGVbImV4cG9y
dHMiXSA9IE1vZHVsZTsKIH0KIHByb2Nlc3NbIm9uIl0oInVuY2F1Z2h0RXhjZXB0aW9uIiwgKGZ1
bmN0aW9uKGV4KSB7CiAgaWYgKCEoZXggaW5zdGFuY2VvZiBFeGl0U3RhdHVzKSkgewogICB0aHJv
dyBleDsKICB9CiB9KSk7CiBNb2R1bGVbImluc3BlY3QiXSA9IChmdW5jdGlvbigpIHsKICByZXR1
cm4gIltFbXNjcmlwdGVuIE1vZHVsZSBvYmplY3RdIjsKIH0pOwp9IGVsc2UgaWYgKEVOVklST05N
RU5UX0lTX1NIRUxMKSB7CiBpZiAoIU1vZHVsZVsicHJpbnQiXSkgTW9kdWxlWyJwcmludCJdID0g
cHJpbnQ7CiBpZiAodHlwZW9mIHByaW50RXJyICE9ICJ1bmRlZmluZWQiKSBNb2R1bGVbInByaW50
RXJyIl0gPSBwcmludEVycjsKIGlmICh0eXBlb2YgcmVhZCAhPSAidW5kZWZpbmVkIikgewogIE1v
ZHVsZVsicmVhZCJdID0gcmVhZDsKIH0gZWxzZSB7CiAgTW9kdWxlWyJyZWFkIl0gPSBmdW5jdGlv
biByZWFkKCkgewogICB0aHJvdyAibm8gcmVhZCgpIGF2YWlsYWJsZSAoanNjPykiOwogIH07CiB9
CiBNb2R1bGVbInJlYWRCaW5hcnkiXSA9IGZ1bmN0aW9uIHJlYWRCaW5hcnkoZikgewogIGlmICh0
eXBlb2YgcmVhZGJ1ZmZlciA9PT0gImZ1bmN0aW9uIikgewogICByZXR1cm4gbmV3IFVpbnQ4QXJy
YXkocmVhZGJ1ZmZlcihmKSk7CiAgfQogIHZhciBkYXRhID0gcmVhZChmLCAiYmluYXJ5Iik7CiAg
YXNzZXJ0KHR5cGVvZiBkYXRhID09PSAib2JqZWN0Iik7CiAgcmV0dXJuIGRhdGE7CiB9OwogaWYg
KHR5cGVvZiBzY3JpcHRBcmdzICE9ICJ1bmRlZmluZWQiKSB7CiAgTW9kdWxlWyJhcmd1bWVudHMi
XSA9IHNjcmlwdEFyZ3M7CiB9IGVsc2UgaWYgKHR5cGVvZiBhcmd1bWVudHMgIT0gInVuZGVmaW5l
ZCIpIHsKICBNb2R1bGVbImFyZ3VtZW50cyJdID0gYXJndW1lbnRzOwogfQp9IGVsc2UgaWYgKEVO
VklST05NRU5UX0lTX1dFQiB8fCBFTlZJUk9OTUVOVF9JU19XT1JLRVIpIHsKIE1vZHVsZVsicmVh
ZCJdID0gZnVuY3Rpb24gcmVhZCh1cmwpIHsKICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0
OwogIHhoci5vcGVuKCJHRVQiLCB1cmwsIGZhbHNlKTsKICB4aHIuc2VuZChudWxsKTsKICByZXR1
cm4geGhyLnJlc3BvbnNlVGV4dDsKIH07CiBpZiAodHlwZW9mIGFyZ3VtZW50cyAhPSAidW5kZWZp
bmVkIikgewogIE1vZHVsZVsiYXJndW1lbnRzIl0gPSBhcmd1bWVudHM7CiB9CiBpZiAodHlwZW9m
IGNvbnNvbGUgIT09ICJ1bmRlZmluZWQiKSB7CiAgaWYgKCFNb2R1bGVbInByaW50Il0pIE1vZHVs
ZVsicHJpbnQiXSA9IGZ1bmN0aW9uIHByaW50KHgpIHsKICAgY29uc29sZS5sb2coeCk7CiAgfTsK
ICBpZiAoIU1vZHVsZVsicHJpbnRFcnIiXSkgTW9kdWxlWyJwcmludEVyciJdID0gZnVuY3Rpb24g
cHJpbnRFcnIoeCkgewogICBjb25zb2xlLmxvZyh4KTsKICB9OwogfSBlbHNlIHsKICB2YXIgVFJZ
X1VTRV9EVU1QID0gZmFsc2U7CiAgaWYgKCFNb2R1bGVbInByaW50Il0pIE1vZHVsZVsicHJpbnQi
XSA9IFRSWV9VU0VfRFVNUCAmJiB0eXBlb2YgZHVtcCAhPT0gInVuZGVmaW5lZCIgPyAoZnVuY3Rp
b24oeCkgewogICBkdW1wKHgpOwogIH0pIDogKGZ1bmN0aW9uKHgpIHt9KTsKIH0KIGlmIChFTlZJ
Uk9OTUVOVF9JU19XT1JLRVIpIHsKICBNb2R1bGVbImxvYWQiXSA9IGltcG9ydFNjcmlwdHM7CiB9
CiBpZiAodHlwZW9mIE1vZHVsZVsic2V0V2luZG93VGl0bGUiXSA9PT0gInVuZGVmaW5lZCIpIHsK
ICBNb2R1bGVbInNldFdpbmRvd1RpdGxlIl0gPSAoZnVuY3Rpb24odGl0bGUpIHsKICAgZG9jdW1l
bnQudGl0bGUgPSB0aXRsZTsKICB9KTsKIH0KfSBlbHNlIHsKIHRocm93ICJVbmtub3duIHJ1bnRp
bWUgZW52aXJvbm1lbnQuIFdoZXJlIGFyZSB3ZT8iOwp9CmZ1bmN0aW9uIGdsb2JhbEV2YWwoeCkg
ewogZXZhbC5jYWxsKG51bGwsIHgpOwp9CmlmICghTW9kdWxlWyJsb2FkIl0gJiYgTW9kdWxlWyJy
ZWFkIl0pIHsKIE1vZHVsZVsibG9hZCJdID0gZnVuY3Rpb24gbG9hZChmKSB7CiAgZ2xvYmFsRXZh
bChNb2R1bGVbInJlYWQiXShmKSk7CiB9Owp9CmlmICghTW9kdWxlWyJwcmludCJdKSB7CiBNb2R1
bGVbInByaW50Il0gPSAoZnVuY3Rpb24oKSB7fSk7Cn0KaWYgKCFNb2R1bGVbInByaW50RXJyIl0p
IHsKIE1vZHVsZVsicHJpbnRFcnIiXSA9IE1vZHVsZVsicHJpbnQiXTsKfQppZiAoIU1vZHVsZVsi
YXJndW1lbnRzIl0pIHsKIE1vZHVsZVsiYXJndW1lbnRzIl0gPSBbXTsKfQppZiAoIU1vZHVsZVsi
dGhpc1Byb2dyYW0iXSkgewogTW9kdWxlWyJ0aGlzUHJvZ3JhbSJdID0gIi4vdGhpcy5wcm9ncmFt
IjsKfQpNb2R1bGUucHJpbnQgPSBNb2R1bGVbInByaW50Il07Ck1vZHVsZS5wcmludEVyciA9IE1v
ZHVsZVsicHJpbnRFcnIiXTsKTW9kdWxlWyJwcmVSdW4iXSA9IFtdOwpNb2R1bGVbInBvc3RSdW4i
XSA9IFtdOwpmb3IgKHZhciBrZXkgaW4gbW9kdWxlT3ZlcnJpZGVzKSB7CiBpZiAobW9kdWxlT3Zl
cnJpZGVzLmhhc093blByb3BlcnR5KGtleSkpIHsKICBNb2R1bGVba2V5XSA9IG1vZHVsZU92ZXJy
aWRlc1trZXldOwogfQp9CnZhciBSdW50aW1lID0gewogc2V0VGVtcFJldDA6IChmdW5jdGlvbih2
YWx1ZSkgewogIHRlbXBSZXQwID0gdmFsdWU7CiB9KSwKIGdldFRlbXBSZXQwOiAoZnVuY3Rpb24o
KSB7CiAgcmV0dXJuIHRlbXBSZXQwOwogfSksCiBzdGFja1NhdmU6IChmdW5jdGlvbigpIHsKICBy
ZXR1cm4gU1RBQ0tUT1A7CiB9KSwKIHN0YWNrUmVzdG9yZTogKGZ1bmN0aW9uKHN0YWNrVG9wKSB7
CiAgU1RBQ0tUT1AgPSBzdGFja1RvcDsKIH0pLAogZ2V0TmF0aXZlVHlwZVNpemU6IChmdW5jdGlv
bih0eXBlKSB7CiAgc3dpdGNoICh0eXBlKSB7CiAgY2FzZSAiaTEiOgogIGNhc2UgImk4IjoKICAg
cmV0dXJuIDE7CiAgY2FzZSAiaTE2IjoKICAgcmV0dXJuIDI7CiAgY2FzZSAiaTMyIjoKICAgcmV0
dXJuIDQ7CiAgY2FzZSAiaTY0IjoKICAgcmV0dXJuIDg7CiAgY2FzZSAiZmxvYXQiOgogICByZXR1
cm4gNDsKICBjYXNlICJkb3VibGUiOgogICByZXR1cm4gODsKICBkZWZhdWx0OgogICB7CiAgICBp
ZiAodHlwZVt0eXBlLmxlbmd0aCAtIDFdID09PSAiKiIpIHsKICAgICByZXR1cm4gUnVudGltZS5R
VUFOVFVNX1NJWkU7CiAgICB9IGVsc2UgaWYgKHR5cGVbMF0gPT09ICJpIikgewogICAgIHZhciBi
aXRzID0gcGFyc2VJbnQodHlwZS5zdWJzdHIoMSkpOwogICAgIGFzc2VydChiaXRzICUgOCA9PT0g
MCk7CiAgICAgcmV0dXJuIGJpdHMgLyA4OwogICAgfSBlbHNlIHsKICAgICByZXR1cm4gMDsKICAg
IH0KICAgfQogIH0KIH0pLAogZ2V0TmF0aXZlRmllbGRTaXplOiAoZnVuY3Rpb24odHlwZSkgewog
IHJldHVybiBNYXRoLm1heChSdW50aW1lLmdldE5hdGl2ZVR5cGVTaXplKHR5cGUpLCBSdW50aW1l
LlFVQU5UVU1fU0laRSk7CiB9KSwKIFNUQUNLX0FMSUdOOiAxNiwKIHByZXBWYXJhcmc6IChmdW5j
dGlvbihwdHIsIHR5cGUpIHsKICBpZiAodHlwZSA9PT0gImRvdWJsZSIgfHwgdHlwZSA9PT0gImk2
NCIpIHsKICAgaWYgKHB0ciAmIDcpIHsKICAgIGFzc2VydCgocHRyICYgNykgPT09IDQpOwogICAg
cHRyICs9IDQ7CiAgIH0KICB9IGVsc2UgewogICBhc3NlcnQoKHB0ciAmIDMpID09PSAwKTsKICB9
CiAgcmV0dXJuIHB0cjsKIH0pLAogZ2V0QWxpZ25TaXplOiAoZnVuY3Rpb24odHlwZSwgc2l6ZSwg
dmFyYXJnKSB7CiAgaWYgKCF2YXJhcmcgJiYgKHR5cGUgPT0gImk2NCIgfHwgdHlwZSA9PSAiZG91
YmxlIikpIHJldHVybiA4OwogIGlmICghdHlwZSkgcmV0dXJuIE1hdGgubWluKHNpemUsIDgpOwog
IHJldHVybiBNYXRoLm1pbihzaXplIHx8ICh0eXBlID8gUnVudGltZS5nZXROYXRpdmVGaWVsZFNp
emUodHlwZSkgOiAwKSwgUnVudGltZS5RVUFOVFVNX1NJWkUpOwogfSksCiBkeW5DYWxsOiAoZnVu
Y3Rpb24oc2lnLCBwdHIsIGFyZ3MpIHsKICBpZiAoYXJncyAmJiBhcmdzLmxlbmd0aCkgewogICBp
ZiAoIWFyZ3Muc3BsaWNlKSBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJncyk7
CiAgIGFyZ3Muc3BsaWNlKDAsIDAsIHB0cik7CiAgIHJldHVybiBNb2R1bGVbImR5bkNhbGxfIiAr
IHNpZ10uYXBwbHkobnVsbCwgYXJncyk7CiAgfSBlbHNlIHsKICAgcmV0dXJuIE1vZHVsZVsiZHlu
Q2FsbF8iICsgc2lnXS5jYWxsKG51bGwsIHB0cik7CiAgfQogfSksCiBmdW5jdGlvblBvaW50ZXJz
OiBbXSwKIGFkZEZ1bmN0aW9uOiAoZnVuY3Rpb24oZnVuYykgewogIGZvciAodmFyIGkgPSAwOyBp
IDwgUnVudGltZS5mdW5jdGlvblBvaW50ZXJzLmxlbmd0aDsgaSsrKSB7CiAgIGlmICghUnVudGlt
ZS5mdW5jdGlvblBvaW50ZXJzW2ldKSB7CiAgICBSdW50aW1lLmZ1bmN0aW9uUG9pbnRlcnNbaV0g
PSBmdW5jOwogICAgcmV0dXJuIDIgKiAoMSArIGkpOwogICB9CiAgfQogIHRocm93ICJGaW5pc2hl
ZCB1cCBhbGwgcmVzZXJ2ZWQgZnVuY3Rpb24gcG9pbnRlcnMuIFVzZSBhIGhpZ2hlciB2YWx1ZSBm
b3IgUkVTRVJWRURfRlVOQ1RJT05fUE9JTlRFUlMuIjsKIH0pLAogcmVtb3ZlRnVuY3Rpb246IChm
dW5jdGlvbihpbmRleCkgewogIFJ1bnRpbWUuZnVuY3Rpb25Qb2ludGVyc1soaW5kZXggLSAyKSAv
IDJdID0gbnVsbDsKIH0pLAogd2Fybk9uY2U6IChmdW5jdGlvbih0ZXh0KSB7CiAgaWYgKCFSdW50
aW1lLndhcm5PbmNlLnNob3duKSBSdW50aW1lLndhcm5PbmNlLnNob3duID0ge307CiAgaWYgKCFS
dW50aW1lLndhcm5PbmNlLnNob3duW3RleHRdKSB7CiAgIFJ1bnRpbWUud2Fybk9uY2Uuc2hvd25b
dGV4dF0gPSAxOwogICBNb2R1bGUucHJpbnRFcnIodGV4dCk7CiAgfQogfSksCiBmdW5jV3JhcHBl
cnM6IHt9LAogZ2V0RnVuY1dyYXBwZXI6IChmdW5jdGlvbihmdW5jLCBzaWcpIHsKICBhc3NlcnQo
c2lnKTsKICBpZiAoIVJ1bnRpbWUuZnVuY1dyYXBwZXJzW3NpZ10pIHsKICAgUnVudGltZS5mdW5j
V3JhcHBlcnNbc2lnXSA9IHt9OwogIH0KICB2YXIgc2lnQ2FjaGUgPSBSdW50aW1lLmZ1bmNXcmFw
cGVyc1tzaWddOwogIGlmICghc2lnQ2FjaGVbZnVuY10pIHsKICAgc2lnQ2FjaGVbZnVuY10gPSBm
dW5jdGlvbiBkeW5DYWxsX3dyYXBwZXIoKSB7CiAgICByZXR1cm4gUnVudGltZS5keW5DYWxsKHNp
ZywgZnVuYywgYXJndW1lbnRzKTsKICAgfTsKICB9CiAgcmV0dXJuIHNpZ0NhY2hlW2Z1bmNdOwog
fSksCiBnZXRDb21waWxlclNldHRpbmc6IChmdW5jdGlvbihuYW1lKSB7CiAgdGhyb3cgIllvdSBt
dXN0IGJ1aWxkIHdpdGggLXMgUkVUQUlOX0NPTVBJTEVSX1NFVFRJTkdTPTEgZm9yIFJ1bnRpbWUu
Z2V0Q29tcGlsZXJTZXR0aW5nIG9yIGVtc2NyaXB0ZW5fZ2V0X2NvbXBpbGVyX3NldHRpbmcgdG8g
d29yayI7CiB9KSwKIHN0YWNrQWxsb2M6IChmdW5jdGlvbihzaXplKSB7CiAgdmFyIHJldCA9IFNU
QUNLVE9QOwogIFNUQUNLVE9QID0gU1RBQ0tUT1AgKyBzaXplIHwgMDsKICBTVEFDS1RPUCA9IFNU
QUNLVE9QICsgMTUgJiAtMTY7CiAgcmV0dXJuIHJldDsKIH0pLAogc3RhdGljQWxsb2M6IChmdW5j
dGlvbihzaXplKSB7CiAgdmFyIHJldCA9IFNUQVRJQ1RPUDsKICBTVEFUSUNUT1AgPSBTVEFUSUNU
T1AgKyBzaXplIHwgMDsKICBTVEFUSUNUT1AgPSBTVEFUSUNUT1AgKyAxNSAmIC0xNjsKICByZXR1
cm4gcmV0OwogfSksCiBkeW5hbWljQWxsb2M6IChmdW5jdGlvbihzaXplKSB7CiAgdmFyIHJldCA9
IERZTkFNSUNUT1A7CiAgRFlOQU1JQ1RPUCA9IERZTkFNSUNUT1AgKyBzaXplIHwgMDsKICBEWU5B
TUlDVE9QID0gRFlOQU1JQ1RPUCArIDE1ICYgLTE2OwogIGlmIChEWU5BTUlDVE9QID49IFRPVEFM
X01FTU9SWSkgewogICB2YXIgc3VjY2VzcyA9IGVubGFyZ2VNZW1vcnkoKTsKICAgaWYgKCFzdWNj
ZXNzKSB7CiAgICBEWU5BTUlDVE9QID0gcmV0OwogICAgcmV0dXJuIDA7CiAgIH0KICB9CiAgcmV0
dXJuIHJldDsKIH0pLAogYWxpZ25NZW1vcnk6IChmdW5jdGlvbihzaXplLCBxdWFudHVtKSB7CiAg
dmFyIHJldCA9IHNpemUgPSBNYXRoLmNlaWwoc2l6ZSAvIChxdWFudHVtID8gcXVhbnR1bSA6IDE2
KSkgKiAocXVhbnR1bSA/IHF1YW50dW0gOiAxNik7CiAgcmV0dXJuIHJldDsKIH0pLAogbWFrZUJp
Z0ludDogKGZ1bmN0aW9uKGxvdywgaGlnaCwgdW5zaWduZWQpIHsKICB2YXIgcmV0ID0gdW5zaWdu
ZWQgPyArKGxvdyA+Pj4gMCkgKyArKGhpZ2ggPj4+IDApICogKzQyOTQ5NjcyOTYgOiArKGxvdyA+
Pj4gMCkgKyArKGhpZ2ggfCAwKSAqICs0Mjk0OTY3Mjk2OwogIHJldHVybiByZXQ7CiB9KSwKIEdM
T0JBTF9CQVNFOiA4LAogUVVBTlRVTV9TSVpFOiA0LAogX19kdW1teV9fOiAwCn07Ck1vZHVsZVsi
UnVudGltZSJdID0gUnVudGltZTsKdmFyIF9fVEhSRVdfXyA9IDA7CnZhciBBQk9SVCA9IGZhbHNl
Owp2YXIgRVhJVFNUQVRVUyA9IDA7CnZhciB1bmRlZiA9IDA7CnZhciB0ZW1wVmFsdWUsIHRlbXBJ
bnQsIHRlbXBCaWdJbnQsIHRlbXBJbnQyLCB0ZW1wQmlnSW50MiwgdGVtcFBhaXIsIHRlbXBCaWdJ
bnRJLCB0ZW1wQmlnSW50UiwgdGVtcEJpZ0ludFMsIHRlbXBCaWdJbnRQLCB0ZW1wQmlnSW50RCwg
dGVtcERvdWJsZSwgdGVtcEZsb2F0Owp2YXIgdGVtcEk2NCwgdGVtcEk2NGI7CnZhciB0ZW1wUmV0
MCwgdGVtcFJldDEsIHRlbXBSZXQyLCB0ZW1wUmV0MywgdGVtcFJldDQsIHRlbXBSZXQ1LCB0ZW1w
UmV0NiwgdGVtcFJldDcsIHRlbXBSZXQ4LCB0ZW1wUmV0OTsKZnVuY3Rpb24gYXNzZXJ0KGNvbmRp
dGlvbiwgdGV4dCkgewogaWYgKCFjb25kaXRpb24pIHsKICBhYm9ydCgiQXNzZXJ0aW9uIGZhaWxl
ZDogIiArIHRleHQpOwogfQp9CnZhciBnbG9iYWxTY29wZSA9IHRoaXM7CmZ1bmN0aW9uIGdldENG
dW5jKGlkZW50KSB7CiB2YXIgZnVuYyA9IE1vZHVsZVsiXyIgKyBpZGVudF07CiBpZiAoIWZ1bmMp
IHsKICB0cnkgewogICBmdW5jID0gZXZhbCgiXyIgKyBpZGVudCk7CiAgfSBjYXRjaCAoZSkge30K
IH0KIGFzc2VydChmdW5jLCAiQ2Fubm90IGNhbGwgdW5rbm93biBmdW5jdGlvbiAiICsgaWRlbnQg
KyAiIChwZXJoYXBzIExMVk0gb3B0aW1pemF0aW9ucyBvciBjbG9zdXJlIHJlbW92ZWQgaXQ/KSIp
OwogcmV0dXJuIGZ1bmM7Cn0KdmFyIGN3cmFwLCBjY2FsbDsKKChmdW5jdGlvbigpIHsKIHZhciBK
U2Z1bmNzID0gewogICJzdGFja1NhdmUiOiAoZnVuY3Rpb24oKSB7CiAgIFJ1bnRpbWUuc3RhY2tT
YXZlKCk7CiAgfSksCiAgInN0YWNrUmVzdG9yZSI6IChmdW5jdGlvbigpIHsKICAgUnVudGltZS5z
dGFja1Jlc3RvcmUoKTsKICB9KSwKICAiYXJyYXlUb0MiOiAoZnVuY3Rpb24oYXJyKSB7CiAgIHZh
ciByZXQgPSBSdW50aW1lLnN0YWNrQWxsb2MoYXJyLmxlbmd0aCk7CiAgIHdyaXRlQXJyYXlUb01l
bW9yeShhcnIsIHJldCk7CiAgIHJldHVybiByZXQ7CiAgfSksCiAgInN0cmluZ1RvQyI6IChmdW5j
dGlvbihzdHIpIHsKICAgdmFyIHJldCA9IDA7CiAgIGlmIChzdHIgIT09IG51bGwgJiYgc3RyICE9
PSB1bmRlZmluZWQgJiYgc3RyICE9PSAwKSB7CiAgICByZXQgPSBSdW50aW1lLnN0YWNrQWxsb2Mo
KHN0ci5sZW5ndGggPDwgMikgKyAxKTsKICAgIHdyaXRlU3RyaW5nVG9NZW1vcnkoc3RyLCByZXQp
OwogICB9CiAgIHJldHVybiByZXQ7CiAgfSkKIH07CiB2YXIgdG9DID0gewogICJzdHJpbmciOiBK
U2Z1bmNzWyJzdHJpbmdUb0MiXSwKICAiYXJyYXkiOiBKU2Z1bmNzWyJhcnJheVRvQyJdCiB9Owog
Y2NhbGwgPSBmdW5jdGlvbiBjY2FsbEZ1bmMoaWRlbnQsIHJldHVyblR5cGUsIGFyZ1R5cGVzLCBh
cmdzLCBvcHRzKSB7CiAgdmFyIGZ1bmMgPSBnZXRDRnVuYyhpZGVudCk7CiAgdmFyIGNBcmdzID0g
W107CiAgdmFyIHN0YWNrID0gMDsKICBpZiAoYXJncykgewogICBmb3IgKHZhciBpID0gMDsgaSA8
IGFyZ3MubGVuZ3RoOyBpKyspIHsKICAgIHZhciBjb252ZXJ0ZXIgPSB0b0NbYXJnVHlwZXNbaV1d
OwogICAgaWYgKGNvbnZlcnRlcikgewogICAgIGlmIChzdGFjayA9PT0gMCkgc3RhY2sgPSBSdW50
aW1lLnN0YWNrU2F2ZSgpOwogICAgIGNBcmdzW2ldID0gY29udmVydGVyKGFyZ3NbaV0pOwogICAg
fSBlbHNlIHsKICAgICBjQXJnc1tpXSA9IGFyZ3NbaV07CiAgICB9CiAgIH0KICB9CiAgdmFyIHJl
dCA9IGZ1bmMuYXBwbHkobnVsbCwgY0FyZ3MpOwogIGlmIChyZXR1cm5UeXBlID09PSAic3RyaW5n
IikgcmV0ID0gUG9pbnRlcl9zdHJpbmdpZnkocmV0KTsKICBpZiAoc3RhY2sgIT09IDApIHsKICAg
aWYgKG9wdHMgJiYgb3B0cy5hc3luYykgewogICAgRW10ZXJwcmV0ZXJBc3luYy5hc3luY0ZpbmFs
aXplcnMucHVzaCgoZnVuY3Rpb24oKSB7CiAgICAgUnVudGltZS5zdGFja1Jlc3RvcmUoc3RhY2sp
OwogICAgfSkpOwogICAgcmV0dXJuOwogICB9CiAgIFJ1bnRpbWUuc3RhY2tSZXN0b3JlKHN0YWNr
KTsKICB9CiAgcmV0dXJuIHJldDsKIH07CiB2YXIgc291cmNlUmVnZXggPSAvXmZ1bmN0aW9uXHMq
XCgoW14pXSopXClccyp7XHMqKFteKl0qPylbXHM7XSooPzpyZXR1cm5ccyooLio/KVs7XHNdKik/
fSQvOwogZnVuY3Rpb24gcGFyc2VKU0Z1bmMoanNmdW5jKSB7CiAgdmFyIHBhcnNlZCA9IGpzZnVu
Yy50b1N0cmluZygpLm1hdGNoKHNvdXJjZVJlZ2V4KS5zbGljZSgxKTsKICByZXR1cm4gewogICBh
cmd1bWVudHM6IHBhcnNlZFswXSwKICAgYm9keTogcGFyc2VkWzFdLAogICByZXR1cm5WYWx1ZTog
cGFyc2VkWzJdCiAgfTsKIH0KIHZhciBKU3NvdXJjZSA9IHt9OwogZm9yICh2YXIgZnVuIGluIEpT
ZnVuY3MpIHsKICBpZiAoSlNmdW5jcy5oYXNPd25Qcm9wZXJ0eShmdW4pKSB7CiAgIEpTc291cmNl
W2Z1bl0gPSBwYXJzZUpTRnVuYyhKU2Z1bmNzW2Z1bl0pOwogIH0KIH0KIGN3cmFwID0gZnVuY3Rp
b24gY3dyYXAoaWRlbnQsIHJldHVyblR5cGUsIGFyZ1R5cGVzKSB7CiAgYXJnVHlwZXMgPSBhcmdU
eXBlcyB8fCBbXTsKICB2YXIgY2Z1bmMgPSBnZXRDRnVuYyhpZGVudCk7CiAgdmFyIG51bWVyaWNB
cmdzID0gYXJnVHlwZXMuZXZlcnkoKGZ1bmN0aW9uKHR5cGUpIHsKICAgcmV0dXJuIHR5cGUgPT09
ICJudW1iZXIiOwogIH0pKTsKICB2YXIgbnVtZXJpY1JldCA9IHJldHVyblR5cGUgIT09ICJzdHJp
bmciOwogIGlmIChudW1lcmljUmV0ICYmIG51bWVyaWNBcmdzKSB7CiAgIHJldHVybiBjZnVuYzsK
ICB9CiAgdmFyIGFyZ05hbWVzID0gYXJnVHlwZXMubWFwKChmdW5jdGlvbih4LCBpKSB7CiAgIHJl
dHVybiAiJCIgKyBpOwogIH0pKTsKICB2YXIgZnVuY3N0ciA9ICIoZnVuY3Rpb24oIiArIGFyZ05h
bWVzLmpvaW4oIiwiKSArICIpIHsiOwogIHZhciBuYXJncyA9IGFyZ1R5cGVzLmxlbmd0aDsKICBp
ZiAoIW51bWVyaWNBcmdzKSB7CiAgIGZ1bmNzdHIgKz0gInZhciBzdGFjayA9ICIgKyBKU3NvdXJj
ZVsic3RhY2tTYXZlIl0uYm9keSArICI7IjsKICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuYXJnczsg
aSsrKSB7CiAgICB2YXIgYXJnID0gYXJnTmFtZXNbaV0sIHR5cGUgPSBhcmdUeXBlc1tpXTsKICAg
IGlmICh0eXBlID09PSAibnVtYmVyIikgY29udGludWU7CiAgICB2YXIgY29udmVydENvZGUgPSBK
U3NvdXJjZVt0eXBlICsgIlRvQyJdOwogICAgZnVuY3N0ciArPSAidmFyICIgKyBjb252ZXJ0Q29k
ZS5hcmd1bWVudHMgKyAiID0gIiArIGFyZyArICI7IjsKICAgIGZ1bmNzdHIgKz0gY29udmVydENv
ZGUuYm9keSArICI7IjsKICAgIGZ1bmNzdHIgKz0gYXJnICsgIj0iICsgY29udmVydENvZGUucmV0
dXJuVmFsdWUgKyAiOyI7CiAgIH0KICB9CiAgdmFyIGNmdW5jbmFtZSA9IHBhcnNlSlNGdW5jKChm
dW5jdGlvbigpIHsKICAgcmV0dXJuIGNmdW5jOwogIH0pKS5yZXR1cm5WYWx1ZTsKICBmdW5jc3Ry
ICs9ICJ2YXIgcmV0ID0gIiArIGNmdW5jbmFtZSArICIoIiArIGFyZ05hbWVzLmpvaW4oIiwiKSAr
ICIpOyI7CiAgaWYgKCFudW1lcmljUmV0KSB7CiAgIHZhciBzdHJnZnkgPSBwYXJzZUpTRnVuYygo
ZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gUG9pbnRlcl9zdHJpbmdpZnk7CiAgIH0pKS5yZXR1cm5W
YWx1ZTsKICAgZnVuY3N0ciArPSAicmV0ID0gIiArIHN0cmdmeSArICIocmV0KTsiOwogIH0KICBp
ZiAoIW51bWVyaWNBcmdzKSB7CiAgIGZ1bmNzdHIgKz0gSlNzb3VyY2VbInN0YWNrUmVzdG9yZSJd
LmJvZHkucmVwbGFjZSgiKCkiLCAiKHN0YWNrKSIpICsgIjsiOwogIH0KICBmdW5jc3RyICs9ICJy
ZXR1cm4gcmV0fSkiOwogIHJldHVybiBldmFsKGZ1bmNzdHIpOwogfTsKfSkpKCk7Ck1vZHVsZVsi
Y2NhbGwiXSA9IGNjYWxsOwpNb2R1bGVbImN3cmFwIl0gPSBjd3JhcDsKZnVuY3Rpb24gc2V0VmFs
dWUocHRyLCB2YWx1ZSwgdHlwZSwgbm9TYWZlKSB7CiB0eXBlID0gdHlwZSB8fCAiaTgiOwogaWYg
KHR5cGUuY2hhckF0KHR5cGUubGVuZ3RoIC0gMSkgPT09ICIqIikgdHlwZSA9ICJpMzIiOwogc3dp
dGNoICh0eXBlKSB7CiBjYXNlICJpMSI6CiAgSEVBUDhbcHRyID4+IDBdID0gdmFsdWU7CiAgYnJl
YWs7CiBjYXNlICJpOCI6CiAgSEVBUDhbcHRyID4+IDBdID0gdmFsdWU7CiAgYnJlYWs7CiBjYXNl
ICJpMTYiOgogIEhFQVAxNltwdHIgPj4gMV0gPSB2YWx1ZTsKICBicmVhazsKIGNhc2UgImkzMiI6
CiAgSEVBUDMyW3B0ciA+PiAyXSA9IHZhbHVlOwogIGJyZWFrOwogY2FzZSAiaTY0IjoKICB0ZW1w
STY0ID0gWyB2YWx1ZSA+Pj4gMCwgKHRlbXBEb3VibGUgPSB2YWx1ZSwgK01hdGhfYWJzKHRlbXBE
b3VibGUpID49ICsxID8gdGVtcERvdWJsZSA+ICswID8gKE1hdGhfbWluKCtNYXRoX2Zsb29yKHRl
bXBEb3VibGUgLyArNDI5NDk2NzI5NiksICs0Mjk0OTY3Mjk1KSB8IDApID4+PiAwIDogfn4rTWF0
aF9jZWlsKCh0ZW1wRG91YmxlIC0gKyh+fnRlbXBEb3VibGUgPj4+IDApKSAvICs0Mjk0OTY3Mjk2
KSA+Pj4gMCA6IDApIF0sIEhFQVAzMltwdHIgPj4gMl0gPSB0ZW1wSTY0WzBdLCBIRUFQMzJbcHRy
ICsgNCA+PiAyXSA9IHRlbXBJNjRbMV07CiAgYnJlYWs7CiBjYXNlICJmbG9hdCI6CiAgSEVBUEYz
MltwdHIgPj4gMl0gPSB2YWx1ZTsKICBicmVhazsKIGNhc2UgImRvdWJsZSI6CiAgSEVBUEY2NFtw
dHIgPj4gM10gPSB2YWx1ZTsKICBicmVhazsKIGRlZmF1bHQ6CiAgYWJvcnQoImludmFsaWQgdHlw
ZSBmb3Igc2V0VmFsdWU6ICIgKyB0eXBlKTsKIH0KfQpNb2R1bGVbInNldFZhbHVlIl0gPSBzZXRW
YWx1ZTsKZnVuY3Rpb24gZ2V0VmFsdWUocHRyLCB0eXBlLCBub1NhZmUpIHsKIHR5cGUgPSB0eXBl
IHx8ICJpOCI7CiBpZiAodHlwZS5jaGFyQXQodHlwZS5sZW5ndGggLSAxKSA9PT0gIioiKSB0eXBl
ID0gImkzMiI7CiBzd2l0Y2ggKHR5cGUpIHsKIGNhc2UgImkxIjoKICByZXR1cm4gSEVBUDhbcHRy
ID4+IDBdOwogY2FzZSAiaTgiOgogIHJldHVybiBIRUFQOFtwdHIgPj4gMF07CiBjYXNlICJpMTYi
OgogIHJldHVybiBIRUFQMTZbcHRyID4+IDFdOwogY2FzZSAiaTMyIjoKICByZXR1cm4gSEVBUDMy
W3B0ciA+PiAyXTsKIGNhc2UgImk2NCI6CiAgcmV0dXJuIEhFQVAzMltwdHIgPj4gMl07CiBjYXNl
ICJmbG9hdCI6CiAgcmV0dXJuIEhFQVBGMzJbcHRyID4+IDJdOwogY2FzZSAiZG91YmxlIjoKICBy
ZXR1cm4gSEVBUEY2NFtwdHIgPj4gM107CiBkZWZhdWx0OgogIGFib3J0KCJpbnZhbGlkIHR5cGUg
Zm9yIHNldFZhbHVlOiAiICsgdHlwZSk7CiB9CiByZXR1cm4gbnVsbDsKfQpNb2R1bGVbImdldFZh
bHVlIl0gPSBnZXRWYWx1ZTsKdmFyIEFMTE9DX05PUk1BTCA9IDA7CnZhciBBTExPQ19TVEFDSyA9
IDE7CnZhciBBTExPQ19TVEFUSUMgPSAyOwp2YXIgQUxMT0NfRFlOQU1JQyA9IDM7CnZhciBBTExP
Q19OT05FID0gNDsKTW9kdWxlWyJBTExPQ19OT1JNQUwiXSA9IEFMTE9DX05PUk1BTDsKTW9kdWxl
WyJBTExPQ19TVEFDSyJdID0gQUxMT0NfU1RBQ0s7Ck1vZHVsZVsiQUxMT0NfU1RBVElDIl0gPSBB
TExPQ19TVEFUSUM7Ck1vZHVsZVsiQUxMT0NfRFlOQU1JQyJdID0gQUxMT0NfRFlOQU1JQzsKTW9k
dWxlWyJBTExPQ19OT05FIl0gPSBBTExPQ19OT05FOwpmdW5jdGlvbiBhbGxvY2F0ZShzbGFiLCB0
eXBlcywgYWxsb2NhdG9yLCBwdHIpIHsKIHZhciB6ZXJvaW5pdCwgc2l6ZTsKIGlmICh0eXBlb2Yg
c2xhYiA9PT0gIm51bWJlciIpIHsKICB6ZXJvaW5pdCA9IHRydWU7CiAgc2l6ZSA9IHNsYWI7CiB9
IGVsc2UgewogIHplcm9pbml0ID0gZmFsc2U7CiAgc2l6ZSA9IHNsYWIubGVuZ3RoOwogfQogdmFy
IHNpbmdsZVR5cGUgPSB0eXBlb2YgdHlwZXMgPT09ICJzdHJpbmciID8gdHlwZXMgOiBudWxsOwog
dmFyIHJldDsKIGlmIChhbGxvY2F0b3IgPT0gQUxMT0NfTk9ORSkgewogIHJldCA9IHB0cjsKIH0g
ZWxzZSB7CiAgcmV0ID0gWyBfbWFsbG9jLCBSdW50aW1lLnN0YWNrQWxsb2MsIFJ1bnRpbWUuc3Rh
dGljQWxsb2MsIFJ1bnRpbWUuZHluYW1pY0FsbG9jIF1bYWxsb2NhdG9yID09PSB1bmRlZmluZWQg
PyBBTExPQ19TVEFUSUMgOiBhbGxvY2F0b3JdKE1hdGgubWF4KHNpemUsIHNpbmdsZVR5cGUgPyAx
IDogdHlwZXMubGVuZ3RoKSk7CiB9CiBpZiAoemVyb2luaXQpIHsKICB2YXIgcHRyID0gcmV0LCBz
dG9wOwogIGFzc2VydCgocmV0ICYgMykgPT0gMCk7CiAgc3RvcCA9IHJldCArIChzaXplICYgfjMp
OwogIGZvciAoOyBwdHIgPCBzdG9wOyBwdHIgKz0gNCkgewogICBIRUFQMzJbcHRyID4+IDJdID0g
MDsKICB9CiAgc3RvcCA9IHJldCArIHNpemU7CiAgd2hpbGUgKHB0ciA8IHN0b3ApIHsKICAgSEVB
UDhbcHRyKysgPj4gMF0gPSAwOwogIH0KICByZXR1cm4gcmV0OwogfQogaWYgKHNpbmdsZVR5cGUg
PT09ICJpOCIpIHsKICBpZiAoc2xhYi5zdWJhcnJheSB8fCBzbGFiLnNsaWNlKSB7CiAgIEhFQVBV
OC5zZXQoc2xhYiwgcmV0KTsKICB9IGVsc2UgewogICBIRUFQVTguc2V0KG5ldyBVaW50OEFycmF5
KHNsYWIpLCByZXQpOwogIH0KICByZXR1cm4gcmV0OwogfQogdmFyIGkgPSAwLCB0eXBlLCB0eXBl
U2l6ZSwgcHJldmlvdXNUeXBlOwogd2hpbGUgKGkgPCBzaXplKSB7CiAgdmFyIGN1cnIgPSBzbGFi
W2ldOwogIGlmICh0eXBlb2YgY3VyciA9PT0gImZ1bmN0aW9uIikgewogICBjdXJyID0gUnVudGlt
ZS5nZXRGdW5jdGlvbkluZGV4KGN1cnIpOwogIH0KICB0eXBlID0gc2luZ2xlVHlwZSB8fCB0eXBl
c1tpXTsKICBpZiAodHlwZSA9PT0gMCkgewogICBpKys7CiAgIGNvbnRpbnVlOwogIH0KICBpZiAo
dHlwZSA9PSAiaTY0IikgdHlwZSA9ICJpMzIiOwogIHNldFZhbHVlKHJldCArIGksIGN1cnIsIHR5
cGUpOwogIGlmIChwcmV2aW91c1R5cGUgIT09IHR5cGUpIHsKICAgdHlwZVNpemUgPSBSdW50aW1l
LmdldE5hdGl2ZVR5cGVTaXplKHR5cGUpOwogICBwcmV2aW91c1R5cGUgPSB0eXBlOwogIH0KICBp
ICs9IHR5cGVTaXplOwogfQogcmV0dXJuIHJldDsKfQpNb2R1bGVbImFsbG9jYXRlIl0gPSBhbGxv
Y2F0ZTsKZnVuY3Rpb24gZ2V0TWVtb3J5KHNpemUpIHsKIGlmICghc3RhdGljU2VhbGVkKSByZXR1
cm4gUnVudGltZS5zdGF0aWNBbGxvYyhzaXplKTsKIGlmICh0eXBlb2YgX3NicmsgIT09ICJ1bmRl
ZmluZWQiICYmICFfc2Jyay5jYWxsZWQgfHwgIXJ1bnRpbWVJbml0aWFsaXplZCkgcmV0dXJuIFJ1
bnRpbWUuZHluYW1pY0FsbG9jKHNpemUpOwogcmV0dXJuIF9tYWxsb2Moc2l6ZSk7Cn0KTW9kdWxl
WyJnZXRNZW1vcnkiXSA9IGdldE1lbW9yeTsKZnVuY3Rpb24gUG9pbnRlcl9zdHJpbmdpZnkocHRy
LCBsZW5ndGgpIHsKIGlmIChsZW5ndGggPT09IDAgfHwgIXB0cikgcmV0dXJuICIiOwogdmFyIGhh
c1V0ZiA9IDA7CiB2YXIgdDsKIHZhciBpID0gMDsKIHdoaWxlICgxKSB7CiAgdCA9IEhFQVBVOFtw
dHIgKyBpID4+IDBdOwogIGhhc1V0ZiB8PSB0OwogIGlmICh0ID09IDAgJiYgIWxlbmd0aCkgYnJl
YWs7CiAgaSsrOwogIGlmIChsZW5ndGggJiYgaSA9PSBsZW5ndGgpIGJyZWFrOwogfQogaWYgKCFs
ZW5ndGgpIGxlbmd0aCA9IGk7CiB2YXIgcmV0ID0gIiI7CiBpZiAoaGFzVXRmIDwgMTI4KSB7CiAg
dmFyIE1BWF9DSFVOSyA9IDEwMjQ7CiAgdmFyIGN1cnI7CiAgd2hpbGUgKGxlbmd0aCA+IDApIHsK
ICAgY3VyciA9IFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLCBIRUFQVTguc3ViYXJy
YXkocHRyLCBwdHIgKyBNYXRoLm1pbihsZW5ndGgsIE1BWF9DSFVOSykpKTsKICAgcmV0ID0gcmV0
ID8gcmV0ICsgY3VyciA6IGN1cnI7CiAgIHB0ciArPSBNQVhfQ0hVTks7CiAgIGxlbmd0aCAtPSBN
QVhfQ0hVTks7CiAgfQogIHJldHVybiByZXQ7CiB9CiByZXR1cm4gTW9kdWxlWyJVVEY4VG9TdHJp
bmciXShwdHIpOwp9Ck1vZHVsZVsiUG9pbnRlcl9zdHJpbmdpZnkiXSA9IFBvaW50ZXJfc3RyaW5n
aWZ5OwpmdW5jdGlvbiBBc2NpaVRvU3RyaW5nKHB0cikgewogdmFyIHN0ciA9ICIiOwogd2hpbGUg
KDEpIHsKICB2YXIgY2ggPSBIRUFQOFtwdHIrKyA+PiAwXTsKICBpZiAoIWNoKSByZXR1cm4gc3Ry
OwogIHN0ciArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGNoKTsKIH0KfQpNb2R1bGVbIkFzY2lpVG9T
dHJpbmciXSA9IEFzY2lpVG9TdHJpbmc7CmZ1bmN0aW9uIHN0cmluZ1RvQXNjaWkoc3RyLCBvdXRQ
dHIpIHsKIHJldHVybiB3cml0ZUFzY2lpVG9NZW1vcnkoc3RyLCBvdXRQdHIsIGZhbHNlKTsKfQpN
b2R1bGVbInN0cmluZ1RvQXNjaWkiXSA9IHN0cmluZ1RvQXNjaWk7CmZ1bmN0aW9uIFVURjhBcnJh
eVRvU3RyaW5nKHU4QXJyYXksIGlkeCkgewogdmFyIHUwLCB1MSwgdTIsIHUzLCB1NCwgdTU7CiB2
YXIgc3RyID0gIiI7CiB3aGlsZSAoMSkgewogIHUwID0gdThBcnJheVtpZHgrK107CiAgaWYgKCF1
MCkgcmV0dXJuIHN0cjsKICBpZiAoISh1MCAmIDEyOCkpIHsKICAgc3RyICs9IFN0cmluZy5mcm9t
Q2hhckNvZGUodTApOwogICBjb250aW51ZTsKICB9CiAgdTEgPSB1OEFycmF5W2lkeCsrXSAmIDYz
OwogIGlmICgodTAgJiAyMjQpID09IDE5MikgewogICBzdHIgKz0gU3RyaW5nLmZyb21DaGFyQ29k
ZSgodTAgJiAzMSkgPDwgNiB8IHUxKTsKICAgY29udGludWU7CiAgfQogIHUyID0gdThBcnJheVtp
ZHgrK10gJiA2MzsKICBpZiAoKHUwICYgMjQwKSA9PSAyMjQpIHsKICAgdTAgPSAodTAgJiAxNSkg
PDwgMTIgfCB1MSA8PCA2IHwgdTI7CiAgfSBlbHNlIHsKICAgdTMgPSB1OEFycmF5W2lkeCsrXSAm
IDYzOwogICBpZiAoKHUwICYgMjQ4KSA9PSAyNDApIHsKICAgIHUwID0gKHUwICYgNykgPDwgMTgg
fCB1MSA8PCAxMiB8IHUyIDw8IDYgfCB1MzsKICAgfSBlbHNlIHsKICAgIHU0ID0gdThBcnJheVtp
ZHgrK10gJiA2MzsKICAgIGlmICgodTAgJiAyNTIpID09IDI0OCkgewogICAgIHUwID0gKHUwICYg
MykgPDwgMjQgfCB1MSA8PCAxOCB8IHUyIDw8IDEyIHwgdTMgPDwgNiB8IHU0OwogICAgfSBlbHNl
IHsKICAgICB1NSA9IHU4QXJyYXlbaWR4KytdICYgNjM7CiAgICAgdTAgPSAodTAgJiAxKSA8PCAz
MCB8IHUxIDw8IDI0IHwgdTIgPDwgMTggfCB1MyA8PCAxMiB8IHU0IDw8IDYgfCB1NTsKICAgIH0K
ICAgfQogIH0KICBpZiAodTAgPCA2NTUzNikgewogICBzdHIgKz0gU3RyaW5nLmZyb21DaGFyQ29k
ZSh1MCk7CiAgfSBlbHNlIHsKICAgdmFyIGNoID0gdTAgLSA2NTUzNjsKICAgc3RyICs9IFN0cmlu
Zy5mcm9tQ2hhckNvZGUoNTUyOTYgfCBjaCA+PiAxMCwgNTYzMjAgfCBjaCAmIDEwMjMpOwogIH0K
IH0KfQpNb2R1bGVbIlVURjhBcnJheVRvU3RyaW5nIl0gPSBVVEY4QXJyYXlUb1N0cmluZzsKZnVu
Y3Rpb24gVVRGOFRvU3RyaW5nKHB0cikgewogcmV0dXJuIFVURjhBcnJheVRvU3RyaW5nKEhFQVBV
OCwgcHRyKTsKfQpNb2R1bGVbIlVURjhUb1N0cmluZyJdID0gVVRGOFRvU3RyaW5nOwpmdW5jdGlv
biBzdHJpbmdUb1VURjhBcnJheShzdHIsIG91dFU4QXJyYXksIG91dElkeCwgbWF4Qnl0ZXNUb1dy
aXRlKSB7CiBpZiAoIShtYXhCeXRlc1RvV3JpdGUgPiAwKSkgcmV0dXJuIDA7CiB2YXIgc3RhcnRJ
ZHggPSBvdXRJZHg7CiB2YXIgZW5kSWR4ID0gb3V0SWR4ICsgbWF4Qnl0ZXNUb1dyaXRlIC0gMTsK
IGZvciAodmFyIGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgKytpKSB7CiAgdmFyIHUgPSBzdHIuY2hh
ckNvZGVBdChpKTsKICBpZiAodSA+PSA1NTI5NiAmJiB1IDw9IDU3MzQzKSB1ID0gNjU1MzYgKyAo
KHUgJiAxMDIzKSA8PCAxMCkgfCBzdHIuY2hhckNvZGVBdCgrK2kpICYgMTAyMzsKICBpZiAodSA8
PSAxMjcpIHsKICAgaWYgKG91dElkeCA+PSBlbmRJZHgpIGJyZWFrOwogICBvdXRVOEFycmF5W291
dElkeCsrXSA9IHU7CiAgfSBlbHNlIGlmICh1IDw9IDIwNDcpIHsKICAgaWYgKG91dElkeCArIDEg
Pj0gZW5kSWR4KSBicmVhazsKICAgb3V0VThBcnJheVtvdXRJZHgrK10gPSAxOTIgfCB1ID4+IDY7
CiAgIG91dFU4QXJyYXlbb3V0SWR4KytdID0gMTI4IHwgdSAmIDYzOwogIH0gZWxzZSBpZiAodSA8
PSA2NTUzNSkgewogICBpZiAob3V0SWR4ICsgMiA+PSBlbmRJZHgpIGJyZWFrOwogICBvdXRVOEFy
cmF5W291dElkeCsrXSA9IDIyNCB8IHUgPj4gMTI7CiAgIG91dFU4QXJyYXlbb3V0SWR4KytdID0g
MTI4IHwgdSA+PiA2ICYgNjM7CiAgIG91dFU4QXJyYXlbb3V0SWR4KytdID0gMTI4IHwgdSAmIDYz
OwogIH0gZWxzZSBpZiAodSA8PSAyMDk3MTUxKSB7CiAgIGlmIChvdXRJZHggKyAzID49IGVuZElk
eCkgYnJlYWs7CiAgIG91dFU4QXJyYXlbb3V0SWR4KytdID0gMjQwIHwgdSA+PiAxODsKICAgb3V0
VThBcnJheVtvdXRJZHgrK10gPSAxMjggfCB1ID4+IDEyICYgNjM7CiAgIG91dFU4QXJyYXlbb3V0
SWR4KytdID0gMTI4IHwgdSA+PiA2ICYgNjM7CiAgIG91dFU4QXJyYXlbb3V0SWR4KytdID0gMTI4
IHwgdSAmIDYzOwogIH0gZWxzZSBpZiAodSA8PSA2NzEwODg2MykgewogICBpZiAob3V0SWR4ICsg
NCA+PSBlbmRJZHgpIGJyZWFrOwogICBvdXRVOEFycmF5W291dElkeCsrXSA9IDI0OCB8IHUgPj4g
MjQ7CiAgIG91dFU4QXJyYXlbb3V0SWR4KytdID0gMTI4IHwgdSA+PiAxOCAmIDYzOwogICBvdXRV
OEFycmF5W291dElkeCsrXSA9IDEyOCB8IHUgPj4gMTIgJiA2MzsKICAgb3V0VThBcnJheVtvdXRJ
ZHgrK10gPSAxMjggfCB1ID4+IDYgJiA2MzsKICAgb3V0VThBcnJheVtvdXRJZHgrK10gPSAxMjgg
fCB1ICYgNjM7CiAgfSBlbHNlIHsKICAgaWYgKG91dElkeCArIDUgPj0gZW5kSWR4KSBicmVhazsK
ICAgb3V0VThBcnJheVtvdXRJZHgrK10gPSAyNTIgfCB1ID4+IDMwOwogICBvdXRVOEFycmF5W291
dElkeCsrXSA9IDEyOCB8IHUgPj4gMjQgJiA2MzsKICAgb3V0VThBcnJheVtvdXRJZHgrK10gPSAx
MjggfCB1ID4+IDE4ICYgNjM7CiAgIG91dFU4QXJyYXlbb3V0SWR4KytdID0gMTI4IHwgdSA+PiAx
MiAmIDYzOwogICBvdXRVOEFycmF5W291dElkeCsrXSA9IDEyOCB8IHUgPj4gNiAmIDYzOwogICBv
dXRVOEFycmF5W291dElkeCsrXSA9IDEyOCB8IHUgJiA2MzsKICB9CiB9CiBvdXRVOEFycmF5W291
dElkeF0gPSAwOwogcmV0dXJuIG91dElkeCAtIHN0YXJ0SWR4Owp9Ck1vZHVsZVsic3RyaW5nVG9V
VEY4QXJyYXkiXSA9IHN0cmluZ1RvVVRGOEFycmF5OwpmdW5jdGlvbiBzdHJpbmdUb1VURjgoc3Ry
LCBvdXRQdHIsIG1heEJ5dGVzVG9Xcml0ZSkgewogcmV0dXJuIHN0cmluZ1RvVVRGOEFycmF5KHN0
ciwgSEVBUFU4LCBvdXRQdHIsIG1heEJ5dGVzVG9Xcml0ZSk7Cn0KTW9kdWxlWyJzdHJpbmdUb1VU
RjgiXSA9IHN0cmluZ1RvVVRGODsKZnVuY3Rpb24gbGVuZ3RoQnl0ZXNVVEY4KHN0cikgewogdmFy
IGxlbiA9IDA7CiBmb3IgKHZhciBpID0gMDsgaSA8IHN0ci5sZW5ndGg7ICsraSkgewogIHZhciB1
ID0gc3RyLmNoYXJDb2RlQXQoaSk7CiAgaWYgKHUgPj0gNTUyOTYgJiYgdSA8PSA1NzM0MykgdSA9
IDY1NTM2ICsgKCh1ICYgMTAyMykgPDwgMTApIHwgc3RyLmNoYXJDb2RlQXQoKytpKSAmIDEwMjM7
CiAgaWYgKHUgPD0gMTI3KSB7CiAgICsrbGVuOwogIH0gZWxzZSBpZiAodSA8PSAyMDQ3KSB7CiAg
IGxlbiArPSAyOwogIH0gZWxzZSBpZiAodSA8PSA2NTUzNSkgewogICBsZW4gKz0gMzsKICB9IGVs
c2UgaWYgKHUgPD0gMjA5NzE1MSkgewogICBsZW4gKz0gNDsKICB9IGVsc2UgaWYgKHUgPD0gNjcx
MDg4NjMpIHsKICAgbGVuICs9IDU7CiAgfSBlbHNlIHsKICAgbGVuICs9IDY7CiAgfQogfQogcmV0
dXJuIGxlbjsKfQpNb2R1bGVbImxlbmd0aEJ5dGVzVVRGOCJdID0gbGVuZ3RoQnl0ZXNVVEY4Owpm
dW5jdGlvbiBVVEYxNlRvU3RyaW5nKHB0cikgewogdmFyIGkgPSAwOwogdmFyIHN0ciA9ICIiOwog
d2hpbGUgKDEpIHsKICB2YXIgY29kZVVuaXQgPSBIRUFQMTZbcHRyICsgaSAqIDIgPj4gMV07CiAg
aWYgKGNvZGVVbml0ID09IDApIHJldHVybiBzdHI7CiAgKytpOwogIHN0ciArPSBTdHJpbmcuZnJv
bUNoYXJDb2RlKGNvZGVVbml0KTsKIH0KfQpNb2R1bGVbIlVURjE2VG9TdHJpbmciXSA9IFVURjE2
VG9TdHJpbmc7CmZ1bmN0aW9uIHN0cmluZ1RvVVRGMTYoc3RyLCBvdXRQdHIsIG1heEJ5dGVzVG9X
cml0ZSkgewogaWYgKG1heEJ5dGVzVG9Xcml0ZSA9PT0gdW5kZWZpbmVkKSB7CiAgbWF4Qnl0ZXNU
b1dyaXRlID0gMjE0NzQ4MzY0NzsKIH0KIGlmIChtYXhCeXRlc1RvV3JpdGUgPCAyKSByZXR1cm4g
MDsKIG1heEJ5dGVzVG9Xcml0ZSAtPSAyOwogdmFyIHN0YXJ0UHRyID0gb3V0UHRyOwogdmFyIG51
bUNoYXJzVG9Xcml0ZSA9IG1heEJ5dGVzVG9Xcml0ZSA8IHN0ci5sZW5ndGggKiAyID8gbWF4Qnl0
ZXNUb1dyaXRlIC8gMiA6IHN0ci5sZW5ndGg7CiBmb3IgKHZhciBpID0gMDsgaSA8IG51bUNoYXJz
VG9Xcml0ZTsgKytpKSB7CiAgdmFyIGNvZGVVbml0ID0gc3RyLmNoYXJDb2RlQXQoaSk7CiAgSEVB
UDE2W291dFB0ciA+PiAxXSA9IGNvZGVVbml0OwogIG91dFB0ciArPSAyOwogfQogSEVBUDE2W291
dFB0ciA+PiAxXSA9IDA7CiByZXR1cm4gb3V0UHRyIC0gc3RhcnRQdHI7Cn0KTW9kdWxlWyJzdHJp
bmdUb1VURjE2Il0gPSBzdHJpbmdUb1VURjE2OwpmdW5jdGlvbiBsZW5ndGhCeXRlc1VURjE2KHN0
cikgewogcmV0dXJuIHN0ci5sZW5ndGggKiAyOwp9Ck1vZHVsZVsibGVuZ3RoQnl0ZXNVVEYxNiJd
ID0gbGVuZ3RoQnl0ZXNVVEYxNjsKZnVuY3Rpb24gVVRGMzJUb1N0cmluZyhwdHIpIHsKIHZhciBp
ID0gMDsKIHZhciBzdHIgPSAiIjsKIHdoaWxlICgxKSB7CiAgdmFyIHV0ZjMyID0gSEVBUDMyW3B0
ciArIGkgKiA0ID4+IDJdOwogIGlmICh1dGYzMiA9PSAwKSByZXR1cm4gc3RyOwogICsraTsKICBp
ZiAodXRmMzIgPj0gNjU1MzYpIHsKICAgdmFyIGNoID0gdXRmMzIgLSA2NTUzNjsKICAgc3RyICs9
IFN0cmluZy5mcm9tQ2hhckNvZGUoNTUyOTYgfCBjaCA+PiAxMCwgNTYzMjAgfCBjaCAmIDEwMjMp
OwogIH0gZWxzZSB7CiAgIHN0ciArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKHV0ZjMyKTsKICB9CiB9
Cn0KTW9kdWxlWyJVVEYzMlRvU3RyaW5nIl0gPSBVVEYzMlRvU3RyaW5nOwpmdW5jdGlvbiBzdHJp
bmdUb1VURjMyKHN0ciwgb3V0UHRyLCBtYXhCeXRlc1RvV3JpdGUpIHsKIGlmIChtYXhCeXRlc1Rv
V3JpdGUgPT09IHVuZGVmaW5lZCkgewogIG1heEJ5dGVzVG9Xcml0ZSA9IDIxNDc0ODM2NDc7CiB9
CiBpZiAobWF4Qnl0ZXNUb1dyaXRlIDwgNCkgcmV0dXJuIDA7CiB2YXIgc3RhcnRQdHIgPSBvdXRQ
dHI7CiB2YXIgZW5kUHRyID0gc3RhcnRQdHIgKyBtYXhCeXRlc1RvV3JpdGUgLSA0OwogZm9yICh2
YXIgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyArK2kpIHsKICB2YXIgY29kZVVuaXQgPSBzdHIuY2hh
ckNvZGVBdChpKTsKICBpZiAoY29kZVVuaXQgPj0gNTUyOTYgJiYgY29kZVVuaXQgPD0gNTczNDMp
IHsKICAgdmFyIHRyYWlsU3Vycm9nYXRlID0gc3RyLmNoYXJDb2RlQXQoKytpKTsKICAgY29kZVVu
aXQgPSA2NTUzNiArICgoY29kZVVuaXQgJiAxMDIzKSA8PCAxMCkgfCB0cmFpbFN1cnJvZ2F0ZSAm
IDEwMjM7CiAgfQogIEhFQVAzMltvdXRQdHIgPj4gMl0gPSBjb2RlVW5pdDsKICBvdXRQdHIgKz0g
NDsKICBpZiAob3V0UHRyICsgNCA+IGVuZFB0cikgYnJlYWs7CiB9CiBIRUFQMzJbb3V0UHRyID4+
IDJdID0gMDsKIHJldHVybiBvdXRQdHIgLSBzdGFydFB0cjsKfQpNb2R1bGVbInN0cmluZ1RvVVRG
MzIiXSA9IHN0cmluZ1RvVVRGMzI7CmZ1bmN0aW9uIGxlbmd0aEJ5dGVzVVRGMzIoc3RyKSB7CiB2
YXIgbGVuID0gMDsKIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgKytpKSB7CiAgdmFy
IGNvZGVVbml0ID0gc3RyLmNoYXJDb2RlQXQoaSk7CiAgaWYgKGNvZGVVbml0ID49IDU1Mjk2ICYm
IGNvZGVVbml0IDw9IDU3MzQzKSArK2k7CiAgbGVuICs9IDQ7CiB9CiByZXR1cm4gbGVuOwp9Ck1v
ZHVsZVsibGVuZ3RoQnl0ZXNVVEYzMiJdID0gbGVuZ3RoQnl0ZXNVVEYzMjsKZnVuY3Rpb24gZGVt
YW5nbGUoZnVuYykgewogdmFyIGhhc0xpYmN4eGFiaSA9ICEhTW9kdWxlWyJfX19jeGFfZGVtYW5n
bGUiXTsKIGlmIChoYXNMaWJjeHhhYmkpIHsKICB0cnkgewogICB2YXIgYnVmID0gX21hbGxvYyhm
dW5jLmxlbmd0aCk7CiAgIHdyaXRlU3RyaW5nVG9NZW1vcnkoZnVuYy5zdWJzdHIoMSksIGJ1Zik7
CiAgIHZhciBzdGF0dXMgPSBfbWFsbG9jKDQpOwogICB2YXIgcmV0ID0gTW9kdWxlWyJfX19jeGFf
ZGVtYW5nbGUiXShidWYsIDAsIDAsIHN0YXR1cyk7CiAgIGlmIChnZXRWYWx1ZShzdGF0dXMsICJp
MzIiKSA9PT0gMCAmJiByZXQpIHsKICAgIHJldHVybiBQb2ludGVyX3N0cmluZ2lmeShyZXQpOwog
ICB9CiAgfSBjYXRjaCAoZSkge30gZmluYWxseSB7CiAgIGlmIChidWYpIF9mcmVlKGJ1Zik7CiAg
IGlmIChzdGF0dXMpIF9mcmVlKHN0YXR1cyk7CiAgIGlmIChyZXQpIF9mcmVlKHJldCk7CiAgfQog
fQogdmFyIGkgPSAzOwogdmFyIGJhc2ljVHlwZXMgPSB7CiAgInYiOiAidm9pZCIsCiAgImIiOiAi
Ym9vbCIsCiAgImMiOiAiY2hhciIsCiAgInMiOiAic2hvcnQiLAogICJpIjogImludCIsCiAgImwi
OiAibG9uZyIsCiAgImYiOiAiZmxvYXQiLAogICJkIjogImRvdWJsZSIsCiAgInciOiAid2NoYXJf
dCIsCiAgImEiOiAic2lnbmVkIGNoYXIiLAogICJoIjogInVuc2lnbmVkIGNoYXIiLAogICJ0Ijog
InVuc2lnbmVkIHNob3J0IiwKICAiaiI6ICJ1bnNpZ25lZCBpbnQiLAogICJtIjogInVuc2lnbmVk
IGxvbmciLAogICJ4IjogImxvbmcgbG9uZyIsCiAgInkiOiAidW5zaWduZWQgbG9uZyBsb25nIiwK
ICAieiI6ICIuLi4iCiB9OwogdmFyIHN1YnMgPSBbXTsKIHZhciBmaXJzdCA9IHRydWU7CiBmdW5j
dGlvbiBkdW1wKHgpIHsKICBpZiAoeCkgTW9kdWxlLnByaW50KHgpOwogIE1vZHVsZS5wcmludChm
dW5jKTsKICB2YXIgcHJlID0gIiI7CiAgZm9yICh2YXIgYSA9IDA7IGEgPCBpOyBhKyspIHByZSAr
PSAiICI7CiAgTW9kdWxlLnByaW50KHByZSArICJeIik7CiB9CiBmdW5jdGlvbiBwYXJzZU5lc3Rl
ZCgpIHsKICBpKys7CiAgaWYgKGZ1bmNbaV0gPT09ICJLIikgaSsrOwogIHZhciBwYXJ0cyA9IFtd
OwogIHdoaWxlIChmdW5jW2ldICE9PSAiRSIpIHsKICAgaWYgKGZ1bmNbaV0gPT09ICJTIikgewog
ICAgaSsrOwogICAgdmFyIG5leHQgPSBmdW5jLmluZGV4T2YoIl8iLCBpKTsKICAgIHZhciBudW0g
PSBmdW5jLnN1YnN0cmluZyhpLCBuZXh0KSB8fCAwOwogICAgcGFydHMucHVzaChzdWJzW251bV0g
fHwgIj8iKTsKICAgIGkgPSBuZXh0ICsgMTsKICAgIGNvbnRpbnVlOwogICB9CiAgIGlmIChmdW5j
W2ldID09PSAiQyIpIHsKICAgIHBhcnRzLnB1c2gocGFydHNbcGFydHMubGVuZ3RoIC0gMV0pOwog
ICAgaSArPSAyOwogICAgY29udGludWU7CiAgIH0KICAgdmFyIHNpemUgPSBwYXJzZUludChmdW5j
LnN1YnN0cihpKSk7CiAgIHZhciBwcmUgPSBzaXplLnRvU3RyaW5nKCkubGVuZ3RoOwogICBpZiAo
IXNpemUgfHwgIXByZSkgewogICAgaS0tOwogICAgYnJlYWs7CiAgIH0KICAgdmFyIGN1cnIgPSBm
dW5jLnN1YnN0cihpICsgcHJlLCBzaXplKTsKICAgcGFydHMucHVzaChjdXJyKTsKICAgc3Vicy5w
dXNoKGN1cnIpOwogICBpICs9IHByZSArIHNpemU7CiAgfQogIGkrKzsKICByZXR1cm4gcGFydHM7
CiB9CiBmdW5jdGlvbiBwYXJzZShyYXdMaXN0LCBsaW1pdCwgYWxsb3dWb2lkKSB7CiAgbGltaXQg
PSBsaW1pdCB8fCBJbmZpbml0eTsKICB2YXIgcmV0ID0gIiIsIGxpc3QgPSBbXTsKICBmdW5jdGlv
biBmbHVzaExpc3QoKSB7CiAgIHJldHVybiAiKCIgKyBsaXN0LmpvaW4oIiwgIikgKyAiKSI7CiAg
fQogIHZhciBuYW1lOwogIGlmIChmdW5jW2ldID09PSAiTiIpIHsKICAgbmFtZSA9IHBhcnNlTmVz
dGVkKCkuam9pbigiOjoiKTsKICAgbGltaXQtLTsKICAgaWYgKGxpbWl0ID09PSAwKSByZXR1cm4g
cmF3TGlzdCA/IFsgbmFtZSBdIDogbmFtZTsKICB9IGVsc2UgewogICBpZiAoZnVuY1tpXSA9PT0g
IksiIHx8IGZpcnN0ICYmIGZ1bmNbaV0gPT09ICJMIikgaSsrOwogICB2YXIgc2l6ZSA9IHBhcnNl
SW50KGZ1bmMuc3Vic3RyKGkpKTsKICAgaWYgKHNpemUpIHsKICAgIHZhciBwcmUgPSBzaXplLnRv
U3RyaW5nKCkubGVuZ3RoOwogICAgbmFtZSA9IGZ1bmMuc3Vic3RyKGkgKyBwcmUsIHNpemUpOwog
ICAgaSArPSBwcmUgKyBzaXplOwogICB9CiAgfQogIGZpcnN0ID0gZmFsc2U7CiAgaWYgKGZ1bmNb
aV0gPT09ICJJIikgewogICBpKys7CiAgIHZhciBpTGlzdCA9IHBhcnNlKHRydWUpOwogICB2YXIg
aVJldCA9IHBhcnNlKHRydWUsIDEsIHRydWUpOwogICByZXQgKz0gaVJldFswXSArICIgIiArIG5h
bWUgKyAiPCIgKyBpTGlzdC5qb2luKCIsICIpICsgIj4iOwogIH0gZWxzZSB7CiAgIHJldCA9IG5h
bWU7CiAgfQogIHBhcmFtTG9vcCA6IHdoaWxlIChpIDwgZnVuYy5sZW5ndGggJiYgbGltaXQtLSA+
IDApIHsKICAgdmFyIGMgPSBmdW5jW2krK107CiAgIGlmIChjIGluIGJhc2ljVHlwZXMpIHsKICAg
IGxpc3QucHVzaChiYXNpY1R5cGVzW2NdKTsKICAgfSBlbHNlIHsKICAgIHN3aXRjaCAoYykgewog
ICAgY2FzZSAiUCI6CiAgICAgbGlzdC5wdXNoKHBhcnNlKHRydWUsIDEsIHRydWUpWzBdICsgIioi
KTsKICAgICBicmVhazsKICAgIGNhc2UgIlIiOgogICAgIGxpc3QucHVzaChwYXJzZSh0cnVlLCAx
LCB0cnVlKVswXSArICImIik7CiAgICAgYnJlYWs7CiAgICBjYXNlICJMIjoKICAgICB7CiAgICAg
IGkrKzsKICAgICAgdmFyIGVuZCA9IGZ1bmMuaW5kZXhPZigiRSIsIGkpOwogICAgICB2YXIgc2l6
ZSA9IGVuZCAtIGk7CiAgICAgIGxpc3QucHVzaChmdW5jLnN1YnN0cihpLCBzaXplKSk7CiAgICAg
IGkgKz0gc2l6ZSArIDI7CiAgICAgIGJyZWFrOwogICAgIH0KICAgIGNhc2UgIkEiOgogICAgIHsK
ICAgICAgdmFyIHNpemUgPSBwYXJzZUludChmdW5jLnN1YnN0cihpKSk7CiAgICAgIGkgKz0gc2l6
ZS50b1N0cmluZygpLmxlbmd0aDsKICAgICAgaWYgKGZ1bmNbaV0gIT09ICJfIikgdGhyb3cgIj8i
OwogICAgICBpKys7CiAgICAgIGxpc3QucHVzaChwYXJzZSh0cnVlLCAxLCB0cnVlKVswXSArICIg
WyIgKyBzaXplICsgIl0iKTsKICAgICAgYnJlYWs7CiAgICAgfQogICAgY2FzZSAiRSI6CiAgICAg
YnJlYWsgcGFyYW1Mb29wOwogICAgZGVmYXVsdDoKICAgICByZXQgKz0gIj8iICsgYzsKICAgICBi
cmVhayBwYXJhbUxvb3A7CiAgICB9CiAgIH0KICB9CiAgaWYgKCFhbGxvd1ZvaWQgJiYgbGlzdC5s
ZW5ndGggPT09IDEgJiYgbGlzdFswXSA9PT0gInZvaWQiKSBsaXN0ID0gW107CiAgaWYgKHJhd0xp
c3QpIHsKICAgaWYgKHJldCkgewogICAgbGlzdC5wdXNoKHJldCArICI/Iik7CiAgIH0KICAgcmV0
dXJuIGxpc3Q7CiAgfSBlbHNlIHsKICAgcmV0dXJuIHJldCArIGZsdXNoTGlzdCgpOwogIH0KIH0K
IHZhciBwYXJzZWQgPSBmdW5jOwogdHJ5IHsKICBpZiAoZnVuYyA9PSAiT2JqZWN0Ll9tYWluIiB8
fCBmdW5jID09ICJfbWFpbiIpIHsKICAgcmV0dXJuICJtYWluKCkiOwogIH0KICBpZiAodHlwZW9m
IGZ1bmMgPT09ICJudW1iZXIiKSBmdW5jID0gUG9pbnRlcl9zdHJpbmdpZnkoZnVuYyk7CiAgaWYg
KGZ1bmNbMF0gIT09ICJfIikgcmV0dXJuIGZ1bmM7CiAgaWYgKGZ1bmNbMV0gIT09ICJfIikgcmV0
dXJuIGZ1bmM7CiAgaWYgKGZ1bmNbMl0gIT09ICJaIikgcmV0dXJuIGZ1bmM7CiAgc3dpdGNoIChm
dW5jWzNdKSB7CiAgY2FzZSAibiI6CiAgIHJldHVybiAib3BlcmF0b3IgbmV3KCkiOwogIGNhc2Ug
ImQiOgogICByZXR1cm4gIm9wZXJhdG9yIGRlbGV0ZSgpIjsKICB9CiAgcGFyc2VkID0gcGFyc2Uo
KTsKIH0gY2F0Y2ggKGUpIHsKICBwYXJzZWQgKz0gIj8iOwogfQogaWYgKHBhcnNlZC5pbmRleE9m
KCI/IikgPj0gMCAmJiAhaGFzTGliY3h4YWJpKSB7CiAgUnVudGltZS53YXJuT25jZSgid2Fybmlu
ZzogYSBwcm9ibGVtIG9jY3VycmVkIGluIGJ1aWx0aW4gQysrIG5hbWUgZGVtYW5nbGluZzsgYnVp
bGQgd2l0aCAgLXMgREVNQU5HTEVfU1VQUE9SVD0xICB0byBsaW5rIGluIGxpYmN4eGFiaSBkZW1h
bmdsaW5nIik7CiB9CiByZXR1cm4gcGFyc2VkOwp9CmZ1bmN0aW9uIGRlbWFuZ2xlQWxsKHRleHQp
IHsKIHJldHVybiB0ZXh0LnJlcGxhY2UoL19fWltcd1xkX10rL2csIChmdW5jdGlvbih4KSB7CiAg
dmFyIHkgPSBkZW1hbmdsZSh4KTsKICByZXR1cm4geCA9PT0geSA/IHggOiB4ICsgIiBbIiArIHkg
KyAiXSI7CiB9KSk7Cn0KZnVuY3Rpb24ganNTdGFja1RyYWNlKCkgewogdmFyIGVyciA9IG5ldyBF
cnJvcjsKIGlmICghZXJyLnN0YWNrKSB7CiAgdHJ5IHsKICAgdGhyb3cgbmV3IEVycm9yKDApOwog
IH0gY2F0Y2ggKGUpIHsKICAgZXJyID0gZTsKICB9CiAgaWYgKCFlcnIuc3RhY2spIHsKICAgcmV0
dXJuICIobm8gc3RhY2sgdHJhY2UgYXZhaWxhYmxlKSI7CiAgfQogfQogcmV0dXJuIGVyci5zdGFj
ay50b1N0cmluZygpOwp9CmZ1bmN0aW9uIHN0YWNrVHJhY2UoKSB7CiByZXR1cm4gZGVtYW5nbGVB
bGwoanNTdGFja1RyYWNlKCkpOwp9Ck1vZHVsZVsic3RhY2tUcmFjZSJdID0gc3RhY2tUcmFjZTsK
dmFyIFBBR0VfU0laRSA9IDQwOTY7CmZ1bmN0aW9uIGFsaWduTWVtb3J5UGFnZSh4KSB7CiBpZiAo
eCAlIDQwOTYgPiAwKSB7CiAgeCArPSA0MDk2IC0geCAlIDQwOTY7CiB9CiByZXR1cm4geDsKfQp2
YXIgSEVBUDsKdmFyIEhFQVA4LCBIRUFQVTgsIEhFQVAxNiwgSEVBUFUxNiwgSEVBUDMyLCBIRUFQ
VTMyLCBIRUFQRjMyLCBIRUFQRjY0Owp2YXIgU1RBVElDX0JBU0UgPSAwLCBTVEFUSUNUT1AgPSAw
LCBzdGF0aWNTZWFsZWQgPSBmYWxzZTsKdmFyIFNUQUNLX0JBU0UgPSAwLCBTVEFDS1RPUCA9IDAs
IFNUQUNLX01BWCA9IDA7CnZhciBEWU5BTUlDX0JBU0UgPSAwLCBEWU5BTUlDVE9QID0gMDsKZnVu
Y3Rpb24gZW5sYXJnZU1lbW9yeSgpIHsKIHZhciBPTERfVE9UQUxfTUVNT1JZID0gVE9UQUxfTUVN
T1JZOwogdmFyIExJTUlUID0gTWF0aC5wb3coMiwgMzEpOwogaWYgKERZTkFNSUNUT1AgPj0gTElN
SVQpIHJldHVybiBmYWxzZTsKIHdoaWxlIChUT1RBTF9NRU1PUlkgPD0gRFlOQU1JQ1RPUCkgewog
IGlmIChUT1RBTF9NRU1PUlkgPCBMSU1JVCAvIDIpIHsKICAgVE9UQUxfTUVNT1JZID0gYWxpZ25N
ZW1vcnlQYWdlKDIgKiBUT1RBTF9NRU1PUlkpOwogIH0gZWxzZSB7CiAgIHZhciBsYXN0ID0gVE9U
QUxfTUVNT1JZOwogICBUT1RBTF9NRU1PUlkgPSBhbGlnbk1lbW9yeVBhZ2UoKDMgKiBUT1RBTF9N
RU1PUlkgKyBMSU1JVCkgLyA0KTsKICAgaWYgKFRPVEFMX01FTU9SWSA8PSBsYXN0KSByZXR1cm4g
ZmFsc2U7CiAgfQogfQogVE9UQUxfTUVNT1JZID0gTWF0aC5tYXgoVE9UQUxfTUVNT1JZLCAxNiAq
IDEwMjQgKiAxMDI0KTsKIGlmIChUT1RBTF9NRU1PUlkgPj0gTElNSVQpIHJldHVybiBmYWxzZTsK
IHRyeSB7CiAgaWYgKEFycmF5QnVmZmVyLnRyYW5zZmVyKSB7CiAgIGJ1ZmZlciA9IEFycmF5QnVm
ZmVyLnRyYW5zZmVyKGJ1ZmZlciwgVE9UQUxfTUVNT1JZKTsKICB9IGVsc2UgewogICB2YXIgb2xk
SEVBUDggPSBIRUFQODsKICAgYnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKFRPVEFMX01FTU9SWSk7
CiAgfQogfSBjYXRjaCAoZSkgewogIHJldHVybiBmYWxzZTsKIH0KIHZhciBzdWNjZXNzID0gX2Vt
c2NyaXB0ZW5fcmVwbGFjZV9tZW1vcnkoYnVmZmVyKTsKIGlmICghc3VjY2VzcykgcmV0dXJuIGZh
bHNlOwogTW9kdWxlWyJidWZmZXIiXSA9IGJ1ZmZlcjsKIE1vZHVsZVsiSEVBUDgiXSA9IEhFQVA4
ID0gbmV3IEludDhBcnJheShidWZmZXIpOwogTW9kdWxlWyJIRUFQMTYiXSA9IEhFQVAxNiA9IG5l
dyBJbnQxNkFycmF5KGJ1ZmZlcik7CiBNb2R1bGVbIkhFQVAzMiJdID0gSEVBUDMyID0gbmV3IElu
dDMyQXJyYXkoYnVmZmVyKTsKIE1vZHVsZVsiSEVBUFU4Il0gPSBIRUFQVTggPSBuZXcgVWludDhB
cnJheShidWZmZXIpOwogTW9kdWxlWyJIRUFQVTE2Il0gPSBIRUFQVTE2ID0gbmV3IFVpbnQxNkFy
cmF5KGJ1ZmZlcik7CiBNb2R1bGVbIkhFQVBVMzIiXSA9IEhFQVBVMzIgPSBuZXcgVWludDMyQXJy
YXkoYnVmZmVyKTsKIE1vZHVsZVsiSEVBUEYzMiJdID0gSEVBUEYzMiA9IG5ldyBGbG9hdDMyQXJy
YXkoYnVmZmVyKTsKIE1vZHVsZVsiSEVBUEY2NCJdID0gSEVBUEY2NCA9IG5ldyBGbG9hdDY0QXJy
YXkoYnVmZmVyKTsKIGlmICghQXJyYXlCdWZmZXIudHJhbnNmZXIpIHsKICBIRUFQOC5zZXQob2xk
SEVBUDgpOwogfQogcmV0dXJuIHRydWU7Cn0KdmFyIGJ5dGVMZW5ndGg7CnRyeSB7CiBieXRlTGVu
Z3RoID0gRnVuY3Rpb24ucHJvdG90eXBlLmNhbGwuYmluZChPYmplY3QuZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKEFycmF5QnVmZmVyLnByb3RvdHlwZSwgImJ5dGVMZW5ndGgiKS5nZXQpOwogYnl0
ZUxlbmd0aChuZXcgQXJyYXlCdWZmZXIoNCkpOwp9IGNhdGNoIChlKSB7CiBieXRlTGVuZ3RoID0g
KGZ1bmN0aW9uKGJ1ZmZlcikgewogIHJldHVybiBidWZmZXIuYnl0ZUxlbmd0aDsKIH0pOwp9CnZh
ciBUT1RBTF9TVEFDSyA9IE1vZHVsZVsiVE9UQUxfU1RBQ0siXSB8fCAxNjc3NzAwMDsKdmFyIFRP
VEFMX01FTU9SWSA9IE1vZHVsZVsiVE9UQUxfTUVNT1JZIl0gfHwgMTY3NzcyMTY7CnZhciB0b3Rh
bE1lbW9yeSA9IDY0ICogMTAyNDsKd2hpbGUgKHRvdGFsTWVtb3J5IDwgVE9UQUxfTUVNT1JZIHx8
IHRvdGFsTWVtb3J5IDwgMiAqIFRPVEFMX1NUQUNLKSB7CiBpZiAodG90YWxNZW1vcnkgPCAxNiAq
IDEwMjQgKiAxMDI0KSB7CiAgdG90YWxNZW1vcnkgKj0gMjsKIH0gZWxzZSB7CiAgdG90YWxNZW1v
cnkgKz0gMTYgKiAxMDI0ICogMTAyNDsKIH0KfQp0b3RhbE1lbW9yeSA9IE1hdGgubWF4KHRvdGFs
TWVtb3J5LCAxNiAqIDEwMjQgKiAxMDI0KTsKaWYgKHRvdGFsTWVtb3J5ICE9PSBUT1RBTF9NRU1P
UlkpIHsKIE1vZHVsZS5wcmludEVycigiaW5jcmVhc2luZyBUT1RBTF9NRU1PUlkgdG8gIiArIHRv
dGFsTWVtb3J5ICsgIiB0byBiZSBjb21wbGlhbnQgd2l0aCB0aGUgYXNtLmpzIHNwZWMgKGFuZCBn
aXZlbiB0aGF0IFRPVEFMX1NUQUNLPSIgKyBUT1RBTF9TVEFDSyArICIpIik7CiBUT1RBTF9NRU1P
UlkgPSB0b3RhbE1lbW9yeTsKfQphc3NlcnQodHlwZW9mIEludDMyQXJyYXkgIT09ICJ1bmRlZmlu
ZWQiICYmIHR5cGVvZiBGbG9hdDY0QXJyYXkgIT09ICJ1bmRlZmluZWQiICYmICEhKG5ldyBJbnQz
MkFycmF5KDEpKVsic3ViYXJyYXkiXSAmJiAhIShuZXcgSW50MzJBcnJheSgxKSlbInNldCJdLCAi
SlMgZW5naW5lIGRvZXMgbm90IHByb3ZpZGUgZnVsbCB0eXBlZCBhcnJheSBzdXBwb3J0Iik7CnZh
ciBidWZmZXI7CmJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcihUT1RBTF9NRU1PUlkpOwpIRUFQOCA9
IG5ldyBJbnQ4QXJyYXkoYnVmZmVyKTsKSEVBUDE2ID0gbmV3IEludDE2QXJyYXkoYnVmZmVyKTsK
SEVBUDMyID0gbmV3IEludDMyQXJyYXkoYnVmZmVyKTsKSEVBUFU4ID0gbmV3IFVpbnQ4QXJyYXko
YnVmZmVyKTsKSEVBUFUxNiA9IG5ldyBVaW50MTZBcnJheShidWZmZXIpOwpIRUFQVTMyID0gbmV3
IFVpbnQzMkFycmF5KGJ1ZmZlcik7CkhFQVBGMzIgPSBuZXcgRmxvYXQzMkFycmF5KGJ1ZmZlcik7
CkhFQVBGNjQgPSBuZXcgRmxvYXQ2NEFycmF5KGJ1ZmZlcik7CkhFQVAzMlswXSA9IDI1NTsKYXNz
ZXJ0KEhFQVBVOFswXSA9PT0gMjU1ICYmIEhFQVBVOFszXSA9PT0gMCwgIlR5cGVkIGFycmF5cyAy
IG11c3QgYmUgcnVuIG9uIGEgbGl0dGxlLWVuZGlhbiBzeXN0ZW0iKTsKTW9kdWxlWyJIRUFQIl0g
PSBIRUFQOwpNb2R1bGVbImJ1ZmZlciJdID0gYnVmZmVyOwpNb2R1bGVbIkhFQVA4Il0gPSBIRUFQ
ODsKTW9kdWxlWyJIRUFQMTYiXSA9IEhFQVAxNjsKTW9kdWxlWyJIRUFQMzIiXSA9IEhFQVAzMjsK
TW9kdWxlWyJIRUFQVTgiXSA9IEhFQVBVODsKTW9kdWxlWyJIRUFQVTE2Il0gPSBIRUFQVTE2OwpN
b2R1bGVbIkhFQVBVMzIiXSA9IEhFQVBVMzI7Ck1vZHVsZVsiSEVBUEYzMiJdID0gSEVBUEYzMjsK
TW9kdWxlWyJIRUFQRjY0Il0gPSBIRUFQRjY0OwpmdW5jdGlvbiBjYWxsUnVudGltZUNhbGxiYWNr
cyhjYWxsYmFja3MpIHsKIHdoaWxlIChjYWxsYmFja3MubGVuZ3RoID4gMCkgewogIHZhciBjYWxs
YmFjayA9IGNhbGxiYWNrcy5zaGlmdCgpOwogIGlmICh0eXBlb2YgY2FsbGJhY2sgPT0gImZ1bmN0
aW9uIikgewogICBjYWxsYmFjaygpOwogICBjb250aW51ZTsKICB9CiAgdmFyIGZ1bmMgPSBjYWxs
YmFjay5mdW5jOwogIGlmICh0eXBlb2YgZnVuYyA9PT0gIm51bWJlciIpIHsKICAgaWYgKGNhbGxi
YWNrLmFyZyA9PT0gdW5kZWZpbmVkKSB7CiAgICBSdW50aW1lLmR5bkNhbGwoInYiLCBmdW5jKTsK
ICAgfSBlbHNlIHsKICAgIFJ1bnRpbWUuZHluQ2FsbCgidmkiLCBmdW5jLCBbIGNhbGxiYWNrLmFy
ZyBdKTsKICAgfQogIH0gZWxzZSB7CiAgIGZ1bmMoY2FsbGJhY2suYXJnID09PSB1bmRlZmluZWQg
PyBudWxsIDogY2FsbGJhY2suYXJnKTsKICB9CiB9Cn0KdmFyIF9fQVRQUkVSVU5fXyA9IFtdOwp2
YXIgX19BVElOSVRfXyA9IFtdOwp2YXIgX19BVE1BSU5fXyA9IFtdOwp2YXIgX19BVEVYSVRfXyA9
IFtdOwp2YXIgX19BVFBPU1RSVU5fXyA9IFtdOwp2YXIgcnVudGltZUluaXRpYWxpemVkID0gZmFs
c2U7CnZhciBydW50aW1lRXhpdGVkID0gZmFsc2U7CmZ1bmN0aW9uIHByZVJ1bigpIHsKIGlmIChN
b2R1bGVbInByZVJ1biJdKSB7CiAgaWYgKHR5cGVvZiBNb2R1bGVbInByZVJ1biJdID09ICJmdW5j
dGlvbiIpIE1vZHVsZVsicHJlUnVuIl0gPSBbIE1vZHVsZVsicHJlUnVuIl0gXTsKICB3aGlsZSAo
TW9kdWxlWyJwcmVSdW4iXS5sZW5ndGgpIHsKICAgYWRkT25QcmVSdW4oTW9kdWxlWyJwcmVSdW4i
XS5zaGlmdCgpKTsKICB9CiB9CiBjYWxsUnVudGltZUNhbGxiYWNrcyhfX0FUUFJFUlVOX18pOwp9
CmZ1bmN0aW9uIGVuc3VyZUluaXRSdW50aW1lKCkgewogaWYgKHJ1bnRpbWVJbml0aWFsaXplZCkg
cmV0dXJuOwogcnVudGltZUluaXRpYWxpemVkID0gdHJ1ZTsKIGNhbGxSdW50aW1lQ2FsbGJhY2tz
KF9fQVRJTklUX18pOwp9CmZ1bmN0aW9uIHByZU1haW4oKSB7CiBjYWxsUnVudGltZUNhbGxiYWNr
cyhfX0FUTUFJTl9fKTsKfQpmdW5jdGlvbiBleGl0UnVudGltZSgpIHsKIGNhbGxSdW50aW1lQ2Fs
bGJhY2tzKF9fQVRFWElUX18pOwogcnVudGltZUV4aXRlZCA9IHRydWU7Cn0KZnVuY3Rpb24gcG9z
dFJ1bigpIHsKIGlmIChNb2R1bGVbInBvc3RSdW4iXSkgewogIGlmICh0eXBlb2YgTW9kdWxlWyJw
b3N0UnVuIl0gPT0gImZ1bmN0aW9uIikgTW9kdWxlWyJwb3N0UnVuIl0gPSBbIE1vZHVsZVsicG9z
dFJ1biJdIF07CiAgd2hpbGUgKE1vZHVsZVsicG9zdFJ1biJdLmxlbmd0aCkgewogICBhZGRPblBv
c3RSdW4oTW9kdWxlWyJwb3N0UnVuIl0uc2hpZnQoKSk7CiAgfQogfQogY2FsbFJ1bnRpbWVDYWxs
YmFja3MoX19BVFBPU1RSVU5fXyk7Cn0KZnVuY3Rpb24gYWRkT25QcmVSdW4oY2IpIHsKIF9fQVRQ
UkVSVU5fXy51bnNoaWZ0KGNiKTsKfQpNb2R1bGVbImFkZE9uUHJlUnVuIl0gPSBhZGRPblByZVJ1
bjsKZnVuY3Rpb24gYWRkT25Jbml0KGNiKSB7CiBfX0FUSU5JVF9fLnVuc2hpZnQoY2IpOwp9Ck1v
ZHVsZVsiYWRkT25Jbml0Il0gPSBhZGRPbkluaXQ7CmZ1bmN0aW9uIGFkZE9uUHJlTWFpbihjYikg
ewogX19BVE1BSU5fXy51bnNoaWZ0KGNiKTsKfQpNb2R1bGVbImFkZE9uUHJlTWFpbiJdID0gYWRk
T25QcmVNYWluOwpmdW5jdGlvbiBhZGRPbkV4aXQoY2IpIHsKIF9fQVRFWElUX18udW5zaGlmdChj
Yik7Cn0KTW9kdWxlWyJhZGRPbkV4aXQiXSA9IGFkZE9uRXhpdDsKZnVuY3Rpb24gYWRkT25Qb3N0
UnVuKGNiKSB7CiBfX0FUUE9TVFJVTl9fLnVuc2hpZnQoY2IpOwp9Ck1vZHVsZVsiYWRkT25Qb3N0
UnVuIl0gPSBhZGRPblBvc3RSdW47CmZ1bmN0aW9uIGludEFycmF5RnJvbVN0cmluZyhzdHJpbmd5
LCBkb250QWRkTnVsbCwgbGVuZ3RoKSB7CiB2YXIgbGVuID0gbGVuZ3RoID4gMCA/IGxlbmd0aCA6
IGxlbmd0aEJ5dGVzVVRGOChzdHJpbmd5KSArIDE7CiB2YXIgdThhcnJheSA9IG5ldyBBcnJheShs
ZW4pOwogdmFyIG51bUJ5dGVzV3JpdHRlbiA9IHN0cmluZ1RvVVRGOEFycmF5KHN0cmluZ3ksIHU4
YXJyYXksIDAsIHU4YXJyYXkubGVuZ3RoKTsKIGlmIChkb250QWRkTnVsbCkgdThhcnJheS5sZW5n
dGggPSBudW1CeXRlc1dyaXR0ZW47CiByZXR1cm4gdThhcnJheTsKfQpNb2R1bGVbImludEFycmF5
RnJvbVN0cmluZyJdID0gaW50QXJyYXlGcm9tU3RyaW5nOwpmdW5jdGlvbiBpbnRBcnJheVRvU3Ry
aW5nKGFycmF5KSB7CiB2YXIgcmV0ID0gW107CiBmb3IgKHZhciBpID0gMDsgaSA8IGFycmF5Lmxl
bmd0aDsgaSsrKSB7CiAgdmFyIGNociA9IGFycmF5W2ldOwogIGlmIChjaHIgPiAyNTUpIHsKICAg
Y2hyICY9IDI1NTsKICB9CiAgcmV0LnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShjaHIpKTsKIH0K
IHJldHVybiByZXQuam9pbigiIik7Cn0KTW9kdWxlWyJpbnRBcnJheVRvU3RyaW5nIl0gPSBpbnRB
cnJheVRvU3RyaW5nOwpmdW5jdGlvbiB3cml0ZVN0cmluZ1RvTWVtb3J5KHN0cmluZywgYnVmZmVy
LCBkb250QWRkTnVsbCkgewogdmFyIGFycmF5ID0gaW50QXJyYXlGcm9tU3RyaW5nKHN0cmluZywg
ZG9udEFkZE51bGwpOwogdmFyIGkgPSAwOwogd2hpbGUgKGkgPCBhcnJheS5sZW5ndGgpIHsKICB2
YXIgY2hyID0gYXJyYXlbaV07CiAgSEVBUDhbYnVmZmVyICsgaSA+PiAwXSA9IGNocjsKICBpID0g
aSArIDE7CiB9Cn0KTW9kdWxlWyJ3cml0ZVN0cmluZ1RvTWVtb3J5Il0gPSB3cml0ZVN0cmluZ1Rv
TWVtb3J5OwpmdW5jdGlvbiB3cml0ZUFycmF5VG9NZW1vcnkoYXJyYXksIGJ1ZmZlcikgewogZm9y
ICh2YXIgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKykgewogIEhFQVA4W2J1ZmZlcisrID4+
IDBdID0gYXJyYXlbaV07CiB9Cn0KTW9kdWxlWyJ3cml0ZUFycmF5VG9NZW1vcnkiXSA9IHdyaXRl
QXJyYXlUb01lbW9yeTsKZnVuY3Rpb24gd3JpdGVBc2NpaVRvTWVtb3J5KHN0ciwgYnVmZmVyLCBk
b250QWRkTnVsbCkgewogZm9yICh2YXIgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyArK2kpIHsKICBI
RUFQOFtidWZmZXIrKyA+PiAwXSA9IHN0ci5jaGFyQ29kZUF0KGkpOwogfQogaWYgKCFkb250QWRk
TnVsbCkgSEVBUDhbYnVmZmVyID4+IDBdID0gMDsKfQpNb2R1bGVbIndyaXRlQXNjaWlUb01lbW9y
eSJdID0gd3JpdGVBc2NpaVRvTWVtb3J5OwpmdW5jdGlvbiB1blNpZ24odmFsdWUsIGJpdHMsIGln
bm9yZSkgewogaWYgKHZhbHVlID49IDApIHsKICByZXR1cm4gdmFsdWU7CiB9CiByZXR1cm4gYml0
cyA8PSAzMiA/IDIgKiBNYXRoLmFicygxIDw8IGJpdHMgLSAxKSArIHZhbHVlIDogTWF0aC5wb3co
MiwgYml0cykgKyB2YWx1ZTsKfQpmdW5jdGlvbiByZVNpZ24odmFsdWUsIGJpdHMsIGlnbm9yZSkg
ewogaWYgKHZhbHVlIDw9IDApIHsKICByZXR1cm4gdmFsdWU7CiB9CiB2YXIgaGFsZiA9IGJpdHMg
PD0gMzIgPyBNYXRoLmFicygxIDw8IGJpdHMgLSAxKSA6IE1hdGgucG93KDIsIGJpdHMgLSAxKTsK
IGlmICh2YWx1ZSA+PSBoYWxmICYmIChiaXRzIDw9IDMyIHx8IHZhbHVlID4gaGFsZikpIHsKICB2
YWx1ZSA9IC0yICogaGFsZiArIHZhbHVlOwogfQogcmV0dXJuIHZhbHVlOwp9CmlmICghTWF0aFsi
aW11bCJdIHx8IE1hdGhbImltdWwiXSg0Mjk0OTY3Mjk1LCA1KSAhPT0gLTUpIE1hdGhbImltdWwi
XSA9IGZ1bmN0aW9uIGltdWwoYSwgYikgewogdmFyIGFoID0gYSA+Pj4gMTY7CiB2YXIgYWwgPSBh
ICYgNjU1MzU7CiB2YXIgYmggPSBiID4+PiAxNjsKIHZhciBibCA9IGIgJiA2NTUzNTsKIHJldHVy
biBhbCAqIGJsICsgKGFoICogYmwgKyBhbCAqIGJoIDw8IDE2KSB8IDA7Cn07Ck1hdGguaW11bCA9
IE1hdGhbImltdWwiXTsKaWYgKCFNYXRoWyJjbHozMiJdKSBNYXRoWyJjbHozMiJdID0gKGZ1bmN0
aW9uKHgpIHsKIHggPSB4ID4+PiAwOwogZm9yICh2YXIgaSA9IDA7IGkgPCAzMjsgaSsrKSB7CiAg
aWYgKHggJiAxIDw8IDMxIC0gaSkgcmV0dXJuIGk7CiB9CiByZXR1cm4gMzI7Cn0pOwpNYXRoLmNs
ejMyID0gTWF0aFsiY2x6MzIiXTsKdmFyIE1hdGhfYWJzID0gTWF0aC5hYnM7CnZhciBNYXRoX2Nv
cyA9IE1hdGguY29zOwp2YXIgTWF0aF9zaW4gPSBNYXRoLnNpbjsKdmFyIE1hdGhfdGFuID0gTWF0
aC50YW47CnZhciBNYXRoX2Fjb3MgPSBNYXRoLmFjb3M7CnZhciBNYXRoX2FzaW4gPSBNYXRoLmFz
aW47CnZhciBNYXRoX2F0YW4gPSBNYXRoLmF0YW47CnZhciBNYXRoX2F0YW4yID0gTWF0aC5hdGFu
MjsKdmFyIE1hdGhfZXhwID0gTWF0aC5leHA7CnZhciBNYXRoX2xvZyA9IE1hdGgubG9nOwp2YXIg
TWF0aF9zcXJ0ID0gTWF0aC5zcXJ0Owp2YXIgTWF0aF9jZWlsID0gTWF0aC5jZWlsOwp2YXIgTWF0
aF9mbG9vciA9IE1hdGguZmxvb3I7CnZhciBNYXRoX3BvdyA9IE1hdGgucG93Owp2YXIgTWF0aF9p
bXVsID0gTWF0aC5pbXVsOwp2YXIgTWF0aF9mcm91bmQgPSBNYXRoLmZyb3VuZDsKdmFyIE1hdGhf
bWluID0gTWF0aC5taW47CnZhciBNYXRoX2NsejMyID0gTWF0aC5jbHozMjsKdmFyIHJ1bkRlcGVu
ZGVuY2llcyA9IDA7CnZhciBydW5EZXBlbmRlbmN5V2F0Y2hlciA9IG51bGw7CnZhciBkZXBlbmRl
bmNpZXNGdWxmaWxsZWQgPSBudWxsOwpmdW5jdGlvbiBnZXRVbmlxdWVSdW5EZXBlbmRlbmN5KGlk
KSB7CiByZXR1cm4gaWQ7Cn0KZnVuY3Rpb24gYWRkUnVuRGVwZW5kZW5jeShpZCkgewogcnVuRGVw
ZW5kZW5jaWVzKys7CiBpZiAoTW9kdWxlWyJtb25pdG9yUnVuRGVwZW5kZW5jaWVzIl0pIHsKICBN
b2R1bGVbIm1vbml0b3JSdW5EZXBlbmRlbmNpZXMiXShydW5EZXBlbmRlbmNpZXMpOwogfQp9Ck1v
ZHVsZVsiYWRkUnVuRGVwZW5kZW5jeSJdID0gYWRkUnVuRGVwZW5kZW5jeTsKZnVuY3Rpb24gcmVt
b3ZlUnVuRGVwZW5kZW5jeShpZCkgewogcnVuRGVwZW5kZW5jaWVzLS07CiBpZiAoTW9kdWxlWyJt
b25pdG9yUnVuRGVwZW5kZW5jaWVzIl0pIHsKICBNb2R1bGVbIm1vbml0b3JSdW5EZXBlbmRlbmNp
ZXMiXShydW5EZXBlbmRlbmNpZXMpOwogfQogaWYgKHJ1bkRlcGVuZGVuY2llcyA9PSAwKSB7CiAg
aWYgKHJ1bkRlcGVuZGVuY3lXYXRjaGVyICE9PSBudWxsKSB7CiAgIGNsZWFySW50ZXJ2YWwocnVu
RGVwZW5kZW5jeVdhdGNoZXIpOwogICBydW5EZXBlbmRlbmN5V2F0Y2hlciA9IG51bGw7CiAgfQog
IGlmIChkZXBlbmRlbmNpZXNGdWxmaWxsZWQpIHsKICAgdmFyIGNhbGxiYWNrID0gZGVwZW5kZW5j
aWVzRnVsZmlsbGVkOwogICBkZXBlbmRlbmNpZXNGdWxmaWxsZWQgPSBudWxsOwogICBjYWxsYmFj
aygpOwogIH0KIH0KfQpNb2R1bGVbInJlbW92ZVJ1bkRlcGVuZGVuY3kiXSA9IHJlbW92ZVJ1bkRl
cGVuZGVuY3k7Ck1vZHVsZVsicHJlbG9hZGVkSW1hZ2VzIl0gPSB7fTsKTW9kdWxlWyJwcmVsb2Fk
ZWRBdWRpb3MiXSA9IHt9Owp2YXIgbWVtb3J5SW5pdGlhbGl6ZXIgPSBudWxsOwp2YXIgQVNNX0NP
TlNUUyA9IFtdOwpTVEFUSUNfQkFTRSA9IDg7ClNUQVRJQ1RPUCA9IFNUQVRJQ19CQVNFICsgNDE3
NjsKX19BVElOSVRfXy5wdXNoKCk7CmFsbG9jYXRlKFsgNDgsIDIsIDAsIDAsIDQ4LCAyLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAyLCAwLCAwLCAwLCA1
NCwgMTAsIDAsIDAsIDAsIDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwLCAyNTUsIDI1NSwgMjU1LCAy
NTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgwLCAxMDIsIDk3LCAx
MTAsIDExMCwgMTA3LCAxMTcsIDk5LCAxMDQsIDEwMSwgMTEwLCA0MCwgMzcsIDEwMCwgNDEsIDMy
LCA2MSwgMzIsIDM3LCAxMDAsIDQ2LCAxMCwgMCwgMzcsIDEwMCwgMCwgODcsIDExNCwgMTExLCAx
MTAsIDEwMywgMzIsIDk3LCAxMTQsIDEwMywgMTE3LCAxMDksIDEwMSwgMTEwLCAxMTYsIDQ2LCAw
LCA4NCwgMzMsIDM0LCAyNSwgMTMsIDEsIDIsIDMsIDE3LCA3NSwgMjgsIDEyLCAxNiwgNCwgMTEs
IDI5LCAxOCwgMzAsIDM5LCAxMDQsIDExMCwgMTExLCAxMTIsIDExMywgOTgsIDMyLCA1LCA2LCAx
NSwgMTksIDIwLCAyMSwgMjYsIDgsIDIyLCA3LCA0MCwgMzYsIDIzLCAyNCwgOSwgMTAsIDE0LCAy
NywgMzEsIDM3LCAzNSwgMTMxLCAxMzAsIDEyNSwgMzgsIDQyLCA0MywgNjAsIDYxLCA2MiwgNjMs
IDY3LCA3MSwgNzQsIDc3LCA4OCwgODksIDkwLCA5MSwgOTIsIDkzLCA5NCwgOTUsIDk2LCA5Nywg
OTksIDEwMCwgMTAxLCAxMDIsIDEwMywgMTA1LCAxMDYsIDEwNywgMTA4LCAxMTQsIDExNSwgMTE2
LCAxMjEsIDEyMiwgMTIzLCAxMjQsIDAsIDczLCAxMDgsIDEwOCwgMTAxLCAxMDMsIDk3LCAxMDgs
IDMyLCA5OCwgMTIxLCAxMTYsIDEwMSwgMzIsIDExNSwgMTAxLCAxMTMsIDExNywgMTAxLCAxMTAs
IDk5LCAxMDEsIDAsIDY4LCAxMTEsIDEwOSwgOTcsIDEwNSwgMTEwLCAzMiwgMTAxLCAxMTQsIDEx
NCwgMTExLCAxMTQsIDAsIDgyLCAxMDEsIDExNSwgMTE3LCAxMDgsIDExNiwgMzIsIDExMCwgMTEx
LCAxMTYsIDMyLCAxMTQsIDEwMSwgMTEyLCAxMTQsIDEwMSwgMTE1LCAxMDEsIDExMCwgMTE2LCA5
NywgOTgsIDEwOCwgMTAxLCAwLCA3OCwgMTExLCAxMTYsIDMyLCA5NywgMzIsIDExNiwgMTE2LCAx
MjEsIDAsIDgwLCAxMDEsIDExNCwgMTA5LCAxMDUsIDExNSwgMTE1LCAxMDUsIDExMSwgMTEwLCAz
MiwgMTAwLCAxMDEsIDExMCwgMTA1LCAxMDEsIDEwMCwgMCwgNzksIDExMiwgMTAxLCAxMTQsIDk3
LCAxMTYsIDEwNSwgMTExLCAxMTAsIDMyLCAxMTAsIDExMSwgMTE2LCAzMiwgMTEyLCAxMDEsIDEx
NCwgMTA5LCAxMDUsIDExNiwgMTE2LCAxMDEsIDEwMCwgMCwgNzgsIDExMSwgMzIsIDExNSwgMTE3
LCA5OSwgMTA0LCAzMiwgMTAyLCAxMDUsIDEwOCwgMTAxLCAzMiwgMTExLCAxMTQsIDMyLCAxMDAs
IDEwNSwgMTE0LCAxMDEsIDk5LCAxMTYsIDExMSwgMTE0LCAxMjEsIDAsIDc4LCAxMTEsIDMyLCAx
MTUsIDExNywgOTksIDEwNCwgMzIsIDExMiwgMTE0LCAxMTEsIDk5LCAxMDEsIDExNSwgMTE1LCAw
LCA3MCwgMTA1LCAxMDgsIDEwMSwgMzIsIDEwMSwgMTIwLCAxMDUsIDExNSwgMTE2LCAxMTUsIDAs
IDg2LCA5NywgMTA4LCAxMTcsIDEwMSwgMzIsIDExNiwgMTExLCAxMTEsIDMyLCAxMDgsIDk3LCAx
MTQsIDEwMywgMTAxLCAzMiwgMTAyLCAxMTEsIDExNCwgMzIsIDEwMCwgOTcsIDExNiwgOTcsIDMy
LCAxMTYsIDEyMSwgMTEyLCAxMDEsIDAsIDc4LCAxMTEsIDMyLCAxMTUsIDExMiwgOTcsIDk5LCAx
MDEsIDMyLCAxMDgsIDEwMSwgMTAyLCAxMTYsIDMyLCAxMTEsIDExMCwgMzIsIDEwMCwgMTAxLCAx
MTgsIDEwNSwgOTksIDEwMSwgMCwgNzksIDExNywgMTE2LCAzMiwgMTExLCAxMDIsIDMyLCAxMDks
IDEwMSwgMTA5LCAxMTEsIDExNCwgMTIxLCAwLCA4MiwgMTAxLCAxMTUsIDExMSwgMTE3LCAxMTQs
IDk5LCAxMDEsIDMyLCA5OCwgMTE3LCAxMTUsIDEyMSwgMCwgNzMsIDExMCwgMTE2LCAxMDEsIDEx
NCwgMTE0LCAxMTcsIDExMiwgMTE2LCAxMDEsIDEwMCwgMzIsIDExNSwgMTIxLCAxMTUsIDExNiwg
MTAxLCAxMDksIDMyLCA5OSwgOTcsIDEwOCwgMTA4LCAwLCA4MiwgMTAxLCAxMTUsIDExMSwgMTE3
LCAxMTQsIDk5LCAxMDEsIDMyLCAxMTYsIDEwMSwgMTA5LCAxMTIsIDExMSwgMTE0LCA5NywgMTE0
LCAxMDUsIDEwOCwgMTIxLCAzMiwgMTE3LCAxMTAsIDk3LCAxMTgsIDk3LCAxMDUsIDEwOCwgOTcs
IDk4LCAxMDgsIDEwMSwgMCwgNzMsIDExMCwgMTE4LCA5NywgMTA4LCAxMDUsIDEwMCwgMzIsIDEx
NSwgMTAxLCAxMDEsIDEwNywgMCwgNjcsIDExNCwgMTExLCAxMTUsIDExNSwgNDUsIDEwMCwgMTAx
LCAxMTgsIDEwNSwgOTksIDEwMSwgMzIsIDEwOCwgMTA1LCAxMTAsIDEwNywgMCwgODIsIDEwMSwg
OTcsIDEwMCwgNDUsIDExMSwgMTEwLCAxMDgsIDEyMSwgMzIsIDEwMiwgMTA1LCAxMDgsIDEwMSwg
MzIsIDExNSwgMTIxLCAxMTUsIDExNiwgMTAxLCAxMDksIDAsIDY4LCAxMDUsIDExNCwgMTAxLCA5
OSwgMTE2LCAxMTEsIDExNCwgMTIxLCAzMiwgMTEwLCAxMTEsIDExNiwgMzIsIDEwMSwgMTA5LCAx
MTIsIDExNiwgMTIxLCAwLCA2NywgMTExLCAxMTAsIDExMCwgMTAxLCA5OSwgMTE2LCAxMDUsIDEx
MSwgMTEwLCAzMiwgMTE0LCAxMDEsIDExNSwgMTAxLCAxMTYsIDMyLCA5OCwgMTIxLCAzMiwgMTEy
LCAxMDEsIDEwMSwgMTE0LCAwLCA3OSwgMTEyLCAxMDEsIDExNCwgOTcsIDExNiwgMTA1LCAxMTEs
IDExMCwgMzIsIDExNiwgMTA1LCAxMDksIDEwMSwgMTAwLCAzMiwgMTExLCAxMTcsIDExNiwgMCwg
NjcsIDExMSwgMTEwLCAxMTAsIDEwMSwgOTksIDExNiwgMTA1LCAxMTEsIDExMCwgMzIsIDExNCwg
MTAxLCAxMDIsIDExNywgMTE1LCAxMDEsIDEwMCwgMCwgNzIsIDExMSwgMTE1LCAxMTYsIDMyLCAx
MDUsIDExNSwgMzIsIDEwMCwgMTExLCAxMTksIDExMCwgMCwgNzIsIDExMSwgMTE1LCAxMTYsIDMy
LCAxMDUsIDExNSwgMzIsIDExNywgMTEwLCAxMTQsIDEwMSwgOTcsIDk5LCAxMDQsIDk3LCA5OCwg
MTA4LCAxMDEsIDAsIDY1LCAxMDAsIDEwMCwgMTE0LCAxMDEsIDExNSwgMTE1LCAzMiwgMTA1LCAx
MTAsIDMyLCAxMTcsIDExNSwgMTAxLCAwLCA2NiwgMTE0LCAxMTEsIDEwNywgMTAxLCAxMTAsIDMy
LCAxMTIsIDEwNSwgMTEyLCAxMDEsIDAsIDczLCA0NywgNzksIDMyLCAxMDEsIDExNCwgMTE0LCAx
MTEsIDExNCwgMCwgNzgsIDExMSwgMzIsIDExNSwgMTE3LCA5OSwgMTA0LCAzMiwgMTAwLCAxMDEs
IDExOCwgMTA1LCA5OSwgMTAxLCAzMiwgMTExLCAxMTQsIDMyLCA5NywgMTAwLCAxMDAsIDExNCwg
MTAxLCAxMTUsIDExNSwgMCwgNjYsIDEwOCwgMTExLCA5OSwgMTA3LCAzMiwgMTAwLCAxMDEsIDEx
OCwgMTA1LCA5OSwgMTAxLCAzMiwgMTE0LCAxMDEsIDExMywgMTE3LCAxMDUsIDExNCwgMTAxLCAx
MDAsIDAsIDc4LCAxMTEsIDMyLCAxMTUsIDExNywgOTksIDEwNCwgMzIsIDEwMCwgMTAxLCAxMTgs
IDEwNSwgOTksIDEwMSwgMCwgNzgsIDExMSwgMTE2LCAzMiwgOTcsIDMyLCAxMDAsIDEwNSwgMTE0
LCAxMDEsIDk5LCAxMTYsIDExMSwgMTE0LCAxMjEsIDAsIDczLCAxMTUsIDMyLCA5NywgMzIsIDEw
MCwgMTA1LCAxMTQsIDEwMSwgOTksIDExNiwgMTExLCAxMTQsIDEyMSwgMCwgODQsIDEwMSwgMTIw
LCAxMTYsIDMyLCAxMDIsIDEwNSwgMTA4LCAxMDEsIDMyLCA5OCwgMTE3LCAxMTUsIDEyMSwgMCwg
NjksIDEyMCwgMTAxLCA5OSwgMzIsIDEwMiwgMTExLCAxMTQsIDEwOSwgOTcsIDExNiwgMzIsIDEw
MSwgMTE0LCAxMTQsIDExMSwgMTE0LCAwLCA3MywgMTEwLCAxMTgsIDk3LCAxMDgsIDEwNSwgMTAw
LCAzMiwgOTcsIDExNCwgMTAzLCAxMTcsIDEwOSwgMTAxLCAxMTAsIDExNiwgMCwgNjUsIDExNCwg
MTAzLCAxMTcsIDEwOSwgMTAxLCAxMTAsIDExNiwgMzIsIDEwOCwgMTA1LCAxMTUsIDExNiwgMzIs
IDExNiwgMTExLCAxMTEsIDMyLCAxMDgsIDExMSwgMTEwLCAxMDMsIDAsIDgzLCAxMjEsIDEwOSwg
OTgsIDExMSwgMTA4LCAxMDUsIDk5LCAzMiwgMTA4LCAxMDUsIDExMCwgMTA3LCAzMiwgMTA4LCAx
MTEsIDExMSwgMTEyLCAwLCA3MCwgMTA1LCAxMDgsIDEwMSwgMTEwLCA5NywgMTA5LCAxMDEsIDMy
LCAxMTYsIDExMSwgMTExLCAzMiwgMTA4LCAxMTEsIDExMCwgMTAzLCAwLCA4NCwgMTExLCAxMTEs
IDMyLCAxMDksIDk3LCAxMTAsIDEyMSwgMzIsIDExMSwgMTEyLCAxMDEsIDExMCwgMzIsIDEwMiwg
MTA1LCAxMDgsIDEwMSwgMTE1LCAzMiwgMTA1LCAxMTAsIDMyLCAxMTUsIDEyMSwgMTE1LCAxMTYs
IDEwMSwgMTA5LCAwLCA3OCwgMTExLCAzMiwgMTAyLCAxMDUsIDEwOCwgMTAxLCAzMiwgMTAwLCAx
MDEsIDExNSwgOTksIDExNCwgMTA1LCAxMTIsIDExNiwgMTExLCAxMTQsIDExNSwgMzIsIDk3LCAx
MTgsIDk3LCAxMDUsIDEwOCwgOTcsIDk4LCAxMDgsIDEwMSwgMCwgNjYsIDk3LCAxMDAsIDMyLCAx
MDIsIDEwNSwgMTA4LCAxMDEsIDMyLCAxMDAsIDEwMSwgMTE1LCA5OSwgMTE0LCAxMDUsIDExMiwg
MTE2LCAxMTEsIDExNCwgMCwgNzgsIDExMSwgMzIsIDk5LCAxMDQsIDEwNSwgMTA4LCAxMDAsIDMy
LCAxMTIsIDExNCwgMTExLCA5OSwgMTAxLCAxMTUsIDExNSwgMCwgNjYsIDk3LCAxMDAsIDMyLCA5
NywgMTAwLCAxMDAsIDExNCwgMTAxLCAxMTUsIDExNSwgMCwgNzAsIDEwNSwgMTA4LCAxMDEsIDMy
LCAxMTYsIDExMSwgMTExLCAzMiwgMTA4LCA5NywgMTE0LCAxMDMsIDEwMSwgMCwgODQsIDExMSwg
MTExLCAzMiwgMTA5LCA5NywgMTEwLCAxMjEsIDMyLCAxMDgsIDEwNSwgMTEwLCAxMDcsIDExNSwg
MCwgNzgsIDExMSwgMzIsIDEwOCwgMTExLCA5OSwgMTA3LCAxMTUsIDMyLCA5NywgMTE4LCA5Nywg
MTA1LCAxMDgsIDk3LCA5OCwgMTA4LCAxMDEsIDAsIDgyLCAxMDEsIDExNSwgMTExLCAxMTcsIDEx
NCwgOTksIDEwMSwgMzIsIDEwMCwgMTAxLCA5NywgMTAwLCAxMDgsIDExMSwgOTksIDEwNywgMzIs
IDExOSwgMTExLCAxMTcsIDEwOCwgMTAwLCAzMiwgMTExLCA5OSwgOTksIDExNywgMTE0LCAwLCA4
MywgMTE2LCA5NywgMTE2LCAxMDEsIDMyLCAxMTAsIDExMSwgMTE2LCAzMiwgMTE0LCAxMDEsIDk5
LCAxMTEsIDExOCwgMTAxLCAxMTQsIDk3LCA5OCwgMTA4LCAxMDEsIDAsIDgwLCAxMTQsIDEwMSwg
MTE4LCAxMDUsIDExMSwgMTE3LCAxMTUsIDMyLCAxMTEsIDExOSwgMTEwLCAxMDEsIDExNCwgMzIs
IDEwMCwgMTA1LCAxMDEsIDEwMCwgMCwgNzksIDExMiwgMTAxLCAxMTQsIDk3LCAxMTYsIDEwNSwg
MTExLCAxMTAsIDMyLCA5OSwgOTcsIDExMCwgOTksIDEwMSwgMTA4LCAxMDEsIDEwMCwgMCwgNzAs
IDExNywgMTEwLCA5OSwgMTE2LCAxMDUsIDExMSwgMTEwLCAzMiwgMTEwLCAxMTEsIDExNiwgMzIs
IDEwNSwgMTA5LCAxMTIsIDEwOCwgMTAxLCAxMDksIDEwMSwgMTEwLCAxMTYsIDEwMSwgMTAwLCAw
LCA3OCwgMTExLCAzMiwgMTA5LCAxMDEsIDExNSwgMTE1LCA5NywgMTAzLCAxMDEsIDMyLCAxMTEs
IDEwMiwgMzIsIDEwMCwgMTAxLCAxMTUsIDEwNSwgMTE0LCAxMDEsIDEwMCwgMzIsIDExNiwgMTIx
LCAxMTIsIDEwMSwgMCwgNzMsIDEwMCwgMTAxLCAxMTAsIDExNiwgMTA1LCAxMDIsIDEwNSwgMTAx
LCAxMTQsIDMyLCAxMTQsIDEwMSwgMTA5LCAxMTEsIDExOCwgMTAxLCAxMDAsIDAsIDY4LCAxMDEs
IDExOCwgMTA1LCA5OSwgMTAxLCAzMiwgMTEwLCAxMTEsIDExNiwgMzIsIDk3LCAzMiwgMTE1LCAx
MTYsIDExNCwgMTAxLCA5NywgMTA5LCAwLCA3OCwgMTExLCAzMiwgMTAwLCA5NywgMTE2LCA5Nywg
MzIsIDk3LCAxMTgsIDk3LCAxMDUsIDEwOCwgOTcsIDk4LCAxMDgsIDEwMSwgMCwgNjgsIDEwMSwg
MTE4LCAxMDUsIDk5LCAxMDEsIDMyLCAxMTYsIDEwNSwgMTA5LCAxMDEsIDExMSwgMTE3LCAxMTYs
IDAsIDc5LCAxMTcsIDExNiwgMzIsIDExMSwgMTAyLCAzMiwgMTE1LCAxMTYsIDExNCwgMTAxLCA5
NywgMTA5LCAxMTUsIDMyLCAxMTQsIDEwMSwgMTE1LCAxMTEsIDExNywgMTE0LCA5OSwgMTAxLCAx
MTUsIDAsIDc2LCAxMDUsIDExMCwgMTA3LCAzMiwgMTA0LCA5NywgMTE1LCAzMiwgOTgsIDEwMSwg
MTAxLCAxMTAsIDMyLCAxMTUsIDEwMSwgMTE4LCAxMDEsIDExNCwgMTAxLCAxMDAsIDAsIDgwLCAx
MTQsIDExMSwgMTE2LCAxMTEsIDk5LCAxMTEsIDEwOCwgMzIsIDEwMSwgMTE0LCAxMTQsIDExMSwg
MTE0LCAwLCA2NiwgOTcsIDEwMCwgMzIsIDEwOSwgMTAxLCAxMTUsIDExNSwgOTcsIDEwMywgMTAx
LCAwLCA3MCwgMTA1LCAxMDgsIDEwMSwgMzIsIDEwMCwgMTAxLCAxMTUsIDk5LCAxMTQsIDEwNSwg
MTEyLCAxMTYsIDExMSwgMTE0LCAzMiwgMTA1LCAxMTAsIDMyLCA5OCwgOTcsIDEwMCwgMzIsIDEx
NSwgMTE2LCA5NywgMTE2LCAxMDEsIDAsIDc4LCAxMTEsIDExNiwgMzIsIDk3LCAzMiwgMTE1LCAx
MTEsIDk5LCAxMDcsIDEwMSwgMTE2LCAwLCA2OCwgMTAxLCAxMTUsIDExNiwgMTA1LCAxMTAsIDk3
LCAxMTYsIDEwNSwgMTExLCAxMTAsIDMyLCA5NywgMTAwLCAxMDAsIDExNCwgMTAxLCAxMTUsIDEx
NSwgMzIsIDExNCwgMTAxLCAxMTMsIDExNywgMTA1LCAxMTQsIDEwMSwgMTAwLCAwLCA3NywgMTAx
LCAxMTUsIDExNSwgOTcsIDEwMywgMTAxLCAzMiwgMTE2LCAxMTEsIDExMSwgMzIsIDEwOCwgOTcs
IDExNCwgMTAzLCAxMDEsIDAsIDgwLCAxMTQsIDExMSwgMTE2LCAxMTEsIDk5LCAxMTEsIDEwOCwg
MzIsIDExOSwgMTE0LCAxMTEsIDExMCwgMTAzLCAzMiwgMTE2LCAxMjEsIDExMiwgMTAxLCAzMiwg
MTAyLCAxMTEsIDExNCwgMzIsIDExNSwgMTExLCA5OSwgMTA3LCAxMDEsIDExNiwgMCwgODAsIDEx
NCwgMTExLCAxMTYsIDExMSwgOTksIDExMSwgMTA4LCAzMiwgMTEwLCAxMTEsIDExNiwgMzIsIDk3
LCAxMTgsIDk3LCAxMDUsIDEwOCwgOTcsIDk4LCAxMDgsIDEwMSwgMCwgODAsIDExNCwgMTExLCAx
MTYsIDExMSwgOTksIDExMSwgMTA4LCAzMiwgMTEwLCAxMTEsIDExNiwgMzIsIDExNSwgMTE3LCAx
MTIsIDExMiwgMTExLCAxMTQsIDExNiwgMTAxLCAxMDAsIDAsIDgzLCAxMTEsIDk5LCAxMDcsIDEw
MSwgMTE2LCAzMiwgMTE2LCAxMjEsIDExMiwgMTAxLCAzMiwgMTEwLCAxMTEsIDExNiwgMzIsIDEx
NSwgMTE3LCAxMTIsIDExMiwgMTExLCAxMTQsIDExNiwgMTAxLCAxMDAsIDAsIDc4LCAxMTEsIDEx
NiwgMzIsIDExNSwgMTE3LCAxMTIsIDExMiwgMTExLCAxMTQsIDExNiwgMTAxLCAxMDAsIDAsIDgw
LCAxMTQsIDExMSwgMTE2LCAxMTEsIDk5LCAxMTEsIDEwOCwgMzIsIDEwMiwgOTcsIDEwOSwgMTA1
LCAxMDgsIDEyMSwgMzIsIDExMCwgMTExLCAxMTYsIDMyLCAxMTUsIDExNywgMTEyLCAxMTIsIDEx
MSwgMTE0LCAxMTYsIDEwMSwgMTAwLCAwLCA2NSwgMTAwLCAxMDAsIDExNCwgMTAxLCAxMTUsIDEx
NSwgMzIsIDEwMiwgOTcsIDEwOSwgMTA1LCAxMDgsIDEyMSwgMzIsIDExMCwgMTExLCAxMTYsIDMy
LCAxMTUsIDExNywgMTEyLCAxMTIsIDExMSwgMTE0LCAxMTYsIDEwMSwgMTAwLCAzMiwgOTgsIDEy
MSwgMzIsIDExMiwgMTE0LCAxMTEsIDExNiwgMTExLCA5OSwgMTExLCAxMDgsIDAsIDY1LCAxMDAs
IDEwMCwgMTE0LCAxMDEsIDExNSwgMTE1LCAzMiwgMTEwLCAxMTEsIDExNiwgMzIsIDk3LCAxMTgs
IDk3LCAxMDUsIDEwOCwgOTcsIDk4LCAxMDgsIDEwMSwgMCwgNzgsIDEwMSwgMTE2LCAxMTksIDEx
MSwgMTE0LCAxMDcsIDMyLCAxMDUsIDExNSwgMzIsIDEwMCwgMTExLCAxMTksIDExMCwgMCwgNzgs
IDEwMSwgMTE2LCAxMTksIDExMSwgMTE0LCAxMDcsIDMyLCAxMTcsIDExMCwgMTE0LCAxMDEsIDk3
LCA5OSwgMTA0LCA5NywgOTgsIDEwOCwgMTAxLCAwLCA2NywgMTExLCAxMTAsIDExMCwgMTAxLCA5
OSwgMTE2LCAxMDUsIDExMSwgMTEwLCAzMiwgMTE0LCAxMDEsIDExNSwgMTAxLCAxMTYsIDMyLCA5
OCwgMTIxLCAzMiwgMTEwLCAxMDEsIDExNiwgMTE5LCAxMTEsIDExNCwgMTA3LCAwLCA2NywgMTEx
LCAxMTAsIDExMCwgMTAxLCA5OSwgMTE2LCAxMDUsIDExMSwgMTEwLCAzMiwgOTcsIDk4LCAxMTEs
IDExNCwgMTE2LCAxMDEsIDEwMCwgMCwgNzgsIDExMSwgMzIsIDk4LCAxMTcsIDEwMiwgMTAyLCAx
MDEsIDExNCwgMzIsIDExNSwgMTEyLCA5NywgOTksIDEwMSwgMzIsIDk3LCAxMTgsIDk3LCAxMDUs
IDEwOCwgOTcsIDk4LCAxMDgsIDEwMSwgMCwgODMsIDExMSwgOTksIDEwNywgMTAxLCAxMTYsIDMy
LCAxMDUsIDExNSwgMzIsIDk5LCAxMTEsIDExMCwgMTEwLCAxMDEsIDk5LCAxMTYsIDEwMSwgMTAw
LCAwLCA4MywgMTExLCA5OSwgMTA3LCAxMDEsIDExNiwgMzIsIDExMCwgMTExLCAxMTYsIDMyLCA5
OSwgMTExLCAxMTAsIDExMCwgMTAxLCA5OSwgMTE2LCAxMDEsIDEwMCwgMCwgNjcsIDk3LCAxMTAs
IDExMCwgMTExLCAxMTYsIDMyLCAxMTUsIDEwMSwgMTEwLCAxMDAsIDMyLCA5NywgMTAyLCAxMTYs
IDEwMSwgMTE0LCAzMiwgMTE1LCAxMTEsIDk5LCAxMDcsIDEwMSwgMTE2LCAzMiwgMTE1LCAxMDQs
IDExNywgMTE2LCAxMDAsIDExMSwgMTE5LCAxMTAsIDAsIDc5LCAxMTIsIDEwMSwgMTE0LCA5Nywg
MTE2LCAxMDUsIDExMSwgMTEwLCAzMiwgOTcsIDEwOCwgMTE0LCAxMDEsIDk3LCAxMDAsIDEyMSwg
MzIsIDEwNSwgMTEwLCAzMiwgMTEyLCAxMTQsIDExMSwgMTAzLCAxMTQsIDEwMSwgMTE1LCAxMTUs
IDAsIDc5LCAxMTIsIDEwMSwgMTE0LCA5NywgMTE2LCAxMDUsIDExMSwgMTEwLCAzMiwgMTA1LCAx
MTAsIDMyLCAxMTIsIDExNCwgMTExLCAxMDMsIDExNCwgMTAxLCAxMTUsIDExNSwgMCwgODMsIDEx
NiwgOTcsIDEwOCwgMTAxLCAzMiwgMTAyLCAxMDUsIDEwOCwgMTAxLCAzMiwgMTA0LCA5NywgMTEw
LCAxMDAsIDEwOCwgMTAxLCAwLCA4MiwgMTAxLCAxMDksIDExMSwgMTE2LCAxMDEsIDMyLCA3Mywg
NDcsIDc5LCAzMiwgMTAxLCAxMTQsIDExNCwgMTExLCAxMTQsIDAsIDgxLCAxMTcsIDExMSwgMTE2
LCA5NywgMzIsIDEwMSwgMTIwLCA5OSwgMTAxLCAxMDEsIDEwMCwgMTAxLCAxMDAsIDAsIDc4LCAx
MTEsIDMyLCAxMDksIDEwMSwgMTAwLCAxMDUsIDExNywgMTA5LCAzMiwgMTAyLCAxMTEsIDExNywg
MTEwLCAxMDAsIDAsIDg3LCAxMTQsIDExMSwgMTEwLCAxMDMsIDMyLCAxMDksIDEwMSwgMTAwLCAx
MDUsIDExNywgMTA5LCAzMiwgMTE2LCAxMjEsIDExMiwgMTAxLCAwLCA3OCwgMTExLCAzMiwgMTAx
LCAxMTQsIDExNCwgMTExLCAxMTQsIDMyLCAxMDUsIDExMCwgMTAyLCAxMTEsIDExNCwgMTA5LCA5
NywgMTE2LCAxMDUsIDExMSwgMTEwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNywgMCwgMTAs
IDAsIDE3LCAxNywgMTcsIDAsIDAsIDAsIDAsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAs
IDAsIDAsIDExLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNywgMCwgMTUsIDEwLCAxNywgMTcs
IDE3LCAzLCAxMCwgNywgMCwgMSwgMTksIDksIDExLCAxMSwgMCwgMCwgOSwgNiwgMTEsIDAsIDAs
IDExLCAwLCA2LCAxNywgMCwgMCwgMCwgMTcsIDE3LCAxNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3
LCAwLCAxMCwgMTAsIDE3LCAxNywgMTcsIDAsIDEwLCAwLCAwLCAyLCAwLCA5LCAxMSwgMCwgMCwg
MCwgOSwgMCwgMTEsIDAsIDAsIDExLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMiwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMTIsIDAsIDAsIDAsIDAsIDEyLCAwLCAwLCAwLCAwLCA5LCAx
MiwgMCwgMCwgMCwgMCwgMCwgMTIsIDAsIDAsIDEyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMsIDAsIDAsIDAsIDQsIDEzLCAwLCAwLCAw
LCAwLCA5LCAxNCwgMCwgMCwgMCwgMCwgMCwgMTQsIDAsIDAsIDE0LCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUsIDAsIDAsIDAsIDAsIDE1
LCAwLCAwLCAwLCAwLCA5LCAxNiwgMCwgMCwgMCwgMCwgMCwgMTYsIDAsIDAsIDE2LCAwLCAwLCAx
OCwgMCwgMCwgMCwgMTgsIDE4LCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDE4
LCAxOCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAxMCwgMCwgMCwgMCwgMCwgMTAsIDAsIDAsIDAsIDAsIDksIDExLCAwLCAwLCAwLCAwLCAwLCAx
MSwgMCwgMCwgMTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAxMiwgMCwgMCwgMCwgMCwgMTIsIDAsIDAsIDAsIDAsIDksIDEyLCAwLCAwLCAw
LCAwLCAwLCAxMiwgMCwgMCwgMTIsIDAsIDAsIDQ4LCA0OSwgNTAsIDUxLCA1MiwgNTMsIDU0LCA1
NSwgNTYsIDU3LCA2NSwgNjYsIDY3LCA2OCwgNjksIDcwLCA0NSwgNDMsIDMyLCAzMiwgMzIsIDQ4
LCA4OCwgNDgsIDEyMCwgMCwgNDAsIDExMCwgMTE3LCAxMDgsIDEwOCwgNDEsIDAsIDQ1LCA0OCwg
ODgsIDQzLCA0OCwgODgsIDMyLCA0OCwgODgsIDQ1LCA0OCwgMTIwLCA0MywgNDgsIDEyMCwgMzIs
IDQ4LCAxMjAsIDAsIDEwNSwgMTEwLCAxMDIsIDAsIDczLCA3OCwgNzAsIDAsIDExMCwgOTcsIDEx
MCwgMCwgNzgsIDY1LCA3OCwgMCwgNDYsIDAgXSwgImk4IiwgQUxMT0NfTk9ORSwgUnVudGltZS5H
TE9CQUxfQkFTRSk7CnZhciB0ZW1wRG91YmxlUHRyID0gUnVudGltZS5hbGlnbk1lbW9yeShhbGxv
Y2F0ZSgxMiwgImk4IiwgQUxMT0NfU1RBVElDKSwgOCk7CmFzc2VydCh0ZW1wRG91YmxlUHRyICUg
OCA9PSAwKTsKZnVuY3Rpb24gY29weVRlbXBGbG9hdChwdHIpIHsKIEhFQVA4W3RlbXBEb3VibGVQ
dHJdID0gSEVBUDhbcHRyXTsKIEhFQVA4W3RlbXBEb3VibGVQdHIgKyAxXSA9IEhFQVA4W3B0ciAr
IDFdOwogSEVBUDhbdGVtcERvdWJsZVB0ciArIDJdID0gSEVBUDhbcHRyICsgMl07CiBIRUFQOFt0
ZW1wRG91YmxlUHRyICsgM10gPSBIRUFQOFtwdHIgKyAzXTsKfQpmdW5jdGlvbiBjb3B5VGVtcERv
dWJsZShwdHIpIHsKIEhFQVA4W3RlbXBEb3VibGVQdHJdID0gSEVBUDhbcHRyXTsKIEhFQVA4W3Rl
bXBEb3VibGVQdHIgKyAxXSA9IEhFQVA4W3B0ciArIDFdOwogSEVBUDhbdGVtcERvdWJsZVB0ciAr
IDJdID0gSEVBUDhbcHRyICsgMl07CiBIRUFQOFt0ZW1wRG91YmxlUHRyICsgM10gPSBIRUFQOFtw
dHIgKyAzXTsKIEhFQVA4W3RlbXBEb3VibGVQdHIgKyA0XSA9IEhFQVA4W3B0ciArIDRdOwogSEVB
UDhbdGVtcERvdWJsZVB0ciArIDVdID0gSEVBUDhbcHRyICsgNV07CiBIRUFQOFt0ZW1wRG91Ymxl
UHRyICsgNl0gPSBIRUFQOFtwdHIgKyA2XTsKIEhFQVA4W3RlbXBEb3VibGVQdHIgKyA3XSA9IEhF
QVA4W3B0ciArIDddOwp9CnZhciBfQkR0b0lIaWdoID0gdHJ1ZTsKTW9kdWxlWyJfaTY0U3VidHJh
Y3QiXSA9IF9pNjRTdWJ0cmFjdDsKTW9kdWxlWyJfaTY0QWRkIl0gPSBfaTY0QWRkOwpmdW5jdGlv
biBfcHRocmVhZF9jbGVhbnVwX3B1c2gocm91dGluZSwgYXJnKSB7CiBfX0FURVhJVF9fLnB1c2go
KGZ1bmN0aW9uKCkgewogIFJ1bnRpbWUuZHluQ2FsbCgidmkiLCByb3V0aW5lLCBbIGFyZyBdKTsK
IH0pKTsKIF9wdGhyZWFkX2NsZWFudXBfcHVzaC5sZXZlbCA9IF9fQVRFWElUX18ubGVuZ3RoOwp9
Ck1vZHVsZVsiX21lbXNldCJdID0gX21lbXNldDsKdmFyIF9CRHRvSUxvdyA9IHRydWU7Ck1vZHVs
ZVsiX2JpdHNoaWZ0NjRMc2hyIl0gPSBfYml0c2hpZnQ2NExzaHI7Ck1vZHVsZVsiX2JpdHNoaWZ0
NjRTaGwiXSA9IF9iaXRzaGlmdDY0U2hsOwpmdW5jdGlvbiBfcHRocmVhZF9jbGVhbnVwX3BvcCgp
IHsKIGFzc2VydChfcHRocmVhZF9jbGVhbnVwX3B1c2gubGV2ZWwgPT0gX19BVEVYSVRfXy5sZW5n
dGgsICJjYW5ub3QgcG9wIGlmIHNvbWV0aGluZyBlbHNlIGFkZGVkIG1lYW53aGlsZSEiKTsKIF9f
QVRFWElUX18ucG9wKCk7CiBfcHRocmVhZF9jbGVhbnVwX3B1c2gubGV2ZWwgPSBfX0FURVhJVF9f
Lmxlbmd0aDsKfQpmdW5jdGlvbiBfYWJvcnQoKSB7CiBNb2R1bGVbImFib3J0Il0oKTsKfQpmdW5j
dGlvbiBfX19sb2NrKCkge30KZnVuY3Rpb24gX19fdW5sb2NrKCkge30KdmFyIEVSUk5PX0NPREVT
ID0gewogRVBFUk06IDEsCiBFTk9FTlQ6IDIsCiBFU1JDSDogMywKIEVJTlRSOiA0LAogRUlPOiA1
LAogRU5YSU86IDYsCiBFMkJJRzogNywKIEVOT0VYRUM6IDgsCiBFQkFERjogOSwKIEVDSElMRDog
MTAsCiBFQUdBSU46IDExLAogRVdPVUxEQkxPQ0s6IDExLAogRU5PTUVNOiAxMiwKIEVBQ0NFUzog
MTMsCiBFRkFVTFQ6IDE0LAogRU5PVEJMSzogMTUsCiBFQlVTWTogMTYsCiBFRVhJU1Q6IDE3LAog
RVhERVY6IDE4LAogRU5PREVWOiAxOSwKIEVOT1RESVI6IDIwLAogRUlTRElSOiAyMSwKIEVJTlZB
TDogMjIsCiBFTkZJTEU6IDIzLAogRU1GSUxFOiAyNCwKIEVOT1RUWTogMjUsCiBFVFhUQlNZOiAy
NiwKIEVGQklHOiAyNywKIEVOT1NQQzogMjgsCiBFU1BJUEU6IDI5LAogRVJPRlM6IDMwLAogRU1M
SU5LOiAzMSwKIEVQSVBFOiAzMiwKIEVET006IDMzLAogRVJBTkdFOiAzNCwKIEVOT01TRzogNDIs
CiBFSURSTTogNDMsCiBFQ0hSTkc6IDQ0LAogRUwyTlNZTkM6IDQ1LAogRUwzSExUOiA0NiwKIEVM
M1JTVDogNDcsCiBFTE5STkc6IDQ4LAogRVVOQVRDSDogNDksCiBFTk9DU0k6IDUwLAogRUwySExU
OiA1MSwKIEVERUFETEs6IDM1LAogRU5PTENLOiAzNywKIEVCQURFOiA1MiwKIEVCQURSOiA1MywK
IEVYRlVMTDogNTQsCiBFTk9BTk86IDU1LAogRUJBRFJRQzogNTYsCiBFQkFEU0xUOiA1NywKIEVE
RUFETE9DSzogMzUsCiBFQkZPTlQ6IDU5LAogRU5PU1RSOiA2MCwKIEVOT0RBVEE6IDYxLAogRVRJ
TUU6IDYyLAogRU5PU1I6IDYzLAogRU5PTkVUOiA2NCwKIEVOT1BLRzogNjUsCiBFUkVNT1RFOiA2
NiwKIEVOT0xJTks6IDY3LAogRUFEVjogNjgsCiBFU1JNTlQ6IDY5LAogRUNPTU06IDcwLAogRVBS
T1RPOiA3MSwKIEVNVUxUSUhPUDogNzIsCiBFRE9URE9UOiA3MywKIEVCQURNU0c6IDc0LAogRU5P
VFVOSVE6IDc2LAogRUJBREZEOiA3NywKIEVSRU1DSEc6IDc4LAogRUxJQkFDQzogNzksCiBFTElC
QkFEOiA4MCwKIEVMSUJTQ046IDgxLAogRUxJQk1BWDogODIsCiBFTElCRVhFQzogODMsCiBFTk9T
WVM6IDM4LAogRU5PVEVNUFRZOiAzOSwKIEVOQU1FVE9PTE9ORzogMzYsCiBFTE9PUDogNDAsCiBF
T1BOT1RTVVBQOiA5NSwKIEVQRk5PU1VQUE9SVDogOTYsCiBFQ09OTlJFU0VUOiAxMDQsCiBFTk9C
VUZTOiAxMDUsCiBFQUZOT1NVUFBPUlQ6IDk3LAogRVBST1RPVFlQRTogOTEsCiBFTk9UU09DSzog
ODgsCiBFTk9QUk9UT09QVDogOTIsCiBFU0hVVERPV046IDEwOCwKIEVDT05OUkVGVVNFRDogMTEx
LAogRUFERFJJTlVTRTogOTgsCiBFQ09OTkFCT1JURUQ6IDEwMywKIEVORVRVTlJFQUNIOiAxMDEs
CiBFTkVURE9XTjogMTAwLAogRVRJTUVET1VUOiAxMTAsCiBFSE9TVERPV046IDExMiwKIEVIT1NU
VU5SRUFDSDogMTEzLAogRUlOUFJPR1JFU1M6IDExNSwKIEVBTFJFQURZOiAxMTQsCiBFREVTVEFE
RFJSRVE6IDg5LAogRU1TR1NJWkU6IDkwLAogRVBST1RPTk9TVVBQT1JUOiA5MywKIEVTT0NLVE5P
U1VQUE9SVDogOTQsCiBFQUREUk5PVEFWQUlMOiA5OSwKIEVORVRSRVNFVDogMTAyLAogRUlTQ09O
TjogMTA2LAogRU5PVENPTk46IDEwNywKIEVUT09NQU5ZUkVGUzogMTA5LAogRVVTRVJTOiA4NywK
IEVEUVVPVDogMTIyLAogRVNUQUxFOiAxMTYsCiBFTk9UU1VQOiA5NSwKIEVOT01FRElVTTogMTIz
LAogRUlMU0VROiA4NCwKIEVPVkVSRkxPVzogNzUsCiBFQ0FOQ0VMRUQ6IDEyNSwKIEVOT1RSRUNP
VkVSQUJMRTogMTMxLAogRU9XTkVSREVBRDogMTMwLAogRVNUUlBJUEU6IDg2Cn07CnZhciBFUlJO
T19NRVNTQUdFUyA9IHsKIDA6ICJTdWNjZXNzIiwKIDE6ICJOb3Qgc3VwZXItdXNlciIsCiAyOiAi
Tm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeSIsCiAzOiAiTm8gc3VjaCBwcm9jZXNzIiwKIDQ6ICJJ
bnRlcnJ1cHRlZCBzeXN0ZW0gY2FsbCIsCiA1OiAiSS9PIGVycm9yIiwKIDY6ICJObyBzdWNoIGRl
dmljZSBvciBhZGRyZXNzIiwKIDc6ICJBcmcgbGlzdCB0b28gbG9uZyIsCiA4OiAiRXhlYyBmb3Jt
YXQgZXJyb3IiLAogOTogIkJhZCBmaWxlIG51bWJlciIsCiAxMDogIk5vIGNoaWxkcmVuIiwKIDEx
OiAiTm8gbW9yZSBwcm9jZXNzZXMiLAogMTI6ICJOb3QgZW5vdWdoIGNvcmUiLAogMTM6ICJQZXJt
aXNzaW9uIGRlbmllZCIsCiAxNDogIkJhZCBhZGRyZXNzIiwKIDE1OiAiQmxvY2sgZGV2aWNlIHJl
cXVpcmVkIiwKIDE2OiAiTW91bnQgZGV2aWNlIGJ1c3kiLAogMTc6ICJGaWxlIGV4aXN0cyIsCiAx
ODogIkNyb3NzLWRldmljZSBsaW5rIiwKIDE5OiAiTm8gc3VjaCBkZXZpY2UiLAogMjA6ICJOb3Qg
YSBkaXJlY3RvcnkiLAogMjE6ICJJcyBhIGRpcmVjdG9yeSIsCiAyMjogIkludmFsaWQgYXJndW1l
bnQiLAogMjM6ICJUb28gbWFueSBvcGVuIGZpbGVzIGluIHN5c3RlbSIsCiAyNDogIlRvbyBtYW55
IG9wZW4gZmlsZXMiLAogMjU6ICJOb3QgYSB0eXBld3JpdGVyIiwKIDI2OiAiVGV4dCBmaWxlIGJ1
c3kiLAogMjc6ICJGaWxlIHRvbyBsYXJnZSIsCiAyODogIk5vIHNwYWNlIGxlZnQgb24gZGV2aWNl
IiwKIDI5OiAiSWxsZWdhbCBzZWVrIiwKIDMwOiAiUmVhZCBvbmx5IGZpbGUgc3lzdGVtIiwKIDMx
OiAiVG9vIG1hbnkgbGlua3MiLAogMzI6ICJCcm9rZW4gcGlwZSIsCiAzMzogIk1hdGggYXJnIG91
dCBvZiBkb21haW4gb2YgZnVuYyIsCiAzNDogIk1hdGggcmVzdWx0IG5vdCByZXByZXNlbnRhYmxl
IiwKIDM1OiAiRmlsZSBsb2NraW5nIGRlYWRsb2NrIGVycm9yIiwKIDM2OiAiRmlsZSBvciBwYXRo
IG5hbWUgdG9vIGxvbmciLAogMzc6ICJObyByZWNvcmQgbG9ja3MgYXZhaWxhYmxlIiwKIDM4OiAi
RnVuY3Rpb24gbm90IGltcGxlbWVudGVkIiwKIDM5OiAiRGlyZWN0b3J5IG5vdCBlbXB0eSIsCiA0
MDogIlRvbyBtYW55IHN5bWJvbGljIGxpbmtzIiwKIDQyOiAiTm8gbWVzc2FnZSBvZiBkZXNpcmVk
IHR5cGUiLAogNDM6ICJJZGVudGlmaWVyIHJlbW92ZWQiLAogNDQ6ICJDaGFubmVsIG51bWJlciBv
dXQgb2YgcmFuZ2UiLAogNDU6ICJMZXZlbCAyIG5vdCBzeW5jaHJvbml6ZWQiLAogNDY6ICJMZXZl
bCAzIGhhbHRlZCIsCiA0NzogIkxldmVsIDMgcmVzZXQiLAogNDg6ICJMaW5rIG51bWJlciBvdXQg
b2YgcmFuZ2UiLAogNDk6ICJQcm90b2NvbCBkcml2ZXIgbm90IGF0dGFjaGVkIiwKIDUwOiAiTm8g
Q1NJIHN0cnVjdHVyZSBhdmFpbGFibGUiLAogNTE6ICJMZXZlbCAyIGhhbHRlZCIsCiA1MjogIklu
dmFsaWQgZXhjaGFuZ2UiLAogNTM6ICJJbnZhbGlkIHJlcXVlc3QgZGVzY3JpcHRvciIsCiA1NDog
IkV4Y2hhbmdlIGZ1bGwiLAogNTU6ICJObyBhbm9kZSIsCiA1NjogIkludmFsaWQgcmVxdWVzdCBj
b2RlIiwKIDU3OiAiSW52YWxpZCBzbG90IiwKIDU5OiAiQmFkIGZvbnQgZmlsZSBmbXQiLAogNjA6
ICJEZXZpY2Ugbm90IGEgc3RyZWFtIiwKIDYxOiAiTm8gZGF0YSAoZm9yIG5vIGRlbGF5IGlvKSIs
CiA2MjogIlRpbWVyIGV4cGlyZWQiLAogNjM6ICJPdXQgb2Ygc3RyZWFtcyByZXNvdXJjZXMiLAog
NjQ6ICJNYWNoaW5lIGlzIG5vdCBvbiB0aGUgbmV0d29yayIsCiA2NTogIlBhY2thZ2Ugbm90IGlu
c3RhbGxlZCIsCiA2NjogIlRoZSBvYmplY3QgaXMgcmVtb3RlIiwKIDY3OiAiVGhlIGxpbmsgaGFz
IGJlZW4gc2V2ZXJlZCIsCiA2ODogIkFkdmVydGlzZSBlcnJvciIsCiA2OTogIlNybW91bnQgZXJy
b3IiLAogNzA6ICJDb21tdW5pY2F0aW9uIGVycm9yIG9uIHNlbmQiLAogNzE6ICJQcm90b2NvbCBl
cnJvciIsCiA3MjogIk11bHRpaG9wIGF0dGVtcHRlZCIsCiA3MzogIkNyb3NzIG1vdW50IHBvaW50
IChub3QgcmVhbGx5IGVycm9yKSIsCiA3NDogIlRyeWluZyB0byByZWFkIHVucmVhZGFibGUgbWVz
c2FnZSIsCiA3NTogIlZhbHVlIHRvbyBsYXJnZSBmb3IgZGVmaW5lZCBkYXRhIHR5cGUiLAogNzY6
ICJHaXZlbiBsb2cuIG5hbWUgbm90IHVuaXF1ZSIsCiA3NzogImYuZC4gaW52YWxpZCBmb3IgdGhp
cyBvcGVyYXRpb24iLAogNzg6ICJSZW1vdGUgYWRkcmVzcyBjaGFuZ2VkIiwKIDc5OiAiQ2FuICAg
YWNjZXNzIGEgbmVlZGVkIHNoYXJlZCBsaWIiLAogODA6ICJBY2Nlc3NpbmcgYSBjb3JydXB0ZWQg
c2hhcmVkIGxpYiIsCiA4MTogIi5saWIgc2VjdGlvbiBpbiBhLm91dCBjb3JydXB0ZWQiLAogODI6
ICJBdHRlbXB0aW5nIHRvIGxpbmsgaW4gdG9vIG1hbnkgbGlicyIsCiA4MzogIkF0dGVtcHRpbmcg
dG8gZXhlYyBhIHNoYXJlZCBsaWJyYXJ5IiwKIDg0OiAiSWxsZWdhbCBieXRlIHNlcXVlbmNlIiwK
IDg2OiAiU3RyZWFtcyBwaXBlIGVycm9yIiwKIDg3OiAiVG9vIG1hbnkgdXNlcnMiLAogODg6ICJT
b2NrZXQgb3BlcmF0aW9uIG9uIG5vbi1zb2NrZXQiLAogODk6ICJEZXN0aW5hdGlvbiBhZGRyZXNz
IHJlcXVpcmVkIiwKIDkwOiAiTWVzc2FnZSB0b28gbG9uZyIsCiA5MTogIlByb3RvY29sIHdyb25n
IHR5cGUgZm9yIHNvY2tldCIsCiA5MjogIlByb3RvY29sIG5vdCBhdmFpbGFibGUiLAogOTM6ICJV
bmtub3duIHByb3RvY29sIiwKIDk0OiAiU29ja2V0IHR5cGUgbm90IHN1cHBvcnRlZCIsCiA5NTog
Ik5vdCBzdXBwb3J0ZWQiLAogOTY6ICJQcm90b2NvbCBmYW1pbHkgbm90IHN1cHBvcnRlZCIsCiA5
NzogIkFkZHJlc3MgZmFtaWx5IG5vdCBzdXBwb3J0ZWQgYnkgcHJvdG9jb2wgZmFtaWx5IiwKIDk4
OiAiQWRkcmVzcyBhbHJlYWR5IGluIHVzZSIsCiA5OTogIkFkZHJlc3Mgbm90IGF2YWlsYWJsZSIs
CiAxMDA6ICJOZXR3b3JrIGludGVyZmFjZSBpcyBub3QgY29uZmlndXJlZCIsCiAxMDE6ICJOZXR3
b3JrIGlzIHVucmVhY2hhYmxlIiwKIDEwMjogIkNvbm5lY3Rpb24gcmVzZXQgYnkgbmV0d29yayIs
CiAxMDM6ICJDb25uZWN0aW9uIGFib3J0ZWQiLAogMTA0OiAiQ29ubmVjdGlvbiByZXNldCBieSBw
ZWVyIiwKIDEwNTogIk5vIGJ1ZmZlciBzcGFjZSBhdmFpbGFibGUiLAogMTA2OiAiU29ja2V0IGlz
IGFscmVhZHkgY29ubmVjdGVkIiwKIDEwNzogIlNvY2tldCBpcyBub3QgY29ubmVjdGVkIiwKIDEw
ODogIkNhbid0IHNlbmQgYWZ0ZXIgc29ja2V0IHNodXRkb3duIiwKIDEwOTogIlRvbyBtYW55IHJl
ZmVyZW5jZXMiLAogMTEwOiAiQ29ubmVjdGlvbiB0aW1lZCBvdXQiLAogMTExOiAiQ29ubmVjdGlv
biByZWZ1c2VkIiwKIDExMjogIkhvc3QgaXMgZG93biIsCiAxMTM6ICJIb3N0IGlzIHVucmVhY2hh
YmxlIiwKIDExNDogIlNvY2tldCBhbHJlYWR5IGNvbm5lY3RlZCIsCiAxMTU6ICJDb25uZWN0aW9u
IGFscmVhZHkgaW4gcHJvZ3Jlc3MiLAogMTE2OiAiU3RhbGUgZmlsZSBoYW5kbGUiLAogMTIyOiAi
UXVvdGEgZXhjZWVkZWQiLAogMTIzOiAiTm8gbWVkaXVtIChpbiB0YXBlIGRyaXZlKSIsCiAxMjU6
ICJPcGVyYXRpb24gY2FuY2VsZWQiLAogMTMwOiAiUHJldmlvdXMgb3duZXIgZGllZCIsCiAxMzE6
ICJTdGF0ZSBub3QgcmVjb3ZlcmFibGUiCn07CmZ1bmN0aW9uIF9fX3NldEVyck5vKHZhbHVlKSB7
CiBpZiAoTW9kdWxlWyJfX19lcnJub19sb2NhdGlvbiJdKSBIRUFQMzJbTW9kdWxlWyJfX19lcnJu
b19sb2NhdGlvbiJdKCkgPj4gMl0gPSB2YWx1ZTsKIHJldHVybiB2YWx1ZTsKfQp2YXIgUEFUSCA9
IHsKIHNwbGl0UGF0aDogKGZ1bmN0aW9uKGZpbGVuYW1lKSB7CiAgdmFyIHNwbGl0UGF0aFJlID0g
L14oXC8/fCkoW1xzXFNdKj8pKCg/OlwuezEsMn18W15cL10rP3wpKFwuW14uXC9dKnwpKSg/Oltc
L10qKSQvOwogIHJldHVybiBzcGxpdFBhdGhSZS5leGVjKGZpbGVuYW1lKS5zbGljZSgxKTsKIH0p
LAogbm9ybWFsaXplQXJyYXk6IChmdW5jdGlvbihwYXJ0cywgYWxsb3dBYm92ZVJvb3QpIHsKICB2
YXIgdXAgPSAwOwogIGZvciAodmFyIGkgPSBwYXJ0cy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkg
ewogICB2YXIgbGFzdCA9IHBhcnRzW2ldOwogICBpZiAobGFzdCA9PT0gIi4iKSB7CiAgICBwYXJ0
cy5zcGxpY2UoaSwgMSk7CiAgIH0gZWxzZSBpZiAobGFzdCA9PT0gIi4uIikgewogICAgcGFydHMu
c3BsaWNlKGksIDEpOwogICAgdXArKzsKICAgfSBlbHNlIGlmICh1cCkgewogICAgcGFydHMuc3Bs
aWNlKGksIDEpOwogICAgdXAtLTsKICAgfQogIH0KICBpZiAoYWxsb3dBYm92ZVJvb3QpIHsKICAg
Zm9yICg7IHVwLS07IHVwKSB7CiAgICBwYXJ0cy51bnNoaWZ0KCIuLiIpOwogICB9CiAgfQogIHJl
dHVybiBwYXJ0czsKIH0pLAogbm9ybWFsaXplOiAoZnVuY3Rpb24ocGF0aCkgewogIHZhciBpc0Fi
c29sdXRlID0gcGF0aC5jaGFyQXQoMCkgPT09ICIvIiwgdHJhaWxpbmdTbGFzaCA9IHBhdGguc3Vi
c3RyKC0xKSA9PT0gIi8iOwogIHBhdGggPSBQQVRILm5vcm1hbGl6ZUFycmF5KHBhdGguc3BsaXQo
Ii8iKS5maWx0ZXIoKGZ1bmN0aW9uKHApIHsKICAgcmV0dXJuICEhcDsKICB9KSksICFpc0Fic29s
dXRlKS5qb2luKCIvIik7CiAgaWYgKCFwYXRoICYmICFpc0Fic29sdXRlKSB7CiAgIHBhdGggPSAi
LiI7CiAgfQogIGlmIChwYXRoICYmIHRyYWlsaW5nU2xhc2gpIHsKICAgcGF0aCArPSAiLyI7CiAg
fQogIHJldHVybiAoaXNBYnNvbHV0ZSA/ICIvIiA6ICIiKSArIHBhdGg7CiB9KSwKIGRpcm5hbWU6
IChmdW5jdGlvbihwYXRoKSB7CiAgdmFyIHJlc3VsdCA9IFBBVEguc3BsaXRQYXRoKHBhdGgpLCBy
b290ID0gcmVzdWx0WzBdLCBkaXIgPSByZXN1bHRbMV07CiAgaWYgKCFyb290ICYmICFkaXIpIHsK
ICAgcmV0dXJuICIuIjsKICB9CiAgaWYgKGRpcikgewogICBkaXIgPSBkaXIuc3Vic3RyKDAsIGRp
ci5sZW5ndGggLSAxKTsKICB9CiAgcmV0dXJuIHJvb3QgKyBkaXI7CiB9KSwKIGJhc2VuYW1lOiAo
ZnVuY3Rpb24ocGF0aCkgewogIGlmIChwYXRoID09PSAiLyIpIHJldHVybiAiLyI7CiAgdmFyIGxh
c3RTbGFzaCA9IHBhdGgubGFzdEluZGV4T2YoIi8iKTsKICBpZiAobGFzdFNsYXNoID09PSAtMSkg
cmV0dXJuIHBhdGg7CiAgcmV0dXJuIHBhdGguc3Vic3RyKGxhc3RTbGFzaCArIDEpOwogfSksCiBl
eHRuYW1lOiAoZnVuY3Rpb24ocGF0aCkgewogIHJldHVybiBQQVRILnNwbGl0UGF0aChwYXRoKVsz
XTsKIH0pLAogam9pbjogKGZ1bmN0aW9uKCkgewogIHZhciBwYXRocyA9IEFycmF5LnByb3RvdHlw
ZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCk7CiAgcmV0dXJuIFBBVEgubm9ybWFsaXplKHBhdGhz
LmpvaW4oIi8iKSk7CiB9KSwKIGpvaW4yOiAoZnVuY3Rpb24obCwgcikgewogIHJldHVybiBQQVRI
Lm5vcm1hbGl6ZShsICsgIi8iICsgcik7CiB9KSwKIHJlc29sdmU6IChmdW5jdGlvbigpIHsKICB2
YXIgcmVzb2x2ZWRQYXRoID0gIiIsIHJlc29sdmVkQWJzb2x1dGUgPSBmYWxzZTsKICBmb3IgKHZh
ciBpID0gYXJndW1lbnRzLmxlbmd0aCAtIDE7IGkgPj0gLTEgJiYgIXJlc29sdmVkQWJzb2x1dGU7
IGktLSkgewogICB2YXIgcGF0aCA9IGkgPj0gMCA/IGFyZ3VtZW50c1tpXSA6IEZTLmN3ZCgpOwog
ICBpZiAodHlwZW9mIHBhdGggIT09ICJzdHJpbmciKSB7CiAgICB0aHJvdyBuZXcgVHlwZUVycm9y
KCJBcmd1bWVudHMgdG8gcGF0aC5yZXNvbHZlIG11c3QgYmUgc3RyaW5ncyIpOwogICB9IGVsc2Ug
aWYgKCFwYXRoKSB7CiAgICByZXR1cm4gIiI7CiAgIH0KICAgcmVzb2x2ZWRQYXRoID0gcGF0aCAr
ICIvIiArIHJlc29sdmVkUGF0aDsKICAgcmVzb2x2ZWRBYnNvbHV0ZSA9IHBhdGguY2hhckF0KDAp
ID09PSAiLyI7CiAgfQogIHJlc29sdmVkUGF0aCA9IFBBVEgubm9ybWFsaXplQXJyYXkocmVzb2x2
ZWRQYXRoLnNwbGl0KCIvIikuZmlsdGVyKChmdW5jdGlvbihwKSB7CiAgIHJldHVybiAhIXA7CiAg
fSkpLCAhcmVzb2x2ZWRBYnNvbHV0ZSkuam9pbigiLyIpOwogIHJldHVybiAocmVzb2x2ZWRBYnNv
bHV0ZSA/ICIvIiA6ICIiKSArIHJlc29sdmVkUGF0aCB8fCAiLiI7CiB9KSwKIHJlbGF0aXZlOiAo
ZnVuY3Rpb24oZnJvbSwgdG8pIHsKICBmcm9tID0gUEFUSC5yZXNvbHZlKGZyb20pLnN1YnN0cigx
KTsKICB0byA9IFBBVEgucmVzb2x2ZSh0bykuc3Vic3RyKDEpOwogIGZ1bmN0aW9uIHRyaW0oYXJy
KSB7CiAgIHZhciBzdGFydCA9IDA7CiAgIGZvciAoOyBzdGFydCA8IGFyci5sZW5ndGg7IHN0YXJ0
KyspIHsKICAgIGlmIChhcnJbc3RhcnRdICE9PSAiIikgYnJlYWs7CiAgIH0KICAgdmFyIGVuZCA9
IGFyci5sZW5ndGggLSAxOwogICBmb3IgKDsgZW5kID49IDA7IGVuZC0tKSB7CiAgICBpZiAoYXJy
W2VuZF0gIT09ICIiKSBicmVhazsKICAgfQogICBpZiAoc3RhcnQgPiBlbmQpIHJldHVybiBbXTsK
ICAgcmV0dXJuIGFyci5zbGljZShzdGFydCwgZW5kIC0gc3RhcnQgKyAxKTsKICB9CiAgdmFyIGZy
b21QYXJ0cyA9IHRyaW0oZnJvbS5zcGxpdCgiLyIpKTsKICB2YXIgdG9QYXJ0cyA9IHRyaW0odG8u
c3BsaXQoIi8iKSk7CiAgdmFyIGxlbmd0aCA9IE1hdGgubWluKGZyb21QYXJ0cy5sZW5ndGgsIHRv
UGFydHMubGVuZ3RoKTsKICB2YXIgc2FtZVBhcnRzTGVuZ3RoID0gbGVuZ3RoOwogIGZvciAodmFy
IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKICAgaWYgKGZyb21QYXJ0c1tpXSAhPT0gdG9QYXJ0
c1tpXSkgewogICAgc2FtZVBhcnRzTGVuZ3RoID0gaTsKICAgIGJyZWFrOwogICB9CiAgfQogIHZh
ciBvdXRwdXRQYXJ0cyA9IFtdOwogIGZvciAodmFyIGkgPSBzYW1lUGFydHNMZW5ndGg7IGkgPCBm
cm9tUGFydHMubGVuZ3RoOyBpKyspIHsKICAgb3V0cHV0UGFydHMucHVzaCgiLi4iKTsKICB9CiAg
b3V0cHV0UGFydHMgPSBvdXRwdXRQYXJ0cy5jb25jYXQodG9QYXJ0cy5zbGljZShzYW1lUGFydHNM
ZW5ndGgpKTsKICByZXR1cm4gb3V0cHV0UGFydHMuam9pbigiLyIpOwogfSkKfTsKdmFyIFRUWSA9
IHsKIHR0eXM6IFtdLAogaW5pdDogKGZ1bmN0aW9uKCkge30pLAogc2h1dGRvd246IChmdW5jdGlv
bigpIHt9KSwKIHJlZ2lzdGVyOiAoZnVuY3Rpb24oZGV2LCBvcHMpIHsKICBUVFkudHR5c1tkZXZd
ID0gewogICBpbnB1dDogW10sCiAgIG91dHB1dDogW10sCiAgIG9wczogb3BzCiAgfTsKICBGUy5y
ZWdpc3RlckRldmljZShkZXYsIFRUWS5zdHJlYW1fb3BzKTsKIH0pLAogc3RyZWFtX29wczogewog
IG9wZW46IChmdW5jdGlvbihzdHJlYW0pIHsKICAgdmFyIHR0eSA9IFRUWS50dHlzW3N0cmVhbS5u
b2RlLnJkZXZdOwogICBpZiAoIXR0eSkgewogICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJS
Tk9fQ09ERVMuRU5PREVWKTsKICAgfQogICBzdHJlYW0udHR5ID0gdHR5OwogICBzdHJlYW0uc2Vl
a2FibGUgPSBmYWxzZTsKICB9KSwKICBjbG9zZTogKGZ1bmN0aW9uKHN0cmVhbSkgewogICBzdHJl
YW0udHR5Lm9wcy5mbHVzaChzdHJlYW0udHR5KTsKICB9KSwKICBmbHVzaDogKGZ1bmN0aW9uKHN0
cmVhbSkgewogICBzdHJlYW0udHR5Lm9wcy5mbHVzaChzdHJlYW0udHR5KTsKICB9KSwKICByZWFk
OiAoZnVuY3Rpb24oc3RyZWFtLCBidWZmZXIsIG9mZnNldCwgbGVuZ3RoLCBwb3MpIHsKICAgaWYg
KCFzdHJlYW0udHR5IHx8ICFzdHJlYW0udHR5Lm9wcy5nZXRfY2hhcikgewogICAgdGhyb3cgbmV3
IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRU5YSU8pOwogICB9CiAgIHZhciBieXRlc1JlYWQg
PSAwOwogICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CiAgICB2YXIgcmVzdWx0
OwogICAgdHJ5IHsKICAgICByZXN1bHQgPSBzdHJlYW0udHR5Lm9wcy5nZXRfY2hhcihzdHJlYW0u
dHR5KTsKICAgIH0gY2F0Y2ggKGUpIHsKICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJO
T19DT0RFUy5FSU8pOwogICAgfQogICAgaWYgKHJlc3VsdCA9PT0gdW5kZWZpbmVkICYmIGJ5dGVz
UmVhZCA9PT0gMCkgewogICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVB
R0FJTik7CiAgICB9CiAgICBpZiAocmVzdWx0ID09PSBudWxsIHx8IHJlc3VsdCA9PT0gdW5kZWZp
bmVkKSBicmVhazsKICAgIGJ5dGVzUmVhZCsrOwogICAgYnVmZmVyW29mZnNldCArIGldID0gcmVz
dWx0OwogICB9CiAgIGlmIChieXRlc1JlYWQpIHsKICAgIHN0cmVhbS5ub2RlLnRpbWVzdGFtcCA9
IERhdGUubm93KCk7CiAgIH0KICAgcmV0dXJuIGJ5dGVzUmVhZDsKICB9KSwKICB3cml0ZTogKGZ1
bmN0aW9uKHN0cmVhbSwgYnVmZmVyLCBvZmZzZXQsIGxlbmd0aCwgcG9zKSB7CiAgIGlmICghc3Ry
ZWFtLnR0eSB8fCAhc3RyZWFtLnR0eS5vcHMucHV0X2NoYXIpIHsKICAgIHRocm93IG5ldyBGUy5F
cnJub0Vycm9yKEVSUk5PX0NPREVTLkVOWElPKTsKICAgfQogICBmb3IgKHZhciBpID0gMDsgaSA8
IGxlbmd0aDsgaSsrKSB7CiAgICB0cnkgewogICAgIHN0cmVhbS50dHkub3BzLnB1dF9jaGFyKHN0
cmVhbS50dHksIGJ1ZmZlcltvZmZzZXQgKyBpXSk7CiAgICB9IGNhdGNoIChlKSB7CiAgICAgdGhy
b3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUlPKTsKICAgIH0KICAgfQogICBpZiAo
bGVuZ3RoKSB7CiAgICBzdHJlYW0ubm9kZS50aW1lc3RhbXAgPSBEYXRlLm5vdygpOwogICB9CiAg
IHJldHVybiBpOwogIH0pCiB9LAogZGVmYXVsdF90dHlfb3BzOiB7CiAgZ2V0X2NoYXI6IChmdW5j
dGlvbih0dHkpIHsKICAgaWYgKCF0dHkuaW5wdXQubGVuZ3RoKSB7CiAgICB2YXIgcmVzdWx0ID0g
bnVsbDsKICAgIGlmIChFTlZJUk9OTUVOVF9JU19OT0RFKSB7CiAgICAgdmFyIEJVRlNJWkUgPSAy
NTY7CiAgICAgdmFyIGJ1ZiA9IG5ldyBCdWZmZXIoQlVGU0laRSk7CiAgICAgdmFyIGJ5dGVzUmVh
ZCA9IDA7CiAgICAgdmFyIGZkID0gcHJvY2Vzcy5zdGRpbi5mZDsKICAgICB2YXIgdXNpbmdEZXZp
Y2UgPSBmYWxzZTsKICAgICB0cnkgewogICAgICBmZCA9IGZzLm9wZW5TeW5jKCIvZGV2L3N0ZGlu
IiwgInIiKTsKICAgICAgdXNpbmdEZXZpY2UgPSB0cnVlOwogICAgIH0gY2F0Y2ggKGUpIHt9CiAg
ICAgYnl0ZXNSZWFkID0gZnMucmVhZFN5bmMoZmQsIGJ1ZiwgMCwgQlVGU0laRSwgbnVsbCk7CiAg
ICAgaWYgKHVzaW5nRGV2aWNlKSB7CiAgICAgIGZzLmNsb3NlU3luYyhmZCk7CiAgICAgfQogICAg
IGlmIChieXRlc1JlYWQgPiAwKSB7CiAgICAgIHJlc3VsdCA9IGJ1Zi5zbGljZSgwLCBieXRlc1Jl
YWQpLnRvU3RyaW5nKCJ1dGYtOCIpOwogICAgIH0gZWxzZSB7CiAgICAgIHJlc3VsdCA9IG51bGw7
CiAgICAgfQogICAgfSBlbHNlIGlmICh0eXBlb2Ygd2luZG93ICE9ICJ1bmRlZmluZWQiICYmIHR5
cGVvZiB3aW5kb3cucHJvbXB0ID09ICJmdW5jdGlvbiIpIHsKICAgICByZXN1bHQgPSB3aW5kb3cu
cHJvbXB0KCJJbnB1dDogIik7CiAgICAgaWYgKHJlc3VsdCAhPT0gbnVsbCkgewogICAgICByZXN1
bHQgKz0gIlxuIjsKICAgICB9CiAgICB9IGVsc2UgaWYgKHR5cGVvZiByZWFkbGluZSA9PSAiZnVu
Y3Rpb24iKSB7CiAgICAgcmVzdWx0ID0gcmVhZGxpbmUoKTsKICAgICBpZiAocmVzdWx0ICE9PSBu
dWxsKSB7CiAgICAgIHJlc3VsdCArPSAiXG4iOwogICAgIH0KICAgIH0KICAgIGlmICghcmVzdWx0
KSB7CiAgICAgcmV0dXJuIG51bGw7CiAgICB9CiAgICB0dHkuaW5wdXQgPSBpbnRBcnJheUZyb21T
dHJpbmcocmVzdWx0LCB0cnVlKTsKICAgfQogICByZXR1cm4gdHR5LmlucHV0LnNoaWZ0KCk7CiAg
fSksCiAgcHV0X2NoYXI6IChmdW5jdGlvbih0dHksIHZhbCkgewogICBpZiAodmFsID09PSBudWxs
IHx8IHZhbCA9PT0gMTApIHsKICAgIE1vZHVsZVsicHJpbnQiXShVVEY4QXJyYXlUb1N0cmluZyh0
dHkub3V0cHV0LCAwKSk7CiAgICB0dHkub3V0cHV0ID0gW107CiAgIH0gZWxzZSB7CiAgICBpZiAo
dmFsICE9IDApIHR0eS5vdXRwdXQucHVzaCh2YWwpOwogICB9CiAgfSksCiAgZmx1c2g6IChmdW5j
dGlvbih0dHkpIHsKICAgaWYgKHR0eS5vdXRwdXQgJiYgdHR5Lm91dHB1dC5sZW5ndGggPiAwKSB7
CiAgICBNb2R1bGVbInByaW50Il0oVVRGOEFycmF5VG9TdHJpbmcodHR5Lm91dHB1dCwgMCkpOwog
ICAgdHR5Lm91dHB1dCA9IFtdOwogICB9CiAgfSkKIH0sCiBkZWZhdWx0X3R0eTFfb3BzOiB7CiAg
cHV0X2NoYXI6IChmdW5jdGlvbih0dHksIHZhbCkgewogICBpZiAodmFsID09PSBudWxsIHx8IHZh
bCA9PT0gMTApIHsKICAgIE1vZHVsZVsicHJpbnRFcnIiXShVVEY4QXJyYXlUb1N0cmluZyh0dHku
b3V0cHV0LCAwKSk7CiAgICB0dHkub3V0cHV0ID0gW107CiAgIH0gZWxzZSB7CiAgICBpZiAodmFs
ICE9IDApIHR0eS5vdXRwdXQucHVzaCh2YWwpOwogICB9CiAgfSksCiAgZmx1c2g6IChmdW5jdGlv
bih0dHkpIHsKICAgaWYgKHR0eS5vdXRwdXQgJiYgdHR5Lm91dHB1dC5sZW5ndGggPiAwKSB7CiAg
ICBNb2R1bGVbInByaW50RXJyIl0oVVRGOEFycmF5VG9TdHJpbmcodHR5Lm91dHB1dCwgMCkpOwog
ICAgdHR5Lm91dHB1dCA9IFtdOwogICB9CiAgfSkKIH0KfTsKdmFyIE1FTUZTID0gewogb3BzX3Rh
YmxlOiBudWxsLAogbW91bnQ6IChmdW5jdGlvbihtb3VudCkgewogIHJldHVybiBNRU1GUy5jcmVh
dGVOb2RlKG51bGwsICIvIiwgMTYzODQgfCA1MTEsIDApOwogfSksCiBjcmVhdGVOb2RlOiAoZnVu
Y3Rpb24ocGFyZW50LCBuYW1lLCBtb2RlLCBkZXYpIHsKICBpZiAoRlMuaXNCbGtkZXYobW9kZSkg
fHwgRlMuaXNGSUZPKG1vZGUpKSB7CiAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NP
REVTLkVQRVJNKTsKICB9CiAgaWYgKCFNRU1GUy5vcHNfdGFibGUpIHsKICAgTUVNRlMub3BzX3Rh
YmxlID0gewogICAgZGlyOiB7CiAgICAgbm9kZTogewogICAgICBnZXRhdHRyOiBNRU1GUy5ub2Rl
X29wcy5nZXRhdHRyLAogICAgICBzZXRhdHRyOiBNRU1GUy5ub2RlX29wcy5zZXRhdHRyLAogICAg
ICBsb29rdXA6IE1FTUZTLm5vZGVfb3BzLmxvb2t1cCwKICAgICAgbWtub2Q6IE1FTUZTLm5vZGVf
b3BzLm1rbm9kLAogICAgICByZW5hbWU6IE1FTUZTLm5vZGVfb3BzLnJlbmFtZSwKICAgICAgdW5s
aW5rOiBNRU1GUy5ub2RlX29wcy51bmxpbmssCiAgICAgIHJtZGlyOiBNRU1GUy5ub2RlX29wcy5y
bWRpciwKICAgICAgcmVhZGRpcjogTUVNRlMubm9kZV9vcHMucmVhZGRpciwKICAgICAgc3ltbGlu
azogTUVNRlMubm9kZV9vcHMuc3ltbGluawogICAgIH0sCiAgICAgc3RyZWFtOiB7CiAgICAgIGxs
c2VlazogTUVNRlMuc3RyZWFtX29wcy5sbHNlZWsKICAgICB9CiAgICB9LAogICAgZmlsZTogewog
ICAgIG5vZGU6IHsKICAgICAgZ2V0YXR0cjogTUVNRlMubm9kZV9vcHMuZ2V0YXR0ciwKICAgICAg
c2V0YXR0cjogTUVNRlMubm9kZV9vcHMuc2V0YXR0cgogICAgIH0sCiAgICAgc3RyZWFtOiB7CiAg
ICAgIGxsc2VlazogTUVNRlMuc3RyZWFtX29wcy5sbHNlZWssCiAgICAgIHJlYWQ6IE1FTUZTLnN0
cmVhbV9vcHMucmVhZCwKICAgICAgd3JpdGU6IE1FTUZTLnN0cmVhbV9vcHMud3JpdGUsCiAgICAg
IGFsbG9jYXRlOiBNRU1GUy5zdHJlYW1fb3BzLmFsbG9jYXRlLAogICAgICBtbWFwOiBNRU1GUy5z
dHJlYW1fb3BzLm1tYXAsCiAgICAgIG1zeW5jOiBNRU1GUy5zdHJlYW1fb3BzLm1zeW5jCiAgICAg
fQogICAgfSwKICAgIGxpbms6IHsKICAgICBub2RlOiB7CiAgICAgIGdldGF0dHI6IE1FTUZTLm5v
ZGVfb3BzLmdldGF0dHIsCiAgICAgIHNldGF0dHI6IE1FTUZTLm5vZGVfb3BzLnNldGF0dHIsCiAg
ICAgIHJlYWRsaW5rOiBNRU1GUy5ub2RlX29wcy5yZWFkbGluawogICAgIH0sCiAgICAgc3RyZWFt
OiB7fQogICAgfSwKICAgIGNocmRldjogewogICAgIG5vZGU6IHsKICAgICAgZ2V0YXR0cjogTUVN
RlMubm9kZV9vcHMuZ2V0YXR0ciwKICAgICAgc2V0YXR0cjogTUVNRlMubm9kZV9vcHMuc2V0YXR0
cgogICAgIH0sCiAgICAgc3RyZWFtOiBGUy5jaHJkZXZfc3RyZWFtX29wcwogICAgfQogICB9Owog
IH0KICB2YXIgbm9kZSA9IEZTLmNyZWF0ZU5vZGUocGFyZW50LCBuYW1lLCBtb2RlLCBkZXYpOwog
IGlmIChGUy5pc0Rpcihub2RlLm1vZGUpKSB7CiAgIG5vZGUubm9kZV9vcHMgPSBNRU1GUy5vcHNf
dGFibGUuZGlyLm5vZGU7CiAgIG5vZGUuc3RyZWFtX29wcyA9IE1FTUZTLm9wc190YWJsZS5kaXIu
c3RyZWFtOwogICBub2RlLmNvbnRlbnRzID0ge307CiAgfSBlbHNlIGlmIChGUy5pc0ZpbGUobm9k
ZS5tb2RlKSkgewogICBub2RlLm5vZGVfb3BzID0gTUVNRlMub3BzX3RhYmxlLmZpbGUubm9kZTsK
ICAgbm9kZS5zdHJlYW1fb3BzID0gTUVNRlMub3BzX3RhYmxlLmZpbGUuc3RyZWFtOwogICBub2Rl
LnVzZWRCeXRlcyA9IDA7CiAgIG5vZGUuY29udGVudHMgPSBudWxsOwogIH0gZWxzZSBpZiAoRlMu
aXNMaW5rKG5vZGUubW9kZSkpIHsKICAgbm9kZS5ub2RlX29wcyA9IE1FTUZTLm9wc190YWJsZS5s
aW5rLm5vZGU7CiAgIG5vZGUuc3RyZWFtX29wcyA9IE1FTUZTLm9wc190YWJsZS5saW5rLnN0cmVh
bTsKICB9IGVsc2UgaWYgKEZTLmlzQ2hyZGV2KG5vZGUubW9kZSkpIHsKICAgbm9kZS5ub2RlX29w
cyA9IE1FTUZTLm9wc190YWJsZS5jaHJkZXYubm9kZTsKICAgbm9kZS5zdHJlYW1fb3BzID0gTUVN
RlMub3BzX3RhYmxlLmNocmRldi5zdHJlYW07CiAgfQogIG5vZGUudGltZXN0YW1wID0gRGF0ZS5u
b3coKTsKICBpZiAocGFyZW50KSB7CiAgIHBhcmVudC5jb250ZW50c1tuYW1lXSA9IG5vZGU7CiAg
fQogIHJldHVybiBub2RlOwogfSksCiBnZXRGaWxlRGF0YUFzUmVndWxhckFycmF5OiAoZnVuY3Rp
b24obm9kZSkgewogIGlmIChub2RlLmNvbnRlbnRzICYmIG5vZGUuY29udGVudHMuc3ViYXJyYXkp
IHsKICAgdmFyIGFyciA9IFtdOwogICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGUudXNlZEJ5dGVz
OyArK2kpIGFyci5wdXNoKG5vZGUuY29udGVudHNbaV0pOwogICByZXR1cm4gYXJyOwogIH0KICBy
ZXR1cm4gbm9kZS5jb250ZW50czsKIH0pLAogZ2V0RmlsZURhdGFBc1R5cGVkQXJyYXk6IChmdW5j
dGlvbihub2RlKSB7CiAgaWYgKCFub2RlLmNvbnRlbnRzKSByZXR1cm4gbmV3IFVpbnQ4QXJyYXk7
CiAgaWYgKG5vZGUuY29udGVudHMuc3ViYXJyYXkpIHJldHVybiBub2RlLmNvbnRlbnRzLnN1YmFy
cmF5KDAsIG5vZGUudXNlZEJ5dGVzKTsKICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkobm9kZS5jb250
ZW50cyk7CiB9KSwKIGV4cGFuZEZpbGVTdG9yYWdlOiAoZnVuY3Rpb24obm9kZSwgbmV3Q2FwYWNp
dHkpIHsKICBpZiAobm9kZS5jb250ZW50cyAmJiBub2RlLmNvbnRlbnRzLnN1YmFycmF5ICYmIG5l
d0NhcGFjaXR5ID4gbm9kZS5jb250ZW50cy5sZW5ndGgpIHsKICAgbm9kZS5jb250ZW50cyA9IE1F
TUZTLmdldEZpbGVEYXRhQXNSZWd1bGFyQXJyYXkobm9kZSk7CiAgIG5vZGUudXNlZEJ5dGVzID0g
bm9kZS5jb250ZW50cy5sZW5ndGg7CiAgfQogIGlmICghbm9kZS5jb250ZW50cyB8fCBub2RlLmNv
bnRlbnRzLnN1YmFycmF5KSB7CiAgIHZhciBwcmV2Q2FwYWNpdHkgPSBub2RlLmNvbnRlbnRzID8g
bm9kZS5jb250ZW50cy5idWZmZXIuYnl0ZUxlbmd0aCA6IDA7CiAgIGlmIChwcmV2Q2FwYWNpdHkg
Pj0gbmV3Q2FwYWNpdHkpIHJldHVybjsKICAgdmFyIENBUEFDSVRZX0RPVUJMSU5HX01BWCA9IDEw
MjQgKiAxMDI0OwogICBuZXdDYXBhY2l0eSA9IE1hdGgubWF4KG5ld0NhcGFjaXR5LCBwcmV2Q2Fw
YWNpdHkgKiAocHJldkNhcGFjaXR5IDwgQ0FQQUNJVFlfRE9VQkxJTkdfTUFYID8gMiA6IDEuMTI1
KSB8IDApOwogICBpZiAocHJldkNhcGFjaXR5ICE9IDApIG5ld0NhcGFjaXR5ID0gTWF0aC5tYXgo
bmV3Q2FwYWNpdHksIDI1Nik7CiAgIHZhciBvbGRDb250ZW50cyA9IG5vZGUuY29udGVudHM7CiAg
IG5vZGUuY29udGVudHMgPSBuZXcgVWludDhBcnJheShuZXdDYXBhY2l0eSk7CiAgIGlmIChub2Rl
LnVzZWRCeXRlcyA+IDApIG5vZGUuY29udGVudHMuc2V0KG9sZENvbnRlbnRzLnN1YmFycmF5KDAs
IG5vZGUudXNlZEJ5dGVzKSwgMCk7CiAgIHJldHVybjsKICB9CiAgaWYgKCFub2RlLmNvbnRlbnRz
ICYmIG5ld0NhcGFjaXR5ID4gMCkgbm9kZS5jb250ZW50cyA9IFtdOwogIHdoaWxlIChub2RlLmNv
bnRlbnRzLmxlbmd0aCA8IG5ld0NhcGFjaXR5KSBub2RlLmNvbnRlbnRzLnB1c2goMCk7CiB9KSwK
IHJlc2l6ZUZpbGVTdG9yYWdlOiAoZnVuY3Rpb24obm9kZSwgbmV3U2l6ZSkgewogIGlmIChub2Rl
LnVzZWRCeXRlcyA9PSBuZXdTaXplKSByZXR1cm47CiAgaWYgKG5ld1NpemUgPT0gMCkgewogICBu
b2RlLmNvbnRlbnRzID0gbnVsbDsKICAgbm9kZS51c2VkQnl0ZXMgPSAwOwogICByZXR1cm47CiAg
fQogIGlmICghbm9kZS5jb250ZW50cyB8fCBub2RlLmNvbnRlbnRzLnN1YmFycmF5KSB7CiAgIHZh
ciBvbGRDb250ZW50cyA9IG5vZGUuY29udGVudHM7CiAgIG5vZGUuY29udGVudHMgPSBuZXcgVWlu
dDhBcnJheShuZXcgQXJyYXlCdWZmZXIobmV3U2l6ZSkpOwogICBpZiAob2xkQ29udGVudHMpIHsK
ICAgIG5vZGUuY29udGVudHMuc2V0KG9sZENvbnRlbnRzLnN1YmFycmF5KDAsIE1hdGgubWluKG5l
d1NpemUsIG5vZGUudXNlZEJ5dGVzKSkpOwogICB9CiAgIG5vZGUudXNlZEJ5dGVzID0gbmV3U2l6
ZTsKICAgcmV0dXJuOwogIH0KICBpZiAoIW5vZGUuY29udGVudHMpIG5vZGUuY29udGVudHMgPSBb
XTsKICBpZiAobm9kZS5jb250ZW50cy5sZW5ndGggPiBuZXdTaXplKSBub2RlLmNvbnRlbnRzLmxl
bmd0aCA9IG5ld1NpemU7IGVsc2Ugd2hpbGUgKG5vZGUuY29udGVudHMubGVuZ3RoIDwgbmV3U2l6
ZSkgbm9kZS5jb250ZW50cy5wdXNoKDApOwogIG5vZGUudXNlZEJ5dGVzID0gbmV3U2l6ZTsKIH0p
LAogbm9kZV9vcHM6IHsKICBnZXRhdHRyOiAoZnVuY3Rpb24obm9kZSkgewogICB2YXIgYXR0ciA9
IHt9OwogICBhdHRyLmRldiA9IEZTLmlzQ2hyZGV2KG5vZGUubW9kZSkgPyBub2RlLmlkIDogMTsK
ICAgYXR0ci5pbm8gPSBub2RlLmlkOwogICBhdHRyLm1vZGUgPSBub2RlLm1vZGU7CiAgIGF0dHIu
bmxpbmsgPSAxOwogICBhdHRyLnVpZCA9IDA7CiAgIGF0dHIuZ2lkID0gMDsKICAgYXR0ci5yZGV2
ID0gbm9kZS5yZGV2OwogICBpZiAoRlMuaXNEaXIobm9kZS5tb2RlKSkgewogICAgYXR0ci5zaXpl
ID0gNDA5NjsKICAgfSBlbHNlIGlmIChGUy5pc0ZpbGUobm9kZS5tb2RlKSkgewogICAgYXR0ci5z
aXplID0gbm9kZS51c2VkQnl0ZXM7CiAgIH0gZWxzZSBpZiAoRlMuaXNMaW5rKG5vZGUubW9kZSkp
IHsKICAgIGF0dHIuc2l6ZSA9IG5vZGUubGluay5sZW5ndGg7CiAgIH0gZWxzZSB7CiAgICBhdHRy
LnNpemUgPSAwOwogICB9CiAgIGF0dHIuYXRpbWUgPSBuZXcgRGF0ZShub2RlLnRpbWVzdGFtcCk7
CiAgIGF0dHIubXRpbWUgPSBuZXcgRGF0ZShub2RlLnRpbWVzdGFtcCk7CiAgIGF0dHIuY3RpbWUg
PSBuZXcgRGF0ZShub2RlLnRpbWVzdGFtcCk7CiAgIGF0dHIuYmxrc2l6ZSA9IDQwOTY7CiAgIGF0
dHIuYmxvY2tzID0gTWF0aC5jZWlsKGF0dHIuc2l6ZSAvIGF0dHIuYmxrc2l6ZSk7CiAgIHJldHVy
biBhdHRyOwogIH0pLAogIHNldGF0dHI6IChmdW5jdGlvbihub2RlLCBhdHRyKSB7CiAgIGlmIChh
dHRyLm1vZGUgIT09IHVuZGVmaW5lZCkgewogICAgbm9kZS5tb2RlID0gYXR0ci5tb2RlOwogICB9
CiAgIGlmIChhdHRyLnRpbWVzdGFtcCAhPT0gdW5kZWZpbmVkKSB7CiAgICBub2RlLnRpbWVzdGFt
cCA9IGF0dHIudGltZXN0YW1wOwogICB9CiAgIGlmIChhdHRyLnNpemUgIT09IHVuZGVmaW5lZCkg
ewogICAgTUVNRlMucmVzaXplRmlsZVN0b3JhZ2Uobm9kZSwgYXR0ci5zaXplKTsKICAgfQogIH0p
LAogIGxvb2t1cDogKGZ1bmN0aW9uKHBhcmVudCwgbmFtZSkgewogICB0aHJvdyBGUy5nZW5lcmlj
RXJyb3JzW0VSUk5PX0NPREVTLkVOT0VOVF07CiAgfSksCiAgbWtub2Q6IChmdW5jdGlvbihwYXJl
bnQsIG5hbWUsIG1vZGUsIGRldikgewogICByZXR1cm4gTUVNRlMuY3JlYXRlTm9kZShwYXJlbnQs
IG5hbWUsIG1vZGUsIGRldik7CiAgfSksCiAgcmVuYW1lOiAoZnVuY3Rpb24ob2xkX25vZGUsIG5l
d19kaXIsIG5ld19uYW1lKSB7CiAgIGlmIChGUy5pc0RpcihvbGRfbm9kZS5tb2RlKSkgewogICAg
dmFyIG5ld19ub2RlOwogICAgdHJ5IHsKICAgICBuZXdfbm9kZSA9IEZTLmxvb2t1cE5vZGUobmV3
X2RpciwgbmV3X25hbWUpOwogICAgfSBjYXRjaCAoZSkge30KICAgIGlmIChuZXdfbm9kZSkgewog
ICAgIGZvciAodmFyIGkgaW4gbmV3X25vZGUuY29udGVudHMpIHsKICAgICAgdGhyb3cgbmV3IEZT
LkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRU5PVEVNUFRZKTsKICAgICB9CiAgICB9CiAgIH0KICAg
ZGVsZXRlIG9sZF9ub2RlLnBhcmVudC5jb250ZW50c1tvbGRfbm9kZS5uYW1lXTsKICAgb2xkX25v
ZGUubmFtZSA9IG5ld19uYW1lOwogICBuZXdfZGlyLmNvbnRlbnRzW25ld19uYW1lXSA9IG9sZF9u
b2RlOwogICBvbGRfbm9kZS5wYXJlbnQgPSBuZXdfZGlyOwogIH0pLAogIHVubGluazogKGZ1bmN0
aW9uKHBhcmVudCwgbmFtZSkgewogICBkZWxldGUgcGFyZW50LmNvbnRlbnRzW25hbWVdOwogIH0p
LAogIHJtZGlyOiAoZnVuY3Rpb24ocGFyZW50LCBuYW1lKSB7CiAgIHZhciBub2RlID0gRlMubG9v
a3VwTm9kZShwYXJlbnQsIG5hbWUpOwogICBmb3IgKHZhciBpIGluIG5vZGUuY29udGVudHMpIHsK
ICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVOT1RFTVBUWSk7CiAgIH0K
ICAgZGVsZXRlIHBhcmVudC5jb250ZW50c1tuYW1lXTsKICB9KSwKICByZWFkZGlyOiAoZnVuY3Rp
b24obm9kZSkgewogICB2YXIgZW50cmllcyA9IFsgIi4iLCAiLi4iIF07CiAgIGZvciAodmFyIGtl
eSBpbiBub2RlLmNvbnRlbnRzKSB7CiAgICBpZiAoIW5vZGUuY29udGVudHMuaGFzT3duUHJvcGVy
dHkoa2V5KSkgewogICAgIGNvbnRpbnVlOwogICAgfQogICAgZW50cmllcy5wdXNoKGtleSk7CiAg
IH0KICAgcmV0dXJuIGVudHJpZXM7CiAgfSksCiAgc3ltbGluazogKGZ1bmN0aW9uKHBhcmVudCwg
bmV3bmFtZSwgb2xkcGF0aCkgewogICB2YXIgbm9kZSA9IE1FTUZTLmNyZWF0ZU5vZGUocGFyZW50
LCBuZXduYW1lLCA1MTEgfCA0MDk2MCwgMCk7CiAgIG5vZGUubGluayA9IG9sZHBhdGg7CiAgIHJl
dHVybiBub2RlOwogIH0pLAogIHJlYWRsaW5rOiAoZnVuY3Rpb24obm9kZSkgewogICBpZiAoIUZT
LmlzTGluayhub2RlLm1vZGUpKSB7CiAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19D
T0RFUy5FSU5WQUwpOwogICB9CiAgIHJldHVybiBub2RlLmxpbms7CiAgfSkKIH0sCiBzdHJlYW1f
b3BzOiB7CiAgcmVhZDogKGZ1bmN0aW9uKHN0cmVhbSwgYnVmZmVyLCBvZmZzZXQsIGxlbmd0aCwg
cG9zaXRpb24pIHsKICAgdmFyIGNvbnRlbnRzID0gc3RyZWFtLm5vZGUuY29udGVudHM7CiAgIGlm
IChwb3NpdGlvbiA+PSBzdHJlYW0ubm9kZS51c2VkQnl0ZXMpIHJldHVybiAwOwogICB2YXIgc2l6
ZSA9IE1hdGgubWluKHN0cmVhbS5ub2RlLnVzZWRCeXRlcyAtIHBvc2l0aW9uLCBsZW5ndGgpOwog
ICBhc3NlcnQoc2l6ZSA+PSAwKTsKICAgaWYgKHNpemUgPiA4ICYmIGNvbnRlbnRzLnN1YmFycmF5
KSB7CiAgICBidWZmZXIuc2V0KGNvbnRlbnRzLnN1YmFycmF5KHBvc2l0aW9uLCBwb3NpdGlvbiAr
IHNpemUpLCBvZmZzZXQpOwogICB9IGVsc2UgewogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXpl
OyBpKyspIGJ1ZmZlcltvZmZzZXQgKyBpXSA9IGNvbnRlbnRzW3Bvc2l0aW9uICsgaV07CiAgIH0K
ICAgcmV0dXJuIHNpemU7CiAgfSksCiAgd3JpdGU6IChmdW5jdGlvbihzdHJlYW0sIGJ1ZmZlciwg
b2Zmc2V0LCBsZW5ndGgsIHBvc2l0aW9uLCBjYW5Pd24pIHsKICAgaWYgKCFsZW5ndGgpIHJldHVy
biAwOwogICB2YXIgbm9kZSA9IHN0cmVhbS5ub2RlOwogICBub2RlLnRpbWVzdGFtcCA9IERhdGUu
bm93KCk7CiAgIGlmIChidWZmZXIuc3ViYXJyYXkgJiYgKCFub2RlLmNvbnRlbnRzIHx8IG5vZGUu
Y29udGVudHMuc3ViYXJyYXkpKSB7CiAgICBpZiAoY2FuT3duKSB7CiAgICAgbm9kZS5jb250ZW50
cyA9IGJ1ZmZlci5zdWJhcnJheShvZmZzZXQsIG9mZnNldCArIGxlbmd0aCk7CiAgICAgbm9kZS51
c2VkQnl0ZXMgPSBsZW5ndGg7CiAgICAgcmV0dXJuIGxlbmd0aDsKICAgIH0gZWxzZSBpZiAobm9k
ZS51c2VkQnl0ZXMgPT09IDAgJiYgcG9zaXRpb24gPT09IDApIHsKICAgICBub2RlLmNvbnRlbnRz
ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyLnN1YmFycmF5KG9mZnNldCwgb2Zmc2V0ICsgbGVuZ3Ro
KSk7CiAgICAgbm9kZS51c2VkQnl0ZXMgPSBsZW5ndGg7CiAgICAgcmV0dXJuIGxlbmd0aDsKICAg
IH0gZWxzZSBpZiAocG9zaXRpb24gKyBsZW5ndGggPD0gbm9kZS51c2VkQnl0ZXMpIHsKICAgICBu
b2RlLmNvbnRlbnRzLnNldChidWZmZXIuc3ViYXJyYXkob2Zmc2V0LCBvZmZzZXQgKyBsZW5ndGgp
LCBwb3NpdGlvbik7CiAgICAgcmV0dXJuIGxlbmd0aDsKICAgIH0KICAgfQogICBNRU1GUy5leHBh
bmRGaWxlU3RvcmFnZShub2RlLCBwb3NpdGlvbiArIGxlbmd0aCk7CiAgIGlmIChub2RlLmNvbnRl
bnRzLnN1YmFycmF5ICYmIGJ1ZmZlci5zdWJhcnJheSkgbm9kZS5jb250ZW50cy5zZXQoYnVmZmVy
LnN1YmFycmF5KG9mZnNldCwgb2Zmc2V0ICsgbGVuZ3RoKSwgcG9zaXRpb24pOyBlbHNlIHsKICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKICAgICBub2RlLmNvbnRlbnRzW3Bv
c2l0aW9uICsgaV0gPSBidWZmZXJbb2Zmc2V0ICsgaV07CiAgICB9CiAgIH0KICAgbm9kZS51c2Vk
Qnl0ZXMgPSBNYXRoLm1heChub2RlLnVzZWRCeXRlcywgcG9zaXRpb24gKyBsZW5ndGgpOwogICBy
ZXR1cm4gbGVuZ3RoOwogIH0pLAogIGxsc2VlazogKGZ1bmN0aW9uKHN0cmVhbSwgb2Zmc2V0LCB3
aGVuY2UpIHsKICAgdmFyIHBvc2l0aW9uID0gb2Zmc2V0OwogICBpZiAod2hlbmNlID09PSAxKSB7
CiAgICBwb3NpdGlvbiArPSBzdHJlYW0ucG9zaXRpb247CiAgIH0gZWxzZSBpZiAod2hlbmNlID09
PSAyKSB7CiAgICBpZiAoRlMuaXNGaWxlKHN0cmVhbS5ub2RlLm1vZGUpKSB7CiAgICAgcG9zaXRp
b24gKz0gc3RyZWFtLm5vZGUudXNlZEJ5dGVzOwogICAgfQogICB9CiAgIGlmIChwb3NpdGlvbiA8
IDApIHsKICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVJTlZBTCk7CiAg
IH0KICAgcmV0dXJuIHBvc2l0aW9uOwogIH0pLAogIGFsbG9jYXRlOiAoZnVuY3Rpb24oc3RyZWFt
LCBvZmZzZXQsIGxlbmd0aCkgewogICBNRU1GUy5leHBhbmRGaWxlU3RvcmFnZShzdHJlYW0ubm9k
ZSwgb2Zmc2V0ICsgbGVuZ3RoKTsKICAgc3RyZWFtLm5vZGUudXNlZEJ5dGVzID0gTWF0aC5tYXgo
c3RyZWFtLm5vZGUudXNlZEJ5dGVzLCBvZmZzZXQgKyBsZW5ndGgpOwogIH0pLAogIG1tYXA6IChm
dW5jdGlvbihzdHJlYW0sIGJ1ZmZlciwgb2Zmc2V0LCBsZW5ndGgsIHBvc2l0aW9uLCBwcm90LCBm
bGFncykgewogICBpZiAoIUZTLmlzRmlsZShzdHJlYW0ubm9kZS5tb2RlKSkgewogICAgdGhyb3cg
bmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRU5PREVWKTsKICAgfQogICB2YXIgcHRyOwog
ICB2YXIgYWxsb2NhdGVkOwogICB2YXIgY29udGVudHMgPSBzdHJlYW0ubm9kZS5jb250ZW50czsK
ICAgaWYgKCEoZmxhZ3MgJiAyKSAmJiAoY29udGVudHMuYnVmZmVyID09PSBidWZmZXIgfHwgY29u
dGVudHMuYnVmZmVyID09PSBidWZmZXIuYnVmZmVyKSkgewogICAgYWxsb2NhdGVkID0gZmFsc2U7
CiAgICBwdHIgPSBjb250ZW50cy5ieXRlT2Zmc2V0OwogICB9IGVsc2UgewogICAgaWYgKHBvc2l0
aW9uID4gMCB8fCBwb3NpdGlvbiArIGxlbmd0aCA8IHN0cmVhbS5ub2RlLnVzZWRCeXRlcykgewog
ICAgIGlmIChjb250ZW50cy5zdWJhcnJheSkgewogICAgICBjb250ZW50cyA9IGNvbnRlbnRzLnN1
YmFycmF5KHBvc2l0aW9uLCBwb3NpdGlvbiArIGxlbmd0aCk7CiAgICAgfSBlbHNlIHsKICAgICAg
Y29udGVudHMgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChjb250ZW50cywgcG9zaXRpb24s
IHBvc2l0aW9uICsgbGVuZ3RoKTsKICAgICB9CiAgICB9CiAgICBhbGxvY2F0ZWQgPSB0cnVlOwog
ICAgcHRyID0gX21hbGxvYyhsZW5ndGgpOwogICAgaWYgKCFwdHIpIHsKICAgICB0aHJvdyBuZXcg
RlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FTk9NRU0pOwogICAgfQogICAgYnVmZmVyLnNldChj
b250ZW50cywgcHRyKTsKICAgfQogICByZXR1cm4gewogICAgcHRyOiBwdHIsCiAgICBhbGxvY2F0
ZWQ6IGFsbG9jYXRlZAogICB9OwogIH0pLAogIG1zeW5jOiAoZnVuY3Rpb24oc3RyZWFtLCBidWZm
ZXIsIG9mZnNldCwgbGVuZ3RoLCBtbWFwRmxhZ3MpIHsKICAgaWYgKCFGUy5pc0ZpbGUoc3RyZWFt
Lm5vZGUubW9kZSkpIHsKICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVO
T0RFVik7CiAgIH0KICAgaWYgKG1tYXBGbGFncyAmIDIpIHsKICAgIHJldHVybiAwOwogICB9CiAg
IHZhciBieXRlc1dyaXR0ZW4gPSBNRU1GUy5zdHJlYW1fb3BzLndyaXRlKHN0cmVhbSwgYnVmZmVy
LCAwLCBsZW5ndGgsIG9mZnNldCwgZmFsc2UpOwogICByZXR1cm4gMDsKICB9KQogfQp9Owp2YXIg
SURCRlMgPSB7CiBkYnM6IHt9LAogaW5kZXhlZERCOiAoZnVuY3Rpb24oKSB7CiAgaWYgKHR5cGVv
ZiBpbmRleGVkREIgIT09ICJ1bmRlZmluZWQiKSByZXR1cm4gaW5kZXhlZERCOwogIHZhciByZXQg
PSBudWxsOwogIGlmICh0eXBlb2Ygd2luZG93ID09PSAib2JqZWN0IikgcmV0ID0gd2luZG93Lmlu
ZGV4ZWREQiB8fCB3aW5kb3cubW96SW5kZXhlZERCIHx8IHdpbmRvdy53ZWJraXRJbmRleGVkREIg
fHwgd2luZG93Lm1zSW5kZXhlZERCOwogIGFzc2VydChyZXQsICJJREJGUyB1c2VkLCBidXQgaW5k
ZXhlZERCIG5vdCBzdXBwb3J0ZWQiKTsKICByZXR1cm4gcmV0OwogfSksCiBEQl9WRVJTSU9OOiAy
MSwKIERCX1NUT1JFX05BTUU6ICJGSUxFX0RBVEEiLAogbW91bnQ6IChmdW5jdGlvbihtb3VudCkg
ewogIHJldHVybiBNRU1GUy5tb3VudC5hcHBseShudWxsLCBhcmd1bWVudHMpOwogfSksCiBzeW5j
ZnM6IChmdW5jdGlvbihtb3VudCwgcG9wdWxhdGUsIGNhbGxiYWNrKSB7CiAgSURCRlMuZ2V0TG9j
YWxTZXQobW91bnQsIChmdW5jdGlvbihlcnIsIGxvY2FsKSB7CiAgIGlmIChlcnIpIHJldHVybiBj
YWxsYmFjayhlcnIpOwogICBJREJGUy5nZXRSZW1vdGVTZXQobW91bnQsIChmdW5jdGlvbihlcnIs
IHJlbW90ZSkgewogICAgaWYgKGVycikgcmV0dXJuIGNhbGxiYWNrKGVycik7CiAgICB2YXIgc3Jj
ID0gcG9wdWxhdGUgPyByZW1vdGUgOiBsb2NhbDsKICAgIHZhciBkc3QgPSBwb3B1bGF0ZSA/IGxv
Y2FsIDogcmVtb3RlOwogICAgSURCRlMucmVjb25jaWxlKHNyYywgZHN0LCBjYWxsYmFjayk7CiAg
IH0pKTsKICB9KSk7CiB9KSwKIGdldERCOiAoZnVuY3Rpb24obmFtZSwgY2FsbGJhY2spIHsKICB2
YXIgZGIgPSBJREJGUy5kYnNbbmFtZV07CiAgaWYgKGRiKSB7CiAgIHJldHVybiBjYWxsYmFjayhu
dWxsLCBkYik7CiAgfQogIHZhciByZXE7CiAgdHJ5IHsKICAgcmVxID0gSURCRlMuaW5kZXhlZERC
KCkub3BlbihuYW1lLCBJREJGUy5EQl9WRVJTSU9OKTsKICB9IGNhdGNoIChlKSB7CiAgIHJldHVy
biBjYWxsYmFjayhlKTsKICB9CiAgcmVxLm9udXBncmFkZW5lZWRlZCA9IChmdW5jdGlvbihlKSB7
CiAgIHZhciBkYiA9IGUudGFyZ2V0LnJlc3VsdDsKICAgdmFyIHRyYW5zYWN0aW9uID0gZS50YXJn
ZXQudHJhbnNhY3Rpb247CiAgIHZhciBmaWxlU3RvcmU7CiAgIGlmIChkYi5vYmplY3RTdG9yZU5h
bWVzLmNvbnRhaW5zKElEQkZTLkRCX1NUT1JFX05BTUUpKSB7CiAgICBmaWxlU3RvcmUgPSB0cmFu
c2FjdGlvbi5vYmplY3RTdG9yZShJREJGUy5EQl9TVE9SRV9OQU1FKTsKICAgfSBlbHNlIHsKICAg
IGZpbGVTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKElEQkZTLkRCX1NUT1JFX05BTUUpOwog
ICB9CiAgIGlmICghZmlsZVN0b3JlLmluZGV4TmFtZXMuY29udGFpbnMoInRpbWVzdGFtcCIpKSB7
CiAgICBmaWxlU3RvcmUuY3JlYXRlSW5kZXgoInRpbWVzdGFtcCIsICJ0aW1lc3RhbXAiLCB7CiAg
ICAgdW5pcXVlOiBmYWxzZQogICAgfSk7CiAgIH0KICB9KTsKICByZXEub25zdWNjZXNzID0gKGZ1
bmN0aW9uKCkgewogICBkYiA9IHJlcS5yZXN1bHQ7CiAgIElEQkZTLmRic1tuYW1lXSA9IGRiOwog
ICBjYWxsYmFjayhudWxsLCBkYik7CiAgfSk7CiAgcmVxLm9uZXJyb3IgPSAoZnVuY3Rpb24oZSkg
ewogICBjYWxsYmFjayh0aGlzLmVycm9yKTsKICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogIH0pOwog
fSksCiBnZXRMb2NhbFNldDogKGZ1bmN0aW9uKG1vdW50LCBjYWxsYmFjaykgewogIHZhciBlbnRy
aWVzID0ge307CiAgZnVuY3Rpb24gaXNSZWFsRGlyKHApIHsKICAgcmV0dXJuIHAgIT09ICIuIiAm
JiBwICE9PSAiLi4iOwogIH0KICBmdW5jdGlvbiB0b0Fic29sdXRlKHJvb3QpIHsKICAgcmV0dXJu
IChmdW5jdGlvbihwKSB7CiAgICByZXR1cm4gUEFUSC5qb2luMihyb290LCBwKTsKICAgfSk7CiAg
fQogIHZhciBjaGVjayA9IEZTLnJlYWRkaXIobW91bnQubW91bnRwb2ludCkuZmlsdGVyKGlzUmVh
bERpcikubWFwKHRvQWJzb2x1dGUobW91bnQubW91bnRwb2ludCkpOwogIHdoaWxlIChjaGVjay5s
ZW5ndGgpIHsKICAgdmFyIHBhdGggPSBjaGVjay5wb3AoKTsKICAgdmFyIHN0YXQ7CiAgIHRyeSB7
CiAgICBzdGF0ID0gRlMuc3RhdChwYXRoKTsKICAgfSBjYXRjaCAoZSkgewogICAgcmV0dXJuIGNh
bGxiYWNrKGUpOwogICB9CiAgIGlmIChGUy5pc0RpcihzdGF0Lm1vZGUpKSB7CiAgICBjaGVjay5w
dXNoLmFwcGx5KGNoZWNrLCBGUy5yZWFkZGlyKHBhdGgpLmZpbHRlcihpc1JlYWxEaXIpLm1hcCh0
b0Fic29sdXRlKHBhdGgpKSk7CiAgIH0KICAgZW50cmllc1twYXRoXSA9IHsKICAgIHRpbWVzdGFt
cDogc3RhdC5tdGltZQogICB9OwogIH0KICByZXR1cm4gY2FsbGJhY2sobnVsbCwgewogICB0eXBl
OiAibG9jYWwiLAogICBlbnRyaWVzOiBlbnRyaWVzCiAgfSk7CiB9KSwKIGdldFJlbW90ZVNldDog
KGZ1bmN0aW9uKG1vdW50LCBjYWxsYmFjaykgewogIHZhciBlbnRyaWVzID0ge307CiAgSURCRlMu
Z2V0REIobW91bnQubW91bnRwb2ludCwgKGZ1bmN0aW9uKGVyciwgZGIpIHsKICAgaWYgKGVycikg
cmV0dXJuIGNhbGxiYWNrKGVycik7CiAgIHZhciB0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9u
KFsgSURCRlMuREJfU1RPUkVfTkFNRSBdLCAicmVhZG9ubHkiKTsKICAgdHJhbnNhY3Rpb24ub25l
cnJvciA9IChmdW5jdGlvbihlKSB7CiAgICBjYWxsYmFjayh0aGlzLmVycm9yKTsKICAgIGUucHJl
dmVudERlZmF1bHQoKTsKICAgfSk7CiAgIHZhciBzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0
b3JlKElEQkZTLkRCX1NUT1JFX05BTUUpOwogICB2YXIgaW5kZXggPSBzdG9yZS5pbmRleCgidGlt
ZXN0YW1wIik7CiAgIGluZGV4Lm9wZW5LZXlDdXJzb3IoKS5vbnN1Y2Nlc3MgPSAoZnVuY3Rpb24o
ZXZlbnQpIHsKICAgIHZhciBjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0OwogICAgaWYgKCFj
dXJzb3IpIHsKICAgICByZXR1cm4gY2FsbGJhY2sobnVsbCwgewogICAgICB0eXBlOiAicmVtb3Rl
IiwKICAgICAgZGI6IGRiLAogICAgICBlbnRyaWVzOiBlbnRyaWVzCiAgICAgfSk7CiAgICB9CiAg
ICBlbnRyaWVzW2N1cnNvci5wcmltYXJ5S2V5XSA9IHsKICAgICB0aW1lc3RhbXA6IGN1cnNvci5r
ZXkKICAgIH07CiAgICBjdXJzb3IuY29udGludWUoKTsKICAgfSk7CiAgfSkpOwogfSksCiBsb2Fk
TG9jYWxFbnRyeTogKGZ1bmN0aW9uKHBhdGgsIGNhbGxiYWNrKSB7CiAgdmFyIHN0YXQsIG5vZGU7
CiAgdHJ5IHsKICAgdmFyIGxvb2t1cCA9IEZTLmxvb2t1cFBhdGgocGF0aCk7CiAgIG5vZGUgPSBs
b29rdXAubm9kZTsKICAgc3RhdCA9IEZTLnN0YXQocGF0aCk7CiAgfSBjYXRjaCAoZSkgewogICBy
ZXR1cm4gY2FsbGJhY2soZSk7CiAgfQogIGlmIChGUy5pc0RpcihzdGF0Lm1vZGUpKSB7CiAgIHJl
dHVybiBjYWxsYmFjayhudWxsLCB7CiAgICB0aW1lc3RhbXA6IHN0YXQubXRpbWUsCiAgICBtb2Rl
OiBzdGF0Lm1vZGUKICAgfSk7CiAgfSBlbHNlIGlmIChGUy5pc0ZpbGUoc3RhdC5tb2RlKSkgewog
ICBub2RlLmNvbnRlbnRzID0gTUVNRlMuZ2V0RmlsZURhdGFBc1R5cGVkQXJyYXkobm9kZSk7CiAg
IHJldHVybiBjYWxsYmFjayhudWxsLCB7CiAgICB0aW1lc3RhbXA6IHN0YXQubXRpbWUsCiAgICBt
b2RlOiBzdGF0Lm1vZGUsCiAgICBjb250ZW50czogbm9kZS5jb250ZW50cwogICB9KTsKICB9IGVs
c2UgewogICByZXR1cm4gY2FsbGJhY2sobmV3IEVycm9yKCJub2RlIHR5cGUgbm90IHN1cHBvcnRl
ZCIpKTsKICB9CiB9KSwKIHN0b3JlTG9jYWxFbnRyeTogKGZ1bmN0aW9uKHBhdGgsIGVudHJ5LCBj
YWxsYmFjaykgewogIHRyeSB7CiAgIGlmIChGUy5pc0RpcihlbnRyeS5tb2RlKSkgewogICAgRlMu
bWtkaXIocGF0aCwgZW50cnkubW9kZSk7CiAgIH0gZWxzZSBpZiAoRlMuaXNGaWxlKGVudHJ5Lm1v
ZGUpKSB7CiAgICBGUy53cml0ZUZpbGUocGF0aCwgZW50cnkuY29udGVudHMsIHsKICAgICBlbmNv
ZGluZzogImJpbmFyeSIsCiAgICAgY2FuT3duOiB0cnVlCiAgICB9KTsKICAgfSBlbHNlIHsKICAg
IHJldHVybiBjYWxsYmFjayhuZXcgRXJyb3IoIm5vZGUgdHlwZSBub3Qgc3VwcG9ydGVkIikpOwog
ICB9CiAgIEZTLmNobW9kKHBhdGgsIGVudHJ5Lm1vZGUpOwogICBGUy51dGltZShwYXRoLCBlbnRy
eS50aW1lc3RhbXAsIGVudHJ5LnRpbWVzdGFtcCk7CiAgfSBjYXRjaCAoZSkgewogICByZXR1cm4g
Y2FsbGJhY2soZSk7CiAgfQogIGNhbGxiYWNrKG51bGwpOwogfSksCiByZW1vdmVMb2NhbEVudHJ5
OiAoZnVuY3Rpb24ocGF0aCwgY2FsbGJhY2spIHsKICB0cnkgewogICB2YXIgbG9va3VwID0gRlMu
bG9va3VwUGF0aChwYXRoKTsKICAgdmFyIHN0YXQgPSBGUy5zdGF0KHBhdGgpOwogICBpZiAoRlMu
aXNEaXIoc3RhdC5tb2RlKSkgewogICAgRlMucm1kaXIocGF0aCk7CiAgIH0gZWxzZSBpZiAoRlMu
aXNGaWxlKHN0YXQubW9kZSkpIHsKICAgIEZTLnVubGluayhwYXRoKTsKICAgfQogIH0gY2F0Y2gg
KGUpIHsKICAgcmV0dXJuIGNhbGxiYWNrKGUpOwogIH0KICBjYWxsYmFjayhudWxsKTsKIH0pLAog
bG9hZFJlbW90ZUVudHJ5OiAoZnVuY3Rpb24oc3RvcmUsIHBhdGgsIGNhbGxiYWNrKSB7CiAgdmFy
IHJlcSA9IHN0b3JlLmdldChwYXRoKTsKICByZXEub25zdWNjZXNzID0gKGZ1bmN0aW9uKGV2ZW50
KSB7CiAgIGNhbGxiYWNrKG51bGwsIGV2ZW50LnRhcmdldC5yZXN1bHQpOwogIH0pOwogIHJlcS5v
bmVycm9yID0gKGZ1bmN0aW9uKGUpIHsKICAgY2FsbGJhY2sodGhpcy5lcnJvcik7CiAgIGUucHJl
dmVudERlZmF1bHQoKTsKICB9KTsKIH0pLAogc3RvcmVSZW1vdGVFbnRyeTogKGZ1bmN0aW9uKHN0
b3JlLCBwYXRoLCBlbnRyeSwgY2FsbGJhY2spIHsKICB2YXIgcmVxID0gc3RvcmUucHV0KGVudHJ5
LCBwYXRoKTsKICByZXEub25zdWNjZXNzID0gKGZ1bmN0aW9uKCkgewogICBjYWxsYmFjayhudWxs
KTsKICB9KTsKICByZXEub25lcnJvciA9IChmdW5jdGlvbihlKSB7CiAgIGNhbGxiYWNrKHRoaXMu
ZXJyb3IpOwogICBlLnByZXZlbnREZWZhdWx0KCk7CiAgfSk7CiB9KSwKIHJlbW92ZVJlbW90ZUVu
dHJ5OiAoZnVuY3Rpb24oc3RvcmUsIHBhdGgsIGNhbGxiYWNrKSB7CiAgdmFyIHJlcSA9IHN0b3Jl
LmRlbGV0ZShwYXRoKTsKICByZXEub25zdWNjZXNzID0gKGZ1bmN0aW9uKCkgewogICBjYWxsYmFj
ayhudWxsKTsKICB9KTsKICByZXEub25lcnJvciA9IChmdW5jdGlvbihlKSB7CiAgIGNhbGxiYWNr
KHRoaXMuZXJyb3IpOwogICBlLnByZXZlbnREZWZhdWx0KCk7CiAgfSk7CiB9KSwKIHJlY29uY2ls
ZTogKGZ1bmN0aW9uKHNyYywgZHN0LCBjYWxsYmFjaykgewogIHZhciB0b3RhbCA9IDA7CiAgdmFy
IGNyZWF0ZSA9IFtdOwogIE9iamVjdC5rZXlzKHNyYy5lbnRyaWVzKS5mb3JFYWNoKChmdW5jdGlv
bihrZXkpIHsKICAgdmFyIGUgPSBzcmMuZW50cmllc1trZXldOwogICB2YXIgZTIgPSBkc3QuZW50
cmllc1trZXldOwogICBpZiAoIWUyIHx8IGUudGltZXN0YW1wID4gZTIudGltZXN0YW1wKSB7CiAg
ICBjcmVhdGUucHVzaChrZXkpOwogICAgdG90YWwrKzsKICAgfQogIH0pKTsKICB2YXIgcmVtb3Zl
ID0gW107CiAgT2JqZWN0LmtleXMoZHN0LmVudHJpZXMpLmZvckVhY2goKGZ1bmN0aW9uKGtleSkg
ewogICB2YXIgZSA9IGRzdC5lbnRyaWVzW2tleV07CiAgIHZhciBlMiA9IHNyYy5lbnRyaWVzW2tl
eV07CiAgIGlmICghZTIpIHsKICAgIHJlbW92ZS5wdXNoKGtleSk7CiAgICB0b3RhbCsrOwogICB9
CiAgfSkpOwogIGlmICghdG90YWwpIHsKICAgcmV0dXJuIGNhbGxiYWNrKG51bGwpOwogIH0KICB2
YXIgZXJyb3JlZCA9IGZhbHNlOwogIHZhciBjb21wbGV0ZWQgPSAwOwogIHZhciBkYiA9IHNyYy50
eXBlID09PSAicmVtb3RlIiA/IHNyYy5kYiA6IGRzdC5kYjsKICB2YXIgdHJhbnNhY3Rpb24gPSBk
Yi50cmFuc2FjdGlvbihbIElEQkZTLkRCX1NUT1JFX05BTUUgXSwgInJlYWR3cml0ZSIpOwogIHZh
ciBzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKElEQkZTLkRCX1NUT1JFX05BTUUpOwog
IGZ1bmN0aW9uIGRvbmUoZXJyKSB7CiAgIGlmIChlcnIpIHsKICAgIGlmICghZG9uZS5lcnJvcmVk
KSB7CiAgICAgZG9uZS5lcnJvcmVkID0gdHJ1ZTsKICAgICByZXR1cm4gY2FsbGJhY2soZXJyKTsK
ICAgIH0KICAgIHJldHVybjsKICAgfQogICBpZiAoKytjb21wbGV0ZWQgPj0gdG90YWwpIHsKICAg
IHJldHVybiBjYWxsYmFjayhudWxsKTsKICAgfQogIH0KICB0cmFuc2FjdGlvbi5vbmVycm9yID0g
KGZ1bmN0aW9uKGUpIHsKICAgZG9uZSh0aGlzLmVycm9yKTsKICAgZS5wcmV2ZW50RGVmYXVsdCgp
OwogIH0pOwogIGNyZWF0ZS5zb3J0KCkuZm9yRWFjaCgoZnVuY3Rpb24ocGF0aCkgewogICBpZiAo
ZHN0LnR5cGUgPT09ICJsb2NhbCIpIHsKICAgIElEQkZTLmxvYWRSZW1vdGVFbnRyeShzdG9yZSwg
cGF0aCwgKGZ1bmN0aW9uKGVyciwgZW50cnkpIHsKICAgICBpZiAoZXJyKSByZXR1cm4gZG9uZShl
cnIpOwogICAgIElEQkZTLnN0b3JlTG9jYWxFbnRyeShwYXRoLCBlbnRyeSwgZG9uZSk7CiAgICB9
KSk7CiAgIH0gZWxzZSB7CiAgICBJREJGUy5sb2FkTG9jYWxFbnRyeShwYXRoLCAoZnVuY3Rpb24o
ZXJyLCBlbnRyeSkgewogICAgIGlmIChlcnIpIHJldHVybiBkb25lKGVycik7CiAgICAgSURCRlMu
c3RvcmVSZW1vdGVFbnRyeShzdG9yZSwgcGF0aCwgZW50cnksIGRvbmUpOwogICAgfSkpOwogICB9
CiAgfSkpOwogIHJlbW92ZS5zb3J0KCkucmV2ZXJzZSgpLmZvckVhY2goKGZ1bmN0aW9uKHBhdGgp
IHsKICAgaWYgKGRzdC50eXBlID09PSAibG9jYWwiKSB7CiAgICBJREJGUy5yZW1vdmVMb2NhbEVu
dHJ5KHBhdGgsIGRvbmUpOwogICB9IGVsc2UgewogICAgSURCRlMucmVtb3ZlUmVtb3RlRW50cnko
c3RvcmUsIHBhdGgsIGRvbmUpOwogICB9CiAgfSkpOwogfSkKfTsKdmFyIE5PREVGUyA9IHsKIGlz
V2luZG93czogZmFsc2UsCiBzdGF0aWNJbml0OiAoZnVuY3Rpb24oKSB7CiAgTk9ERUZTLmlzV2lu
ZG93cyA9ICEhcHJvY2Vzcy5wbGF0Zm9ybS5tYXRjaCgvXndpbi8pOwogfSksCiBtb3VudDogKGZ1
bmN0aW9uKG1vdW50KSB7CiAgYXNzZXJ0KEVOVklST05NRU5UX0lTX05PREUpOwogIHJldHVybiBO
T0RFRlMuY3JlYXRlTm9kZShudWxsLCAiLyIsIE5PREVGUy5nZXRNb2RlKG1vdW50Lm9wdHMucm9v
dCksIDApOwogfSksCiBjcmVhdGVOb2RlOiAoZnVuY3Rpb24ocGFyZW50LCBuYW1lLCBtb2RlLCBk
ZXYpIHsKICBpZiAoIUZTLmlzRGlyKG1vZGUpICYmICFGUy5pc0ZpbGUobW9kZSkgJiYgIUZTLmlz
TGluayhtb2RlKSkgewogICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FSU5W
QUwpOwogIH0KICB2YXIgbm9kZSA9IEZTLmNyZWF0ZU5vZGUocGFyZW50LCBuYW1lLCBtb2RlKTsK
ICBub2RlLm5vZGVfb3BzID0gTk9ERUZTLm5vZGVfb3BzOwogIG5vZGUuc3RyZWFtX29wcyA9IE5P
REVGUy5zdHJlYW1fb3BzOwogIHJldHVybiBub2RlOwogfSksCiBnZXRNb2RlOiAoZnVuY3Rpb24o
cGF0aCkgewogIHZhciBzdGF0OwogIHRyeSB7CiAgIHN0YXQgPSBmcy5sc3RhdFN5bmMocGF0aCk7
CiAgIGlmIChOT0RFRlMuaXNXaW5kb3dzKSB7CiAgICBzdGF0Lm1vZGUgPSBzdGF0Lm1vZGUgfCAo
c3RhdC5tb2RlICYgMTQ2KSA+PiAxOwogICB9CiAgfSBjYXRjaCAoZSkgewogICBpZiAoIWUuY29k
ZSkgdGhyb3cgZTsKICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVNbZS5jb2Rl
XSk7CiAgfQogIHJldHVybiBzdGF0Lm1vZGU7CiB9KSwKIHJlYWxQYXRoOiAoZnVuY3Rpb24obm9k
ZSkgewogIHZhciBwYXJ0cyA9IFtdOwogIHdoaWxlIChub2RlLnBhcmVudCAhPT0gbm9kZSkgewog
ICBwYXJ0cy5wdXNoKG5vZGUubmFtZSk7CiAgIG5vZGUgPSBub2RlLnBhcmVudDsKICB9CiAgcGFy
dHMucHVzaChub2RlLm1vdW50Lm9wdHMucm9vdCk7CiAgcGFydHMucmV2ZXJzZSgpOwogIHJldHVy
biBQQVRILmpvaW4uYXBwbHkobnVsbCwgcGFydHMpOwogfSksCiBmbGFnc1RvUGVybWlzc2lvblN0
cmluZ01hcDogewogIDA6ICJyIiwKICAxOiAicisiLAogIDI6ICJyKyIsCiAgNjQ6ICJyIiwKICA2
NTogInIrIiwKICA2NjogInIrIiwKICAxMjk6ICJyeCsiLAogIDE5MzogInJ4KyIsCiAgNTE0OiAi
dysiLAogIDU3NzogInciLAogIDU3ODogIncrIiwKICA3MDU6ICJ3eCIsCiAgNzA2OiAid3grIiwK
ICAxMDI0OiAiYSIsCiAgMTAyNTogImEiLAogIDEwMjY6ICJhKyIsCiAgMTA4OTogImEiLAogIDEw
OTA6ICJhKyIsCiAgMTE1MzogImF4IiwKICAxMTU0OiAiYXgrIiwKICAxMjE3OiAiYXgiLAogIDEy
MTg6ICJheCsiLAogIDQwOTY6ICJycyIsCiAgNDA5ODogInJzKyIKIH0sCiBmbGFnc1RvUGVybWlz
c2lvblN0cmluZzogKGZ1bmN0aW9uKGZsYWdzKSB7CiAgaWYgKGZsYWdzIGluIE5PREVGUy5mbGFn
c1RvUGVybWlzc2lvblN0cmluZ01hcCkgewogICByZXR1cm4gTk9ERUZTLmZsYWdzVG9QZXJtaXNz
aW9uU3RyaW5nTWFwW2ZsYWdzXTsKICB9IGVsc2UgewogICByZXR1cm4gZmxhZ3M7CiAgfQogfSks
CiBub2RlX29wczogewogIGdldGF0dHI6IChmdW5jdGlvbihub2RlKSB7CiAgIHZhciBwYXRoID0g
Tk9ERUZTLnJlYWxQYXRoKG5vZGUpOwogICB2YXIgc3RhdDsKICAgdHJ5IHsKICAgIHN0YXQgPSBm
cy5sc3RhdFN5bmMocGF0aCk7CiAgIH0gY2F0Y2ggKGUpIHsKICAgIGlmICghZS5jb2RlKSB0aHJv
dyBlOwogICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVNbZS5jb2RlXSk7CiAg
IH0KICAgaWYgKE5PREVGUy5pc1dpbmRvd3MgJiYgIXN0YXQuYmxrc2l6ZSkgewogICAgc3RhdC5i
bGtzaXplID0gNDA5NjsKICAgfQogICBpZiAoTk9ERUZTLmlzV2luZG93cyAmJiAhc3RhdC5ibG9j
a3MpIHsKICAgIHN0YXQuYmxvY2tzID0gKHN0YXQuc2l6ZSArIHN0YXQuYmxrc2l6ZSAtIDEpIC8g
c3RhdC5ibGtzaXplIHwgMDsKICAgfQogICByZXR1cm4gewogICAgZGV2OiBzdGF0LmRldiwKICAg
IGlubzogc3RhdC5pbm8sCiAgICBtb2RlOiBzdGF0Lm1vZGUsCiAgICBubGluazogc3RhdC5ubGlu
aywKICAgIHVpZDogc3RhdC51aWQsCiAgICBnaWQ6IHN0YXQuZ2lkLAogICAgcmRldjogc3RhdC5y
ZGV2LAogICAgc2l6ZTogc3RhdC5zaXplLAogICAgYXRpbWU6IHN0YXQuYXRpbWUsCiAgICBtdGlt
ZTogc3RhdC5tdGltZSwKICAgIGN0aW1lOiBzdGF0LmN0aW1lLAogICAgYmxrc2l6ZTogc3RhdC5i
bGtzaXplLAogICAgYmxvY2tzOiBzdGF0LmJsb2NrcwogICB9OwogIH0pLAogIHNldGF0dHI6IChm
dW5jdGlvbihub2RlLCBhdHRyKSB7CiAgIHZhciBwYXRoID0gTk9ERUZTLnJlYWxQYXRoKG5vZGUp
OwogICB0cnkgewogICAgaWYgKGF0dHIubW9kZSAhPT0gdW5kZWZpbmVkKSB7CiAgICAgZnMuY2ht
b2RTeW5jKHBhdGgsIGF0dHIubW9kZSk7CiAgICAgbm9kZS5tb2RlID0gYXR0ci5tb2RlOwogICAg
fQogICAgaWYgKGF0dHIudGltZXN0YW1wICE9PSB1bmRlZmluZWQpIHsKICAgICB2YXIgZGF0ZSA9
IG5ldyBEYXRlKGF0dHIudGltZXN0YW1wKTsKICAgICBmcy51dGltZXNTeW5jKHBhdGgsIGRhdGUs
IGRhdGUpOwogICAgfQogICAgaWYgKGF0dHIuc2l6ZSAhPT0gdW5kZWZpbmVkKSB7CiAgICAgZnMu
dHJ1bmNhdGVTeW5jKHBhdGgsIGF0dHIuc2l6ZSk7CiAgICB9CiAgIH0gY2F0Y2ggKGUpIHsKICAg
IGlmICghZS5jb2RlKSB0aHJvdyBlOwogICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9f
Q09ERVNbZS5jb2RlXSk7CiAgIH0KICB9KSwKICBsb29rdXA6IChmdW5jdGlvbihwYXJlbnQsIG5h
bWUpIHsKICAgdmFyIHBhdGggPSBQQVRILmpvaW4yKE5PREVGUy5yZWFsUGF0aChwYXJlbnQpLCBu
YW1lKTsKICAgdmFyIG1vZGUgPSBOT0RFRlMuZ2V0TW9kZShwYXRoKTsKICAgcmV0dXJuIE5PREVG
Uy5jcmVhdGVOb2RlKHBhcmVudCwgbmFtZSwgbW9kZSk7CiAgfSksCiAgbWtub2Q6IChmdW5jdGlv
bihwYXJlbnQsIG5hbWUsIG1vZGUsIGRldikgewogICB2YXIgbm9kZSA9IE5PREVGUy5jcmVhdGVO
b2RlKHBhcmVudCwgbmFtZSwgbW9kZSwgZGV2KTsKICAgdmFyIHBhdGggPSBOT0RFRlMucmVhbFBh
dGgobm9kZSk7CiAgIHRyeSB7CiAgICBpZiAoRlMuaXNEaXIobm9kZS5tb2RlKSkgewogICAgIGZz
Lm1rZGlyU3luYyhwYXRoLCBub2RlLm1vZGUpOwogICAgfSBlbHNlIHsKICAgICBmcy53cml0ZUZp
bGVTeW5jKHBhdGgsICIiLCB7CiAgICAgIG1vZGU6IG5vZGUubW9kZQogICAgIH0pOwogICAgfQog
ICB9IGNhdGNoIChlKSB7CiAgICBpZiAoIWUuY29kZSkgdGhyb3cgZTsKICAgIHRocm93IG5ldyBG
Uy5FcnJub0Vycm9yKEVSUk5PX0NPREVTW2UuY29kZV0pOwogICB9CiAgIHJldHVybiBub2RlOwog
IH0pLAogIHJlbmFtZTogKGZ1bmN0aW9uKG9sZE5vZGUsIG5ld0RpciwgbmV3TmFtZSkgewogICB2
YXIgb2xkUGF0aCA9IE5PREVGUy5yZWFsUGF0aChvbGROb2RlKTsKICAgdmFyIG5ld1BhdGggPSBQ
QVRILmpvaW4yKE5PREVGUy5yZWFsUGF0aChuZXdEaXIpLCBuZXdOYW1lKTsKICAgdHJ5IHsKICAg
IGZzLnJlbmFtZVN5bmMob2xkUGF0aCwgbmV3UGF0aCk7CiAgIH0gY2F0Y2ggKGUpIHsKICAgIGlm
ICghZS5jb2RlKSB0aHJvdyBlOwogICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09E
RVNbZS5jb2RlXSk7CiAgIH0KICB9KSwKICB1bmxpbms6IChmdW5jdGlvbihwYXJlbnQsIG5hbWUp
IHsKICAgdmFyIHBhdGggPSBQQVRILmpvaW4yKE5PREVGUy5yZWFsUGF0aChwYXJlbnQpLCBuYW1l
KTsKICAgdHJ5IHsKICAgIGZzLnVubGlua1N5bmMocGF0aCk7CiAgIH0gY2F0Y2ggKGUpIHsKICAg
IGlmICghZS5jb2RlKSB0aHJvdyBlOwogICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9f
Q09ERVNbZS5jb2RlXSk7CiAgIH0KICB9KSwKICBybWRpcjogKGZ1bmN0aW9uKHBhcmVudCwgbmFt
ZSkgewogICB2YXIgcGF0aCA9IFBBVEguam9pbjIoTk9ERUZTLnJlYWxQYXRoKHBhcmVudCksIG5h
bWUpOwogICB0cnkgewogICAgZnMucm1kaXJTeW5jKHBhdGgpOwogICB9IGNhdGNoIChlKSB7CiAg
ICBpZiAoIWUuY29kZSkgdGhyb3cgZTsKICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5P
X0NPREVTW2UuY29kZV0pOwogICB9CiAgfSksCiAgcmVhZGRpcjogKGZ1bmN0aW9uKG5vZGUpIHsK
ICAgdmFyIHBhdGggPSBOT0RFRlMucmVhbFBhdGgobm9kZSk7CiAgIHRyeSB7CiAgICByZXR1cm4g
ZnMucmVhZGRpclN5bmMocGF0aCk7CiAgIH0gY2F0Y2ggKGUpIHsKICAgIGlmICghZS5jb2RlKSB0
aHJvdyBlOwogICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVNbZS5jb2RlXSk7
CiAgIH0KICB9KSwKICBzeW1saW5rOiAoZnVuY3Rpb24ocGFyZW50LCBuZXdOYW1lLCBvbGRQYXRo
KSB7CiAgIHZhciBuZXdQYXRoID0gUEFUSC5qb2luMihOT0RFRlMucmVhbFBhdGgocGFyZW50KSwg
bmV3TmFtZSk7CiAgIHRyeSB7CiAgICBmcy5zeW1saW5rU3luYyhvbGRQYXRoLCBuZXdQYXRoKTsK
ICAgfSBjYXRjaCAoZSkgewogICAgaWYgKCFlLmNvZGUpIHRocm93IGU7CiAgICB0aHJvdyBuZXcg
RlMuRXJybm9FcnJvcihFUlJOT19DT0RFU1tlLmNvZGVdKTsKICAgfQogIH0pLAogIHJlYWRsaW5r
OiAoZnVuY3Rpb24obm9kZSkgewogICB2YXIgcGF0aCA9IE5PREVGUy5yZWFsUGF0aChub2RlKTsK
ICAgdHJ5IHsKICAgIHBhdGggPSBmcy5yZWFkbGlua1N5bmMocGF0aCk7CiAgICBwYXRoID0gTk9E
RUpTX1BBVEgucmVsYXRpdmUoTk9ERUpTX1BBVEgucmVzb2x2ZShub2RlLm1vdW50Lm9wdHMucm9v
dCksIHBhdGgpOwogICAgcmV0dXJuIHBhdGg7CiAgIH0gY2F0Y2ggKGUpIHsKICAgIGlmICghZS5j
b2RlKSB0aHJvdyBlOwogICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVNbZS5j
b2RlXSk7CiAgIH0KICB9KQogfSwKIHN0cmVhbV9vcHM6IHsKICBvcGVuOiAoZnVuY3Rpb24oc3Ry
ZWFtKSB7CiAgIHZhciBwYXRoID0gTk9ERUZTLnJlYWxQYXRoKHN0cmVhbS5ub2RlKTsKICAgdHJ5
IHsKICAgIGlmIChGUy5pc0ZpbGUoc3RyZWFtLm5vZGUubW9kZSkpIHsKICAgICBzdHJlYW0ubmZk
ID0gZnMub3BlblN5bmMocGF0aCwgTk9ERUZTLmZsYWdzVG9QZXJtaXNzaW9uU3RyaW5nKHN0cmVh
bS5mbGFncykpOwogICAgfQogICB9IGNhdGNoIChlKSB7CiAgICBpZiAoIWUuY29kZSkgdGhyb3cg
ZTsKICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTW2UuY29kZV0pOwogICB9
CiAgfSksCiAgY2xvc2U6IChmdW5jdGlvbihzdHJlYW0pIHsKICAgdHJ5IHsKICAgIGlmIChGUy5p
c0ZpbGUoc3RyZWFtLm5vZGUubW9kZSkgJiYgc3RyZWFtLm5mZCkgewogICAgIGZzLmNsb3NlU3lu
YyhzdHJlYW0ubmZkKTsKICAgIH0KICAgfSBjYXRjaCAoZSkgewogICAgaWYgKCFlLmNvZGUpIHRo
cm93IGU7CiAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFU1tlLmNvZGVdKTsK
ICAgfQogIH0pLAogIHJlYWQ6IChmdW5jdGlvbihzdHJlYW0sIGJ1ZmZlciwgb2Zmc2V0LCBsZW5n
dGgsIHBvc2l0aW9uKSB7CiAgIGlmIChsZW5ndGggPT09IDApIHJldHVybiAwOwogICB2YXIgbmJ1
ZmZlciA9IG5ldyBCdWZmZXIobGVuZ3RoKTsKICAgdmFyIHJlczsKICAgdHJ5IHsKICAgIHJlcyA9
IGZzLnJlYWRTeW5jKHN0cmVhbS5uZmQsIG5idWZmZXIsIDAsIGxlbmd0aCwgcG9zaXRpb24pOwog
ICB9IGNhdGNoIChlKSB7CiAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFU1tl
LmNvZGVdKTsKICAgfQogICBpZiAocmVzID4gMCkgewogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBy
ZXM7IGkrKykgewogICAgIGJ1ZmZlcltvZmZzZXQgKyBpXSA9IG5idWZmZXJbaV07CiAgICB9CiAg
IH0KICAgcmV0dXJuIHJlczsKICB9KSwKICB3cml0ZTogKGZ1bmN0aW9uKHN0cmVhbSwgYnVmZmVy
LCBvZmZzZXQsIGxlbmd0aCwgcG9zaXRpb24pIHsKICAgdmFyIG5idWZmZXIgPSBuZXcgQnVmZmVy
KGJ1ZmZlci5zdWJhcnJheShvZmZzZXQsIG9mZnNldCArIGxlbmd0aCkpOwogICB2YXIgcmVzOwog
ICB0cnkgewogICAgcmVzID0gZnMud3JpdGVTeW5jKHN0cmVhbS5uZmQsIG5idWZmZXIsIDAsIGxl
bmd0aCwgcG9zaXRpb24pOwogICB9IGNhdGNoIChlKSB7CiAgICB0aHJvdyBuZXcgRlMuRXJybm9F
cnJvcihFUlJOT19DT0RFU1tlLmNvZGVdKTsKICAgfQogICByZXR1cm4gcmVzOwogIH0pLAogIGxs
c2VlazogKGZ1bmN0aW9uKHN0cmVhbSwgb2Zmc2V0LCB3aGVuY2UpIHsKICAgdmFyIHBvc2l0aW9u
ID0gb2Zmc2V0OwogICBpZiAod2hlbmNlID09PSAxKSB7CiAgICBwb3NpdGlvbiArPSBzdHJlYW0u
cG9zaXRpb247CiAgIH0gZWxzZSBpZiAod2hlbmNlID09PSAyKSB7CiAgICBpZiAoRlMuaXNGaWxl
KHN0cmVhbS5ub2RlLm1vZGUpKSB7CiAgICAgdHJ5IHsKICAgICAgdmFyIHN0YXQgPSBmcy5mc3Rh
dFN5bmMoc3RyZWFtLm5mZCk7CiAgICAgIHBvc2l0aW9uICs9IHN0YXQuc2l6ZTsKICAgICB9IGNh
dGNoIChlKSB7CiAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTW2UuY29k
ZV0pOwogICAgIH0KICAgIH0KICAgfQogICBpZiAocG9zaXRpb24gPCAwKSB7CiAgICB0aHJvdyBu
ZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FSU5WQUwpOwogICB9CiAgIHJldHVybiBwb3Np
dGlvbjsKICB9KQogfQp9Owp2YXIgV09SS0VSRlMgPSB7CiBESVJfTU9ERTogMTY4OTUsCiBGSUxF
X01PREU6IDMzMjc5LAogcmVhZGVyOiBudWxsLAogbW91bnQ6IChmdW5jdGlvbihtb3VudCkgewog
IGFzc2VydChFTlZJUk9OTUVOVF9JU19XT1JLRVIpOwogIGlmICghV09SS0VSRlMucmVhZGVyKSBX
T1JLRVJGUy5yZWFkZXIgPSBuZXcgRmlsZVJlYWRlclN5bmM7CiAgdmFyIHJvb3QgPSBXT1JLRVJG
Uy5jcmVhdGVOb2RlKG51bGwsICIvIiwgV09SS0VSRlMuRElSX01PREUsIDApOwogIEFycmF5LnBy
b3RvdHlwZS5mb3JFYWNoLmNhbGwobW91bnQub3B0c1siZmlsZXMiXSB8fCBbXSwgKGZ1bmN0aW9u
KGZpbGUpIHsKICAgV09SS0VSRlMuY3JlYXRlTm9kZShyb290LCBmaWxlLm5hbWUsIFdPUktFUkZT
LkZJTEVfTU9ERSwgMCwgZmlsZSwgZmlsZS5sYXN0TW9kaWZpZWREYXRlKTsKICB9KSk7CiAgKG1v
dW50Lm9wdHNbImJsb2JzIl0gfHwgW10pLmZvckVhY2goKGZ1bmN0aW9uKG9iaikgewogICBXT1JL
RVJGUy5jcmVhdGVOb2RlKHJvb3QsIG9ialsibmFtZSJdLCBXT1JLRVJGUy5GSUxFX01PREUsIDAs
IG9ialsiZGF0YSJdKTsKICB9KSk7CiAgcmV0dXJuIHJvb3Q7CiB9KSwKIGNyZWF0ZU5vZGU6IChm
dW5jdGlvbihwYXJlbnQsIG5hbWUsIG1vZGUsIGRldiwgY29udGVudHMsIG10aW1lKSB7CiAgdmFy
IG5vZGUgPSBGUy5jcmVhdGVOb2RlKHBhcmVudCwgbmFtZSwgbW9kZSk7CiAgbm9kZS5tb2RlID0g
bW9kZTsKICBub2RlLm5vZGVfb3BzID0gV09SS0VSRlMubm9kZV9vcHM7CiAgbm9kZS5zdHJlYW1f
b3BzID0gV09SS0VSRlMuc3RyZWFtX29wczsKICBub2RlLnRpbWVzdGFtcCA9IChtdGltZSB8fCBu
ZXcgRGF0ZSkuZ2V0VGltZSgpOwogIGlmIChwYXJlbnQpIHsKICAgbm9kZS5zaXplID0gY29udGVu
dHMuc2l6ZTsKICAgbm9kZS5jb250ZW50cyA9IGNvbnRlbnRzOwogICBwYXJlbnQuY29udGVudHNb
bmFtZV0gPSBub2RlOwogIH0gZWxzZSB7CiAgIG5vZGUuc2l6ZSA9IDQwOTY7CiAgIG5vZGUuY29u
dGVudHMgPSB7fTsKICB9CiAgcmV0dXJuIG5vZGU7CiB9KSwKIG5vZGVfb3BzOiB7CiAgZ2V0YXR0
cjogKGZ1bmN0aW9uKG5vZGUpIHsKICAgcmV0dXJuIHsKICAgIGRldjogMSwKICAgIGlubzogdW5k
ZWZpbmVkLAogICAgbW9kZTogbm9kZS5tb2RlLAogICAgbmxpbms6IDEsCiAgICB1aWQ6IDAsCiAg
ICBnaWQ6IDAsCiAgICByZGV2OiB1bmRlZmluZWQsCiAgICBzaXplOiBub2RlLnNpemUsCiAgICBh
dGltZTogbmV3IERhdGUobm9kZS50aW1lc3RhbXApLAogICAgbXRpbWU6IG5ldyBEYXRlKG5vZGUu
dGltZXN0YW1wKSwKICAgIGN0aW1lOiBuZXcgRGF0ZShub2RlLnRpbWVzdGFtcCksCiAgICBibGtz
aXplOiA0MDk2LAogICAgYmxvY2tzOiBNYXRoLmNlaWwobm9kZS5zaXplIC8gNDA5NikKICAgfTsK
ICB9KSwKICBzZXRhdHRyOiAoZnVuY3Rpb24obm9kZSwgYXR0cikgewogICBpZiAoYXR0ci5tb2Rl
ICE9PSB1bmRlZmluZWQpIHsKICAgIG5vZGUubW9kZSA9IGF0dHIubW9kZTsKICAgfQogICBpZiAo
YXR0ci50aW1lc3RhbXAgIT09IHVuZGVmaW5lZCkgewogICAgbm9kZS50aW1lc3RhbXAgPSBhdHRy
LnRpbWVzdGFtcDsKICAgfQogIH0pLAogIGxvb2t1cDogKGZ1bmN0aW9uKHBhcmVudCwgbmFtZSkg
ewogICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FTk9FTlQpOwogIH0pLAog
IG1rbm9kOiAoZnVuY3Rpb24ocGFyZW50LCBuYW1lLCBtb2RlLCBkZXYpIHsKICAgdGhyb3cgbmV3
IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRVBFUk0pOwogIH0pLAogIHJlbmFtZTogKGZ1bmN0
aW9uKG9sZE5vZGUsIG5ld0RpciwgbmV3TmFtZSkgewogICB0aHJvdyBuZXcgRlMuRXJybm9FcnJv
cihFUlJOT19DT0RFUy5FUEVSTSk7CiAgfSksCiAgdW5saW5rOiAoZnVuY3Rpb24ocGFyZW50LCBu
YW1lKSB7CiAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVQRVJNKTsKICB9
KSwKICBybWRpcjogKGZ1bmN0aW9uKHBhcmVudCwgbmFtZSkgewogICB0aHJvdyBuZXcgRlMuRXJy
bm9FcnJvcihFUlJOT19DT0RFUy5FUEVSTSk7CiAgfSksCiAgcmVhZGRpcjogKGZ1bmN0aW9uKG5v
ZGUpIHsKICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRVBFUk0pOwogIH0p
LAogIHN5bWxpbms6IChmdW5jdGlvbihwYXJlbnQsIG5ld05hbWUsIG9sZFBhdGgpIHsKICAgdGhy
b3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRVBFUk0pOwogIH0pLAogIHJlYWRsaW5r
OiAoZnVuY3Rpb24obm9kZSkgewogICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RF
Uy5FUEVSTSk7CiAgfSkKIH0sCiBzdHJlYW1fb3BzOiB7CiAgcmVhZDogKGZ1bmN0aW9uKHN0cmVh
bSwgYnVmZmVyLCBvZmZzZXQsIGxlbmd0aCwgcG9zaXRpb24pIHsKICAgaWYgKHBvc2l0aW9uID49
IHN0cmVhbS5ub2RlLnNpemUpIHJldHVybiAwOwogICB2YXIgY2h1bmsgPSBzdHJlYW0ubm9kZS5j
b250ZW50cy5zbGljZShwb3NpdGlvbiwgcG9zaXRpb24gKyBsZW5ndGgpOwogICB2YXIgYWIgPSBX
T1JLRVJGUy5yZWFkZXIucmVhZEFzQXJyYXlCdWZmZXIoY2h1bmspOwogICBidWZmZXIuc2V0KG5l
dyBVaW50OEFycmF5KGFiKSwgb2Zmc2V0KTsKICAgcmV0dXJuIGNodW5rLnNpemU7CiAgfSksCiAg
d3JpdGU6IChmdW5jdGlvbihzdHJlYW0sIGJ1ZmZlciwgb2Zmc2V0LCBsZW5ndGgsIHBvc2l0aW9u
KSB7CiAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVJTyk7CiAgfSksCiAg
bGxzZWVrOiAoZnVuY3Rpb24oc3RyZWFtLCBvZmZzZXQsIHdoZW5jZSkgewogICB2YXIgcG9zaXRp
b24gPSBvZmZzZXQ7CiAgIGlmICh3aGVuY2UgPT09IDEpIHsKICAgIHBvc2l0aW9uICs9IHN0cmVh
bS5wb3NpdGlvbjsKICAgfSBlbHNlIGlmICh3aGVuY2UgPT09IDIpIHsKICAgIGlmIChGUy5pc0Zp
bGUoc3RyZWFtLm5vZGUubW9kZSkpIHsKICAgICBwb3NpdGlvbiArPSBzdHJlYW0ubm9kZS5zaXpl
OwogICAgfQogICB9CiAgIGlmIChwb3NpdGlvbiA8IDApIHsKICAgIHRocm93IG5ldyBGUy5FcnJu
b0Vycm9yKEVSUk5PX0NPREVTLkVJTlZBTCk7CiAgIH0KICAgcmV0dXJuIHBvc2l0aW9uOwogIH0p
CiB9Cn07CnZhciBfc3RkaW4gPSBhbGxvY2F0ZSgxLCAiaTMyKiIsIEFMTE9DX1NUQVRJQyk7CnZh
ciBfc3Rkb3V0ID0gYWxsb2NhdGUoMSwgImkzMioiLCBBTExPQ19TVEFUSUMpOwp2YXIgX3N0ZGVy
ciA9IGFsbG9jYXRlKDEsICJpMzIqIiwgQUxMT0NfU1RBVElDKTsKdmFyIEZTID0gewogcm9vdDog
bnVsbCwKIG1vdW50czogW10sCiBkZXZpY2VzOiBbIG51bGwgXSwKIHN0cmVhbXM6IFtdLAogbmV4
dElub2RlOiAxLAogbmFtZVRhYmxlOiBudWxsLAogY3VycmVudFBhdGg6ICIvIiwKIGluaXRpYWxp
emVkOiBmYWxzZSwKIGlnbm9yZVBlcm1pc3Npb25zOiB0cnVlLAogdHJhY2tpbmdEZWxlZ2F0ZTog
e30sCiB0cmFja2luZzogewogIG9wZW5GbGFnczogewogICBSRUFEOiAxLAogICBXUklURTogMgog
IH0KIH0sCiBFcnJub0Vycm9yOiBudWxsLAogZ2VuZXJpY0Vycm9yczoge30sCiBmaWxlc3lzdGVt
czogbnVsbCwKIGhhbmRsZUZTRXJyb3I6IChmdW5jdGlvbihlKSB7CiAgaWYgKCEoZSBpbnN0YW5j
ZW9mIEZTLkVycm5vRXJyb3IpKSB0aHJvdyBlICsgIiA6ICIgKyBzdGFja1RyYWNlKCk7CiAgcmV0
dXJuIF9fX3NldEVyck5vKGUuZXJybm8pOwogfSksCiBsb29rdXBQYXRoOiAoZnVuY3Rpb24ocGF0
aCwgb3B0cykgewogIHBhdGggPSBQQVRILnJlc29sdmUoRlMuY3dkKCksIHBhdGgpOwogIG9wdHMg
PSBvcHRzIHx8IHt9OwogIGlmICghcGF0aCkgcmV0dXJuIHsKICAgcGF0aDogIiIsCiAgIG5vZGU6
IG51bGwKICB9OwogIHZhciBkZWZhdWx0cyA9IHsKICAgZm9sbG93X21vdW50OiB0cnVlLAogICBy
ZWN1cnNlX2NvdW50OiAwCiAgfTsKICBmb3IgKHZhciBrZXkgaW4gZGVmYXVsdHMpIHsKICAgaWYg
KG9wdHNba2V5XSA9PT0gdW5kZWZpbmVkKSB7CiAgICBvcHRzW2tleV0gPSBkZWZhdWx0c1trZXld
OwogICB9CiAgfQogIGlmIChvcHRzLnJlY3Vyc2VfY291bnQgPiA4KSB7CiAgIHRocm93IG5ldyBG
Uy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVMT09QKTsKICB9CiAgdmFyIHBhcnRzID0gUEFUSC5u
b3JtYWxpemVBcnJheShwYXRoLnNwbGl0KCIvIikuZmlsdGVyKChmdW5jdGlvbihwKSB7CiAgIHJl
dHVybiAhIXA7CiAgfSkpLCBmYWxzZSk7CiAgdmFyIGN1cnJlbnQgPSBGUy5yb290OwogIHZhciBj
dXJyZW50X3BhdGggPSAiLyI7CiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXJ0cy5sZW5ndGg7IGkr
KykgewogICB2YXIgaXNsYXN0ID0gaSA9PT0gcGFydHMubGVuZ3RoIC0gMTsKICAgaWYgKGlzbGFz
dCAmJiBvcHRzLnBhcmVudCkgewogICAgYnJlYWs7CiAgIH0KICAgY3VycmVudCA9IEZTLmxvb2t1
cE5vZGUoY3VycmVudCwgcGFydHNbaV0pOwogICBjdXJyZW50X3BhdGggPSBQQVRILmpvaW4yKGN1
cnJlbnRfcGF0aCwgcGFydHNbaV0pOwogICBpZiAoRlMuaXNNb3VudHBvaW50KGN1cnJlbnQpKSB7
CiAgICBpZiAoIWlzbGFzdCB8fCBpc2xhc3QgJiYgb3B0cy5mb2xsb3dfbW91bnQpIHsKICAgICBj
dXJyZW50ID0gY3VycmVudC5tb3VudGVkLnJvb3Q7CiAgICB9CiAgIH0KICAgaWYgKCFpc2xhc3Qg
fHwgb3B0cy5mb2xsb3cpIHsKICAgIHZhciBjb3VudCA9IDA7CiAgICB3aGlsZSAoRlMuaXNMaW5r
KGN1cnJlbnQubW9kZSkpIHsKICAgICB2YXIgbGluayA9IEZTLnJlYWRsaW5rKGN1cnJlbnRfcGF0
aCk7CiAgICAgY3VycmVudF9wYXRoID0gUEFUSC5yZXNvbHZlKFBBVEguZGlybmFtZShjdXJyZW50
X3BhdGgpLCBsaW5rKTsKICAgICB2YXIgbG9va3VwID0gRlMubG9va3VwUGF0aChjdXJyZW50X3Bh
dGgsIHsKICAgICAgcmVjdXJzZV9jb3VudDogb3B0cy5yZWN1cnNlX2NvdW50CiAgICAgfSk7CiAg
ICAgY3VycmVudCA9IGxvb2t1cC5ub2RlOwogICAgIGlmIChjb3VudCsrID4gNDApIHsKICAgICAg
dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUxPT1ApOwogICAgIH0KICAgIH0K
ICAgfQogIH0KICByZXR1cm4gewogICBwYXRoOiBjdXJyZW50X3BhdGgsCiAgIG5vZGU6IGN1cnJl
bnQKICB9OwogfSksCiBnZXRQYXRoOiAoZnVuY3Rpb24obm9kZSkgewogIHZhciBwYXRoOwogIHdo
aWxlICh0cnVlKSB7CiAgIGlmIChGUy5pc1Jvb3Qobm9kZSkpIHsKICAgIHZhciBtb3VudCA9IG5v
ZGUubW91bnQubW91bnRwb2ludDsKICAgIGlmICghcGF0aCkgcmV0dXJuIG1vdW50OwogICAgcmV0
dXJuIG1vdW50W21vdW50Lmxlbmd0aCAtIDFdICE9PSAiLyIgPyBtb3VudCArICIvIiArIHBhdGgg
OiBtb3VudCArIHBhdGg7CiAgIH0KICAgcGF0aCA9IHBhdGggPyBub2RlLm5hbWUgKyAiLyIgKyBw
YXRoIDogbm9kZS5uYW1lOwogICBub2RlID0gbm9kZS5wYXJlbnQ7CiAgfQogfSksCiBoYXNoTmFt
ZTogKGZ1bmN0aW9uKHBhcmVudGlkLCBuYW1lKSB7CiAgdmFyIGhhc2ggPSAwOwogIGZvciAodmFy
IGkgPSAwOyBpIDwgbmFtZS5sZW5ndGg7IGkrKykgewogICBoYXNoID0gKGhhc2ggPDwgNSkgLSBo
YXNoICsgbmFtZS5jaGFyQ29kZUF0KGkpIHwgMDsKICB9CiAgcmV0dXJuIChwYXJlbnRpZCArIGhh
c2ggPj4+IDApICUgRlMubmFtZVRhYmxlLmxlbmd0aDsKIH0pLAogaGFzaEFkZE5vZGU6IChmdW5j
dGlvbihub2RlKSB7CiAgdmFyIGhhc2ggPSBGUy5oYXNoTmFtZShub2RlLnBhcmVudC5pZCwgbm9k
ZS5uYW1lKTsKICBub2RlLm5hbWVfbmV4dCA9IEZTLm5hbWVUYWJsZVtoYXNoXTsKICBGUy5uYW1l
VGFibGVbaGFzaF0gPSBub2RlOwogfSksCiBoYXNoUmVtb3ZlTm9kZTogKGZ1bmN0aW9uKG5vZGUp
IHsKICB2YXIgaGFzaCA9IEZTLmhhc2hOYW1lKG5vZGUucGFyZW50LmlkLCBub2RlLm5hbWUpOwog
IGlmIChGUy5uYW1lVGFibGVbaGFzaF0gPT09IG5vZGUpIHsKICAgRlMubmFtZVRhYmxlW2hhc2hd
ID0gbm9kZS5uYW1lX25leHQ7CiAgfSBlbHNlIHsKICAgdmFyIGN1cnJlbnQgPSBGUy5uYW1lVGFi
bGVbaGFzaF07CiAgIHdoaWxlIChjdXJyZW50KSB7CiAgICBpZiAoY3VycmVudC5uYW1lX25leHQg
PT09IG5vZGUpIHsKICAgICBjdXJyZW50Lm5hbWVfbmV4dCA9IG5vZGUubmFtZV9uZXh0OwogICAg
IGJyZWFrOwogICAgfQogICAgY3VycmVudCA9IGN1cnJlbnQubmFtZV9uZXh0OwogICB9CiAgfQog
fSksCiBsb29rdXBOb2RlOiAoZnVuY3Rpb24ocGFyZW50LCBuYW1lKSB7CiAgdmFyIGVyciA9IEZT
Lm1heUxvb2t1cChwYXJlbnQpOwogIGlmIChlcnIpIHsKICAgdGhyb3cgbmV3IEZTLkVycm5vRXJy
b3IoZXJyLCBwYXJlbnQpOwogIH0KICB2YXIgaGFzaCA9IEZTLmhhc2hOYW1lKHBhcmVudC5pZCwg
bmFtZSk7CiAgZm9yICh2YXIgbm9kZSA9IEZTLm5hbWVUYWJsZVtoYXNoXTsgbm9kZTsgbm9kZSA9
IG5vZGUubmFtZV9uZXh0KSB7CiAgIHZhciBub2RlTmFtZSA9IG5vZGUubmFtZTsKICAgaWYgKG5v
ZGUucGFyZW50LmlkID09PSBwYXJlbnQuaWQgJiYgbm9kZU5hbWUgPT09IG5hbWUpIHsKICAgIHJl
dHVybiBub2RlOwogICB9CiAgfQogIHJldHVybiBGUy5sb29rdXAocGFyZW50LCBuYW1lKTsKIH0p
LAogY3JlYXRlTm9kZTogKGZ1bmN0aW9uKHBhcmVudCwgbmFtZSwgbW9kZSwgcmRldikgewogIGlm
ICghRlMuRlNOb2RlKSB7CiAgIEZTLkZTTm9kZSA9IChmdW5jdGlvbihwYXJlbnQsIG5hbWUsIG1v
ZGUsIHJkZXYpIHsKICAgIGlmICghcGFyZW50KSB7CiAgICAgcGFyZW50ID0gdGhpczsKICAgIH0K
ICAgIHRoaXMucGFyZW50ID0gcGFyZW50OwogICAgdGhpcy5tb3VudCA9IHBhcmVudC5tb3VudDsK
ICAgIHRoaXMubW91bnRlZCA9IG51bGw7CiAgICB0aGlzLmlkID0gRlMubmV4dElub2RlKys7CiAg
ICB0aGlzLm5hbWUgPSBuYW1lOwogICAgdGhpcy5tb2RlID0gbW9kZTsKICAgIHRoaXMubm9kZV9v
cHMgPSB7fTsKICAgIHRoaXMuc3RyZWFtX29wcyA9IHt9OwogICAgdGhpcy5yZGV2ID0gcmRldjsK
ICAgfSk7CiAgIEZTLkZTTm9kZS5wcm90b3R5cGUgPSB7fTsKICAgdmFyIHJlYWRNb2RlID0gMjky
IHwgNzM7CiAgIHZhciB3cml0ZU1vZGUgPSAxNDY7CiAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVz
KEZTLkZTTm9kZS5wcm90b3R5cGUsIHsKICAgIHJlYWQ6IHsKICAgICBnZXQ6IChmdW5jdGlvbigp
IHsKICAgICAgcmV0dXJuICh0aGlzLm1vZGUgJiByZWFkTW9kZSkgPT09IHJlYWRNb2RlOwogICAg
IH0pLAogICAgIHNldDogKGZ1bmN0aW9uKHZhbCkgewogICAgICB2YWwgPyB0aGlzLm1vZGUgfD0g
cmVhZE1vZGUgOiB0aGlzLm1vZGUgJj0gfnJlYWRNb2RlOwogICAgIH0pCiAgICB9LAogICAgd3Jp
dGU6IHsKICAgICBnZXQ6IChmdW5jdGlvbigpIHsKICAgICAgcmV0dXJuICh0aGlzLm1vZGUgJiB3
cml0ZU1vZGUpID09PSB3cml0ZU1vZGU7CiAgICAgfSksCiAgICAgc2V0OiAoZnVuY3Rpb24odmFs
KSB7CiAgICAgIHZhbCA/IHRoaXMubW9kZSB8PSB3cml0ZU1vZGUgOiB0aGlzLm1vZGUgJj0gfndy
aXRlTW9kZTsKICAgICB9KQogICAgfSwKICAgIGlzRm9sZGVyOiB7CiAgICAgZ2V0OiAoZnVuY3Rp
b24oKSB7CiAgICAgIHJldHVybiBGUy5pc0Rpcih0aGlzLm1vZGUpOwogICAgIH0pCiAgICB9LAog
ICAgaXNEZXZpY2U6IHsKICAgICBnZXQ6IChmdW5jdGlvbigpIHsKICAgICAgcmV0dXJuIEZTLmlz
Q2hyZGV2KHRoaXMubW9kZSk7CiAgICAgfSkKICAgIH0KICAgfSk7CiAgfQogIHZhciBub2RlID0g
bmV3IEZTLkZTTm9kZShwYXJlbnQsIG5hbWUsIG1vZGUsIHJkZXYpOwogIEZTLmhhc2hBZGROb2Rl
KG5vZGUpOwogIHJldHVybiBub2RlOwogfSksCiBkZXN0cm95Tm9kZTogKGZ1bmN0aW9uKG5vZGUp
IHsKICBGUy5oYXNoUmVtb3ZlTm9kZShub2RlKTsKIH0pLAogaXNSb290OiAoZnVuY3Rpb24obm9k
ZSkgewogIHJldHVybiBub2RlID09PSBub2RlLnBhcmVudDsKIH0pLAogaXNNb3VudHBvaW50OiAo
ZnVuY3Rpb24obm9kZSkgewogIHJldHVybiAhIW5vZGUubW91bnRlZDsKIH0pLAogaXNGaWxlOiAo
ZnVuY3Rpb24obW9kZSkgewogIHJldHVybiAobW9kZSAmIDYxNDQwKSA9PT0gMzI3Njg7CiB9KSwK
IGlzRGlyOiAoZnVuY3Rpb24obW9kZSkgewogIHJldHVybiAobW9kZSAmIDYxNDQwKSA9PT0gMTYz
ODQ7CiB9KSwKIGlzTGluazogKGZ1bmN0aW9uKG1vZGUpIHsKICByZXR1cm4gKG1vZGUgJiA2MTQ0
MCkgPT09IDQwOTYwOwogfSksCiBpc0NocmRldjogKGZ1bmN0aW9uKG1vZGUpIHsKICByZXR1cm4g
KG1vZGUgJiA2MTQ0MCkgPT09IDgxOTI7CiB9KSwKIGlzQmxrZGV2OiAoZnVuY3Rpb24obW9kZSkg
ewogIHJldHVybiAobW9kZSAmIDYxNDQwKSA9PT0gMjQ1NzY7CiB9KSwKIGlzRklGTzogKGZ1bmN0
aW9uKG1vZGUpIHsKICByZXR1cm4gKG1vZGUgJiA2MTQ0MCkgPT09IDQwOTY7CiB9KSwKIGlzU29j
a2V0OiAoZnVuY3Rpb24obW9kZSkgewogIHJldHVybiAobW9kZSAmIDQ5MTUyKSA9PT0gNDkxNTI7
CiB9KSwKIGZsYWdNb2RlczogewogICJyIjogMCwKICAicnMiOiAxMDUyNjcyLAogICJyKyI6IDIs
CiAgInciOiA1NzcsCiAgInd4IjogNzA1LAogICJ4dyI6IDcwNSwKICAidysiOiA1NzgsCiAgInd4
KyI6IDcwNiwKICAieHcrIjogNzA2LAogICJhIjogMTA4OSwKICAiYXgiOiAxMjE3LAogICJ4YSI6
IDEyMTcsCiAgImErIjogMTA5MCwKICAiYXgrIjogMTIxOCwKICAieGErIjogMTIxOAogfSwKIG1v
ZGVTdHJpbmdUb0ZsYWdzOiAoZnVuY3Rpb24oc3RyKSB7CiAgdmFyIGZsYWdzID0gRlMuZmxhZ01v
ZGVzW3N0cl07CiAgaWYgKHR5cGVvZiBmbGFncyA9PT0gInVuZGVmaW5lZCIpIHsKICAgdGhyb3cg
bmV3IEVycm9yKCJVbmtub3duIGZpbGUgb3BlbiBtb2RlOiAiICsgc3RyKTsKICB9CiAgcmV0dXJu
IGZsYWdzOwogfSksCiBmbGFnc1RvUGVybWlzc2lvblN0cmluZzogKGZ1bmN0aW9uKGZsYWcpIHsK
ICB2YXIgcGVybXMgPSBbICJyIiwgInciLCAicnciIF1bZmxhZyAmIDNdOwogIGlmIChmbGFnICYg
NTEyKSB7CiAgIHBlcm1zICs9ICJ3IjsKICB9CiAgcmV0dXJuIHBlcm1zOwogfSksCiBub2RlUGVy
bWlzc2lvbnM6IChmdW5jdGlvbihub2RlLCBwZXJtcykgewogIGlmIChGUy5pZ25vcmVQZXJtaXNz
aW9ucykgewogICByZXR1cm4gMDsKICB9CiAgaWYgKHBlcm1zLmluZGV4T2YoInIiKSAhPT0gLTEg
JiYgIShub2RlLm1vZGUgJiAyOTIpKSB7CiAgIHJldHVybiBFUlJOT19DT0RFUy5FQUNDRVM7CiAg
fSBlbHNlIGlmIChwZXJtcy5pbmRleE9mKCJ3IikgIT09IC0xICYmICEobm9kZS5tb2RlICYgMTQ2
KSkgewogICByZXR1cm4gRVJSTk9fQ09ERVMuRUFDQ0VTOwogIH0gZWxzZSBpZiAocGVybXMuaW5k
ZXhPZigieCIpICE9PSAtMSAmJiAhKG5vZGUubW9kZSAmIDczKSkgewogICByZXR1cm4gRVJSTk9f
Q09ERVMuRUFDQ0VTOwogIH0KICByZXR1cm4gMDsKIH0pLAogbWF5TG9va3VwOiAoZnVuY3Rpb24o
ZGlyKSB7CiAgdmFyIGVyciA9IEZTLm5vZGVQZXJtaXNzaW9ucyhkaXIsICJ4Iik7CiAgaWYgKGVy
cikgcmV0dXJuIGVycjsKICBpZiAoIWRpci5ub2RlX29wcy5sb29rdXApIHJldHVybiBFUlJOT19D
T0RFUy5FQUNDRVM7CiAgcmV0dXJuIDA7CiB9KSwKIG1heUNyZWF0ZTogKGZ1bmN0aW9uKGRpciwg
bmFtZSkgewogIHRyeSB7CiAgIHZhciBub2RlID0gRlMubG9va3VwTm9kZShkaXIsIG5hbWUpOwog
ICByZXR1cm4gRVJSTk9fQ09ERVMuRUVYSVNUOwogIH0gY2F0Y2ggKGUpIHt9CiAgcmV0dXJuIEZT
Lm5vZGVQZXJtaXNzaW9ucyhkaXIsICJ3eCIpOwogfSksCiBtYXlEZWxldGU6IChmdW5jdGlvbihk
aXIsIG5hbWUsIGlzZGlyKSB7CiAgdmFyIG5vZGU7CiAgdHJ5IHsKICAgbm9kZSA9IEZTLmxvb2t1
cE5vZGUoZGlyLCBuYW1lKTsKICB9IGNhdGNoIChlKSB7CiAgIHJldHVybiBlLmVycm5vOwogIH0K
ICB2YXIgZXJyID0gRlMubm9kZVBlcm1pc3Npb25zKGRpciwgInd4Iik7CiAgaWYgKGVycikgewog
ICByZXR1cm4gZXJyOwogIH0KICBpZiAoaXNkaXIpIHsKICAgaWYgKCFGUy5pc0Rpcihub2RlLm1v
ZGUpKSB7CiAgICByZXR1cm4gRVJSTk9fQ09ERVMuRU5PVERJUjsKICAgfQogICBpZiAoRlMuaXNS
b290KG5vZGUpIHx8IEZTLmdldFBhdGgobm9kZSkgPT09IEZTLmN3ZCgpKSB7CiAgICByZXR1cm4g
RVJSTk9fQ09ERVMuRUJVU1k7CiAgIH0KICB9IGVsc2UgewogICBpZiAoRlMuaXNEaXIobm9kZS5t
b2RlKSkgewogICAgcmV0dXJuIEVSUk5PX0NPREVTLkVJU0RJUjsKICAgfQogIH0KICByZXR1cm4g
MDsKIH0pLAogbWF5T3BlbjogKGZ1bmN0aW9uKG5vZGUsIGZsYWdzKSB7CiAgaWYgKCFub2RlKSB7
CiAgIHJldHVybiBFUlJOT19DT0RFUy5FTk9FTlQ7CiAgfQogIGlmIChGUy5pc0xpbmsobm9kZS5t
b2RlKSkgewogICByZXR1cm4gRVJSTk9fQ09ERVMuRUxPT1A7CiAgfSBlbHNlIGlmIChGUy5pc0Rp
cihub2RlLm1vZGUpKSB7CiAgIGlmICgoZmxhZ3MgJiAyMDk3MTU1KSAhPT0gMCB8fCBmbGFncyAm
IDUxMikgewogICAgcmV0dXJuIEVSUk5PX0NPREVTLkVJU0RJUjsKICAgfQogIH0KICByZXR1cm4g
RlMubm9kZVBlcm1pc3Npb25zKG5vZGUsIEZTLmZsYWdzVG9QZXJtaXNzaW9uU3RyaW5nKGZsYWdz
KSk7CiB9KSwKIE1BWF9PUEVOX0ZEUzogNDA5NiwKIG5leHRmZDogKGZ1bmN0aW9uKGZkX3N0YXJ0
LCBmZF9lbmQpIHsKICBmZF9zdGFydCA9IGZkX3N0YXJ0IHx8IDA7CiAgZmRfZW5kID0gZmRfZW5k
IHx8IEZTLk1BWF9PUEVOX0ZEUzsKICBmb3IgKHZhciBmZCA9IGZkX3N0YXJ0OyBmZCA8PSBmZF9l
bmQ7IGZkKyspIHsKICAgaWYgKCFGUy5zdHJlYW1zW2ZkXSkgewogICAgcmV0dXJuIGZkOwogICB9
CiAgfQogIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVNRklMRSk7CiB9KSwK
IGdldFN0cmVhbTogKGZ1bmN0aW9uKGZkKSB7CiAgcmV0dXJuIEZTLnN0cmVhbXNbZmRdOwogfSks
CiBjcmVhdGVTdHJlYW06IChmdW5jdGlvbihzdHJlYW0sIGZkX3N0YXJ0LCBmZF9lbmQpIHsKICBp
ZiAoIUZTLkZTU3RyZWFtKSB7CiAgIEZTLkZTU3RyZWFtID0gKGZ1bmN0aW9uKCkge30pOwogICBG
Uy5GU1N0cmVhbS5wcm90b3R5cGUgPSB7fTsKICAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoRlMu
RlNTdHJlYW0ucHJvdG90eXBlLCB7CiAgICBvYmplY3Q6IHsKICAgICBnZXQ6IChmdW5jdGlvbigp
IHsKICAgICAgcmV0dXJuIHRoaXMubm9kZTsKICAgICB9KSwKICAgICBzZXQ6IChmdW5jdGlvbih2
YWwpIHsKICAgICAgdGhpcy5ub2RlID0gdmFsOwogICAgIH0pCiAgICB9LAogICAgaXNSZWFkOiB7
CiAgICAgZ2V0OiAoZnVuY3Rpb24oKSB7CiAgICAgIHJldHVybiAodGhpcy5mbGFncyAmIDIwOTcx
NTUpICE9PSAxOwogICAgIH0pCiAgICB9LAogICAgaXNXcml0ZTogewogICAgIGdldDogKGZ1bmN0
aW9uKCkgewogICAgICByZXR1cm4gKHRoaXMuZmxhZ3MgJiAyMDk3MTU1KSAhPT0gMDsKICAgICB9
KQogICAgfSwKICAgIGlzQXBwZW5kOiB7CiAgICAgZ2V0OiAoZnVuY3Rpb24oKSB7CiAgICAgIHJl
dHVybiB0aGlzLmZsYWdzICYgMTAyNDsKICAgICB9KQogICAgfQogICB9KTsKICB9CiAgdmFyIG5l
d1N0cmVhbSA9IG5ldyBGUy5GU1N0cmVhbTsKICBmb3IgKHZhciBwIGluIHN0cmVhbSkgewogICBu
ZXdTdHJlYW1bcF0gPSBzdHJlYW1bcF07CiAgfQogIHN0cmVhbSA9IG5ld1N0cmVhbTsKICB2YXIg
ZmQgPSBGUy5uZXh0ZmQoZmRfc3RhcnQsIGZkX2VuZCk7CiAgc3RyZWFtLmZkID0gZmQ7CiAgRlMu
c3RyZWFtc1tmZF0gPSBzdHJlYW07CiAgcmV0dXJuIHN0cmVhbTsKIH0pLAogY2xvc2VTdHJlYW06
IChmdW5jdGlvbihmZCkgewogIEZTLnN0cmVhbXNbZmRdID0gbnVsbDsKIH0pLAogY2hyZGV2X3N0
cmVhbV9vcHM6IHsKICBvcGVuOiAoZnVuY3Rpb24oc3RyZWFtKSB7CiAgIHZhciBkZXZpY2UgPSBG
Uy5nZXREZXZpY2Uoc3RyZWFtLm5vZGUucmRldik7CiAgIHN0cmVhbS5zdHJlYW1fb3BzID0gZGV2
aWNlLnN0cmVhbV9vcHM7CiAgIGlmIChzdHJlYW0uc3RyZWFtX29wcy5vcGVuKSB7CiAgICBzdHJl
YW0uc3RyZWFtX29wcy5vcGVuKHN0cmVhbSk7CiAgIH0KICB9KSwKICBsbHNlZWs6IChmdW5jdGlv
bigpIHsKICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRVNQSVBFKTsKICB9
KQogfSwKIG1ham9yOiAoZnVuY3Rpb24oZGV2KSB7CiAgcmV0dXJuIGRldiA+PiA4OwogfSksCiBt
aW5vcjogKGZ1bmN0aW9uKGRldikgewogIHJldHVybiBkZXYgJiAyNTU7CiB9KSwKIG1ha2VkZXY6
IChmdW5jdGlvbihtYSwgbWkpIHsKICByZXR1cm4gbWEgPDwgOCB8IG1pOwogfSksCiByZWdpc3Rl
ckRldmljZTogKGZ1bmN0aW9uKGRldiwgb3BzKSB7CiAgRlMuZGV2aWNlc1tkZXZdID0gewogICBz
dHJlYW1fb3BzOiBvcHMKICB9OwogfSksCiBnZXREZXZpY2U6IChmdW5jdGlvbihkZXYpIHsKICBy
ZXR1cm4gRlMuZGV2aWNlc1tkZXZdOwogfSksCiBnZXRNb3VudHM6IChmdW5jdGlvbihtb3VudCkg
ewogIHZhciBtb3VudHMgPSBbXTsKICB2YXIgY2hlY2sgPSBbIG1vdW50IF07CiAgd2hpbGUgKGNo
ZWNrLmxlbmd0aCkgewogICB2YXIgbSA9IGNoZWNrLnBvcCgpOwogICBtb3VudHMucHVzaChtKTsK
ICAgY2hlY2sucHVzaC5hcHBseShjaGVjaywgbS5tb3VudHMpOwogIH0KICByZXR1cm4gbW91bnRz
OwogfSksCiBzeW5jZnM6IChmdW5jdGlvbihwb3B1bGF0ZSwgY2FsbGJhY2spIHsKICBpZiAodHlw
ZW9mIHBvcHVsYXRlID09PSAiZnVuY3Rpb24iKSB7CiAgIGNhbGxiYWNrID0gcG9wdWxhdGU7CiAg
IHBvcHVsYXRlID0gZmFsc2U7CiAgfQogIHZhciBtb3VudHMgPSBGUy5nZXRNb3VudHMoRlMucm9v
dC5tb3VudCk7CiAgdmFyIGNvbXBsZXRlZCA9IDA7CiAgZnVuY3Rpb24gZG9uZShlcnIpIHsKICAg
aWYgKGVycikgewogICAgaWYgKCFkb25lLmVycm9yZWQpIHsKICAgICBkb25lLmVycm9yZWQgPSB0
cnVlOwogICAgIHJldHVybiBjYWxsYmFjayhlcnIpOwogICAgfQogICAgcmV0dXJuOwogICB9CiAg
IGlmICgrK2NvbXBsZXRlZCA+PSBtb3VudHMubGVuZ3RoKSB7CiAgICBjYWxsYmFjayhudWxsKTsK
ICAgfQogIH0KICBtb3VudHMuZm9yRWFjaCgoZnVuY3Rpb24obW91bnQpIHsKICAgaWYgKCFtb3Vu
dC50eXBlLnN5bmNmcykgewogICAgcmV0dXJuIGRvbmUobnVsbCk7CiAgIH0KICAgbW91bnQudHlw
ZS5zeW5jZnMobW91bnQsIHBvcHVsYXRlLCBkb25lKTsKICB9KSk7CiB9KSwKIG1vdW50OiAoZnVu
Y3Rpb24odHlwZSwgb3B0cywgbW91bnRwb2ludCkgewogIHZhciByb290ID0gbW91bnRwb2ludCA9
PT0gIi8iOwogIHZhciBwc2V1ZG8gPSAhbW91bnRwb2ludDsKICB2YXIgbm9kZTsKICBpZiAocm9v
dCAmJiBGUy5yb290KSB7CiAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVC
VVNZKTsKICB9IGVsc2UgaWYgKCFyb290ICYmICFwc2V1ZG8pIHsKICAgdmFyIGxvb2t1cCA9IEZT
Lmxvb2t1cFBhdGgobW91bnRwb2ludCwgewogICAgZm9sbG93X21vdW50OiBmYWxzZQogICB9KTsK
ICAgbW91bnRwb2ludCA9IGxvb2t1cC5wYXRoOwogICBub2RlID0gbG9va3VwLm5vZGU7CiAgIGlm
IChGUy5pc01vdW50cG9pbnQobm9kZSkpIHsKICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKEVS
Uk5PX0NPREVTLkVCVVNZKTsKICAgfQogICBpZiAoIUZTLmlzRGlyKG5vZGUubW9kZSkpIHsKICAg
IHRocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVOT1RESVIpOwogICB9CiAgfQog
IHZhciBtb3VudCA9IHsKICAgdHlwZTogdHlwZSwKICAgb3B0czogb3B0cywKICAgbW91bnRwb2lu
dDogbW91bnRwb2ludCwKICAgbW91bnRzOiBbXQogIH07CiAgdmFyIG1vdW50Um9vdCA9IHR5cGUu
bW91bnQobW91bnQpOwogIG1vdW50Um9vdC5tb3VudCA9IG1vdW50OwogIG1vdW50LnJvb3QgPSBt
b3VudFJvb3Q7CiAgaWYgKHJvb3QpIHsKICAgRlMucm9vdCA9IG1vdW50Um9vdDsKICB9IGVsc2Ug
aWYgKG5vZGUpIHsKICAgbm9kZS5tb3VudGVkID0gbW91bnQ7CiAgIGlmIChub2RlLm1vdW50KSB7
CiAgICBub2RlLm1vdW50Lm1vdW50cy5wdXNoKG1vdW50KTsKICAgfQogIH0KICByZXR1cm4gbW91
bnRSb290OwogfSksCiB1bm1vdW50OiAoZnVuY3Rpb24obW91bnRwb2ludCkgewogIHZhciBsb29r
dXAgPSBGUy5sb29rdXBQYXRoKG1vdW50cG9pbnQsIHsKICAgZm9sbG93X21vdW50OiBmYWxzZQog
IH0pOwogIGlmICghRlMuaXNNb3VudHBvaW50KGxvb2t1cC5ub2RlKSkgewogICB0aHJvdyBuZXcg
RlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FSU5WQUwpOwogIH0KICB2YXIgbm9kZSA9IGxvb2t1
cC5ub2RlOwogIHZhciBtb3VudCA9IG5vZGUubW91bnRlZDsKICB2YXIgbW91bnRzID0gRlMuZ2V0
TW91bnRzKG1vdW50KTsKICBPYmplY3Qua2V5cyhGUy5uYW1lVGFibGUpLmZvckVhY2goKGZ1bmN0
aW9uKGhhc2gpIHsKICAgdmFyIGN1cnJlbnQgPSBGUy5uYW1lVGFibGVbaGFzaF07CiAgIHdoaWxl
IChjdXJyZW50KSB7CiAgICB2YXIgbmV4dCA9IGN1cnJlbnQubmFtZV9uZXh0OwogICAgaWYgKG1v
dW50cy5pbmRleE9mKGN1cnJlbnQubW91bnQpICE9PSAtMSkgewogICAgIEZTLmRlc3Ryb3lOb2Rl
KGN1cnJlbnQpOwogICAgfQogICAgY3VycmVudCA9IG5leHQ7CiAgIH0KICB9KSk7CiAgbm9kZS5t
b3VudGVkID0gbnVsbDsKICB2YXIgaWR4ID0gbm9kZS5tb3VudC5tb3VudHMuaW5kZXhPZihtb3Vu
dCk7CiAgYXNzZXJ0KGlkeCAhPT0gLTEpOwogIG5vZGUubW91bnQubW91bnRzLnNwbGljZShpZHgs
IDEpOwogfSksCiBsb29rdXA6IChmdW5jdGlvbihwYXJlbnQsIG5hbWUpIHsKICByZXR1cm4gcGFy
ZW50Lm5vZGVfb3BzLmxvb2t1cChwYXJlbnQsIG5hbWUpOwogfSksCiBta25vZDogKGZ1bmN0aW9u
KHBhdGgsIG1vZGUsIGRldikgewogIHZhciBsb29rdXAgPSBGUy5sb29rdXBQYXRoKHBhdGgsIHsK
ICAgcGFyZW50OiB0cnVlCiAgfSk7CiAgdmFyIHBhcmVudCA9IGxvb2t1cC5ub2RlOwogIHZhciBu
YW1lID0gUEFUSC5iYXNlbmFtZShwYXRoKTsKICBpZiAoIW5hbWUgfHwgbmFtZSA9PT0gIi4iIHx8
IG5hbWUgPT09ICIuLiIpIHsKICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMu
RUlOVkFMKTsKICB9CiAgdmFyIGVyciA9IEZTLm1heUNyZWF0ZShwYXJlbnQsIG5hbWUpOwogIGlm
IChlcnIpIHsKICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoZXJyKTsKICB9CiAgaWYgKCFwYXJl
bnQubm9kZV9vcHMubWtub2QpIHsKICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09E
RVMuRVBFUk0pOwogIH0KICByZXR1cm4gcGFyZW50Lm5vZGVfb3BzLm1rbm9kKHBhcmVudCwgbmFt
ZSwgbW9kZSwgZGV2KTsKIH0pLAogY3JlYXRlOiAoZnVuY3Rpb24ocGF0aCwgbW9kZSkgewogIG1v
ZGUgPSBtb2RlICE9PSB1bmRlZmluZWQgPyBtb2RlIDogNDM4OwogIG1vZGUgJj0gNDA5NTsKICBt
b2RlIHw9IDMyNzY4OwogIHJldHVybiBGUy5ta25vZChwYXRoLCBtb2RlLCAwKTsKIH0pLAogbWtk
aXI6IChmdW5jdGlvbihwYXRoLCBtb2RlKSB7CiAgbW9kZSA9IG1vZGUgIT09IHVuZGVmaW5lZCA/
IG1vZGUgOiA1MTE7CiAgbW9kZSAmPSA1MTEgfCA1MTI7CiAgbW9kZSB8PSAxNjM4NDsKICByZXR1
cm4gRlMubWtub2QocGF0aCwgbW9kZSwgMCk7CiB9KSwKIG1rZGV2OiAoZnVuY3Rpb24ocGF0aCwg
bW9kZSwgZGV2KSB7CiAgaWYgKHR5cGVvZiBkZXYgPT09ICJ1bmRlZmluZWQiKSB7CiAgIGRldiA9
IG1vZGU7CiAgIG1vZGUgPSA0Mzg7CiAgfQogIG1vZGUgfD0gODE5MjsKICByZXR1cm4gRlMubWtu
b2QocGF0aCwgbW9kZSwgZGV2KTsKIH0pLAogc3ltbGluazogKGZ1bmN0aW9uKG9sZHBhdGgsIG5l
d3BhdGgpIHsKICBpZiAoIVBBVEgucmVzb2x2ZShvbGRwYXRoKSkgewogICB0aHJvdyBuZXcgRlMu
RXJybm9FcnJvcihFUlJOT19DT0RFUy5FTk9FTlQpOwogIH0KICB2YXIgbG9va3VwID0gRlMubG9v
a3VwUGF0aChuZXdwYXRoLCB7CiAgIHBhcmVudDogdHJ1ZQogIH0pOwogIHZhciBwYXJlbnQgPSBs
b29rdXAubm9kZTsKICBpZiAoIXBhcmVudCkgewogICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihF
UlJOT19DT0RFUy5FTk9FTlQpOwogIH0KICB2YXIgbmV3bmFtZSA9IFBBVEguYmFzZW5hbWUobmV3
cGF0aCk7CiAgdmFyIGVyciA9IEZTLm1heUNyZWF0ZShwYXJlbnQsIG5ld25hbWUpOwogIGlmIChl
cnIpIHsKICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoZXJyKTsKICB9CiAgaWYgKCFwYXJlbnQu
bm9kZV9vcHMuc3ltbGluaykgewogICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RF
Uy5FUEVSTSk7CiAgfQogIHJldHVybiBwYXJlbnQubm9kZV9vcHMuc3ltbGluayhwYXJlbnQsIG5l
d25hbWUsIG9sZHBhdGgpOwogfSksCiByZW5hbWU6IChmdW5jdGlvbihvbGRfcGF0aCwgbmV3X3Bh
dGgpIHsKICB2YXIgb2xkX2Rpcm5hbWUgPSBQQVRILmRpcm5hbWUob2xkX3BhdGgpOwogIHZhciBu
ZXdfZGlybmFtZSA9IFBBVEguZGlybmFtZShuZXdfcGF0aCk7CiAgdmFyIG9sZF9uYW1lID0gUEFU
SC5iYXNlbmFtZShvbGRfcGF0aCk7CiAgdmFyIG5ld19uYW1lID0gUEFUSC5iYXNlbmFtZShuZXdf
cGF0aCk7CiAgdmFyIGxvb2t1cCwgb2xkX2RpciwgbmV3X2RpcjsKICB0cnkgewogICBsb29rdXAg
PSBGUy5sb29rdXBQYXRoKG9sZF9wYXRoLCB7CiAgICBwYXJlbnQ6IHRydWUKICAgfSk7CiAgIG9s
ZF9kaXIgPSBsb29rdXAubm9kZTsKICAgbG9va3VwID0gRlMubG9va3VwUGF0aChuZXdfcGF0aCwg
ewogICAgcGFyZW50OiB0cnVlCiAgIH0pOwogICBuZXdfZGlyID0gbG9va3VwLm5vZGU7CiAgfSBj
YXRjaCAoZSkgewogICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FQlVTWSk7
CiAgfQogIGlmICghb2xkX2RpciB8fCAhbmV3X2RpcikgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3Io
RVJSTk9fQ09ERVMuRU5PRU5UKTsKICBpZiAob2xkX2Rpci5tb3VudCAhPT0gbmV3X2Rpci5tb3Vu
dCkgewogICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FWERFVik7CiAgfQog
IHZhciBvbGRfbm9kZSA9IEZTLmxvb2t1cE5vZGUob2xkX2Rpciwgb2xkX25hbWUpOwogIHZhciBy
ZWxhdGl2ZSA9IFBBVEgucmVsYXRpdmUob2xkX3BhdGgsIG5ld19kaXJuYW1lKTsKICBpZiAocmVs
YXRpdmUuY2hhckF0KDApICE9PSAiLiIpIHsKICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJS
Tk9fQ09ERVMuRUlOVkFMKTsKICB9CiAgcmVsYXRpdmUgPSBQQVRILnJlbGF0aXZlKG5ld19wYXRo
LCBvbGRfZGlybmFtZSk7CiAgaWYgKHJlbGF0aXZlLmNoYXJBdCgwKSAhPT0gIi4iKSB7CiAgIHRo
cm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVOT1RFTVBUWSk7CiAgfQogIHZhciBu
ZXdfbm9kZTsKICB0cnkgewogICBuZXdfbm9kZSA9IEZTLmxvb2t1cE5vZGUobmV3X2RpciwgbmV3
X25hbWUpOwogIH0gY2F0Y2ggKGUpIHt9CiAgaWYgKG9sZF9ub2RlID09PSBuZXdfbm9kZSkgewog
ICByZXR1cm47CiAgfQogIHZhciBpc2RpciA9IEZTLmlzRGlyKG9sZF9ub2RlLm1vZGUpOwogIHZh
ciBlcnIgPSBGUy5tYXlEZWxldGUob2xkX2Rpciwgb2xkX25hbWUsIGlzZGlyKTsKICBpZiAoZXJy
KSB7CiAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKGVycik7CiAgfQogIGVyciA9IG5ld19ub2Rl
ID8gRlMubWF5RGVsZXRlKG5ld19kaXIsIG5ld19uYW1lLCBpc2RpcikgOiBGUy5tYXlDcmVhdGUo
bmV3X2RpciwgbmV3X25hbWUpOwogIGlmIChlcnIpIHsKICAgdGhyb3cgbmV3IEZTLkVycm5vRXJy
b3IoZXJyKTsKICB9CiAgaWYgKCFvbGRfZGlyLm5vZGVfb3BzLnJlbmFtZSkgewogICB0aHJvdyBu
ZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FUEVSTSk7CiAgfQogIGlmIChGUy5pc01vdW50
cG9pbnQob2xkX25vZGUpIHx8IG5ld19ub2RlICYmIEZTLmlzTW91bnRwb2ludChuZXdfbm9kZSkp
IHsKICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUJVU1kpOwogIH0KICBp
ZiAobmV3X2RpciAhPT0gb2xkX2RpcikgewogICBlcnIgPSBGUy5ub2RlUGVybWlzc2lvbnMob2xk
X2RpciwgInciKTsKICAgaWYgKGVycikgewogICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoZXJy
KTsKICAgfQogIH0KICB0cnkgewogICBpZiAoRlMudHJhY2tpbmdEZWxlZ2F0ZVsid2lsbE1vdmVQ
YXRoIl0pIHsKICAgIEZTLnRyYWNraW5nRGVsZWdhdGVbIndpbGxNb3ZlUGF0aCJdKG9sZF9wYXRo
LCBuZXdfcGF0aCk7CiAgIH0KICB9IGNhdGNoIChlKSB7CiAgIGNvbnNvbGUubG9nKCJGUy50cmFj
a2luZ0RlbGVnYXRlWyd3aWxsTW92ZVBhdGgnXSgnIiArIG9sZF9wYXRoICsgIicsICciICsgbmV3
X3BhdGggKyAiJykgdGhyZXcgYW4gZXhjZXB0aW9uOiAiICsgZS5tZXNzYWdlKTsKICB9CiAgRlMu
aGFzaFJlbW92ZU5vZGUob2xkX25vZGUpOwogIHRyeSB7CiAgIG9sZF9kaXIubm9kZV9vcHMucmVu
YW1lKG9sZF9ub2RlLCBuZXdfZGlyLCBuZXdfbmFtZSk7CiAgfSBjYXRjaCAoZSkgewogICB0aHJv
dyBlOwogIH0gZmluYWxseSB7CiAgIEZTLmhhc2hBZGROb2RlKG9sZF9ub2RlKTsKICB9CiAgdHJ5
IHsKICAgaWYgKEZTLnRyYWNraW5nRGVsZWdhdGVbIm9uTW92ZVBhdGgiXSkgRlMudHJhY2tpbmdE
ZWxlZ2F0ZVsib25Nb3ZlUGF0aCJdKG9sZF9wYXRoLCBuZXdfcGF0aCk7CiAgfSBjYXRjaCAoZSkg
ewogICBjb25zb2xlLmxvZygiRlMudHJhY2tpbmdEZWxlZ2F0ZVsnb25Nb3ZlUGF0aCddKCciICsg
b2xkX3BhdGggKyAiJywgJyIgKyBuZXdfcGF0aCArICInKSB0aHJldyBhbiBleGNlcHRpb246ICIg
KyBlLm1lc3NhZ2UpOwogIH0KIH0pLAogcm1kaXI6IChmdW5jdGlvbihwYXRoKSB7CiAgdmFyIGxv
b2t1cCA9IEZTLmxvb2t1cFBhdGgocGF0aCwgewogICBwYXJlbnQ6IHRydWUKICB9KTsKICB2YXIg
cGFyZW50ID0gbG9va3VwLm5vZGU7CiAgdmFyIG5hbWUgPSBQQVRILmJhc2VuYW1lKHBhdGgpOwog
IHZhciBub2RlID0gRlMubG9va3VwTm9kZShwYXJlbnQsIG5hbWUpOwogIHZhciBlcnIgPSBGUy5t
YXlEZWxldGUocGFyZW50LCBuYW1lLCB0cnVlKTsKICBpZiAoZXJyKSB7CiAgIHRocm93IG5ldyBG
Uy5FcnJub0Vycm9yKGVycik7CiAgfQogIGlmICghcGFyZW50Lm5vZGVfb3BzLnJtZGlyKSB7CiAg
IHRocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVQRVJNKTsKICB9CiAgaWYgKEZT
LmlzTW91bnRwb2ludChub2RlKSkgewogICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19D
T0RFUy5FQlVTWSk7CiAgfQogIHRyeSB7CiAgIGlmIChGUy50cmFja2luZ0RlbGVnYXRlWyJ3aWxs
RGVsZXRlUGF0aCJdKSB7CiAgICBGUy50cmFja2luZ0RlbGVnYXRlWyJ3aWxsRGVsZXRlUGF0aCJd
KHBhdGgpOwogICB9CiAgfSBjYXRjaCAoZSkgewogICBjb25zb2xlLmxvZygiRlMudHJhY2tpbmdE
ZWxlZ2F0ZVsnd2lsbERlbGV0ZVBhdGgnXSgnIiArIHBhdGggKyAiJykgdGhyZXcgYW4gZXhjZXB0
aW9uOiAiICsgZS5tZXNzYWdlKTsKICB9CiAgcGFyZW50Lm5vZGVfb3BzLnJtZGlyKHBhcmVudCwg
bmFtZSk7CiAgRlMuZGVzdHJveU5vZGUobm9kZSk7CiAgdHJ5IHsKICAgaWYgKEZTLnRyYWNraW5n
RGVsZWdhdGVbIm9uRGVsZXRlUGF0aCJdKSBGUy50cmFja2luZ0RlbGVnYXRlWyJvbkRlbGV0ZVBh
dGgiXShwYXRoKTsKICB9IGNhdGNoIChlKSB7CiAgIGNvbnNvbGUubG9nKCJGUy50cmFja2luZ0Rl
bGVnYXRlWydvbkRlbGV0ZVBhdGgnXSgnIiArIHBhdGggKyAiJykgdGhyZXcgYW4gZXhjZXB0aW9u
OiAiICsgZS5tZXNzYWdlKTsKICB9CiB9KSwKIHJlYWRkaXI6IChmdW5jdGlvbihwYXRoKSB7CiAg
dmFyIGxvb2t1cCA9IEZTLmxvb2t1cFBhdGgocGF0aCwgewogICBmb2xsb3c6IHRydWUKICB9KTsK
ICB2YXIgbm9kZSA9IGxvb2t1cC5ub2RlOwogIGlmICghbm9kZS5ub2RlX29wcy5yZWFkZGlyKSB7
CiAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVOT1RESVIpOwogIH0KICBy
ZXR1cm4gbm9kZS5ub2RlX29wcy5yZWFkZGlyKG5vZGUpOwogfSksCiB1bmxpbms6IChmdW5jdGlv
bihwYXRoKSB7CiAgdmFyIGxvb2t1cCA9IEZTLmxvb2t1cFBhdGgocGF0aCwgewogICBwYXJlbnQ6
IHRydWUKICB9KTsKICB2YXIgcGFyZW50ID0gbG9va3VwLm5vZGU7CiAgdmFyIG5hbWUgPSBQQVRI
LmJhc2VuYW1lKHBhdGgpOwogIHZhciBub2RlID0gRlMubG9va3VwTm9kZShwYXJlbnQsIG5hbWUp
OwogIHZhciBlcnIgPSBGUy5tYXlEZWxldGUocGFyZW50LCBuYW1lLCBmYWxzZSk7CiAgaWYgKGVy
cikgewogICBpZiAoZXJyID09PSBFUlJOT19DT0RFUy5FSVNESVIpIGVyciA9IEVSUk5PX0NPREVT
LkVQRVJNOwogICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihlcnIpOwogIH0KICBpZiAoIXBhcmVu
dC5ub2RlX29wcy51bmxpbmspIHsKICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09E
RVMuRVBFUk0pOwogIH0KICBpZiAoRlMuaXNNb3VudHBvaW50KG5vZGUpKSB7CiAgIHRocm93IG5l
dyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVCVVNZKTsKICB9CiAgdHJ5IHsKICAgaWYgKEZT
LnRyYWNraW5nRGVsZWdhdGVbIndpbGxEZWxldGVQYXRoIl0pIHsKICAgIEZTLnRyYWNraW5nRGVs
ZWdhdGVbIndpbGxEZWxldGVQYXRoIl0ocGF0aCk7CiAgIH0KICB9IGNhdGNoIChlKSB7CiAgIGNv
bnNvbGUubG9nKCJGUy50cmFja2luZ0RlbGVnYXRlWyd3aWxsRGVsZXRlUGF0aCddKCciICsgcGF0
aCArICInKSB0aHJldyBhbiBleGNlcHRpb246ICIgKyBlLm1lc3NhZ2UpOwogIH0KICBwYXJlbnQu
bm9kZV9vcHMudW5saW5rKHBhcmVudCwgbmFtZSk7CiAgRlMuZGVzdHJveU5vZGUobm9kZSk7CiAg
dHJ5IHsKICAgaWYgKEZTLnRyYWNraW5nRGVsZWdhdGVbIm9uRGVsZXRlUGF0aCJdKSBGUy50cmFj
a2luZ0RlbGVnYXRlWyJvbkRlbGV0ZVBhdGgiXShwYXRoKTsKICB9IGNhdGNoIChlKSB7CiAgIGNv
bnNvbGUubG9nKCJGUy50cmFja2luZ0RlbGVnYXRlWydvbkRlbGV0ZVBhdGgnXSgnIiArIHBhdGgg
KyAiJykgdGhyZXcgYW4gZXhjZXB0aW9uOiAiICsgZS5tZXNzYWdlKTsKICB9CiB9KSwKIHJlYWRs
aW5rOiAoZnVuY3Rpb24ocGF0aCkgewogIHZhciBsb29rdXAgPSBGUy5sb29rdXBQYXRoKHBhdGgp
OwogIHZhciBsaW5rID0gbG9va3VwLm5vZGU7CiAgaWYgKCFsaW5rKSB7CiAgIHRocm93IG5ldyBG
Uy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVOT0VOVCk7CiAgfQogIGlmICghbGluay5ub2RlX29w
cy5yZWFkbGluaykgewogICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FSU5W
QUwpOwogIH0KICByZXR1cm4gUEFUSC5yZXNvbHZlKEZTLmdldFBhdGgobGluay5wYXJlbnQpLCBs
aW5rLm5vZGVfb3BzLnJlYWRsaW5rKGxpbmspKTsKIH0pLAogc3RhdDogKGZ1bmN0aW9uKHBhdGgs
IGRvbnRGb2xsb3cpIHsKICB2YXIgbG9va3VwID0gRlMubG9va3VwUGF0aChwYXRoLCB7CiAgIGZv
bGxvdzogIWRvbnRGb2xsb3cKICB9KTsKICB2YXIgbm9kZSA9IGxvb2t1cC5ub2RlOwogIGlmICgh
bm9kZSkgewogICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FTk9FTlQpOwog
IH0KICBpZiAoIW5vZGUubm9kZV9vcHMuZ2V0YXR0cikgewogICB0aHJvdyBuZXcgRlMuRXJybm9F
cnJvcihFUlJOT19DT0RFUy5FUEVSTSk7CiAgfQogIHJldHVybiBub2RlLm5vZGVfb3BzLmdldGF0
dHIobm9kZSk7CiB9KSwKIGxzdGF0OiAoZnVuY3Rpb24ocGF0aCkgewogIHJldHVybiBGUy5zdGF0
KHBhdGgsIHRydWUpOwogfSksCiBjaG1vZDogKGZ1bmN0aW9uKHBhdGgsIG1vZGUsIGRvbnRGb2xs
b3cpIHsKICB2YXIgbm9kZTsKICBpZiAodHlwZW9mIHBhdGggPT09ICJzdHJpbmciKSB7CiAgIHZh
ciBsb29rdXAgPSBGUy5sb29rdXBQYXRoKHBhdGgsIHsKICAgIGZvbGxvdzogIWRvbnRGb2xsb3cK
ICAgfSk7CiAgIG5vZGUgPSBsb29rdXAubm9kZTsKICB9IGVsc2UgewogICBub2RlID0gcGF0aDsK
ICB9CiAgaWYgKCFub2RlLm5vZGVfb3BzLnNldGF0dHIpIHsKICAgdGhyb3cgbmV3IEZTLkVycm5v
RXJyb3IoRVJSTk9fQ09ERVMuRVBFUk0pOwogIH0KICBub2RlLm5vZGVfb3BzLnNldGF0dHIobm9k
ZSwgewogICBtb2RlOiBtb2RlICYgNDA5NSB8IG5vZGUubW9kZSAmIH40MDk1LAogICB0aW1lc3Rh
bXA6IERhdGUubm93KCkKICB9KTsKIH0pLAogbGNobW9kOiAoZnVuY3Rpb24ocGF0aCwgbW9kZSkg
ewogIEZTLmNobW9kKHBhdGgsIG1vZGUsIHRydWUpOwogfSksCiBmY2htb2Q6IChmdW5jdGlvbihm
ZCwgbW9kZSkgewogIHZhciBzdHJlYW0gPSBGUy5nZXRTdHJlYW0oZmQpOwogIGlmICghc3RyZWFt
KSB7CiAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVCQURGKTsKICB9CiAg
RlMuY2htb2Qoc3RyZWFtLm5vZGUsIG1vZGUpOwogfSksCiBjaG93bjogKGZ1bmN0aW9uKHBhdGgs
IHVpZCwgZ2lkLCBkb250Rm9sbG93KSB7CiAgdmFyIG5vZGU7CiAgaWYgKHR5cGVvZiBwYXRoID09
PSAic3RyaW5nIikgewogICB2YXIgbG9va3VwID0gRlMubG9va3VwUGF0aChwYXRoLCB7CiAgICBm
b2xsb3c6ICFkb250Rm9sbG93CiAgIH0pOwogICBub2RlID0gbG9va3VwLm5vZGU7CiAgfSBlbHNl
IHsKICAgbm9kZSA9IHBhdGg7CiAgfQogIGlmICghbm9kZS5ub2RlX29wcy5zZXRhdHRyKSB7CiAg
IHRocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVQRVJNKTsKICB9CiAgbm9kZS5u
b2RlX29wcy5zZXRhdHRyKG5vZGUsIHsKICAgdGltZXN0YW1wOiBEYXRlLm5vdygpCiAgfSk7CiB9
KSwKIGxjaG93bjogKGZ1bmN0aW9uKHBhdGgsIHVpZCwgZ2lkKSB7CiAgRlMuY2hvd24ocGF0aCwg
dWlkLCBnaWQsIHRydWUpOwogfSksCiBmY2hvd246IChmdW5jdGlvbihmZCwgdWlkLCBnaWQpIHsK
ICB2YXIgc3RyZWFtID0gRlMuZ2V0U3RyZWFtKGZkKTsKICBpZiAoIXN0cmVhbSkgewogICB0aHJv
dyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FQkFERik7CiAgfQogIEZTLmNob3duKHN0
cmVhbS5ub2RlLCB1aWQsIGdpZCk7CiB9KSwKIHRydW5jYXRlOiAoZnVuY3Rpb24ocGF0aCwgbGVu
KSB7CiAgaWYgKGxlbiA8IDApIHsKICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09E
RVMuRUlOVkFMKTsKICB9CiAgdmFyIG5vZGU7CiAgaWYgKHR5cGVvZiBwYXRoID09PSAic3RyaW5n
IikgewogICB2YXIgbG9va3VwID0gRlMubG9va3VwUGF0aChwYXRoLCB7CiAgICBmb2xsb3c6IHRy
dWUKICAgfSk7CiAgIG5vZGUgPSBsb29rdXAubm9kZTsKICB9IGVsc2UgewogICBub2RlID0gcGF0
aDsKICB9CiAgaWYgKCFub2RlLm5vZGVfb3BzLnNldGF0dHIpIHsKICAgdGhyb3cgbmV3IEZTLkVy
cm5vRXJyb3IoRVJSTk9fQ09ERVMuRVBFUk0pOwogIH0KICBpZiAoRlMuaXNEaXIobm9kZS5tb2Rl
KSkgewogICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FSVNESVIpOwogIH0K
ICBpZiAoIUZTLmlzRmlsZShub2RlLm1vZGUpKSB7CiAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9y
KEVSUk5PX0NPREVTLkVJTlZBTCk7CiAgfQogIHZhciBlcnIgPSBGUy5ub2RlUGVybWlzc2lvbnMo
bm9kZSwgInciKTsKICBpZiAoZXJyKSB7CiAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKGVycik7
CiAgfQogIG5vZGUubm9kZV9vcHMuc2V0YXR0cihub2RlLCB7CiAgIHNpemU6IGxlbiwKICAgdGlt
ZXN0YW1wOiBEYXRlLm5vdygpCiAgfSk7CiB9KSwKIGZ0cnVuY2F0ZTogKGZ1bmN0aW9uKGZkLCBs
ZW4pIHsKICB2YXIgc3RyZWFtID0gRlMuZ2V0U3RyZWFtKGZkKTsKICBpZiAoIXN0cmVhbSkgewog
ICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FQkFERik7CiAgfQogIGlmICgo
c3RyZWFtLmZsYWdzICYgMjA5NzE1NSkgPT09IDApIHsKICAgdGhyb3cgbmV3IEZTLkVycm5vRXJy
b3IoRVJSTk9fQ09ERVMuRUlOVkFMKTsKICB9CiAgRlMudHJ1bmNhdGUoc3RyZWFtLm5vZGUsIGxl
bik7CiB9KSwKIHV0aW1lOiAoZnVuY3Rpb24ocGF0aCwgYXRpbWUsIG10aW1lKSB7CiAgdmFyIGxv
b2t1cCA9IEZTLmxvb2t1cFBhdGgocGF0aCwgewogICBmb2xsb3c6IHRydWUKICB9KTsKICB2YXIg
bm9kZSA9IGxvb2t1cC5ub2RlOwogIG5vZGUubm9kZV9vcHMuc2V0YXR0cihub2RlLCB7CiAgIHRp
bWVzdGFtcDogTWF0aC5tYXgoYXRpbWUsIG10aW1lKQogIH0pOwogfSksCiBvcGVuOiAoZnVuY3Rp
b24ocGF0aCwgZmxhZ3MsIG1vZGUsIGZkX3N0YXJ0LCBmZF9lbmQpIHsKICBpZiAocGF0aCA9PT0g
IiIpIHsKICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRU5PRU5UKTsKICB9
CiAgZmxhZ3MgPSB0eXBlb2YgZmxhZ3MgPT09ICJzdHJpbmciID8gRlMubW9kZVN0cmluZ1RvRmxh
Z3MoZmxhZ3MpIDogZmxhZ3M7CiAgbW9kZSA9IHR5cGVvZiBtb2RlID09PSAidW5kZWZpbmVkIiA/
IDQzOCA6IG1vZGU7CiAgaWYgKGZsYWdzICYgNjQpIHsKICAgbW9kZSA9IG1vZGUgJiA0MDk1IHwg
MzI3Njg7CiAgfSBlbHNlIHsKICAgbW9kZSA9IDA7CiAgfQogIHZhciBub2RlOwogIGlmICh0eXBl
b2YgcGF0aCA9PT0gIm9iamVjdCIpIHsKICAgbm9kZSA9IHBhdGg7CiAgfSBlbHNlIHsKICAgcGF0
aCA9IFBBVEgubm9ybWFsaXplKHBhdGgpOwogICB0cnkgewogICAgdmFyIGxvb2t1cCA9IEZTLmxv
b2t1cFBhdGgocGF0aCwgewogICAgIGZvbGxvdzogIShmbGFncyAmIDEzMTA3MikKICAgIH0pOwog
ICAgbm9kZSA9IGxvb2t1cC5ub2RlOwogICB9IGNhdGNoIChlKSB7fQogIH0KICB2YXIgY3JlYXRl
ZCA9IGZhbHNlOwogIGlmIChmbGFncyAmIDY0KSB7CiAgIGlmIChub2RlKSB7CiAgICBpZiAoZmxh
Z3MgJiAxMjgpIHsKICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FRVhJ
U1QpOwogICAgfQogICB9IGVsc2UgewogICAgbm9kZSA9IEZTLm1rbm9kKHBhdGgsIG1vZGUsIDAp
OwogICAgY3JlYXRlZCA9IHRydWU7CiAgIH0KICB9CiAgaWYgKCFub2RlKSB7CiAgIHRocm93IG5l
dyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVOT0VOVCk7CiAgfQogIGlmIChGUy5pc0NocmRl
dihub2RlLm1vZGUpKSB7CiAgIGZsYWdzICY9IH41MTI7CiAgfQogIGlmIChmbGFncyAmIDY1NTM2
ICYmICFGUy5pc0Rpcihub2RlLm1vZGUpKSB7CiAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKEVS
Uk5PX0NPREVTLkVOT1RESVIpOwogIH0KICBpZiAoIWNyZWF0ZWQpIHsKICAgdmFyIGVyciA9IEZT
Lm1heU9wZW4obm9kZSwgZmxhZ3MpOwogICBpZiAoZXJyKSB7CiAgICB0aHJvdyBuZXcgRlMuRXJy
bm9FcnJvcihlcnIpOwogICB9CiAgfQogIGlmIChmbGFncyAmIDUxMikgewogICBGUy50cnVuY2F0
ZShub2RlLCAwKTsKICB9CiAgZmxhZ3MgJj0gfigxMjggfCA1MTIpOwogIHZhciBzdHJlYW0gPSBG
Uy5jcmVhdGVTdHJlYW0oewogICBub2RlOiBub2RlLAogICBwYXRoOiBGUy5nZXRQYXRoKG5vZGUp
LAogICBmbGFnczogZmxhZ3MsCiAgIHNlZWthYmxlOiB0cnVlLAogICBwb3NpdGlvbjogMCwKICAg
c3RyZWFtX29wczogbm9kZS5zdHJlYW1fb3BzLAogICB1bmdvdHRlbjogW10sCiAgIGVycm9yOiBm
YWxzZQogIH0sIGZkX3N0YXJ0LCBmZF9lbmQpOwogIGlmIChzdHJlYW0uc3RyZWFtX29wcy5vcGVu
KSB7CiAgIHN0cmVhbS5zdHJlYW1fb3BzLm9wZW4oc3RyZWFtKTsKICB9CiAgaWYgKE1vZHVsZVsi
bG9nUmVhZEZpbGVzIl0gJiYgIShmbGFncyAmIDEpKSB7CiAgIGlmICghRlMucmVhZEZpbGVzKSBG
Uy5yZWFkRmlsZXMgPSB7fTsKICAgaWYgKCEocGF0aCBpbiBGUy5yZWFkRmlsZXMpKSB7CiAgICBG
Uy5yZWFkRmlsZXNbcGF0aF0gPSAxOwogICAgTW9kdWxlWyJwcmludEVyciJdKCJyZWFkIGZpbGU6
ICIgKyBwYXRoKTsKICAgfQogIH0KICB0cnkgewogICBpZiAoRlMudHJhY2tpbmdEZWxlZ2F0ZVsi
b25PcGVuRmlsZSJdKSB7CiAgICB2YXIgdHJhY2tpbmdGbGFncyA9IDA7CiAgICBpZiAoKGZsYWdz
ICYgMjA5NzE1NSkgIT09IDEpIHsKICAgICB0cmFja2luZ0ZsYWdzIHw9IEZTLnRyYWNraW5nLm9w
ZW5GbGFncy5SRUFEOwogICAgfQogICAgaWYgKChmbGFncyAmIDIwOTcxNTUpICE9PSAwKSB7CiAg
ICAgdHJhY2tpbmdGbGFncyB8PSBGUy50cmFja2luZy5vcGVuRmxhZ3MuV1JJVEU7CiAgICB9CiAg
ICBGUy50cmFja2luZ0RlbGVnYXRlWyJvbk9wZW5GaWxlIl0ocGF0aCwgdHJhY2tpbmdGbGFncyk7
CiAgIH0KICB9IGNhdGNoIChlKSB7CiAgIGNvbnNvbGUubG9nKCJGUy50cmFja2luZ0RlbGVnYXRl
Wydvbk9wZW5GaWxlJ10oJyIgKyBwYXRoICsgIicsIGZsYWdzKSB0aHJldyBhbiBleGNlcHRpb246
ICIgKyBlLm1lc3NhZ2UpOwogIH0KICByZXR1cm4gc3RyZWFtOwogfSksCiBjbG9zZTogKGZ1bmN0
aW9uKHN0cmVhbSkgewogIGlmIChzdHJlYW0uZ2V0ZGVudHMpIHN0cmVhbS5nZXRkZW50cyA9IG51
bGw7CiAgdHJ5IHsKICAgaWYgKHN0cmVhbS5zdHJlYW1fb3BzLmNsb3NlKSB7CiAgICBzdHJlYW0u
c3RyZWFtX29wcy5jbG9zZShzdHJlYW0pOwogICB9CiAgfSBjYXRjaCAoZSkgewogICB0aHJvdyBl
OwogIH0gZmluYWxseSB7CiAgIEZTLmNsb3NlU3RyZWFtKHN0cmVhbS5mZCk7CiAgfQogfSksCiBs
bHNlZWs6IChmdW5jdGlvbihzdHJlYW0sIG9mZnNldCwgd2hlbmNlKSB7CiAgaWYgKCFzdHJlYW0u
c2Vla2FibGUgfHwgIXN0cmVhbS5zdHJlYW1fb3BzLmxsc2VlaykgewogICB0aHJvdyBuZXcgRlMu
RXJybm9FcnJvcihFUlJOT19DT0RFUy5FU1BJUEUpOwogIH0KICBzdHJlYW0ucG9zaXRpb24gPSBz
dHJlYW0uc3RyZWFtX29wcy5sbHNlZWsoc3RyZWFtLCBvZmZzZXQsIHdoZW5jZSk7CiAgc3RyZWFt
LnVuZ290dGVuID0gW107CiAgcmV0dXJuIHN0cmVhbS5wb3NpdGlvbjsKIH0pLAogcmVhZDogKGZ1
bmN0aW9uKHN0cmVhbSwgYnVmZmVyLCBvZmZzZXQsIGxlbmd0aCwgcG9zaXRpb24pIHsKICBpZiAo
bGVuZ3RoIDwgMCB8fCBwb3NpdGlvbiA8IDApIHsKICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3Io
RVJSTk9fQ09ERVMuRUlOVkFMKTsKICB9CiAgaWYgKChzdHJlYW0uZmxhZ3MgJiAyMDk3MTU1KSA9
PT0gMSkgewogICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FQkFERik7CiAg
fQogIGlmIChGUy5pc0RpcihzdHJlYW0ubm9kZS5tb2RlKSkgewogICB0aHJvdyBuZXcgRlMuRXJy
bm9FcnJvcihFUlJOT19DT0RFUy5FSVNESVIpOwogIH0KICBpZiAoIXN0cmVhbS5zdHJlYW1fb3Bz
LnJlYWQpIHsKICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUlOVkFMKTsK
ICB9CiAgdmFyIHNlZWtpbmcgPSB0cnVlOwogIGlmICh0eXBlb2YgcG9zaXRpb24gPT09ICJ1bmRl
ZmluZWQiKSB7CiAgIHBvc2l0aW9uID0gc3RyZWFtLnBvc2l0aW9uOwogICBzZWVraW5nID0gZmFs
c2U7CiAgfSBlbHNlIGlmICghc3RyZWFtLnNlZWthYmxlKSB7CiAgIHRocm93IG5ldyBGUy5FcnJu
b0Vycm9yKEVSUk5PX0NPREVTLkVTUElQRSk7CiAgfQogIHZhciBieXRlc1JlYWQgPSBzdHJlYW0u
c3RyZWFtX29wcy5yZWFkKHN0cmVhbSwgYnVmZmVyLCBvZmZzZXQsIGxlbmd0aCwgcG9zaXRpb24p
OwogIGlmICghc2Vla2luZykgc3RyZWFtLnBvc2l0aW9uICs9IGJ5dGVzUmVhZDsKICByZXR1cm4g
Ynl0ZXNSZWFkOwogfSksCiB3cml0ZTogKGZ1bmN0aW9uKHN0cmVhbSwgYnVmZmVyLCBvZmZzZXQs
IGxlbmd0aCwgcG9zaXRpb24sIGNhbk93bikgewogIGlmIChsZW5ndGggPCAwIHx8IHBvc2l0aW9u
IDwgMCkgewogICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FSU5WQUwpOwog
IH0KICBpZiAoKHN0cmVhbS5mbGFncyAmIDIwOTcxNTUpID09PSAwKSB7CiAgIHRocm93IG5ldyBG
Uy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVCQURGKTsKICB9CiAgaWYgKEZTLmlzRGlyKHN0cmVh
bS5ub2RlLm1vZGUpKSB7CiAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVJ
U0RJUik7CiAgfQogIGlmICghc3RyZWFtLnN0cmVhbV9vcHMud3JpdGUpIHsKICAgdGhyb3cgbmV3
IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUlOVkFMKTsKICB9CiAgaWYgKHN0cmVhbS5mbGFn
cyAmIDEwMjQpIHsKICAgRlMubGxzZWVrKHN0cmVhbSwgMCwgMik7CiAgfQogIHZhciBzZWVraW5n
ID0gdHJ1ZTsKICBpZiAodHlwZW9mIHBvc2l0aW9uID09PSAidW5kZWZpbmVkIikgewogICBwb3Np
dGlvbiA9IHN0cmVhbS5wb3NpdGlvbjsKICAgc2Vla2luZyA9IGZhbHNlOwogIH0gZWxzZSBpZiAo
IXN0cmVhbS5zZWVrYWJsZSkgewogICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RF
Uy5FU1BJUEUpOwogIH0KICB2YXIgYnl0ZXNXcml0dGVuID0gc3RyZWFtLnN0cmVhbV9vcHMud3Jp
dGUoc3RyZWFtLCBidWZmZXIsIG9mZnNldCwgbGVuZ3RoLCBwb3NpdGlvbiwgY2FuT3duKTsKICBp
ZiAoIXNlZWtpbmcpIHN0cmVhbS5wb3NpdGlvbiArPSBieXRlc1dyaXR0ZW47CiAgdHJ5IHsKICAg
aWYgKHN0cmVhbS5wYXRoICYmIEZTLnRyYWNraW5nRGVsZWdhdGVbIm9uV3JpdGVUb0ZpbGUiXSkg
RlMudHJhY2tpbmdEZWxlZ2F0ZVsib25Xcml0ZVRvRmlsZSJdKHN0cmVhbS5wYXRoKTsKICB9IGNh
dGNoIChlKSB7CiAgIGNvbnNvbGUubG9nKCJGUy50cmFja2luZ0RlbGVnYXRlWydvbldyaXRlVG9G
aWxlJ10oJyIgKyBwYXRoICsgIicpIHRocmV3IGFuIGV4Y2VwdGlvbjogIiArIGUubWVzc2FnZSk7
CiAgfQogIHJldHVybiBieXRlc1dyaXR0ZW47CiB9KSwKIGFsbG9jYXRlOiAoZnVuY3Rpb24oc3Ry
ZWFtLCBvZmZzZXQsIGxlbmd0aCkgewogIGlmIChvZmZzZXQgPCAwIHx8IGxlbmd0aCA8PSAwKSB7
CiAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVJTlZBTCk7CiAgfQogIGlm
ICgoc3RyZWFtLmZsYWdzICYgMjA5NzE1NSkgPT09IDApIHsKICAgdGhyb3cgbmV3IEZTLkVycm5v
RXJyb3IoRVJSTk9fQ09ERVMuRUJBREYpOwogIH0KICBpZiAoIUZTLmlzRmlsZShzdHJlYW0ubm9k
ZS5tb2RlKSAmJiAhRlMuaXNEaXIobm9kZS5tb2RlKSkgewogICB0aHJvdyBuZXcgRlMuRXJybm9F
cnJvcihFUlJOT19DT0RFUy5FTk9ERVYpOwogIH0KICBpZiAoIXN0cmVhbS5zdHJlYW1fb3BzLmFs
bG9jYXRlKSB7CiAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVPUE5PVFNV
UFApOwogIH0KICBzdHJlYW0uc3RyZWFtX29wcy5hbGxvY2F0ZShzdHJlYW0sIG9mZnNldCwgbGVu
Z3RoKTsKIH0pLAogbW1hcDogKGZ1bmN0aW9uKHN0cmVhbSwgYnVmZmVyLCBvZmZzZXQsIGxlbmd0
aCwgcG9zaXRpb24sIHByb3QsIGZsYWdzKSB7CiAgaWYgKChzdHJlYW0uZmxhZ3MgJiAyMDk3MTU1
KSA9PT0gMSkgewogICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FQUNDRVMp
OwogIH0KICBpZiAoIXN0cmVhbS5zdHJlYW1fb3BzLm1tYXApIHsKICAgdGhyb3cgbmV3IEZTLkVy
cm5vRXJyb3IoRVJSTk9fQ09ERVMuRU5PREVWKTsKICB9CiAgcmV0dXJuIHN0cmVhbS5zdHJlYW1f
b3BzLm1tYXAoc3RyZWFtLCBidWZmZXIsIG9mZnNldCwgbGVuZ3RoLCBwb3NpdGlvbiwgcHJvdCwg
ZmxhZ3MpOwogfSksCiBtc3luYzogKGZ1bmN0aW9uKHN0cmVhbSwgYnVmZmVyLCBvZmZzZXQsIGxl
bmd0aCwgbW1hcEZsYWdzKSB7CiAgaWYgKCFzdHJlYW0gfHwgIXN0cmVhbS5zdHJlYW1fb3BzLm1z
eW5jKSB7CiAgIHJldHVybiAwOwogIH0KICByZXR1cm4gc3RyZWFtLnN0cmVhbV9vcHMubXN5bmMo
c3RyZWFtLCBidWZmZXIsIG9mZnNldCwgbGVuZ3RoLCBtbWFwRmxhZ3MpOwogfSksCiBtdW5tYXA6
IChmdW5jdGlvbihzdHJlYW0pIHsKICByZXR1cm4gMDsKIH0pLAogaW9jdGw6IChmdW5jdGlvbihz
dHJlYW0sIGNtZCwgYXJnKSB7CiAgaWYgKCFzdHJlYW0uc3RyZWFtX29wcy5pb2N0bCkgewogICB0
aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FTk9UVFkpOwogIH0KICByZXR1cm4g
c3RyZWFtLnN0cmVhbV9vcHMuaW9jdGwoc3RyZWFtLCBjbWQsIGFyZyk7CiB9KSwKIHJlYWRGaWxl
OiAoZnVuY3Rpb24ocGF0aCwgb3B0cykgewogIG9wdHMgPSBvcHRzIHx8IHt9OwogIG9wdHMuZmxh
Z3MgPSBvcHRzLmZsYWdzIHx8ICJyIjsKICBvcHRzLmVuY29kaW5nID0gb3B0cy5lbmNvZGluZyB8
fCAiYmluYXJ5IjsKICBpZiAob3B0cy5lbmNvZGluZyAhPT0gInV0ZjgiICYmIG9wdHMuZW5jb2Rp
bmcgIT09ICJiaW5hcnkiKSB7CiAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBlbmNvZGluZyB0
eXBlICInICsgb3B0cy5lbmNvZGluZyArICciJyk7CiAgfQogIHZhciByZXQ7CiAgdmFyIHN0cmVh
bSA9IEZTLm9wZW4ocGF0aCwgb3B0cy5mbGFncyk7CiAgdmFyIHN0YXQgPSBGUy5zdGF0KHBhdGgp
OwogIHZhciBsZW5ndGggPSBzdGF0LnNpemU7CiAgdmFyIGJ1ZiA9IG5ldyBVaW50OEFycmF5KGxl
bmd0aCk7CiAgRlMucmVhZChzdHJlYW0sIGJ1ZiwgMCwgbGVuZ3RoLCAwKTsKICBpZiAob3B0cy5l
bmNvZGluZyA9PT0gInV0ZjgiKSB7CiAgIHJldCA9IFVURjhBcnJheVRvU3RyaW5nKGJ1ZiwgMCk7
CiAgfSBlbHNlIGlmIChvcHRzLmVuY29kaW5nID09PSAiYmluYXJ5IikgewogICByZXQgPSBidWY7
CiAgfQogIEZTLmNsb3NlKHN0cmVhbSk7CiAgcmV0dXJuIHJldDsKIH0pLAogd3JpdGVGaWxlOiAo
ZnVuY3Rpb24ocGF0aCwgZGF0YSwgb3B0cykgewogIG9wdHMgPSBvcHRzIHx8IHt9OwogIG9wdHMu
ZmxhZ3MgPSBvcHRzLmZsYWdzIHx8ICJ3IjsKICBvcHRzLmVuY29kaW5nID0gb3B0cy5lbmNvZGlu
ZyB8fCAidXRmOCI7CiAgaWYgKG9wdHMuZW5jb2RpbmcgIT09ICJ1dGY4IiAmJiBvcHRzLmVuY29k
aW5nICE9PSAiYmluYXJ5IikgewogICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgZW5jb2Rpbmcg
dHlwZSAiJyArIG9wdHMuZW5jb2RpbmcgKyAnIicpOwogIH0KICB2YXIgc3RyZWFtID0gRlMub3Bl
bihwYXRoLCBvcHRzLmZsYWdzLCBvcHRzLm1vZGUpOwogIGlmIChvcHRzLmVuY29kaW5nID09PSAi
dXRmOCIpIHsKICAgdmFyIGJ1ZiA9IG5ldyBVaW50OEFycmF5KGxlbmd0aEJ5dGVzVVRGOChkYXRh
KSArIDEpOwogICB2YXIgYWN0dWFsTnVtQnl0ZXMgPSBzdHJpbmdUb1VURjhBcnJheShkYXRhLCBi
dWYsIDAsIGJ1Zi5sZW5ndGgpOwogICBGUy53cml0ZShzdHJlYW0sIGJ1ZiwgMCwgYWN0dWFsTnVt
Qnl0ZXMsIDAsIG9wdHMuY2FuT3duKTsKICB9IGVsc2UgaWYgKG9wdHMuZW5jb2RpbmcgPT09ICJi
aW5hcnkiKSB7CiAgIEZTLndyaXRlKHN0cmVhbSwgZGF0YSwgMCwgZGF0YS5sZW5ndGgsIDAsIG9w
dHMuY2FuT3duKTsKICB9CiAgRlMuY2xvc2Uoc3RyZWFtKTsKIH0pLAogY3dkOiAoZnVuY3Rpb24o
KSB7CiAgcmV0dXJuIEZTLmN1cnJlbnRQYXRoOwogfSksCiBjaGRpcjogKGZ1bmN0aW9uKHBhdGgp
IHsKICB2YXIgbG9va3VwID0gRlMubG9va3VwUGF0aChwYXRoLCB7CiAgIGZvbGxvdzogdHJ1ZQog
IH0pOwogIGlmICghRlMuaXNEaXIobG9va3VwLm5vZGUubW9kZSkpIHsKICAgdGhyb3cgbmV3IEZT
LkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRU5PVERJUik7CiAgfQogIHZhciBlcnIgPSBGUy5ub2Rl
UGVybWlzc2lvbnMobG9va3VwLm5vZGUsICJ4Iik7CiAgaWYgKGVycikgewogICB0aHJvdyBuZXcg
RlMuRXJybm9FcnJvcihlcnIpOwogIH0KICBGUy5jdXJyZW50UGF0aCA9IGxvb2t1cC5wYXRoOwog
fSksCiBjcmVhdGVEZWZhdWx0RGlyZWN0b3JpZXM6IChmdW5jdGlvbigpIHsKICBGUy5ta2Rpcigi
L3RtcCIpOwogIEZTLm1rZGlyKCIvaG9tZSIpOwogIEZTLm1rZGlyKCIvaG9tZS93ZWJfdXNlciIp
OwogfSksCiBjcmVhdGVEZWZhdWx0RGV2aWNlczogKGZ1bmN0aW9uKCkgewogIEZTLm1rZGlyKCIv
ZGV2Iik7CiAgRlMucmVnaXN0ZXJEZXZpY2UoRlMubWFrZWRldigxLCAzKSwgewogICByZWFkOiAo
ZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gMDsKICAgfSksCiAgIHdyaXRlOiAoZnVuY3Rpb24oc3Ry
ZWFtLCBidWZmZXIsIG9mZnNldCwgbGVuZ3RoLCBwb3MpIHsKICAgIHJldHVybiBsZW5ndGg7CiAg
IH0pCiAgfSk7CiAgRlMubWtkZXYoIi9kZXYvbnVsbCIsIEZTLm1ha2VkZXYoMSwgMykpOwogIFRU
WS5yZWdpc3RlcihGUy5tYWtlZGV2KDUsIDApLCBUVFkuZGVmYXVsdF90dHlfb3BzKTsKICBUVFku
cmVnaXN0ZXIoRlMubWFrZWRldig2LCAwKSwgVFRZLmRlZmF1bHRfdHR5MV9vcHMpOwogIEZTLm1r
ZGV2KCIvZGV2L3R0eSIsIEZTLm1ha2VkZXYoNSwgMCkpOwogIEZTLm1rZGV2KCIvZGV2L3R0eTEi
LCBGUy5tYWtlZGV2KDYsIDApKTsKICB2YXIgcmFuZG9tX2RldmljZTsKICBpZiAodHlwZW9mIGNy
eXB0byAhPT0gInVuZGVmaW5lZCIpIHsKICAgdmFyIHJhbmRvbUJ1ZmZlciA9IG5ldyBVaW50OEFy
cmF5KDEpOwogICByYW5kb21fZGV2aWNlID0gKGZ1bmN0aW9uKCkgewogICAgY3J5cHRvLmdldFJh
bmRvbVZhbHVlcyhyYW5kb21CdWZmZXIpOwogICAgcmV0dXJuIHJhbmRvbUJ1ZmZlclswXTsKICAg
fSk7CiAgfSBlbHNlIGlmIChFTlZJUk9OTUVOVF9JU19OT0RFKSB7CiAgIHJhbmRvbV9kZXZpY2Ug
PSAoZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gcmVxdWlyZSgiY3J5cHRvIikucmFuZG9tQnl0ZXMo
MSlbMF07CiAgIH0pOwogIH0gZWxzZSB7CiAgIHJhbmRvbV9kZXZpY2UgPSAoZnVuY3Rpb24oKSB7
CiAgICByZXR1cm4gTWF0aC5yYW5kb20oKSAqIDI1NiB8IDA7CiAgIH0pOwogIH0KICBGUy5jcmVh
dGVEZXZpY2UoIi9kZXYiLCAicmFuZG9tIiwgcmFuZG9tX2RldmljZSk7CiAgRlMuY3JlYXRlRGV2
aWNlKCIvZGV2IiwgInVyYW5kb20iLCByYW5kb21fZGV2aWNlKTsKICBGUy5ta2RpcigiL2Rldi9z
aG0iKTsKICBGUy5ta2RpcigiL2Rldi9zaG0vdG1wIik7CiB9KSwKIGNyZWF0ZVNwZWNpYWxEaXJl
Y3RvcmllczogKGZ1bmN0aW9uKCkgewogIEZTLm1rZGlyKCIvcHJvYyIpOwogIEZTLm1rZGlyKCIv
cHJvYy9zZWxmIik7CiAgRlMubWtkaXIoIi9wcm9jL3NlbGYvZmQiKTsKICBGUy5tb3VudCh7CiAg
IG1vdW50OiAoZnVuY3Rpb24oKSB7CiAgICB2YXIgbm9kZSA9IEZTLmNyZWF0ZU5vZGUoIi9wcm9j
L3NlbGYiLCAiZmQiLCAxNjM4NCB8IDUxMSwgNzMpOwogICAgbm9kZS5ub2RlX29wcyA9IHsKICAg
ICBsb29rdXA6IChmdW5jdGlvbihwYXJlbnQsIG5hbWUpIHsKICAgICAgdmFyIGZkID0gK25hbWU7
CiAgICAgIHZhciBzdHJlYW0gPSBGUy5nZXRTdHJlYW0oZmQpOwogICAgICBpZiAoIXN0cmVhbSkg
dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUJBREYpOwogICAgICB2YXIgcmV0
ID0gewogICAgICAgcGFyZW50OiBudWxsLAogICAgICAgbW91bnQ6IHsKICAgICAgICBtb3VudHBv
aW50OiAiZmFrZSIKICAgICAgIH0sCiAgICAgICBub2RlX29wczogewogICAgICAgIHJlYWRsaW5r
OiAoZnVuY3Rpb24oKSB7CiAgICAgICAgIHJldHVybiBzdHJlYW0ucGF0aDsKICAgICAgICB9KQog
ICAgICAgfQogICAgICB9OwogICAgICByZXQucGFyZW50ID0gcmV0OwogICAgICByZXR1cm4gcmV0
OwogICAgIH0pCiAgICB9OwogICAgcmV0dXJuIG5vZGU7CiAgIH0pCiAgfSwge30sICIvcHJvYy9z
ZWxmL2ZkIik7CiB9KSwKIGNyZWF0ZVN0YW5kYXJkU3RyZWFtczogKGZ1bmN0aW9uKCkgewogIGlm
IChNb2R1bGVbInN0ZGluIl0pIHsKICAgRlMuY3JlYXRlRGV2aWNlKCIvZGV2IiwgInN0ZGluIiwg
TW9kdWxlWyJzdGRpbiJdKTsKICB9IGVsc2UgewogICBGUy5zeW1saW5rKCIvZGV2L3R0eSIsICIv
ZGV2L3N0ZGluIik7CiAgfQogIGlmIChNb2R1bGVbInN0ZG91dCJdKSB7CiAgIEZTLmNyZWF0ZURl
dmljZSgiL2RldiIsICJzdGRvdXQiLCBudWxsLCBNb2R1bGVbInN0ZG91dCJdKTsKICB9IGVsc2Ug
ewogICBGUy5zeW1saW5rKCIvZGV2L3R0eSIsICIvZGV2L3N0ZG91dCIpOwogIH0KICBpZiAoTW9k
dWxlWyJzdGRlcnIiXSkgewogICBGUy5jcmVhdGVEZXZpY2UoIi9kZXYiLCAic3RkZXJyIiwgbnVs
bCwgTW9kdWxlWyJzdGRlcnIiXSk7CiAgfSBlbHNlIHsKICAgRlMuc3ltbGluaygiL2Rldi90dHkx
IiwgIi9kZXYvc3RkZXJyIik7CiAgfQogIHZhciBzdGRpbiA9IEZTLm9wZW4oIi9kZXYvc3RkaW4i
LCAiciIpOwogIGFzc2VydChzdGRpbi5mZCA9PT0gMCwgImludmFsaWQgaGFuZGxlIGZvciBzdGRp
biAoIiArIHN0ZGluLmZkICsgIikiKTsKICB2YXIgc3Rkb3V0ID0gRlMub3BlbigiL2Rldi9zdGRv
dXQiLCAidyIpOwogIGFzc2VydChzdGRvdXQuZmQgPT09IDEsICJpbnZhbGlkIGhhbmRsZSBmb3Ig
c3Rkb3V0ICgiICsgc3Rkb3V0LmZkICsgIikiKTsKICB2YXIgc3RkZXJyID0gRlMub3BlbigiL2Rl
di9zdGRlcnIiLCAidyIpOwogIGFzc2VydChzdGRlcnIuZmQgPT09IDIsICJpbnZhbGlkIGhhbmRs
ZSBmb3Igc3RkZXJyICgiICsgc3RkZXJyLmZkICsgIikiKTsKIH0pLAogZW5zdXJlRXJybm9FcnJv
cjogKGZ1bmN0aW9uKCkgewogIGlmIChGUy5FcnJub0Vycm9yKSByZXR1cm47CiAgRlMuRXJybm9F
cnJvciA9IGZ1bmN0aW9uIEVycm5vRXJyb3IoZXJybm8sIG5vZGUpIHsKICAgdGhpcy5ub2RlID0g
bm9kZTsKICAgdGhpcy5zZXRFcnJubyA9IChmdW5jdGlvbihlcnJubykgewogICAgdGhpcy5lcnJu
byA9IGVycm5vOwogICAgZm9yICh2YXIga2V5IGluIEVSUk5PX0NPREVTKSB7CiAgICAgaWYgKEVS
Uk5PX0NPREVTW2tleV0gPT09IGVycm5vKSB7CiAgICAgIHRoaXMuY29kZSA9IGtleTsKICAgICAg
YnJlYWs7CiAgICAgfQogICAgfQogICB9KTsKICAgdGhpcy5zZXRFcnJubyhlcnJubyk7CiAgIHRo
aXMubWVzc2FnZSA9IEVSUk5PX01FU1NBR0VTW2Vycm5vXTsKICB9OwogIEZTLkVycm5vRXJyb3Iu
cHJvdG90eXBlID0gbmV3IEVycm9yOwogIEZTLkVycm5vRXJyb3IucHJvdG90eXBlLmNvbnN0cnVj
dG9yID0gRlMuRXJybm9FcnJvcjsKICBbIEVSUk5PX0NPREVTLkVOT0VOVCBdLmZvckVhY2goKGZ1
bmN0aW9uKGNvZGUpIHsKICAgRlMuZ2VuZXJpY0Vycm9yc1tjb2RlXSA9IG5ldyBGUy5FcnJub0Vy
cm9yKGNvZGUpOwogICBGUy5nZW5lcmljRXJyb3JzW2NvZGVdLnN0YWNrID0gIjxnZW5lcmljIGVy
cm9yLCBubyBzdGFjaz4iOwogIH0pKTsKIH0pLAogc3RhdGljSW5pdDogKGZ1bmN0aW9uKCkgewog
IEZTLmVuc3VyZUVycm5vRXJyb3IoKTsKICBGUy5uYW1lVGFibGUgPSBuZXcgQXJyYXkoNDA5Nik7
CiAgRlMubW91bnQoTUVNRlMsIHt9LCAiLyIpOwogIEZTLmNyZWF0ZURlZmF1bHREaXJlY3Rvcmll
cygpOwogIEZTLmNyZWF0ZURlZmF1bHREZXZpY2VzKCk7CiAgRlMuY3JlYXRlU3BlY2lhbERpcmVj
dG9yaWVzKCk7CiAgRlMuZmlsZXN5c3RlbXMgPSB7CiAgICJNRU1GUyI6IE1FTUZTLAogICAiSURC
RlMiOiBJREJGUywKICAgIk5PREVGUyI6IE5PREVGUywKICAgIldPUktFUkZTIjogV09SS0VSRlMK
ICB9OwogfSksCiBpbml0OiAoZnVuY3Rpb24oaW5wdXQsIG91dHB1dCwgZXJyb3IpIHsKICBhc3Nl
cnQoIUZTLmluaXQuaW5pdGlhbGl6ZWQsICJGUy5pbml0IHdhcyBwcmV2aW91c2x5IGNhbGxlZC4g
SWYgeW91IHdhbnQgdG8gaW5pdGlhbGl6ZSBsYXRlciB3aXRoIGN1c3RvbSBwYXJhbWV0ZXJzLCBy
ZW1vdmUgYW55IGVhcmxpZXIgY2FsbHMgKG5vdGUgdGhhdCBvbmUgaXMgYXV0b21hdGljYWxseSBh
ZGRlZCB0byB0aGUgZ2VuZXJhdGVkIGNvZGUpIik7CiAgRlMuaW5pdC5pbml0aWFsaXplZCA9IHRy
dWU7CiAgRlMuZW5zdXJlRXJybm9FcnJvcigpOwogIE1vZHVsZVsic3RkaW4iXSA9IGlucHV0IHx8
IE1vZHVsZVsic3RkaW4iXTsKICBNb2R1bGVbInN0ZG91dCJdID0gb3V0cHV0IHx8IE1vZHVsZVsi
c3Rkb3V0Il07CiAgTW9kdWxlWyJzdGRlcnIiXSA9IGVycm9yIHx8IE1vZHVsZVsic3RkZXJyIl07
CiAgRlMuY3JlYXRlU3RhbmRhcmRTdHJlYW1zKCk7CiB9KSwKIHF1aXQ6IChmdW5jdGlvbigpIHsK
ICBGUy5pbml0LmluaXRpYWxpemVkID0gZmFsc2U7CiAgdmFyIGZmbHVzaCA9IE1vZHVsZVsiX2Zm
bHVzaCJdOwogIGlmIChmZmx1c2gpIGZmbHVzaCgwKTsKICBmb3IgKHZhciBpID0gMDsgaSA8IEZT
LnN0cmVhbXMubGVuZ3RoOyBpKyspIHsKICAgdmFyIHN0cmVhbSA9IEZTLnN0cmVhbXNbaV07CiAg
IGlmICghc3RyZWFtKSB7CiAgICBjb250aW51ZTsKICAgfQogICBGUy5jbG9zZShzdHJlYW0pOwog
IH0KIH0pLAogZ2V0TW9kZTogKGZ1bmN0aW9uKGNhblJlYWQsIGNhbldyaXRlKSB7CiAgdmFyIG1v
ZGUgPSAwOwogIGlmIChjYW5SZWFkKSBtb2RlIHw9IDI5MiB8IDczOwogIGlmIChjYW5Xcml0ZSkg
bW9kZSB8PSAxNDY7CiAgcmV0dXJuIG1vZGU7CiB9KSwKIGpvaW5QYXRoOiAoZnVuY3Rpb24ocGFy
dHMsIGZvcmNlUmVsYXRpdmUpIHsKICB2YXIgcGF0aCA9IFBBVEguam9pbi5hcHBseShudWxsLCBw
YXJ0cyk7CiAgaWYgKGZvcmNlUmVsYXRpdmUgJiYgcGF0aFswXSA9PSAiLyIpIHBhdGggPSBwYXRo
LnN1YnN0cigxKTsKICByZXR1cm4gcGF0aDsKIH0pLAogYWJzb2x1dGVQYXRoOiAoZnVuY3Rpb24o
cmVsYXRpdmUsIGJhc2UpIHsKICByZXR1cm4gUEFUSC5yZXNvbHZlKGJhc2UsIHJlbGF0aXZlKTsK
IH0pLAogc3RhbmRhcmRpemVQYXRoOiAoZnVuY3Rpb24ocGF0aCkgewogIHJldHVybiBQQVRILm5v
cm1hbGl6ZShwYXRoKTsKIH0pLAogZmluZE9iamVjdDogKGZ1bmN0aW9uKHBhdGgsIGRvbnRSZXNv
bHZlTGFzdExpbmspIHsKICB2YXIgcmV0ID0gRlMuYW5hbHl6ZVBhdGgocGF0aCwgZG9udFJlc29s
dmVMYXN0TGluayk7CiAgaWYgKHJldC5leGlzdHMpIHsKICAgcmV0dXJuIHJldC5vYmplY3Q7CiAg
fSBlbHNlIHsKICAgX19fc2V0RXJyTm8ocmV0LmVycm9yKTsKICAgcmV0dXJuIG51bGw7CiAgfQog
fSksCiBhbmFseXplUGF0aDogKGZ1bmN0aW9uKHBhdGgsIGRvbnRSZXNvbHZlTGFzdExpbmspIHsK
ICB0cnkgewogICB2YXIgbG9va3VwID0gRlMubG9va3VwUGF0aChwYXRoLCB7CiAgICBmb2xsb3c6
ICFkb250UmVzb2x2ZUxhc3RMaW5rCiAgIH0pOwogICBwYXRoID0gbG9va3VwLnBhdGg7CiAgfSBj
YXRjaCAoZSkge30KICB2YXIgcmV0ID0gewogICBpc1Jvb3Q6IGZhbHNlLAogICBleGlzdHM6IGZh
bHNlLAogICBlcnJvcjogMCwKICAgbmFtZTogbnVsbCwKICAgcGF0aDogbnVsbCwKICAgb2JqZWN0
OiBudWxsLAogICBwYXJlbnRFeGlzdHM6IGZhbHNlLAogICBwYXJlbnRQYXRoOiBudWxsLAogICBw
YXJlbnRPYmplY3Q6IG51bGwKICB9OwogIHRyeSB7CiAgIHZhciBsb29rdXAgPSBGUy5sb29rdXBQ
YXRoKHBhdGgsIHsKICAgIHBhcmVudDogdHJ1ZQogICB9KTsKICAgcmV0LnBhcmVudEV4aXN0cyA9
IHRydWU7CiAgIHJldC5wYXJlbnRQYXRoID0gbG9va3VwLnBhdGg7CiAgIHJldC5wYXJlbnRPYmpl
Y3QgPSBsb29rdXAubm9kZTsKICAgcmV0Lm5hbWUgPSBQQVRILmJhc2VuYW1lKHBhdGgpOwogICBs
b29rdXAgPSBGUy5sb29rdXBQYXRoKHBhdGgsIHsKICAgIGZvbGxvdzogIWRvbnRSZXNvbHZlTGFz
dExpbmsKICAgfSk7CiAgIHJldC5leGlzdHMgPSB0cnVlOwogICByZXQucGF0aCA9IGxvb2t1cC5w
YXRoOwogICByZXQub2JqZWN0ID0gbG9va3VwLm5vZGU7CiAgIHJldC5uYW1lID0gbG9va3VwLm5v
ZGUubmFtZTsKICAgcmV0LmlzUm9vdCA9IGxvb2t1cC5wYXRoID09PSAiLyI7CiAgfSBjYXRjaCAo
ZSkgewogICByZXQuZXJyb3IgPSBlLmVycm5vOwogIH0KICByZXR1cm4gcmV0OwogfSksCiBjcmVh
dGVGb2xkZXI6IChmdW5jdGlvbihwYXJlbnQsIG5hbWUsIGNhblJlYWQsIGNhbldyaXRlKSB7CiAg
dmFyIHBhdGggPSBQQVRILmpvaW4yKHR5cGVvZiBwYXJlbnQgPT09ICJzdHJpbmciID8gcGFyZW50
IDogRlMuZ2V0UGF0aChwYXJlbnQpLCBuYW1lKTsKICB2YXIgbW9kZSA9IEZTLmdldE1vZGUoY2Fu
UmVhZCwgY2FuV3JpdGUpOwogIHJldHVybiBGUy5ta2RpcihwYXRoLCBtb2RlKTsKIH0pLAogY3Jl
YXRlUGF0aDogKGZ1bmN0aW9uKHBhcmVudCwgcGF0aCwgY2FuUmVhZCwgY2FuV3JpdGUpIHsKICBw
YXJlbnQgPSB0eXBlb2YgcGFyZW50ID09PSAic3RyaW5nIiA/IHBhcmVudCA6IEZTLmdldFBhdGgo
cGFyZW50KTsKICB2YXIgcGFydHMgPSBwYXRoLnNwbGl0KCIvIikucmV2ZXJzZSgpOwogIHdoaWxl
IChwYXJ0cy5sZW5ndGgpIHsKICAgdmFyIHBhcnQgPSBwYXJ0cy5wb3AoKTsKICAgaWYgKCFwYXJ0
KSBjb250aW51ZTsKICAgdmFyIGN1cnJlbnQgPSBQQVRILmpvaW4yKHBhcmVudCwgcGFydCk7CiAg
IHRyeSB7CiAgICBGUy5ta2RpcihjdXJyZW50KTsKICAgfSBjYXRjaCAoZSkge30KICAgcGFyZW50
ID0gY3VycmVudDsKICB9CiAgcmV0dXJuIGN1cnJlbnQ7CiB9KSwKIGNyZWF0ZUZpbGU6IChmdW5j
dGlvbihwYXJlbnQsIG5hbWUsIHByb3BlcnRpZXMsIGNhblJlYWQsIGNhbldyaXRlKSB7CiAgdmFy
IHBhdGggPSBQQVRILmpvaW4yKHR5cGVvZiBwYXJlbnQgPT09ICJzdHJpbmciID8gcGFyZW50IDog
RlMuZ2V0UGF0aChwYXJlbnQpLCBuYW1lKTsKICB2YXIgbW9kZSA9IEZTLmdldE1vZGUoY2FuUmVh
ZCwgY2FuV3JpdGUpOwogIHJldHVybiBGUy5jcmVhdGUocGF0aCwgbW9kZSk7CiB9KSwKIGNyZWF0
ZURhdGFGaWxlOiAoZnVuY3Rpb24ocGFyZW50LCBuYW1lLCBkYXRhLCBjYW5SZWFkLCBjYW5Xcml0
ZSwgY2FuT3duKSB7CiAgdmFyIHBhdGggPSBuYW1lID8gUEFUSC5qb2luMih0eXBlb2YgcGFyZW50
ID09PSAic3RyaW5nIiA/IHBhcmVudCA6IEZTLmdldFBhdGgocGFyZW50KSwgbmFtZSkgOiBwYXJl
bnQ7CiAgdmFyIG1vZGUgPSBGUy5nZXRNb2RlKGNhblJlYWQsIGNhbldyaXRlKTsKICB2YXIgbm9k
ZSA9IEZTLmNyZWF0ZShwYXRoLCBtb2RlKTsKICBpZiAoZGF0YSkgewogICBpZiAodHlwZW9mIGRh
dGEgPT09ICJzdHJpbmciKSB7CiAgICB2YXIgYXJyID0gbmV3IEFycmF5KGRhdGEubGVuZ3RoKTsK
ICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBkYXRhLmxlbmd0aDsgaSA8IGxlbjsgKytpKSBhcnJb
aV0gPSBkYXRhLmNoYXJDb2RlQXQoaSk7CiAgICBkYXRhID0gYXJyOwogICB9CiAgIEZTLmNobW9k
KG5vZGUsIG1vZGUgfCAxNDYpOwogICB2YXIgc3RyZWFtID0gRlMub3Blbihub2RlLCAidyIpOwog
ICBGUy53cml0ZShzdHJlYW0sIGRhdGEsIDAsIGRhdGEubGVuZ3RoLCAwLCBjYW5Pd24pOwogICBG
Uy5jbG9zZShzdHJlYW0pOwogICBGUy5jaG1vZChub2RlLCBtb2RlKTsKICB9CiAgcmV0dXJuIG5v
ZGU7CiB9KSwKIGNyZWF0ZURldmljZTogKGZ1bmN0aW9uKHBhcmVudCwgbmFtZSwgaW5wdXQsIG91
dHB1dCkgewogIHZhciBwYXRoID0gUEFUSC5qb2luMih0eXBlb2YgcGFyZW50ID09PSAic3RyaW5n
IiA/IHBhcmVudCA6IEZTLmdldFBhdGgocGFyZW50KSwgbmFtZSk7CiAgdmFyIG1vZGUgPSBGUy5n
ZXRNb2RlKCEhaW5wdXQsICEhb3V0cHV0KTsKICBpZiAoIUZTLmNyZWF0ZURldmljZS5tYWpvcikg
RlMuY3JlYXRlRGV2aWNlLm1ham9yID0gNjQ7CiAgdmFyIGRldiA9IEZTLm1ha2VkZXYoRlMuY3Jl
YXRlRGV2aWNlLm1ham9yKyssIDApOwogIEZTLnJlZ2lzdGVyRGV2aWNlKGRldiwgewogICBvcGVu
OiAoZnVuY3Rpb24oc3RyZWFtKSB7CiAgICBzdHJlYW0uc2Vla2FibGUgPSBmYWxzZTsKICAgfSks
CiAgIGNsb3NlOiAoZnVuY3Rpb24oc3RyZWFtKSB7CiAgICBpZiAob3V0cHV0ICYmIG91dHB1dC5i
dWZmZXIgJiYgb3V0cHV0LmJ1ZmZlci5sZW5ndGgpIHsKICAgICBvdXRwdXQoMTApOwogICAgfQog
ICB9KSwKICAgcmVhZDogKGZ1bmN0aW9uKHN0cmVhbSwgYnVmZmVyLCBvZmZzZXQsIGxlbmd0aCwg
cG9zKSB7CiAgICB2YXIgYnl0ZXNSZWFkID0gMDsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVu
Z3RoOyBpKyspIHsKICAgICB2YXIgcmVzdWx0OwogICAgIHRyeSB7CiAgICAgIHJlc3VsdCA9IGlu
cHV0KCk7CiAgICAgfSBjYXRjaCAoZSkgewogICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihF
UlJOT19DT0RFUy5FSU8pOwogICAgIH0KICAgICBpZiAocmVzdWx0ID09PSB1bmRlZmluZWQgJiYg
Ynl0ZXNSZWFkID09PSAwKSB7CiAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NP
REVTLkVBR0FJTik7CiAgICAgfQogICAgIGlmIChyZXN1bHQgPT09IG51bGwgfHwgcmVzdWx0ID09
PSB1bmRlZmluZWQpIGJyZWFrOwogICAgIGJ5dGVzUmVhZCsrOwogICAgIGJ1ZmZlcltvZmZzZXQg
KyBpXSA9IHJlc3VsdDsKICAgIH0KICAgIGlmIChieXRlc1JlYWQpIHsKICAgICBzdHJlYW0ubm9k
ZS50aW1lc3RhbXAgPSBEYXRlLm5vdygpOwogICAgfQogICAgcmV0dXJuIGJ5dGVzUmVhZDsKICAg
fSksCiAgIHdyaXRlOiAoZnVuY3Rpb24oc3RyZWFtLCBidWZmZXIsIG9mZnNldCwgbGVuZ3RoLCBw
b3MpIHsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKICAgICB0cnkgewog
ICAgICBvdXRwdXQoYnVmZmVyW29mZnNldCArIGldKTsKICAgICB9IGNhdGNoIChlKSB7CiAgICAg
IHRocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVJTyk7CiAgICAgfQogICAgfQog
ICAgaWYgKGxlbmd0aCkgewogICAgIHN0cmVhbS5ub2RlLnRpbWVzdGFtcCA9IERhdGUubm93KCk7
CiAgICB9CiAgICByZXR1cm4gaTsKICAgfSkKICB9KTsKICByZXR1cm4gRlMubWtkZXYocGF0aCwg
bW9kZSwgZGV2KTsKIH0pLAogY3JlYXRlTGluazogKGZ1bmN0aW9uKHBhcmVudCwgbmFtZSwgdGFy
Z2V0LCBjYW5SZWFkLCBjYW5Xcml0ZSkgewogIHZhciBwYXRoID0gUEFUSC5qb2luMih0eXBlb2Yg
cGFyZW50ID09PSAic3RyaW5nIiA/IHBhcmVudCA6IEZTLmdldFBhdGgocGFyZW50KSwgbmFtZSk7
CiAgcmV0dXJuIEZTLnN5bWxpbmsodGFyZ2V0LCBwYXRoKTsKIH0pLAogZm9yY2VMb2FkRmlsZTog
KGZ1bmN0aW9uKG9iaikgewogIGlmIChvYmouaXNEZXZpY2UgfHwgb2JqLmlzRm9sZGVyIHx8IG9i
ai5saW5rIHx8IG9iai5jb250ZW50cykgcmV0dXJuIHRydWU7CiAgdmFyIHN1Y2Nlc3MgPSB0cnVl
OwogIGlmICh0eXBlb2YgWE1MSHR0cFJlcXVlc3QgIT09ICJ1bmRlZmluZWQiKSB7CiAgIHRocm93
IG5ldyBFcnJvcigiTGF6eSBsb2FkaW5nIHNob3VsZCBoYXZlIGJlZW4gcGVyZm9ybWVkIChjb250
ZW50cyBzZXQpIGluIGNyZWF0ZUxhenlGaWxlLCBidXQgaXQgd2FzIG5vdC4gTGF6eSBsb2FkaW5n
IG9ubHkgd29ya3MgaW4gd2ViIHdvcmtlcnMuIFVzZSAtLWVtYmVkLWZpbGUgb3IgLS1wcmVsb2Fk
LWZpbGUgaW4gZW1jYyBvbiB0aGUgbWFpbiB0aHJlYWQuIik7CiAgfSBlbHNlIGlmIChNb2R1bGVb
InJlYWQiXSkgewogICB0cnkgewogICAgb2JqLmNvbnRlbnRzID0gaW50QXJyYXlGcm9tU3RyaW5n
KE1vZHVsZVsicmVhZCJdKG9iai51cmwpLCB0cnVlKTsKICAgIG9iai51c2VkQnl0ZXMgPSBvYmou
Y29udGVudHMubGVuZ3RoOwogICB9IGNhdGNoIChlKSB7CiAgICBzdWNjZXNzID0gZmFsc2U7CiAg
IH0KICB9IGVsc2UgewogICB0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBsb2FkIHdpdGhvdXQgcmVh
ZCgpIG9yIFhNTEh0dHBSZXF1ZXN0LiIpOwogIH0KICBpZiAoIXN1Y2Nlc3MpIF9fX3NldEVyck5v
KEVSUk5PX0NPREVTLkVJTyk7CiAgcmV0dXJuIHN1Y2Nlc3M7CiB9KSwKIGNyZWF0ZUxhenlGaWxl
OiAoZnVuY3Rpb24ocGFyZW50LCBuYW1lLCB1cmwsIGNhblJlYWQsIGNhbldyaXRlKSB7CiAgZnVu
Y3Rpb24gTGF6eVVpbnQ4QXJyYXkoKSB7CiAgIHRoaXMubGVuZ3RoS25vd24gPSBmYWxzZTsKICAg
dGhpcy5jaHVua3MgPSBbXTsKICB9CiAgTGF6eVVpbnQ4QXJyYXkucHJvdG90eXBlLmdldCA9IGZ1
bmN0aW9uIExhenlVaW50OEFycmF5X2dldChpZHgpIHsKICAgaWYgKGlkeCA+IHRoaXMubGVuZ3Ro
IC0gMSB8fCBpZHggPCAwKSB7CiAgICByZXR1cm4gdW5kZWZpbmVkOwogICB9CiAgIHZhciBjaHVu
a09mZnNldCA9IGlkeCAlIHRoaXMuY2h1bmtTaXplOwogICB2YXIgY2h1bmtOdW0gPSBpZHggLyB0
aGlzLmNodW5rU2l6ZSB8IDA7CiAgIHJldHVybiB0aGlzLmdldHRlcihjaHVua051bSlbY2h1bmtP
ZmZzZXRdOwogIH07CiAgTGF6eVVpbnQ4QXJyYXkucHJvdG90eXBlLnNldERhdGFHZXR0ZXIgPSBm
dW5jdGlvbiBMYXp5VWludDhBcnJheV9zZXREYXRhR2V0dGVyKGdldHRlcikgewogICB0aGlzLmdl
dHRlciA9IGdldHRlcjsKICB9OwogIExhenlVaW50OEFycmF5LnByb3RvdHlwZS5jYWNoZUxlbmd0
aCA9IGZ1bmN0aW9uIExhenlVaW50OEFycmF5X2NhY2hlTGVuZ3RoKCkgewogICB2YXIgeGhyID0g
bmV3IFhNTEh0dHBSZXF1ZXN0OwogICB4aHIub3BlbigiSEVBRCIsIHVybCwgZmFsc2UpOwogICB4
aHIuc2VuZChudWxsKTsKICAgaWYgKCEoeGhyLnN0YXR1cyA+PSAyMDAgJiYgeGhyLnN0YXR1cyA8
IDMwMCB8fCB4aHIuc3RhdHVzID09PSAzMDQpKSB0aHJvdyBuZXcgRXJyb3IoIkNvdWxkbid0IGxv
YWQgIiArIHVybCArICIuIFN0YXR1czogIiArIHhoci5zdGF0dXMpOwogICB2YXIgZGF0YWxlbmd0
aCA9IE51bWJlcih4aHIuZ2V0UmVzcG9uc2VIZWFkZXIoIkNvbnRlbnQtbGVuZ3RoIikpOwogICB2
YXIgaGVhZGVyOwogICB2YXIgaGFzQnl0ZVNlcnZpbmcgPSAoaGVhZGVyID0geGhyLmdldFJlc3Bv
bnNlSGVhZGVyKCJBY2NlcHQtUmFuZ2VzIikpICYmIGhlYWRlciA9PT0gImJ5dGVzIjsKICAgdmFy
IGNodW5rU2l6ZSA9IDEwMjQgKiAxMDI0OwogICBpZiAoIWhhc0J5dGVTZXJ2aW5nKSBjaHVua1Np
emUgPSBkYXRhbGVuZ3RoOwogICB2YXIgZG9YSFIgPSAoZnVuY3Rpb24oZnJvbSwgdG8pIHsKICAg
IGlmIChmcm9tID4gdG8pIHRocm93IG5ldyBFcnJvcigiaW52YWxpZCByYW5nZSAoIiArIGZyb20g
KyAiLCAiICsgdG8gKyAiKSBvciBubyBieXRlcyByZXF1ZXN0ZWQhIik7CiAgICBpZiAodG8gPiBk
YXRhbGVuZ3RoIC0gMSkgdGhyb3cgbmV3IEVycm9yKCJvbmx5ICIgKyBkYXRhbGVuZ3RoICsgIiBi
eXRlcyBhdmFpbGFibGUhIHByb2dyYW1tZXIgZXJyb3IhIik7CiAgICB2YXIgeGhyID0gbmV3IFhN
TEh0dHBSZXF1ZXN0OwogICAgeGhyLm9wZW4oIkdFVCIsIHVybCwgZmFsc2UpOwogICAgaWYgKGRh
dGFsZW5ndGggIT09IGNodW5rU2l6ZSkgeGhyLnNldFJlcXVlc3RIZWFkZXIoIlJhbmdlIiwgImJ5
dGVzPSIgKyBmcm9tICsgIi0iICsgdG8pOwogICAgaWYgKHR5cGVvZiBVaW50OEFycmF5ICE9ICJ1
bmRlZmluZWQiKSB4aHIucmVzcG9uc2VUeXBlID0gImFycmF5YnVmZmVyIjsKICAgIGlmICh4aHIu
b3ZlcnJpZGVNaW1lVHlwZSkgewogICAgIHhoci5vdmVycmlkZU1pbWVUeXBlKCJ0ZXh0L3BsYWlu
OyBjaGFyc2V0PXgtdXNlci1kZWZpbmVkIik7CiAgICB9CiAgICB4aHIuc2VuZChudWxsKTsKICAg
IGlmICghKHhoci5zdGF0dXMgPj0gMjAwICYmIHhoci5zdGF0dXMgPCAzMDAgfHwgeGhyLnN0YXR1
cyA9PT0gMzA0KSkgdGhyb3cgbmV3IEVycm9yKCJDb3VsZG4ndCBsb2FkICIgKyB1cmwgKyAiLiBT
dGF0dXM6ICIgKyB4aHIuc3RhdHVzKTsKICAgIGlmICh4aHIucmVzcG9uc2UgIT09IHVuZGVmaW5l
ZCkgewogICAgIHJldHVybiBuZXcgVWludDhBcnJheSh4aHIucmVzcG9uc2UgfHwgW10pOwogICAg
fSBlbHNlIHsKICAgICByZXR1cm4gaW50QXJyYXlGcm9tU3RyaW5nKHhoci5yZXNwb25zZVRleHQg
fHwgIiIsIHRydWUpOwogICAgfQogICB9KTsKICAgdmFyIGxhenlBcnJheSA9IHRoaXM7CiAgIGxh
enlBcnJheS5zZXREYXRhR2V0dGVyKChmdW5jdGlvbihjaHVua051bSkgewogICAgdmFyIHN0YXJ0
ID0gY2h1bmtOdW0gKiBjaHVua1NpemU7CiAgICB2YXIgZW5kID0gKGNodW5rTnVtICsgMSkgKiBj
aHVua1NpemUgLSAxOwogICAgZW5kID0gTWF0aC5taW4oZW5kLCBkYXRhbGVuZ3RoIC0gMSk7CiAg
ICBpZiAodHlwZW9mIGxhenlBcnJheS5jaHVua3NbY2h1bmtOdW1dID09PSAidW5kZWZpbmVkIikg
ewogICAgIGxhenlBcnJheS5jaHVua3NbY2h1bmtOdW1dID0gZG9YSFIoc3RhcnQsIGVuZCk7CiAg
ICB9CiAgICBpZiAodHlwZW9mIGxhenlBcnJheS5jaHVua3NbY2h1bmtOdW1dID09PSAidW5kZWZp
bmVkIikgdGhyb3cgbmV3IEVycm9yKCJkb1hIUiBmYWlsZWQhIik7CiAgICByZXR1cm4gbGF6eUFy
cmF5LmNodW5rc1tjaHVua051bV07CiAgIH0pKTsKICAgdGhpcy5fbGVuZ3RoID0gZGF0YWxlbmd0
aDsKICAgdGhpcy5fY2h1bmtTaXplID0gY2h1bmtTaXplOwogICB0aGlzLmxlbmd0aEtub3duID0g
dHJ1ZTsKICB9OwogIGlmICh0eXBlb2YgWE1MSHR0cFJlcXVlc3QgIT09ICJ1bmRlZmluZWQiKSB7
CiAgIGlmICghRU5WSVJPTk1FTlRfSVNfV09SS0VSKSB0aHJvdyAiQ2Fubm90IGRvIHN5bmNocm9u
b3VzIGJpbmFyeSBYSFJzIG91dHNpZGUgd2Vid29ya2VycyBpbiBtb2Rlcm4gYnJvd3NlcnMuIFVz
ZSAtLWVtYmVkLWZpbGUgb3IgLS1wcmVsb2FkLWZpbGUgaW4gZW1jYyI7CiAgIHZhciBsYXp5QXJy
YXkgPSBuZXcgTGF6eVVpbnQ4QXJyYXk7CiAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsYXp5QXJy
YXksICJsZW5ndGgiLCB7CiAgICBnZXQ6IChmdW5jdGlvbigpIHsKICAgICBpZiAoIXRoaXMubGVu
Z3RoS25vd24pIHsKICAgICAgdGhpcy5jYWNoZUxlbmd0aCgpOwogICAgIH0KICAgICByZXR1cm4g
dGhpcy5fbGVuZ3RoOwogICAgfSkKICAgfSk7CiAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsYXp5
QXJyYXksICJjaHVua1NpemUiLCB7CiAgICBnZXQ6IChmdW5jdGlvbigpIHsKICAgICBpZiAoIXRo
aXMubGVuZ3RoS25vd24pIHsKICAgICAgdGhpcy5jYWNoZUxlbmd0aCgpOwogICAgIH0KICAgICBy
ZXR1cm4gdGhpcy5fY2h1bmtTaXplOwogICAgfSkKICAgfSk7CiAgIHZhciBwcm9wZXJ0aWVzID0g
ewogICAgaXNEZXZpY2U6IGZhbHNlLAogICAgY29udGVudHM6IGxhenlBcnJheQogICB9OwogIH0g
ZWxzZSB7CiAgIHZhciBwcm9wZXJ0aWVzID0gewogICAgaXNEZXZpY2U6IGZhbHNlLAogICAgdXJs
OiB1cmwKICAgfTsKICB9CiAgdmFyIG5vZGUgPSBGUy5jcmVhdGVGaWxlKHBhcmVudCwgbmFtZSwg
cHJvcGVydGllcywgY2FuUmVhZCwgY2FuV3JpdGUpOwogIGlmIChwcm9wZXJ0aWVzLmNvbnRlbnRz
KSB7CiAgIG5vZGUuY29udGVudHMgPSBwcm9wZXJ0aWVzLmNvbnRlbnRzOwogIH0gZWxzZSBpZiAo
cHJvcGVydGllcy51cmwpIHsKICAgbm9kZS5jb250ZW50cyA9IG51bGw7CiAgIG5vZGUudXJsID0g
cHJvcGVydGllcy51cmw7CiAgfQogIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShub2RlLCAidXNlZEJ5
dGVzIiwgewogICBnZXQ6IChmdW5jdGlvbigpIHsKICAgIHJldHVybiB0aGlzLmNvbnRlbnRzLmxl
bmd0aDsKICAgfSkKICB9KTsKICB2YXIgc3RyZWFtX29wcyA9IHt9OwogIHZhciBrZXlzID0gT2Jq
ZWN0LmtleXMobm9kZS5zdHJlYW1fb3BzKTsKICBrZXlzLmZvckVhY2goKGZ1bmN0aW9uKGtleSkg
ewogICB2YXIgZm4gPSBub2RlLnN0cmVhbV9vcHNba2V5XTsKICAgc3RyZWFtX29wc1trZXldID0g
ZnVuY3Rpb24gZm9yY2VMb2FkTGF6eUZpbGUoKSB7CiAgICBpZiAoIUZTLmZvcmNlTG9hZEZpbGUo
bm9kZSkpIHsKICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FSU8pOwog
ICAgfQogICAgcmV0dXJuIGZuLmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7CiAgIH07CiAgfSkpOwog
IHN0cmVhbV9vcHMucmVhZCA9IGZ1bmN0aW9uIHN0cmVhbV9vcHNfcmVhZChzdHJlYW0sIGJ1ZmZl
ciwgb2Zmc2V0LCBsZW5ndGgsIHBvc2l0aW9uKSB7CiAgIGlmICghRlMuZm9yY2VMb2FkRmlsZShu
b2RlKSkgewogICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUlPKTsKICAg
fQogICB2YXIgY29udGVudHMgPSBzdHJlYW0ubm9kZS5jb250ZW50czsKICAgaWYgKHBvc2l0aW9u
ID49IGNvbnRlbnRzLmxlbmd0aCkgcmV0dXJuIDA7CiAgIHZhciBzaXplID0gTWF0aC5taW4oY29u
dGVudHMubGVuZ3RoIC0gcG9zaXRpb24sIGxlbmd0aCk7CiAgIGFzc2VydChzaXplID49IDApOwog
ICBpZiAoY29udGVudHMuc2xpY2UpIHsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsr
KSB7CiAgICAgYnVmZmVyW29mZnNldCArIGldID0gY29udGVudHNbcG9zaXRpb24gKyBpXTsKICAg
IH0KICAgfSBlbHNlIHsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CiAgICAg
YnVmZmVyW29mZnNldCArIGldID0gY29udGVudHMuZ2V0KHBvc2l0aW9uICsgaSk7CiAgICB9CiAg
IH0KICAgcmV0dXJuIHNpemU7CiAgfTsKICBub2RlLnN0cmVhbV9vcHMgPSBzdHJlYW1fb3BzOwog
IHJldHVybiBub2RlOwogfSksCiBjcmVhdGVQcmVsb2FkZWRGaWxlOiAoZnVuY3Rpb24ocGFyZW50
LCBuYW1lLCB1cmwsIGNhblJlYWQsIGNhbldyaXRlLCBvbmxvYWQsIG9uZXJyb3IsIGRvbnRDcmVh
dGVGaWxlLCBjYW5Pd24sIHByZUZpbmlzaCkgewogIEJyb3dzZXIuaW5pdCgpOwogIHZhciBmdWxs
bmFtZSA9IG5hbWUgPyBQQVRILnJlc29sdmUoUEFUSC5qb2luMihwYXJlbnQsIG5hbWUpKSA6IHBh
cmVudDsKICB2YXIgZGVwID0gZ2V0VW5pcXVlUnVuRGVwZW5kZW5jeSgiY3AgIiArIGZ1bGxuYW1l
KTsKICBmdW5jdGlvbiBwcm9jZXNzRGF0YShieXRlQXJyYXkpIHsKICAgZnVuY3Rpb24gZmluaXNo
KGJ5dGVBcnJheSkgewogICAgaWYgKHByZUZpbmlzaCkgcHJlRmluaXNoKCk7CiAgICBpZiAoIWRv
bnRDcmVhdGVGaWxlKSB7CiAgICAgRlMuY3JlYXRlRGF0YUZpbGUocGFyZW50LCBuYW1lLCBieXRl
QXJyYXksIGNhblJlYWQsIGNhbldyaXRlLCBjYW5Pd24pOwogICAgfQogICAgaWYgKG9ubG9hZCkg
b25sb2FkKCk7CiAgICByZW1vdmVSdW5EZXBlbmRlbmN5KGRlcCk7CiAgIH0KICAgdmFyIGhhbmRs
ZWQgPSBmYWxzZTsKICAgTW9kdWxlWyJwcmVsb2FkUGx1Z2lucyJdLmZvckVhY2goKGZ1bmN0aW9u
KHBsdWdpbikgewogICAgaWYgKGhhbmRsZWQpIHJldHVybjsKICAgIGlmIChwbHVnaW5bImNhbkhh
bmRsZSJdKGZ1bGxuYW1lKSkgewogICAgIHBsdWdpblsiaGFuZGxlIl0oYnl0ZUFycmF5LCBmdWxs
bmFtZSwgZmluaXNoLCAoZnVuY3Rpb24oKSB7CiAgICAgIGlmIChvbmVycm9yKSBvbmVycm9yKCk7
CiAgICAgIHJlbW92ZVJ1bkRlcGVuZGVuY3koZGVwKTsKICAgICB9KSk7CiAgICAgaGFuZGxlZCA9
IHRydWU7CiAgICB9CiAgIH0pKTsKICAgaWYgKCFoYW5kbGVkKSBmaW5pc2goYnl0ZUFycmF5KTsK
ICB9CiAgYWRkUnVuRGVwZW5kZW5jeShkZXApOwogIGlmICh0eXBlb2YgdXJsID09ICJzdHJpbmci
KSB7CiAgIEJyb3dzZXIuYXN5bmNMb2FkKHVybCwgKGZ1bmN0aW9uKGJ5dGVBcnJheSkgewogICAg
cHJvY2Vzc0RhdGEoYnl0ZUFycmF5KTsKICAgfSksIG9uZXJyb3IpOwogIH0gZWxzZSB7CiAgIHBy
b2Nlc3NEYXRhKHVybCk7CiAgfQogfSksCiBpbmRleGVkREI6IChmdW5jdGlvbigpIHsKICByZXR1
cm4gd2luZG93LmluZGV4ZWREQiB8fCB3aW5kb3cubW96SW5kZXhlZERCIHx8IHdpbmRvdy53ZWJr
aXRJbmRleGVkREIgfHwgd2luZG93Lm1zSW5kZXhlZERCOwogfSksCiBEQl9OQU1FOiAoZnVuY3Rp
b24oKSB7CiAgcmV0dXJuICJFTV9GU18iICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lOwogfSks
CiBEQl9WRVJTSU9OOiAyMCwKIERCX1NUT1JFX05BTUU6ICJGSUxFX0RBVEEiLAogc2F2ZUZpbGVz
VG9EQjogKGZ1bmN0aW9uKHBhdGhzLCBvbmxvYWQsIG9uZXJyb3IpIHsKICBvbmxvYWQgPSBvbmxv
YWQgfHwgKGZ1bmN0aW9uKCkge30pOwogIG9uZXJyb3IgPSBvbmVycm9yIHx8IChmdW5jdGlvbigp
IHt9KTsKICB2YXIgaW5kZXhlZERCID0gRlMuaW5kZXhlZERCKCk7CiAgdHJ5IHsKICAgdmFyIG9w
ZW5SZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oRlMuREJfTkFNRSgpLCBGUy5EQl9WRVJTSU9OKTsK
ICB9IGNhdGNoIChlKSB7CiAgIHJldHVybiBvbmVycm9yKGUpOwogIH0KICBvcGVuUmVxdWVzdC5v
bnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbiBvcGVuUmVxdWVzdF9vbnVwZ3JhZGVuZWVkZWQoKSB7
CiAgIGNvbnNvbGUubG9nKCJjcmVhdGluZyBkYiIpOwogICB2YXIgZGIgPSBvcGVuUmVxdWVzdC5y
ZXN1bHQ7CiAgIGRiLmNyZWF0ZU9iamVjdFN0b3JlKEZTLkRCX1NUT1JFX05BTUUpOwogIH07CiAg
b3BlblJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gb3BlblJlcXVlc3Rfb25zdWNjZXNzKCkg
ewogICB2YXIgZGIgPSBvcGVuUmVxdWVzdC5yZXN1bHQ7CiAgIHZhciB0cmFuc2FjdGlvbiA9IGRi
LnRyYW5zYWN0aW9uKFsgRlMuREJfU1RPUkVfTkFNRSBdLCAicmVhZHdyaXRlIik7CiAgIHZhciBm
aWxlcyA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKEZTLkRCX1NUT1JFX05BTUUpOwogICB2YXIg
b2sgPSAwLCBmYWlsID0gMCwgdG90YWwgPSBwYXRocy5sZW5ndGg7CiAgIGZ1bmN0aW9uIGZpbmlz
aCgpIHsKICAgIGlmIChmYWlsID09IDApIG9ubG9hZCgpOyBlbHNlIG9uZXJyb3IoKTsKICAgfQog
ICBwYXRocy5mb3JFYWNoKChmdW5jdGlvbihwYXRoKSB7CiAgICB2YXIgcHV0UmVxdWVzdCA9IGZp
bGVzLnB1dChGUy5hbmFseXplUGF0aChwYXRoKS5vYmplY3QuY29udGVudHMsIHBhdGgpOwogICAg
cHV0UmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiBwdXRSZXF1ZXN0X29uc3VjY2VzcygpIHsK
ICAgICBvaysrOwogICAgIGlmIChvayArIGZhaWwgPT0gdG90YWwpIGZpbmlzaCgpOwogICAgfTsK
ICAgIHB1dFJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uIHB1dFJlcXVlc3Rfb25lcnJvcigpIHsK
ICAgICBmYWlsKys7CiAgICAgaWYgKG9rICsgZmFpbCA9PSB0b3RhbCkgZmluaXNoKCk7CiAgICB9
OwogICB9KSk7CiAgIHRyYW5zYWN0aW9uLm9uZXJyb3IgPSBvbmVycm9yOwogIH07CiAgb3BlblJl
cXVlc3Qub25lcnJvciA9IG9uZXJyb3I7CiB9KSwKIGxvYWRGaWxlc0Zyb21EQjogKGZ1bmN0aW9u
KHBhdGhzLCBvbmxvYWQsIG9uZXJyb3IpIHsKICBvbmxvYWQgPSBvbmxvYWQgfHwgKGZ1bmN0aW9u
KCkge30pOwogIG9uZXJyb3IgPSBvbmVycm9yIHx8IChmdW5jdGlvbigpIHt9KTsKICB2YXIgaW5k
ZXhlZERCID0gRlMuaW5kZXhlZERCKCk7CiAgdHJ5IHsKICAgdmFyIG9wZW5SZXF1ZXN0ID0gaW5k
ZXhlZERCLm9wZW4oRlMuREJfTkFNRSgpLCBGUy5EQl9WRVJTSU9OKTsKICB9IGNhdGNoIChlKSB7
CiAgIHJldHVybiBvbmVycm9yKGUpOwogIH0KICBvcGVuUmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQg
PSBvbmVycm9yOwogIG9wZW5SZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIG9wZW5SZXF1ZXN0
X29uc3VjY2VzcygpIHsKICAgdmFyIGRiID0gb3BlblJlcXVlc3QucmVzdWx0OwogICB0cnkgewog
ICAgdmFyIHRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWyBGUy5EQl9TVE9SRV9OQU1FIF0s
ICJyZWFkb25seSIpOwogICB9IGNhdGNoIChlKSB7CiAgICBvbmVycm9yKGUpOwogICAgcmV0dXJu
OwogICB9CiAgIHZhciBmaWxlcyA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKEZTLkRCX1NUT1JF
X05BTUUpOwogICB2YXIgb2sgPSAwLCBmYWlsID0gMCwgdG90YWwgPSBwYXRocy5sZW5ndGg7CiAg
IGZ1bmN0aW9uIGZpbmlzaCgpIHsKICAgIGlmIChmYWlsID09IDApIG9ubG9hZCgpOyBlbHNlIG9u
ZXJyb3IoKTsKICAgfQogICBwYXRocy5mb3JFYWNoKChmdW5jdGlvbihwYXRoKSB7CiAgICB2YXIg
Z2V0UmVxdWVzdCA9IGZpbGVzLmdldChwYXRoKTsKICAgIGdldFJlcXVlc3Qub25zdWNjZXNzID0g
ZnVuY3Rpb24gZ2V0UmVxdWVzdF9vbnN1Y2Nlc3MoKSB7CiAgICAgaWYgKEZTLmFuYWx5emVQYXRo
KHBhdGgpLmV4aXN0cykgewogICAgICBGUy51bmxpbmsocGF0aCk7CiAgICAgfQogICAgIEZTLmNy
ZWF0ZURhdGFGaWxlKFBBVEguZGlybmFtZShwYXRoKSwgUEFUSC5iYXNlbmFtZShwYXRoKSwgZ2V0
UmVxdWVzdC5yZXN1bHQsIHRydWUsIHRydWUsIHRydWUpOwogICAgIG9rKys7CiAgICAgaWYgKG9r
ICsgZmFpbCA9PSB0b3RhbCkgZmluaXNoKCk7CiAgICB9OwogICAgZ2V0UmVxdWVzdC5vbmVycm9y
ID0gZnVuY3Rpb24gZ2V0UmVxdWVzdF9vbmVycm9yKCkgewogICAgIGZhaWwrKzsKICAgICBpZiAo
b2sgKyBmYWlsID09IHRvdGFsKSBmaW5pc2goKTsKICAgIH07CiAgIH0pKTsKICAgdHJhbnNhY3Rp
b24ub25lcnJvciA9IG9uZXJyb3I7CiAgfTsKICBvcGVuUmVxdWVzdC5vbmVycm9yID0gb25lcnJv
cjsKIH0pCn07CnZhciBTWVNDQUxMUyA9IHsKIERFRkFVTFRfUE9MTE1BU0s6IDUsCiBtYXBwaW5n
czoge30sCiB1bWFzazogNTExLAogY2FsY3VsYXRlQXQ6IChmdW5jdGlvbihkaXJmZCwgcGF0aCkg
ewogIGlmIChwYXRoWzBdICE9PSAiLyIpIHsKICAgdmFyIGRpcjsKICAgaWYgKGRpcmZkID09PSAt
MTAwKSB7CiAgICBkaXIgPSBGUy5jd2QoKTsKICAgfSBlbHNlIHsKICAgIHZhciBkaXJzdHJlYW0g
PSBGUy5nZXRTdHJlYW0oZGlyZmQpOwogICAgaWYgKCFkaXJzdHJlYW0pIHRocm93IG5ldyBGUy5F
cnJub0Vycm9yKEVSUk5PX0NPREVTLkVCQURGKTsKICAgIGRpciA9IGRpcnN0cmVhbS5wYXRoOwog
ICB9CiAgIHBhdGggPSBQQVRILmpvaW4yKGRpciwgcGF0aCk7CiAgfQogIHJldHVybiBwYXRoOwog
fSksCiBkb1N0YXQ6IChmdW5jdGlvbihmdW5jLCBwYXRoLCBidWYpIHsKICB0cnkgewogICB2YXIg
c3RhdCA9IGZ1bmMocGF0aCk7CiAgfSBjYXRjaCAoZSkgewogICBpZiAoZSAmJiBlLm5vZGUgJiYg
UEFUSC5ub3JtYWxpemUocGF0aCkgIT09IFBBVEgubm9ybWFsaXplKEZTLmdldFBhdGgoZS5ub2Rl
KSkpIHsKICAgIHJldHVybiAtRVJSTk9fQ09ERVMuRU5PVERJUjsKICAgfQogICB0aHJvdyBlOwog
IH0KICBIRUFQMzJbYnVmID4+IDJdID0gc3RhdC5kZXY7CiAgSEVBUDMyW2J1ZiArIDQgPj4gMl0g
PSAwOwogIEhFQVAzMltidWYgKyA4ID4+IDJdID0gc3RhdC5pbm87CiAgSEVBUDMyW2J1ZiArIDEy
ID4+IDJdID0gc3RhdC5tb2RlOwogIEhFQVAzMltidWYgKyAxNiA+PiAyXSA9IHN0YXQubmxpbms7
CiAgSEVBUDMyW2J1ZiArIDIwID4+IDJdID0gc3RhdC51aWQ7CiAgSEVBUDMyW2J1ZiArIDI0ID4+
IDJdID0gc3RhdC5naWQ7CiAgSEVBUDMyW2J1ZiArIDI4ID4+IDJdID0gc3RhdC5yZGV2OwogIEhF
QVAzMltidWYgKyAzMiA+PiAyXSA9IDA7CiAgSEVBUDMyW2J1ZiArIDM2ID4+IDJdID0gc3RhdC5z
aXplOwogIEhFQVAzMltidWYgKyA0MCA+PiAyXSA9IDQwOTY7CiAgSEVBUDMyW2J1ZiArIDQ0ID4+
IDJdID0gc3RhdC5ibG9ja3M7CiAgSEVBUDMyW2J1ZiArIDQ4ID4+IDJdID0gc3RhdC5hdGltZS5n
ZXRUaW1lKCkgLyAxZTMgfCAwOwogIEhFQVAzMltidWYgKyA1MiA+PiAyXSA9IDA7CiAgSEVBUDMy
W2J1ZiArIDU2ID4+IDJdID0gc3RhdC5tdGltZS5nZXRUaW1lKCkgLyAxZTMgfCAwOwogIEhFQVAz
MltidWYgKyA2MCA+PiAyXSA9IDA7CiAgSEVBUDMyW2J1ZiArIDY0ID4+IDJdID0gc3RhdC5jdGlt
ZS5nZXRUaW1lKCkgLyAxZTMgfCAwOwogIEhFQVAzMltidWYgKyA2OCA+PiAyXSA9IDA7CiAgSEVB
UDMyW2J1ZiArIDcyID4+IDJdID0gc3RhdC5pbm87CiAgcmV0dXJuIDA7CiB9KSwKIGRvTXN5bmM6
IChmdW5jdGlvbihhZGRyLCBzdHJlYW0sIGxlbiwgZmxhZ3MpIHsKICB2YXIgYnVmZmVyID0gbmV3
IFVpbnQ4QXJyYXkoSEVBUFU4LmJ1ZmZlciwgYWRkciwgbGVuKTsKICBGUy5tc3luYyhzdHJlYW0s
IGJ1ZmZlciwgMCwgbGVuLCBmbGFncyk7CiB9KSwKIGRvTWtkaXI6IChmdW5jdGlvbihwYXRoLCBt
b2RlKSB7CiAgcGF0aCA9IFBBVEgubm9ybWFsaXplKHBhdGgpOwogIGlmIChwYXRoW3BhdGgubGVu
Z3RoIC0gMV0gPT09ICIvIikgcGF0aCA9IHBhdGguc3Vic3RyKDAsIHBhdGgubGVuZ3RoIC0gMSk7
CiAgRlMubWtkaXIocGF0aCwgbW9kZSwgMCk7CiAgcmV0dXJuIDA7CiB9KSwKIGRvTWtub2Q6IChm
dW5jdGlvbihwYXRoLCBtb2RlLCBkZXYpIHsKICBzd2l0Y2ggKG1vZGUgJiA2MTQ0MCkgewogIGNh
c2UgMzI3Njg6CiAgY2FzZSA4MTkyOgogIGNhc2UgMjQ1NzY6CiAgY2FzZSA0MDk2OgogIGNhc2Ug
NDkxNTI6CiAgIGJyZWFrOwogIGRlZmF1bHQ6CiAgIHJldHVybiAtRVJSTk9fQ09ERVMuRUlOVkFM
OwogIH0KICBGUy5ta25vZChwYXRoLCBtb2RlLCBkZXYpOwogIHJldHVybiAwOwogfSksCiBkb1Jl
YWRsaW5rOiAoZnVuY3Rpb24ocGF0aCwgYnVmLCBidWZzaXplKSB7CiAgaWYgKGJ1ZnNpemUgPD0g
MCkgcmV0dXJuIC1FUlJOT19DT0RFUy5FSU5WQUw7CiAgdmFyIHJldCA9IEZTLnJlYWRsaW5rKHBh
dGgpOwogIHJldCA9IHJldC5zbGljZSgwLCBNYXRoLm1heCgwLCBidWZzaXplKSk7CiAgd3JpdGVT
dHJpbmdUb01lbW9yeShyZXQsIGJ1ZiwgdHJ1ZSk7CiAgcmV0dXJuIHJldC5sZW5ndGg7CiB9KSwK
IGRvQWNjZXNzOiAoZnVuY3Rpb24ocGF0aCwgYW1vZGUpIHsKICBpZiAoYW1vZGUgJiB+Nykgewog
ICByZXR1cm4gLUVSUk5PX0NPREVTLkVJTlZBTDsKICB9CiAgdmFyIG5vZGU7CiAgdmFyIGxvb2t1
cCA9IEZTLmxvb2t1cFBhdGgocGF0aCwgewogICBmb2xsb3c6IHRydWUKICB9KTsKICBub2RlID0g
bG9va3VwLm5vZGU7CiAgdmFyIHBlcm1zID0gIiI7CiAgaWYgKGFtb2RlICYgNCkgcGVybXMgKz0g
InIiOwogIGlmIChhbW9kZSAmIDIpIHBlcm1zICs9ICJ3IjsKICBpZiAoYW1vZGUgJiAxKSBwZXJt
cyArPSAieCI7CiAgaWYgKHBlcm1zICYmIEZTLm5vZGVQZXJtaXNzaW9ucyhub2RlLCBwZXJtcykp
IHsKICAgcmV0dXJuIC1FUlJOT19DT0RFUy5FQUNDRVM7CiAgfQogIHJldHVybiAwOwogfSksCiBk
b0R1cDogKGZ1bmN0aW9uKHBhdGgsIGZsYWdzLCBzdWdnZXN0RkQpIHsKICB2YXIgc3VnZ2VzdCA9
IEZTLmdldFN0cmVhbShzdWdnZXN0RkQpOwogIGlmIChzdWdnZXN0KSBGUy5jbG9zZShzdWdnZXN0
KTsKICByZXR1cm4gRlMub3BlbihwYXRoLCBmbGFncywgMCwgc3VnZ2VzdEZELCBzdWdnZXN0RkQp
LmZkOwogfSksCiBkb1JlYWR2OiAoZnVuY3Rpb24oc3RyZWFtLCBpb3YsIGlvdmNudCwgb2Zmc2V0
KSB7CiAgdmFyIHJldCA9IDA7CiAgZm9yICh2YXIgaSA9IDA7IGkgPCBpb3ZjbnQ7IGkrKykgewog
ICB2YXIgcHRyID0gSEVBUDMyW2lvdiArIGkgKiA4ID4+IDJdOwogICB2YXIgbGVuID0gSEVBUDMy
W2lvdiArIChpICogOCArIDQpID4+IDJdOwogICB2YXIgY3VyciA9IEZTLnJlYWQoc3RyZWFtLCBI
RUFQOCwgcHRyLCBsZW4sIG9mZnNldCk7CiAgIGlmIChjdXJyIDwgMCkgcmV0dXJuIC0xOwogICBy
ZXQgKz0gY3VycjsKICAgaWYgKGN1cnIgPCBsZW4pIGJyZWFrOwogIH0KICByZXR1cm4gcmV0Owog
fSksCiBkb1dyaXRldjogKGZ1bmN0aW9uKHN0cmVhbSwgaW92LCBpb3ZjbnQsIG9mZnNldCkgewog
IHZhciByZXQgPSAwOwogIGZvciAodmFyIGkgPSAwOyBpIDwgaW92Y250OyBpKyspIHsKICAgdmFy
IHB0ciA9IEhFQVAzMltpb3YgKyBpICogOCA+PiAyXTsKICAgdmFyIGxlbiA9IEhFQVAzMltpb3Yg
KyAoaSAqIDggKyA0KSA+PiAyXTsKICAgdmFyIGN1cnIgPSBGUy53cml0ZShzdHJlYW0sIEhFQVA4
LCBwdHIsIGxlbiwgb2Zmc2V0KTsKICAgaWYgKGN1cnIgPCAwKSByZXR1cm4gLTE7CiAgIHJldCAr
PSBjdXJyOwogIH0KICByZXR1cm4gcmV0OwogfSksCiB2YXJhcmdzOiAwLAogZ2V0OiAoZnVuY3Rp
b24odmFyYXJncykgewogIFNZU0NBTExTLnZhcmFyZ3MgKz0gNDsKICB2YXIgcmV0ID0gSEVBUDMy
W1NZU0NBTExTLnZhcmFyZ3MgLSA0ID4+IDJdOwogIHJldHVybiByZXQ7CiB9KSwKIGdldFN0cjog
KGZ1bmN0aW9uKCkgewogIHZhciByZXQgPSBQb2ludGVyX3N0cmluZ2lmeShTWVNDQUxMUy5nZXQo
KSk7CiAgcmV0dXJuIHJldDsKIH0pLAogZ2V0U3RyZWFtRnJvbUZEOiAoZnVuY3Rpb24oKSB7CiAg
dmFyIHN0cmVhbSA9IEZTLmdldFN0cmVhbShTWVNDQUxMUy5nZXQoKSk7CiAgaWYgKCFzdHJlYW0p
IHRocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVCQURGKTsKICByZXR1cm4gc3Ry
ZWFtOwogfSksCiBnZXRTb2NrZXRGcm9tRkQ6IChmdW5jdGlvbigpIHsKICB2YXIgc29ja2V0ID0g
U09DS0ZTLmdldFNvY2tldChTWVNDQUxMUy5nZXQoKSk7CiAgaWYgKCFzb2NrZXQpIHRocm93IG5l
dyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVCQURGKTsKICByZXR1cm4gc29ja2V0OwogfSks
CiBnZXRTb2NrZXRBZGRyZXNzOiAoZnVuY3Rpb24oYWxsb3dOdWxsKSB7CiAgdmFyIGFkZHJwID0g
U1lTQ0FMTFMuZ2V0KCksIGFkZHJsZW4gPSBTWVNDQUxMUy5nZXQoKTsKICBpZiAoYWxsb3dOdWxs
ICYmIGFkZHJwID09PSAwKSByZXR1cm4gbnVsbDsKICB2YXIgaW5mbyA9IF9fcmVhZF9zb2NrYWRk
cihhZGRycCwgYWRkcmxlbik7CiAgaWYgKGluZm8uZXJybm8pIHRocm93IG5ldyBGUy5FcnJub0Vy
cm9yKGluZm8uZXJybm8pOwogIGluZm8uYWRkciA9IEROUy5sb29rdXBfYWRkcihpbmZvLmFkZHIp
IHx8IGluZm8uYWRkcjsKICByZXR1cm4gaW5mbzsKIH0pLAogZ2V0NjQ6IChmdW5jdGlvbigpIHsK
ICB2YXIgbG93ID0gU1lTQ0FMTFMuZ2V0KCksIGhpZ2ggPSBTWVNDQUxMUy5nZXQoKTsKICBpZiAo
bG93ID49IDApIGFzc2VydChoaWdoID09PSAwKTsgZWxzZSBhc3NlcnQoaGlnaCA9PT0gLTEpOwog
IHJldHVybiBsb3c7CiB9KSwKIGdldFplcm86IChmdW5jdGlvbigpIHsKICBhc3NlcnQoU1lTQ0FM
TFMuZ2V0KCkgPT09IDApOwogfSkKfTsKZnVuY3Rpb24gX19fc3lzY2FsbDYod2hpY2gsIHZhcmFy
Z3MpIHsKIFNZU0NBTExTLnZhcmFyZ3MgPSB2YXJhcmdzOwogdHJ5IHsKICB2YXIgc3RyZWFtID0g
U1lTQ0FMTFMuZ2V0U3RyZWFtRnJvbUZEKCk7CiAgRlMuY2xvc2Uoc3RyZWFtKTsKICByZXR1cm4g
MDsKIH0gY2F0Y2ggKGUpIHsKICBpZiAodHlwZW9mIEZTID09PSAidW5kZWZpbmVkIiB8fCAhKGUg
aW5zdGFuY2VvZiBGUy5FcnJub0Vycm9yKSkgYWJvcnQoZSk7CiAgcmV0dXJuIC1lLmVycm5vOwog
fQp9CmZ1bmN0aW9uIF9zeXNjb25mKG5hbWUpIHsKIHN3aXRjaCAobmFtZSkgewogY2FzZSAzMDoK
ICByZXR1cm4gUEFHRV9TSVpFOwogY2FzZSA4NToKICByZXR1cm4gdG90YWxNZW1vcnkgLyBQQUdF
X1NJWkU7CiBjYXNlIDEzMjoKIGNhc2UgMTMzOgogY2FzZSAxMjoKIGNhc2UgMTM3OgogY2FzZSAx
Mzg6CiBjYXNlIDE1OgogY2FzZSAyMzU6CiBjYXNlIDE2OgogY2FzZSAxNzoKIGNhc2UgMTg6CiBj
YXNlIDE5OgogY2FzZSAyMDoKIGNhc2UgMTQ5OgogY2FzZSAxMzoKIGNhc2UgMTA6CiBjYXNlIDIz
NjoKIGNhc2UgMTUzOgogY2FzZSA5OgogY2FzZSAyMToKIGNhc2UgMjI6CiBjYXNlIDE1OToKIGNh
c2UgMTU0OgogY2FzZSAxNDoKIGNhc2UgNzc6CiBjYXNlIDc4OgogY2FzZSAxMzk6CiBjYXNlIDgw
OgogY2FzZSA4MToKIGNhc2UgODI6CiBjYXNlIDY4OgogY2FzZSA2NzoKIGNhc2UgMTY0OgogY2Fz
ZSAxMToKIGNhc2UgMjk6CiBjYXNlIDQ3OgogY2FzZSA0ODoKIGNhc2UgOTU6CiBjYXNlIDUyOgog
Y2FzZSA1MToKIGNhc2UgNDY6CiAgcmV0dXJuIDIwMDgwOTsKIGNhc2UgNzk6CiAgcmV0dXJuIDA7
CiBjYXNlIDI3OgogY2FzZSAyNDY6CiBjYXNlIDEyNzoKIGNhc2UgMTI4OgogY2FzZSAyMzoKIGNh
c2UgMjQ6CiBjYXNlIDE2MDoKIGNhc2UgMTYxOgogY2FzZSAxODE6CiBjYXNlIDE4MjoKIGNhc2Ug
MjQyOgogY2FzZSAxODM6CiBjYXNlIDE4NDoKIGNhc2UgMjQzOgogY2FzZSAyNDQ6CiBjYXNlIDI0
NToKIGNhc2UgMTY1OgogY2FzZSAxNzg6CiBjYXNlIDE3OToKIGNhc2UgNDk6CiBjYXNlIDUwOgog
Y2FzZSAxNjg6CiBjYXNlIDE2OToKIGNhc2UgMTc1OgogY2FzZSAxNzA6CiBjYXNlIDE3MToKIGNh
c2UgMTcyOgogY2FzZSA5NzoKIGNhc2UgNzY6CiBjYXNlIDMyOgogY2FzZSAxNzM6CiBjYXNlIDM1
OgogIHJldHVybiAtMTsKIGNhc2UgMTc2OgogY2FzZSAxNzc6CiBjYXNlIDc6CiBjYXNlIDE1NToK
IGNhc2UgODoKIGNhc2UgMTU3OgogY2FzZSAxMjU6CiBjYXNlIDEyNjoKIGNhc2UgOTI6CiBjYXNl
IDkzOgogY2FzZSAxMjk6CiBjYXNlIDEzMDoKIGNhc2UgMTMxOgogY2FzZSA5NDoKIGNhc2UgOTE6
CiAgcmV0dXJuIDE7CiBjYXNlIDc0OgogY2FzZSA2MDoKIGNhc2UgNjk6CiBjYXNlIDcwOgogY2Fz
ZSA0OgogIHJldHVybiAxMDI0OwogY2FzZSAzMToKIGNhc2UgNDI6CiBjYXNlIDcyOgogIHJldHVy
biAzMjsKIGNhc2UgODc6CiBjYXNlIDI2OgogY2FzZSAzMzoKICByZXR1cm4gMjE0NzQ4MzY0NzsK
IGNhc2UgMzQ6CiBjYXNlIDE6CiAgcmV0dXJuIDQ3ODM5OwogY2FzZSAzODoKIGNhc2UgMzY6CiAg
cmV0dXJuIDk5OwogY2FzZSA0MzoKIGNhc2UgMzc6CiAgcmV0dXJuIDIwNDg7CiBjYXNlIDA6CiAg
cmV0dXJuIDIwOTcxNTI7CiBjYXNlIDM6CiAgcmV0dXJuIDY1NTM2OwogY2FzZSAyODoKICByZXR1
cm4gMzI3Njg7CiBjYXNlIDQ0OgogIHJldHVybiAzMjc2NzsKIGNhc2UgNzU6CiAgcmV0dXJuIDE2
Mzg0OwogY2FzZSAzOToKICByZXR1cm4gMWUzOwogY2FzZSA4OToKICByZXR1cm4gNzAwOwogY2Fz
ZSA3MToKICByZXR1cm4gMjU2OwogY2FzZSA0MDoKICByZXR1cm4gMjU1OwogY2FzZSAyOgogIHJl
dHVybiAxMDA7CiBjYXNlIDE4MDoKICByZXR1cm4gNjQ7CiBjYXNlIDI1OgogIHJldHVybiAyMDsK
IGNhc2UgNToKICByZXR1cm4gMTY7CiBjYXNlIDY6CiAgcmV0dXJuIDY7CiBjYXNlIDczOgogIHJl
dHVybiA0OwogY2FzZSA4NDoKICB7CiAgIGlmICh0eXBlb2YgbmF2aWdhdG9yID09PSAib2JqZWN0
IikgcmV0dXJuIG5hdmlnYXRvclsiaGFyZHdhcmVDb25jdXJyZW5jeSJdIHx8IDE7CiAgIHJldHVy
biAxOwogIH0KIH0KIF9fX3NldEVyck5vKEVSUk5PX0NPREVTLkVJTlZBTCk7CiByZXR1cm4gLTE7
Cn0KZnVuY3Rpb24gX3NicmsoYnl0ZXMpIHsKIHZhciBzZWxmID0gX3Nicms7CiBpZiAoIXNlbGYu
Y2FsbGVkKSB7CiAgRFlOQU1JQ1RPUCA9IGFsaWduTWVtb3J5UGFnZShEWU5BTUlDVE9QKTsKICBz
ZWxmLmNhbGxlZCA9IHRydWU7CiAgYXNzZXJ0KFJ1bnRpbWUuZHluYW1pY0FsbG9jKTsKICBzZWxm
LmFsbG9jID0gUnVudGltZS5keW5hbWljQWxsb2M7CiAgUnVudGltZS5keW5hbWljQWxsb2MgPSAo
ZnVuY3Rpb24oKSB7CiAgIGFib3J0KCJjYW5ub3QgZHluYW1pY2FsbHkgYWxsb2NhdGUsIHNicmsg
bm93IGhhcyBjb250cm9sIik7CiAgfSk7CiB9CiB2YXIgcmV0ID0gRFlOQU1JQ1RPUDsKIGlmIChi
eXRlcyAhPSAwKSB7CiAgdmFyIHN1Y2Nlc3MgPSBzZWxmLmFsbG9jKGJ5dGVzKTsKICBpZiAoIXN1
Y2Nlc3MpIHJldHVybiAtMSA+Pj4gMDsKIH0KIHJldHVybiByZXQ7Cn0KdmFyIF9CSXRvRCA9IHRy
dWU7CmZ1bmN0aW9uIF9lbXNjcmlwdGVuX21lbWNweV9iaWcoZGVzdCwgc3JjLCBudW0pIHsKIEhF
QVBVOC5zZXQoSEVBUFU4LnN1YmFycmF5KHNyYywgc3JjICsgbnVtKSwgZGVzdCk7CiByZXR1cm4g
ZGVzdDsKfQpNb2R1bGVbIl9tZW1jcHkiXSA9IF9tZW1jcHk7CmZ1bmN0aW9uIF9lbXNjcmlwdGVu
X3NldF9tYWluX2xvb3BfdGltaW5nKG1vZGUsIHZhbHVlKSB7CiBCcm93c2VyLm1haW5Mb29wLnRp
bWluZ01vZGUgPSBtb2RlOwogQnJvd3Nlci5tYWluTG9vcC50aW1pbmdWYWx1ZSA9IHZhbHVlOwog
aWYgKCFCcm93c2VyLm1haW5Mb29wLmZ1bmMpIHsKICByZXR1cm4gMTsKIH0KIGlmIChtb2RlID09
IDApIHsKICBCcm93c2VyLm1haW5Mb29wLnNjaGVkdWxlciA9IGZ1bmN0aW9uIEJyb3dzZXJfbWFp
bkxvb3Bfc2NoZWR1bGVyKCkgewogICBzZXRUaW1lb3V0KEJyb3dzZXIubWFpbkxvb3AucnVubmVy
LCB2YWx1ZSk7CiAgfTsKICBCcm93c2VyLm1haW5Mb29wLm1ldGhvZCA9ICJ0aW1lb3V0IjsKIH0g
ZWxzZSBpZiAobW9kZSA9PSAxKSB7CiAgQnJvd3Nlci5tYWluTG9vcC5zY2hlZHVsZXIgPSBmdW5j
dGlvbiBCcm93c2VyX21haW5Mb29wX3NjaGVkdWxlcigpIHsKICAgQnJvd3Nlci5yZXF1ZXN0QW5p
bWF0aW9uRnJhbWUoQnJvd3Nlci5tYWluTG9vcC5ydW5uZXIpOwogIH07CiAgQnJvd3Nlci5tYWlu
TG9vcC5tZXRob2QgPSAickFGIjsKIH0KIHJldHVybiAwOwp9CmZ1bmN0aW9uIF9lbXNjcmlwdGVu
X3NldF9tYWluX2xvb3AoZnVuYywgZnBzLCBzaW11bGF0ZUluZmluaXRlTG9vcCwgYXJnLCBub1Nl
dFRpbWluZykgewogTW9kdWxlWyJub0V4aXRSdW50aW1lIl0gPSB0cnVlOwogYXNzZXJ0KCFCcm93
c2VyLm1haW5Mb29wLmZ1bmMsICJlbXNjcmlwdGVuX3NldF9tYWluX2xvb3A6IHRoZXJlIGNhbiBv
bmx5IGJlIG9uZSBtYWluIGxvb3AgZnVuY3Rpb24gYXQgb25jZTogY2FsbCBlbXNjcmlwdGVuX2Nh
bmNlbF9tYWluX2xvb3AgdG8gY2FuY2VsIHRoZSBwcmV2aW91cyBvbmUgYmVmb3JlIHNldHRpbmcg
YSBuZXcgb25lIHdpdGggZGlmZmVyZW50IHBhcmFtZXRlcnMuIik7CiBCcm93c2VyLm1haW5Mb29w
LmZ1bmMgPSBmdW5jOwogQnJvd3Nlci5tYWluTG9vcC5hcmcgPSBhcmc7CiB2YXIgdGhpc01haW5M
b29wSWQgPSBCcm93c2VyLm1haW5Mb29wLmN1cnJlbnRseVJ1bm5pbmdNYWlubG9vcDsKIEJyb3dz
ZXIubWFpbkxvb3AucnVubmVyID0gZnVuY3Rpb24gQnJvd3Nlcl9tYWluTG9vcF9ydW5uZXIoKSB7
CiAgaWYgKEFCT1JUKSByZXR1cm47CiAgaWYgKEJyb3dzZXIubWFpbkxvb3AucXVldWUubGVuZ3Ro
ID4gMCkgewogICB2YXIgc3RhcnQgPSBEYXRlLm5vdygpOwogICB2YXIgYmxvY2tlciA9IEJyb3dz
ZXIubWFpbkxvb3AucXVldWUuc2hpZnQoKTsKICAgYmxvY2tlci5mdW5jKGJsb2NrZXIuYXJnKTsK
ICAgaWYgKEJyb3dzZXIubWFpbkxvb3AucmVtYWluaW5nQmxvY2tlcnMpIHsKICAgIHZhciByZW1h
aW5pbmcgPSBCcm93c2VyLm1haW5Mb29wLnJlbWFpbmluZ0Jsb2NrZXJzOwogICAgdmFyIG5leHQg
PSByZW1haW5pbmcgJSAxID09IDAgPyByZW1haW5pbmcgLSAxIDogTWF0aC5mbG9vcihyZW1haW5p
bmcpOwogICAgaWYgKGJsb2NrZXIuY291bnRlZCkgewogICAgIEJyb3dzZXIubWFpbkxvb3AucmVt
YWluaW5nQmxvY2tlcnMgPSBuZXh0OwogICAgfSBlbHNlIHsKICAgICBuZXh0ID0gbmV4dCArIC41
OwogICAgIEJyb3dzZXIubWFpbkxvb3AucmVtYWluaW5nQmxvY2tlcnMgPSAoOCAqIHJlbWFpbmlu
ZyArIG5leHQpIC8gOTsKICAgIH0KICAgfQogICBjb25zb2xlLmxvZygnbWFpbiBsb29wIGJsb2Nr
ZXIgIicgKyBibG9ja2VyLm5hbWUgKyAnIiB0b29rICcgKyAoRGF0ZS5ub3coKSAtIHN0YXJ0KSAr
ICIgbXMiKTsKICAgQnJvd3Nlci5tYWluTG9vcC51cGRhdGVTdGF0dXMoKTsKICAgc2V0VGltZW91
dChCcm93c2VyLm1haW5Mb29wLnJ1bm5lciwgMCk7CiAgIHJldHVybjsKICB9CiAgaWYgKHRoaXNN
YWluTG9vcElkIDwgQnJvd3Nlci5tYWluTG9vcC5jdXJyZW50bHlSdW5uaW5nTWFpbmxvb3ApIHJl
dHVybjsKICBCcm93c2VyLm1haW5Mb29wLmN1cnJlbnRGcmFtZU51bWJlciA9IEJyb3dzZXIubWFp
bkxvb3AuY3VycmVudEZyYW1lTnVtYmVyICsgMSB8IDA7CiAgaWYgKEJyb3dzZXIubWFpbkxvb3Au
dGltaW5nTW9kZSA9PSAxICYmIEJyb3dzZXIubWFpbkxvb3AudGltaW5nVmFsdWUgPiAxICYmIEJy
b3dzZXIubWFpbkxvb3AuY3VycmVudEZyYW1lTnVtYmVyICUgQnJvd3Nlci5tYWluTG9vcC50aW1p
bmdWYWx1ZSAhPSAwKSB7CiAgIEJyb3dzZXIubWFpbkxvb3Auc2NoZWR1bGVyKCk7CiAgIHJldHVy
bjsKICB9CiAgaWYgKEJyb3dzZXIubWFpbkxvb3AubWV0aG9kID09PSAidGltZW91dCIgJiYgTW9k
dWxlLmN0eCkgewogICBNb2R1bGUucHJpbnRFcnIoIkxvb2tzIGxpa2UgeW91IGFyZSByZW5kZXJp
bmcgd2l0aG91dCB1c2luZyByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgZm9yIHRoZSBtYWluIGxvb3Au
IFlvdSBzaG91bGQgdXNlIDAgZm9yIHRoZSBmcmFtZSByYXRlIGluIGVtc2NyaXB0ZW5fc2V0X21h
aW5fbG9vcCBpbiBvcmRlciB0byB1c2UgcmVxdWVzdEFuaW1hdGlvbkZyYW1lLCBhcyB0aGF0IGNh
biBncmVhdGx5IGltcHJvdmUgeW91ciBmcmFtZSByYXRlcyEiKTsKICAgQnJvd3Nlci5tYWluTG9v
cC5tZXRob2QgPSAiIjsKICB9CiAgQnJvd3Nlci5tYWluTG9vcC5ydW5JdGVyKChmdW5jdGlvbigp
IHsKICAgaWYgKHR5cGVvZiBhcmcgIT09ICJ1bmRlZmluZWQiKSB7CiAgICBSdW50aW1lLmR5bkNh
bGwoInZpIiwgZnVuYywgWyBhcmcgXSk7CiAgIH0gZWxzZSB7CiAgICBSdW50aW1lLmR5bkNhbGwo
InYiLCBmdW5jKTsKICAgfQogIH0pKTsKICBpZiAodGhpc01haW5Mb29wSWQgPCBCcm93c2VyLm1h
aW5Mb29wLmN1cnJlbnRseVJ1bm5pbmdNYWlubG9vcCkgcmV0dXJuOwogIGlmICh0eXBlb2YgU0RM
ID09PSAib2JqZWN0IiAmJiBTREwuYXVkaW8gJiYgU0RMLmF1ZGlvLnF1ZXVlTmV3QXVkaW9EYXRh
KSBTREwuYXVkaW8ucXVldWVOZXdBdWRpb0RhdGEoKTsKICBCcm93c2VyLm1haW5Mb29wLnNjaGVk
dWxlcigpOwogfTsKIGlmICghbm9TZXRUaW1pbmcpIHsKICBpZiAoZnBzICYmIGZwcyA+IDApIF9l
bXNjcmlwdGVuX3NldF9tYWluX2xvb3BfdGltaW5nKDAsIDFlMyAvIGZwcyk7IGVsc2UgX2Vtc2Ny
aXB0ZW5fc2V0X21haW5fbG9vcF90aW1pbmcoMSwgMSk7CiAgQnJvd3Nlci5tYWluTG9vcC5zY2hl
ZHVsZXIoKTsKIH0KIGlmIChzaW11bGF0ZUluZmluaXRlTG9vcCkgewogIHRocm93ICJTaW11bGF0
ZUluZmluaXRlTG9vcCI7CiB9Cn0KdmFyIEJyb3dzZXIgPSB7CiBtYWluTG9vcDogewogIHNjaGVk
dWxlcjogbnVsbCwKICBtZXRob2Q6ICIiLAogIGN1cnJlbnRseVJ1bm5pbmdNYWlubG9vcDogMCwK
ICBmdW5jOiBudWxsLAogIGFyZzogMCwKICB0aW1pbmdNb2RlOiAwLAogIHRpbWluZ1ZhbHVlOiAw
LAogIGN1cnJlbnRGcmFtZU51bWJlcjogMCwKICBxdWV1ZTogW10sCiAgcGF1c2U6IChmdW5jdGlv
bigpIHsKICAgQnJvd3Nlci5tYWluTG9vcC5zY2hlZHVsZXIgPSBudWxsOwogICBCcm93c2VyLm1h
aW5Mb29wLmN1cnJlbnRseVJ1bm5pbmdNYWlubG9vcCsrOwogIH0pLAogIHJlc3VtZTogKGZ1bmN0
aW9uKCkgewogICBCcm93c2VyLm1haW5Mb29wLmN1cnJlbnRseVJ1bm5pbmdNYWlubG9vcCsrOwog
ICB2YXIgdGltaW5nTW9kZSA9IEJyb3dzZXIubWFpbkxvb3AudGltaW5nTW9kZTsKICAgdmFyIHRp
bWluZ1ZhbHVlID0gQnJvd3Nlci5tYWluTG9vcC50aW1pbmdWYWx1ZTsKICAgdmFyIGZ1bmMgPSBC
cm93c2VyLm1haW5Mb29wLmZ1bmM7CiAgIEJyb3dzZXIubWFpbkxvb3AuZnVuYyA9IG51bGw7CiAg
IF9lbXNjcmlwdGVuX3NldF9tYWluX2xvb3AoZnVuYywgMCwgZmFsc2UsIEJyb3dzZXIubWFpbkxv
b3AuYXJnLCB0cnVlKTsKICAgX2Vtc2NyaXB0ZW5fc2V0X21haW5fbG9vcF90aW1pbmcodGltaW5n
TW9kZSwgdGltaW5nVmFsdWUpOwogICBCcm93c2VyLm1haW5Mb29wLnNjaGVkdWxlcigpOwogIH0p
LAogIHVwZGF0ZVN0YXR1czogKGZ1bmN0aW9uKCkgewogICBpZiAoTW9kdWxlWyJzZXRTdGF0dXMi
XSkgewogICAgdmFyIG1lc3NhZ2UgPSBNb2R1bGVbInN0YXR1c01lc3NhZ2UiXSB8fCAiUGxlYXNl
IHdhaXQuLi4iOwogICAgdmFyIHJlbWFpbmluZyA9IEJyb3dzZXIubWFpbkxvb3AucmVtYWluaW5n
QmxvY2tlcnM7CiAgICB2YXIgZXhwZWN0ZWQgPSBCcm93c2VyLm1haW5Mb29wLmV4cGVjdGVkQmxv
Y2tlcnM7CiAgICBpZiAocmVtYWluaW5nKSB7CiAgICAgaWYgKHJlbWFpbmluZyA8IGV4cGVjdGVk
KSB7CiAgICAgIE1vZHVsZVsic2V0U3RhdHVzIl0obWVzc2FnZSArICIgKCIgKyAoZXhwZWN0ZWQg
LSByZW1haW5pbmcpICsgIi8iICsgZXhwZWN0ZWQgKyAiKSIpOwogICAgIH0gZWxzZSB7CiAgICAg
IE1vZHVsZVsic2V0U3RhdHVzIl0obWVzc2FnZSk7CiAgICAgfQogICAgfSBlbHNlIHsKICAgICBN
b2R1bGVbInNldFN0YXR1cyJdKCIiKTsKICAgIH0KICAgfQogIH0pLAogIHJ1bkl0ZXI6IChmdW5j
dGlvbihmdW5jKSB7CiAgIGlmIChBQk9SVCkgcmV0dXJuOwogICBpZiAoTW9kdWxlWyJwcmVNYWlu
TG9vcCJdKSB7CiAgICB2YXIgcHJlUmV0ID0gTW9kdWxlWyJwcmVNYWluTG9vcCJdKCk7CiAgICBp
ZiAocHJlUmV0ID09PSBmYWxzZSkgewogICAgIHJldHVybjsKICAgIH0KICAgfQogICB0cnkgewog
ICAgZnVuYygpOwogICB9IGNhdGNoIChlKSB7CiAgICBpZiAoZSBpbnN0YW5jZW9mIEV4aXRTdGF0
dXMpIHsKICAgICByZXR1cm47CiAgICB9IGVsc2UgewogICAgIGlmIChlICYmIHR5cGVvZiBlID09
PSAib2JqZWN0IiAmJiBlLnN0YWNrKSBNb2R1bGUucHJpbnRFcnIoImV4Y2VwdGlvbiB0aHJvd246
ICIgKyBbIGUsIGUuc3RhY2sgXSk7CiAgICAgdGhyb3cgZTsKICAgIH0KICAgfQogICBpZiAoTW9k
dWxlWyJwb3N0TWFpbkxvb3AiXSkgTW9kdWxlWyJwb3N0TWFpbkxvb3AiXSgpOwogIH0pCiB9LAog
aXNGdWxsU2NyZWVuOiBmYWxzZSwKIHBvaW50ZXJMb2NrOiBmYWxzZSwKIG1vZHVsZUNvbnRleHRD
cmVhdGVkQ2FsbGJhY2tzOiBbXSwKIHdvcmtlcnM6IFtdLAogaW5pdDogKGZ1bmN0aW9uKCkgewog
IGlmICghTW9kdWxlWyJwcmVsb2FkUGx1Z2lucyJdKSBNb2R1bGVbInByZWxvYWRQbHVnaW5zIl0g
PSBbXTsKICBpZiAoQnJvd3Nlci5pbml0dGVkKSByZXR1cm47CiAgQnJvd3Nlci5pbml0dGVkID0g
dHJ1ZTsKICB0cnkgewogICBuZXcgQmxvYjsKICAgQnJvd3Nlci5oYXNCbG9iQ29uc3RydWN0b3Ig
PSB0cnVlOwogIH0gY2F0Y2ggKGUpIHsKICAgQnJvd3Nlci5oYXNCbG9iQ29uc3RydWN0b3IgPSBm
YWxzZTsKICAgY29uc29sZS5sb2coIndhcm5pbmc6IG5vIGJsb2IgY29uc3RydWN0b3IsIGNhbm5v
dCBjcmVhdGUgYmxvYnMgd2l0aCBtaW1ldHlwZXMiKTsKICB9CiAgQnJvd3Nlci5CbG9iQnVpbGRl
ciA9IHR5cGVvZiBNb3pCbG9iQnVpbGRlciAhPSAidW5kZWZpbmVkIiA/IE1vekJsb2JCdWlsZGVy
IDogdHlwZW9mIFdlYktpdEJsb2JCdWlsZGVyICE9ICJ1bmRlZmluZWQiID8gV2ViS2l0QmxvYkJ1
aWxkZXIgOiAhQnJvd3Nlci5oYXNCbG9iQ29uc3RydWN0b3IgPyBjb25zb2xlLmxvZygid2Fybmlu
Zzogbm8gQmxvYkJ1aWxkZXIiKSA6IG51bGw7CiAgQnJvd3Nlci5VUkxPYmplY3QgPSB0eXBlb2Yg
d2luZG93ICE9ICJ1bmRlZmluZWQiID8gd2luZG93LlVSTCA/IHdpbmRvdy5VUkwgOiB3aW5kb3cu
d2Via2l0VVJMIDogdW5kZWZpbmVkOwogIGlmICghTW9kdWxlLm5vSW1hZ2VEZWNvZGluZyAmJiB0
eXBlb2YgQnJvd3Nlci5VUkxPYmplY3QgPT09ICJ1bmRlZmluZWQiKSB7CiAgIGNvbnNvbGUubG9n
KCJ3YXJuaW5nOiBCcm93c2VyIGRvZXMgbm90IHN1cHBvcnQgY3JlYXRpbmcgb2JqZWN0IFVSTHMu
IEJ1aWx0LWluIGJyb3dzZXIgaW1hZ2UgZGVjb2Rpbmcgd2lsbCBub3QgYmUgYXZhaWxhYmxlLiIp
OwogICBNb2R1bGUubm9JbWFnZURlY29kaW5nID0gdHJ1ZTsKICB9CiAgdmFyIGltYWdlUGx1Z2lu
ID0ge307CiAgaW1hZ2VQbHVnaW5bImNhbkhhbmRsZSJdID0gZnVuY3Rpb24gaW1hZ2VQbHVnaW5f
Y2FuSGFuZGxlKG5hbWUpIHsKICAgcmV0dXJuICFNb2R1bGUubm9JbWFnZURlY29kaW5nICYmIC9c
LihqcGd8anBlZ3xwbmd8Ym1wKSQvaS50ZXN0KG5hbWUpOwogIH07CiAgaW1hZ2VQbHVnaW5bImhh
bmRsZSJdID0gZnVuY3Rpb24gaW1hZ2VQbHVnaW5faGFuZGxlKGJ5dGVBcnJheSwgbmFtZSwgb25s
b2FkLCBvbmVycm9yKSB7CiAgIHZhciBiID0gbnVsbDsKICAgaWYgKEJyb3dzZXIuaGFzQmxvYkNv
bnN0cnVjdG9yKSB7CiAgICB0cnkgewogICAgIGIgPSBuZXcgQmxvYihbIGJ5dGVBcnJheSBdLCB7
CiAgICAgIHR5cGU6IEJyb3dzZXIuZ2V0TWltZXR5cGUobmFtZSkKICAgICB9KTsKICAgICBpZiAo
Yi5zaXplICE9PSBieXRlQXJyYXkubGVuZ3RoKSB7CiAgICAgIGIgPSBuZXcgQmxvYihbIChuZXcg
VWludDhBcnJheShieXRlQXJyYXkpKS5idWZmZXIgXSwgewogICAgICAgdHlwZTogQnJvd3Nlci5n
ZXRNaW1ldHlwZShuYW1lKQogICAgICB9KTsKICAgICB9CiAgICB9IGNhdGNoIChlKSB7CiAgICAg
UnVudGltZS53YXJuT25jZSgiQmxvYiBjb25zdHJ1Y3RvciBwcmVzZW50IGJ1dCBmYWlsczogIiAr
IGUgKyAiOyBmYWxsaW5nIGJhY2sgdG8gYmxvYiBidWlsZGVyIik7CiAgICB9CiAgIH0KICAgaWYg
KCFiKSB7CiAgICB2YXIgYmIgPSBuZXcgQnJvd3Nlci5CbG9iQnVpbGRlcjsKICAgIGJiLmFwcGVu
ZCgobmV3IFVpbnQ4QXJyYXkoYnl0ZUFycmF5KSkuYnVmZmVyKTsKICAgIGIgPSBiYi5nZXRCbG9i
KCk7CiAgIH0KICAgdmFyIHVybCA9IEJyb3dzZXIuVVJMT2JqZWN0LmNyZWF0ZU9iamVjdFVSTChi
KTsKICAgdmFyIGltZyA9IG5ldyBJbWFnZTsKICAgaW1nLm9ubG9hZCA9IGZ1bmN0aW9uIGltZ19v
bmxvYWQoKSB7CiAgICBhc3NlcnQoaW1nLmNvbXBsZXRlLCAiSW1hZ2UgIiArIG5hbWUgKyAiIGNv
dWxkIG5vdCBiZSBkZWNvZGVkIik7CiAgICB2YXIgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiY2FudmFzIik7CiAgICBjYW52YXMud2lkdGggPSBpbWcud2lkdGg7CiAgICBjYW52YXMu
aGVpZ2h0ID0gaW1nLmhlaWdodDsKICAgIHZhciBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgiMmQi
KTsKICAgIGN0eC5kcmF3SW1hZ2UoaW1nLCAwLCAwKTsKICAgIE1vZHVsZVsicHJlbG9hZGVkSW1h
Z2VzIl1bbmFtZV0gPSBjYW52YXM7CiAgICBCcm93c2VyLlVSTE9iamVjdC5yZXZva2VPYmplY3RV
UkwodXJsKTsKICAgIGlmIChvbmxvYWQpIG9ubG9hZChieXRlQXJyYXkpOwogICB9OwogICBpbWcu
b25lcnJvciA9IGZ1bmN0aW9uIGltZ19vbmVycm9yKGV2ZW50KSB7CiAgICBjb25zb2xlLmxvZygi
SW1hZ2UgIiArIHVybCArICIgY291bGQgbm90IGJlIGRlY29kZWQiKTsKICAgIGlmIChvbmVycm9y
KSBvbmVycm9yKCk7CiAgIH07CiAgIGltZy5zcmMgPSB1cmw7CiAgfTsKICBNb2R1bGVbInByZWxv
YWRQbHVnaW5zIl0ucHVzaChpbWFnZVBsdWdpbik7CiAgdmFyIGF1ZGlvUGx1Z2luID0ge307CiAg
YXVkaW9QbHVnaW5bImNhbkhhbmRsZSJdID0gZnVuY3Rpb24gYXVkaW9QbHVnaW5fY2FuSGFuZGxl
KG5hbWUpIHsKICAgcmV0dXJuICFNb2R1bGUubm9BdWRpb0RlY29kaW5nICYmIG5hbWUuc3Vic3Ry
KC00KSBpbiB7CiAgICAiLm9nZyI6IDEsCiAgICAiLndhdiI6IDEsCiAgICAiLm1wMyI6IDEKICAg
fTsKICB9OwogIGF1ZGlvUGx1Z2luWyJoYW5kbGUiXSA9IGZ1bmN0aW9uIGF1ZGlvUGx1Z2luX2hh
bmRsZShieXRlQXJyYXksIG5hbWUsIG9ubG9hZCwgb25lcnJvcikgewogICB2YXIgZG9uZSA9IGZh
bHNlOwogICBmdW5jdGlvbiBmaW5pc2goYXVkaW8pIHsKICAgIGlmIChkb25lKSByZXR1cm47CiAg
ICBkb25lID0gdHJ1ZTsKICAgIE1vZHVsZVsicHJlbG9hZGVkQXVkaW9zIl1bbmFtZV0gPSBhdWRp
bzsKICAgIGlmIChvbmxvYWQpIG9ubG9hZChieXRlQXJyYXkpOwogICB9CiAgIGZ1bmN0aW9uIGZh
aWwoKSB7CiAgICBpZiAoZG9uZSkgcmV0dXJuOwogICAgZG9uZSA9IHRydWU7CiAgICBNb2R1bGVb
InByZWxvYWRlZEF1ZGlvcyJdW25hbWVdID0gbmV3IEF1ZGlvOwogICAgaWYgKG9uZXJyb3IpIG9u
ZXJyb3IoKTsKICAgfQogICBpZiAoQnJvd3Nlci5oYXNCbG9iQ29uc3RydWN0b3IpIHsKICAgIHRy
eSB7CiAgICAgdmFyIGIgPSBuZXcgQmxvYihbIGJ5dGVBcnJheSBdLCB7CiAgICAgIHR5cGU6IEJy
b3dzZXIuZ2V0TWltZXR5cGUobmFtZSkKICAgICB9KTsKICAgIH0gY2F0Y2ggKGUpIHsKICAgICBy
ZXR1cm4gZmFpbCgpOwogICAgfQogICAgdmFyIHVybCA9IEJyb3dzZXIuVVJMT2JqZWN0LmNyZWF0
ZU9iamVjdFVSTChiKTsKICAgIHZhciBhdWRpbyA9IG5ldyBBdWRpbzsKICAgIGF1ZGlvLmFkZEV2
ZW50TGlzdGVuZXIoImNhbnBsYXl0aHJvdWdoIiwgKGZ1bmN0aW9uKCkgewogICAgIGZpbmlzaChh
dWRpbyk7CiAgICB9KSwgZmFsc2UpOwogICAgYXVkaW8ub25lcnJvciA9IGZ1bmN0aW9uIGF1ZGlv
X29uZXJyb3IoZXZlbnQpIHsKICAgICBpZiAoZG9uZSkgcmV0dXJuOwogICAgIGNvbnNvbGUubG9n
KCJ3YXJuaW5nOiBicm93c2VyIGNvdWxkIG5vdCBmdWxseSBkZWNvZGUgYXVkaW8gIiArIG5hbWUg
KyAiLCB0cnlpbmcgc2xvd2VyIGJhc2U2NCBhcHByb2FjaCIpOwogICAgIGZ1bmN0aW9uIGVuY29k
ZTY0KGRhdGEpIHsKICAgICAgdmFyIEJBU0UgPSAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVph
YmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyI7CiAgICAgIHZhciBQQUQgPSAi
PSI7CiAgICAgIHZhciByZXQgPSAiIjsKICAgICAgdmFyIGxlZnRjaGFyID0gMDsKICAgICAgdmFy
IGxlZnRiaXRzID0gMDsKICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgaSsr
KSB7CiAgICAgICBsZWZ0Y2hhciA9IGxlZnRjaGFyIDw8IDggfCBkYXRhW2ldOwogICAgICAgbGVm
dGJpdHMgKz0gODsKICAgICAgIHdoaWxlIChsZWZ0Yml0cyA+PSA2KSB7CiAgICAgICAgdmFyIGN1
cnIgPSBsZWZ0Y2hhciA+PiBsZWZ0Yml0cyAtIDYgJiA2MzsKICAgICAgICBsZWZ0Yml0cyAtPSA2
OwogICAgICAgIHJldCArPSBCQVNFW2N1cnJdOwogICAgICAgfQogICAgICB9CiAgICAgIGlmIChs
ZWZ0Yml0cyA9PSAyKSB7CiAgICAgICByZXQgKz0gQkFTRVsobGVmdGNoYXIgJiAzKSA8PCA0XTsK
ICAgICAgIHJldCArPSBQQUQgKyBQQUQ7CiAgICAgIH0gZWxzZSBpZiAobGVmdGJpdHMgPT0gNCkg
ewogICAgICAgcmV0ICs9IEJBU0VbKGxlZnRjaGFyICYgMTUpIDw8IDJdOwogICAgICAgcmV0ICs9
IFBBRDsKICAgICAgfQogICAgICByZXR1cm4gcmV0OwogICAgIH0KICAgICBhdWRpby5zcmMgPSAi
ZGF0YTphdWRpby94LSIgKyBuYW1lLnN1YnN0cigtMykgKyAiO2Jhc2U2NCwiICsgZW5jb2RlNjQo
Ynl0ZUFycmF5KTsKICAgICBmaW5pc2goYXVkaW8pOwogICAgfTsKICAgIGF1ZGlvLnNyYyA9IHVy
bDsKICAgIEJyb3dzZXIuc2FmZVNldFRpbWVvdXQoKGZ1bmN0aW9uKCkgewogICAgIGZpbmlzaChh
dWRpbyk7CiAgICB9KSwgMWU0KTsKICAgfSBlbHNlIHsKICAgIHJldHVybiBmYWlsKCk7CiAgIH0K
ICB9OwogIE1vZHVsZVsicHJlbG9hZFBsdWdpbnMiXS5wdXNoKGF1ZGlvUGx1Z2luKTsKICB2YXIg
Y2FudmFzID0gTW9kdWxlWyJjYW52YXMiXTsKICBmdW5jdGlvbiBwb2ludGVyTG9ja0NoYW5nZSgp
IHsKICAgQnJvd3Nlci5wb2ludGVyTG9jayA9IGRvY3VtZW50WyJwb2ludGVyTG9ja0VsZW1lbnQi
XSA9PT0gY2FudmFzIHx8IGRvY3VtZW50WyJtb3pQb2ludGVyTG9ja0VsZW1lbnQiXSA9PT0gY2Fu
dmFzIHx8IGRvY3VtZW50WyJ3ZWJraXRQb2ludGVyTG9ja0VsZW1lbnQiXSA9PT0gY2FudmFzIHx8
IGRvY3VtZW50WyJtc1BvaW50ZXJMb2NrRWxlbWVudCJdID09PSBjYW52YXM7CiAgfQogIGlmIChj
YW52YXMpIHsKICAgY2FudmFzLnJlcXVlc3RQb2ludGVyTG9jayA9IGNhbnZhc1sicmVxdWVzdFBv
aW50ZXJMb2NrIl0gfHwgY2FudmFzWyJtb3pSZXF1ZXN0UG9pbnRlckxvY2siXSB8fCBjYW52YXNb
IndlYmtpdFJlcXVlc3RQb2ludGVyTG9jayJdIHx8IGNhbnZhc1sibXNSZXF1ZXN0UG9pbnRlckxv
Y2siXSB8fCAoZnVuY3Rpb24oKSB7fSk7CiAgIGNhbnZhcy5leGl0UG9pbnRlckxvY2sgPSBkb2N1
bWVudFsiZXhpdFBvaW50ZXJMb2NrIl0gfHwgZG9jdW1lbnRbIm1vekV4aXRQb2ludGVyTG9jayJd
IHx8IGRvY3VtZW50WyJ3ZWJraXRFeGl0UG9pbnRlckxvY2siXSB8fCBkb2N1bWVudFsibXNFeGl0
UG9pbnRlckxvY2siXSB8fCAoZnVuY3Rpb24oKSB7fSk7CiAgIGNhbnZhcy5leGl0UG9pbnRlckxv
Y2sgPSBjYW52YXMuZXhpdFBvaW50ZXJMb2NrLmJpbmQoZG9jdW1lbnQpOwogICBkb2N1bWVudC5h
ZGRFdmVudExpc3RlbmVyKCJwb2ludGVybG9ja2NoYW5nZSIsIHBvaW50ZXJMb2NrQ2hhbmdlLCBm
YWxzZSk7CiAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1venBvaW50ZXJsb2NrY2hhbmdl
IiwgcG9pbnRlckxvY2tDaGFuZ2UsIGZhbHNlKTsKICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5l
cigid2Via2l0cG9pbnRlcmxvY2tjaGFuZ2UiLCBwb2ludGVyTG9ja0NoYW5nZSwgZmFsc2UpOwog
ICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtc3BvaW50ZXJsb2NrY2hhbmdlIiwgcG9pbnRl
ckxvY2tDaGFuZ2UsIGZhbHNlKTsKICAgaWYgKE1vZHVsZVsiZWxlbWVudFBvaW50ZXJMb2NrIl0p
IHsKICAgIGNhbnZhcy5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIChmdW5jdGlvbihldikgewog
ICAgIGlmICghQnJvd3Nlci5wb2ludGVyTG9jayAmJiBjYW52YXMucmVxdWVzdFBvaW50ZXJMb2Nr
KSB7CiAgICAgIGNhbnZhcy5yZXF1ZXN0UG9pbnRlckxvY2soKTsKICAgICAgZXYucHJldmVudERl
ZmF1bHQoKTsKICAgICB9CiAgICB9KSwgZmFsc2UpOwogICB9CiAgfQogfSksCiBjcmVhdGVDb250
ZXh0OiAoZnVuY3Rpb24oY2FudmFzLCB1c2VXZWJHTCwgc2V0SW5Nb2R1bGUsIHdlYkdMQ29udGV4
dEF0dHJpYnV0ZXMpIHsKICBpZiAodXNlV2ViR0wgJiYgTW9kdWxlLmN0eCAmJiBjYW52YXMgPT0g
TW9kdWxlLmNhbnZhcykgcmV0dXJuIE1vZHVsZS5jdHg7CiAgdmFyIGN0eDsKICB2YXIgY29udGV4
dEhhbmRsZTsKICBpZiAodXNlV2ViR0wpIHsKICAgdmFyIGNvbnRleHRBdHRyaWJ1dGVzID0gewog
ICAgYW50aWFsaWFzOiBmYWxzZSwKICAgIGFscGhhOiBmYWxzZQogICB9OwogICBpZiAod2ViR0xD
b250ZXh0QXR0cmlidXRlcykgewogICAgZm9yICh2YXIgYXR0cmlidXRlIGluIHdlYkdMQ29udGV4
dEF0dHJpYnV0ZXMpIHsKICAgICBjb250ZXh0QXR0cmlidXRlc1thdHRyaWJ1dGVdID0gd2ViR0xD
b250ZXh0QXR0cmlidXRlc1thdHRyaWJ1dGVdOwogICAgfQogICB9CiAgIGNvbnRleHRIYW5kbGUg
PSBHTC5jcmVhdGVDb250ZXh0KGNhbnZhcywgY29udGV4dEF0dHJpYnV0ZXMpOwogICBpZiAoY29u
dGV4dEhhbmRsZSkgewogICAgY3R4ID0gR0wuZ2V0Q29udGV4dChjb250ZXh0SGFuZGxlKS5HTGN0
eDsKICAgfQogICBjYW52YXMuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gImJsYWNrIjsKICB9IGVs
c2UgewogICBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgiMmQiKTsKICB9CiAgaWYgKCFjdHgpIHJl
dHVybiBudWxsOwogIGlmIChzZXRJbk1vZHVsZSkgewogICBpZiAoIXVzZVdlYkdMKSBhc3NlcnQo
dHlwZW9mIEdMY3R4ID09PSAidW5kZWZpbmVkIiwgImNhbm5vdCBzZXQgaW4gbW9kdWxlIGlmIEdM
Y3R4IGlzIHVzZWQsIGJ1dCB3ZSBhcmUgYSBub24tR0wgY29udGV4dCB0aGF0IHdvdWxkIHJlcGxh
Y2UgaXQiKTsKICAgTW9kdWxlLmN0eCA9IGN0eDsKICAgaWYgKHVzZVdlYkdMKSBHTC5tYWtlQ29u
dGV4dEN1cnJlbnQoY29udGV4dEhhbmRsZSk7CiAgIE1vZHVsZS51c2VXZWJHTCA9IHVzZVdlYkdM
OwogICBCcm93c2VyLm1vZHVsZUNvbnRleHRDcmVhdGVkQ2FsbGJhY2tzLmZvckVhY2goKGZ1bmN0
aW9uKGNhbGxiYWNrKSB7CiAgICBjYWxsYmFjaygpOwogICB9KSk7CiAgIEJyb3dzZXIuaW5pdCgp
OwogIH0KICByZXR1cm4gY3R4OwogfSksCiBkZXN0cm95Q29udGV4dDogKGZ1bmN0aW9uKGNhbnZh
cywgdXNlV2ViR0wsIHNldEluTW9kdWxlKSB7fSksCiBmdWxsU2NyZWVuSGFuZGxlcnNJbnN0YWxs
ZWQ6IGZhbHNlLAogbG9ja1BvaW50ZXI6IHVuZGVmaW5lZCwKIHJlc2l6ZUNhbnZhczogdW5kZWZp
bmVkLAogcmVxdWVzdEZ1bGxTY3JlZW46IChmdW5jdGlvbihsb2NrUG9pbnRlciwgcmVzaXplQ2Fu
dmFzLCB2ckRldmljZSkgewogIEJyb3dzZXIubG9ja1BvaW50ZXIgPSBsb2NrUG9pbnRlcjsKICBC
cm93c2VyLnJlc2l6ZUNhbnZhcyA9IHJlc2l6ZUNhbnZhczsKICBCcm93c2VyLnZyRGV2aWNlID0g
dnJEZXZpY2U7CiAgaWYgKHR5cGVvZiBCcm93c2VyLmxvY2tQb2ludGVyID09PSAidW5kZWZpbmVk
IikgQnJvd3Nlci5sb2NrUG9pbnRlciA9IHRydWU7CiAgaWYgKHR5cGVvZiBCcm93c2VyLnJlc2l6
ZUNhbnZhcyA9PT0gInVuZGVmaW5lZCIpIEJyb3dzZXIucmVzaXplQ2FudmFzID0gZmFsc2U7CiAg
aWYgKHR5cGVvZiBCcm93c2VyLnZyRGV2aWNlID09PSAidW5kZWZpbmVkIikgQnJvd3Nlci52ckRl
dmljZSA9IG51bGw7CiAgdmFyIGNhbnZhcyA9IE1vZHVsZVsiY2FudmFzIl07CiAgZnVuY3Rpb24g
ZnVsbFNjcmVlbkNoYW5nZSgpIHsKICAgQnJvd3Nlci5pc0Z1bGxTY3JlZW4gPSBmYWxzZTsKICAg
dmFyIGNhbnZhc0NvbnRhaW5lciA9IGNhbnZhcy5wYXJlbnROb2RlOwogICBpZiAoKGRvY3VtZW50
WyJ3ZWJraXRGdWxsU2NyZWVuRWxlbWVudCJdIHx8IGRvY3VtZW50WyJ3ZWJraXRGdWxsc2NyZWVu
RWxlbWVudCJdIHx8IGRvY3VtZW50WyJtb3pGdWxsU2NyZWVuRWxlbWVudCJdIHx8IGRvY3VtZW50
WyJtb3pGdWxsc2NyZWVuRWxlbWVudCJdIHx8IGRvY3VtZW50WyJmdWxsU2NyZWVuRWxlbWVudCJd
IHx8IGRvY3VtZW50WyJmdWxsc2NyZWVuRWxlbWVudCJdIHx8IGRvY3VtZW50WyJtc0Z1bGxTY3Jl
ZW5FbGVtZW50Il0gfHwgZG9jdW1lbnRbIm1zRnVsbHNjcmVlbkVsZW1lbnQiXSB8fCBkb2N1bWVu
dFsid2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50Il0pID09PSBjYW52YXNDb250YWluZXIp
IHsKICAgIGNhbnZhcy5jYW5jZWxGdWxsU2NyZWVuID0gZG9jdW1lbnRbImNhbmNlbEZ1bGxTY3Jl
ZW4iXSB8fCBkb2N1bWVudFsibW96Q2FuY2VsRnVsbFNjcmVlbiJdIHx8IGRvY3VtZW50WyJ3ZWJr
aXRDYW5jZWxGdWxsU2NyZWVuIl0gfHwgZG9jdW1lbnRbIm1zRXhpdEZ1bGxzY3JlZW4iXSB8fCBk
b2N1bWVudFsiZXhpdEZ1bGxzY3JlZW4iXSB8fCAoZnVuY3Rpb24oKSB7fSk7CiAgICBjYW52YXMu
Y2FuY2VsRnVsbFNjcmVlbiA9IGNhbnZhcy5jYW5jZWxGdWxsU2NyZWVuLmJpbmQoZG9jdW1lbnQp
OwogICAgaWYgKEJyb3dzZXIubG9ja1BvaW50ZXIpIGNhbnZhcy5yZXF1ZXN0UG9pbnRlckxvY2so
KTsKICAgIEJyb3dzZXIuaXNGdWxsU2NyZWVuID0gdHJ1ZTsKICAgIGlmIChCcm93c2VyLnJlc2l6
ZUNhbnZhcykgQnJvd3Nlci5zZXRGdWxsU2NyZWVuQ2FudmFzU2l6ZSgpOwogICB9IGVsc2Ugewog
ICAgY2FudmFzQ29udGFpbmVyLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGNhbnZhcywgY2FudmFz
Q29udGFpbmVyKTsKICAgIGNhbnZhc0NvbnRhaW5lci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGNh
bnZhc0NvbnRhaW5lcik7CiAgICBpZiAoQnJvd3Nlci5yZXNpemVDYW52YXMpIEJyb3dzZXIuc2V0
V2luZG93ZWRDYW52YXNTaXplKCk7CiAgIH0KICAgaWYgKE1vZHVsZVsib25GdWxsU2NyZWVuIl0p
IE1vZHVsZVsib25GdWxsU2NyZWVuIl0oQnJvd3Nlci5pc0Z1bGxTY3JlZW4pOwogICBCcm93c2Vy
LnVwZGF0ZUNhbnZhc0RpbWVuc2lvbnMoY2FudmFzKTsKICB9CiAgaWYgKCFCcm93c2VyLmZ1bGxT
Y3JlZW5IYW5kbGVyc0luc3RhbGxlZCkgewogICBCcm93c2VyLmZ1bGxTY3JlZW5IYW5kbGVyc0lu
c3RhbGxlZCA9IHRydWU7CiAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImZ1bGxzY3JlZW5j
aGFuZ2UiLCBmdWxsU2NyZWVuQ2hhbmdlLCBmYWxzZSk7CiAgIGRvY3VtZW50LmFkZEV2ZW50TGlz
dGVuZXIoIm1vemZ1bGxzY3JlZW5jaGFuZ2UiLCBmdWxsU2NyZWVuQ2hhbmdlLCBmYWxzZSk7CiAg
IGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIndlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UiLCBmdWxs
U2NyZWVuQ2hhbmdlLCBmYWxzZSk7CiAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIk1TRnVs
bHNjcmVlbkNoYW5nZSIsIGZ1bGxTY3JlZW5DaGFuZ2UsIGZhbHNlKTsKICB9CiAgdmFyIGNhbnZh
c0NvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogIGNhbnZhcy5wYXJl
bnROb2RlLmluc2VydEJlZm9yZShjYW52YXNDb250YWluZXIsIGNhbnZhcyk7CiAgY2FudmFzQ29u
dGFpbmVyLmFwcGVuZENoaWxkKGNhbnZhcyk7CiAgY2FudmFzQ29udGFpbmVyLnJlcXVlc3RGdWxs
U2NyZWVuID0gY2FudmFzQ29udGFpbmVyWyJyZXF1ZXN0RnVsbFNjcmVlbiJdIHx8IGNhbnZhc0Nv
bnRhaW5lclsibW96UmVxdWVzdEZ1bGxTY3JlZW4iXSB8fCBjYW52YXNDb250YWluZXJbIm1zUmVx
dWVzdEZ1bGxzY3JlZW4iXSB8fCAoY2FudmFzQ29udGFpbmVyWyJ3ZWJraXRSZXF1ZXN0RnVsbFNj
cmVlbiJdID8gKGZ1bmN0aW9uKCkgewogICBjYW52YXNDb250YWluZXJbIndlYmtpdFJlcXVlc3RG
dWxsU2NyZWVuIl0oRWxlbWVudFsiQUxMT1dfS0VZQk9BUkRfSU5QVVQiXSk7CiAgfSkgOiBudWxs
KTsKICBpZiAodnJEZXZpY2UpIHsKICAgY2FudmFzQ29udGFpbmVyLnJlcXVlc3RGdWxsU2NyZWVu
KHsKICAgIHZyRGlzcGxheTogdnJEZXZpY2UKICAgfSk7CiAgfSBlbHNlIHsKICAgY2FudmFzQ29u
dGFpbmVyLnJlcXVlc3RGdWxsU2NyZWVuKCk7CiAgfQogfSksCiBuZXh0UkFGOiAwLAogZmFrZVJl
cXVlc3RBbmltYXRpb25GcmFtZTogKGZ1bmN0aW9uKGZ1bmMpIHsKICB2YXIgbm93ID0gRGF0ZS5u
b3coKTsKICBpZiAoQnJvd3Nlci5uZXh0UkFGID09PSAwKSB7CiAgIEJyb3dzZXIubmV4dFJBRiA9
IG5vdyArIDFlMyAvIDYwOwogIH0gZWxzZSB7CiAgIHdoaWxlIChub3cgKyAyID49IEJyb3dzZXIu
bmV4dFJBRikgewogICAgQnJvd3Nlci5uZXh0UkFGICs9IDFlMyAvIDYwOwogICB9CiAgfQogIHZh
ciBkZWxheSA9IE1hdGgubWF4KEJyb3dzZXIubmV4dFJBRiAtIG5vdywgMCk7CiAgc2V0VGltZW91
dChmdW5jLCBkZWxheSk7CiB9KSwKIHJlcXVlc3RBbmltYXRpb25GcmFtZTogZnVuY3Rpb24gcmVx
dWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmMpIHsKICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gInVuZGVm
aW5lZCIpIHsKICAgQnJvd3Nlci5mYWtlUmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmMpOwogIH0g
ZWxzZSB7CiAgIGlmICghd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSkgewogICAgd2luZG93
LnJlcXVlc3RBbmltYXRpb25GcmFtZSA9IHdpbmRvd1sicmVxdWVzdEFuaW1hdGlvbkZyYW1lIl0g
fHwgd2luZG93WyJtb3pSZXF1ZXN0QW5pbWF0aW9uRnJhbWUiXSB8fCB3aW5kb3dbIndlYmtpdFJl
cXVlc3RBbmltYXRpb25GcmFtZSJdIHx8IHdpbmRvd1sibXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWUi
XSB8fCB3aW5kb3dbIm9SZXF1ZXN0QW5pbWF0aW9uRnJhbWUiXSB8fCBCcm93c2VyLmZha2VSZXF1
ZXN0QW5pbWF0aW9uRnJhbWU7CiAgIH0KICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShm
dW5jKTsKICB9CiB9LAogc2FmZUNhbGxiYWNrOiAoZnVuY3Rpb24oZnVuYykgewogIHJldHVybiAo
ZnVuY3Rpb24oKSB7CiAgIGlmICghQUJPUlQpIHJldHVybiBmdW5jLmFwcGx5KG51bGwsIGFyZ3Vt
ZW50cyk7CiAgfSk7CiB9KSwKIGFsbG93QXN5bmNDYWxsYmFja3M6IHRydWUsCiBxdWV1ZWRBc3lu
Y0NhbGxiYWNrczogW10sCiBwYXVzZUFzeW5jQ2FsbGJhY2tzOiAoZnVuY3Rpb24oKSB7CiAgQnJv
d3Nlci5hbGxvd0FzeW5jQ2FsbGJhY2tzID0gZmFsc2U7CiB9KSwKIHJlc3VtZUFzeW5jQ2FsbGJh
Y2tzOiAoZnVuY3Rpb24oKSB7CiAgQnJvd3Nlci5hbGxvd0FzeW5jQ2FsbGJhY2tzID0gdHJ1ZTsK
ICBpZiAoQnJvd3Nlci5xdWV1ZWRBc3luY0NhbGxiYWNrcy5sZW5ndGggPiAwKSB7CiAgIHZhciBj
YWxsYmFja3MgPSBCcm93c2VyLnF1ZXVlZEFzeW5jQ2FsbGJhY2tzOwogICBCcm93c2VyLnF1ZXVl
ZEFzeW5jQ2FsbGJhY2tzID0gW107CiAgIGNhbGxiYWNrcy5mb3JFYWNoKChmdW5jdGlvbihmdW5j
KSB7CiAgICBmdW5jKCk7CiAgIH0pKTsKICB9CiB9KSwKIHNhZmVSZXF1ZXN0QW5pbWF0aW9uRnJh
bWU6IChmdW5jdGlvbihmdW5jKSB7CiAgcmV0dXJuIEJyb3dzZXIucmVxdWVzdEFuaW1hdGlvbkZy
YW1lKChmdW5jdGlvbigpIHsKICAgaWYgKEFCT1JUKSByZXR1cm47CiAgIGlmIChCcm93c2VyLmFs
bG93QXN5bmNDYWxsYmFja3MpIHsKICAgIGZ1bmMoKTsKICAgfSBlbHNlIHsKICAgIEJyb3dzZXIu
cXVldWVkQXN5bmNDYWxsYmFja3MucHVzaChmdW5jKTsKICAgfQogIH0pKTsKIH0pLAogc2FmZVNl
dFRpbWVvdXQ6IChmdW5jdGlvbihmdW5jLCB0aW1lb3V0KSB7CiAgTW9kdWxlWyJub0V4aXRSdW50
aW1lIl0gPSB0cnVlOwogIHJldHVybiBzZXRUaW1lb3V0KChmdW5jdGlvbigpIHsKICAgaWYgKEFC
T1JUKSByZXR1cm47CiAgIGlmIChCcm93c2VyLmFsbG93QXN5bmNDYWxsYmFja3MpIHsKICAgIGZ1
bmMoKTsKICAgfSBlbHNlIHsKICAgIEJyb3dzZXIucXVldWVkQXN5bmNDYWxsYmFja3MucHVzaChm
dW5jKTsKICAgfQogIH0pLCB0aW1lb3V0KTsKIH0pLAogc2FmZVNldEludGVydmFsOiAoZnVuY3Rp
b24oZnVuYywgdGltZW91dCkgewogIE1vZHVsZVsibm9FeGl0UnVudGltZSJdID0gdHJ1ZTsKICBy
ZXR1cm4gc2V0SW50ZXJ2YWwoKGZ1bmN0aW9uKCkgewogICBpZiAoQUJPUlQpIHJldHVybjsKICAg
aWYgKEJyb3dzZXIuYWxsb3dBc3luY0NhbGxiYWNrcykgewogICAgZnVuYygpOwogICB9CiAgfSks
IHRpbWVvdXQpOwogfSksCiBnZXRNaW1ldHlwZTogKGZ1bmN0aW9uKG5hbWUpIHsKICByZXR1cm4g
ewogICAianBnIjogImltYWdlL2pwZWciLAogICAianBlZyI6ICJpbWFnZS9qcGVnIiwKICAgInBu
ZyI6ICJpbWFnZS9wbmciLAogICAiYm1wIjogImltYWdlL2JtcCIsCiAgICJvZ2ciOiAiYXVkaW8v
b2dnIiwKICAgIndhdiI6ICJhdWRpby93YXYiLAogICAibXAzIjogImF1ZGlvL21wZWciCiAgfVtu
YW1lLnN1YnN0cihuYW1lLmxhc3RJbmRleE9mKCIuIikgKyAxKV07CiB9KSwKIGdldFVzZXJNZWRp
YTogKGZ1bmN0aW9uKGZ1bmMpIHsKICBpZiAoIXdpbmRvdy5nZXRVc2VyTWVkaWEpIHsKICAgd2lu
ZG93LmdldFVzZXJNZWRpYSA9IG5hdmlnYXRvclsiZ2V0VXNlck1lZGlhIl0gfHwgbmF2aWdhdG9y
WyJtb3pHZXRVc2VyTWVkaWEiXTsKICB9CiAgd2luZG93LmdldFVzZXJNZWRpYShmdW5jKTsKIH0p
LAogZ2V0TW92ZW1lbnRYOiAoZnVuY3Rpb24oZXZlbnQpIHsKICByZXR1cm4gZXZlbnRbIm1vdmVt
ZW50WCJdIHx8IGV2ZW50WyJtb3pNb3ZlbWVudFgiXSB8fCBldmVudFsid2Via2l0TW92ZW1lbnRY
Il0gfHwgMDsKIH0pLAogZ2V0TW92ZW1lbnRZOiAoZnVuY3Rpb24oZXZlbnQpIHsKICByZXR1cm4g
ZXZlbnRbIm1vdmVtZW50WSJdIHx8IGV2ZW50WyJtb3pNb3ZlbWVudFkiXSB8fCBldmVudFsid2Vi
a2l0TW92ZW1lbnRZIl0gfHwgMDsKIH0pLAogZ2V0TW91c2VXaGVlbERlbHRhOiAoZnVuY3Rpb24o
ZXZlbnQpIHsKICB2YXIgZGVsdGEgPSAwOwogIHN3aXRjaCAoZXZlbnQudHlwZSkgewogIGNhc2Ug
IkRPTU1vdXNlU2Nyb2xsIjoKICAgZGVsdGEgPSBldmVudC5kZXRhaWw7CiAgIGJyZWFrOwogIGNh
c2UgIm1vdXNld2hlZWwiOgogICBkZWx0YSA9IGV2ZW50LndoZWVsRGVsdGE7CiAgIGJyZWFrOwog
IGNhc2UgIndoZWVsIjoKICAgZGVsdGEgPSBldmVudFsiZGVsdGFZIl07CiAgIGJyZWFrOwogIGRl
ZmF1bHQ6CiAgIHRocm93ICJ1bnJlY29nbml6ZWQgbW91c2Ugd2hlZWwgZXZlbnQ6ICIgKyBldmVu
dC50eXBlOwogIH0KICByZXR1cm4gZGVsdGE7CiB9KSwKIG1vdXNlWDogMCwKIG1vdXNlWTogMCwK
IG1vdXNlTW92ZW1lbnRYOiAwLAogbW91c2VNb3ZlbWVudFk6IDAsCiB0b3VjaGVzOiB7fSwKIGxh
c3RUb3VjaGVzOiB7fSwKIGNhbGN1bGF0ZU1vdXNlRXZlbnQ6IChmdW5jdGlvbihldmVudCkgewog
IGlmIChCcm93c2VyLnBvaW50ZXJMb2NrKSB7CiAgIGlmIChldmVudC50eXBlICE9ICJtb3VzZW1v
dmUiICYmICJtb3pNb3ZlbWVudFgiIGluIGV2ZW50KSB7CiAgICBCcm93c2VyLm1vdXNlTW92ZW1l
bnRYID0gQnJvd3Nlci5tb3VzZU1vdmVtZW50WSA9IDA7CiAgIH0gZWxzZSB7CiAgICBCcm93c2Vy
Lm1vdXNlTW92ZW1lbnRYID0gQnJvd3Nlci5nZXRNb3ZlbWVudFgoZXZlbnQpOwogICAgQnJvd3Nl
ci5tb3VzZU1vdmVtZW50WSA9IEJyb3dzZXIuZ2V0TW92ZW1lbnRZKGV2ZW50KTsKICAgfQogICBp
ZiAodHlwZW9mIFNETCAhPSAidW5kZWZpbmVkIikgewogICAgQnJvd3Nlci5tb3VzZVggPSBTREwu
bW91c2VYICsgQnJvd3Nlci5tb3VzZU1vdmVtZW50WDsKICAgIEJyb3dzZXIubW91c2VZID0gU0RM
Lm1vdXNlWSArIEJyb3dzZXIubW91c2VNb3ZlbWVudFk7CiAgIH0gZWxzZSB7CiAgICBCcm93c2Vy
Lm1vdXNlWCArPSBCcm93c2VyLm1vdXNlTW92ZW1lbnRYOwogICAgQnJvd3Nlci5tb3VzZVkgKz0g
QnJvd3Nlci5tb3VzZU1vdmVtZW50WTsKICAgfQogIH0gZWxzZSB7CiAgIHZhciByZWN0ID0gTW9k
dWxlWyJjYW52YXMiXS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKICAgdmFyIGN3ID0gTW9kdWxl
WyJjYW52YXMiXS53aWR0aDsKICAgdmFyIGNoID0gTW9kdWxlWyJjYW52YXMiXS5oZWlnaHQ7CiAg
IHZhciBzY3JvbGxYID0gdHlwZW9mIHdpbmRvdy5zY3JvbGxYICE9PSAidW5kZWZpbmVkIiA/IHdp
bmRvdy5zY3JvbGxYIDogd2luZG93LnBhZ2VYT2Zmc2V0OwogICB2YXIgc2Nyb2xsWSA9IHR5cGVv
ZiB3aW5kb3cuc2Nyb2xsWSAhPT0gInVuZGVmaW5lZCIgPyB3aW5kb3cuc2Nyb2xsWSA6IHdpbmRv
dy5wYWdlWU9mZnNldDsKICAgaWYgKGV2ZW50LnR5cGUgPT09ICJ0b3VjaHN0YXJ0IiB8fCBldmVu
dC50eXBlID09PSAidG91Y2hlbmQiIHx8IGV2ZW50LnR5cGUgPT09ICJ0b3VjaG1vdmUiKSB7CiAg
ICB2YXIgdG91Y2ggPSBldmVudC50b3VjaDsKICAgIGlmICh0b3VjaCA9PT0gdW5kZWZpbmVkKSB7
CiAgICAgcmV0dXJuOwogICAgfQogICAgdmFyIGFkanVzdGVkWCA9IHRvdWNoLnBhZ2VYIC0gKHNj
cm9sbFggKyByZWN0LmxlZnQpOwogICAgdmFyIGFkanVzdGVkWSA9IHRvdWNoLnBhZ2VZIC0gKHNj
cm9sbFkgKyByZWN0LnRvcCk7CiAgICBhZGp1c3RlZFggPSBhZGp1c3RlZFggKiAoY3cgLyByZWN0
LndpZHRoKTsKICAgIGFkanVzdGVkWSA9IGFkanVzdGVkWSAqIChjaCAvIHJlY3QuaGVpZ2h0KTsK
ICAgIHZhciBjb29yZHMgPSB7CiAgICAgeDogYWRqdXN0ZWRYLAogICAgIHk6IGFkanVzdGVkWQog
ICAgfTsKICAgIGlmIChldmVudC50eXBlID09PSAidG91Y2hzdGFydCIpIHsKICAgICBCcm93c2Vy
Lmxhc3RUb3VjaGVzW3RvdWNoLmlkZW50aWZpZXJdID0gY29vcmRzOwogICAgIEJyb3dzZXIudG91
Y2hlc1t0b3VjaC5pZGVudGlmaWVyXSA9IGNvb3JkczsKICAgIH0gZWxzZSBpZiAoZXZlbnQudHlw
ZSA9PT0gInRvdWNoZW5kIiB8fCBldmVudC50eXBlID09PSAidG91Y2htb3ZlIikgewogICAgIHZh
ciBsYXN0ID0gQnJvd3Nlci50b3VjaGVzW3RvdWNoLmlkZW50aWZpZXJdOwogICAgIGlmICghbGFz
dCkgbGFzdCA9IGNvb3JkczsKICAgICBCcm93c2VyLmxhc3RUb3VjaGVzW3RvdWNoLmlkZW50aWZp
ZXJdID0gbGFzdDsKICAgICBCcm93c2VyLnRvdWNoZXNbdG91Y2guaWRlbnRpZmllcl0gPSBjb29y
ZHM7CiAgICB9CiAgICByZXR1cm47CiAgIH0KICAgdmFyIHggPSBldmVudC5wYWdlWCAtIChzY3Jv
bGxYICsgcmVjdC5sZWZ0KTsKICAgdmFyIHkgPSBldmVudC5wYWdlWSAtIChzY3JvbGxZICsgcmVj
dC50b3ApOwogICB4ID0geCAqIChjdyAvIHJlY3Qud2lkdGgpOwogICB5ID0geSAqIChjaCAvIHJl
Y3QuaGVpZ2h0KTsKICAgQnJvd3Nlci5tb3VzZU1vdmVtZW50WCA9IHggLSBCcm93c2VyLm1vdXNl
WDsKICAgQnJvd3Nlci5tb3VzZU1vdmVtZW50WSA9IHkgLSBCcm93c2VyLm1vdXNlWTsKICAgQnJv
d3Nlci5tb3VzZVggPSB4OwogICBCcm93c2VyLm1vdXNlWSA9IHk7CiAgfQogfSksCiB4aHJMb2Fk
OiAoZnVuY3Rpb24odXJsLCBvbmxvYWQsIG9uZXJyb3IpIHsKICB2YXIgeGhyID0gbmV3IFhNTEh0
dHBSZXF1ZXN0OwogIHhoci5vcGVuKCJHRVQiLCB1cmwsIHRydWUpOwogIHhoci5yZXNwb25zZVR5
cGUgPSAiYXJyYXlidWZmZXIiOwogIHhoci5vbmxvYWQgPSBmdW5jdGlvbiB4aHJfb25sb2FkKCkg
ewogICBpZiAoeGhyLnN0YXR1cyA9PSAyMDAgfHwgeGhyLnN0YXR1cyA9PSAwICYmIHhoci5yZXNw
b25zZSkgewogICAgb25sb2FkKHhoci5yZXNwb25zZSk7CiAgIH0gZWxzZSB7CiAgICBvbmVycm9y
KCk7CiAgIH0KICB9OwogIHhoci5vbmVycm9yID0gb25lcnJvcjsKICB4aHIuc2VuZChudWxsKTsK
IH0pLAogYXN5bmNMb2FkOiAoZnVuY3Rpb24odXJsLCBvbmxvYWQsIG9uZXJyb3IsIG5vUnVuRGVw
KSB7CiAgQnJvd3Nlci54aHJMb2FkKHVybCwgKGZ1bmN0aW9uKGFycmF5QnVmZmVyKSB7CiAgIGFz
c2VydChhcnJheUJ1ZmZlciwgJ0xvYWRpbmcgZGF0YSBmaWxlICInICsgdXJsICsgJyIgZmFpbGVk
IChubyBhcnJheUJ1ZmZlcikuJyk7CiAgIG9ubG9hZChuZXcgVWludDhBcnJheShhcnJheUJ1ZmZl
cikpOwogICBpZiAoIW5vUnVuRGVwKSByZW1vdmVSdW5EZXBlbmRlbmN5KCJhbCAiICsgdXJsKTsK
ICB9KSwgKGZ1bmN0aW9uKGV2ZW50KSB7CiAgIGlmIChvbmVycm9yKSB7CiAgICBvbmVycm9yKCk7
CiAgIH0gZWxzZSB7CiAgICB0aHJvdyAnTG9hZGluZyBkYXRhIGZpbGUgIicgKyB1cmwgKyAnIiBm
YWlsZWQuJzsKICAgfQogIH0pKTsKICBpZiAoIW5vUnVuRGVwKSBhZGRSdW5EZXBlbmRlbmN5KCJh
bCAiICsgdXJsKTsKIH0pLAogcmVzaXplTGlzdGVuZXJzOiBbXSwKIHVwZGF0ZVJlc2l6ZUxpc3Rl
bmVyczogKGZ1bmN0aW9uKCkgewogIHZhciBjYW52YXMgPSBNb2R1bGVbImNhbnZhcyJdOwogIEJy
b3dzZXIucmVzaXplTGlzdGVuZXJzLmZvckVhY2goKGZ1bmN0aW9uKGxpc3RlbmVyKSB7CiAgIGxp
c3RlbmVyKGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7CiAgfSkpOwogfSksCiBzZXRDYW52
YXNTaXplOiAoZnVuY3Rpb24od2lkdGgsIGhlaWdodCwgbm9VcGRhdGVzKSB7CiAgdmFyIGNhbnZh
cyA9IE1vZHVsZVsiY2FudmFzIl07CiAgQnJvd3Nlci51cGRhdGVDYW52YXNEaW1lbnNpb25zKGNh
bnZhcywgd2lkdGgsIGhlaWdodCk7CiAgaWYgKCFub1VwZGF0ZXMpIEJyb3dzZXIudXBkYXRlUmVz
aXplTGlzdGVuZXJzKCk7CiB9KSwKIHdpbmRvd2VkV2lkdGg6IDAsCiB3aW5kb3dlZEhlaWdodDog
MCwKIHNldEZ1bGxTY3JlZW5DYW52YXNTaXplOiAoZnVuY3Rpb24oKSB7CiAgaWYgKHR5cGVvZiBT
REwgIT0gInVuZGVmaW5lZCIpIHsKICAgdmFyIGZsYWdzID0gSEVBUFUzMltTREwuc2NyZWVuICsg
UnVudGltZS5RVUFOVFVNX1NJWkUgKiAwID4+IDJdOwogICBmbGFncyA9IGZsYWdzIHwgODM4ODYw
ODsKICAgSEVBUDMyW1NETC5zY3JlZW4gKyBSdW50aW1lLlFVQU5UVU1fU0laRSAqIDAgPj4gMl0g
PSBmbGFnczsKICB9CiAgQnJvd3Nlci51cGRhdGVSZXNpemVMaXN0ZW5lcnMoKTsKIH0pLAogc2V0
V2luZG93ZWRDYW52YXNTaXplOiAoZnVuY3Rpb24oKSB7CiAgaWYgKHR5cGVvZiBTREwgIT0gInVu
ZGVmaW5lZCIpIHsKICAgdmFyIGZsYWdzID0gSEVBUFUzMltTREwuc2NyZWVuICsgUnVudGltZS5R
VUFOVFVNX1NJWkUgKiAwID4+IDJdOwogICBmbGFncyA9IGZsYWdzICYgfjgzODg2MDg7CiAgIEhF
QVAzMltTREwuc2NyZWVuICsgUnVudGltZS5RVUFOVFVNX1NJWkUgKiAwID4+IDJdID0gZmxhZ3M7
CiAgfQogIEJyb3dzZXIudXBkYXRlUmVzaXplTGlzdGVuZXJzKCk7CiB9KSwKIHVwZGF0ZUNhbnZh
c0RpbWVuc2lvbnM6IChmdW5jdGlvbihjYW52YXMsIHdOYXRpdmUsIGhOYXRpdmUpIHsKICBpZiAo
d05hdGl2ZSAmJiBoTmF0aXZlKSB7CiAgIGNhbnZhcy53aWR0aE5hdGl2ZSA9IHdOYXRpdmU7CiAg
IGNhbnZhcy5oZWlnaHROYXRpdmUgPSBoTmF0aXZlOwogIH0gZWxzZSB7CiAgIHdOYXRpdmUgPSBj
YW52YXMud2lkdGhOYXRpdmU7CiAgIGhOYXRpdmUgPSBjYW52YXMuaGVpZ2h0TmF0aXZlOwogIH0K
ICB2YXIgdyA9IHdOYXRpdmU7CiAgdmFyIGggPSBoTmF0aXZlOwogIGlmIChNb2R1bGVbImZvcmNl
ZEFzcGVjdFJhdGlvIl0gJiYgTW9kdWxlWyJmb3JjZWRBc3BlY3RSYXRpbyJdID4gMCkgewogICBp
ZiAodyAvIGggPCBNb2R1bGVbImZvcmNlZEFzcGVjdFJhdGlvIl0pIHsKICAgIHcgPSBNYXRoLnJv
dW5kKGggKiBNb2R1bGVbImZvcmNlZEFzcGVjdFJhdGlvIl0pOwogICB9IGVsc2UgewogICAgaCA9
IE1hdGgucm91bmQodyAvIE1vZHVsZVsiZm9yY2VkQXNwZWN0UmF0aW8iXSk7CiAgIH0KICB9CiAg
aWYgKChkb2N1bWVudFsid2Via2l0RnVsbFNjcmVlbkVsZW1lbnQiXSB8fCBkb2N1bWVudFsid2Vi
a2l0RnVsbHNjcmVlbkVsZW1lbnQiXSB8fCBkb2N1bWVudFsibW96RnVsbFNjcmVlbkVsZW1lbnQi
XSB8fCBkb2N1bWVudFsibW96RnVsbHNjcmVlbkVsZW1lbnQiXSB8fCBkb2N1bWVudFsiZnVsbFNj
cmVlbkVsZW1lbnQiXSB8fCBkb2N1bWVudFsiZnVsbHNjcmVlbkVsZW1lbnQiXSB8fCBkb2N1bWVu
dFsibXNGdWxsU2NyZWVuRWxlbWVudCJdIHx8IGRvY3VtZW50WyJtc0Z1bGxzY3JlZW5FbGVtZW50
Il0gfHwgZG9jdW1lbnRbIndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCJdKSA9PT0gY2Fu
dmFzLnBhcmVudE5vZGUgJiYgdHlwZW9mIHNjcmVlbiAhPSAidW5kZWZpbmVkIikgewogICB2YXIg
ZmFjdG9yID0gTWF0aC5taW4oc2NyZWVuLndpZHRoIC8gdywgc2NyZWVuLmhlaWdodCAvIGgpOwog
ICB3ID0gTWF0aC5yb3VuZCh3ICogZmFjdG9yKTsKICAgaCA9IE1hdGgucm91bmQoaCAqIGZhY3Rv
cik7CiAgfQogIGlmIChCcm93c2VyLnJlc2l6ZUNhbnZhcykgewogICBpZiAoY2FudmFzLndpZHRo
ICE9IHcpIGNhbnZhcy53aWR0aCA9IHc7CiAgIGlmIChjYW52YXMuaGVpZ2h0ICE9IGgpIGNhbnZh
cy5oZWlnaHQgPSBoOwogICBpZiAodHlwZW9mIGNhbnZhcy5zdHlsZSAhPSAidW5kZWZpbmVkIikg
ewogICAgY2FudmFzLnN0eWxlLnJlbW92ZVByb3BlcnR5KCJ3aWR0aCIpOwogICAgY2FudmFzLnN0
eWxlLnJlbW92ZVByb3BlcnR5KCJoZWlnaHQiKTsKICAgfQogIH0gZWxzZSB7CiAgIGlmIChjYW52
YXMud2lkdGggIT0gd05hdGl2ZSkgY2FudmFzLndpZHRoID0gd05hdGl2ZTsKICAgaWYgKGNhbnZh
cy5oZWlnaHQgIT0gaE5hdGl2ZSkgY2FudmFzLmhlaWdodCA9IGhOYXRpdmU7CiAgIGlmICh0eXBl
b2YgY2FudmFzLnN0eWxlICE9ICJ1bmRlZmluZWQiKSB7CiAgICBpZiAodyAhPSB3TmF0aXZlIHx8
IGggIT0gaE5hdGl2ZSkgewogICAgIGNhbnZhcy5zdHlsZS5zZXRQcm9wZXJ0eSgid2lkdGgiLCB3
ICsgInB4IiwgImltcG9ydGFudCIpOwogICAgIGNhbnZhcy5zdHlsZS5zZXRQcm9wZXJ0eSgiaGVp
Z2h0IiwgaCArICJweCIsICJpbXBvcnRhbnQiKTsKICAgIH0gZWxzZSB7CiAgICAgY2FudmFzLnN0
eWxlLnJlbW92ZVByb3BlcnR5KCJ3aWR0aCIpOwogICAgIGNhbnZhcy5zdHlsZS5yZW1vdmVQcm9w
ZXJ0eSgiaGVpZ2h0Iik7CiAgICB9CiAgIH0KICB9CiB9KSwKIHdnZXRSZXF1ZXN0czoge30sCiBu
ZXh0V2dldFJlcXVlc3RIYW5kbGU6IDAsCiBnZXROZXh0V2dldFJlcXVlc3RIYW5kbGU6IChmdW5j
dGlvbigpIHsKICB2YXIgaGFuZGxlID0gQnJvd3Nlci5uZXh0V2dldFJlcXVlc3RIYW5kbGU7CiAg
QnJvd3Nlci5uZXh0V2dldFJlcXVlc3RIYW5kbGUrKzsKICByZXR1cm4gaGFuZGxlOwogfSkKfTsK
ZnVuY3Rpb24gX3RpbWUocHRyKSB7CiB2YXIgcmV0ID0gRGF0ZS5ub3coKSAvIDFlMyB8IDA7CiBp
ZiAocHRyKSB7CiAgSEVBUDMyW3B0ciA+PiAyXSA9IHJldDsKIH0KIHJldHVybiByZXQ7Cn0KZnVu
Y3Rpb24gX3B0aHJlYWRfc2VsZigpIHsKIHJldHVybiAwOwp9CmZ1bmN0aW9uIF9fX3N5c2NhbGwx
NDAod2hpY2gsIHZhcmFyZ3MpIHsKIFNZU0NBTExTLnZhcmFyZ3MgPSB2YXJhcmdzOwogdHJ5IHsK
ICB2YXIgc3RyZWFtID0gU1lTQ0FMTFMuZ2V0U3RyZWFtRnJvbUZEKCksIG9mZnNldF9oaWdoID0g
U1lTQ0FMTFMuZ2V0KCksIG9mZnNldF9sb3cgPSBTWVNDQUxMUy5nZXQoKSwgcmVzdWx0ID0gU1lT
Q0FMTFMuZ2V0KCksIHdoZW5jZSA9IFNZU0NBTExTLmdldCgpOwogIHZhciBvZmZzZXQgPSBvZmZz
ZXRfbG93OwogIGFzc2VydChvZmZzZXRfaGlnaCA9PT0gMCk7CiAgRlMubGxzZWVrKHN0cmVhbSwg
b2Zmc2V0LCB3aGVuY2UpOwogIEhFQVAzMltyZXN1bHQgPj4gMl0gPSBzdHJlYW0ucG9zaXRpb247
CiAgaWYgKHN0cmVhbS5nZXRkZW50cyAmJiBvZmZzZXQgPT09IDAgJiYgd2hlbmNlID09PSAwKSBz
dHJlYW0uZ2V0ZGVudHMgPSBudWxsOwogIHJldHVybiAwOwogfSBjYXRjaCAoZSkgewogIGlmICh0
eXBlb2YgRlMgPT09ICJ1bmRlZmluZWQiIHx8ICEoZSBpbnN0YW5jZW9mIEZTLkVycm5vRXJyb3Ip
KSBhYm9ydChlKTsKICByZXR1cm4gLWUuZXJybm87CiB9Cn0KZnVuY3Rpb24gX19fc3lzY2FsbDE0
Nih3aGljaCwgdmFyYXJncykgewogU1lTQ0FMTFMudmFyYXJncyA9IHZhcmFyZ3M7CiB0cnkgewog
IHZhciBzdHJlYW0gPSBTWVNDQUxMUy5nZXRTdHJlYW1Gcm9tRkQoKSwgaW92ID0gU1lTQ0FMTFMu
Z2V0KCksIGlvdmNudCA9IFNZU0NBTExTLmdldCgpOwogIHJldHVybiBTWVNDQUxMUy5kb1dyaXRl
dihzdHJlYW0sIGlvdiwgaW92Y250KTsKIH0gY2F0Y2ggKGUpIHsKICBpZiAodHlwZW9mIEZTID09
PSAidW5kZWZpbmVkIiB8fCAhKGUgaW5zdGFuY2VvZiBGUy5FcnJub0Vycm9yKSkgYWJvcnQoZSk7
CiAgcmV0dXJuIC1lLmVycm5vOwogfQp9CmZ1bmN0aW9uIF9fX3N5c2NhbGw1NCh3aGljaCwgdmFy
YXJncykgewogU1lTQ0FMTFMudmFyYXJncyA9IHZhcmFyZ3M7CiB0cnkgewogIHZhciBzdHJlYW0g
PSBTWVNDQUxMUy5nZXRTdHJlYW1Gcm9tRkQoKSwgb3AgPSBTWVNDQUxMUy5nZXQoKTsKICBzd2l0
Y2ggKG9wKSB7CiAgY2FzZSAyMTUwNToKICAgewogICAgaWYgKCFzdHJlYW0udHR5KSByZXR1cm4g
LUVSUk5PX0NPREVTLkVOT1RUWTsKICAgIHJldHVybiAwOwogICB9CiAgY2FzZSAyMTUwNjoKICAg
ewogICAgaWYgKCFzdHJlYW0udHR5KSByZXR1cm4gLUVSUk5PX0NPREVTLkVOT1RUWTsKICAgIHJl
dHVybiAwOwogICB9CiAgY2FzZSAyMTUxOToKICAgewogICAgaWYgKCFzdHJlYW0udHR5KSByZXR1
cm4gLUVSUk5PX0NPREVTLkVOT1RUWTsKICAgIHZhciBhcmdwID0gU1lTQ0FMTFMuZ2V0KCk7CiAg
ICBIRUFQMzJbYXJncCA+PiAyXSA9IDA7CiAgICByZXR1cm4gMDsKICAgfQogIGNhc2UgMjE1MjA6
CiAgIHsKICAgIGlmICghc3RyZWFtLnR0eSkgcmV0dXJuIC1FUlJOT19DT0RFUy5FTk9UVFk7CiAg
ICByZXR1cm4gLUVSUk5PX0NPREVTLkVJTlZBTDsKICAgfQogIGNhc2UgMjE1MzE6CiAgIHsKICAg
IHZhciBhcmdwID0gU1lTQ0FMTFMuZ2V0KCk7CiAgICByZXR1cm4gRlMuaW9jdGwoc3RyZWFtLCBv
cCwgYXJncCk7CiAgIH0KICBkZWZhdWx0OgogICBhYm9ydCgiYmFkIGlvY3RsIHN5c2NhbGwgIiAr
IG9wKTsKICB9CiB9IGNhdGNoIChlKSB7CiAgaWYgKHR5cGVvZiBGUyA9PT0gInVuZGVmaW5lZCIg
fHwgIShlIGluc3RhbmNlb2YgRlMuRXJybm9FcnJvcikpIGFib3J0KGUpOwogIHJldHVybiAtZS5l
cnJubzsKIH0KfQpGUy5zdGF0aWNJbml0KCk7Cl9fQVRJTklUX18udW5zaGlmdCgoZnVuY3Rpb24o
KSB7CiBpZiAoIU1vZHVsZVsibm9GU0luaXQiXSAmJiAhRlMuaW5pdC5pbml0aWFsaXplZCkgRlMu
aW5pdCgpOwp9KSk7Cl9fQVRNQUlOX18ucHVzaCgoZnVuY3Rpb24oKSB7CiBGUy5pZ25vcmVQZXJt
aXNzaW9ucyA9IGZhbHNlOwp9KSk7Cl9fQVRFWElUX18ucHVzaCgoZnVuY3Rpb24oKSB7CiBGUy5x
dWl0KCk7Cn0pKTsKTW9kdWxlWyJGU19jcmVhdGVGb2xkZXIiXSA9IEZTLmNyZWF0ZUZvbGRlcjsK
TW9kdWxlWyJGU19jcmVhdGVQYXRoIl0gPSBGUy5jcmVhdGVQYXRoOwpNb2R1bGVbIkZTX2NyZWF0
ZURhdGFGaWxlIl0gPSBGUy5jcmVhdGVEYXRhRmlsZTsKTW9kdWxlWyJGU19jcmVhdGVQcmVsb2Fk
ZWRGaWxlIl0gPSBGUy5jcmVhdGVQcmVsb2FkZWRGaWxlOwpNb2R1bGVbIkZTX2NyZWF0ZUxhenlG
aWxlIl0gPSBGUy5jcmVhdGVMYXp5RmlsZTsKTW9kdWxlWyJGU19jcmVhdGVMaW5rIl0gPSBGUy5j
cmVhdGVMaW5rOwpNb2R1bGVbIkZTX2NyZWF0ZURldmljZSJdID0gRlMuY3JlYXRlRGV2aWNlOwpN
b2R1bGVbIkZTX3VubGluayJdID0gRlMudW5saW5rOwpfX0FUSU5JVF9fLnVuc2hpZnQoKGZ1bmN0
aW9uKCkgewogVFRZLmluaXQoKTsKfSkpOwpfX0FURVhJVF9fLnB1c2goKGZ1bmN0aW9uKCkgewog
VFRZLnNodXRkb3duKCk7Cn0pKTsKaWYgKEVOVklST05NRU5UX0lTX05PREUpIHsKIHZhciBmcyA9
IHJlcXVpcmUoImZzIik7CiB2YXIgTk9ERUpTX1BBVEggPSByZXF1aXJlKCJwYXRoIik7CiBOT0RF
RlMuc3RhdGljSW5pdCgpOwp9Ck1vZHVsZVsicmVxdWVzdEZ1bGxTY3JlZW4iXSA9IGZ1bmN0aW9u
IE1vZHVsZV9yZXF1ZXN0RnVsbFNjcmVlbihsb2NrUG9pbnRlciwgcmVzaXplQ2FudmFzLCB2ckRl
dmljZSkgewogQnJvd3Nlci5yZXF1ZXN0RnVsbFNjcmVlbihsb2NrUG9pbnRlciwgcmVzaXplQ2Fu
dmFzLCB2ckRldmljZSk7Cn07Ck1vZHVsZVsicmVxdWVzdEFuaW1hdGlvbkZyYW1lIl0gPSBmdW5j
dGlvbiBNb2R1bGVfcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmMpIHsKIEJyb3dzZXIucmVxdWVz
dEFuaW1hdGlvbkZyYW1lKGZ1bmMpOwp9OwpNb2R1bGVbInNldENhbnZhc1NpemUiXSA9IGZ1bmN0
aW9uIE1vZHVsZV9zZXRDYW52YXNTaXplKHdpZHRoLCBoZWlnaHQsIG5vVXBkYXRlcykgewogQnJv
d3Nlci5zZXRDYW52YXNTaXplKHdpZHRoLCBoZWlnaHQsIG5vVXBkYXRlcyk7Cn07Ck1vZHVsZVsi
cGF1c2VNYWluTG9vcCJdID0gZnVuY3Rpb24gTW9kdWxlX3BhdXNlTWFpbkxvb3AoKSB7CiBCcm93
c2VyLm1haW5Mb29wLnBhdXNlKCk7Cn07Ck1vZHVsZVsicmVzdW1lTWFpbkxvb3AiXSA9IGZ1bmN0
aW9uIE1vZHVsZV9yZXN1bWVNYWluTG9vcCgpIHsKIEJyb3dzZXIubWFpbkxvb3AucmVzdW1lKCk7
Cn07Ck1vZHVsZVsiZ2V0VXNlck1lZGlhIl0gPSBmdW5jdGlvbiBNb2R1bGVfZ2V0VXNlck1lZGlh
KCkgewogQnJvd3Nlci5nZXRVc2VyTWVkaWEoKTsKfTsKTW9kdWxlWyJjcmVhdGVDb250ZXh0Il0g
PSBmdW5jdGlvbiBNb2R1bGVfY3JlYXRlQ29udGV4dChjYW52YXMsIHVzZVdlYkdMLCBzZXRJbk1v
ZHVsZSwgd2ViR0xDb250ZXh0QXR0cmlidXRlcykgewogcmV0dXJuIEJyb3dzZXIuY3JlYXRlQ29u
dGV4dChjYW52YXMsIHVzZVdlYkdMLCBzZXRJbk1vZHVsZSwgd2ViR0xDb250ZXh0QXR0cmlidXRl
cyk7Cn07ClNUQUNLX0JBU0UgPSBTVEFDS1RPUCA9IFJ1bnRpbWUuYWxpZ25NZW1vcnkoU1RBVElD
VE9QKTsKc3RhdGljU2VhbGVkID0gdHJ1ZTsKU1RBQ0tfTUFYID0gU1RBQ0tfQkFTRSArIFRPVEFM
X1NUQUNLOwpEWU5BTUlDX0JBU0UgPSBEWU5BTUlDVE9QID0gUnVudGltZS5hbGlnbk1lbW9yeShT
VEFDS19NQVgpOwphc3NlcnQoRFlOQU1JQ19CQVNFIDwgVE9UQUxfTUVNT1JZLCAiVE9UQUxfTUVN
T1JZIG5vdCBiaWcgZW5vdWdoIGZvciBzdGFjayIpOwp2YXIgY3R0el9pOCA9IGFsbG9jYXRlKFsg
OCwgMCwgMSwgMCwgMiwgMCwgMSwgMCwgMywgMCwgMSwgMCwgMiwgMCwgMSwgMCwgNCwgMCwgMSwg
MCwgMiwgMCwgMSwgMCwgMywgMCwgMSwgMCwgMiwgMCwgMSwgMCwgNSwgMCwgMSwgMCwgMiwgMCwg
MSwgMCwgMywgMCwgMSwgMCwgMiwgMCwgMSwgMCwgNCwgMCwgMSwgMCwgMiwgMCwgMSwgMCwgMywg
MCwgMSwgMCwgMiwgMCwgMSwgMCwgNiwgMCwgMSwgMCwgMiwgMCwgMSwgMCwgMywgMCwgMSwgMCwg
MiwgMCwgMSwgMCwgNCwgMCwgMSwgMCwgMiwgMCwgMSwgMCwgMywgMCwgMSwgMCwgMiwgMCwgMSwg
MCwgNSwgMCwgMSwgMCwgMiwgMCwgMSwgMCwgMywgMCwgMSwgMCwgMiwgMCwgMSwgMCwgNCwgMCwg
MSwgMCwgMiwgMCwgMSwgMCwgMywgMCwgMSwgMCwgMiwgMCwgMSwgMCwgNywgMCwgMSwgMCwgMiwg
MCwgMSwgMCwgMywgMCwgMSwgMCwgMiwgMCwgMSwgMCwgNCwgMCwgMSwgMCwgMiwgMCwgMSwgMCwg
MywgMCwgMSwgMCwgMiwgMCwgMSwgMCwgNSwgMCwgMSwgMCwgMiwgMCwgMSwgMCwgMywgMCwgMSwg
MCwgMiwgMCwgMSwgMCwgNCwgMCwgMSwgMCwgMiwgMCwgMSwgMCwgMywgMCwgMSwgMCwgMiwgMCwg
MSwgMCwgNiwgMCwgMSwgMCwgMiwgMCwgMSwgMCwgMywgMCwgMSwgMCwgMiwgMCwgMSwgMCwgNCwg
MCwgMSwgMCwgMiwgMCwgMSwgMCwgMywgMCwgMSwgMCwgMiwgMCwgMSwgMCwgNSwgMCwgMSwgMCwg
MiwgMCwgMSwgMCwgMywgMCwgMSwgMCwgMiwgMCwgMSwgMCwgNCwgMCwgMSwgMCwgMiwgMCwgMSwg
MCwgMywgMCwgMSwgMCwgMiwgMCwgMSwgMCBdLCAiaTgiLCBBTExPQ19EWU5BTUlDKTsKZnVuY3Rp
b24gaW52b2tlX2lpKGluZGV4LCBhMSkgewogdHJ5IHsKICByZXR1cm4gTW9kdWxlWyJkeW5DYWxs
X2lpIl0oaW5kZXgsIGExKTsKIH0gY2F0Y2ggKGUpIHsKICBpZiAodHlwZW9mIGUgIT09ICJudW1i
ZXIiICYmIGUgIT09ICJsb25nam1wIikgdGhyb3cgZTsKICBhc21bInNldFRocmV3Il0oMSwgMCk7
CiB9Cn0KZnVuY3Rpb24gaW52b2tlX2lpaWkoaW5kZXgsIGExLCBhMiwgYTMpIHsKIHRyeSB7CiAg
cmV0dXJuIE1vZHVsZVsiZHluQ2FsbF9paWlpIl0oaW5kZXgsIGExLCBhMiwgYTMpOwogfSBjYXRj
aCAoZSkgewogIGlmICh0eXBlb2YgZSAhPT0gIm51bWJlciIgJiYgZSAhPT0gImxvbmdqbXAiKSB0
aHJvdyBlOwogIGFzbVsic2V0VGhyZXciXSgxLCAwKTsKIH0KfQpmdW5jdGlvbiBpbnZva2Vfdmko
aW5kZXgsIGExKSB7CiB0cnkgewogIE1vZHVsZVsiZHluQ2FsbF92aSJdKGluZGV4LCBhMSk7CiB9
IGNhdGNoIChlKSB7CiAgaWYgKHR5cGVvZiBlICE9PSAibnVtYmVyIiAmJiBlICE9PSAibG9uZ2pt
cCIpIHRocm93IGU7CiAgYXNtWyJzZXRUaHJldyJdKDEsIDApOwogfQp9Ck1vZHVsZS5hc21HbG9i
YWxBcmcgPSB7CiAiTWF0aCI6IE1hdGgsCiAiSW50OEFycmF5IjogSW50OEFycmF5LAogIkludDE2
QXJyYXkiOiBJbnQxNkFycmF5LAogIkludDMyQXJyYXkiOiBJbnQzMkFycmF5LAogIlVpbnQ4QXJy
YXkiOiBVaW50OEFycmF5LAogIlVpbnQxNkFycmF5IjogVWludDE2QXJyYXksCiAiVWludDMyQXJy
YXkiOiBVaW50MzJBcnJheSwKICJGbG9hdDMyQXJyYXkiOiBGbG9hdDMyQXJyYXksCiAiRmxvYXQ2
NEFycmF5IjogRmxvYXQ2NEFycmF5LAogIk5hTiI6IE5hTiwKICJJbmZpbml0eSI6IEluZmluaXR5
LAogImJ5dGVMZW5ndGgiOiBieXRlTGVuZ3RoCn07Ck1vZHVsZS5hc21MaWJyYXJ5QXJnID0gewog
ImFib3J0IjogYWJvcnQsCiAiYXNzZXJ0IjogYXNzZXJ0LAogImludm9rZV9paSI6IGludm9rZV9p
aSwKICJpbnZva2VfaWlpaSI6IGludm9rZV9paWlpLAogImludm9rZV92aSI6IGludm9rZV92aSwK
ICJfcHRocmVhZF9jbGVhbnVwX3BvcCI6IF9wdGhyZWFkX2NsZWFudXBfcG9wLAogIl9fX2xvY2si
OiBfX19sb2NrLAogIl9lbXNjcmlwdGVuX3NldF9tYWluX2xvb3AiOiBfZW1zY3JpcHRlbl9zZXRf
bWFpbl9sb29wLAogIl9wdGhyZWFkX3NlbGYiOiBfcHRocmVhZF9zZWxmLAogIl9hYm9ydCI6IF9h
Ym9ydCwKICJfZW1zY3JpcHRlbl9zZXRfbWFpbl9sb29wX3RpbWluZyI6IF9lbXNjcmlwdGVuX3Nl
dF9tYWluX2xvb3BfdGltaW5nLAogIl9fX3N5c2NhbGw2IjogX19fc3lzY2FsbDYsCiAiX3Nicmsi
OiBfc2JyaywKICJfdGltZSI6IF90aW1lLAogIl9fX3NldEVyck5vIjogX19fc2V0RXJyTm8sCiAi
X2Vtc2NyaXB0ZW5fbWVtY3B5X2JpZyI6IF9lbXNjcmlwdGVuX21lbWNweV9iaWcsCiAiX19fc3lz
Y2FsbDU0IjogX19fc3lzY2FsbDU0LAogIl9fX3VubG9jayI6IF9fX3VubG9jaywKICJfX19zeXNj
YWxsMTQwIjogX19fc3lzY2FsbDE0MCwKICJfcHRocmVhZF9jbGVhbnVwX3B1c2giOiBfcHRocmVh
ZF9jbGVhbnVwX3B1c2gsCiAiX3N5c2NvbmYiOiBfc3lzY29uZiwKICJfX19zeXNjYWxsMTQ2Ijog
X19fc3lzY2FsbDE0NiwKICJTVEFDS1RPUCI6IFNUQUNLVE9QLAogIlNUQUNLX01BWCI6IFNUQUNL
X01BWCwKICJ0ZW1wRG91YmxlUHRyIjogdGVtcERvdWJsZVB0ciwKICJBQk9SVCI6IEFCT1JULAog
ImN0dHpfaTgiOiBjdHR6X2k4Cn07Ci8vIEVNU0NSSVBURU5fU1RBUlRfQVNNCgp2YXIgYXNtID0g
KGZ1bmN0aW9uKGdsb2JhbCxlbnYsYnVmZmVyKSB7CgogICd1c2UgYXNtJzsKICAKICB2YXIgSW50
OFZpZXcgPSBnbG9iYWwuSW50OEFycmF5OwogIHZhciBJbnQxNlZpZXcgPSBnbG9iYWwuSW50MTZB
cnJheTsKICB2YXIgSW50MzJWaWV3ID0gZ2xvYmFsLkludDMyQXJyYXk7CiAgdmFyIFVpbnQ4Vmll
dyA9IGdsb2JhbC5VaW50OEFycmF5OwogIHZhciBVaW50MTZWaWV3ID0gZ2xvYmFsLlVpbnQxNkFy
cmF5OwogIHZhciBVaW50MzJWaWV3ID0gZ2xvYmFsLlVpbnQzMkFycmF5OwogIHZhciBGbG9hdDMy
VmlldyA9IGdsb2JhbC5GbG9hdDMyQXJyYXk7CiAgdmFyIEZsb2F0NjRWaWV3ID0gZ2xvYmFsLkZs
b2F0NjRBcnJheTsKICB2YXIgSEVBUDggPSBuZXcgSW50OFZpZXcoYnVmZmVyKTsKICB2YXIgSEVB
UDE2ID0gbmV3IEludDE2VmlldyhidWZmZXIpOwogIHZhciBIRUFQMzIgPSBuZXcgSW50MzJWaWV3
KGJ1ZmZlcik7CiAgdmFyIEhFQVBVOCA9IG5ldyBVaW50OFZpZXcoYnVmZmVyKTsKICB2YXIgSEVB
UFUxNiA9IG5ldyBVaW50MTZWaWV3KGJ1ZmZlcik7CiAgdmFyIEhFQVBVMzIgPSBuZXcgVWludDMy
VmlldyhidWZmZXIpOwogIHZhciBIRUFQRjMyID0gbmV3IEZsb2F0MzJWaWV3KGJ1ZmZlcik7CiAg
dmFyIEhFQVBGNjQgPSBuZXcgRmxvYXQ2NFZpZXcoYnVmZmVyKTsKICB2YXIgYnl0ZUxlbmd0aCA9
IGdsb2JhbC5ieXRlTGVuZ3RoOwoKCiAgdmFyIFNUQUNLVE9QPWVudi5TVEFDS1RPUHwwOwogIHZh
ciBTVEFDS19NQVg9ZW52LlNUQUNLX01BWHwwOwogIHZhciB0ZW1wRG91YmxlUHRyPWVudi50ZW1w
RG91YmxlUHRyfDA7CiAgdmFyIEFCT1JUPWVudi5BQk9SVHwwOwogIHZhciBjdHR6X2k4PWVudi5j
dHR6X2k4fDA7CgogIHZhciBfX1RIUkVXX18gPSAwOwogIHZhciB0aHJld1ZhbHVlID0gMDsKICB2
YXIgc2V0am1wSWQgPSAwOwogIHZhciB1bmRlZiA9IDA7CiAgdmFyIG5hbiA9IGdsb2JhbC5OYU4s
IGluZiA9IGdsb2JhbC5JbmZpbml0eTsKICB2YXIgdGVtcEludCA9IDAsIHRlbXBCaWdJbnQgPSAw
LCB0ZW1wQmlnSW50UCA9IDAsIHRlbXBCaWdJbnRTID0gMCwgdGVtcEJpZ0ludFIgPSAwLjAsIHRl
bXBCaWdJbnRJID0gMCwgdGVtcEJpZ0ludEQgPSAwLCB0ZW1wVmFsdWUgPSAwLCB0ZW1wRG91Ymxl
ID0gMC4wOwoKICB2YXIgdGVtcFJldDAgPSAwOwogIHZhciB0ZW1wUmV0MSA9IDA7CiAgdmFyIHRl
bXBSZXQyID0gMDsKICB2YXIgdGVtcFJldDMgPSAwOwogIHZhciB0ZW1wUmV0NCA9IDA7CiAgdmFy
IHRlbXBSZXQ1ID0gMDsKICB2YXIgdGVtcFJldDYgPSAwOwogIHZhciB0ZW1wUmV0NyA9IDA7CiAg
dmFyIHRlbXBSZXQ4ID0gMDsKICB2YXIgdGVtcFJldDkgPSAwOwogIHZhciBNYXRoX2Zsb29yPWds
b2JhbC5NYXRoLmZsb29yOwogIHZhciBNYXRoX2Ficz1nbG9iYWwuTWF0aC5hYnM7CiAgdmFyIE1h
dGhfc3FydD1nbG9iYWwuTWF0aC5zcXJ0OwogIHZhciBNYXRoX3Bvdz1nbG9iYWwuTWF0aC5wb3c7
CiAgdmFyIE1hdGhfY29zPWdsb2JhbC5NYXRoLmNvczsKICB2YXIgTWF0aF9zaW49Z2xvYmFsLk1h
dGguc2luOwogIHZhciBNYXRoX3Rhbj1nbG9iYWwuTWF0aC50YW47CiAgdmFyIE1hdGhfYWNvcz1n
bG9iYWwuTWF0aC5hY29zOwogIHZhciBNYXRoX2FzaW49Z2xvYmFsLk1hdGguYXNpbjsKICB2YXIg
TWF0aF9hdGFuPWdsb2JhbC5NYXRoLmF0YW47CiAgdmFyIE1hdGhfYXRhbjI9Z2xvYmFsLk1hdGgu
YXRhbjI7CiAgdmFyIE1hdGhfZXhwPWdsb2JhbC5NYXRoLmV4cDsKICB2YXIgTWF0aF9sb2c9Z2xv
YmFsLk1hdGgubG9nOwogIHZhciBNYXRoX2NlaWw9Z2xvYmFsLk1hdGguY2VpbDsKICB2YXIgTWF0
aF9pbXVsPWdsb2JhbC5NYXRoLmltdWw7CiAgdmFyIE1hdGhfbWluPWdsb2JhbC5NYXRoLm1pbjsK
ICB2YXIgTWF0aF9jbHozMj1nbG9iYWwuTWF0aC5jbHozMjsKICB2YXIgYWJvcnQ9ZW52LmFib3J0
OwogIHZhciBhc3NlcnQ9ZW52LmFzc2VydDsKICB2YXIgaW52b2tlX2lpPWVudi5pbnZva2VfaWk7
CiAgdmFyIGludm9rZV9paWlpPWVudi5pbnZva2VfaWlpaTsKICB2YXIgaW52b2tlX3ZpPWVudi5p
bnZva2Vfdmk7CiAgdmFyIF9wdGhyZWFkX2NsZWFudXBfcG9wPWVudi5fcHRocmVhZF9jbGVhbnVw
X3BvcDsKICB2YXIgX19fbG9jaz1lbnYuX19fbG9jazsKICB2YXIgX2Vtc2NyaXB0ZW5fc2V0X21h
aW5fbG9vcD1lbnYuX2Vtc2NyaXB0ZW5fc2V0X21haW5fbG9vcDsKICB2YXIgX3B0aHJlYWRfc2Vs
Zj1lbnYuX3B0aHJlYWRfc2VsZjsKICB2YXIgX2Fib3J0PWVudi5fYWJvcnQ7CiAgdmFyIF9lbXNj
cmlwdGVuX3NldF9tYWluX2xvb3BfdGltaW5nPWVudi5fZW1zY3JpcHRlbl9zZXRfbWFpbl9sb29w
X3RpbWluZzsKICB2YXIgX19fc3lzY2FsbDY9ZW52Ll9fX3N5c2NhbGw2OwogIHZhciBfc2Jyaz1l
bnYuX3Nicms7CiAgdmFyIF90aW1lPWVudi5fdGltZTsKICB2YXIgX19fc2V0RXJyTm89ZW52Ll9f
X3NldEVyck5vOwogIHZhciBfZW1zY3JpcHRlbl9tZW1jcHlfYmlnPWVudi5fZW1zY3JpcHRlbl9t
ZW1jcHlfYmlnOwogIHZhciBfX19zeXNjYWxsNTQ9ZW52Ll9fX3N5c2NhbGw1NDsKICB2YXIgX19f
dW5sb2NrPWVudi5fX191bmxvY2s7CiAgdmFyIF9fX3N5c2NhbGwxNDA9ZW52Ll9fX3N5c2NhbGwx
NDA7CiAgdmFyIF9wdGhyZWFkX2NsZWFudXBfcHVzaD1lbnYuX3B0aHJlYWRfY2xlYW51cF9wdXNo
OwogIHZhciBfc3lzY29uZj1lbnYuX3N5c2NvbmY7CiAgdmFyIF9fX3N5c2NhbGwxNDY9ZW52Ll9f
X3N5c2NhbGwxNDY7CiAgdmFyIHRlbXBGbG9hdCA9IDAuMDsKCmZ1bmN0aW9uIF9lbXNjcmlwdGVu
X3JlcGxhY2VfbWVtb3J5KG5ld0J1ZmZlcikgewogIGlmICgoYnl0ZUxlbmd0aChuZXdCdWZmZXIp
ICYgMHhmZmZmZmYgfHwgYnl0ZUxlbmd0aChuZXdCdWZmZXIpIDw9IDB4ZmZmZmZmKSB8fCBieXRl
TGVuZ3RoKG5ld0J1ZmZlcikgPiAweDgwMDAwMDAwKSByZXR1cm4gZmFsc2U7CiAgSEVBUDggPSBu
ZXcgSW50OFZpZXcobmV3QnVmZmVyKTsKICBIRUFQMTYgPSBuZXcgSW50MTZWaWV3KG5ld0J1ZmZl
cik7CiAgSEVBUDMyID0gbmV3IEludDMyVmlldyhuZXdCdWZmZXIpOwogIEhFQVBVOCA9IG5ldyBV
aW50OFZpZXcobmV3QnVmZmVyKTsKICBIRUFQVTE2ID0gbmV3IFVpbnQxNlZpZXcobmV3QnVmZmVy
KTsKICBIRUFQVTMyID0gbmV3IFVpbnQzMlZpZXcobmV3QnVmZmVyKTsKICBIRUFQRjMyID0gbmV3
IEZsb2F0MzJWaWV3KG5ld0J1ZmZlcik7CiAgSEVBUEY2NCA9IG5ldyBGbG9hdDY0VmlldyhuZXdC
dWZmZXIpOwogIGJ1ZmZlciA9IG5ld0J1ZmZlcjsKICByZXR1cm4gdHJ1ZTsKfQoKLy8gRU1TQ1JJ
UFRFTl9TVEFSVF9GVU5DUwoKZnVuY3Rpb24gX21hbGxvYyhpOSkgewogaTkgPSBpOSB8IDA7CiB2
YXIgaTEgPSAwLCBpMiA9IDAsIGkzID0gMCwgaTQgPSAwLCBpNSA9IDAsIGk2ID0gMCwgaTcgPSAw
LCBpOCA9IDAsIGkxMCA9IDAsIGkxMSA9IDAsIGkxMiA9IDAsIGkxMyA9IDAsIGkxNCA9IDAsIGkx
NSA9IDAsIGkxNiA9IDAsIGkxNyA9IDAsIGkxOCA9IDAsIGkxOSA9IDAsIGkyMCA9IDAsIGkyMSA9
IDAsIGkyMiA9IDAsIGkyMyA9IDAsIGkyNCA9IDAsIGkyNSA9IDAsIGkyNiA9IDAsIGkyNyA9IDAs
IGkyOCA9IDAsIGkyOSA9IDAsIGkzMCA9IDAsIGkzMSA9IDAsIGkzMiA9IDAsIGkzMyA9IDAsIGkz
NCA9IDAsIGkzNSA9IDAsIGkzNiA9IDAsIGkzNyA9IDAsIGkzOCA9IDAsIGkzOSA9IDAsIGk0MCA9
IDAsIGk0MSA9IDAsIGk0MiA9IDAsIGk0MyA9IDAsIGk0NCA9IDAsIGk0NSA9IDAsIGk0NiA9IDAs
IGk0NyA9IDA7CiBkbyBpZiAoaTkgPj4+IDAgPCAyNDUpIHsKICBpMTggPSBpOSA+Pj4gMCA8IDEx
ID8gMTYgOiBpOSArIDExICYgLTg7CiAgaTkgPSBpMTggPj4+IDM7CiAgaTEyID0gSEVBUDMyWzE1
XSB8IDA7CiAgaTggPSBpMTIgPj4+IGk5OwogIGlmIChpOCAmIDMpIHsKICAgaTMgPSAoaTggJiAx
IF4gMSkgKyBpOSB8IDA7CiAgIGkxID0gaTMgPDwgMTsKICAgaTIgPSAxMDAgKyAoaTEgPDwgMikg
fCAwOwogICBpMSA9IDEwMCArIChpMSArIDIgPDwgMikgfCAwOwogICBpNCA9IEhFQVAzMltpMSA+
PiAyXSB8IDA7CiAgIGk1ID0gaTQgKyA4IHwgMDsKICAgaTYgPSBIRUFQMzJbaTUgPj4gMl0gfCAw
OwogICBkbyBpZiAoKGkyIHwgMCkgPT0gKGk2IHwgMCkpIEhFQVAzMlsxNV0gPSBpMTIgJiB+KDEg
PDwgaTMpOyBlbHNlIHsKICAgIGlmIChpNiA+Pj4gMCA+PSAoSEVBUDMyWzE5XSB8IDApID4+PiAw
ID8gKGkxMSA9IGk2ICsgMTIgfCAwLCAoSEVBUDMyW2kxMSA+PiAyXSB8IDApID09IChpNCB8IDAp
KSA6IDApIHsKICAgICBIRUFQMzJbaTExID4+IDJdID0gaTI7CiAgICAgSEVBUDMyW2kxID4+IDJd
ID0gaTY7CiAgICAgYnJlYWs7CiAgICB9CiAgICBfYWJvcnQoKTsKICAgfSB3aGlsZSAoMCk7CiAg
IGk0NiA9IGkzIDw8IDM7CiAgIEhFQVAzMltpNCArIDQgPj4gMl0gPSBpNDYgfCAzOwogICBpNDYg
PSBpNCArIChpNDYgfCA0KSB8IDA7CiAgIEhFQVAzMltpNDYgPj4gMl0gPSBIRUFQMzJbaTQ2ID4+
IDJdIHwgMTsKICAgYnJlYWs7CiAgfQogIGkxID0gSEVBUDMyWzE3XSB8IDA7CiAgaWYgKGkxOCA+
Pj4gMCA+IGkxID4+PiAwKSB7CiAgIGlmIChpOCkgewogICAgaTQgPSAyIDw8IGk5OwogICAgaTQg
PSBpOCA8PCBpOSAmIChpNCB8IDAgLSBpNCk7CiAgICBpNCA9IChpNCAmIDAgLSBpNCkgKyAtMSB8
IDA7CiAgICBpNSA9IGk0ID4+PiAxMiAmIDE2OwogICAgaTQgPSBpNCA+Pj4gaTU7CiAgICBpMyA9
IGk0ID4+PiA1ICYgODsKICAgIGk0ID0gaTQgPj4+IGkzOwogICAgaTIgPSBpNCA+Pj4gMiAmIDQ7
CiAgICBpNCA9IGk0ID4+PiBpMjsKICAgIGk2ID0gaTQgPj4+IDEgJiAyOwogICAgaTQgPSBpNCA+
Pj4gaTY7CiAgICBpNyA9IGk0ID4+PiAxICYgMTsKICAgIGk3ID0gKGkzIHwgaTUgfCBpMiB8IGk2
IHwgaTcpICsgKGk0ID4+PiBpNykgfCAwOwogICAgaTQgPSBpNyA8PCAxOwogICAgaTYgPSAxMDAg
KyAoaTQgPDwgMikgfCAwOwogICAgaTQgPSAxMDAgKyAoaTQgKyAyIDw8IDIpIHwgMDsKICAgIGky
ID0gSEVBUDMyW2k0ID4+IDJdIHwgMDsKICAgIGk1ID0gaTIgKyA4IHwgMDsKICAgIGkzID0gSEVB
UDMyW2k1ID4+IDJdIHwgMDsKICAgIGRvIGlmICgoaTYgfCAwKSA9PSAoaTMgfCAwKSkgewogICAg
IEhFQVAzMlsxNV0gPSBpMTIgJiB+KDEgPDwgaTcpOwogICAgIGkxMyA9IGkxOwogICAgfSBlbHNl
IHsKICAgICBpZiAoaTMgPj4+IDAgPj0gKEhFQVAzMlsxOV0gfCAwKSA+Pj4gMCA/IChpMTAgPSBp
MyArIDEyIHwgMCwgKEhFQVAzMltpMTAgPj4gMl0gfCAwKSA9PSAoaTIgfCAwKSkgOiAwKSB7CiAg
ICAgIEhFQVAzMltpMTAgPj4gMl0gPSBpNjsKICAgICAgSEVBUDMyW2k0ID4+IDJdID0gaTM7CiAg
ICAgIGkxMyA9IEhFQVAzMlsxN10gfCAwOwogICAgICBicmVhazsKICAgICB9CiAgICAgX2Fib3J0
KCk7CiAgICB9IHdoaWxlICgwKTsKICAgIGk0NiA9IGk3IDw8IDM7CiAgICBpMSA9IGk0NiAtIGkx
OCB8IDA7CiAgICBIRUFQMzJbaTIgKyA0ID4+IDJdID0gaTE4IHwgMzsKICAgIGk4ID0gaTIgKyBp
MTggfCAwOwogICAgSEVBUDMyW2kyICsgKGkxOCB8IDQpID4+IDJdID0gaTEgfCAxOwogICAgSEVB
UDMyW2kyICsgaTQ2ID4+IDJdID0gaTE7CiAgICBpZiAoaTEzKSB7CiAgICAgaTIgPSBIRUFQMzJb
MjBdIHwgMDsKICAgICBpMyA9IGkxMyA+Pj4gMzsKICAgICBpNiA9IGkzIDw8IDE7CiAgICAgaTcg
PSAxMDAgKyAoaTYgPDwgMikgfCAwOwogICAgIGk0ID0gSEVBUDMyWzE1XSB8IDA7CiAgICAgaTMg
PSAxIDw8IGkzOwogICAgIGlmIChpNCAmIGkzKSB7CiAgICAgIGk0ID0gMTAwICsgKGk2ICsgMiA8
PCAyKSB8IDA7CiAgICAgIGk2ID0gSEVBUDMyW2k0ID4+IDJdIHwgMDsKICAgICAgaWYgKGk2ID4+
PiAwIDwgKEhFQVAzMlsxOV0gfCAwKSA+Pj4gMCkgX2Fib3J0KCk7IGVsc2UgewogICAgICAgaTE1
ID0gaTQ7CiAgICAgICBpMTYgPSBpNjsKICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgIEhFQVAz
MlsxNV0gPSBpNCB8IGkzOwogICAgICBpMTUgPSAxMDAgKyAoaTYgKyAyIDw8IDIpIHwgMDsKICAg
ICAgaTE2ID0gaTc7CiAgICAgfQogICAgIEhFQVAzMltpMTUgPj4gMl0gPSBpMjsKICAgICBIRUFQ
MzJbaTE2ICsgMTIgPj4gMl0gPSBpMjsKICAgICBIRUFQMzJbaTIgKyA4ID4+IDJdID0gaTE2Owog
ICAgIEhFQVAzMltpMiArIDEyID4+IDJdID0gaTc7CiAgICB9CiAgICBIRUFQMzJbMTddID0gaTE7
CiAgICBIRUFQMzJbMjBdID0gaTg7CiAgICBicmVhazsKICAgfQogICBpOSA9IEhFQVAzMlsxNl0g
fCAwOwogICBpZiAoaTkpIHsKICAgIGk0ID0gKGk5ICYgMCAtIGk5KSArIC0xIHwgMDsKICAgIGk0
NSA9IGk0ID4+PiAxMiAmIDE2OwogICAgaTQgPSBpNCA+Pj4gaTQ1OwogICAgaTQ0ID0gaTQgPj4+
IDUgJiA4OwogICAgaTQgPSBpNCA+Pj4gaTQ0OwogICAgaTQ2ID0gaTQgPj4+IDIgJiA0OwogICAg
aTQgPSBpNCA+Pj4gaTQ2OwogICAgaTYgPSBpNCA+Pj4gMSAmIDI7CiAgICBpNCA9IGk0ID4+PiBp
NjsKICAgIGk4ID0gaTQgPj4+IDEgJiAxOwogICAgaTggPSBIRUFQMzJbMzY0ICsgKChpNDQgfCBp
NDUgfCBpNDYgfCBpNiB8IGk4KSArIChpNCA+Pj4gaTgpIDw8IDIpID4+IDJdIHwgMDsKICAgIGk0
ID0gKEhFQVAzMltpOCArIDQgPj4gMl0gJiAtOCkgLSBpMTggfCAwOwogICAgaTYgPSBpODsKICAg
IHdoaWxlICgxKSB7CiAgICAgaTcgPSBIRUFQMzJbaTYgKyAxNiA+PiAyXSB8IDA7CiAgICAgaWYg
KCFpNykgewogICAgICBpNyA9IEhFQVAzMltpNiArIDIwID4+IDJdIHwgMDsKICAgICAgaWYgKCFp
NykgewogICAgICAgaTEgPSBpNDsKICAgICAgIGJyZWFrOwogICAgICB9CiAgICAgfQogICAgIGk2
ID0gKEhFQVAzMltpNyArIDQgPj4gMl0gJiAtOCkgLSBpMTggfCAwOwogICAgIGk0NiA9IGk2ID4+
PiAwIDwgaTQgPj4+IDA7CiAgICAgaTQgPSBpNDYgPyBpNiA6IGk0OwogICAgIGk2ID0gaTc7CiAg
ICAgaTggPSBpNDYgPyBpNyA6IGk4OwogICAgfQogICAgaTkgPSBIRUFQMzJbMTldIHwgMDsKICAg
IGlmIChpOCA+Pj4gMCA+PSBpOSA+Pj4gMCA/IChpMjEgPSBpOCArIGkxOCB8IDAsIGk4ID4+PiAw
IDwgaTIxID4+PiAwKSA6IDApIHsKICAgICBpMyA9IEhFQVAzMltpOCArIDI0ID4+IDJdIHwgMDsK
ICAgICBpNyA9IEhFQVAzMltpOCArIDEyID4+IDJdIHwgMDsKICAgICBkbyBpZiAoKGk3IHwgMCkg
PT0gKGk4IHwgMCkpIHsKICAgICAgaTYgPSBpOCArIDIwIHwgMDsKICAgICAgaTcgPSBIRUFQMzJb
aTYgPj4gMl0gfCAwOwogICAgICBpZiAoIWk3KSB7CiAgICAgICBpNiA9IGk4ICsgMTYgfCAwOwog
ICAgICAgaTcgPSBIRUFQMzJbaTYgPj4gMl0gfCAwOwogICAgICAgaWYgKCFpNykgewogICAgICAg
IGkxOSA9IDA7CiAgICAgICAgYnJlYWs7CiAgICAgICB9CiAgICAgIH0KICAgICAgd2hpbGUgKDEp
IHsKICAgICAgIGk1ID0gaTcgKyAyMCB8IDA7CiAgICAgICBpNCA9IEhFQVAzMltpNSA+PiAyXSB8
IDA7CiAgICAgICBpZiAoaTQpIHsKICAgICAgICBpNyA9IGk0OwogICAgICAgIGk2ID0gaTU7CiAg
ICAgICAgY29udGludWU7CiAgICAgICB9CiAgICAgICBpNSA9IGk3ICsgMTYgfCAwOwogICAgICAg
aTQgPSBIRUFQMzJbaTUgPj4gMl0gfCAwOwogICAgICAgaWYgKCFpNCkgYnJlYWs7IGVsc2Ugewog
ICAgICAgIGk3ID0gaTQ7CiAgICAgICAgaTYgPSBpNTsKICAgICAgIH0KICAgICAgfQogICAgICBp
ZiAoaTYgPj4+IDAgPCBpOSA+Pj4gMCkgX2Fib3J0KCk7IGVsc2UgewogICAgICAgSEVBUDMyW2k2
ID4+IDJdID0gMDsKICAgICAgIGkxOSA9IGk3OwogICAgICAgYnJlYWs7CiAgICAgIH0KICAgICB9
IGVsc2UgewogICAgICBpNiA9IEhFQVAzMltpOCArIDggPj4gMl0gfCAwOwogICAgICBpZiAoKGk2
ID4+PiAwID49IGk5ID4+PiAwID8gKGkyID0gaTYgKyAxMiB8IDAsIChIRUFQMzJbaTIgPj4gMl0g
fCAwKSA9PSAoaTggfCAwKSkgOiAwKSA/IChpMTQgPSBpNyArIDggfCAwLCAoSEVBUDMyW2kxNCA+
PiAyXSB8IDApID09IChpOCB8IDApKSA6IDApIHsKICAgICAgIEhFQVAzMltpMiA+PiAyXSA9IGk3
OwogICAgICAgSEVBUDMyW2kxNCA+PiAyXSA9IGk2OwogICAgICAgaTE5ID0gaTc7CiAgICAgICBi
cmVhazsKICAgICAgfQogICAgICBfYWJvcnQoKTsKICAgICB9IHdoaWxlICgwKTsKICAgICBkbyBp
ZiAoaTMpIHsKICAgICAgaTYgPSBIRUFQMzJbaTggKyAyOCA+PiAyXSB8IDA7CiAgICAgIGk1ID0g
MzY0ICsgKGk2IDw8IDIpIHwgMDsKICAgICAgaWYgKChpOCB8IDApID09IChIRUFQMzJbaTUgPj4g
Ml0gfCAwKSkgewogICAgICAgSEVBUDMyW2k1ID4+IDJdID0gaTE5OwogICAgICAgaWYgKCFpMTkp
IHsKICAgICAgICBIRUFQMzJbMTZdID0gSEVBUDMyWzE2XSAmIH4oMSA8PCBpNik7CiAgICAgICAg
YnJlYWs7CiAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICBpZiAoaTMgPj4+IDAgPCAoSEVB
UDMyWzE5XSB8IDApID4+PiAwKSBfYWJvcnQoKTsKICAgICAgIGk2ID0gaTMgKyAxNiB8IDA7CiAg
ICAgICBpZiAoKEhFQVAzMltpNiA+PiAyXSB8IDApID09IChpOCB8IDApKSBIRUFQMzJbaTYgPj4g
Ml0gPSBpMTk7IGVsc2UgSEVBUDMyW2kzICsgMjAgPj4gMl0gPSBpMTk7CiAgICAgICBpZiAoIWkx
OSkgYnJlYWs7CiAgICAgIH0KICAgICAgaTUgPSBIRUFQMzJbMTldIHwgMDsKICAgICAgaWYgKGkx
OSA+Pj4gMCA8IGk1ID4+PiAwKSBfYWJvcnQoKTsKICAgICAgSEVBUDMyW2kxOSArIDI0ID4+IDJd
ID0gaTM7CiAgICAgIGk2ID0gSEVBUDMyW2k4ICsgMTYgPj4gMl0gfCAwOwogICAgICBkbyBpZiAo
aTYpIGlmIChpNiA+Pj4gMCA8IGk1ID4+PiAwKSBfYWJvcnQoKTsgZWxzZSB7CiAgICAgICBIRUFQ
MzJbaTE5ICsgMTYgPj4gMl0gPSBpNjsKICAgICAgIEhFQVAzMltpNiArIDI0ID4+IDJdID0gaTE5
OwogICAgICAgYnJlYWs7CiAgICAgIH0gd2hpbGUgKDApOwogICAgICBpNiA9IEhFQVAzMltpOCAr
IDIwID4+IDJdIHwgMDsKICAgICAgaWYgKGk2KSBpZiAoaTYgPj4+IDAgPCAoSEVBUDMyWzE5XSB8
IDApID4+PiAwKSBfYWJvcnQoKTsgZWxzZSB7CiAgICAgICBIRUFQMzJbaTE5ICsgMjAgPj4gMl0g
PSBpNjsKICAgICAgIEhFQVAzMltpNiArIDI0ID4+IDJdID0gaTE5OwogICAgICAgYnJlYWs7CiAg
ICAgIH0KICAgICB9IHdoaWxlICgwKTsKICAgICBpZiAoaTEgPj4+IDAgPCAxNikgewogICAgICBp
NDYgPSBpMSArIGkxOCB8IDA7CiAgICAgIEhFQVAzMltpOCArIDQgPj4gMl0gPSBpNDYgfCAzOwog
ICAgICBpNDYgPSBpOCArIChpNDYgKyA0KSB8IDA7CiAgICAgIEhFQVAzMltpNDYgPj4gMl0gPSBI
RUFQMzJbaTQ2ID4+IDJdIHwgMTsKICAgICB9IGVsc2UgewogICAgICBIRUFQMzJbaTggKyA0ID4+
IDJdID0gaTE4IHwgMzsKICAgICAgSEVBUDMyW2k4ICsgKGkxOCB8IDQpID4+IDJdID0gaTEgfCAx
OwogICAgICBIRUFQMzJbaTggKyAoaTEgKyBpMTgpID4+IDJdID0gaTE7CiAgICAgIGkzID0gSEVB
UDMyWzE3XSB8IDA7CiAgICAgIGlmIChpMykgewogICAgICAgaTIgPSBIRUFQMzJbMjBdIHwgMDsK
ICAgICAgIGk0ID0gaTMgPj4+IDM7CiAgICAgICBpNiA9IGk0IDw8IDE7CiAgICAgICBpNyA9IDEw
MCArIChpNiA8PCAyKSB8IDA7CiAgICAgICBpNSA9IEhFQVAzMlsxNV0gfCAwOwogICAgICAgaTQg
PSAxIDw8IGk0OwogICAgICAgaWYgKGk1ICYgaTQpIHsKICAgICAgICBpNiA9IDEwMCArIChpNiAr
IDIgPDwgMikgfCAwOwogICAgICAgIGk1ID0gSEVBUDMyW2k2ID4+IDJdIHwgMDsKICAgICAgICBp
ZiAoaTUgPj4+IDAgPCAoSEVBUDMyWzE5XSB8IDApID4+PiAwKSBfYWJvcnQoKTsgZWxzZSB7CiAg
ICAgICAgIGkyMCA9IGk2OwogICAgICAgICBpMjIgPSBpNTsKICAgICAgICB9CiAgICAgICB9IGVs
c2UgewogICAgICAgIEhFQVAzMlsxNV0gPSBpNSB8IGk0OwogICAgICAgIGkyMCA9IDEwMCArIChp
NiArIDIgPDwgMikgfCAwOwogICAgICAgIGkyMiA9IGk3OwogICAgICAgfQogICAgICAgSEVBUDMy
W2kyMCA+PiAyXSA9IGkyOwogICAgICAgSEVBUDMyW2kyMiArIDEyID4+IDJdID0gaTI7CiAgICAg
ICBIRUFQMzJbaTIgKyA4ID4+IDJdID0gaTIyOwogICAgICAgSEVBUDMyW2kyICsgMTIgPj4gMl0g
PSBpNzsKICAgICAgfQogICAgICBIRUFQMzJbMTddID0gaTE7CiAgICAgIEhFQVAzMlsyMF0gPSBp
MjE7CiAgICAgfQogICAgIGk1ID0gaTggKyA4IHwgMDsKICAgICBicmVhazsKICAgIH0KICAgIF9h
Ym9ydCgpOwogICB9IGVsc2UgaTQ3ID0gMTU0OwogIH0gZWxzZSBpNDcgPSAxNTQ7CiB9IGVsc2Ug
aWYgKGk5ID4+PiAwIDw9IDQyOTQ5NjcyMzEpIHsKICBpOSA9IGk5ICsgMTEgfCAwOwogIGkxMyA9
IGk5ICYgLTg7CiAgaTEyID0gSEVBUDMyWzE2XSB8IDA7CiAgaWYgKGkxMikgewogICBpOCA9IDAg
LSBpMTMgfCAwOwogICBpOSA9IGk5ID4+PiA4OwogICBpZiAoaTkpIGlmIChpMTMgPj4+IDAgPiAx
Njc3NzIxNSkgaTExID0gMzE7IGVsc2UgewogICAgaTcgPSAoaTkgKyAxMDQ4MzIwIHwgMCkgPj4+
IDE2ICYgODsKICAgIGkxMCA9IGk5IDw8IGk3OwogICAgaTkgPSAoaTEwICsgNTIwMTkyIHwgMCkg
Pj4+IDE2ICYgNDsKICAgIGkxMCA9IGkxMCA8PCBpOTsKICAgIGkxMSA9IChpMTAgKyAyNDU3NjAg
fCAwKSA+Pj4gMTYgJiAyOwogICAgaTExID0gMTQgLSAoaTkgfCBpNyB8IGkxMSkgKyAoaTEwIDw8
IGkxMSA+Pj4gMTUpIHwgMDsKICAgIGkxMSA9IGkxMyA+Pj4gKGkxMSArIDcgfCAwKSAmIDEgfCBp
MTEgPDwgMTsKICAgfSBlbHNlIGkxMSA9IDA7CiAgIGk5ID0gSEVBUDMyWzM2NCArIChpMTEgPDwg
MikgPj4gMl0gfCAwOwogICBMMTEwIDogZG8gaWYgKCFpOSkgewogICAgaTcgPSAwOwogICAgaTkg
PSAwOwogICAgaTQ3ID0gODY7CiAgIH0gZWxzZSB7CiAgICBpMiA9IGk4OwogICAgaTcgPSAwOwog
ICAgaTEgPSBpMTMgPDwgKChpMTEgfCAwKSA9PSAzMSA/IDAgOiAyNSAtIChpMTEgPj4+IDEpIHwg
MCk7CiAgICBpMTAgPSBpOTsKICAgIGk5ID0gMDsKICAgIHdoaWxlICgxKSB7CiAgICAgaTMgPSBI
RUFQMzJbaTEwICsgNCA+PiAyXSAmIC04OwogICAgIGk4ID0gaTMgLSBpMTMgfCAwOwogICAgIGlm
IChpOCA+Pj4gMCA8IGkyID4+PiAwKSBpZiAoKGkzIHwgMCkgPT0gKGkxMyB8IDApKSB7CiAgICAg
IGkzID0gaTEwOwogICAgICBpOSA9IGkxMDsKICAgICAgaTQ3ID0gOTA7CiAgICAgIGJyZWFrIEwx
MTA7CiAgICAgfSBlbHNlIGk5ID0gaTEwOyBlbHNlIGk4ID0gaTI7CiAgICAgaTMgPSBIRUFQMzJb
aTEwICsgMjAgPj4gMl0gfCAwOwogICAgIGkxMCA9IEhFQVAzMltpMTAgKyAxNiArIChpMSA+Pj4g
MzEgPDwgMikgPj4gMl0gfCAwOwogICAgIGk3ID0gKGkzIHwgMCkgPT0gMCB8IChpMyB8IDApID09
IChpMTAgfCAwKSA/IGk3IDogaTM7CiAgICAgaWYgKCFpMTApIHsKICAgICAgaTQ3ID0gODY7CiAg
ICAgIGJyZWFrOwogICAgIH0gZWxzZSB7CiAgICAgIGkyID0gaTg7CiAgICAgIGkxID0gaTEgPDwg
MTsKICAgICB9CiAgICB9CiAgIH0gd2hpbGUgKDApOwogICBpZiAoKGk0NyB8IDApID09IDg2KSB7
CiAgICBpZiAoKGk3IHwgMCkgPT0gMCAmIChpOSB8IDApID09IDApIHsKICAgICBpOSA9IDIgPDwg
aTExOwogICAgIGk5ID0gaTEyICYgKGk5IHwgMCAtIGk5KTsKICAgICBpZiAoIWk5KSB7CiAgICAg
IGkxOCA9IGkxMzsKICAgICAgaTQ3ID0gMTU0OwogICAgICBicmVhazsKICAgICB9CiAgICAgaTkg
PSAoaTkgJiAwIC0gaTkpICsgLTEgfCAwOwogICAgIGkyID0gaTkgPj4+IDEyICYgMTY7CiAgICAg
aTkgPSBpOSA+Pj4gaTI7CiAgICAgaTEgPSBpOSA+Pj4gNSAmIDg7CiAgICAgaTkgPSBpOSA+Pj4g
aTE7CiAgICAgaTMgPSBpOSA+Pj4gMiAmIDQ7CiAgICAgaTkgPSBpOSA+Pj4gaTM7CiAgICAgaTEw
ID0gaTkgPj4+IDEgJiAyOwogICAgIGk5ID0gaTkgPj4+IGkxMDsKICAgICBpNyA9IGk5ID4+PiAx
ICYgMTsKICAgICBpNyA9IEhFQVAzMlszNjQgKyAoKGkxIHwgaTIgfCBpMyB8IGkxMCB8IGk3KSAr
IChpOSA+Pj4gaTcpIDw8IDIpID4+IDJdIHwgMDsKICAgICBpOSA9IDA7CiAgICB9CiAgICBpZiAo
IWk3KSB7CiAgICAgaTE2ID0gaTg7CiAgICAgaTE1ID0gaTk7CiAgICB9IGVsc2UgewogICAgIGkz
ID0gaTc7CiAgICAgaTQ3ID0gOTA7CiAgICB9CiAgIH0KICAgaWYgKChpNDcgfCAwKSA9PSA5MCkg
d2hpbGUgKDEpIHsKICAgIGk0NyA9IDA7CiAgICBpMTAgPSAoSEVBUDMyW2kzICsgNCA+PiAyXSAm
IC04KSAtIGkxMyB8IDA7CiAgICBpNyA9IGkxMCA+Pj4gMCA8IGk4ID4+PiAwOwogICAgaTggPSBp
NyA/IGkxMCA6IGk4OwogICAgaTkgPSBpNyA/IGkzIDogaTk7CiAgICBpNyA9IEhFQVAzMltpMyAr
IDE2ID4+IDJdIHwgMDsKICAgIGlmIChpNykgewogICAgIGkzID0gaTc7CiAgICAgaTQ3ID0gOTA7
CiAgICAgY29udGludWU7CiAgICB9CiAgICBpMyA9IEhFQVAzMltpMyArIDIwID4+IDJdIHwgMDsK
ICAgIGlmICghaTMpIHsKICAgICBpMTYgPSBpODsKICAgICBpMTUgPSBpOTsKICAgICBicmVhazsK
ICAgIH0gZWxzZSBpNDcgPSA5MDsKICAgfQogICBpZiAoKGkxNSB8IDApICE9IDAgPyBpMTYgPj4+
IDAgPCAoKEhFQVAzMlsxN10gfCAwKSAtIGkxMyB8IDApID4+PiAwIDogMCkgewogICAgaTkgPSBI
RUFQMzJbMTldIHwgMDsKICAgIGlmIChpMTUgPj4+IDAgPj0gaTkgPj4+IDAgPyAoaTMzID0gaTE1
ICsgaTEzIHwgMCwgaTE1ID4+PiAwIDwgaTMzID4+PiAwKSA6IDApIHsKICAgICBpOCA9IEhFQVAz
MltpMTUgKyAyNCA+PiAyXSB8IDA7CiAgICAgaTcgPSBIRUFQMzJbaTE1ICsgMTIgPj4gMl0gfCAw
OwogICAgIGRvIGlmICgoaTcgfCAwKSA9PSAoaTE1IHwgMCkpIHsKICAgICAgaTYgPSBpMTUgKyAy
MCB8IDA7CiAgICAgIGk3ID0gSEVBUDMyW2k2ID4+IDJdIHwgMDsKICAgICAgaWYgKCFpNykgewog
ICAgICAgaTYgPSBpMTUgKyAxNiB8IDA7CiAgICAgICBpNyA9IEhFQVAzMltpNiA+PiAyXSB8IDA7
CiAgICAgICBpZiAoIWk3KSB7CiAgICAgICAgaTI0ID0gMDsKICAgICAgICBicmVhazsKICAgICAg
IH0KICAgICAgfQogICAgICB3aGlsZSAoMSkgewogICAgICAgaTUgPSBpNyArIDIwIHwgMDsKICAg
ICAgIGk0ID0gSEVBUDMyW2k1ID4+IDJdIHwgMDsKICAgICAgIGlmIChpNCkgewogICAgICAgIGk3
ID0gaTQ7CiAgICAgICAgaTYgPSBpNTsKICAgICAgICBjb250aW51ZTsKICAgICAgIH0KICAgICAg
IGk1ID0gaTcgKyAxNiB8IDA7CiAgICAgICBpNCA9IEhFQVAzMltpNSA+PiAyXSB8IDA7CiAgICAg
ICBpZiAoIWk0KSBicmVhazsgZWxzZSB7CiAgICAgICAgaTcgPSBpNDsKICAgICAgICBpNiA9IGk1
OwogICAgICAgfQogICAgICB9CiAgICAgIGlmIChpNiA+Pj4gMCA8IGk5ID4+PiAwKSBfYWJvcnQo
KTsgZWxzZSB7CiAgICAgICBIRUFQMzJbaTYgPj4gMl0gPSAwOwogICAgICAgaTI0ID0gaTc7CiAg
ICAgICBicmVhazsKICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgIGk2ID0gSEVBUDMyW2kxNSAr
IDggPj4gMl0gfCAwOwogICAgICBpZiAoKGk2ID4+PiAwID49IGk5ID4+PiAwID8gKGkxNyA9IGk2
ICsgMTIgfCAwLCAoSEVBUDMyW2kxNyA+PiAyXSB8IDApID09IChpMTUgfCAwKSkgOiAwKSA/IChp
MTggPSBpNyArIDggfCAwLCAoSEVBUDMyW2kxOCA+PiAyXSB8IDApID09IChpMTUgfCAwKSkgOiAw
KSB7CiAgICAgICBIRUFQMzJbaTE3ID4+IDJdID0gaTc7CiAgICAgICBIRUFQMzJbaTE4ID4+IDJd
ID0gaTY7CiAgICAgICBpMjQgPSBpNzsKICAgICAgIGJyZWFrOwogICAgICB9CiAgICAgIF9hYm9y
dCgpOwogICAgIH0gd2hpbGUgKDApOwogICAgIGRvIGlmIChpOCkgewogICAgICBpNyA9IEhFQVAz
MltpMTUgKyAyOCA+PiAyXSB8IDA7CiAgICAgIGk2ID0gMzY0ICsgKGk3IDw8IDIpIHwgMDsKICAg
ICAgaWYgKChpMTUgfCAwKSA9PSAoSEVBUDMyW2k2ID4+IDJdIHwgMCkpIHsKICAgICAgIEhFQVAz
MltpNiA+PiAyXSA9IGkyNDsKICAgICAgIGlmICghaTI0KSB7CiAgICAgICAgSEVBUDMyWzE2XSA9
IEhFQVAzMlsxNl0gJiB+KDEgPDwgaTcpOwogICAgICAgIGJyZWFrOwogICAgICAgfQogICAgICB9
IGVsc2UgewogICAgICAgaWYgKGk4ID4+PiAwIDwgKEhFQVAzMlsxOV0gfCAwKSA+Pj4gMCkgX2Fi
b3J0KCk7CiAgICAgICBpNiA9IGk4ICsgMTYgfCAwOwogICAgICAgaWYgKChIRUFQMzJbaTYgPj4g
Ml0gfCAwKSA9PSAoaTE1IHwgMCkpIEhFQVAzMltpNiA+PiAyXSA9IGkyNDsgZWxzZSBIRUFQMzJb
aTggKyAyMCA+PiAyXSA9IGkyNDsKICAgICAgIGlmICghaTI0KSBicmVhazsKICAgICAgfQogICAg
ICBpNyA9IEhFQVAzMlsxOV0gfCAwOwogICAgICBpZiAoaTI0ID4+PiAwIDwgaTcgPj4+IDApIF9h
Ym9ydCgpOwogICAgICBIRUFQMzJbaTI0ICsgMjQgPj4gMl0gPSBpODsKICAgICAgaTYgPSBIRUFQ
MzJbaTE1ICsgMTYgPj4gMl0gfCAwOwogICAgICBkbyBpZiAoaTYpIGlmIChpNiA+Pj4gMCA8IGk3
ID4+PiAwKSBfYWJvcnQoKTsgZWxzZSB7CiAgICAgICBIRUFQMzJbaTI0ICsgMTYgPj4gMl0gPSBp
NjsKICAgICAgIEhFQVAzMltpNiArIDI0ID4+IDJdID0gaTI0OwogICAgICAgYnJlYWs7CiAgICAg
IH0gd2hpbGUgKDApOwogICAgICBpNiA9IEhFQVAzMltpMTUgKyAyMCA+PiAyXSB8IDA7CiAgICAg
IGlmIChpNikgaWYgKGk2ID4+PiAwIDwgKEhFQVAzMlsxOV0gfCAwKSA+Pj4gMCkgX2Fib3J0KCk7
IGVsc2UgewogICAgICAgSEVBUDMyW2kyNCArIDIwID4+IDJdID0gaTY7CiAgICAgICBIRUFQMzJb
aTYgKyAyNCA+PiAyXSA9IGkyNDsKICAgICAgIGJyZWFrOwogICAgICB9CiAgICAgfSB3aGlsZSAo
MCk7CiAgICAgTDE3OSA6IGRvIGlmIChpMTYgPj4+IDAgPj0gMTYpIHsKICAgICAgSEVBUDMyW2kx
NSArIDQgPj4gMl0gPSBpMTMgfCAzOwogICAgICBIRUFQMzJbaTE1ICsgKGkxMyB8IDQpID4+IDJd
ID0gaTE2IHwgMTsKICAgICAgSEVBUDMyW2kxNSArIChpMTYgKyBpMTMpID4+IDJdID0gaTE2Owog
ICAgICBpNyA9IGkxNiA+Pj4gMzsKICAgICAgaWYgKGkxNiA+Pj4gMCA8IDI1NikgewogICAgICAg
aTUgPSBpNyA8PCAxOwogICAgICAgaTMgPSAxMDAgKyAoaTUgPDwgMikgfCAwOwogICAgICAgaTQg
PSBIRUFQMzJbMTVdIHwgMDsKICAgICAgIGk2ID0gMSA8PCBpNzsKICAgICAgIGlmIChpNCAmIGk2
KSB7CiAgICAgICAgaTYgPSAxMDAgKyAoaTUgKyAyIDw8IDIpIHwgMDsKICAgICAgICBpNSA9IEhF
QVAzMltpNiA+PiAyXSB8IDA7CiAgICAgICAgaWYgKGk1ID4+PiAwIDwgKEhFQVAzMlsxOV0gfCAw
KSA+Pj4gMCkgX2Fib3J0KCk7IGVsc2UgewogICAgICAgICBpMjUgPSBpNjsKICAgICAgICAgaTI2
ID0gaTU7CiAgICAgICAgfQogICAgICAgfSBlbHNlIHsKICAgICAgICBIRUFQMzJbMTVdID0gaTQg
fCBpNjsKICAgICAgICBpMjUgPSAxMDAgKyAoaTUgKyAyIDw8IDIpIHwgMDsKICAgICAgICBpMjYg
PSBpMzsKICAgICAgIH0KICAgICAgIEhFQVAzMltpMjUgPj4gMl0gPSBpMzM7CiAgICAgICBIRUFQ
MzJbaTI2ICsgMTIgPj4gMl0gPSBpMzM7CiAgICAgICBIRUFQMzJbaTE1ICsgKGkxMyArIDgpID4+
IDJdID0gaTI2OwogICAgICAgSEVBUDMyW2kxNSArIChpMTMgKyAxMikgPj4gMl0gPSBpMzsKICAg
ICAgIGJyZWFrOwogICAgICB9CiAgICAgIGkyID0gaTE2ID4+PiA4OwogICAgICBpZiAoaTIpIGlm
IChpMTYgPj4+IDAgPiAxNjc3NzIxNSkgaTcgPSAzMTsgZWxzZSB7CiAgICAgICBpNDUgPSAoaTIg
KyAxMDQ4MzIwIHwgMCkgPj4+IDE2ICYgODsKICAgICAgIGk0NiA9IGkyIDw8IGk0NTsKICAgICAg
IGk0NCA9IChpNDYgKyA1MjAxOTIgfCAwKSA+Pj4gMTYgJiA0OwogICAgICAgaTQ2ID0gaTQ2IDw8
IGk0NDsKICAgICAgIGk3ID0gKGk0NiArIDI0NTc2MCB8IDApID4+PiAxNiAmIDI7CiAgICAgICBp
NyA9IDE0IC0gKGk0NCB8IGk0NSB8IGk3KSArIChpNDYgPDwgaTcgPj4+IDE1KSB8IDA7CiAgICAg
ICBpNyA9IGkxNiA+Pj4gKGk3ICsgNyB8IDApICYgMSB8IGk3IDw8IDE7CiAgICAgIH0gZWxzZSBp
NyA9IDA7CiAgICAgIGk2ID0gMzY0ICsgKGk3IDw8IDIpIHwgMDsKICAgICAgSEVBUDMyW2kxNSAr
IChpMTMgKyAyOCkgPj4gMl0gPSBpNzsKICAgICAgSEVBUDMyW2kxNSArIChpMTMgKyAyMCkgPj4g
Ml0gPSAwOwogICAgICBIRUFQMzJbaTE1ICsgKGkxMyArIDE2KSA+PiAyXSA9IDA7CiAgICAgIGk1
ID0gSEVBUDMyWzE2XSB8IDA7CiAgICAgIGk0ID0gMSA8PCBpNzsKICAgICAgaWYgKCEoaTUgJiBp
NCkpIHsKICAgICAgIEhFQVAzMlsxNl0gPSBpNSB8IGk0OwogICAgICAgSEVBUDMyW2k2ID4+IDJd
ID0gaTMzOwogICAgICAgSEVBUDMyW2kxNSArIChpMTMgKyAyNCkgPj4gMl0gPSBpNjsKICAgICAg
IEhFQVAzMltpMTUgKyAoaTEzICsgMTIpID4+IDJdID0gaTMzOwogICAgICAgSEVBUDMyW2kxNSAr
IChpMTMgKyA4KSA+PiAyXSA9IGkzMzsKICAgICAgIGJyZWFrOwogICAgICB9CiAgICAgIGkyID0g
SEVBUDMyW2k2ID4+IDJdIHwgMDsKICAgICAgTDE5NyA6IGRvIGlmICgoSEVBUDMyW2kyICsgNCA+
PiAyXSAmIC04IHwgMCkgIT0gKGkxNiB8IDApKSB7CiAgICAgICBpNyA9IGkxNiA8PCAoKGk3IHwg
MCkgPT0gMzEgPyAwIDogMjUgLSAoaTcgPj4+IDEpIHwgMCk7CiAgICAgICB3aGlsZSAoMSkgewog
ICAgICAgIGkxID0gaTIgKyAxNiArIChpNyA+Pj4gMzEgPDwgMikgfCAwOwogICAgICAgIGk2ID0g
SEVBUDMyW2kxID4+IDJdIHwgMDsKICAgICAgICBpZiAoIWk2KSBicmVhazsKICAgICAgICBpZiAo
KEhFQVAzMltpNiArIDQgPj4gMl0gJiAtOCB8IDApID09IChpMTYgfCAwKSkgewogICAgICAgICBp
MjggPSBpNjsKICAgICAgICAgYnJlYWsgTDE5NzsKICAgICAgICB9IGVsc2UgewogICAgICAgICBp
NyA9IGk3IDw8IDE7CiAgICAgICAgIGkyID0gaTY7CiAgICAgICAgfQogICAgICAgfQogICAgICAg
aWYgKGkxID4+PiAwIDwgKEhFQVAzMlsxOV0gfCAwKSA+Pj4gMCkgX2Fib3J0KCk7IGVsc2Ugewog
ICAgICAgIEhFQVAzMltpMSA+PiAyXSA9IGkzMzsKICAgICAgICBIRUFQMzJbaTE1ICsgKGkxMyAr
IDI0KSA+PiAyXSA9IGkyOwogICAgICAgIEhFQVAzMltpMTUgKyAoaTEzICsgMTIpID4+IDJdID0g
aTMzOwogICAgICAgIEhFQVAzMltpMTUgKyAoaTEzICsgOCkgPj4gMl0gPSBpMzM7CiAgICAgICAg
YnJlYWsgTDE3OTsKICAgICAgIH0KICAgICAgfSBlbHNlIGkyOCA9IGkyOyB3aGlsZSAoMCk7CiAg
ICAgIGkyID0gaTI4ICsgOCB8IDA7CiAgICAgIGkxID0gSEVBUDMyW2kyID4+IDJdIHwgMDsKICAg
ICAgaTQ2ID0gSEVBUDMyWzE5XSB8IDA7CiAgICAgIGlmIChpMSA+Pj4gMCA+PSBpNDYgPj4+IDAg
JiBpMjggPj4+IDAgPj0gaTQ2ID4+PiAwKSB7CiAgICAgICBIRUFQMzJbaTEgKyAxMiA+PiAyXSA9
IGkzMzsKICAgICAgIEhFQVAzMltpMiA+PiAyXSA9IGkzMzsKICAgICAgIEhFQVAzMltpMTUgKyAo
aTEzICsgOCkgPj4gMl0gPSBpMTsKICAgICAgIEhFQVAzMltpMTUgKyAoaTEzICsgMTIpID4+IDJd
ID0gaTI4OwogICAgICAgSEVBUDMyW2kxNSArIChpMTMgKyAyNCkgPj4gMl0gPSAwOwogICAgICAg
YnJlYWs7CiAgICAgIH0gZWxzZSBfYWJvcnQoKTsKICAgICB9IGVsc2UgewogICAgICBpNDYgPSBp
MTYgKyBpMTMgfCAwOwogICAgICBIRUFQMzJbaTE1ICsgNCA+PiAyXSA9IGk0NiB8IDM7CiAgICAg
IGk0NiA9IGkxNSArIChpNDYgKyA0KSB8IDA7CiAgICAgIEhFQVAzMltpNDYgPj4gMl0gPSBIRUFQ
MzJbaTQ2ID4+IDJdIHwgMTsKICAgICB9IHdoaWxlICgwKTsKICAgICBpNSA9IGkxNSArIDggfCAw
OwogICAgIGJyZWFrOwogICAgfQogICAgX2Fib3J0KCk7CiAgIH0gZWxzZSB7CiAgICBpMTggPSBp
MTM7CiAgICBpNDcgPSAxNTQ7CiAgIH0KICB9IGVsc2UgewogICBpMTggPSBpMTM7CiAgIGk0NyA9
IDE1NDsKICB9CiB9IGVsc2UgewogIGkxOCA9IC0xOwogIGk0NyA9IDE1NDsKIH0gd2hpbGUgKDAp
OwogTDIxMiA6IGRvIGlmICgoaTQ3IHwgMCkgPT0gMTU0KSB7CiAgaTkgPSBIRUFQMzJbMTddIHwg
MDsKICBpZiAoaTkgPj4+IDAgPj0gaTE4ID4+PiAwKSB7CiAgIGkxID0gaTkgLSBpMTggfCAwOwog
ICBpMiA9IEhFQVAzMlsyMF0gfCAwOwogICBpZiAoaTEgPj4+IDAgPiAxNSkgewogICAgSEVBUDMy
WzIwXSA9IGkyICsgaTE4OwogICAgSEVBUDMyWzE3XSA9IGkxOwogICAgSEVBUDMyW2kyICsgKGkx
OCArIDQpID4+IDJdID0gaTEgfCAxOwogICAgSEVBUDMyW2kyICsgaTkgPj4gMl0gPSBpMTsKICAg
IEhFQVAzMltpMiArIDQgPj4gMl0gPSBpMTggfCAzOwogICB9IGVsc2UgewogICAgSEVBUDMyWzE3
XSA9IDA7CiAgICBIRUFQMzJbMjBdID0gMDsKICAgIEhFQVAzMltpMiArIDQgPj4gMl0gPSBpOSB8
IDM7CiAgICBpNDYgPSBpMiArIChpOSArIDQpIHwgMDsKICAgIEhFQVAzMltpNDYgPj4gMl0gPSBI
RUFQMzJbaTQ2ID4+IDJdIHwgMTsKICAgfQogICBpNSA9IGkyICsgOCB8IDA7CiAgIGJyZWFrOwog
IH0KICBpOSA9IEhFQVAzMlsxOF0gfCAwOwogIGlmIChpOSA+Pj4gMCA+IGkxOCA+Pj4gMCkgewog
ICBpNDYgPSBpOSAtIGkxOCB8IDA7CiAgIEhFQVAzMlsxOF0gPSBpNDY7CiAgIGk1ID0gSEVBUDMy
WzIxXSB8IDA7CiAgIEhFQVAzMlsyMV0gPSBpNSArIGkxODsKICAgSEVBUDMyW2k1ICsgKGkxOCAr
IDQpID4+IDJdID0gaTQ2IHwgMTsKICAgSEVBUDMyW2k1ICsgNCA+PiAyXSA9IGkxOCB8IDM7CiAg
IGk1ID0gaTUgKyA4IHwgMDsKICAgYnJlYWs7CiAgfQogIGlmICghKEhFQVAzMlsxMzNdIHwgMCkp
IF9pbml0X21wYXJhbXMoKTsKICBpMTIgPSBpMTggKyA0OCB8IDA7CiAgaTIgPSBIRUFQMzJbMTM1
XSB8IDA7CiAgaTExID0gaTE4ICsgNDcgfCAwOwogIGkzID0gaTIgKyBpMTEgfCAwOwogIGkyID0g
MCAtIGkyIHwgMDsKICBpMSA9IGkzICYgaTI7CiAgaWYgKGkxID4+PiAwID4gaTE4ID4+PiAwKSB7
CiAgIGk5ID0gSEVBUDMyWzEyNV0gfCAwOwogICBpZiAoKGk5IHwgMCkgIT0gMCA/IChpMjggPSBI
RUFQMzJbMTIzXSB8IDAsIGkzMyA9IGkyOCArIGkxIHwgMCwgaTMzID4+PiAwIDw9IGkyOCA+Pj4g
MCB8IGkzMyA+Pj4gMCA+IGk5ID4+PiAwKSA6IDApIHsKICAgIGk1ID0gMDsKICAgIGJyZWFrOwog
ICB9CiAgIEwyMzEgOiBkbyBpZiAoIShIRUFQMzJbMTI2XSAmIDQpKSB7CiAgICBpOSA9IEhFQVAz
MlsyMV0gfCAwOwogICAgTDIzMyA6IGRvIGlmIChpOSkgewogICAgIGk3ID0gNTA4OwogICAgIHdo
aWxlICgxKSB7CiAgICAgIGk4ID0gSEVBUDMyW2k3ID4+IDJdIHwgMDsKICAgICAgaWYgKGk4ID4+
PiAwIDw9IGk5ID4+PiAwID8gKGkyMyA9IGk3ICsgNCB8IDAsIChpOCArIChIRUFQMzJbaTIzID4+
IDJdIHwgMCkgfCAwKSA+Pj4gMCA+IGk5ID4+PiAwKSA6IDApIHsKICAgICAgIGk1ID0gaTc7CiAg
ICAgICBpOSA9IGkyMzsKICAgICAgIGJyZWFrOwogICAgICB9CiAgICAgIGk3ID0gSEVBUDMyW2k3
ICsgOCA+PiAyXSB8IDA7CiAgICAgIGlmICghaTcpIHsKICAgICAgIGk0NyA9IDE3MjsKICAgICAg
IGJyZWFrIEwyMzM7CiAgICAgIH0KICAgICB9CiAgICAgaTggPSBpMyAtIChIRUFQMzJbMThdIHwg
MCkgJiBpMjsKICAgICBpZiAoaTggPj4+IDAgPCAyMTQ3NDgzNjQ3KSB7CiAgICAgIGk3ID0gX3Ni
cmsoaTggfCAwKSB8IDA7CiAgICAgIGkzMyA9IChpNyB8IDApID09ICgoSEVBUDMyW2k1ID4+IDJd
IHwgMCkgKyAoSEVBUDMyW2k5ID4+IDJdIHwgMCkgfCAwKTsKICAgICAgaTkgPSBpMzMgPyBpOCA6
IDA7CiAgICAgIGlmIChpMzMpIHsKICAgICAgIGlmICgoaTcgfCAwKSAhPSAoLTEgfCAwKSkgewog
ICAgICAgIGkyNiA9IGk3OwogICAgICAgIGkxOSA9IGk5OwogICAgICAgIGk0NyA9IDE5MjsKICAg
ICAgICBicmVhayBMMjMxOwogICAgICAgfQogICAgICB9IGVsc2UgaTQ3ID0gMTgyOwogICAgIH0g
ZWxzZSBpOSA9IDA7CiAgICB9IGVsc2UgaTQ3ID0gMTcyOyB3aGlsZSAoMCk7CiAgICBkbyBpZiAo
KGk0NyB8IDApID09IDE3MikgewogICAgIGk1ID0gX3NicmsoMCkgfCAwOwogICAgIGlmICgoaTUg
fCAwKSAhPSAoLTEgfCAwKSkgewogICAgICBpOSA9IGk1OwogICAgICBpOCA9IEhFQVAzMlsxMzRd
IHwgMDsKICAgICAgaTcgPSBpOCArIC0xIHwgMDsKICAgICAgaWYgKCEoaTcgJiBpOSkpIGk4ID0g
aTE7IGVsc2UgaTggPSBpMSAtIGk5ICsgKGk3ICsgaTkgJiAwIC0gaTgpIHwgMDsKICAgICAgaTkg
PSBIRUFQMzJbMTIzXSB8IDA7CiAgICAgIGk3ID0gaTkgKyBpOCB8IDA7CiAgICAgIGlmIChpOCA+
Pj4gMCA+IGkxOCA+Pj4gMCAmIGk4ID4+PiAwIDwgMjE0NzQ4MzY0NykgewogICAgICAgaTMzID0g
SEVBUDMyWzEyNV0gfCAwOwogICAgICAgaWYgKChpMzMgfCAwKSAhPSAwID8gaTcgPj4+IDAgPD0g
aTkgPj4+IDAgfCBpNyA+Pj4gMCA+IGkzMyA+Pj4gMCA6IDApIHsKICAgICAgICBpOSA9IDA7CiAg
ICAgICAgYnJlYWs7CiAgICAgICB9CiAgICAgICBpNyA9IF9zYnJrKGk4IHwgMCkgfCAwOwogICAg
ICAgaTMzID0gKGk3IHwgMCkgPT0gKGk1IHwgMCk7CiAgICAgICBpOSA9IGkzMyA/IGk4IDogMDsK
ICAgICAgIGlmIChpMzMpIHsKICAgICAgICBpMjYgPSBpNTsKICAgICAgICBpMTkgPSBpOTsKICAg
ICAgICBpNDcgPSAxOTI7CiAgICAgICAgYnJlYWsgTDIzMTsKICAgICAgIH0gZWxzZSBpNDcgPSAx
ODI7CiAgICAgIH0gZWxzZSBpOSA9IDA7CiAgICAgfSBlbHNlIGk5ID0gMDsKICAgIH0gd2hpbGUg
KDApOwogICAgTDI1MyA6IGRvIGlmICgoaTQ3IHwgMCkgPT0gMTgyKSB7CiAgICAgaTUgPSAwIC0g
aTggfCAwOwogICAgIGRvIGlmIChpMTIgPj4+IDAgPiBpOCA+Pj4gMCAmIChpOCA+Pj4gMCA8IDIx
NDc0ODM2NDcgJiAoaTcgfCAwKSAhPSAoLTEgfCAwKSkgPyAoaTI3ID0gSEVBUDMyWzEzNV0gfCAw
LCBpMjcgPSBpMTEgLSBpOCArIGkyNyAmIDAgLSBpMjcsIGkyNyA+Pj4gMCA8IDIxNDc0ODM2NDcp
IDogMCkgaWYgKChfc2JyayhpMjcgfCAwKSB8IDApID09ICgtMSB8IDApKSB7CiAgICAgIF9zYnJr
KGk1IHwgMCkgfCAwOwogICAgICBicmVhayBMMjUzOwogICAgIH0gZWxzZSB7CiAgICAgIGk4ID0g
aTI3ICsgaTggfCAwOwogICAgICBicmVhazsKICAgICB9IHdoaWxlICgwKTsKICAgICBpZiAoKGk3
IHwgMCkgIT0gKC0xIHwgMCkpIHsKICAgICAgaTI2ID0gaTc7CiAgICAgIGkxOSA9IGk4OwogICAg
ICBpNDcgPSAxOTI7CiAgICAgIGJyZWFrIEwyMzE7CiAgICAgfQogICAgfSB3aGlsZSAoMCk7CiAg
ICBIRUFQMzJbMTI2XSA9IEhFQVAzMlsxMjZdIHwgNDsKICAgIGk0NyA9IDE4OTsKICAgfSBlbHNl
IHsKICAgIGk5ID0gMDsKICAgIGk0NyA9IDE4OTsKICAgfSB3aGlsZSAoMCk7CiAgIGlmICgoKChp
NDcgfCAwKSA9PSAxODkgPyBpMSA+Pj4gMCA8IDIxNDc0ODM2NDcgOiAwKSA/IChpMjkgPSBfc2Jy
ayhpMSB8IDApIHwgMCwgaTMwID0gX3NicmsoMCkgfCAwLCBpMjkgPj4+IDAgPCBpMzAgPj4+IDAg
JiAoKGkyOSB8IDApICE9ICgtMSB8IDApICYgKGkzMCB8IDApICE9ICgtMSB8IDApKSkgOiAwKSA/
IChpMzEgPSBpMzAgLSBpMjkgfCAwLCBpMzIgPSBpMzEgPj4+IDAgPiAoaTE4ICsgNDAgfCAwKSA+
Pj4gMCwgaTMyKSA6IDApIHsKICAgIGkyNiA9IGkyOTsKICAgIGkxOSA9IGkzMiA/IGkzMSA6IGk5
OwogICAgaTQ3ID0gMTkyOwogICB9CiAgIGlmICgoaTQ3IHwgMCkgPT0gMTkyKSB7CiAgICBpOCA9
IChIRUFQMzJbMTIzXSB8IDApICsgaTE5IHwgMDsKICAgIEhFQVAzMlsxMjNdID0gaTg7CiAgICBp
ZiAoaTggPj4+IDAgPiAoSEVBUDMyWzEyNF0gfCAwKSA+Pj4gMCkgSEVBUDMyWzEyNF0gPSBpODsK
ICAgIGkxNiA9IEhFQVAzMlsyMV0gfCAwOwogICAgTDI3MiA6IGRvIGlmIChpMTYpIHsKICAgICBp
NSA9IDUwODsKICAgICBkbyB7CiAgICAgIGk5ID0gSEVBUDMyW2k1ID4+IDJdIHwgMDsKICAgICAg
aTggPSBpNSArIDQgfCAwOwogICAgICBpNyA9IEhFQVAzMltpOCA+PiAyXSB8IDA7CiAgICAgIGlm
ICgoaTI2IHwgMCkgPT0gKGk5ICsgaTcgfCAwKSkgewogICAgICAgaTM0ID0gaTk7CiAgICAgICBp
MzUgPSBpODsKICAgICAgIGkzNiA9IGk3OwogICAgICAgaTM3ID0gaTU7CiAgICAgICBpNDcgPSAy
MDI7CiAgICAgICBicmVhazsKICAgICAgfQogICAgICBpNSA9IEhFQVAzMltpNSArIDggPj4gMl0g
fCAwOwogICAgIH0gd2hpbGUgKChpNSB8IDApICE9IDApOwogICAgIGlmICgoKGk0NyB8IDApID09
IDIwMiA/IChIRUFQMzJbaTM3ICsgMTIgPj4gMl0gJiA4IHwgMCkgPT0gMCA6IDApID8gaTE2ID4+
PiAwIDwgaTI2ID4+PiAwICYgaTE2ID4+PiAwID49IGkzNCA+Pj4gMCA6IDApIHsKICAgICAgSEVB
UDMyW2kzNSA+PiAyXSA9IGkzNiArIGkxOTsKICAgICAgaTQ2ID0gKEhFQVAzMlsxOF0gfCAwKSAr
IGkxOSB8IDA7CiAgICAgIGk0NSA9IGkxNiArIDggfCAwOwogICAgICBpNDUgPSAoaTQ1ICYgNyB8
IDApID09IDAgPyAwIDogMCAtIGk0NSAmIDc7CiAgICAgIGk0NCA9IGk0NiAtIGk0NSB8IDA7CiAg
ICAgIEhFQVAzMlsyMV0gPSBpMTYgKyBpNDU7CiAgICAgIEhFQVAzMlsxOF0gPSBpNDQ7CiAgICAg
IEhFQVAzMltpMTYgKyAoaTQ1ICsgNCkgPj4gMl0gPSBpNDQgfCAxOwogICAgICBIRUFQMzJbaTE2
ICsgKGk0NiArIDQpID4+IDJdID0gNDA7CiAgICAgIEhFQVAzMlsyMl0gPSBIRUFQMzJbMTM3XTsK
ICAgICAgYnJlYWs7CiAgICAgfQogICAgIGk4ID0gSEVBUDMyWzE5XSB8IDA7CiAgICAgaWYgKGky
NiA+Pj4gMCA8IGk4ID4+PiAwKSB7CiAgICAgIEhFQVAzMlsxOV0gPSBpMjY7CiAgICAgIGk4ID0g
aTI2OwogICAgIH0KICAgICBpNyA9IGkyNiArIGkxOSB8IDA7CiAgICAgaTkgPSA1MDg7CiAgICAg
d2hpbGUgKDEpIHsKICAgICAgaWYgKChIRUFQMzJbaTkgPj4gMl0gfCAwKSA9PSAoaTcgfCAwKSkg
ewogICAgICAgaTUgPSBpOTsKICAgICAgIGk3ID0gaTk7CiAgICAgICBpNDcgPSAyMTA7CiAgICAg
ICBicmVhazsKICAgICAgfQogICAgICBpOSA9IEhFQVAzMltpOSArIDggPj4gMl0gfCAwOwogICAg
ICBpZiAoIWk5KSB7CiAgICAgICBpNyA9IDUwODsKICAgICAgIGJyZWFrOwogICAgICB9CiAgICAg
fQogICAgIGlmICgoaTQ3IHwgMCkgPT0gMjEwKSBpZiAoIShIRUFQMzJbaTcgKyAxMiA+PiAyXSAm
IDgpKSB7CiAgICAgIEhFQVAzMltpNSA+PiAyXSA9IGkyNjsKICAgICAgaTE0ID0gaTcgKyA0IHwg
MDsKICAgICAgSEVBUDMyW2kxNCA+PiAyXSA9IChIRUFQMzJbaTE0ID4+IDJdIHwgMCkgKyBpMTk7
CiAgICAgIGkxNCA9IGkyNiArIDggfCAwOwogICAgICBpMTQgPSAoaTE0ICYgNyB8IDApID09IDAg
PyAwIDogMCAtIGkxNCAmIDc7CiAgICAgIGkxMSA9IGkyNiArIChpMTkgKyA4KSB8IDA7CiAgICAg
IGkxMSA9IChpMTEgJiA3IHwgMCkgPT0gMCA/IDAgOiAwIC0gaTExICYgNzsKICAgICAgaTcgPSBp
MjYgKyAoaTExICsgaTE5KSB8IDA7CiAgICAgIGkxNSA9IGkxNCArIGkxOCB8IDA7CiAgICAgIGkx
MyA9IGkyNiArIGkxNSB8IDA7CiAgICAgIGk5ID0gaTcgLSAoaTI2ICsgaTE0KSAtIGkxOCB8IDA7
CiAgICAgIEhFQVAzMltpMjYgKyAoaTE0ICsgNCkgPj4gMl0gPSBpMTggfCAzOwogICAgICBMMjk3
IDogZG8gaWYgKChpNyB8IDApICE9IChpMTYgfCAwKSkgewogICAgICAgaWYgKChpNyB8IDApID09
IChIRUFQMzJbMjBdIHwgMCkpIHsKICAgICAgICBpNDYgPSAoSEVBUDMyWzE3XSB8IDApICsgaTkg
fCAwOwogICAgICAgIEhFQVAzMlsxN10gPSBpNDY7CiAgICAgICAgSEVBUDMyWzIwXSA9IGkxMzsK
ICAgICAgICBIRUFQMzJbaTI2ICsgKGkxNSArIDQpID4+IDJdID0gaTQ2IHwgMTsKICAgICAgICBI
RUFQMzJbaTI2ICsgKGk0NiArIGkxNSkgPj4gMl0gPSBpNDY7CiAgICAgICAgYnJlYWs7CiAgICAg
ICB9CiAgICAgICBpMSA9IGkxOSArIDQgfCAwOwogICAgICAgaTYgPSBIRUFQMzJbaTI2ICsgKGkx
ICsgaTExKSA+PiAyXSB8IDA7CiAgICAgICBpZiAoKGk2ICYgMyB8IDApID09IDEpIHsKICAgICAg
ICBpMTAgPSBpNiAmIC04OwogICAgICAgIGkzID0gaTYgPj4+IDM7CiAgICAgICAgTDMwNSA6IGRv
IGlmIChpNiA+Pj4gMCA+PSAyNTYpIHsKICAgICAgICAgaTIgPSBIRUFQMzJbaTI2ICsgKChpMTEg
fCAyNCkgKyBpMTkpID4+IDJdIHwgMDsKICAgICAgICAgaTUgPSBIRUFQMzJbaTI2ICsgKGkxOSAr
IDEyICsgaTExKSA+PiAyXSB8IDA7CiAgICAgICAgIEwzMjQgOiBkbyBpZiAoKGk1IHwgMCkgPT0g
KGk3IHwgMCkpIHsKICAgICAgICAgIGk0ID0gaTExIHwgMTY7CiAgICAgICAgICBpNSA9IGkyNiAr
IChpMSArIGk0KSB8IDA7CiAgICAgICAgICBpNiA9IEhFQVAzMltpNSA+PiAyXSB8IDA7CiAgICAg
ICAgICBpZiAoIWk2KSB7CiAgICAgICAgICAgaTUgPSBpMjYgKyAoaTQgKyBpMTkpIHwgMDsKICAg
ICAgICAgICBpNiA9IEhFQVAzMltpNSA+PiAyXSB8IDA7CiAgICAgICAgICAgaWYgKCFpNikgewog
ICAgICAgICAgICBpNDMgPSAwOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgICB9CiAgICAg
ICAgICB9CiAgICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgIGk0ID0gaTYgKyAyMCB8IDA7
CiAgICAgICAgICAgaTMgPSBIRUFQMzJbaTQgPj4gMl0gfCAwOwogICAgICAgICAgIGlmIChpMykg
ewogICAgICAgICAgICBpNiA9IGkzOwogICAgICAgICAgICBpNSA9IGk0OwogICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgICB9CiAgICAgICAgICAgaTQgPSBpNiArIDE2IHwgMDsKICAgICAg
ICAgICBpMyA9IEhFQVAzMltpNCA+PiAyXSB8IDA7CiAgICAgICAgICAgaWYgKCFpMykgYnJlYWs7
IGVsc2UgewogICAgICAgICAgICBpNiA9IGkzOwogICAgICAgICAgICBpNSA9IGk0OwogICAgICAg
ICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIGlmIChpNSA+Pj4gMCA8IGk4ID4+PiAwKSBfYWJv
cnQoKTsgZWxzZSB7CiAgICAgICAgICAgSEVBUDMyW2k1ID4+IDJdID0gMDsKICAgICAgICAgICBp
NDMgPSBpNjsKICAgICAgICAgICBicmVhazsKICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgIGk0ID0gSEVBUDMyW2kyNiArICgoaTExIHwgOCkgKyBpMTkpID4+IDJdIHwgMDsK
ICAgICAgICAgIGRvIGlmIChpNCA+Pj4gMCA+PSBpOCA+Pj4gMCkgewogICAgICAgICAgIGk4ID0g
aTQgKyAxMiB8IDA7CiAgICAgICAgICAgaWYgKChIRUFQMzJbaTggPj4gMl0gfCAwKSAhPSAoaTcg
fCAwKSkgYnJlYWs7CiAgICAgICAgICAgaTYgPSBpNSArIDggfCAwOwogICAgICAgICAgIGlmICgo
SEVBUDMyW2k2ID4+IDJdIHwgMCkgIT0gKGk3IHwgMCkpIGJyZWFrOwogICAgICAgICAgIEhFQVAz
MltpOCA+PiAyXSA9IGk1OwogICAgICAgICAgIEhFQVAzMltpNiA+PiAyXSA9IGk0OwogICAgICAg
ICAgIGk0MyA9IGk1OwogICAgICAgICAgIGJyZWFrIEwzMjQ7CiAgICAgICAgICB9IHdoaWxlICgw
KTsKICAgICAgICAgIF9hYm9ydCgpOwogICAgICAgICB9IHdoaWxlICgwKTsKICAgICAgICAgaWYg
KCFpMikgYnJlYWs7CiAgICAgICAgIGk4ID0gSEVBUDMyW2kyNiArIChpMTkgKyAyOCArIGkxMSkg
Pj4gMl0gfCAwOwogICAgICAgICBpNiA9IDM2NCArIChpOCA8PCAyKSB8IDA7CiAgICAgICAgIGRv
IGlmICgoaTcgfCAwKSAhPSAoSEVBUDMyW2k2ID4+IDJdIHwgMCkpIHsKICAgICAgICAgIGlmIChp
MiA+Pj4gMCA8IChIRUFQMzJbMTldIHwgMCkgPj4+IDApIF9hYm9ydCgpOwogICAgICAgICAgaTYg
PSBpMiArIDE2IHwgMDsKICAgICAgICAgIGlmICgoSEVBUDMyW2k2ID4+IDJdIHwgMCkgPT0gKGk3
IHwgMCkpIEhFQVAzMltpNiA+PiAyXSA9IGk0MzsgZWxzZSBIRUFQMzJbaTIgKyAyMCA+PiAyXSA9
IGk0MzsKICAgICAgICAgIGlmICghaTQzKSBicmVhayBMMzA1OwogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgSEVBUDMyW2k2ID4+IDJdID0gaTQzOwogICAgICAgICAgaWYgKGk0MykgYnJlYWs7
CiAgICAgICAgICBIRUFQMzJbMTZdID0gSEVBUDMyWzE2XSAmIH4oMSA8PCBpOCk7CiAgICAgICAg
ICBicmVhayBMMzA1OwogICAgICAgICB9IHdoaWxlICgwKTsKICAgICAgICAgaTggPSBIRUFQMzJb
MTldIHwgMDsKICAgICAgICAgaWYgKGk0MyA+Pj4gMCA8IGk4ID4+PiAwKSBfYWJvcnQoKTsKICAg
ICAgICAgSEVBUDMyW2k0MyArIDI0ID4+IDJdID0gaTI7CiAgICAgICAgIGk3ID0gaTExIHwgMTY7
CiAgICAgICAgIGk2ID0gSEVBUDMyW2kyNiArIChpNyArIGkxOSkgPj4gMl0gfCAwOwogICAgICAg
ICBkbyBpZiAoaTYpIGlmIChpNiA+Pj4gMCA8IGk4ID4+PiAwKSBfYWJvcnQoKTsgZWxzZSB7CiAg
ICAgICAgICBIRUFQMzJbaTQzICsgMTYgPj4gMl0gPSBpNjsKICAgICAgICAgIEhFQVAzMltpNiAr
IDI0ID4+IDJdID0gaTQzOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0gd2hpbGUgKDApOwog
ICAgICAgICBpNyA9IEhFQVAzMltpMjYgKyAoaTEgKyBpNykgPj4gMl0gfCAwOwogICAgICAgICBp
ZiAoIWk3KSBicmVhazsKICAgICAgICAgaWYgKGk3ID4+PiAwIDwgKEhFQVAzMlsxOV0gfCAwKSA+
Pj4gMCkgX2Fib3J0KCk7IGVsc2UgewogICAgICAgICAgSEVBUDMyW2k0MyArIDIwID4+IDJdID0g
aTc7CiAgICAgICAgICBIRUFQMzJbaTcgKyAyNCA+PiAyXSA9IGk0MzsKICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgaTYgPSBIRUFQMzJbaTI2ICsg
KChpMTEgfCA4KSArIGkxOSkgPj4gMl0gfCAwOwogICAgICAgICBpNSA9IEhFQVAzMltpMjYgKyAo
aTE5ICsgMTIgKyBpMTEpID4+IDJdIHwgMDsKICAgICAgICAgaTQgPSAxMDAgKyAoaTMgPDwgMSA8
PCAyKSB8IDA7CiAgICAgICAgIGRvIGlmICgoaTYgfCAwKSAhPSAoaTQgfCAwKSkgewogICAgICAg
ICAgaWYgKGk2ID4+PiAwID49IGk4ID4+PiAwID8gKEhFQVAzMltpNiArIDEyID4+IDJdIHwgMCkg
PT0gKGk3IHwgMCkgOiAwKSBicmVhazsKICAgICAgICAgIF9hYm9ydCgpOwogICAgICAgICB9IHdo
aWxlICgwKTsKICAgICAgICAgaWYgKChpNSB8IDApID09IChpNiB8IDApKSB7CiAgICAgICAgICBI
RUFQMzJbMTVdID0gSEVBUDMyWzE1XSAmIH4oMSA8PCBpMyk7CiAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICBkbyBpZiAoKGk1IHwgMCkgPT0gKGk0IHwgMCkpIGkzOCA9IGk1ICsg
OCB8IDA7IGVsc2UgewogICAgICAgICAgaWYgKGk1ID4+PiAwID49IGk4ID4+PiAwID8gKGkzOSA9
IGk1ICsgOCB8IDAsIChIRUFQMzJbaTM5ID4+IDJdIHwgMCkgPT0gKGk3IHwgMCkpIDogMCkgewog
ICAgICAgICAgIGkzOCA9IGkzOTsKICAgICAgICAgICBicmVhazsKICAgICAgICAgIH0KICAgICAg
ICAgIF9hYm9ydCgpOwogICAgICAgICB9IHdoaWxlICgwKTsKICAgICAgICAgSEVBUDMyW2k2ICsg
MTIgPj4gMl0gPSBpNTsKICAgICAgICAgSEVBUDMyW2kzOCA+PiAyXSA9IGk2OwogICAgICAgIH0g
d2hpbGUgKDApOwogICAgICAgIGk3ID0gaTI2ICsgKChpMTAgfCBpMTEpICsgaTE5KSB8IDA7CiAg
ICAgICAgaTkgPSBpMTAgKyBpOSB8IDA7CiAgICAgICB9CiAgICAgICBpNyA9IGk3ICsgNCB8IDA7
CiAgICAgICBIRUFQMzJbaTcgPj4gMl0gPSBIRUFQMzJbaTcgPj4gMl0gJiAtMjsKICAgICAgIEhF
QVAzMltpMjYgKyAoaTE1ICsgNCkgPj4gMl0gPSBpOSB8IDE7CiAgICAgICBIRUFQMzJbaTI2ICsg
KGk5ICsgaTE1KSA+PiAyXSA9IGk5OwogICAgICAgaTcgPSBpOSA+Pj4gMzsKICAgICAgIGlmIChp
OSA+Pj4gMCA8IDI1NikgewogICAgICAgIGk1ID0gaTcgPDwgMTsKICAgICAgICBpMyA9IDEwMCAr
IChpNSA8PCAyKSB8IDA7CiAgICAgICAgaTQgPSBIRUFQMzJbMTVdIHwgMDsKICAgICAgICBpNiA9
IDEgPDwgaTc7CiAgICAgICAgZG8gaWYgKCEoaTQgJiBpNikpIHsKICAgICAgICAgSEVBUDMyWzE1
XSA9IGk0IHwgaTY7CiAgICAgICAgIGk0NCA9IDEwMCArIChpNSArIDIgPDwgMikgfCAwOwogICAg
ICAgICBpNDUgPSBpMzsKICAgICAgICB9IGVsc2UgewogICAgICAgICBpNiA9IDEwMCArIChpNSAr
IDIgPDwgMikgfCAwOwogICAgICAgICBpNSA9IEhFQVAzMltpNiA+PiAyXSB8IDA7CiAgICAgICAg
IGlmIChpNSA+Pj4gMCA+PSAoSEVBUDMyWzE5XSB8IDApID4+PiAwKSB7CiAgICAgICAgICBpNDQg
PSBpNjsKICAgICAgICAgIGk0NSA9IGk1OwogICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgX2Fib3J0KCk7CiAgICAgICAgfSB3aGlsZSAoMCk7CiAgICAgICAgSEVBUDMyW2k0NCA+
PiAyXSA9IGkxMzsKICAgICAgICBIRUFQMzJbaTQ1ICsgMTIgPj4gMl0gPSBpMTM7CiAgICAgICAg
SEVBUDMyW2kyNiArIChpMTUgKyA4KSA+PiAyXSA9IGk0NTsKICAgICAgICBIRUFQMzJbaTI2ICsg
KGkxNSArIDEyKSA+PiAyXSA9IGkzOwogICAgICAgIGJyZWFrOwogICAgICAgfQogICAgICAgaTIg
PSBpOSA+Pj4gODsKICAgICAgIGRvIGlmICghaTIpIGk3ID0gMDsgZWxzZSB7CiAgICAgICAgaWYg
KGk5ID4+PiAwID4gMTY3NzcyMTUpIHsKICAgICAgICAgaTcgPSAzMTsKICAgICAgICAgYnJlYWs7
CiAgICAgICAgfQogICAgICAgIGk0NCA9IChpMiArIDEwNDgzMjAgfCAwKSA+Pj4gMTYgJiA4Owog
ICAgICAgIGk0NSA9IGkyIDw8IGk0NDsKICAgICAgICBpNDMgPSAoaTQ1ICsgNTIwMTkyIHwgMCkg
Pj4+IDE2ICYgNDsKICAgICAgICBpNDUgPSBpNDUgPDwgaTQzOwogICAgICAgIGk3ID0gKGk0NSAr
IDI0NTc2MCB8IDApID4+PiAxNiAmIDI7CiAgICAgICAgaTcgPSAxNCAtIChpNDMgfCBpNDQgfCBp
NykgKyAoaTQ1IDw8IGk3ID4+PiAxNSkgfCAwOwogICAgICAgIGk3ID0gaTkgPj4+IChpNyArIDcg
fCAwKSAmIDEgfCBpNyA8PCAxOwogICAgICAgfSB3aGlsZSAoMCk7CiAgICAgICBpNiA9IDM2NCAr
IChpNyA8PCAyKSB8IDA7CiAgICAgICBIRUFQMzJbaTI2ICsgKGkxNSArIDI4KSA+PiAyXSA9IGk3
OwogICAgICAgSEVBUDMyW2kyNiArIChpMTUgKyAyMCkgPj4gMl0gPSAwOwogICAgICAgSEVBUDMy
W2kyNiArIChpMTUgKyAxNikgPj4gMl0gPSAwOwogICAgICAgaTUgPSBIRUFQMzJbMTZdIHwgMDsK
ICAgICAgIGk0ID0gMSA8PCBpNzsKICAgICAgIGlmICghKGk1ICYgaTQpKSB7CiAgICAgICAgSEVB
UDMyWzE2XSA9IGk1IHwgaTQ7CiAgICAgICAgSEVBUDMyW2k2ID4+IDJdID0gaTEzOwogICAgICAg
IEhFQVAzMltpMjYgKyAoaTE1ICsgMjQpID4+IDJdID0gaTY7CiAgICAgICAgSEVBUDMyW2kyNiAr
IChpMTUgKyAxMikgPj4gMl0gPSBpMTM7CiAgICAgICAgSEVBUDMyW2kyNiArIChpMTUgKyA4KSA+
PiAyXSA9IGkxMzsKICAgICAgICBicmVhazsKICAgICAgIH0KICAgICAgIGkyID0gSEVBUDMyW2k2
ID4+IDJdIHwgMDsKICAgICAgIEwzODUgOiBkbyBpZiAoKEhFQVAzMltpMiArIDQgPj4gMl0gJiAt
OCB8IDApICE9IChpOSB8IDApKSB7CiAgICAgICAgaTcgPSBpOSA8PCAoKGk3IHwgMCkgPT0gMzEg
PyAwIDogMjUgLSAoaTcgPj4+IDEpIHwgMCk7CiAgICAgICAgd2hpbGUgKDEpIHsKICAgICAgICAg
aTEgPSBpMiArIDE2ICsgKGk3ID4+PiAzMSA8PCAyKSB8IDA7CiAgICAgICAgIGk2ID0gSEVBUDMy
W2kxID4+IDJdIHwgMDsKICAgICAgICAgaWYgKCFpNikgYnJlYWs7CiAgICAgICAgIGlmICgoSEVB
UDMyW2k2ICsgNCA+PiAyXSAmIC04IHwgMCkgPT0gKGk5IHwgMCkpIHsKICAgICAgICAgIGk0NiA9
IGk2OwogICAgICAgICAgYnJlYWsgTDM4NTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGk3
ID0gaTcgPDwgMTsKICAgICAgICAgIGkyID0gaTY7CiAgICAgICAgIH0KICAgICAgICB9CiAgICAg
ICAgaWYgKGkxID4+PiAwIDwgKEhFQVAzMlsxOV0gfCAwKSA+Pj4gMCkgX2Fib3J0KCk7IGVsc2Ug
ewogICAgICAgICBIRUFQMzJbaTEgPj4gMl0gPSBpMTM7CiAgICAgICAgIEhFQVAzMltpMjYgKyAo
aTE1ICsgMjQpID4+IDJdID0gaTI7CiAgICAgICAgIEhFQVAzMltpMjYgKyAoaTE1ICsgMTIpID4+
IDJdID0gaTEzOwogICAgICAgICBIRUFQMzJbaTI2ICsgKGkxNSArIDgpID4+IDJdID0gaTEzOwog
ICAgICAgICBicmVhayBMMjk3OwogICAgICAgIH0KICAgICAgIH0gZWxzZSBpNDYgPSBpMjsgd2hp
bGUgKDApOwogICAgICAgaTIgPSBpNDYgKyA4IHwgMDsKICAgICAgIGkxID0gSEVBUDMyW2kyID4+
IDJdIHwgMDsKICAgICAgIGk0NSA9IEhFQVAzMlsxOV0gfCAwOwogICAgICAgaWYgKGkxID4+PiAw
ID49IGk0NSA+Pj4gMCAmIGk0NiA+Pj4gMCA+PSBpNDUgPj4+IDApIHsKICAgICAgICBIRUFQMzJb
aTEgKyAxMiA+PiAyXSA9IGkxMzsKICAgICAgICBIRUFQMzJbaTIgPj4gMl0gPSBpMTM7CiAgICAg
ICAgSEVBUDMyW2kyNiArIChpMTUgKyA4KSA+PiAyXSA9IGkxOwogICAgICAgIEhFQVAzMltpMjYg
KyAoaTE1ICsgMTIpID4+IDJdID0gaTQ2OwogICAgICAgIEhFQVAzMltpMjYgKyAoaTE1ICsgMjQp
ID4+IDJdID0gMDsKICAgICAgICBicmVhazsKICAgICAgIH0gZWxzZSBfYWJvcnQoKTsKICAgICAg
fSBlbHNlIHsKICAgICAgIGk0NiA9IChIRUFQMzJbMThdIHwgMCkgKyBpOSB8IDA7CiAgICAgICBI
RUFQMzJbMThdID0gaTQ2OwogICAgICAgSEVBUDMyWzIxXSA9IGkxMzsKICAgICAgIEhFQVAzMltp
MjYgKyAoaTE1ICsgNCkgPj4gMl0gPSBpNDYgfCAxOwogICAgICB9IHdoaWxlICgwKTsKICAgICAg
aTUgPSBpMjYgKyAoaTE0IHwgOCkgfCAwOwogICAgICBicmVhayBMMjEyOwogICAgIH0gZWxzZSBp
NyA9IDUwODsKICAgICB3aGlsZSAoMSkgewogICAgICBpNSA9IEhFQVAzMltpNyA+PiAyXSB8IDA7
CiAgICAgIGlmIChpNSA+Pj4gMCA8PSBpMTYgPj4+IDAgPyAoaTYgPSBIRUFQMzJbaTcgKyA0ID4+
IDJdIHwgMCwgaTQgPSBpNSArIGk2IHwgMCwgaTQgPj4+IDAgPiBpMTYgPj4+IDApIDogMCkgYnJl
YWs7CiAgICAgIGk3ID0gSEVBUDMyW2k3ICsgOCA+PiAyXSB8IDA7CiAgICAgfQogICAgIGk3ID0g
aTUgKyAoaTYgKyAtMzkpIHwgMDsKICAgICBpNyA9IGk1ICsgKGk2ICsgLTQ3ICsgKChpNyAmIDcg
fCAwKSA9PSAwID8gMCA6IDAgLSBpNyAmIDcpKSB8IDA7CiAgICAgaTggPSBpMTYgKyAxNiB8IDA7
CiAgICAgaTcgPSBpNyA+Pj4gMCA8IGk4ID4+PiAwID8gaTE2IDogaTc7CiAgICAgaTYgPSBpNyAr
IDggfCAwOwogICAgIGk1ID0gaTI2ICsgOCB8IDA7CiAgICAgaTUgPSAoaTUgJiA3IHwgMCkgPT0g
MCA/IDAgOiAwIC0gaTUgJiA3OwogICAgIGk0NiA9IGkxOSArIC00MCAtIGk1IHwgMDsKICAgICBI
RUFQMzJbMjFdID0gaTI2ICsgaTU7CiAgICAgSEVBUDMyWzE4XSA9IGk0NjsKICAgICBIRUFQMzJb
aTI2ICsgKGk1ICsgNCkgPj4gMl0gPSBpNDYgfCAxOwogICAgIEhFQVAzMltpMjYgKyAoaTE5ICsg
LTM2KSA+PiAyXSA9IDQwOwogICAgIEhFQVAzMlsyMl0gPSBIRUFQMzJbMTM3XTsKICAgICBpNSA9
IGk3ICsgNCB8IDA7CiAgICAgSEVBUDMyW2k1ID4+IDJdID0gMjc7CiAgICAgSEVBUDMyW2k2ID4+
IDJdID0gSEVBUDMyWzEyN107CiAgICAgSEVBUDMyW2k2ICsgNCA+PiAyXSA9IEhFQVAzMlsxMjhd
OwogICAgIEhFQVAzMltpNiArIDggPj4gMl0gPSBIRUFQMzJbMTI5XTsKICAgICBIRUFQMzJbaTYg
KyAxMiA+PiAyXSA9IEhFQVAzMlsxMzBdOwogICAgIEhFQVAzMlsxMjddID0gaTI2OwogICAgIEhF
QVAzMlsxMjhdID0gaTE5OwogICAgIEhFQVAzMlsxMzBdID0gMDsKICAgICBIRUFQMzJbMTI5XSA9
IGk2OwogICAgIGk2ID0gaTcgKyAyOCB8IDA7CiAgICAgSEVBUDMyW2k2ID4+IDJdID0gNzsKICAg
ICBpZiAoKGk3ICsgMzIgfCAwKSA+Pj4gMCA8IGk0ID4+PiAwKSBkbyB7CiAgICAgIGk0NiA9IGk2
OwogICAgICBpNiA9IGk2ICsgNCB8IDA7CiAgICAgIEhFQVAzMltpNiA+PiAyXSA9IDc7CiAgICAg
fSB3aGlsZSAoKGk0NiArIDggfCAwKSA+Pj4gMCA8IGk0ID4+PiAwKTsKICAgICBpZiAoKGk3IHwg
MCkgIT0gKGkxNiB8IDApKSB7CiAgICAgIGk5ID0gaTcgLSBpMTYgfCAwOwogICAgICBIRUFQMzJb
aTUgPj4gMl0gPSBIRUFQMzJbaTUgPj4gMl0gJiAtMjsKICAgICAgSEVBUDMyW2kxNiArIDQgPj4g
Ml0gPSBpOSB8IDE7CiAgICAgIEhFQVAzMltpNyA+PiAyXSA9IGk5OwogICAgICBpNCA9IGk5ID4+
PiAzOwogICAgICBpZiAoaTkgPj4+IDAgPCAyNTYpIHsKICAgICAgIGk2ID0gaTQgPDwgMTsKICAg
ICAgIGk3ID0gMTAwICsgKGk2IDw8IDIpIHwgMDsKICAgICAgIGk1ID0gSEVBUDMyWzE1XSB8IDA7
CiAgICAgICBpMyA9IDEgPDwgaTQ7CiAgICAgICBpZiAoaTUgJiBpMykgewogICAgICAgIGkyID0g
MTAwICsgKGk2ICsgMiA8PCAyKSB8IDA7CiAgICAgICAgaTEgPSBIRUFQMzJbaTIgPj4gMl0gfCAw
OwogICAgICAgIGlmIChpMSA+Pj4gMCA8IChIRUFQMzJbMTldIHwgMCkgPj4+IDApIF9hYm9ydCgp
OyBlbHNlIHsKICAgICAgICAgaTQwID0gaTI7CiAgICAgICAgIGk0MSA9IGkxOwogICAgICAgIH0K
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgSEVBUDMyWzE1XSA9IGk1IHwgaTM7CiAgICAgICAgaTQw
ID0gMTAwICsgKGk2ICsgMiA8PCAyKSB8IDA7CiAgICAgICAgaTQxID0gaTc7CiAgICAgICB9CiAg
ICAgICBIRUFQMzJbaTQwID4+IDJdID0gaTE2OwogICAgICAgSEVBUDMyW2k0MSArIDEyID4+IDJd
ID0gaTE2OwogICAgICAgSEVBUDMyW2kxNiArIDggPj4gMl0gPSBpNDE7CiAgICAgICBIRUFQMzJb
aTE2ICsgMTIgPj4gMl0gPSBpNzsKICAgICAgIGJyZWFrOwogICAgICB9CiAgICAgIGkyID0gaTkg
Pj4+IDg7CiAgICAgIGlmIChpMikgaWYgKGk5ID4+PiAwID4gMTY3NzcyMTUpIGk2ID0gMzE7IGVs
c2UgewogICAgICAgaTQ1ID0gKGkyICsgMTA0ODMyMCB8IDApID4+PiAxNiAmIDg7CiAgICAgICBp
NDYgPSBpMiA8PCBpNDU7CiAgICAgICBpNDQgPSAoaTQ2ICsgNTIwMTkyIHwgMCkgPj4+IDE2ICYg
NDsKICAgICAgIGk0NiA9IGk0NiA8PCBpNDQ7CiAgICAgICBpNiA9IChpNDYgKyAyNDU3NjAgfCAw
KSA+Pj4gMTYgJiAyOwogICAgICAgaTYgPSAxNCAtIChpNDQgfCBpNDUgfCBpNikgKyAoaTQ2IDw8
IGk2ID4+PiAxNSkgfCAwOwogICAgICAgaTYgPSBpOSA+Pj4gKGk2ICsgNyB8IDApICYgMSB8IGk2
IDw8IDE7CiAgICAgIH0gZWxzZSBpNiA9IDA7CiAgICAgIGkzID0gMzY0ICsgKGk2IDw8IDIpIHwg
MDsKICAgICAgSEVBUDMyW2kxNiArIDI4ID4+IDJdID0gaTY7CiAgICAgIEhFQVAzMltpMTYgKyAy
MCA+PiAyXSA9IDA7CiAgICAgIEhFQVAzMltpOCA+PiAyXSA9IDA7CiAgICAgIGkyID0gSEVBUDMy
WzE2XSB8IDA7CiAgICAgIGkxID0gMSA8PCBpNjsKICAgICAgaWYgKCEoaTIgJiBpMSkpIHsKICAg
ICAgIEhFQVAzMlsxNl0gPSBpMiB8IGkxOwogICAgICAgSEVBUDMyW2kzID4+IDJdID0gaTE2Owog
ICAgICAgSEVBUDMyW2kxNiArIDI0ID4+IDJdID0gaTM7CiAgICAgICBIRUFQMzJbaTE2ICsgMTIg
Pj4gMl0gPSBpMTY7CiAgICAgICBIRUFQMzJbaTE2ICsgOCA+PiAyXSA9IGkxNjsKICAgICAgIGJy
ZWFrOwogICAgICB9CiAgICAgIGkyID0gSEVBUDMyW2kzID4+IDJdIHwgMDsKICAgICAgTDQyNSA6
IGRvIGlmICgoSEVBUDMyW2kyICsgNCA+PiAyXSAmIC04IHwgMCkgIT0gKGk5IHwgMCkpIHsKICAg
ICAgIGk2ID0gaTkgPDwgKChpNiB8IDApID09IDMxID8gMCA6IDI1IC0gKGk2ID4+PiAxKSB8IDAp
OwogICAgICAgd2hpbGUgKDEpIHsKICAgICAgICBpMSA9IGkyICsgMTYgKyAoaTYgPj4+IDMxIDw8
IDIpIHwgMDsKICAgICAgICBpMyA9IEhFQVAzMltpMSA+PiAyXSB8IDA7CiAgICAgICAgaWYgKCFp
MykgYnJlYWs7CiAgICAgICAgaWYgKChIRUFQMzJbaTMgKyA0ID4+IDJdICYgLTggfCAwKSA9PSAo
aTkgfCAwKSkgewogICAgICAgICBpNDIgPSBpMzsKICAgICAgICAgYnJlYWsgTDQyNTsKICAgICAg
ICB9IGVsc2UgewogICAgICAgICBpNiA9IGk2IDw8IDE7CiAgICAgICAgIGkyID0gaTM7CiAgICAg
ICAgfQogICAgICAgfQogICAgICAgaWYgKGkxID4+PiAwIDwgKEhFQVAzMlsxOV0gfCAwKSA+Pj4g
MCkgX2Fib3J0KCk7IGVsc2UgewogICAgICAgIEhFQVAzMltpMSA+PiAyXSA9IGkxNjsKICAgICAg
ICBIRUFQMzJbaTE2ICsgMjQgPj4gMl0gPSBpMjsKICAgICAgICBIRUFQMzJbaTE2ICsgMTIgPj4g
Ml0gPSBpMTY7CiAgICAgICAgSEVBUDMyW2kxNiArIDggPj4gMl0gPSBpMTY7CiAgICAgICAgYnJl
YWsgTDI3MjsKICAgICAgIH0KICAgICAgfSBlbHNlIGk0MiA9IGkyOyB3aGlsZSAoMCk7CiAgICAg
IGkyID0gaTQyICsgOCB8IDA7CiAgICAgIGkxID0gSEVBUDMyW2kyID4+IDJdIHwgMDsKICAgICAg
aTQ2ID0gSEVBUDMyWzE5XSB8IDA7CiAgICAgIGlmIChpMSA+Pj4gMCA+PSBpNDYgPj4+IDAgJiBp
NDIgPj4+IDAgPj0gaTQ2ID4+PiAwKSB7CiAgICAgICBIRUFQMzJbaTEgKyAxMiA+PiAyXSA9IGkx
NjsKICAgICAgIEhFQVAzMltpMiA+PiAyXSA9IGkxNjsKICAgICAgIEhFQVAzMltpMTYgKyA4ID4+
IDJdID0gaTE7CiAgICAgICBIRUFQMzJbaTE2ICsgMTIgPj4gMl0gPSBpNDI7CiAgICAgICBIRUFQ
MzJbaTE2ICsgMjQgPj4gMl0gPSAwOwogICAgICAgYnJlYWs7CiAgICAgIH0gZWxzZSBfYWJvcnQo
KTsKICAgICB9CiAgICB9IGVsc2UgewogICAgIGk0NiA9IEhFQVAzMlsxOV0gfCAwOwogICAgIGlm
ICgoaTQ2IHwgMCkgPT0gMCB8IGkyNiA+Pj4gMCA8IGk0NiA+Pj4gMCkgSEVBUDMyWzE5XSA9IGky
NjsKICAgICBIRUFQMzJbMTI3XSA9IGkyNjsKICAgICBIRUFQMzJbMTI4XSA9IGkxOTsKICAgICBI
RUFQMzJbMTMwXSA9IDA7CiAgICAgSEVBUDMyWzI0XSA9IEhFQVAzMlsxMzNdOwogICAgIEhFQVAz
MlsyM10gPSAtMTsKICAgICBpMiA9IDA7CiAgICAgZG8gewogICAgICBpNDYgPSBpMiA8PCAxOwog
ICAgICBpNDUgPSAxMDAgKyAoaTQ2IDw8IDIpIHwgMDsKICAgICAgSEVBUDMyWzEwMCArIChpNDYg
KyAzIDw8IDIpID4+IDJdID0gaTQ1OwogICAgICBIRUFQMzJbMTAwICsgKGk0NiArIDIgPDwgMikg
Pj4gMl0gPSBpNDU7CiAgICAgIGkyID0gaTIgKyAxIHwgMDsKICAgICB9IHdoaWxlICgoaTIgfCAw
KSAhPSAzMik7CiAgICAgaTQ2ID0gaTI2ICsgOCB8IDA7CiAgICAgaTQ2ID0gKGk0NiAmIDcgfCAw
KSA9PSAwID8gMCA6IDAgLSBpNDYgJiA3OwogICAgIGk0NSA9IGkxOSArIC00MCAtIGk0NiB8IDA7
CiAgICAgSEVBUDMyWzIxXSA9IGkyNiArIGk0NjsKICAgICBIRUFQMzJbMThdID0gaTQ1OwogICAg
IEhFQVAzMltpMjYgKyAoaTQ2ICsgNCkgPj4gMl0gPSBpNDUgfCAxOwogICAgIEhFQVAzMltpMjYg
KyAoaTE5ICsgLTM2KSA+PiAyXSA9IDQwOwogICAgIEhFQVAzMlsyMl0gPSBIRUFQMzJbMTM3XTsK
ICAgIH0gd2hpbGUgKDApOwogICAgaTEgPSBIRUFQMzJbMThdIHwgMDsKICAgIGlmIChpMSA+Pj4g
MCA+IGkxOCA+Pj4gMCkgewogICAgIGk0NiA9IGkxIC0gaTE4IHwgMDsKICAgICBIRUFQMzJbMThd
ID0gaTQ2OwogICAgIGk1ID0gSEVBUDMyWzIxXSB8IDA7CiAgICAgSEVBUDMyWzIxXSA9IGk1ICsg
aTE4OwogICAgIEhFQVAzMltpNSArIChpMTggKyA0KSA+PiAyXSA9IGk0NiB8IDE7CiAgICAgSEVB
UDMyW2k1ICsgNCA+PiAyXSA9IGkxOCB8IDM7CiAgICAgaTUgPSBpNSArIDggfCAwOwogICAgIGJy
ZWFrOwogICAgfQogICB9CiAgIGk1ID0gX19fZXJybm9fbG9jYXRpb24oKSB8IDA7CiAgIEhFQVAz
MltpNSA+PiAyXSA9IDEyOwogICBpNSA9IDA7CiAgfSBlbHNlIGk1ID0gMDsKIH0gd2hpbGUgKDAp
OwogcmV0dXJuIGk1IHwgMDsKfQoKZnVuY3Rpb24gX3ByaW50Zl9jb3JlKGk1MCwgaTIsIGk1MSwg
aTUyLCBpNTMpIHsKIGk1MCA9IGk1MCB8IDA7CiBpMiA9IGkyIHwgMDsKIGk1MSA9IGk1MSB8IDA7
CiBpNTIgPSBpNTIgfCAwOwogaTUzID0gaTUzIHwgMDsKIHZhciBpMSA9IDAsIGkzID0gMCwgaTQg
PSAwLCBpNSA9IDAsIGQ2ID0gMC4wLCBpNyA9IDAsIGk4ID0gMCwgaTkgPSAwLCBpMTAgPSAwLCBk
MTEgPSAwLjAsIGkxMiA9IDAsIGkxMyA9IDAsIGkxNCA9IDAsIGkxNSA9IDAsIGkxNiA9IDAsIGkx
NyA9IDAsIGkxOCA9IDAsIGkxOSA9IDAsIGkyMCA9IDAsIGkyMSA9IDAsIGkyMiA9IDAsIGkyMyA9
IDAsIGkyNCA9IDAsIGkyNSA9IDAsIGkyNiA9IDAsIGkyNyA9IDAsIGkyOCA9IDAsIGkyOSA9IDAs
IGkzMCA9IDAsIGkzMSA9IDAsIGkzMiA9IDAsIGkzMyA9IDAsIGkzNCA9IDAsIGkzNSA9IDAsIGkz
NiA9IDAsIGkzNyA9IDAsIGkzOCA9IDAsIGkzOSA9IDAsIGk0MCA9IDAsIGk0MSA9IDAsIGk0MiA9
IDAsIGk0MyA9IDAsIGk0NCA9IDAsIGk0NSA9IDAsIGk0NiA9IDAsIGk0NyA9IDAsIGk0OCA9IDAs
IGk0OSA9IDAsIGk1NCA9IDA7CiBpNTQgPSBTVEFDS1RPUDsKIFNUQUNLVE9QID0gU1RBQ0tUT1Ag
KyA2MjQgfCAwOwogaTQ1ID0gaTU0ICsgMjQgfCAwOwogaTQ3ID0gaTU0ICsgMTYgfCAwOwogaTQ2
ID0gaTU0ICsgNTg4IHwgMDsKIGk0MCA9IGk1NCArIDU3NiB8IDA7CiBpNDQgPSBpNTQ7CiBpMzcg
PSBpNTQgKyA1MzYgfCAwOwogaTQ5ID0gaTU0ICsgOCB8IDA7CiBpNDggPSBpNTQgKyA1MjggfCAw
OwogaTI4ID0gKGk1MCB8IDApICE9IDA7CiBpMjkgPSBpMzcgKyA0MCB8IDA7CiBpMzYgPSBpMjk7
CiBpMzcgPSBpMzcgKyAzOSB8IDA7CiBpMzggPSBpNDkgKyA0IHwgMDsKIGkzOSA9IGk0MCArIDEy
IHwgMDsKIGk0MCA9IGk0MCArIDExIHwgMDsKIGk0MSA9IGk0NjsKIGk0MiA9IGkzOTsKIGk0MyA9
IGk0MiAtIGk0MSB8IDA7CiBpMzAgPSAtMiAtIGk0MSB8IDA7CiBpMzEgPSBpNDIgKyAyIHwgMDsK
IGkzMiA9IGk0NSArIDI4OCB8IDA7CiBpMzMgPSBpNDYgKyA5IHwgMDsKIGkzNCA9IGkzMzsKIGkz
NSA9IGk0NiArIDggfCAwOwogaTEyID0gaTI7CiBpMSA9IDA7CiBpMyA9IDA7CiBpMiA9IDA7CiBM
MSA6IHdoaWxlICgxKSB7CiAgZG8gaWYgKChpMSB8IDApID4gLTEpIGlmICgoaTMgfCAwKSA+ICgy
MTQ3NDgzNjQ3IC0gaTEgfCAwKSkgewogICBpMSA9IF9fX2Vycm5vX2xvY2F0aW9uKCkgfCAwOwog
ICBIRUFQMzJbaTEgPj4gMl0gPSA3NTsKICAgaTEgPSAtMTsKICAgYnJlYWs7CiAgfSBlbHNlIHsK
ICAgaTEgPSBpMyArIGkxIHwgMDsKICAgYnJlYWs7CiAgfSB3aGlsZSAoMCk7CiAgaTMgPSBIRUFQ
OFtpMTIgPj4gMF0gfCAwOwogIGlmICghKGkzIDw8IDI0ID4+IDI0KSkgewogICBpMjcgPSAyNDU7
CiAgIGJyZWFrOwogIH0gZWxzZSBpNCA9IGkxMjsKICBMOSA6IHdoaWxlICgxKSB7CiAgIHN3aXRj
aCAoaTMgPDwgMjQgPj4gMjQpIHsKICAgY2FzZSAzNzoKICAgIHsKICAgICBpMyA9IGk0OwogICAg
IGkyNyA9IDk7CiAgICAgYnJlYWsgTDk7CiAgICB9CiAgIGNhc2UgMDoKICAgIHsKICAgICBpMyA9
IGk0OwogICAgIGJyZWFrIEw5OwogICAgfQogICBkZWZhdWx0OgogICAge30KICAgfQogICBpMjYg
PSBpNCArIDEgfCAwOwogICBpMyA9IEhFQVA4W2kyNiA+PiAwXSB8IDA7CiAgIGk0ID0gaTI2Owog
IH0KICBMMTIgOiBkbyBpZiAoKGkyNyB8IDApID09IDkpIHdoaWxlICgxKSB7CiAgIGkyNyA9IDA7
CiAgIGlmICgoSEVBUDhbaTMgKyAxID4+IDBdIHwgMCkgIT0gMzcpIGJyZWFrIEwxMjsKICAgaTQg
PSBpNCArIDEgfCAwOwogICBpMyA9IGkzICsgMiB8IDA7CiAgIGlmICgoSEVBUDhbaTMgPj4gMF0g
fCAwKSA9PSAzNykgaTI3ID0gOTsgZWxzZSBicmVhazsKICB9IHdoaWxlICgwKTsKICBpMTcgPSBp
NCAtIGkxMiB8IDA7CiAgaWYgKGkyOCA/IChIRUFQMzJbaTUwID4+IDJdICYgMzIgfCAwKSA9PSAw
IDogMCkgX19fZndyaXRleChpMTIsIGkxNywgaTUwKSB8IDA7CiAgaWYgKChpNCB8IDApICE9IChp
MTIgfCAwKSkgewogICBpMTIgPSBpMzsKICAgaTMgPSBpMTc7CiAgIGNvbnRpbnVlOwogIH0KICBp
NCA9IGkzICsgMSB8IDA7CiAgaTUgPSBIRUFQOFtpNCA+PiAwXSB8IDA7CiAgaTcgPSAoaTUgPDwg
MjQgPj4gMjQpICsgLTQ4IHwgMDsKICBpZiAoaTcgPj4+IDAgPCAxMCkgewogICBpMjYgPSAoSEVB
UDhbaTMgKyAyID4+IDBdIHwgMCkgPT0gMzY7CiAgIGk0ID0gaTI2ID8gaTMgKyAzIHwgMCA6IGk0
OwogICBpNSA9IEhFQVA4W2k0ID4+IDBdIHwgMDsKICAgaTE4ID0gaTI2ID8gaTcgOiAtMTsKICAg
aTIgPSBpMjYgPyAxIDogaTI7CiAgfSBlbHNlIGkxOCA9IC0xOwogIGkzID0gaTUgPDwgMjQgPj4g
MjQ7CiAgTDI1IDogZG8gaWYgKChpMyAmIC0zMiB8IDApID09IDMyKSB7CiAgIGk3ID0gMDsKICAg
d2hpbGUgKDEpIHsKICAgIGlmICghKDEgPDwgaTMgKyAtMzIgJiA3NTkxMykpIHsKICAgICBpMTAg
PSBpNzsKICAgICBicmVhayBMMjU7CiAgICB9CiAgICBpNyA9IDEgPDwgKGk1IDw8IDI0ID4+IDI0
KSArIC0zMiB8IGk3OwogICAgaTQgPSBpNCArIDEgfCAwOwogICAgaTUgPSBIRUFQOFtpNCA+PiAw
XSB8IDA7CiAgICBpMyA9IGk1IDw8IDI0ID4+IDI0OwogICAgaWYgKChpMyAmIC0zMiB8IDApICE9
IDMyKSB7CiAgICAgaTEwID0gaTc7CiAgICAgYnJlYWs7CiAgICB9CiAgIH0KICB9IGVsc2UgaTEw
ID0gMDsgd2hpbGUgKDApOwogIGRvIGlmIChpNSA8PCAyNCA+PiAyNCA9PSA0MikgewogICBpNSA9
IGk0ICsgMSB8IDA7CiAgIGk3ID0gKEhFQVA4W2k1ID4+IDBdIHwgMCkgKyAtNDggfCAwOwogICBp
ZiAoaTcgPj4+IDAgPCAxMCA/IChIRUFQOFtpNCArIDIgPj4gMF0gfCAwKSA9PSAzNiA6IDApIHsK
ICAgIEhFQVAzMltpNTMgKyAoaTcgPDwgMikgPj4gMl0gPSAxMDsKICAgIGkyID0gMTsKICAgIGk0
ID0gaTQgKyAzIHwgMDsKICAgIGk3ID0gSEVBUDMyW2k1MiArICgoSEVBUDhbaTUgPj4gMF0gfCAw
KSArIC00OCA8PCAzKSA+PiAyXSB8IDA7CiAgIH0gZWxzZSB7CiAgICBpZiAoaTIpIHsKICAgICBp
MSA9IC0xOwogICAgIGJyZWFrIEwxOwogICAgfQogICAgaWYgKCFpMjgpIHsKICAgICBpNCA9IGk1
OwogICAgIGkxNSA9IGkxMDsKICAgICBpMiA9IDA7CiAgICAgaTI2ID0gMDsKICAgICBicmVhazsK
ICAgIH0KICAgIGkyID0gKEhFQVAzMltpNTEgPj4gMl0gfCAwKSArICg0IC0gMSkgJiB+KDQgLSAx
KTsKICAgIGk3ID0gSEVBUDMyW2kyID4+IDJdIHwgMDsKICAgIEhFQVAzMltpNTEgPj4gMl0gPSBp
MiArIDQ7CiAgICBpMiA9IDA7CiAgICBpNCA9IGk1OwogICB9CiAgIGlmICgoaTcgfCAwKSA8IDAp
IHsKICAgIGkxNSA9IGkxMCB8IDgxOTI7CiAgICBpMjYgPSAwIC0gaTcgfCAwOwogICB9IGVsc2Ug
ewogICAgaTE1ID0gaTEwOwogICAgaTI2ID0gaTc7CiAgIH0KICB9IGVsc2UgewogICBpNSA9IChp
NSA8PCAyNCA+PiAyNCkgKyAtNDggfCAwOwogICBpZiAoaTUgPj4+IDAgPCAxMCkgewogICAgaTcg
PSAwOwogICAgZG8gewogICAgIGk3ID0gKGk3ICogMTAgfCAwKSArIGk1IHwgMDsKICAgICBpNCA9
IGk0ICsgMSB8IDA7CiAgICAgaTUgPSAoSEVBUDhbaTQgPj4gMF0gfCAwKSArIC00OCB8IDA7CiAg
ICB9IHdoaWxlIChpNSA+Pj4gMCA8IDEwKTsKICAgIGlmICgoaTcgfCAwKSA8IDApIHsKICAgICBp
MSA9IC0xOwogICAgIGJyZWFrIEwxOwogICAgfSBlbHNlIHsKICAgICBpMTUgPSBpMTA7CiAgICAg
aTI2ID0gaTc7CiAgICB9CiAgIH0gZWxzZSB7CiAgICBpMTUgPSBpMTA7CiAgICBpMjYgPSAwOwog
ICB9CiAgfSB3aGlsZSAoMCk7CiAgTDQ2IDogZG8gaWYgKChIRUFQOFtpNCA+PiAwXSB8IDApID09
IDQ2KSB7CiAgIGk1ID0gaTQgKyAxIHwgMDsKICAgaTcgPSBIRUFQOFtpNSA+PiAwXSB8IDA7CiAg
IGlmIChpNyA8PCAyNCA+PiAyNCAhPSA0MikgewogICAgaTMgPSAoaTcgPDwgMjQgPj4gMjQpICsg
LTQ4IHwgMDsKICAgIGlmIChpMyA+Pj4gMCA8IDEwKSB7CiAgICAgaTQgPSBpNTsKICAgICBpNyA9
IDA7CiAgICB9IGVsc2UgewogICAgIGk0ID0gaTU7CiAgICAgaTE2ID0gMDsKICAgICBicmVhazsK
ICAgIH0KICAgIHdoaWxlICgxKSB7CiAgICAgaTcgPSAoaTcgKiAxMCB8IDApICsgaTMgfCAwOwog
ICAgIGk0ID0gaTQgKyAxIHwgMDsKICAgICBpMyA9IChIRUFQOFtpNCA+PiAwXSB8IDApICsgLTQ4
IHwgMDsKICAgICBpZiAoaTMgPj4+IDAgPj0gMTApIHsKICAgICAgaTE2ID0gaTc7CiAgICAgIGJy
ZWFrIEw0NjsKICAgICB9CiAgICB9CiAgIH0KICAgaTUgPSBpNCArIDIgfCAwOwogICBpNyA9IChI
RUFQOFtpNSA+PiAwXSB8IDApICsgLTQ4IHwgMDsKICAgaWYgKGk3ID4+PiAwIDwgMTAgPyAoSEVB
UDhbaTQgKyAzID4+IDBdIHwgMCkgPT0gMzYgOiAwKSB7CiAgICBIRUFQMzJbaTUzICsgKGk3IDw8
IDIpID4+IDJdID0gMTA7CiAgICBpNCA9IGk0ICsgNCB8IDA7CiAgICBpMTYgPSBIRUFQMzJbaTUy
ICsgKChIRUFQOFtpNSA+PiAwXSB8IDApICsgLTQ4IDw8IDMpID4+IDJdIHwgMDsKICAgIGJyZWFr
OwogICB9CiAgIGlmIChpMikgewogICAgaTEgPSAtMTsKICAgIGJyZWFrIEwxOwogICB9CiAgIGlm
IChpMjgpIHsKICAgIGk0ID0gKEhFQVAzMltpNTEgPj4gMl0gfCAwKSArICg0IC0gMSkgJiB+KDQg
LSAxKTsKICAgIGkxNiA9IEhFQVAzMltpNCA+PiAyXSB8IDA7CiAgICBIRUFQMzJbaTUxID4+IDJd
ID0gaTQgKyA0OwogICAgaTQgPSBpNTsKICAgfSBlbHNlIHsKICAgIGk0ID0gaTU7CiAgICBpMTYg
PSAwOwogICB9CiAgfSBlbHNlIGkxNiA9IC0xOyB3aGlsZSAoMCk7CiAgaTEwID0gMDsKICB3aGls
ZSAoMSkgewogICBpNyA9IChIRUFQOFtpNCA+PiAwXSB8IDApICsgLTY1IHwgMDsKICAgaWYgKGk3
ID4+PiAwID4gNTcpIHsKICAgIGkxID0gLTE7CiAgICBicmVhayBMMTsKICAgfQogICBpOCA9IGk0
ICsgMSB8IDA7CiAgIGk1ID0gSEVBUDhbMzYzOCArIChpMTAgKiA1OCB8IDApICsgaTcgPj4gMF0g
fCAwOwogICBpNyA9IGk1ICYgMjU1OwogICBpZiAoKGk3ICsgLTEgfCAwKSA+Pj4gMCA8IDgpIHsK
ICAgIGk0ID0gaTg7CiAgICBpMTAgPSBpNzsKICAgfSBlbHNlIHsKICAgIGkyNSA9IGk4OwogICAg
YnJlYWs7CiAgIH0KICB9CiAgaWYgKCEoaTUgPDwgMjQgPj4gMjQpKSB7CiAgIGkxID0gLTE7CiAg
IGJyZWFrOwogIH0KICBpOCA9IChpMTggfCAwKSA+IC0xOwogIGRvIGlmIChpNSA8PCAyNCA+PiAy
NCA9PSAxOSkgaWYgKGk4KSB7CiAgIGkxID0gLTE7CiAgIGJyZWFrIEwxOwogIH0gZWxzZSBpMjcg
PSA1MjsgZWxzZSB7CiAgIGlmIChpOCkgewogICAgSEVBUDMyW2k1MyArIChpMTggPDwgMikgPj4g
Ml0gPSBpNzsKICAgIGk4ID0gaTUyICsgKGkxOCA8PCAzKSB8IDA7CiAgICBpOSA9IEhFQVAzMltp
OCArIDQgPj4gMl0gfCAwOwogICAgaTI3ID0gaTQ0OwogICAgSEVBUDMyW2kyNyA+PiAyXSA9IEhF
QVAzMltpOCA+PiAyXTsKICAgIEhFQVAzMltpMjcgKyA0ID4+IDJdID0gaTk7CiAgICBpMjcgPSA1
MjsKICAgIGJyZWFrOwogICB9CiAgIGlmICghaTI4KSB7CiAgICBpMSA9IDA7CiAgICBicmVhayBM
MTsKICAgfQogICBfcG9wX2FyZzMzOShpNDQsIGk3LCBpNTEpOwogIH0gd2hpbGUgKDApOwogIGlm
ICgoaTI3IHwgMCkgPT0gNTIgPyAoaTI3ID0gMCwgIWkyOCkgOiAwKSB7CiAgIGkxMiA9IGkyNTsK
ICAgaTMgPSBpMTc7CiAgIGNvbnRpbnVlOwogIH0KICBpMjAgPSBIRUFQOFtpNCA+PiAwXSB8IDA7
CiAgaTIwID0gKGkxMCB8IDApICE9IDAgJiAoaTIwICYgMTUgfCAwKSA9PSAzID8gaTIwICYgLTMz
IDogaTIwOwogIGk1ID0gaTE1ICYgLTY1NTM3OwogIGkyNCA9IChpMTUgJiA4MTkyIHwgMCkgPT0g
MCA/IGkxNSA6IGk1OwogIEw3NSA6IGRvIHN3aXRjaCAoaTIwIHwgMCkgewogIGNhc2UgMTEwOgog
ICBzd2l0Y2ggKGkxMCB8IDApIHsKICAgY2FzZSAwOgogICAgewogICAgIEhFQVAzMltIRUFQMzJb
aTQ0ID4+IDJdID4+IDJdID0gaTE7CiAgICAgaTEyID0gaTI1OwogICAgIGkzID0gaTE3OwogICAg
IGNvbnRpbnVlIEwxOwogICAgfQogICBjYXNlIDE6CiAgICB7CiAgICAgSEVBUDMyW0hFQVAzMltp
NDQgPj4gMl0gPj4gMl0gPSBpMTsKICAgICBpMTIgPSBpMjU7CiAgICAgaTMgPSBpMTc7CiAgICAg
Y29udGludWUgTDE7CiAgICB9CiAgIGNhc2UgMjoKICAgIHsKICAgICBpMTIgPSBIRUFQMzJbaTQ0
ID4+IDJdIHwgMDsKICAgICBIRUFQMzJbaTEyID4+IDJdID0gaTE7CiAgICAgSEVBUDMyW2kxMiAr
IDQgPj4gMl0gPSAoKGkxIHwgMCkgPCAwKSA8PCAzMSA+PiAzMTsKICAgICBpMTIgPSBpMjU7CiAg
ICAgaTMgPSBpMTc7CiAgICAgY29udGludWUgTDE7CiAgICB9CiAgIGNhc2UgMzoKICAgIHsKICAg
ICBIRUFQMTZbSEVBUDMyW2k0NCA+PiAyXSA+PiAxXSA9IGkxOwogICAgIGkxMiA9IGkyNTsKICAg
ICBpMyA9IGkxNzsKICAgICBjb250aW51ZSBMMTsKICAgIH0KICAgY2FzZSA0OgogICAgewogICAg
IEhFQVA4W0hFQVAzMltpNDQgPj4gMl0gPj4gMF0gPSBpMTsKICAgICBpMTIgPSBpMjU7CiAgICAg
aTMgPSBpMTc7CiAgICAgY29udGludWUgTDE7CiAgICB9CiAgIGNhc2UgNjoKICAgIHsKICAgICBI
RUFQMzJbSEVBUDMyW2k0NCA+PiAyXSA+PiAyXSA9IGkxOwogICAgIGkxMiA9IGkyNTsKICAgICBp
MyA9IGkxNzsKICAgICBjb250aW51ZSBMMTsKICAgIH0KICAgY2FzZSA3OgogICAgewogICAgIGkx
MiA9IEhFQVAzMltpNDQgPj4gMl0gfCAwOwogICAgIEhFQVAzMltpMTIgPj4gMl0gPSBpMTsKICAg
ICBIRUFQMzJbaTEyICsgNCA+PiAyXSA9ICgoaTEgfCAwKSA8IDApIDw8IDMxID4+IDMxOwogICAg
IGkxMiA9IGkyNTsKICAgICBpMyA9IGkxNzsKICAgICBjb250aW51ZSBMMTsKICAgIH0KICAgZGVm
YXVsdDoKICAgIHsKICAgICBpMTIgPSBpMjU7CiAgICAgaTMgPSBpMTc7CiAgICAgY29udGludWUg
TDE7CiAgICB9CiAgIH0KICBjYXNlIDExMjoKICAgewogICAgaTEwID0gaTI0IHwgODsKICAgIGk0
ID0gaTE2ID4+PiAwID4gOCA/IGkxNiA6IDg7CiAgICBpOSA9IDEyMDsKICAgIGkyNyA9IDY0Owog
ICAgYnJlYWs7CiAgIH0KICBjYXNlIDg4OgogIGNhc2UgMTIwOgogICB7CiAgICBpMTAgPSBpMjQ7
CiAgICBpNCA9IGkxNjsKICAgIGk5ID0gaTIwOwogICAgaTI3ID0gNjQ7CiAgICBicmVhazsKICAg
fQogIGNhc2UgMTExOgogICB7CiAgICBpNSA9IGk0NDsKICAgIGk0ID0gSEVBUDMyW2k1ID4+IDJd
IHwgMDsKICAgIGk1ID0gSEVBUDMyW2k1ICsgNCA+PiAyXSB8IDA7CiAgICBpZiAoKGk0IHwgMCkg
PT0gMCAmIChpNSB8IDApID09IDApIGkzID0gaTI5OyBlbHNlIHsKICAgICBpMyA9IGkyOTsKICAg
ICBkbyB7CiAgICAgIGkzID0gaTMgKyAtMSB8IDA7CiAgICAgIEhFQVA4W2kzID4+IDBdID0gaTQg
JiA3IHwgNDg7CiAgICAgIGk0ID0gX2JpdHNoaWZ0NjRMc2hyKGk0IHwgMCwgaTUgfCAwLCAzKSB8
IDA7CiAgICAgIGk1ID0gdGVtcFJldDA7CiAgICAgfSB3aGlsZSAoISgoaTQgfCAwKSA9PSAwICYg
KGk1IHwgMCkgPT0gMCkpOwogICAgfQogICAgaWYgKCEoaTI0ICYgOCkpIHsKICAgICBpNyA9IGky
NDsKICAgICBpNCA9IGkxNjsKICAgICBpOCA9IDA7CiAgICAgaTkgPSA0MTE4OwogICAgIGkyNyA9
IDc3OwogICAgfSBlbHNlIHsKICAgICBpNCA9IGkzNiAtIGkzICsgMSB8IDA7CiAgICAgaTcgPSBp
MjQ7CiAgICAgaTQgPSAoaTE2IHwgMCkgPCAoaTQgfCAwKSA/IGk0IDogaTE2OwogICAgIGk4ID0g
MDsKICAgICBpOSA9IDQxMTg7CiAgICAgaTI3ID0gNzc7CiAgICB9CiAgICBicmVhazsKICAgfQog
IGNhc2UgMTA1OgogIGNhc2UgMTAwOgogICB7CiAgICBpMyA9IGk0NDsKICAgIGk0ID0gSEVBUDMy
W2kzID4+IDJdIHwgMDsKICAgIGkzID0gSEVBUDMyW2kzICsgNCA+PiAyXSB8IDA7CiAgICBpZiAo
KGkzIHwgMCkgPCAwKSB7CiAgICAgaTQgPSBfaTY0U3VidHJhY3QoMCwgMCwgaTQgfCAwLCBpMyB8
IDApIHwgMDsKICAgICBpMyA9IHRlbXBSZXQwOwogICAgIGk4ID0gaTQ0OwogICAgIEhFQVAzMltp
OCA+PiAyXSA9IGk0OwogICAgIEhFQVAzMltpOCArIDQgPj4gMl0gPSBpMzsKICAgICBpOCA9IDE7
CiAgICAgaTUgPSA0MTE4OwogICAgIGkyNyA9IDc2OwogICAgIGJyZWFrIEw3NTsKICAgIH0KICAg
IGlmICghKGkyNCAmIDIwNDgpKSB7CiAgICAgaTUgPSBpMjQgJiAxOwogICAgIGk4ID0gaTU7CiAg
ICAgaTUgPSAoaTUgfCAwKSA9PSAwID8gNDExOCA6IDQxMjA7CiAgICAgaTI3ID0gNzY7CiAgICB9
IGVsc2UgewogICAgIGk4ID0gMTsKICAgICBpNSA9IDQxMTk7CiAgICAgaTI3ID0gNzY7CiAgICB9
CiAgICBicmVhazsKICAgfQogIGNhc2UgMTE3OgogICB7CiAgICBpMyA9IGk0NDsKICAgIGk0ID0g
SEVBUDMyW2kzID4+IDJdIHwgMDsKICAgIGkzID0gSEVBUDMyW2kzICsgNCA+PiAyXSB8IDA7CiAg
ICBpOCA9IDA7CiAgICBpNSA9IDQxMTg7CiAgICBpMjcgPSA3NjsKICAgIGJyZWFrOwogICB9CiAg
Y2FzZSA5OToKICAgewogICAgSEVBUDhbaTM3ID4+IDBdID0gSEVBUDMyW2k0NCA+PiAyXTsKICAg
IGkxMiA9IGkzNzsKICAgIGk0ID0gMTsKICAgIGkxMCA9IDA7CiAgICBpOSA9IDQxMTg7CiAgICBp
NyA9IGkyOTsKICAgIGJyZWFrOwogICB9CiAgY2FzZSAxMDk6CiAgIHsKICAgIGk3ID0gX19fZXJy
bm9fbG9jYXRpb24oKSB8IDA7CiAgICBpNyA9IF9zdHJlcnJvcihIRUFQMzJbaTcgPj4gMl0gfCAw
KSB8IDA7CiAgICBpMjcgPSA4MjsKICAgIGJyZWFrOwogICB9CiAgY2FzZSAxMTU6CiAgIHsKICAg
IGk3ID0gSEVBUDMyW2k0NCA+PiAyXSB8IDA7CiAgICBpNyA9IChpNyB8IDApICE9IDAgPyBpNyA6
IDQxMjg7CiAgICBpMjcgPSA4MjsKICAgIGJyZWFrOwogICB9CiAgY2FzZSA2NzoKICAgewogICAg
SEVBUDMyW2k0OSA+PiAyXSA9IEhFQVAzMltpNDQgPj4gMl07CiAgICBIRUFQMzJbaTM4ID4+IDJd
ID0gMDsKICAgIEhFQVAzMltpNDQgPj4gMl0gPSBpNDk7CiAgICBpMyA9IC0xOwogICAgaTI3ID0g
ODY7CiAgICBicmVhazsKICAgfQogIGNhc2UgODM6CiAgIHsKICAgIGlmICghaTE2KSB7CiAgICAg
X3BhZChpNTAsIDMyLCBpMjYsIDAsIGkyNCk7CiAgICAgaTUgPSAwOwogICAgIGkyNyA9IDk4Owog
ICAgfSBlbHNlIHsKICAgICBpMyA9IGkxNjsKICAgICBpMjcgPSA4NjsKICAgIH0KICAgIGJyZWFr
OwogICB9CiAgY2FzZSA2NToKICBjYXNlIDcxOgogIGNhc2UgNzA6CiAgY2FzZSA2OToKICBjYXNl
IDk3OgogIGNhc2UgMTAzOgogIGNhc2UgMTAyOgogIGNhc2UgMTAxOgogICB7CiAgICBkNiA9ICtI
RUFQRjY0W2k0NCA+PiAzXTsKICAgIEhFQVAzMltpNDcgPj4gMl0gPSAwOwogICAgSEVBUEY2NFt0
ZW1wRG91YmxlUHRyID4+IDNdID0gZDY7CiAgICBpZiAoKEhFQVAzMlt0ZW1wRG91YmxlUHRyICsg
NCA+PiAyXSB8IDApID49IDApIGlmICghKGkyNCAmIDIwNDgpKSB7CiAgICAgaTIzID0gaTI0ICYg
MTsKICAgICBpMjIgPSBpMjM7CiAgICAgaTIzID0gKGkyMyB8IDApID09IDAgPyA0MTM2IDogNDE0
MTsKICAgIH0gZWxzZSB7CiAgICAgaTIyID0gMTsKICAgICBpMjMgPSA0MTM4OwogICAgfSBlbHNl
IHsKICAgICBkNiA9IC1kNjsKICAgICBpMjIgPSAxOwogICAgIGkyMyA9IDQxMzU7CiAgICB9CiAg
ICBIRUFQRjY0W3RlbXBEb3VibGVQdHIgPj4gM10gPSBkNjsKICAgIGkxMCA9IEhFQVAzMlt0ZW1w
RG91YmxlUHRyICsgNCA+PiAyXSAmIDIxNDY0MzUwNzI7CiAgICBkbyBpZiAoaTEwID4+PiAwIDwg
MjE0NjQzNTA3MiB8IChpMTAgfCAwKSA9PSAyMTQ2NDM1MDcyICYgMCA8IDApIHsKICAgICBkMTEg
PSArX2ZyZXhwbChkNiwgaTQ3KSAqIDIuMDsKICAgICBpOCA9IGQxMSAhPSAwLjA7CiAgICAgaWYg
KGk4KSBIRUFQMzJbaTQ3ID4+IDJdID0gKEhFQVAzMltpNDcgPj4gMl0gfCAwKSArIC0xOwogICAg
IGkxOCA9IGkyMCB8IDMyOwogICAgIGlmICgoaTE4IHwgMCkgPT0gOTcpIHsKICAgICAgaTE0ID0g
aTIwICYgMzI7CiAgICAgIGkxMiA9IChpMTQgfCAwKSA9PSAwID8gaTIzIDogaTIzICsgOSB8IDA7
CiAgICAgIGkxMyA9IGkyMiB8IDI7CiAgICAgIGk3ID0gMTIgLSBpMTYgfCAwOwogICAgICBkbyBp
ZiAoIShpMTYgPj4+IDAgPiAxMSB8IChpNyB8IDApID09IDApKSB7CiAgICAgICBkNiA9IDguMDsK
ICAgICAgIGRvIHsKICAgICAgICBpNyA9IGk3ICsgLTEgfCAwOwogICAgICAgIGQ2ID0gZDYgKiAx
Ni4wOwogICAgICAgfSB3aGlsZSAoKGk3IHwgMCkgIT0gMCk7CiAgICAgICBpZiAoKEhFQVA4W2kx
MiA+PiAwXSB8IDApID09IDQ1KSB7CiAgICAgICAgZDYgPSAtKGQ2ICsgKC1kMTEgLSBkNikpOwog
ICAgICAgIGJyZWFrOwogICAgICAgfSBlbHNlIHsKICAgICAgICBkNiA9IGQxMSArIGQ2IC0gZDY7
CiAgICAgICAgYnJlYWs7CiAgICAgICB9CiAgICAgIH0gZWxzZSBkNiA9IGQxMTsgd2hpbGUgKDAp
OwogICAgICBpNyA9IEhFQVAzMltpNDcgPj4gMl0gfCAwOwogICAgICBpOCA9IChpNyB8IDApIDwg
MCA/IDAgLSBpNyB8IDAgOiBpNzsKICAgICAgaTggPSBfZm10X3UoaTgsICgoaTggfCAwKSA8IDAp
IDw8IDMxID4+IDMxLCBpMzkpIHwgMDsKICAgICAgaWYgKChpOCB8IDApID09IChpMzkgfCAwKSkg
ewogICAgICAgSEVBUDhbaTQwID4+IDBdID0gNDg7CiAgICAgICBpOCA9IGk0MDsKICAgICAgfQog
ICAgICBIRUFQOFtpOCArIC0xID4+IDBdID0gKGk3ID4+IDMxICYgMikgKyA0MzsKICAgICAgaTEw
ID0gaTggKyAtMiB8IDA7CiAgICAgIEhFQVA4W2kxMCA+PiAwXSA9IGkyMCArIDE1OwogICAgICBp
NSA9IChpMTYgfCAwKSA8IDE7CiAgICAgIGk5ID0gKGkyNCAmIDggfCAwKSA9PSAwOwogICAgICBp
NyA9IGk0NjsKICAgICAgZG8gewogICAgICAgaTQgPSB+fmQ2OwogICAgICAgaTggPSBpNyArIDEg
fCAwOwogICAgICAgSEVBUDhbaTcgPj4gMF0gPSBIRUFQVThbNDEwMiArIGk0ID4+IDBdIHwgaTE0
OwogICAgICAgZDYgPSAoZDYgLSArKGk0IHwgMCkpICogMTYuMDsKICAgICAgIGRvIGlmICgoaTgg
LSBpNDEgfCAwKSA9PSAxKSB7CiAgICAgICAgaWYgKGk5ICYgKGk1ICYgZDYgPT0gMC4wKSkgewog
ICAgICAgICBpNyA9IGk4OwogICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgSEVBUDhb
aTggPj4gMF0gPSA0NjsKICAgICAgICBpNyA9IGk3ICsgMiB8IDA7CiAgICAgICB9IGVsc2UgaTcg
PSBpODsgd2hpbGUgKDApOwogICAgICB9IHdoaWxlIChkNiAhPSAwLjApOwogICAgICBpNCA9IChp
MTYgfCAwKSAhPSAwICYgKGkzMCArIGk3IHwgMCkgPCAoaTE2IHwgMCkgPyBpMzEgKyBpMTYgLSBp
MTAgfCAwIDogaTQzIC0gaTEwICsgaTcgfCAwOwogICAgICBpOCA9IGk0ICsgaTEzIHwgMDsKICAg
ICAgX3BhZChpNTAsIDMyLCBpMjYsIGk4LCBpMjQpOwogICAgICBpZiAoIShIRUFQMzJbaTUwID4+
IDJdICYgMzIpKSBfX19md3JpdGV4KGkxMiwgaTEzLCBpNTApIHwgMDsKICAgICAgX3BhZChpNTAs
IDQ4LCBpMjYsIGk4LCBpMjQgXiA2NTUzNik7CiAgICAgIGk3ID0gaTcgLSBpNDEgfCAwOwogICAg
ICBpZiAoIShIRUFQMzJbaTUwID4+IDJdICYgMzIpKSBfX19md3JpdGV4KGk0NiwgaTcsIGk1MCkg
fCAwOwogICAgICBpNSA9IGk0MiAtIGkxMCB8IDA7CiAgICAgIF9wYWQoaTUwLCA0OCwgaTQgLSAo
aTcgKyBpNSkgfCAwLCAwLCAwKTsKICAgICAgaWYgKCEoSEVBUDMyW2k1MCA+PiAyXSAmIDMyKSkg
X19fZndyaXRleChpMTAsIGk1LCBpNTApIHwgMDsKICAgICAgX3BhZChpNTAsIDMyLCBpMjYsIGk4
LCBpMjQgXiA4MTkyKTsKICAgICAgaTMgPSAoaTggfCAwKSA8IChpMjYgfCAwKSA/IGkyNiA6IGk4
OwogICAgICBicmVhazsKICAgICB9CiAgICAgaTQgPSAoaTE2IHwgMCkgPCAwID8gNiA6IGkxNjsK
ICAgICBpZiAoaTgpIHsKICAgICAgaTcgPSAoSEVBUDMyW2k0NyA+PiAyXSB8IDApICsgLTI4IHwg
MDsKICAgICAgSEVBUDMyW2k0NyA+PiAyXSA9IGk3OwogICAgICBkNiA9IGQxMSAqIDI2ODQzNTQ1
Ni4wOwogICAgIH0gZWxzZSB7CiAgICAgIGQ2ID0gZDExOwogICAgICBpNyA9IEhFQVAzMltpNDcg
Pj4gMl0gfCAwOwogICAgIH0KICAgICBpMjEgPSAoaTcgfCAwKSA8IDAgPyBpNDUgOiBpMzI7CiAg
ICAgaTE5ID0gaTIxOwogICAgIGk4ID0gaTIxOwogICAgIGRvIHsKICAgICAgaTEwID0gfn5kNiA+
Pj4gMDsKICAgICAgSEVBUDMyW2k4ID4+IDJdID0gaTEwOwogICAgICBpOCA9IGk4ICsgNCB8IDA7
CiAgICAgIGQ2ID0gKGQ2IC0gKyhpMTAgPj4+IDApKSAqIDEuMGU5OwogICAgIH0gd2hpbGUgKGQ2
ICE9IDAuMCk7CiAgICAgaTEwID0gaTg7CiAgICAgaTggPSBIRUFQMzJbaTQ3ID4+IDJdIHwgMDsK
ICAgICBpZiAoKGk4IHwgMCkgPiAwKSB7CiAgICAgIGk3ID0gaTIxOwogICAgICBkbyB7CiAgICAg
ICBpNSA9IChpOCB8IDApID4gMjkgPyAyOSA6IGk4OwogICAgICAgaTggPSBpMTAgKyAtNCB8IDA7
CiAgICAgICBkbyBpZiAoaTggPj4+IDAgPj0gaTcgPj4+IDApIHsKICAgICAgICBpOSA9IDA7CiAg
ICAgICAgZG8gewogICAgICAgICBpMyA9IF9iaXRzaGlmdDY0U2hsKEhFQVAzMltpOCA+PiAyXSB8
IDAsIDAsIGk1IHwgMCkgfCAwOwogICAgICAgICBpMyA9IF9pNjRBZGQoaTMgfCAwLCB0ZW1wUmV0
MCB8IDAsIGk5IHwgMCwgMCkgfCAwOwogICAgICAgICBpOSA9IHRlbXBSZXQwOwogICAgICAgICBp
MTIgPSBfX191cmVtZGkzKGkzIHwgMCwgaTkgfCAwLCAxZTksIDApIHwgMDsKICAgICAgICAgSEVB
UDMyW2k4ID4+IDJdID0gaTEyOwogICAgICAgICBpOSA9IF9fX3VkaXZkaTMoaTMgfCAwLCBpOSB8
IDAsIDFlOSwgMCkgfCAwOwogICAgICAgICBpOCA9IGk4ICsgLTQgfCAwOwogICAgICAgIH0gd2hp
bGUgKGk4ID4+PiAwID49IGk3ID4+PiAwKTsKICAgICAgICBpZiAoIWk5KSBicmVhazsKICAgICAg
ICBpNyA9IGk3ICsgLTQgfCAwOwogICAgICAgIEhFQVAzMltpNyA+PiAyXSA9IGk5OwogICAgICAg
fSB3aGlsZSAoMCk7CiAgICAgICBpOCA9IGkxMDsKICAgICAgIHdoaWxlICgxKSB7CiAgICAgICAg
aWYgKGk4ID4+PiAwIDw9IGk3ID4+PiAwKSB7CiAgICAgICAgIGkxMCA9IGk4OwogICAgICAgICBi
cmVhazsKICAgICAgICB9CiAgICAgICAgaTkgPSBpOCArIC00IHwgMDsKICAgICAgICBpZiAoIShI
RUFQMzJbaTkgPj4gMl0gfCAwKSkgaTggPSBpOTsgZWxzZSB7CiAgICAgICAgIGkxMCA9IGk4Owog
ICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICB9CiAgICAgICBpOCA9IChIRUFQMzJbaTQ3
ID4+IDJdIHwgMCkgLSBpNSB8IDA7CiAgICAgICBIRUFQMzJbaTQ3ID4+IDJdID0gaTg7CiAgICAg
IH0gd2hpbGUgKChpOCB8IDApID4gMCk7CiAgICAgIGk5ID0gaTc7CiAgICAgfSBlbHNlIGk5ID0g
aTIxOwogICAgIGlmICgoaTggfCAwKSA8IDApIHsKICAgICAgaTE0ID0gKChpNCArIDI1IHwgMCkg
LyA5IHwgMCkgKyAxIHwgMDsKICAgICAgaTEyID0gKGkxOCB8IDApID09IDEwMjsKICAgICAgZG8g
ewogICAgICAgaTEzID0gMCAtIGk4IHwgMDsKICAgICAgIGkxMyA9IChpMTMgfCAwKSA+IDkgPyA5
IDogaTEzOwogICAgICAgZG8gaWYgKGk5ID4+PiAwIDwgaTEwID4+PiAwKSB7CiAgICAgICAgaTcg
PSAoMSA8PCBpMTMpICsgLTEgfCAwOwogICAgICAgIGk1ID0gMWU5ID4+PiBpMTM7CiAgICAgICAg
aTggPSAwOwogICAgICAgIGkzID0gaTk7CiAgICAgICAgZG8gewogICAgICAgICBpMTUgPSBIRUFQ
MzJbaTMgPj4gMl0gfCAwOwogICAgICAgICBIRUFQMzJbaTMgPj4gMl0gPSAoaTE1ID4+PiBpMTMp
ICsgaTg7CiAgICAgICAgIGk4ID0gTWF0aF9pbXVsKGkxNSAmIGk3LCBpNSkgfCAwOwogICAgICAg
ICBpMyA9IGkzICsgNCB8IDA7CiAgICAgICAgfSB3aGlsZSAoaTMgPj4+IDAgPCBpMTAgPj4+IDAp
OwogICAgICAgIGk5ID0gKEhFQVAzMltpOSA+PiAyXSB8IDApID09IDAgPyBpOSArIDQgfCAwIDog
aTk7CiAgICAgICAgaWYgKCFpOCkgYnJlYWs7CiAgICAgICAgSEVBUDMyW2kxMCA+PiAyXSA9IGk4
OwogICAgICAgIGkxMCA9IGkxMCArIDQgfCAwOwogICAgICAgfSBlbHNlIGk5ID0gKEhFQVAzMltp
OSA+PiAyXSB8IDApID09IDAgPyBpOSArIDQgfCAwIDogaTk7IHdoaWxlICgwKTsKICAgICAgIGk4
ID0gaTEyID8gaTIxIDogaTk7CiAgICAgICBpMTAgPSAoaTEwIC0gaTggPj4gMiB8IDApID4gKGkx
NCB8IDApID8gaTggKyAoaTE0IDw8IDIpIHwgMCA6IGkxMDsKICAgICAgIGk4ID0gKEhFQVAzMltp
NDcgPj4gMl0gfCAwKSArIGkxMyB8IDA7CiAgICAgICBIRUFQMzJbaTQ3ID4+IDJdID0gaTg7CiAg
ICAgIH0gd2hpbGUgKChpOCB8IDApIDwgMCk7CiAgICAgIGkzID0gaTk7CiAgICAgfSBlbHNlIGkz
ID0gaTk7CiAgICAgZG8gaWYgKGkzID4+PiAwIDwgaTEwID4+PiAwKSB7CiAgICAgIGk5ID0gKGkx
OSAtIGkzID4+IDIpICogOSB8IDA7CiAgICAgIGk3ID0gSEVBUDMyW2kzID4+IDJdIHwgMDsKICAg
ICAgaWYgKGk3ID4+PiAwIDwgMTApIGJyZWFrOyBlbHNlIGk4ID0gMTA7CiAgICAgIGRvIHsKICAg
ICAgIGk4ID0gaTggKiAxMCB8IDA7CiAgICAgICBpOSA9IGk5ICsgMSB8IDA7CiAgICAgIH0gd2hp
bGUgKGk3ID4+PiAwID49IGk4ID4+PiAwKTsKICAgICB9IGVsc2UgaTkgPSAwOyB3aGlsZSAoMCk7
CiAgICAgaTE3ID0gKGkxOCB8IDApID09IDEwMzsKICAgICBpMTUgPSAoaTQgfCAwKSAhPSAwOwog
ICAgIGk4ID0gaTQgLSAoKGkxOCB8IDApICE9IDEwMiA/IGk5IDogMCkgKyAoKGkxNSAmIGkxNykg
PDwgMzEgPj4gMzEpIHwgMDsKICAgICBpZiAoKGk4IHwgMCkgPCAoKChpMTAgLSBpMTkgPj4gMikg
KiA5IHwgMCkgKyAtOSB8IDApKSB7CiAgICAgIGk1ID0gaTggKyA5MjE2IHwgMDsKICAgICAgaTE0
ID0gKGk1IHwgMCkgLyA5IHwgMDsKICAgICAgaTggPSBpMjEgKyAoaTE0ICsgLTEwMjMgPDwgMikg
fCAwOwogICAgICBpNSA9ICgoaTUgfCAwKSAlIDkgfCAwKSArIDEgfCAwOwogICAgICBpZiAoKGk1
IHwgMCkgPCA5KSB7CiAgICAgICBpNyA9IDEwOwogICAgICAgZG8gewogICAgICAgIGk3ID0gaTcg
KiAxMCB8IDA7CiAgICAgICAgaTUgPSBpNSArIDEgfCAwOwogICAgICAgfSB3aGlsZSAoKGk1IHwg
MCkgIT0gOSk7CiAgICAgIH0gZWxzZSBpNyA9IDEwOwogICAgICBpMTIgPSBIRUFQMzJbaTggPj4g
Ml0gfCAwOwogICAgICBpMTMgPSAoaTEyID4+PiAwKSAlIChpNyA+Pj4gMCkgfCAwOwogICAgICBp
ZiAoKGkxMyB8IDApID09IDAgPyAoaTIxICsgKGkxNCArIC0xMDIyIDw8IDIpIHwgMCkgPT0gKGkx
MCB8IDApIDogMCkgaTcgPSBpMzsgZWxzZSBpMjcgPSAxNjM7CiAgICAgIGRvIGlmICgoaTI3IHwg
MCkgPT0gMTYzKSB7CiAgICAgICBpMjcgPSAwOwogICAgICAgZDYgPSAoKChpMTIgPj4+IDApIC8g
KGk3ID4+PiAwKSB8IDApICYgMSB8IDApID09IDAgPyA5MDA3MTk5MjU0NzQwOTkyLjAgOiA5MDA3
MTk5MjU0NzQwOTk0LjA7CiAgICAgICBpNSA9IChpNyB8IDApIC8gMiB8IDA7CiAgICAgICBkbyBp
ZiAoaTEzID4+PiAwIDwgaTUgPj4+IDApIGQxMSA9IC41OyBlbHNlIHsKICAgICAgICBpZiAoKGkx
MyB8IDApID09IChpNSB8IDApID8gKGkyMSArIChpMTQgKyAtMTAyMiA8PCAyKSB8IDApID09IChp
MTAgfCAwKSA6IDApIHsKICAgICAgICAgZDExID0gMS4wOwogICAgICAgICBicmVhazsKICAgICAg
ICB9CiAgICAgICAgZDExID0gMS41OwogICAgICAgfSB3aGlsZSAoMCk7CiAgICAgICBkbyBpZiAo
aTIyKSB7CiAgICAgICAgaWYgKChIRUFQOFtpMjMgPj4gMF0gfCAwKSAhPSA0NSkgYnJlYWs7CiAg
ICAgICAgZDYgPSAtZDY7CiAgICAgICAgZDExID0gLWQxMTsKICAgICAgIH0gd2hpbGUgKDApOwog
ICAgICAgaTUgPSBpMTIgLSBpMTMgfCAwOwogICAgICAgSEVBUDMyW2k4ID4+IDJdID0gaTU7CiAg
ICAgICBpZiAoIShkNiArIGQxMSAhPSBkNikpIHsKICAgICAgICBpNyA9IGkzOwogICAgICAgIGJy
ZWFrOwogICAgICAgfQogICAgICAgaTkgPSBpNSArIGk3IHwgMDsKICAgICAgIEhFQVAzMltpOCA+
PiAyXSA9IGk5OwogICAgICAgaWYgKGk5ID4+PiAwID4gOTk5OTk5OTk5KSB7CiAgICAgICAgaTkg
PSBpMzsKICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICBpNyA9IGk4ICsgLTQgfCAwOwogICAg
ICAgICBIRUFQMzJbaTggPj4gMl0gPSAwOwogICAgICAgICBpZiAoaTcgPj4+IDAgPCBpOSA+Pj4g
MCkgewogICAgICAgICAgaTkgPSBpOSArIC00IHwgMDsKICAgICAgICAgIEhFQVAzMltpOSA+PiAy
XSA9IDA7CiAgICAgICAgIH0KICAgICAgICAgaTggPSAoSEVBUDMyW2k3ID4+IDJdIHwgMCkgKyAx
IHwgMDsKICAgICAgICAgSEVBUDMyW2k3ID4+IDJdID0gaTg7CiAgICAgICAgIGlmIChpOCA+Pj4g
MCA+IDk5OTk5OTk5OSkgaTggPSBpNzsgZWxzZSB7CiAgICAgICAgICBpMyA9IGk5OwogICAgICAg
ICAgaTggPSBpNzsKICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgfQogICAgICAg
fQogICAgICAgaTkgPSAoaTE5IC0gaTMgPj4gMikgKiA5IHwgMDsKICAgICAgIGk1ID0gSEVBUDMy
W2kzID4+IDJdIHwgMDsKICAgICAgIGlmIChpNSA+Pj4gMCA8IDEwKSB7CiAgICAgICAgaTcgPSBp
MzsKICAgICAgICBicmVhazsKICAgICAgIH0gZWxzZSBpNyA9IDEwOwogICAgICAgZG8gewogICAg
ICAgIGk3ID0gaTcgKiAxMCB8IDA7CiAgICAgICAgaTkgPSBpOSArIDEgfCAwOwogICAgICAgfSB3
aGlsZSAoaTUgPj4+IDAgPj0gaTcgPj4+IDApOwogICAgICAgaTcgPSBpMzsKICAgICAgfSB3aGls
ZSAoMCk7CiAgICAgIGk4ID0gaTggKyA0IHwgMDsKICAgICAgaTMgPSBpNzsKICAgICAgaTEwID0g
aTEwID4+PiAwID4gaTggPj4+IDAgPyBpOCA6IGkxMDsKICAgICB9CiAgICAgaTE0ID0gMCAtIGk5
IHwgMDsKICAgICB3aGlsZSAoMSkgewogICAgICBpZiAoaTEwID4+PiAwIDw9IGkzID4+PiAwKSB7
CiAgICAgICBpMTYgPSAwOwogICAgICAgaTE4ID0gaTEwOwogICAgICAgYnJlYWs7CiAgICAgIH0K
ICAgICAgaTggPSBpMTAgKyAtNCB8IDA7CiAgICAgIGlmICghKEhFQVAzMltpOCA+PiAyXSB8IDAp
KSBpMTAgPSBpODsgZWxzZSB7CiAgICAgICBpMTYgPSAxOwogICAgICAgaTE4ID0gaTEwOwogICAg
ICAgYnJlYWs7CiAgICAgIH0KICAgICB9CiAgICAgZG8gaWYgKGkxNykgewogICAgICBpOCA9IChp
MTUgJiAxIF4gMSkgKyBpNCB8IDA7CiAgICAgIGlmICgoaTggfCAwKSA+IChpOSB8IDApICYgKGk5
IHwgMCkgPiAtNSkgewogICAgICAgaTUgPSBpMjAgKyAtMSB8IDA7CiAgICAgICBpNCA9IGk4ICsg
LTEgLSBpOSB8IDA7CiAgICAgIH0gZWxzZSB7CiAgICAgICBpNSA9IGkyMCArIC0yIHwgMDsKICAg
ICAgIGk0ID0gaTggKyAtMSB8IDA7CiAgICAgIH0KICAgICAgaTEwID0gaTI0ICYgODsKICAgICAg
aWYgKGkxMCkgewogICAgICAgaTEyID0gaTEwOwogICAgICAgYnJlYWs7CiAgICAgIH0KICAgICAg
ZG8gaWYgKGkxNikgewogICAgICAgaTggPSBIRUFQMzJbaTE4ICsgLTQgPj4gMl0gfCAwOwogICAg
ICAgaWYgKCFpOCkgewogICAgICAgIGkxMCA9IDk7CiAgICAgICAgYnJlYWs7CiAgICAgICB9CiAg
ICAgICBpZiAoISgoaTggPj4+IDApICUgMTAgfCAwKSkgewogICAgICAgIGk3ID0gMTA7CiAgICAg
ICAgaTEwID0gMDsKICAgICAgIH0gZWxzZSB7CiAgICAgICAgaTEwID0gMDsKICAgICAgICBicmVh
azsKICAgICAgIH0KICAgICAgIGRvIHsKICAgICAgICBpNyA9IGk3ICogMTAgfCAwOwogICAgICAg
IGkxMCA9IGkxMCArIDEgfCAwOwogICAgICAgfSB3aGlsZSAoKChpOCA+Pj4gMCkgJSAoaTcgPj4+
IDApIHwgMCB8IDApID09IDApOwogICAgICB9IGVsc2UgaTEwID0gOTsgd2hpbGUgKDApOwogICAg
ICBpOCA9ICgoaTE4IC0gaTE5ID4+IDIpICogOSB8IDApICsgLTkgfCAwOwogICAgICBpZiAoKGk1
IHwgMzIgfCAwKSA9PSAxMDIpIHsKICAgICAgIGkxMiA9IGk4IC0gaTEwIHwgMDsKICAgICAgIGkx
MiA9IChpMTIgfCAwKSA8IDAgPyAwIDogaTEyOwogICAgICAgaTQgPSAoaTQgfCAwKSA8IChpMTIg
fCAwKSA/IGk0IDogaTEyOwogICAgICAgaTEyID0gMDsKICAgICAgIGJyZWFrOwogICAgICB9IGVs
c2UgewogICAgICAgaTEyID0gaTggKyBpOSAtIGkxMCB8IDA7CiAgICAgICBpMTIgPSAoaTEyIHwg
MCkgPCAwID8gMCA6IGkxMjsKICAgICAgIGk0ID0gKGk0IHwgMCkgPCAoaTEyIHwgMCkgPyBpNCA6
IGkxMjsKICAgICAgIGkxMiA9IDA7CiAgICAgICBicmVhazsKICAgICAgfQogICAgIH0gZWxzZSB7
CiAgICAgIGk1ID0gaTIwOwogICAgICBpMTIgPSBpMjQgJiA4OwogICAgIH0gd2hpbGUgKDApOwog
ICAgIGkxNSA9IGk0IHwgaTEyOwogICAgIGk4ID0gKGkxNSB8IDApICE9IDAgJiAxOwogICAgIGkx
MyA9IChpNSB8IDMyIHwgMCkgPT0gMTAyOwogICAgIGlmIChpMTMpIHsKICAgICAgaTEwID0gKGk5
IHwgMCkgPiAwID8gaTkgOiAwOwogICAgICBpMTQgPSAwOwogICAgIH0gZWxzZSB7CiAgICAgIGkx
MCA9IChpOSB8IDApIDwgMCA/IGkxNCA6IGk5OwogICAgICBpMTAgPSBfZm10X3UoaTEwLCAoKGkx
MCB8IDApIDwgMCkgPDwgMzEgPj4gMzEsIGkzOSkgfCAwOwogICAgICBpZiAoKGk0MiAtIGkxMCB8
IDApIDwgMikgZG8gewogICAgICAgaTEwID0gaTEwICsgLTEgfCAwOwogICAgICAgSEVBUDhbaTEw
ID4+IDBdID0gNDg7CiAgICAgIH0gd2hpbGUgKChpNDIgLSBpMTAgfCAwKSA8IDIpOwogICAgICBI
RUFQOFtpMTAgKyAtMSA+PiAwXSA9IChpOSA+PiAzMSAmIDIpICsgNDM7CiAgICAgIGkxNCA9IGkx
MCArIC0yIHwgMDsKICAgICAgSEVBUDhbaTE0ID4+IDBdID0gaTU7CiAgICAgIGkxMCA9IGk0MiAt
IGkxNCB8IDA7CiAgICAgfQogICAgIGkxNyA9IGkyMiArIDEgKyBpNCArIGk4ICsgaTEwIHwgMDsK
ICAgICBfcGFkKGk1MCwgMzIsIGkyNiwgaTE3LCBpMjQpOwogICAgIGlmICghKEhFQVAzMltpNTAg
Pj4gMl0gJiAzMikpIF9fX2Z3cml0ZXgoaTIzLCBpMjIsIGk1MCkgfCAwOwogICAgIF9wYWQoaTUw
LCA0OCwgaTI2LCBpMTcsIGkyNCBeIDY1NTM2KTsKICAgICBkbyBpZiAoaTEzKSB7CiAgICAgIGkx
MCA9IGkzID4+PiAwID4gaTIxID4+PiAwID8gaTIxIDogaTM7CiAgICAgIGk3ID0gaTEwOwogICAg
ICBkbyB7CiAgICAgICBpOCA9IF9mbXRfdShIRUFQMzJbaTcgPj4gMl0gfCAwLCAwLCBpMzMpIHwg
MDsKICAgICAgIGRvIGlmICgoaTcgfCAwKSA9PSAoaTEwIHwgMCkpIHsKICAgICAgICBpZiAoKGk4
IHwgMCkgIT0gKGkzMyB8IDApKSBicmVhazsKICAgICAgICBIRUFQOFtpMzUgPj4gMF0gPSA0ODsK
ICAgICAgICBpOCA9IGkzNTsKICAgICAgIH0gZWxzZSB7CiAgICAgICAgaWYgKGk4ID4+PiAwIDw9
IGk0NiA+Pj4gMCkgYnJlYWs7CiAgICAgICAgZG8gewogICAgICAgICBpOCA9IGk4ICsgLTEgfCAw
OwogICAgICAgICBIRUFQOFtpOCA+PiAwXSA9IDQ4OwogICAgICAgIH0gd2hpbGUgKGk4ID4+PiAw
ID4gaTQ2ID4+PiAwKTsKICAgICAgIH0gd2hpbGUgKDApOwogICAgICAgaWYgKCEoSEVBUDMyW2k1
MCA+PiAyXSAmIDMyKSkgX19fZndyaXRleChpOCwgaTM0IC0gaTggfCAwLCBpNTApIHwgMDsKICAg
ICAgIGk3ID0gaTcgKyA0IHwgMDsKICAgICAgfSB3aGlsZSAoaTcgPj4+IDAgPD0gaTIxID4+PiAw
KTsKICAgICAgZG8gaWYgKGkxNSkgewogICAgICAgaWYgKEhFQVAzMltpNTAgPj4gMl0gJiAzMikg
YnJlYWs7CiAgICAgICBfX19md3JpdGV4KDQxNzAsIDEsIGk1MCkgfCAwOwogICAgICB9IHdoaWxl
ICgwKTsKICAgICAgaWYgKChpNCB8IDApID4gMCAmIGk3ID4+PiAwIDwgaTE4ID4+PiAwKSB7CiAg
ICAgICBpNSA9IGk0OwogICAgICAgaTggPSBpNzsKICAgICAgIHdoaWxlICgxKSB7CiAgICAgICAg
aTcgPSBfZm10X3UoSEVBUDMyW2k4ID4+IDJdIHwgMCwgMCwgaTMzKSB8IDA7CiAgICAgICAgaWYg
KGk3ID4+PiAwID4gaTQ2ID4+PiAwKSBkbyB7CiAgICAgICAgIGk3ID0gaTcgKyAtMSB8IDA7CiAg
ICAgICAgIEhFQVA4W2k3ID4+IDBdID0gNDg7CiAgICAgICAgfSB3aGlsZSAoaTcgPj4+IDAgPiBp
NDYgPj4+IDApOwogICAgICAgIGlmICghKEhFQVAzMltpNTAgPj4gMl0gJiAzMikpIF9fX2Z3cml0
ZXgoaTcsIChpNSB8IDApID4gOSA/IDkgOiBpNSwgaTUwKSB8IDA7CiAgICAgICAgaTggPSBpOCAr
IDQgfCAwOwogICAgICAgIGk0ID0gaTUgKyAtOSB8IDA7CiAgICAgICAgaWYgKCEoKGk1IHwgMCkg
PiA5ICYgaTggPj4+IDAgPCBpMTggPj4+IDApKSBicmVhazsgZWxzZSBpNSA9IGk0OwogICAgICAg
fQogICAgICB9CiAgICAgIF9wYWQoaTUwLCA0OCwgaTQgKyA5IHwgMCwgOSwgMCk7CiAgICAgfSBl
bHNlIHsKICAgICAgaTUgPSBpMTYgPyBpMTggOiBpMyArIDQgfCAwOwogICAgICBpZiAoKGk0IHwg
MCkgPiAtMSkgewogICAgICAgaTkgPSAoaTEyIHwgMCkgPT0gMDsKICAgICAgIGkxMCA9IGkzOwog
ICAgICAgZG8gewogICAgICAgIGk4ID0gX2ZtdF91KEhFQVAzMltpMTAgPj4gMl0gfCAwLCAwLCBp
MzMpIHwgMDsKICAgICAgICBpZiAoKGk4IHwgMCkgPT0gKGkzMyB8IDApKSB7CiAgICAgICAgIEhF
QVA4W2kzNSA+PiAwXSA9IDQ4OwogICAgICAgICBpOCA9IGkzNTsKICAgICAgICB9CiAgICAgICAg
ZG8gaWYgKChpMTAgfCAwKSA9PSAoaTMgfCAwKSkgewogICAgICAgICBpNyA9IGk4ICsgMSB8IDA7
CiAgICAgICAgIGlmICghKEhFQVAzMltpNTAgPj4gMl0gJiAzMikpIF9fX2Z3cml0ZXgoaTgsIDEs
IGk1MCkgfCAwOwogICAgICAgICBpZiAoaTkgJiAoaTQgfCAwKSA8IDEpIHsKICAgICAgICAgIGk4
ID0gaTc7CiAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBpZiAoSEVBUDMyW2k1
MCA+PiAyXSAmIDMyKSB7CiAgICAgICAgICBpOCA9IGk3OwogICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgX19fZndyaXRleCg0MTcwLCAxLCBpNTApIHwgMDsKICAgICAgICAgaTgg
PSBpNzsKICAgICAgICB9IGVsc2UgewogICAgICAgICBpZiAoaTggPj4+IDAgPD0gaTQ2ID4+PiAw
KSBicmVhazsKICAgICAgICAgZG8gewogICAgICAgICAgaTggPSBpOCArIC0xIHwgMDsKICAgICAg
ICAgIEhFQVA4W2k4ID4+IDBdID0gNDg7CiAgICAgICAgIH0gd2hpbGUgKGk4ID4+PiAwID4gaTQ2
ID4+PiAwKTsKICAgICAgICB9IHdoaWxlICgwKTsKICAgICAgICBpNyA9IGkzNCAtIGk4IHwgMDsK
ICAgICAgICBpZiAoIShIRUFQMzJbaTUwID4+IDJdICYgMzIpKSBfX19md3JpdGV4KGk4LCAoaTQg
fCAwKSA+IChpNyB8IDApID8gaTcgOiBpNCwgaTUwKSB8IDA7CiAgICAgICAgaTQgPSBpNCAtIGk3
IHwgMDsKICAgICAgICBpMTAgPSBpMTAgKyA0IHwgMDsKICAgICAgIH0gd2hpbGUgKGkxMCA+Pj4g
MCA8IGk1ID4+PiAwICYgKGk0IHwgMCkgPiAtMSk7CiAgICAgIH0KICAgICAgX3BhZChpNTAsIDQ4
LCBpNCArIDE4IHwgMCwgMTgsIDApOwogICAgICBpZiAoSEVBUDMyW2k1MCA+PiAyXSAmIDMyKSBi
cmVhazsKICAgICAgX19fZndyaXRleChpMTQsIGk0MiAtIGkxNCB8IDAsIGk1MCkgfCAwOwogICAg
IH0gd2hpbGUgKDApOwogICAgIF9wYWQoaTUwLCAzMiwgaTI2LCBpMTcsIGkyNCBeIDgxOTIpOwog
ICAgIGkzID0gKGkxNyB8IDApIDwgKGkyNiB8IDApID8gaTI2IDogaTE3OwogICAgfSBlbHNlIHsK
ICAgICBpMyA9IChpMjAgJiAzMiB8IDApICE9IDA7CiAgICAgaTQgPSBkNiAhPSBkNiB8IDAuMCAh
PSAwLjA7CiAgICAgaTcgPSBpNCA/IDAgOiBpMjI7CiAgICAgaTggPSBpNyArIDMgfCAwOwogICAg
IF9wYWQoaTUwLCAzMiwgaTI2LCBpOCwgaTUpOwogICAgIGk1ID0gSEVBUDMyW2k1MCA+PiAyXSB8
IDA7CiAgICAgaWYgKCEoaTUgJiAzMikpIHsKICAgICAgX19fZndyaXRleChpMjMsIGk3LCBpNTAp
IHwgMDsKICAgICAgaTUgPSBIRUFQMzJbaTUwID4+IDJdIHwgMDsKICAgICB9CiAgICAgaWYgKCEo
aTUgJiAzMikpIF9fX2Z3cml0ZXgoaTQgPyAoaTMgPyA0MTYyIDogNDE2NikgOiBpMyA/IDQxNTQg
OiA0MTU4LCAzLCBpNTApIHwgMDsKICAgICBfcGFkKGk1MCwgMzIsIGkyNiwgaTgsIGkyNCBeIDgx
OTIpOwogICAgIGkzID0gKGk4IHwgMCkgPCAoaTI2IHwgMCkgPyBpMjYgOiBpODsKICAgIH0gd2hp
bGUgKDApOwogICAgaTEyID0gaTI1OwogICAgY29udGludWUgTDE7CiAgIH0KICBkZWZhdWx0Ogog
ICB7CiAgICBpNSA9IGkyNDsKICAgIGk0ID0gaTE2OwogICAgaTEwID0gMDsKICAgIGk5ID0gNDEx
ODsKICAgIGk3ID0gaTI5OwogICB9CiAgfSB3aGlsZSAoMCk7CiAgTDMxMyA6IGRvIGlmICgoaTI3
IHwgMCkgPT0gNjQpIHsKICAgaTUgPSBpNDQ7CiAgIGk3ID0gSEVBUDMyW2k1ID4+IDJdIHwgMDsK
ICAgaTUgPSBIRUFQMzJbaTUgKyA0ID4+IDJdIHwgMDsKICAgaTggPSBpOSAmIDMyOwogICBpZiAo
ISgoaTcgfCAwKSA9PSAwICYgKGk1IHwgMCkgPT0gMCkpIHsKICAgIGkzID0gaTI5OwogICAgZG8g
ewogICAgIGkzID0gaTMgKyAtMSB8IDA7CiAgICAgSEVBUDhbaTMgPj4gMF0gPSBIRUFQVThbNDEw
MiArIChpNyAmIDE1KSA+PiAwXSB8IGk4OwogICAgIGk3ID0gX2JpdHNoaWZ0NjRMc2hyKGk3IHwg
MCwgaTUgfCAwLCA0KSB8IDA7CiAgICAgaTUgPSB0ZW1wUmV0MDsKICAgIH0gd2hpbGUgKCEoKGk3
IHwgMCkgPT0gMCAmIChpNSB8IDApID09IDApKTsKICAgIGkyNyA9IGk0NDsKICAgIGlmICgoaTEw
ICYgOCB8IDApID09IDAgfCAoSEVBUDMyW2kyNyA+PiAyXSB8IDApID09IDAgJiAoSEVBUDMyW2ky
NyArIDQgPj4gMl0gfCAwKSA9PSAwKSB7CiAgICAgaTcgPSBpMTA7CiAgICAgaTggPSAwOwogICAg
IGk5ID0gNDExODsKICAgICBpMjcgPSA3NzsKICAgIH0gZWxzZSB7CiAgICAgaTcgPSBpMTA7CiAg
ICAgaTggPSAyOwogICAgIGk5ID0gNDExOCArIChpOSA+PiA0KSB8IDA7CiAgICAgaTI3ID0gNzc7
CiAgICB9CiAgIH0gZWxzZSB7CiAgICBpMyA9IGkyOTsKICAgIGk3ID0gaTEwOwogICAgaTggPSAw
OwogICAgaTkgPSA0MTE4OwogICAgaTI3ID0gNzc7CiAgIH0KICB9IGVsc2UgaWYgKChpMjcgfCAw
KSA9PSA3NikgewogICBpMyA9IF9mbXRfdShpNCwgaTMsIGkyOSkgfCAwOwogICBpNyA9IGkyNDsK
ICAgaTQgPSBpMTY7CiAgIGk5ID0gaTU7CiAgIGkyNyA9IDc3OwogIH0gZWxzZSBpZiAoKGkyNyB8
IDApID09IDgyKSB7CiAgIGkyNyA9IDA7CiAgIGk4ID0gX21lbWNocihpNywgMCwgaTE2KSB8IDA7
CiAgIGkzID0gKGk4IHwgMCkgPT0gMDsKICAgaTEyID0gaTc7CiAgIGk0ID0gaTMgPyBpMTYgOiBp
OCAtIGk3IHwgMDsKICAgaTEwID0gMDsKICAgaTkgPSA0MTE4OwogICBpNyA9IGkzID8gaTcgKyBp
MTYgfCAwIDogaTg7CiAgfSBlbHNlIGlmICgoaTI3IHwgMCkgPT0gODYpIHsKICAgaTI3ID0gMDsK
ICAgaTUgPSAwOwogICBpNCA9IDA7CiAgIGk4ID0gSEVBUDMyW2k0NCA+PiAyXSB8IDA7CiAgIHdo
aWxlICgxKSB7CiAgICBpNyA9IEhFQVAzMltpOCA+PiAyXSB8IDA7CiAgICBpZiAoIWk3KSBicmVh
azsKICAgIGk0ID0gX3djdG9tYihpNDgsIGk3KSB8IDA7CiAgICBpZiAoKGk0IHwgMCkgPCAwIHwg
aTQgPj4+IDAgPiAoaTMgLSBpNSB8IDApID4+PiAwKSBicmVhazsKICAgIGk1ID0gaTQgKyBpNSB8
IDA7CiAgICBpZiAoaTMgPj4+IDAgPiBpNSA+Pj4gMCkgaTggPSBpOCArIDQgfCAwOyBlbHNlIGJy
ZWFrOwogICB9CiAgIGlmICgoaTQgfCAwKSA8IDApIHsKICAgIGkxID0gLTE7CiAgICBicmVhayBM
MTsKICAgfQogICBfcGFkKGk1MCwgMzIsIGkyNiwgaTUsIGkyNCk7CiAgIGlmICghaTUpIHsKICAg
IGk1ID0gMDsKICAgIGkyNyA9IDk4OwogICB9IGVsc2UgewogICAgaTMgPSAwOwogICAgaTcgPSBI
RUFQMzJbaTQ0ID4+IDJdIHwgMDsKICAgIHdoaWxlICgxKSB7CiAgICAgaTQgPSBIRUFQMzJbaTcg
Pj4gMl0gfCAwOwogICAgIGlmICghaTQpIHsKICAgICAgaTI3ID0gOTg7CiAgICAgIGJyZWFrIEwz
MTM7CiAgICAgfQogICAgIGk0ID0gX3djdG9tYihpNDgsIGk0KSB8IDA7CiAgICAgaTMgPSBpNCAr
IGkzIHwgMDsKICAgICBpZiAoKGkzIHwgMCkgPiAoaTUgfCAwKSkgewogICAgICBpMjcgPSA5ODsK
ICAgICAgYnJlYWsgTDMxMzsKICAgICB9CiAgICAgaWYgKCEoSEVBUDMyW2k1MCA+PiAyXSAmIDMy
KSkgX19fZndyaXRleChpNDgsIGk0LCBpNTApIHwgMDsKICAgICBpZiAoaTMgPj4+IDAgPj0gaTUg
Pj4+IDApIHsKICAgICAgaTI3ID0gOTg7CiAgICAgIGJyZWFrOwogICAgIH0gZWxzZSBpNyA9IGk3
ICsgNCB8IDA7CiAgICB9CiAgIH0KICB9IHdoaWxlICgwKTsKICBpZiAoKGkyNyB8IDApID09IDk4
KSB7CiAgIGkyNyA9IDA7CiAgIF9wYWQoaTUwLCAzMiwgaTI2LCBpNSwgaTI0IF4gODE5Mik7CiAg
IGkxMiA9IGkyNTsKICAgaTMgPSAoaTI2IHwgMCkgPiAoaTUgfCAwKSA/IGkyNiA6IGk1OwogICBj
b250aW51ZTsKICB9CiAgaWYgKChpMjcgfCAwKSA9PSA3NykgewogICBpMjcgPSAwOwogICBpNSA9
IChpNCB8IDApID4gLTEgPyBpNyAmIC02NTUzNyA6IGk3OwogICBpNyA9IGk0NDsKICAgaTcgPSAo
SEVBUDMyW2k3ID4+IDJdIHwgMCkgIT0gMCB8IChIRUFQMzJbaTcgKyA0ID4+IDJdIHwgMCkgIT0g
MDsKICAgaWYgKChpNCB8IDApICE9IDAgfCBpNykgewogICAgaTEwID0gKGk3ICYgMSBeIDEpICsg
KGkzNiAtIGkzKSB8IDA7CiAgICBpMTIgPSBpMzsKICAgIGk0ID0gKGk0IHwgMCkgPiAoaTEwIHwg
MCkgPyBpNCA6IGkxMDsKICAgIGkxMCA9IGk4OwogICAgaTcgPSBpMjk7CiAgIH0gZWxzZSB7CiAg
ICBpMTIgPSBpMjk7CiAgICBpNCA9IDA7CiAgICBpMTAgPSBpODsKICAgIGk3ID0gaTI5OwogICB9
CiAgfQogIGk4ID0gaTcgLSBpMTIgfCAwOwogIGk3ID0gKGk0IHwgMCkgPCAoaTggfCAwKSA/IGk4
IDogaTQ7CiAgaTQgPSBpMTAgKyBpNyB8IDA7CiAgaTMgPSAoaTI2IHwgMCkgPCAoaTQgfCAwKSA/
IGk0IDogaTI2OwogIF9wYWQoaTUwLCAzMiwgaTMsIGk0LCBpNSk7CiAgaWYgKCEoSEVBUDMyW2k1
MCA+PiAyXSAmIDMyKSkgX19fZndyaXRleChpOSwgaTEwLCBpNTApIHwgMDsKICBfcGFkKGk1MCwg
NDgsIGkzLCBpNCwgaTUgXiA2NTUzNik7CiAgX3BhZChpNTAsIDQ4LCBpNywgaTgsIDApOwogIGlm
ICghKEhFQVAzMltpNTAgPj4gMl0gJiAzMikpIF9fX2Z3cml0ZXgoaTEyLCBpOCwgaTUwKSB8IDA7
CiAgX3BhZChpNTAsIDMyLCBpMywgaTQsIGk1IF4gODE5Mik7CiAgaTEyID0gaTI1OwogfQogTDM0
OCA6IGRvIGlmICgoaTI3IHwgMCkgPT0gMjQ1KSBpZiAoIWk1MCkgaWYgKGkyKSB7CiAgaTEgPSAx
OwogIHdoaWxlICgxKSB7CiAgIGkyID0gSEVBUDMyW2k1MyArIChpMSA8PCAyKSA+PiAyXSB8IDA7
CiAgIGlmICghaTIpIGJyZWFrOwogICBfcG9wX2FyZzMzOShpNTIgKyAoaTEgPDwgMykgfCAwLCBp
MiwgaTUxKTsKICAgaTEgPSBpMSArIDEgfCAwOwogICBpZiAoKGkxIHwgMCkgPj0gMTApIHsKICAg
IGkxID0gMTsKICAgIGJyZWFrIEwzNDg7CiAgIH0KICB9CiAgaWYgKChpMSB8IDApIDwgMTApIHdo
aWxlICgxKSB7CiAgIGlmIChIRUFQMzJbaTUzICsgKGkxIDw8IDIpID4+IDJdIHwgMCkgewogICAg
aTEgPSAtMTsKICAgIGJyZWFrIEwzNDg7CiAgIH0KICAgaTEgPSBpMSArIDEgfCAwOwogICBpZiAo
KGkxIHwgMCkgPj0gMTApIHsKICAgIGkxID0gMTsKICAgIGJyZWFrOwogICB9CiAgfSBlbHNlIGkx
ID0gMTsKIH0gZWxzZSBpMSA9IDA7IHdoaWxlICgwKTsKIFNUQUNLVE9QID0gaTU0OwogcmV0dXJu
IGkxIHwgMDsKfQoKZnVuY3Rpb24gX2ZyZWUoaTIzKSB7CiBpMjMgPSBpMjMgfCAwOwogdmFyIGkx
ID0gMCwgaTIgPSAwLCBpMyA9IDAsIGk0ID0gMCwgaTUgPSAwLCBpNiA9IDAsIGk3ID0gMCwgaTgg
PSAwLCBpOSA9IDAsIGkxMCA9IDAsIGkxMSA9IDAsIGkxMiA9IDAsIGkxMyA9IDAsIGkxNCA9IDAs
IGkxNSA9IDAsIGkxNiA9IDAsIGkxNyA9IDAsIGkxOCA9IDAsIGkxOSA9IDAsIGkyMCA9IDAsIGky
MSA9IDAsIGkyMiA9IDAsIGkyNCA9IDAsIGkyNSA9IDAsIGkyNiA9IDAsIGkyNyA9IDA7CiBMMSA6
IGRvIGlmIChpMjMpIHsKICBpNCA9IGkyMyArIC04IHwgMDsKICBpOSA9IEhFQVAzMlsxOV0gfCAw
OwogIEwzIDogZG8gaWYgKGk0ID4+PiAwID49IGk5ID4+PiAwID8gKGkzID0gSEVBUDMyW2kyMyAr
IC00ID4+IDJdIHwgMCwgaTIgPSBpMyAmIDMsIChpMiB8IDApICE9IDEpIDogMCkgewogICBpMjAg
PSBpMyAmIC04OwogICBpMjEgPSBpMjMgKyAoaTIwICsgLTgpIHwgMDsKICAgZG8gaWYgKCEoaTMg
JiAxKSkgewogICAgaTQgPSBIRUFQMzJbaTQgPj4gMl0gfCAwOwogICAgaWYgKCFpMikgYnJlYWsg
TDE7CiAgICBpMTAgPSAtOCAtIGk0IHwgMDsKICAgIGkxMiA9IGkyMyArIGkxMCB8IDA7CiAgICBp
MTMgPSBpNCArIGkyMCB8IDA7CiAgICBpZiAoaTEyID4+PiAwIDwgaTkgPj4+IDApIGJyZWFrIEwz
OwogICAgaWYgKChpMTIgfCAwKSA9PSAoSEVBUDMyWzIwXSB8IDApKSB7CiAgICAgaTUgPSBpMjMg
KyAoaTIwICsgLTQpIHwgMDsKICAgICBpNCA9IEhFQVAzMltpNSA+PiAyXSB8IDA7CiAgICAgaWYg
KChpNCAmIDMgfCAwKSAhPSAzKSB7CiAgICAgIGkyNyA9IGkxMjsKICAgICAgaTUgPSBpMTM7CiAg
ICAgIGJyZWFrOwogICAgIH0KICAgICBIRUFQMzJbMTddID0gaTEzOwogICAgIEhFQVAzMltpNSA+
PiAyXSA9IGk0ICYgLTI7CiAgICAgSEVBUDMyW2kyMyArIChpMTAgKyA0KSA+PiAyXSA9IGkxMyB8
IDE7CiAgICAgSEVBUDMyW2kyMSA+PiAyXSA9IGkxMzsKICAgICBicmVhayBMMTsKICAgIH0KICAg
IGkyID0gaTQgPj4+IDM7CiAgICBpZiAoaTQgPj4+IDAgPCAyNTYpIHsKICAgICBpMyA9IEhFQVAz
MltpMjMgKyAoaTEwICsgOCkgPj4gMl0gfCAwOwogICAgIGk1ID0gSEVBUDMyW2kyMyArIChpMTAg
KyAxMikgPj4gMl0gfCAwOwogICAgIGk0ID0gMTAwICsgKGkyIDw8IDEgPDwgMikgfCAwOwogICAg
IGRvIGlmICgoaTMgfCAwKSAhPSAoaTQgfCAwKSkgewogICAgICBpZiAoaTMgPj4+IDAgPj0gaTkg
Pj4+IDAgPyAoSEVBUDMyW2kzICsgMTIgPj4gMl0gfCAwKSA9PSAoaTEyIHwgMCkgOiAwKSBicmVh
azsKICAgICAgX2Fib3J0KCk7CiAgICAgfSB3aGlsZSAoMCk7CiAgICAgaWYgKChpNSB8IDApID09
IChpMyB8IDApKSB7CiAgICAgIEhFQVAzMlsxNV0gPSBIRUFQMzJbMTVdICYgfigxIDw8IGkyKTsK
ICAgICAgaTI3ID0gaTEyOwogICAgICBpNSA9IGkxMzsKICAgICAgYnJlYWs7CiAgICAgfQogICAg
IGRvIGlmICgoaTUgfCAwKSA9PSAoaTQgfCAwKSkgaTEgPSBpNSArIDggfCAwOyBlbHNlIHsKICAg
ICAgaWYgKGk1ID4+PiAwID49IGk5ID4+PiAwID8gKGk2ID0gaTUgKyA4IHwgMCwgKEhFQVAzMltp
NiA+PiAyXSB8IDApID09IChpMTIgfCAwKSkgOiAwKSB7CiAgICAgICBpMSA9IGk2OwogICAgICAg
YnJlYWs7CiAgICAgIH0KICAgICAgX2Fib3J0KCk7CiAgICAgfSB3aGlsZSAoMCk7CiAgICAgSEVB
UDMyW2kzICsgMTIgPj4gMl0gPSBpNTsKICAgICBIRUFQMzJbaTEgPj4gMl0gPSBpMzsKICAgICBp
MjcgPSBpMTI7CiAgICAgaTUgPSBpMTM7CiAgICAgYnJlYWs7CiAgICB9CiAgICBpNiA9IEhFQVAz
MltpMjMgKyAoaTEwICsgMjQpID4+IDJdIHwgMDsKICAgIGk0ID0gSEVBUDMyW2kyMyArIChpMTAg
KyAxMikgPj4gMl0gfCAwOwogICAgZG8gaWYgKChpNCB8IDApID09IChpMTIgfCAwKSkgewogICAg
IGkzID0gaTIzICsgKGkxMCArIDIwKSB8IDA7CiAgICAgaTQgPSBIRUFQMzJbaTMgPj4gMl0gfCAw
OwogICAgIGlmICghaTQpIHsKICAgICAgaTMgPSBpMjMgKyAoaTEwICsgMTYpIHwgMDsKICAgICAg
aTQgPSBIRUFQMzJbaTMgPj4gMl0gfCAwOwogICAgICBpZiAoIWk0KSB7CiAgICAgICBpMTEgPSAw
OwogICAgICAgYnJlYWs7CiAgICAgIH0KICAgICB9CiAgICAgd2hpbGUgKDEpIHsKICAgICAgaTIg
PSBpNCArIDIwIHwgMDsKICAgICAgaTEgPSBIRUFQMzJbaTIgPj4gMl0gfCAwOwogICAgICBpZiAo
aTEpIHsKICAgICAgIGk0ID0gaTE7CiAgICAgICBpMyA9IGkyOwogICAgICAgY29udGludWU7CiAg
ICAgIH0KICAgICAgaTIgPSBpNCArIDE2IHwgMDsKICAgICAgaTEgPSBIRUFQMzJbaTIgPj4gMl0g
fCAwOwogICAgICBpZiAoIWkxKSBicmVhazsgZWxzZSB7CiAgICAgICBpNCA9IGkxOwogICAgICAg
aTMgPSBpMjsKICAgICAgfQogICAgIH0KICAgICBpZiAoaTMgPj4+IDAgPCBpOSA+Pj4gMCkgX2Fi
b3J0KCk7IGVsc2UgewogICAgICBIRUFQMzJbaTMgPj4gMl0gPSAwOwogICAgICBpMTEgPSBpNDsK
ICAgICAgYnJlYWs7CiAgICAgfQogICAgfSBlbHNlIHsKICAgICBpMyA9IEhFQVAzMltpMjMgKyAo
aTEwICsgOCkgPj4gMl0gfCAwOwogICAgIGlmICgoaTMgPj4+IDAgPj0gaTkgPj4+IDAgPyAoaTcg
PSBpMyArIDEyIHwgMCwgKEhFQVAzMltpNyA+PiAyXSB8IDApID09IChpMTIgfCAwKSkgOiAwKSA/
IChpOCA9IGk0ICsgOCB8IDAsIChIRUFQMzJbaTggPj4gMl0gfCAwKSA9PSAoaTEyIHwgMCkpIDog
MCkgewogICAgICBIRUFQMzJbaTcgPj4gMl0gPSBpNDsKICAgICAgSEVBUDMyW2k4ID4+IDJdID0g
aTM7CiAgICAgIGkxMSA9IGk0OwogICAgICBicmVhazsKICAgICB9CiAgICAgX2Fib3J0KCk7CiAg
ICB9IHdoaWxlICgwKTsKICAgIGlmIChpNikgewogICAgIGk0ID0gSEVBUDMyW2kyMyArIChpMTAg
KyAyOCkgPj4gMl0gfCAwOwogICAgIGkzID0gMzY0ICsgKGk0IDw8IDIpIHwgMDsKICAgICBpZiAo
KGkxMiB8IDApID09IChIRUFQMzJbaTMgPj4gMl0gfCAwKSkgewogICAgICBIRUFQMzJbaTMgPj4g
Ml0gPSBpMTE7CiAgICAgIGlmICghaTExKSB7CiAgICAgICBIRUFQMzJbMTZdID0gSEVBUDMyWzE2
XSAmIH4oMSA8PCBpNCk7CiAgICAgICBpMjcgPSBpMTI7CiAgICAgICBpNSA9IGkxMzsKICAgICAg
IGJyZWFrOwogICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgaWYgKGk2ID4+PiAwIDwgKEhFQVAz
MlsxOV0gfCAwKSA+Pj4gMCkgX2Fib3J0KCk7CiAgICAgIGk0ID0gaTYgKyAxNiB8IDA7CiAgICAg
IGlmICgoSEVBUDMyW2k0ID4+IDJdIHwgMCkgPT0gKGkxMiB8IDApKSBIRUFQMzJbaTQgPj4gMl0g
PSBpMTE7IGVsc2UgSEVBUDMyW2k2ICsgMjAgPj4gMl0gPSBpMTE7CiAgICAgIGlmICghaTExKSB7
CiAgICAgICBpMjcgPSBpMTI7CiAgICAgICBpNSA9IGkxMzsKICAgICAgIGJyZWFrOwogICAgICB9
CiAgICAgfQogICAgIGkzID0gSEVBUDMyWzE5XSB8IDA7CiAgICAgaWYgKGkxMSA+Pj4gMCA8IGkz
ID4+PiAwKSBfYWJvcnQoKTsKICAgICBIRUFQMzJbaTExICsgMjQgPj4gMl0gPSBpNjsKICAgICBp
NCA9IEhFQVAzMltpMjMgKyAoaTEwICsgMTYpID4+IDJdIHwgMDsKICAgICBkbyBpZiAoaTQpIGlm
IChpNCA+Pj4gMCA8IGkzID4+PiAwKSBfYWJvcnQoKTsgZWxzZSB7CiAgICAgIEhFQVAzMltpMTEg
KyAxNiA+PiAyXSA9IGk0OwogICAgICBIRUFQMzJbaTQgKyAyNCA+PiAyXSA9IGkxMTsKICAgICAg
YnJlYWs7CiAgICAgfSB3aGlsZSAoMCk7CiAgICAgaTQgPSBIRUFQMzJbaTIzICsgKGkxMCArIDIw
KSA+PiAyXSB8IDA7CiAgICAgaWYgKGk0KSBpZiAoaTQgPj4+IDAgPCAoSEVBUDMyWzE5XSB8IDAp
ID4+PiAwKSBfYWJvcnQoKTsgZWxzZSB7CiAgICAgIEhFQVAzMltpMTEgKyAyMCA+PiAyXSA9IGk0
OwogICAgICBIRUFQMzJbaTQgKyAyNCA+PiAyXSA9IGkxMTsKICAgICAgaTI3ID0gaTEyOwogICAg
ICBpNSA9IGkxMzsKICAgICAgYnJlYWs7CiAgICAgfSBlbHNlIHsKICAgICAgaTI3ID0gaTEyOwog
ICAgICBpNSA9IGkxMzsKICAgICB9CiAgICB9IGVsc2UgewogICAgIGkyNyA9IGkxMjsKICAgICBp
NSA9IGkxMzsKICAgIH0KICAgfSBlbHNlIHsKICAgIGkyNyA9IGk0OwogICAgaTUgPSBpMjA7CiAg
IH0gd2hpbGUgKDApOwogICBpZiAoaTI3ID4+PiAwIDwgaTIxID4+PiAwID8gKGkxNCA9IGkyMyAr
IChpMjAgKyAtNCkgfCAwLCBpMTUgPSBIRUFQMzJbaTE0ID4+IDJdIHwgMCwgKGkxNSAmIDEgfCAw
KSAhPSAwKSA6IDApIHsKICAgIGlmICghKGkxNSAmIDIpKSB7CiAgICAgaWYgKChpMjEgfCAwKSA9
PSAoSEVBUDMyWzIxXSB8IDApKSB7CiAgICAgIGkyMiA9IChIRUFQMzJbMThdIHwgMCkgKyBpNSB8
IDA7CiAgICAgIEhFQVAzMlsxOF0gPSBpMjI7CiAgICAgIEhFQVAzMlsyMV0gPSBpMjc7CiAgICAg
IEhFQVAzMltpMjcgKyA0ID4+IDJdID0gaTIyIHwgMTsKICAgICAgaWYgKChpMjcgfCAwKSAhPSAo
SEVBUDMyWzIwXSB8IDApKSBicmVhayBMMTsKICAgICAgSEVBUDMyWzIwXSA9IDA7CiAgICAgIEhF
QVAzMlsxN10gPSAwOwogICAgICBicmVhayBMMTsKICAgICB9CiAgICAgaWYgKChpMjEgfCAwKSA9
PSAoSEVBUDMyWzIwXSB8IDApKSB7CiAgICAgIGkyMiA9IChIRUFQMzJbMTddIHwgMCkgKyBpNSB8
IDA7CiAgICAgIEhFQVAzMlsxN10gPSBpMjI7CiAgICAgIEhFQVAzMlsyMF0gPSBpMjc7CiAgICAg
IEhFQVAzMltpMjcgKyA0ID4+IDJdID0gaTIyIHwgMTsKICAgICAgSEVBUDMyW2kyNyArIGkyMiA+
PiAyXSA9IGkyMjsKICAgICAgYnJlYWsgTDE7CiAgICAgfQogICAgIGk4ID0gKGkxNSAmIC04KSAr
IGk1IHwgMDsKICAgICBpMiA9IGkxNSA+Pj4gMzsKICAgICBkbyBpZiAoaTE1ID4+PiAwID49IDI1
NikgewogICAgICBpMSA9IEhFQVAzMltpMjMgKyAoaTIwICsgMTYpID4+IDJdIHwgMDsKICAgICAg
aTUgPSBIRUFQMzJbaTIzICsgKGkyMCB8IDQpID4+IDJdIHwgMDsKICAgICAgZG8gaWYgKChpNSB8
IDApID09IChpMjEgfCAwKSkgewogICAgICAgaTQgPSBpMjMgKyAoaTIwICsgMTIpIHwgMDsKICAg
ICAgIGk1ID0gSEVBUDMyW2k0ID4+IDJdIHwgMDsKICAgICAgIGlmICghaTUpIHsKICAgICAgICBp
NCA9IGkyMyArIChpMjAgKyA4KSB8IDA7CiAgICAgICAgaTUgPSBIRUFQMzJbaTQgPj4gMl0gfCAw
OwogICAgICAgIGlmICghaTUpIHsKICAgICAgICAgaTIyID0gMDsKICAgICAgICAgYnJlYWs7CiAg
ICAgICAgfQogICAgICAgfQogICAgICAgd2hpbGUgKDEpIHsKICAgICAgICBpMyA9IGk1ICsgMjAg
fCAwOwogICAgICAgIGkyID0gSEVBUDMyW2kzID4+IDJdIHwgMDsKICAgICAgICBpZiAoaTIpIHsK
ICAgICAgICAgaTUgPSBpMjsKICAgICAgICAgaTQgPSBpMzsKICAgICAgICAgY29udGludWU7CiAg
ICAgICAgfQogICAgICAgIGkzID0gaTUgKyAxNiB8IDA7CiAgICAgICAgaTIgPSBIRUFQMzJbaTMg
Pj4gMl0gfCAwOwogICAgICAgIGlmICghaTIpIGJyZWFrOyBlbHNlIHsKICAgICAgICAgaTUgPSBp
MjsKICAgICAgICAgaTQgPSBpMzsKICAgICAgICB9CiAgICAgICB9CiAgICAgICBpZiAoaTQgPj4+
IDAgPCAoSEVBUDMyWzE5XSB8IDApID4+PiAwKSBfYWJvcnQoKTsgZWxzZSB7CiAgICAgICAgSEVB
UDMyW2k0ID4+IDJdID0gMDsKICAgICAgICBpMjIgPSBpNTsKICAgICAgICBicmVhazsKICAgICAg
IH0KICAgICAgfSBlbHNlIHsKICAgICAgIGk0ID0gSEVBUDMyW2kyMyArIGkyMCA+PiAyXSB8IDA7
CiAgICAgICBpZiAoKGk0ID4+PiAwID49IChIRUFQMzJbMTldIHwgMCkgPj4+IDAgPyAoaTE4ID0g
aTQgKyAxMiB8IDAsIChIRUFQMzJbaTE4ID4+IDJdIHwgMCkgPT0gKGkyMSB8IDApKSA6IDApID8g
KGkxOSA9IGk1ICsgOCB8IDAsIChIRUFQMzJbaTE5ID4+IDJdIHwgMCkgPT0gKGkyMSB8IDApKSA6
IDApIHsKICAgICAgICBIRUFQMzJbaTE4ID4+IDJdID0gaTU7CiAgICAgICAgSEVBUDMyW2kxOSA+
PiAyXSA9IGk0OwogICAgICAgIGkyMiA9IGk1OwogICAgICAgIGJyZWFrOwogICAgICAgfQogICAg
ICAgX2Fib3J0KCk7CiAgICAgIH0gd2hpbGUgKDApOwogICAgICBpZiAoaTEpIHsKICAgICAgIGk1
ID0gSEVBUDMyW2kyMyArIChpMjAgKyAyMCkgPj4gMl0gfCAwOwogICAgICAgaTQgPSAzNjQgKyAo
aTUgPDwgMikgfCAwOwogICAgICAgaWYgKChpMjEgfCAwKSA9PSAoSEVBUDMyW2k0ID4+IDJdIHwg
MCkpIHsKICAgICAgICBIRUFQMzJbaTQgPj4gMl0gPSBpMjI7CiAgICAgICAgaWYgKCFpMjIpIHsK
ICAgICAgICAgSEVBUDMyWzE2XSA9IEhFQVAzMlsxNl0gJiB+KDEgPDwgaTUpOwogICAgICAgICBi
cmVhazsKICAgICAgICB9CiAgICAgICB9IGVsc2UgewogICAgICAgIGlmIChpMSA+Pj4gMCA8IChI
RUFQMzJbMTldIHwgMCkgPj4+IDApIF9hYm9ydCgpOwogICAgICAgIGk1ID0gaTEgKyAxNiB8IDA7
CiAgICAgICAgaWYgKChIRUFQMzJbaTUgPj4gMl0gfCAwKSA9PSAoaTIxIHwgMCkpIEhFQVAzMltp
NSA+PiAyXSA9IGkyMjsgZWxzZSBIRUFQMzJbaTEgKyAyMCA+PiAyXSA9IGkyMjsKICAgICAgICBp
ZiAoIWkyMikgYnJlYWs7CiAgICAgICB9CiAgICAgICBpNSA9IEhFQVAzMlsxOV0gfCAwOwogICAg
ICAgaWYgKGkyMiA+Pj4gMCA8IGk1ID4+PiAwKSBfYWJvcnQoKTsKICAgICAgIEhFQVAzMltpMjIg
KyAyNCA+PiAyXSA9IGkxOwogICAgICAgaTQgPSBIRUFQMzJbaTIzICsgKGkyMCArIDgpID4+IDJd
IHwgMDsKICAgICAgIGRvIGlmIChpNCkgaWYgKGk0ID4+PiAwIDwgaTUgPj4+IDApIF9hYm9ydCgp
OyBlbHNlIHsKICAgICAgICBIRUFQMzJbaTIyICsgMTYgPj4gMl0gPSBpNDsKICAgICAgICBIRUFQ
MzJbaTQgKyAyNCA+PiAyXSA9IGkyMjsKICAgICAgICBicmVhazsKICAgICAgIH0gd2hpbGUgKDAp
OwogICAgICAgaTIgPSBIRUFQMzJbaTIzICsgKGkyMCArIDEyKSA+PiAyXSB8IDA7CiAgICAgICBp
ZiAoaTIpIGlmIChpMiA+Pj4gMCA8IChIRUFQMzJbMTldIHwgMCkgPj4+IDApIF9hYm9ydCgpOyBl
bHNlIHsKICAgICAgICBIRUFQMzJbaTIyICsgMjAgPj4gMl0gPSBpMjsKICAgICAgICBIRUFQMzJb
aTIgKyAyNCA+PiAyXSA9IGkyMjsKICAgICAgICBicmVhazsKICAgICAgIH0KICAgICAgfQogICAg
IH0gZWxzZSB7CiAgICAgIGkzID0gSEVBUDMyW2kyMyArIGkyMCA+PiAyXSB8IDA7CiAgICAgIGk1
ID0gSEVBUDMyW2kyMyArIChpMjAgfCA0KSA+PiAyXSB8IDA7CiAgICAgIGk0ID0gMTAwICsgKGky
IDw8IDEgPDwgMikgfCAwOwogICAgICBkbyBpZiAoKGkzIHwgMCkgIT0gKGk0IHwgMCkpIHsKICAg
ICAgIGlmIChpMyA+Pj4gMCA+PSAoSEVBUDMyWzE5XSB8IDApID4+PiAwID8gKEhFQVAzMltpMyAr
IDEyID4+IDJdIHwgMCkgPT0gKGkyMSB8IDApIDogMCkgYnJlYWs7CiAgICAgICBfYWJvcnQoKTsK
ICAgICAgfSB3aGlsZSAoMCk7CiAgICAgIGlmICgoaTUgfCAwKSA9PSAoaTMgfCAwKSkgewogICAg
ICAgSEVBUDMyWzE1XSA9IEhFQVAzMlsxNV0gJiB+KDEgPDwgaTIpOwogICAgICAgYnJlYWs7CiAg
ICAgIH0KICAgICAgZG8gaWYgKChpNSB8IDApID09IChpNCB8IDApKSBpMTYgPSBpNSArIDggfCAw
OyBlbHNlIHsKICAgICAgIGlmIChpNSA+Pj4gMCA+PSAoSEVBUDMyWzE5XSB8IDApID4+PiAwID8g
KGkxNyA9IGk1ICsgOCB8IDAsIChIRUFQMzJbaTE3ID4+IDJdIHwgMCkgPT0gKGkyMSB8IDApKSA6
IDApIHsKICAgICAgICBpMTYgPSBpMTc7CiAgICAgICAgYnJlYWs7CiAgICAgICB9CiAgICAgICBf
YWJvcnQoKTsKICAgICAgfSB3aGlsZSAoMCk7CiAgICAgIEhFQVAzMltpMyArIDEyID4+IDJdID0g
aTU7CiAgICAgIEhFQVAzMltpMTYgPj4gMl0gPSBpMzsKICAgICB9IHdoaWxlICgwKTsKICAgICBI
RUFQMzJbaTI3ICsgNCA+PiAyXSA9IGk4IHwgMTsKICAgICBIRUFQMzJbaTI3ICsgaTggPj4gMl0g
PSBpODsKICAgICBpZiAoKGkyNyB8IDApID09IChIRUFQMzJbMjBdIHwgMCkpIHsKICAgICAgSEVB
UDMyWzE3XSA9IGk4OwogICAgICBicmVhayBMMTsKICAgICB9IGVsc2UgaTUgPSBpODsKICAgIH0g
ZWxzZSB7CiAgICAgSEVBUDMyW2kxNCA+PiAyXSA9IGkxNSAmIC0yOwogICAgIEhFQVAzMltpMjcg
KyA0ID4+IDJdID0gaTUgfCAxOwogICAgIEhFQVAzMltpMjcgKyBpNSA+PiAyXSA9IGk1OwogICAg
fQogICAgaTQgPSBpNSA+Pj4gMzsKICAgIGlmIChpNSA+Pj4gMCA8IDI1NikgewogICAgIGkzID0g
aTQgPDwgMTsKICAgICBpNSA9IDEwMCArIChpMyA8PCAyKSB8IDA7CiAgICAgaTEgPSBIRUFQMzJb
MTVdIHwgMDsKICAgICBpMiA9IDEgPDwgaTQ7CiAgICAgaWYgKGkxICYgaTIpIHsKICAgICAgaTIg
PSAxMDAgKyAoaTMgKyAyIDw8IDIpIHwgMDsKICAgICAgaTEgPSBIRUFQMzJbaTIgPj4gMl0gfCAw
OwogICAgICBpZiAoaTEgPj4+IDAgPCAoSEVBUDMyWzE5XSB8IDApID4+PiAwKSBfYWJvcnQoKTsg
ZWxzZSB7CiAgICAgICBpMjQgPSBpMjsKICAgICAgIGkyNSA9IGkxOwogICAgICB9CiAgICAgfSBl
bHNlIHsKICAgICAgSEVBUDMyWzE1XSA9IGkxIHwgaTI7CiAgICAgIGkyNCA9IDEwMCArIChpMyAr
IDIgPDwgMikgfCAwOwogICAgICBpMjUgPSBpNTsKICAgICB9CiAgICAgSEVBUDMyW2kyNCA+PiAy
XSA9IGkyNzsKICAgICBIRUFQMzJbaTI1ICsgMTIgPj4gMl0gPSBpMjc7CiAgICAgSEVBUDMyW2ky
NyArIDggPj4gMl0gPSBpMjU7CiAgICAgSEVBUDMyW2kyNyArIDEyID4+IDJdID0gaTU7CiAgICAg
YnJlYWsgTDE7CiAgICB9CiAgICBpMSA9IGk1ID4+PiA4OwogICAgaWYgKGkxKSBpZiAoaTUgPj4+
IDAgPiAxNjc3NzIxNSkgaTQgPSAzMTsgZWxzZSB7CiAgICAgaTIxID0gKGkxICsgMTA0ODMyMCB8
IDApID4+PiAxNiAmIDg7CiAgICAgaTIyID0gaTEgPDwgaTIxOwogICAgIGkyMCA9IChpMjIgKyA1
MjAxOTIgfCAwKSA+Pj4gMTYgJiA0OwogICAgIGkyMiA9IGkyMiA8PCBpMjA7CiAgICAgaTQgPSAo
aTIyICsgMjQ1NzYwIHwgMCkgPj4+IDE2ICYgMjsKICAgICBpNCA9IDE0IC0gKGkyMCB8IGkyMSB8
IGk0KSArIChpMjIgPDwgaTQgPj4+IDE1KSB8IDA7CiAgICAgaTQgPSBpNSA+Pj4gKGk0ICsgNyB8
IDApICYgMSB8IGk0IDw8IDE7CiAgICB9IGVsc2UgaTQgPSAwOwogICAgaTIgPSAzNjQgKyAoaTQg
PDwgMikgfCAwOwogICAgSEVBUDMyW2kyNyArIDI4ID4+IDJdID0gaTQ7CiAgICBIRUFQMzJbaTI3
ICsgMjAgPj4gMl0gPSAwOwogICAgSEVBUDMyW2kyNyArIDE2ID4+IDJdID0gMDsKICAgIGkxID0g
SEVBUDMyWzE2XSB8IDA7CiAgICBpMyA9IDEgPDwgaTQ7CiAgICBMMTY4IDogZG8gaWYgKGkxICYg
aTMpIHsKICAgICBpMiA9IEhFQVAzMltpMiA+PiAyXSB8IDA7CiAgICAgTDE3MSA6IGRvIGlmICgo
SEVBUDMyW2kyICsgNCA+PiAyXSAmIC04IHwgMCkgIT0gKGk1IHwgMCkpIHsKICAgICAgaTQgPSBp
NSA8PCAoKGk0IHwgMCkgPT0gMzEgPyAwIDogMjUgLSAoaTQgPj4+IDEpIHwgMCk7CiAgICAgIHdo
aWxlICgxKSB7CiAgICAgICBpMSA9IGkyICsgMTYgKyAoaTQgPj4+IDMxIDw8IDIpIHwgMDsKICAg
ICAgIGkzID0gSEVBUDMyW2kxID4+IDJdIHwgMDsKICAgICAgIGlmICghaTMpIGJyZWFrOwogICAg
ICAgaWYgKChIRUFQMzJbaTMgKyA0ID4+IDJdICYgLTggfCAwKSA9PSAoaTUgfCAwKSkgewogICAg
ICAgIGkyNiA9IGkzOwogICAgICAgIGJyZWFrIEwxNzE7CiAgICAgICB9IGVsc2UgewogICAgICAg
IGk0ID0gaTQgPDwgMTsKICAgICAgICBpMiA9IGkzOwogICAgICAgfQogICAgICB9CiAgICAgIGlm
IChpMSA+Pj4gMCA8IChIRUFQMzJbMTldIHwgMCkgPj4+IDApIF9hYm9ydCgpOyBlbHNlIHsKICAg
ICAgIEhFQVAzMltpMSA+PiAyXSA9IGkyNzsKICAgICAgIEhFQVAzMltpMjcgKyAyNCA+PiAyXSA9
IGkyOwogICAgICAgSEVBUDMyW2kyNyArIDEyID4+IDJdID0gaTI3OwogICAgICAgSEVBUDMyW2ky
NyArIDggPj4gMl0gPSBpMjc7CiAgICAgICBicmVhayBMMTY4OwogICAgICB9CiAgICAgfSBlbHNl
IGkyNiA9IGkyOyB3aGlsZSAoMCk7CiAgICAgaTEgPSBpMjYgKyA4IHwgMDsKICAgICBpMiA9IEhF
QVAzMltpMSA+PiAyXSB8IDA7CiAgICAgaTIyID0gSEVBUDMyWzE5XSB8IDA7CiAgICAgaWYgKGky
ID4+PiAwID49IGkyMiA+Pj4gMCAmIGkyNiA+Pj4gMCA+PSBpMjIgPj4+IDApIHsKICAgICAgSEVB
UDMyW2kyICsgMTIgPj4gMl0gPSBpMjc7CiAgICAgIEhFQVAzMltpMSA+PiAyXSA9IGkyNzsKICAg
ICAgSEVBUDMyW2kyNyArIDggPj4gMl0gPSBpMjsKICAgICAgSEVBUDMyW2kyNyArIDEyID4+IDJd
ID0gaTI2OwogICAgICBIRUFQMzJbaTI3ICsgMjQgPj4gMl0gPSAwOwogICAgICBicmVhazsKICAg
ICB9IGVsc2UgX2Fib3J0KCk7CiAgICB9IGVsc2UgewogICAgIEhFQVAzMlsxNl0gPSBpMSB8IGkz
OwogICAgIEhFQVAzMltpMiA+PiAyXSA9IGkyNzsKICAgICBIRUFQMzJbaTI3ICsgMjQgPj4gMl0g
PSBpMjsKICAgICBIRUFQMzJbaTI3ICsgMTIgPj4gMl0gPSBpMjc7CiAgICAgSEVBUDMyW2kyNyAr
IDggPj4gMl0gPSBpMjc7CiAgICB9IHdoaWxlICgwKTsKICAgIGkyMiA9IChIRUFQMzJbMjNdIHwg
MCkgKyAtMSB8IDA7CiAgICBIRUFQMzJbMjNdID0gaTIyOwogICAgaWYgKCFpMjIpIGkxID0gNTE2
OyBlbHNlIGJyZWFrIEwxOwogICAgd2hpbGUgKDEpIHsKICAgICBpMSA9IEhFQVAzMltpMSA+PiAy
XSB8IDA7CiAgICAgaWYgKCFpMSkgYnJlYWs7IGVsc2UgaTEgPSBpMSArIDggfCAwOwogICAgfQog
ICAgSEVBUDMyWzIzXSA9IC0xOwogICAgYnJlYWsgTDE7CiAgIH0KICB9IHdoaWxlICgwKTsKICBf
YWJvcnQoKTsKIH0gd2hpbGUgKDApOwogcmV0dXJuOwp9CgpmdW5jdGlvbiBfX191ZGl2bW9kZGk0
KGk4LCBpNywgaTIsIGkxMiwgaTE0KSB7CiBpOCA9IGk4IHwgMDsKIGk3ID0gaTcgfCAwOwogaTIg
PSBpMiB8IDA7CiBpMTIgPSBpMTIgfCAwOwogaTE0ID0gaTE0IHwgMDsKIHZhciBpMSA9IDAsIGkz
ID0gMCwgaTQgPSAwLCBpNSA9IDAsIGk2ID0gMCwgaTkgPSAwLCBpMTAgPSAwLCBpMTEgPSAwLCBp
MTMgPSAwLCBpMTUgPSAwOwogaTExID0gaTg7CiBpOSA9IGk3OwogaTEwID0gaTk7CiBpNiA9IGky
OwogaTEzID0gaTEyOwogaTQgPSBpMTM7CiBpZiAoIWkxMCkgewogIGkxID0gKGkxNCB8IDApICE9
IDA7CiAgaWYgKCFpNCkgewogICBpZiAoaTEpIHsKICAgIEhFQVAzMltpMTQgPj4gMl0gPSAoaTEx
ID4+PiAwKSAlIChpNiA+Pj4gMCk7CiAgICBIRUFQMzJbaTE0ICsgNCA+PiAyXSA9IDA7CiAgIH0K
ICAgaTkgPSAwOwogICBpMTAgPSAoaTExID4+PiAwKSAvIChpNiA+Pj4gMCkgPj4+IDA7CiAgIHJl
dHVybiAodGVtcFJldDAgPSBpOSwgaTEwKSB8IDA7CiAgfSBlbHNlIHsKICAgaWYgKCFpMSkgewog
ICAgaTkgPSAwOwogICAgaTEwID0gMDsKICAgIHJldHVybiAodGVtcFJldDAgPSBpOSwgaTEwKSB8
IDA7CiAgIH0KICAgSEVBUDMyW2kxNCA+PiAyXSA9IGk4IHwgMDsKICAgSEVBUDMyW2kxNCArIDQg
Pj4gMl0gPSBpNyAmIDA7CiAgIGk5ID0gMDsKICAgaTEwID0gMDsKICAgcmV0dXJuICh0ZW1wUmV0
MCA9IGk5LCBpMTApIHwgMDsKICB9CiB9CiBpNSA9IChpNCB8IDApID09IDA7CiBkbyBpZiAoaTYp
IHsKICBpZiAoIWk1KSB7CiAgIGkzID0gKE1hdGhfY2x6MzIoaTQgfCAwKSB8IDApIC0gKE1hdGhf
Y2x6MzIoaTEwIHwgMCkgfCAwKSB8IDA7CiAgIGlmIChpMyA+Pj4gMCA8PSAzMSkgewogICAgaTEg
PSBpMyArIDEgfCAwOwogICAgaTkgPSAzMSAtIGkzIHwgMDsKICAgIGk2ID0gaTMgLSAzMSA+PiAz
MTsKICAgIGk0ID0gaTE7CiAgICBpNSA9IGkxMSA+Pj4gKGkxID4+PiAwKSAmIGk2IHwgaTEwIDw8
IGk5OwogICAgaTYgPSBpMTAgPj4+IChpMSA+Pj4gMCkgJiBpNjsKICAgIGkxID0gMDsKICAgIGkz
ID0gaTExIDw8IGk5OwogICAgYnJlYWs7CiAgIH0KICAgaWYgKCFpMTQpIHsKICAgIGk5ID0gMDsK
ICAgIGkxMCA9IDA7CiAgICByZXR1cm4gKHRlbXBSZXQwID0gaTksIGkxMCkgfCAwOwogICB9CiAg
IEhFQVAzMltpMTQgPj4gMl0gPSBpOCB8IDA7CiAgIEhFQVAzMltpMTQgKyA0ID4+IDJdID0gaTkg
fCBpNyAmIDA7CiAgIGk5ID0gMDsKICAgaTEwID0gMDsKICAgcmV0dXJuICh0ZW1wUmV0MCA9IGk5
LCBpMTApIHwgMDsKICB9CiAgaTUgPSBpNiAtIDEgfCAwOwogIGlmIChpNSAmIGk2KSB7CiAgIGkz
ID0gKE1hdGhfY2x6MzIoaTYgfCAwKSB8IDApICsgMzMgLSAoTWF0aF9jbHozMihpMTAgfCAwKSB8
IDApIHwgMDsKICAgaTE1ID0gNjQgLSBpMyB8IDA7CiAgIGk5ID0gMzIgLSBpMyB8IDA7CiAgIGk4
ID0gaTkgPj4gMzE7CiAgIGk3ID0gaTMgLSAzMiB8IDA7CiAgIGk2ID0gaTcgPj4gMzE7CiAgIGk0
ID0gaTM7CiAgIGk1ID0gaTkgLSAxID4+IDMxICYgaTEwID4+PiAoaTcgPj4+IDApIHwgKGkxMCA8
PCBpOSB8IGkxMSA+Pj4gKGkzID4+PiAwKSkgJiBpNjsKICAgaTYgPSBpNiAmIGkxMCA+Pj4gKGkz
ID4+PiAwKTsKICAgaTEgPSBpMTEgPDwgaTE1ICYgaTg7CiAgIGkzID0gKGkxMCA8PCBpMTUgfCBp
MTEgPj4+IChpNyA+Pj4gMCkpICYgaTggfCBpMTEgPDwgaTkgJiBpMyAtIDMzID4+IDMxOwogICBi
cmVhazsKICB9CiAgaWYgKGkxNCkgewogICBIRUFQMzJbaTE0ID4+IDJdID0gaTUgJiBpMTE7CiAg
IEhFQVAzMltpMTQgKyA0ID4+IDJdID0gMDsKICB9CiAgaWYgKChpNiB8IDApID09IDEpIHsKICAg
aTkgPSBpOSB8IGk3ICYgMDsKICAgaTEwID0gaTggfCAwIHwgMDsKICAgcmV0dXJuICh0ZW1wUmV0
MCA9IGk5LCBpMTApIHwgMDsKICB9IGVsc2UgewogICBpOCA9IF9sbHZtX2N0dHpfaTMyKGk2IHwg
MCkgfCAwOwogICBpOSA9IGkxMCA+Pj4gKGk4ID4+PiAwKSB8IDA7CiAgIGkxMCA9IGkxMCA8PCAz
MiAtIGk4IHwgaTExID4+PiAoaTggPj4+IDApIHwgMDsKICAgcmV0dXJuICh0ZW1wUmV0MCA9IGk5
LCBpMTApIHwgMDsKICB9CiB9IGVsc2UgewogIGlmIChpNSkgewogICBpZiAoaTE0KSB7CiAgICBI
RUFQMzJbaTE0ID4+IDJdID0gKGkxMCA+Pj4gMCkgJSAoaTYgPj4+IDApOwogICAgSEVBUDMyW2kx
NCArIDQgPj4gMl0gPSAwOwogICB9CiAgIGk5ID0gMDsKICAgaTEwID0gKGkxMCA+Pj4gMCkgLyAo
aTYgPj4+IDApID4+PiAwOwogICByZXR1cm4gKHRlbXBSZXQwID0gaTksIGkxMCkgfCAwOwogIH0K
ICBpZiAoIWkxMSkgewogICBpZiAoaTE0KSB7CiAgICBIRUFQMzJbaTE0ID4+IDJdID0gMDsKICAg
IEhFQVAzMltpMTQgKyA0ID4+IDJdID0gKGkxMCA+Pj4gMCkgJSAoaTQgPj4+IDApOwogICB9CiAg
IGk5ID0gMDsKICAgaTEwID0gKGkxMCA+Pj4gMCkgLyAoaTQgPj4+IDApID4+PiAwOwogICByZXR1
cm4gKHRlbXBSZXQwID0gaTksIGkxMCkgfCAwOwogIH0KICBpNSA9IGk0IC0gMSB8IDA7CiAgaWYg
KCEoaTUgJiBpNCkpIHsKICAgaWYgKGkxNCkgewogICAgSEVBUDMyW2kxNCA+PiAyXSA9IGk4IHwg
MDsKICAgIEhFQVAzMltpMTQgKyA0ID4+IDJdID0gaTUgJiBpMTAgfCBpNyAmIDA7CiAgIH0KICAg
aTkgPSAwOwogICBpMTAgPSBpMTAgPj4+ICgoX2xsdm1fY3R0el9pMzIoaTQgfCAwKSB8IDApID4+
PiAwKTsKICAgcmV0dXJuICh0ZW1wUmV0MCA9IGk5LCBpMTApIHwgMDsKICB9CiAgaTMgPSAoTWF0
aF9jbHozMihpNCB8IDApIHwgMCkgLSAoTWF0aF9jbHozMihpMTAgfCAwKSB8IDApIHwgMDsKICBp
ZiAoaTMgPj4+IDAgPD0gMzApIHsKICAgaTYgPSBpMyArIDEgfCAwOwogICBpMyA9IDMxIC0gaTMg
fCAwOwogICBpNCA9IGk2OwogICBpNSA9IGkxMCA8PCBpMyB8IGkxMSA+Pj4gKGk2ID4+PiAwKTsK
ICAgaTYgPSBpMTAgPj4+IChpNiA+Pj4gMCk7CiAgIGkxID0gMDsKICAgaTMgPSBpMTEgPDwgaTM7
CiAgIGJyZWFrOwogIH0KICBpZiAoIWkxNCkgewogICBpOSA9IDA7CiAgIGkxMCA9IDA7CiAgIHJl
dHVybiAodGVtcFJldDAgPSBpOSwgaTEwKSB8IDA7CiAgfQogIEhFQVAzMltpMTQgPj4gMl0gPSBp
OCB8IDA7CiAgSEVBUDMyW2kxNCArIDQgPj4gMl0gPSBpOSB8IGk3ICYgMDsKICBpOSA9IDA7CiAg
aTEwID0gMDsKICByZXR1cm4gKHRlbXBSZXQwID0gaTksIGkxMCkgfCAwOwogfSB3aGlsZSAoMCk7
CiBpZiAoIWk0KSB7CiAgaTkgPSBpMzsKICBpNCA9IDA7CiAgaTMgPSAwOwogfSBlbHNlIHsKICBp
MTAgPSBpMiB8IDAgfCAwOwogIGk5ID0gaTEzIHwgaTEyICYgMDsKICBpNyA9IF9pNjRBZGQoaTEw
IHwgMCwgaTkgfCAwLCAtMSwgLTEpIHwgMDsKICBpOCA9IHRlbXBSZXQwOwogIGkyID0gaTM7CiAg
aTMgPSAwOwogIGRvIHsKICAgaTE1ID0gaTI7CiAgIGkyID0gaTEgPj4+IDMxIHwgaTIgPDwgMTsK
ICAgaTEgPSBpMyB8IGkxIDw8IDE7CiAgIGkxNSA9IGk1IDw8IDEgfCBpMTUgPj4+IDMxIHwgMDsK
ICAgaTEzID0gaTUgPj4+IDMxIHwgaTYgPDwgMSB8IDA7CiAgIF9pNjRTdWJ0cmFjdChpNywgaTgs
IGkxNSwgaTEzKSB8IDA7CiAgIGkxMSA9IHRlbXBSZXQwOwogICBpMTIgPSBpMTEgPj4gMzEgfCAo
KGkxMSB8IDApIDwgMCA/IC0xIDogMCkgPDwgMTsKICAgaTMgPSBpMTIgJiAxOwogICBpNSA9IF9p
NjRTdWJ0cmFjdChpMTUsIGkxMywgaTEyICYgaTEwLCAoKChpMTEgfCAwKSA8IDAgPyAtMSA6IDAp
ID4+IDMxIHwgKChpMTEgfCAwKSA8IDAgPyAtMSA6IDApIDw8IDEpICYgaTkpIHwgMDsKICAgaTYg
PSB0ZW1wUmV0MDsKICAgaTQgPSBpNCAtIDEgfCAwOwogIH0gd2hpbGUgKChpNCB8IDApICE9IDAp
OwogIGk5ID0gaTI7CiAgaTQgPSAwOwogfQogaTIgPSAwOwogaWYgKGkxNCkgewogIEhFQVAzMltp
MTQgPj4gMl0gPSBpNTsKICBIRUFQMzJbaTE0ICsgNCA+PiAyXSA9IGk2OwogfQogaTkgPSAoaTEg
fCAwKSA+Pj4gMzEgfCAoaTkgfCBpMikgPDwgMSB8IChpMiA8PCAxIHwgaTEgPj4+IDMxKSAmIDAg
fCBpNDsKIGkxMCA9IChpMSA8PCAxIHwgMCA+Pj4gMzEpICYgLTIgfCBpMzsKIHJldHVybiAodGVt
cFJldDAgPSBpOSwgaTEwKSB8IDA7Cn0KCmZ1bmN0aW9uIF9fWjE1ZmFubmt1Y2hfd29ya2VyUHYo
aTIpIHsKIGkyID0gaTIgfCAwOwogdmFyIGkxID0gMCwgaTMgPSAwLCBpNCA9IDAsIGk1ID0gMCwg
aTYgPSAwLCBpNyA9IDAsIGk4ID0gMCwgaTkgPSAwLCBpMTAgPSAwLCBpMTEgPSAwLCBpMTIgPSAw
LCBpMTMgPSAwLCBpMTQgPSAwLCBpMTUgPSAwLCBpMTYgPSAwLCBpMTcgPSAwLCBpMTggPSAwLCBp
MTkgPSAwOwogaTEgPSBIRUFQMzJbaTIgKyA0ID4+IDJdIHwgMDsKIGkxNCA9IGkxIDw8IDI7CiBp
MTIgPSBfbWFsbG9jKGkxNCkgfCAwOwogaTEzID0gX21hbGxvYyhpMTQpIHwgMDsKIGkxNCA9IF9t
YWxsb2MoaTE0KSB8IDA7CiBpNCA9IChpMSB8IDApID4gMDsKIGlmIChpNCkgewogIGkzID0gMDsK
ICBkbyB7CiAgIEhFQVAzMltpMTIgKyAoaTMgPDwgMikgPj4gMl0gPSBpMzsKICAgaTMgPSBpMyAr
IDEgfCAwOwogIH0gd2hpbGUgKChpMyB8IDApICE9IChpMSB8IDApKTsKICBpMTEgPSBpMSArIC0x
IHwgMDsKICBpOSA9IEhFQVAzMltpMiA+PiAyXSB8IDA7CiAgSEVBUDMyW2kxMiArIChpOSA8PCAy
KSA+PiAyXSA9IGkxMTsKICBpMTAgPSBpMTIgKyAoaTExIDw8IDIpIHwgMDsKICBIRUFQMzJbaTEw
ID4+IDJdID0gaTk7CiAgaWYgKGk0KSB7CiAgIGk5ID0gaTEgPDwgMjsKICAgaTIgPSAwOwogICBp
NCA9IGkxOwogICBMNiA6IHdoaWxlICgxKSB7CiAgICBpZiAoKGk0IHwgMCkgPiAxKSB7CiAgICAg
ZG8gewogICAgICBpOCA9IGk0OwogICAgICBpNCA9IGk0ICsgLTEgfCAwOwogICAgICBIRUFQMzJb
aTE0ICsgKGk0IDw8IDIpID4+IDJdID0gaTg7CiAgICAgfSB3aGlsZSAoKGk0IHwgMCkgPiAxKTsK
ICAgICBpNCA9IDE7CiAgICB9CiAgICBpNyA9IEhFQVAzMltpMTIgPj4gMl0gfCAwOwogICAgaWYg
KChpNyB8IDApICE9IDAgPyAoSEVBUDMyW2kxMCA+PiAyXSB8IDApICE9IChpMTEgfCAwKSA6IDAp
IHsKICAgICBfbWVtY3B5KGkxMyB8IDAsIGkxMiB8IDAsIGk5IHwgMCkgfCAwOwogICAgIGk1ID0g
MDsKICAgICBpOCA9IEhFQVAzMltpMTMgPj4gMl0gfCAwOwogICAgIGRvIHsKICAgICAgaTYgPSBp
OCArIC0xIHwgMDsKICAgICAgaWYgKChpNiB8IDApID4gMSkgewogICAgICAgaTMgPSAxOwogICAg
ICAgZG8gewogICAgICAgIGkxOSA9IGkxMyArIChpMyA8PCAyKSB8IDA7CiAgICAgICAgaTE4ID0g
SEVBUDMyW2kxOSA+PiAyXSB8IDA7CiAgICAgICAgaTE3ID0gaTEzICsgKGk2IDw8IDIpIHwgMDsK
ICAgICAgICBIRUFQMzJbaTE5ID4+IDJdID0gSEVBUDMyW2kxNyA+PiAyXTsKICAgICAgICBIRUFQ
MzJbaTE3ID4+IDJdID0gaTE4OwogICAgICAgIGkzID0gaTMgKyAxIHwgMDsKICAgICAgICBpNiA9
IGk2ICsgLTEgfCAwOwogICAgICAgfSB3aGlsZSAoKGkzIHwgMCkgPCAoaTYgfCAwKSk7CiAgICAg
IH0KICAgICAgaTUgPSBpNSArIDEgfCAwOwogICAgICBpNiA9IGkxMyArIChpOCA8PCAyKSB8IDA7
CiAgICAgIGkzID0gaTg7CiAgICAgIGk4ID0gSEVBUDMyW2k2ID4+IDJdIHwgMDsKICAgICAgSEVB
UDMyW2k2ID4+IDJdID0gaTM7CiAgICAgfSB3aGlsZSAoKGk4IHwgMCkgIT0gMCk7CiAgICAgaTIg
PSAoaTIgfCAwKSA8IChpNSB8IDApID8gaTUgOiBpMjsKICAgIH0KICAgIGlmICgoaTQgfCAwKSA+
PSAoaTExIHwgMCkpIHsKICAgICBpMyA9IDMyOwogICAgIGJyZWFrOwogICAgfQogICAgd2hpbGUg
KDEpIHsKICAgICBpZiAoKGk0IHwgMCkgPiAwKSB7CiAgICAgIGk2ID0gMDsKICAgICAgZG8gewog
ICAgICAgaTggPSBpNjsKICAgICAgIGk2ID0gaTYgKyAxIHwgMDsKICAgICAgIEhFQVAzMltpMTIg
KyAoaTggPDwgMikgPj4gMl0gPSBIRUFQMzJbaTEyICsgKGk2IDw8IDIpID4+IDJdOwogICAgICB9
IHdoaWxlICgoaTYgfCAwKSAhPSAoaTQgfCAwKSk7CiAgICAgIGk2ID0gaTQ7CiAgICAgfSBlbHNl
IGk2ID0gMDsKICAgICBIRUFQMzJbaTEyICsgKGk2IDw8IDIpID4+IDJdID0gaTc7CiAgICAgaTcg
PSBpMTQgKyAoaTQgPDwgMikgfCAwOwogICAgIGk4ID0gSEVBUDMyW2k3ID4+IDJdIHwgMDsKICAg
ICBIRUFQMzJbaTcgPj4gMl0gPSBpOCArIC0xOwogICAgIGlmICgoaTggfCAwKSA+IDEpIGNvbnRp
bnVlIEw2OwogICAgIGk0ID0gaTQgKyAxIHwgMDsKICAgICBpZiAoKGk0IHwgMCkgPj0gKGkxMSB8
IDApKSB7CiAgICAgIGkzID0gMzI7CiAgICAgIGJyZWFrIEw2OwogICAgIH0KICAgICBpNyA9IEhF
QVAzMltpMTIgPj4gMl0gfCAwOwogICAgfQogICB9CiAgIGlmICgoaTMgfCAwKSA9PSAzMikgewog
ICAgX2ZyZWUoaTEyKTsKICAgIF9mcmVlKGkxMyk7CiAgICBfZnJlZShpMTQpOwogICAgcmV0dXJu
IGkyIHwgMDsKICAgfQogIH0gZWxzZSB7CiAgIGkxNSA9IGkxMDsKICAgaTE2ID0gaTExOwogIH0K
IH0gZWxzZSB7CiAgaTE2ID0gaTEgKyAtMSB8IDA7CiAgaTEwID0gSEVBUDMyW2kyID4+IDJdIHwg
MDsKICBIRUFQMzJbaTEyICsgKGkxMCA8PCAyKSA+PiAyXSA9IGkxNjsKICBpMTUgPSBpMTIgKyAo
aTE2IDw8IDIpIHwgMDsKICBIRUFQMzJbaTE1ID4+IDJdID0gaTEwOwogfQogaTIgPSAwOwogTDM2
IDogd2hpbGUgKDEpIHsKICBpZiAoKGkxIHwgMCkgPiAxKSB7CiAgIGRvIHsKICAgIGkxMCA9IGkx
OwogICAgaTEgPSBpMSArIC0xIHwgMDsKICAgIEhFQVAzMltpMTQgKyAoaTEgPDwgMikgPj4gMl0g
PSBpMTA7CiAgIH0gd2hpbGUgKChpMSB8IDApID4gMSk7CiAgIGkxID0gMTsKICB9CiAgaTQgPSBI
RUFQMzJbaTEyID4+IDJdIHwgMDsKICBpZiAoKGk0IHwgMCkgIT0gMCA/IChIRUFQMzJbaTE1ID4+
IDJdIHwgMCkgIT0gKGkxNiB8IDApIDogMCkgewogICBpMyA9IDA7CiAgIGk3ID0gSEVBUDMyW2kx
MyA+PiAyXSB8IDA7CiAgIGRvIHsKICAgIGk1ID0gaTcgKyAtMSB8IDA7CiAgICBpZiAoKGk1IHwg
MCkgPiAxKSB7CiAgICAgaTYgPSAxOwogICAgIGRvIHsKICAgICAgaTggPSBpMTMgKyAoaTYgPDwg
MikgfCAwOwogICAgICBpOSA9IEhFQVAzMltpOCA+PiAyXSB8IDA7CiAgICAgIGkxMCA9IGkxMyAr
IChpNSA8PCAyKSB8IDA7CiAgICAgIEhFQVAzMltpOCA+PiAyXSA9IEhFQVAzMltpMTAgPj4gMl07
CiAgICAgIEhFQVAzMltpMTAgPj4gMl0gPSBpOTsKICAgICAgaTYgPSBpNiArIDEgfCAwOwogICAg
ICBpNSA9IGk1ICsgLTEgfCAwOwogICAgIH0gd2hpbGUgKChpNiB8IDApIDwgKGk1IHwgMCkpOwog
ICAgfQogICAgaTMgPSBpMyArIDEgfCAwOwogICAgaTEwID0gaTEzICsgKGk3IDw8IDIpIHwgMDsK
ICAgIGk5ID0gaTc7CiAgICBpNyA9IEhFQVAzMltpMTAgPj4gMl0gfCAwOwogICAgSEVBUDMyW2kx
MCA+PiAyXSA9IGk5OwogICB9IHdoaWxlICgoaTcgfCAwKSAhPSAwKTsKICAgaTIgPSAoaTIgfCAw
KSA8IChpMyB8IDApID8gaTMgOiBpMjsKICB9CiAgaWYgKChpMSB8IDApID49IChpMTYgfCAwKSkg
ewogICBpMyA9IDMyOwogICBicmVhazsKICB9CiAgd2hpbGUgKDEpIHsKICAgaWYgKChpMSB8IDAp
ID4gMCkgewogICAgaTMgPSAwOwogICAgZG8gewogICAgIGkxMCA9IGkzOwogICAgIGkzID0gaTMg
KyAxIHwgMDsKICAgICBIRUFQMzJbaTEyICsgKGkxMCA8PCAyKSA+PiAyXSA9IEhFQVAzMltpMTIg
KyAoaTMgPDwgMikgPj4gMl07CiAgICB9IHdoaWxlICgoaTMgfCAwKSAhPSAoaTEgfCAwKSk7CiAg
ICBpMyA9IGkxOwogICB9IGVsc2UgaTMgPSAwOwogICBIRUFQMzJbaTEyICsgKGkzIDw8IDIpID4+
IDJdID0gaTQ7CiAgIGk5ID0gaTE0ICsgKGkxIDw8IDIpIHwgMDsKICAgaTEwID0gSEVBUDMyW2k5
ID4+IDJdIHwgMDsKICAgSEVBUDMyW2k5ID4+IDJdID0gaTEwICsgLTE7CiAgIGlmICgoaTEwIHwg
MCkgPiAxKSBjb250aW51ZSBMMzY7CiAgIGkxID0gaTEgKyAxIHwgMDsKICAgaWYgKChpMSB8IDAp
ID49IChpMTYgfCAwKSkgewogICAgaTMgPSAzMjsKICAgIGJyZWFrIEwzNjsKICAgfQogICBpNCA9
IEhFQVAzMltpMTIgPj4gMl0gfCAwOwogIH0KIH0KIGlmICgoaTMgfCAwKSA9PSAzMikgewogIF9m
cmVlKGkxMik7CiAgX2ZyZWUoaTEzKTsKICBfZnJlZShpMTQpOwogIHJldHVybiBpMiB8IDA7CiB9
CiByZXR1cm4gMDsKfQoKZnVuY3Rpb24gX3BvcF9hcmczMzkoaTIsIGkzLCBpMSkgewogaTIgPSBp
MiB8IDA7CiBpMyA9IGkzIHwgMDsKIGkxID0gaTEgfCAwOwogdmFyIGk0ID0gMCwgaTUgPSAwLCBk
NiA9IDAuMDsKIEwxIDogZG8gaWYgKGkzID4+PiAwIDw9IDIwKSBkbyBzd2l0Y2ggKGkzIHwgMCkg
ewogY2FzZSA5OgogIHsKICAgaTQgPSAoSEVBUDMyW2kxID4+IDJdIHwgMCkgKyAoNCAtIDEpICYg
fig0IC0gMSk7CiAgIGkzID0gSEVBUDMyW2k0ID4+IDJdIHwgMDsKICAgSEVBUDMyW2kxID4+IDJd
ID0gaTQgKyA0OwogICBIRUFQMzJbaTIgPj4gMl0gPSBpMzsKICAgYnJlYWsgTDE7CiAgfQogY2Fz
ZSAxMDoKICB7CiAgIGk0ID0gKEhFQVAzMltpMSA+PiAyXSB8IDApICsgKDQgLSAxKSAmIH4oNCAt
IDEpOwogICBpMyA9IEhFQVAzMltpNCA+PiAyXSB8IDA7CiAgIEhFQVAzMltpMSA+PiAyXSA9IGk0
ICsgNDsKICAgaTEgPSBpMjsKICAgSEVBUDMyW2kxID4+IDJdID0gaTM7CiAgIEhFQVAzMltpMSAr
IDQgPj4gMl0gPSAoKGkzIHwgMCkgPCAwKSA8PCAzMSA+PiAzMTsKICAgYnJlYWsgTDE7CiAgfQog
Y2FzZSAxMToKICB7CiAgIGk0ID0gKEhFQVAzMltpMSA+PiAyXSB8IDApICsgKDQgLSAxKSAmIH4o
NCAtIDEpOwogICBpMyA9IEhFQVAzMltpNCA+PiAyXSB8IDA7CiAgIEhFQVAzMltpMSA+PiAyXSA9
IGk0ICsgNDsKICAgaTEgPSBpMjsKICAgSEVBUDMyW2kxID4+IDJdID0gaTM7CiAgIEhFQVAzMltp
MSArIDQgPj4gMl0gPSAwOwogICBicmVhayBMMTsKICB9CiBjYXNlIDEyOgogIHsKICAgaTUgPSAo
SEVBUDMyW2kxID4+IDJdIHwgMCkgKyAoOCAtIDEpICYgfig4IC0gMSk7CiAgIGkzID0gaTU7CiAg
IGk0ID0gSEVBUDMyW2kzID4+IDJdIHwgMDsKICAgaTMgPSBIRUFQMzJbaTMgKyA0ID4+IDJdIHwg
MDsKICAgSEVBUDMyW2kxID4+IDJdID0gaTUgKyA4OwogICBpMSA9IGkyOwogICBIRUFQMzJbaTEg
Pj4gMl0gPSBpNDsKICAgSEVBUDMyW2kxICsgNCA+PiAyXSA9IGkzOwogICBicmVhayBMMTsKICB9
CiBjYXNlIDEzOgogIHsKICAgaTQgPSAoSEVBUDMyW2kxID4+IDJdIHwgMCkgKyAoNCAtIDEpICYg
fig0IC0gMSk7CiAgIGkzID0gSEVBUDMyW2k0ID4+IDJdIHwgMDsKICAgSEVBUDMyW2kxID4+IDJd
ID0gaTQgKyA0OwogICBpMyA9IChpMyAmIDY1NTM1KSA8PCAxNiA+PiAxNjsKICAgaTEgPSBpMjsK
ICAgSEVBUDMyW2kxID4+IDJdID0gaTM7CiAgIEhFQVAzMltpMSArIDQgPj4gMl0gPSAoKGkzIHwg
MCkgPCAwKSA8PCAzMSA+PiAzMTsKICAgYnJlYWsgTDE7CiAgfQogY2FzZSAxNDoKICB7CiAgIGk0
ID0gKEhFQVAzMltpMSA+PiAyXSB8IDApICsgKDQgLSAxKSAmIH4oNCAtIDEpOwogICBpMyA9IEhF
QVAzMltpNCA+PiAyXSB8IDA7CiAgIEhFQVAzMltpMSA+PiAyXSA9IGk0ICsgNDsKICAgaTEgPSBp
MjsKICAgSEVBUDMyW2kxID4+IDJdID0gaTMgJiA2NTUzNTsKICAgSEVBUDMyW2kxICsgNCA+PiAy
XSA9IDA7CiAgIGJyZWFrIEwxOwogIH0KIGNhc2UgMTU6CiAgewogICBpNCA9IChIRUFQMzJbaTEg
Pj4gMl0gfCAwKSArICg0IC0gMSkgJiB+KDQgLSAxKTsKICAgaTMgPSBIRUFQMzJbaTQgPj4gMl0g
fCAwOwogICBIRUFQMzJbaTEgPj4gMl0gPSBpNCArIDQ7CiAgIGkzID0gKGkzICYgMjU1KSA8PCAy
NCA+PiAyNDsKICAgaTEgPSBpMjsKICAgSEVBUDMyW2kxID4+IDJdID0gaTM7CiAgIEhFQVAzMltp
MSArIDQgPj4gMl0gPSAoKGkzIHwgMCkgPCAwKSA8PCAzMSA+PiAzMTsKICAgYnJlYWsgTDE7CiAg
fQogY2FzZSAxNjoKICB7CiAgIGk0ID0gKEhFQVAzMltpMSA+PiAyXSB8IDApICsgKDQgLSAxKSAm
IH4oNCAtIDEpOwogICBpMyA9IEhFQVAzMltpNCA+PiAyXSB8IDA7CiAgIEhFQVAzMltpMSA+PiAy
XSA9IGk0ICsgNDsKICAgaTEgPSBpMjsKICAgSEVBUDMyW2kxID4+IDJdID0gaTMgJiAyNTU7CiAg
IEhFQVAzMltpMSArIDQgPj4gMl0gPSAwOwogICBicmVhayBMMTsKICB9CiBjYXNlIDE3OgogIHsK
ICAgaTMgPSAoSEVBUDMyW2kxID4+IDJdIHwgMCkgKyAoOCAtIDEpICYgfig4IC0gMSk7CiAgIGQ2
ID0gK0hFQVBGNjRbaTMgPj4gM107CiAgIEhFQVAzMltpMSA+PiAyXSA9IGkzICsgODsKICAgSEVB
UEY2NFtpMiA+PiAzXSA9IGQ2OwogICBicmVhayBMMTsKICB9CiBjYXNlIDE4OgogIHsKICAgaTMg
PSAoSEVBUDMyW2kxID4+IDJdIHwgMCkgKyAoOCAtIDEpICYgfig4IC0gMSk7CiAgIGQ2ID0gK0hF
QVBGNjRbaTMgPj4gM107CiAgIEhFQVAzMltpMSA+PiAyXSA9IGkzICsgODsKICAgSEVBUEY2NFtp
MiA+PiAzXSA9IGQ2OwogICBicmVhayBMMTsKICB9CiBkZWZhdWx0OgogIGJyZWFrIEwxOwogfSB3
aGlsZSAoMCk7IHdoaWxlICgwKTsKIHJldHVybjsKfQoKZnVuY3Rpb24gX21haW4oaTEsIGkyKSB7
CiBpMSA9IGkxIHwgMDsKIGkyID0gaTIgfCAwOwogdmFyIGkzID0gMCwgaTQgPSAwLCBpNSA9IDAs
IGk2ID0gMCwgaTcgPSAwLCBpOCA9IDAsIGk5ID0gMCwgaTEwID0gMCwgaTExID0gMCwgaTEyID0g
MCwgaTEzID0gMDsKIF9tYWxsb2MoMTY3NzcyMTYpIHwgMDsgLy8gd2FrYQogX21hbGxvYygzNzc0
ODczNikgfCAwOyAvLyB3YWthCiBpMTIgPSBTVEFDS1RPUDsKIFNUQUNLVE9QID0gU1RBQ0tUT1Ag
KyAxNiB8IDA7CiBpMTEgPSBpMTIgKyA4IHwgMDsKIGk5ID0gaTEyOwogaWYgKChpMSB8IDApID4g
MSA/IChpMTAgPSBfYXRvaShIRUFQMzJbaTIgKyA0ID4+IDJdIHwgMCkgfCAwLCAoaTEwIHwgMCkg
Pj0gMSkgOiAwKSB7CiAgaWYgKChpMTAgfCAwKSA+IDEpIHsKICAgaTEgPSBpMTAgKyAtMSB8IDA7
CiAgIGkzID0gMDsKICAgaTQgPSAwOwogICB3aGlsZSAoMSkgewogICAgaTIgPSBfbWFsbG9jKDEy
KSB8IDA7CiAgICBIRUFQMzJbaTIgPj4gMl0gPSBpNDsKICAgIEhFQVAzMltpMiArIDQgPj4gMl0g
PSBpMTA7CiAgICBIRUFQMzJbaTIgKyA4ID4+IDJdID0gaTM7CiAgICBpNCA9IGk0ICsgMSB8IDA7
CiAgICBpZiAoKGk0IHwgMCkgPT0gKGkxIHwgMCkpIGJyZWFrOyBlbHNlIGkzID0gaTI7CiAgIH0K
ICB9IGVsc2UgaTIgPSAwOwogIGk3ID0gaTEwIDw8IDI7CiAgaTYgPSBfbWFsbG9jKGk3KSB8IDA7
CiAgaTcgPSBfbWFsbG9jKGk3KSB8IDA7CiAgaTggPSAoaTEwIHwgMCkgPiAwOwogIGlmIChpOCkg
ewogICBpNCA9IDA7CiAgIGRvIHsKICAgIEhFQVAzMltpNiArIChpNCA8PCAyKSA+PiAyXSA9IGk0
OwogICAgaTQgPSBpNCArIDEgfCAwOwogICB9IHdoaWxlICgoaTQgfCAwKSAhPSAoaTEwIHwgMCkp
OwogICBpNCA9IGkxMDsKICAgaTEgPSAzMDsKICB9IGVsc2UgewogICBpNCA9IGkxMDsKICAgaTEg
PSAzMDsKICB9CiAgTDEyIDogZG8gewogICBpZiAoaTgpIHsKICAgIGkzID0gMDsKICAgIGRvIHsK
ICAgICBIRUFQMzJbaTkgPj4gMl0gPSAoSEVBUDMyW2k2ICsgKGkzIDw8IDIpID4+IDJdIHwgMCkg
KyAxOwogICAgIF9wcmludGYoNjk1LCBpOSkgfCAwOwogICAgIGkzID0gaTMgKyAxIHwgMDsKICAg
IH0gd2hpbGUgKChpMyB8IDApICE9IChpMTAgfCAwKSk7CiAgIH0KICAgX3B1dGNoYXIoMTApIHwg
MDsKICAgaTEgPSBpMSArIC0xIHwgMDsKICAgaWYgKChpNCB8IDApID4gMSkgewogICAgZG8gewog
ICAgIGk1ID0gaTQ7CiAgICAgaTQgPSBpNCArIC0xIHwgMDsKICAgICBIRUFQMzJbaTcgKyAoaTQg
PDwgMikgPj4gMl0gPSBpNTsKICAgIH0gd2hpbGUgKChpNCB8IDApID4gMSk7CiAgICBpNCA9IDE7
CiAgIH0KICAgaWYgKChpNCB8IDApID09IChpMTAgfCAwKSkgYnJlYWs7CiAgIHdoaWxlICgxKSB7
CiAgICBpNSA9IEhFQVAzMltpNiA+PiAyXSB8IDA7CiAgICBpZiAoKGk0IHwgMCkgPiAwKSB7CiAg
ICAgaTMgPSAwOwogICAgIGRvIHsKICAgICAgaTEzID0gaTM7CiAgICAgIGkzID0gaTMgKyAxIHwg
MDsKICAgICAgSEVBUDMyW2k2ICsgKGkxMyA8PCAyKSA+PiAyXSA9IEhFQVAzMltpNiArIChpMyA8
PCAyKSA+PiAyXTsKICAgICB9IHdoaWxlICgoaTMgfCAwKSAhPSAoaTQgfCAwKSk7CiAgICAgaTMg
PSBpNDsKICAgIH0gZWxzZSBpMyA9IDA7CiAgICBIRUFQMzJbaTYgKyAoaTMgPDwgMikgPj4gMl0g
PSBpNTsKICAgIGkzID0gaTcgKyAoaTQgPDwgMikgfCAwOwogICAgaTUgPSBIRUFQMzJbaTMgPj4g
Ml0gfCAwOwogICAgSEVBUDMyW2kzID4+IDJdID0gaTUgKyAtMTsKICAgIGlmICgoaTUgfCAwKSA+
IDEpIGJyZWFrOwogICAgaTQgPSBpNCArIDEgfCAwOwogICAgaWYgKChpNCB8IDApID09IChpMTAg
fCAwKSkgYnJlYWsgTDEyOwogICB9CiAgfSB3aGlsZSAoKGkxIHwgMCkgIT0gMCk7CiAgX2ZyZWUo
aTYpOwogIF9mcmVlKGk3KTsKICBpZiAoIWkyKSBpMSA9IDA7IGVsc2UgewogICBpMSA9IDA7CiAg
IGRvIHsKICAgIGk5ID0gX19aMTVmYW5ua3VjaF93b3JrZXJQdihpMikgfCAwOwogICAgaTEgPSAo
aTEgfCAwKSA8IChpOSB8IDApID8gaTkgOiBpMTsKICAgIGk5ID0gaTI7CiAgICBpMiA9IEhFQVAz
MltpMiArIDggPj4gMl0gfCAwOwogICAgX2ZyZWUoaTkpOwogICB9IHdoaWxlICgoaTIgfCAwKSAh
PSAwKTsKICB9CiAgSEVBUDMyW2kxMSA+PiAyXSA9IGkxMDsKICBIRUFQMzJbaTExICsgNCA+PiAy
XSA9IGkxOwogIF9wcmludGYoNjcyLCBpMTEpIHwgMDsKICBpMTAgPSAwOwogIFNUQUNLVE9QID0g
aTEyOwogIHJldHVybiBpMTAgfCAwOwogfQogX3B1dHMoNjk4KSB8IDA7CiBpMTAgPSAxOwogU1RB
Q0tUT1AgPSBpMTI7CiByZXR1cm4gaTEwIHwgMDsKfQoKZnVuY3Rpb24gX19fc3RkaW9fd3JpdGUo
aTE0LCBpMiwgaTEpIHsKIGkxNCA9IGkxNCB8IDA7CiBpMiA9IGkyIHwgMDsKIGkxID0gaTEgfCAw
OwogdmFyIGkzID0gMCwgaTQgPSAwLCBpNSA9IDAsIGk2ID0gMCwgaTcgPSAwLCBpOCA9IDAsIGk5
ID0gMCwgaTEwID0gMCwgaTExID0gMCwgaTEyID0gMCwgaTEzID0gMCwgaTE1ID0gMDsKIGkxNSA9
IFNUQUNLVE9QOwogU1RBQ0tUT1AgPSBTVEFDS1RPUCArIDQ4IHwgMDsKIGkxMSA9IGkxNSArIDE2
IHwgMDsKIGkxMCA9IGkxNTsKIGkzID0gaTE1ICsgMzIgfCAwOwogaTEyID0gaTE0ICsgMjggfCAw
OwogaTQgPSBIRUFQMzJbaTEyID4+IDJdIHwgMDsKIEhFQVAzMltpMyA+PiAyXSA9IGk0OwogaTEz
ID0gaTE0ICsgMjAgfCAwOwogaTQgPSAoSEVBUDMyW2kxMyA+PiAyXSB8IDApIC0gaTQgfCAwOwog
SEVBUDMyW2kzICsgNCA+PiAyXSA9IGk0OwogSEVBUDMyW2kzICsgOCA+PiAyXSA9IGkyOwogSEVB
UDMyW2kzICsgMTIgPj4gMl0gPSBpMTsKIGk4ID0gaTE0ICsgNjAgfCAwOwogaTkgPSBpMTQgKyA0
NCB8IDA7CiBpMiA9IDI7CiBpNCA9IGk0ICsgaTEgfCAwOwogd2hpbGUgKDEpIHsKICBpZiAoIShI
RUFQMzJbNF0gfCAwKSkgewogICBIRUFQMzJbaTExID4+IDJdID0gSEVBUDMyW2k4ID4+IDJdOwog
ICBIRUFQMzJbaTExICsgNCA+PiAyXSA9IGkzOwogICBIRUFQMzJbaTExICsgOCA+PiAyXSA9IGky
OwogICBpNiA9IF9fX3N5c2NhbGxfcmV0KF9fX3N5c2NhbGwxNDYoMTQ2LCBpMTEgfCAwKSB8IDAp
IHwgMDsKICB9IGVsc2UgewogICBfcHRocmVhZF9jbGVhbnVwX3B1c2goMSwgaTE0IHwgMCk7CiAg
IEhFQVAzMltpMTAgPj4gMl0gPSBIRUFQMzJbaTggPj4gMl07CiAgIEhFQVAzMltpMTAgKyA0ID4+
IDJdID0gaTM7CiAgIEhFQVAzMltpMTAgKyA4ID4+IDJdID0gaTI7CiAgIGk2ID0gX19fc3lzY2Fs
bF9yZXQoX19fc3lzY2FsbDE0NigxNDYsIGkxMCB8IDApIHwgMCkgfCAwOwogICBfcHRocmVhZF9j
bGVhbnVwX3BvcCgwKTsKICB9CiAgaWYgKChpNCB8IDApID09IChpNiB8IDApKSB7CiAgIGk0ID0g
NjsKICAgYnJlYWs7CiAgfQogIGlmICgoaTYgfCAwKSA8IDApIHsKICAgaTQgPSA4OwogICBicmVh
azsKICB9CiAgaTQgPSBpNCAtIGk2IHwgMDsKICBpNSA9IEhFQVAzMltpMyArIDQgPj4gMl0gfCAw
OwogIGlmIChpNiA+Pj4gMCA8PSBpNSA+Pj4gMCkgaWYgKChpMiB8IDApID09IDIpIHsKICAgSEVB
UDMyW2kxMiA+PiAyXSA9IChIRUFQMzJbaTEyID4+IDJdIHwgMCkgKyBpNjsKICAgaTcgPSBpNTsK
ICAgaTIgPSAyOwogIH0gZWxzZSBpNyA9IGk1OyBlbHNlIHsKICAgaTcgPSBIRUFQMzJbaTkgPj4g
Ml0gfCAwOwogICBIRUFQMzJbaTEyID4+IDJdID0gaTc7CiAgIEhFQVAzMltpMTMgPj4gMl0gPSBp
NzsKICAgaTcgPSBIRUFQMzJbaTMgKyAxMiA+PiAyXSB8IDA7CiAgIGk2ID0gaTYgLSBpNSB8IDA7
CiAgIGkzID0gaTMgKyA4IHwgMDsKICAgaTIgPSBpMiArIC0xIHwgMDsKICB9CiAgSEVBUDMyW2kz
ID4+IDJdID0gKEhFQVAzMltpMyA+PiAyXSB8IDApICsgaTY7CiAgSEVBUDMyW2kzICsgNCA+PiAy
XSA9IGk3IC0gaTY7CiB9CiBpZiAoKGk0IHwgMCkgPT0gNikgewogIGkxMCA9IEhFQVAzMltpOSA+
PiAyXSB8IDA7CiAgSEVBUDMyW2kxNCArIDE2ID4+IDJdID0gaTEwICsgKEhFQVAzMltpMTQgKyA0
OCA+PiAyXSB8IDApOwogIEhFQVAzMltpMTIgPj4gMl0gPSBpMTA7CiAgSEVBUDMyW2kxMyA+PiAy
XSA9IGkxMDsKIH0gZWxzZSBpZiAoKGk0IHwgMCkgPT0gOCkgewogIEhFQVAzMltpMTQgKyAxNiA+
PiAyXSA9IDA7CiAgSEVBUDMyW2kxMiA+PiAyXSA9IDA7CiAgSEVBUDMyW2kxMyA+PiAyXSA9IDA7
CiAgSEVBUDMyW2kxNCA+PiAyXSA9IEhFQVAzMltpMTQgPj4gMl0gfCAzMjsKICBpZiAoKGkyIHwg
MCkgPT0gMikgaTEgPSAwOyBlbHNlIGkxID0gaTEgLSAoSEVBUDMyW2kzICsgNCA+PiAyXSB8IDAp
IHwgMDsKIH0KIFNUQUNLVE9QID0gaTE1OwogcmV0dXJuIGkxIHwgMDsKfQoKZnVuY3Rpb24gX3Zm
cHJpbnRmKGkxNSwgaTExLCBpMikgewogaTE1ID0gaTE1IHwgMDsKIGkxMSA9IGkxMSB8IDA7CiBp
MiA9IGkyIHwgMDsKIHZhciBpMSA9IDAsIGkzID0gMCwgaTQgPSAwLCBpNSA9IDAsIGk2ID0gMCwg
aTcgPSAwLCBpOCA9IDAsIGk5ID0gMCwgaTEwID0gMCwgaTEyID0gMCwgaTEzID0gMCwgaTE0ID0g
MCwgaTE2ID0gMDsKIGkxNiA9IFNUQUNLVE9QOwogU1RBQ0tUT1AgPSBTVEFDS1RPUCArIDIyNCB8
IDA7CiBpMTAgPSBpMTYgKyA4MCB8IDA7CiBpMTQgPSBpMTYgKyA5NiB8IDA7CiBpMTMgPSBpMTY7
CiBpMTIgPSBpMTYgKyAxMzYgfCAwOwogaTEgPSBpMTQ7CiBpMyA9IGkxICsgNDAgfCAwOwogZG8g
ewogIEhFQVAzMltpMSA+PiAyXSA9IDA7CiAgaTEgPSBpMSArIDQgfCAwOwogfSB3aGlsZSAoKGkx
IHwgMCkgPCAoaTMgfCAwKSk7CiBIRUFQMzJbaTEwID4+IDJdID0gSEVBUDMyW2kyID4+IDJdOwog
aWYgKChfcHJpbnRmX2NvcmUoMCwgaTExLCBpMTAsIGkxMywgaTE0KSB8IDApIDwgMCkgaTEgPSAt
MTsgZWxzZSB7CiAgaWYgKChIRUFQMzJbaTE1ICsgNzYgPj4gMl0gfCAwKSA+IC0xKSBpOCA9IF9f
X2xvY2tmaWxlKGkxNSkgfCAwOyBlbHNlIGk4ID0gMDsKICBpMiA9IEhFQVAzMltpMTUgPj4gMl0g
fCAwOwogIGk5ID0gaTIgJiAzMjsKICBpZiAoKEhFQVA4W2kxNSArIDc0ID4+IDBdIHwgMCkgPCAx
KSBIRUFQMzJbaTE1ID4+IDJdID0gaTIgJiAtMzM7CiAgaTMgPSBpMTUgKyA0OCB8IDA7CiAgaWYg
KCEoSEVBUDMyW2kzID4+IDJdIHwgMCkpIHsKICAgaTEgPSBpMTUgKyA0NCB8IDA7CiAgIGk0ID0g
SEVBUDMyW2kxID4+IDJdIHwgMDsKICAgSEVBUDMyW2kxID4+IDJdID0gaTEyOwogICBpNSA9IGkx
NSArIDI4IHwgMDsKICAgSEVBUDMyW2k1ID4+IDJdID0gaTEyOwogICBpNiA9IGkxNSArIDIwIHwg
MDsKICAgSEVBUDMyW2k2ID4+IDJdID0gaTEyOwogICBIRUFQMzJbaTMgPj4gMl0gPSA4MDsKICAg
aTcgPSBpMTUgKyAxNiB8IDA7CiAgIEhFQVAzMltpNyA+PiAyXSA9IGkxMiArIDgwOwogICBpMiA9
IF9wcmludGZfY29yZShpMTUsIGkxMSwgaTEwLCBpMTMsIGkxNCkgfCAwOwogICBpZiAoaTQpIHsK
ICAgIEZVTkNUSU9OX1RBQkxFX2lpaWlbSEVBUDMyW2kxNSArIDM2ID4+IDJdICYgM10oaTE1LCAw
LCAwKSB8IDA7CiAgICBpMiA9IChIRUFQMzJbaTYgPj4gMl0gfCAwKSA9PSAwID8gLTEgOiBpMjsK
ICAgIEhFQVAzMltpMSA+PiAyXSA9IGk0OwogICAgSEVBUDMyW2kzID4+IDJdID0gMDsKICAgIEhF
QVAzMltpNyA+PiAyXSA9IDA7CiAgICBIRUFQMzJbaTUgPj4gMl0gPSAwOwogICAgSEVBUDMyW2k2
ID4+IDJdID0gMDsKICAgfQogIH0gZWxzZSBpMiA9IF9wcmludGZfY29yZShpMTUsIGkxMSwgaTEw
LCBpMTMsIGkxNCkgfCAwOwogIGkxID0gSEVBUDMyW2kxNSA+PiAyXSB8IDA7CiAgSEVBUDMyW2kx
NSA+PiAyXSA9IGkxIHwgaTk7CiAgaWYgKGk4KSBfX191bmxvY2tmaWxlKGkxNSk7CiAgaTEgPSAo
aTEgJiAzMiB8IDApID09IDAgPyBpMiA6IC0xOwogfQogU1RBQ0tUT1AgPSBpMTY7CiByZXR1cm4g
aTEgfCAwOwp9CgpmdW5jdGlvbiBfbWVtY2hyKGkxLCBpNSwgaTIpIHsKIGkxID0gaTEgfCAwOwog
aTUgPSBpNSB8IDA7CiBpMiA9IGkyIHwgMDsKIHZhciBpMyA9IDAsIGk0ID0gMCwgaTYgPSAwLCBp
NyA9IDA7CiBpNiA9IGk1ICYgMjU1OwogaTMgPSAoaTIgfCAwKSAhPSAwOwogTDEgOiBkbyBpZiAo
aTMgJiAoaTEgJiAzIHwgMCkgIT0gMCkgewogIGk0ID0gaTUgJiAyNTU7CiAgd2hpbGUgKDEpIHsK
ICAgaWYgKChIRUFQOFtpMSA+PiAwXSB8IDApID09IGk0IDw8IDI0ID4+IDI0KSB7CiAgICBpNyA9
IDY7CiAgICBicmVhayBMMTsKICAgfQogICBpMSA9IGkxICsgMSB8IDA7CiAgIGkyID0gaTIgKyAt
MSB8IDA7CiAgIGkzID0gKGkyIHwgMCkgIT0gMDsKICAgaWYgKCEoaTMgJiAoaTEgJiAzIHwgMCkg
IT0gMCkpIHsKICAgIGk3ID0gNTsKICAgIGJyZWFrOwogICB9CiAgfQogfSBlbHNlIGk3ID0gNTsg
d2hpbGUgKDApOwogaWYgKChpNyB8IDApID09IDUpIGlmIChpMykgaTcgPSA2OyBlbHNlIGkyID0g
MDsKIEw4IDogZG8gaWYgKChpNyB8IDApID09IDYpIHsKICBpNCA9IGk1ICYgMjU1OwogIGlmICgo
SEVBUDhbaTEgPj4gMF0gfCAwKSAhPSBpNCA8PCAyNCA+PiAyNCkgewogICBpMyA9IE1hdGhfaW11
bChpNiwgMTY4NDMwMDkpIHwgMDsKICAgTDExIDogZG8gaWYgKGkyID4+PiAwID4gMykgd2hpbGUg
KDEpIHsKICAgIGk1ID0gSEVBUDMyW2kxID4+IDJdIF4gaTM7CiAgICBpZiAoKGk1ICYgLTIxMzkw
NjIxNDQgXiAtMjEzOTA2MjE0NCkgJiBpNSArIC0xNjg0MzAwOSkgYnJlYWs7CiAgICBpMSA9IGkx
ICsgNCB8IDA7CiAgICBpMiA9IGkyICsgLTQgfCAwOwogICAgaWYgKGkyID4+PiAwIDw9IDMpIHsK
ICAgICBpNyA9IDExOwogICAgIGJyZWFrIEwxMTsKICAgIH0KICAgfSBlbHNlIGk3ID0gMTE7IHdo
aWxlICgwKTsKICAgaWYgKChpNyB8IDApID09IDExKSBpZiAoIWkyKSB7CiAgICBpMiA9IDA7CiAg
ICBicmVhazsKICAgfQogICB3aGlsZSAoMSkgewogICAgaWYgKChIRUFQOFtpMSA+PiAwXSB8IDAp
ID09IGk0IDw8IDI0ID4+IDI0KSBicmVhayBMODsKICAgIGkxID0gaTEgKyAxIHwgMDsKICAgIGky
ID0gaTIgKyAtMSB8IDA7CiAgICBpZiAoIWkyKSB7CiAgICAgaTIgPSAwOwogICAgIGJyZWFrOwog
ICAgfQogICB9CiAgfQogfSB3aGlsZSAoMCk7CiByZXR1cm4gKChpMiB8IDApICE9IDAgPyBpMSA6
IDApIHwgMDsKfQoKZnVuY3Rpb24gX19fZndyaXRleChpMywgaTQsIGk2KSB7CiBpMyA9IGkzIHwg
MDsKIGk0ID0gaTQgfCAwOwogaTYgPSBpNiB8IDA7CiB2YXIgaTEgPSAwLCBpMiA9IDAsIGk1ID0g
MCwgaTcgPSAwOwogaTEgPSBpNiArIDE2IHwgMDsKIGkyID0gSEVBUDMyW2kxID4+IDJdIHwgMDsK
IGlmICghaTIpIGlmICghKF9fX3Rvd3JpdGUoaTYpIHwgMCkpIHsKICBpMiA9IEhFQVAzMltpMSA+
PiAyXSB8IDA7CiAgaTUgPSA0OwogfSBlbHNlIGkxID0gMDsgZWxzZSBpNSA9IDQ7CiBMNCA6IGRv
IGlmICgoaTUgfCAwKSA9PSA0KSB7CiAgaTcgPSBpNiArIDIwIHwgMDsKICBpNSA9IEhFQVAzMltp
NyA+PiAyXSB8IDA7CiAgaWYgKChpMiAtIGk1IHwgMCkgPj4+IDAgPCBpNCA+Pj4gMCkgewogICBp
MSA9IEZVTkNUSU9OX1RBQkxFX2lpaWlbSEVBUDMyW2k2ICsgMzYgPj4gMl0gJiAzXShpNiwgaTMs
IGk0KSB8IDA7CiAgIGJyZWFrOwogIH0KICBMOSA6IGRvIGlmICgoSEVBUDhbaTYgKyA3NSA+PiAw
XSB8IDApID4gLTEpIHsKICAgaTEgPSBpNDsKICAgd2hpbGUgKDEpIHsKICAgIGlmICghaTEpIHsK
ICAgICBpMiA9IGk1OwogICAgIGkxID0gMDsKICAgICBicmVhayBMOTsKICAgIH0KICAgIGkyID0g
aTEgKyAtMSB8IDA7CiAgICBpZiAoKEhFQVA4W2kzICsgaTIgPj4gMF0gfCAwKSA9PSAxMCkgYnJl
YWs7IGVsc2UgaTEgPSBpMjsKICAgfQogICBpZiAoKEZVTkNUSU9OX1RBQkxFX2lpaWlbSEVBUDMy
W2k2ICsgMzYgPj4gMl0gJiAzXShpNiwgaTMsIGkxKSB8IDApID4+PiAwIDwgaTEgPj4+IDApIGJy
ZWFrIEw0OwogICBpNCA9IGk0IC0gaTEgfCAwOwogICBpMyA9IGkzICsgaTEgfCAwOwogICBpMiA9
IEhFQVAzMltpNyA+PiAyXSB8IDA7CiAgfSBlbHNlIHsKICAgaTIgPSBpNTsKICAgaTEgPSAwOwog
IH0gd2hpbGUgKDApOwogIF9tZW1jcHkoaTIgfCAwLCBpMyB8IDAsIGk0IHwgMCkgfCAwOwogIEhF
QVAzMltpNyA+PiAyXSA9IChIRUFQMzJbaTcgPj4gMl0gfCAwKSArIGk0OwogIGkxID0gaTEgKyBp
NCB8IDA7CiB9IHdoaWxlICgwKTsKIHJldHVybiBpMSB8IDA7Cn0KCmZ1bmN0aW9uIF93Y3J0b21i
KGkxLCBpMywgaTIpIHsKIGkxID0gaTEgfCAwOwogaTMgPSBpMyB8IDA7CiBpMiA9IGkyIHwgMDsK
IGRvIGlmIChpMSkgewogIGlmIChpMyA+Pj4gMCA8IDEyOCkgewogICBIRUFQOFtpMSA+PiAwXSA9
IGkzOwogICBpMSA9IDE7CiAgIGJyZWFrOwogIH0KICBpZiAoaTMgPj4+IDAgPCAyMDQ4KSB7CiAg
IEhFQVA4W2kxID4+IDBdID0gaTMgPj4+IDYgfCAxOTI7CiAgIEhFQVA4W2kxICsgMSA+PiAwXSA9
IGkzICYgNjMgfCAxMjg7CiAgIGkxID0gMjsKICAgYnJlYWs7CiAgfQogIGlmIChpMyA+Pj4gMCA8
IDU1Mjk2IHwgKGkzICYgLTgxOTIgfCAwKSA9PSA1NzM0NCkgewogICBIRUFQOFtpMSA+PiAwXSA9
IGkzID4+PiAxMiB8IDIyNDsKICAgSEVBUDhbaTEgKyAxID4+IDBdID0gaTMgPj4+IDYgJiA2MyB8
IDEyODsKICAgSEVBUDhbaTEgKyAyID4+IDBdID0gaTMgJiA2MyB8IDEyODsKICAgaTEgPSAzOwog
ICBicmVhazsKICB9CiAgaWYgKChpMyArIC02NTUzNiB8IDApID4+PiAwIDwgMTA0ODU3Nikgewog
ICBIRUFQOFtpMSA+PiAwXSA9IGkzID4+PiAxOCB8IDI0MDsKICAgSEVBUDhbaTEgKyAxID4+IDBd
ID0gaTMgPj4+IDEyICYgNjMgfCAxMjg7CiAgIEhFQVA4W2kxICsgMiA+PiAwXSA9IGkzID4+PiA2
ICYgNjMgfCAxMjg7CiAgIEhFQVA4W2kxICsgMyA+PiAwXSA9IGkzICYgNjMgfCAxMjg7CiAgIGkx
ID0gNDsKICAgYnJlYWs7CiAgfSBlbHNlIHsKICAgaTEgPSBfX19lcnJub19sb2NhdGlvbigpIHwg
MDsKICAgSEVBUDMyW2kxID4+IDJdID0gODQ7CiAgIGkxID0gLTE7CiAgIGJyZWFrOwogIH0KIH0g
ZWxzZSBpMSA9IDE7IHdoaWxlICgwKTsKIHJldHVybiBpMSB8IDA7Cn0KCmZ1bmN0aW9uIF9mcHV0
YyhpNSwgaTYpIHsKIGk1ID0gaTUgfCAwOwogaTYgPSBpNiB8IDA7CiB2YXIgaTEgPSAwLCBpMiA9
IDAsIGkzID0gMCwgaTQgPSAwLCBpNyA9IDA7CiBpZiAoKEhFQVAzMltpNiArIDc2ID4+IDJdIHwg
MCkgPj0gMCA/IChfX19sb2NrZmlsZShpNikgfCAwKSAhPSAwIDogMCkgewogIGlmICgoSEVBUDhb
aTYgKyA3NSA+PiAwXSB8IDApICE9IChpNSB8IDApID8gKGkyID0gaTYgKyAyMCB8IDAsIGkzID0g
SEVBUDMyW2kyID4+IDJdIHwgMCwgaTMgPj4+IDAgPCAoSEVBUDMyW2k2ICsgMTYgPj4gMl0gfCAw
KSA+Pj4gMCkgOiAwKSB7CiAgIEhFQVAzMltpMiA+PiAyXSA9IGkzICsgMTsKICAgSEVBUDhbaTMg
Pj4gMF0gPSBpNTsKICAgaTEgPSBpNSAmIDI1NTsKICB9IGVsc2UgaTEgPSBfX19vdmVyZmxvdyhp
NiwgaTUpIHwgMDsKICBfX191bmxvY2tmaWxlKGk2KTsKIH0gZWxzZSBpNyA9IDM7CiBkbyBpZiAo
KGk3IHwgMCkgPT0gMykgewogIGlmICgoSEVBUDhbaTYgKyA3NSA+PiAwXSB8IDApICE9IChpNSB8
IDApID8gKGk0ID0gaTYgKyAyMCB8IDAsIGkxID0gSEVBUDMyW2k0ID4+IDJdIHwgMCwgaTEgPj4+
IDAgPCAoSEVBUDMyW2k2ICsgMTYgPj4gMl0gfCAwKSA+Pj4gMCkgOiAwKSB7CiAgIEhFQVAzMltp
NCA+PiAyXSA9IGkxICsgMTsKICAgSEVBUDhbaTEgPj4gMF0gPSBpNTsKICAgaTEgPSBpNSAmIDI1
NTsKICAgYnJlYWs7CiAgfQogIGkxID0gX19fb3ZlcmZsb3coaTYsIGk1KSB8IDA7CiB9IHdoaWxl
ICgwKTsKIHJldHVybiBpMSB8IDA7Cn0KCmZ1bmN0aW9uIF9fX292ZXJmbG93KGk4LCBpNikgewog
aTggPSBpOCB8IDA7CiBpNiA9IGk2IHwgMDsKIHZhciBpMSA9IDAsIGkyID0gMCwgaTMgPSAwLCBp
NCA9IDAsIGk1ID0gMCwgaTcgPSAwLCBpOSA9IDA7CiBpOSA9IFNUQUNLVE9QOwogU1RBQ0tUT1Ag
PSBTVEFDS1RPUCArIDE2IHwgMDsKIGk3ID0gaTk7CiBpNSA9IGk2ICYgMjU1OwogSEVBUDhbaTcg
Pj4gMF0gPSBpNTsKIGkyID0gaTggKyAxNiB8IDA7CiBpMyA9IEhFQVAzMltpMiA+PiAyXSB8IDA7
CiBpZiAoIWkzKSBpZiAoIShfX190b3dyaXRlKGk4KSB8IDApKSB7CiAgaTMgPSBIRUFQMzJbaTIg
Pj4gMl0gfCAwOwogIGk0ID0gNDsKIH0gZWxzZSBpMSA9IC0xOyBlbHNlIGk0ID0gNDsKIGRvIGlm
ICgoaTQgfCAwKSA9PSA0KSB7CiAgaTIgPSBpOCArIDIwIHwgMDsKICBpNCA9IEhFQVAzMltpMiA+
PiAyXSB8IDA7CiAgaWYgKGk0ID4+PiAwIDwgaTMgPj4+IDAgPyAoaTEgPSBpNiAmIDI1NSwgKGkx
IHwgMCkgIT0gKEhFQVA4W2k4ICsgNzUgPj4gMF0gfCAwKSkgOiAwKSB7CiAgIEhFQVAzMltpMiA+
PiAyXSA9IGk0ICsgMTsKICAgSEVBUDhbaTQgPj4gMF0gPSBpNTsKICAgYnJlYWs7CiAgfQogIGlm
ICgoRlVOQ1RJT05fVEFCTEVfaWlpaVtIRUFQMzJbaTggKyAzNiA+PiAyXSAmIDNdKGk4LCBpNywg
MSkgfCAwKSA9PSAxKSBpMSA9IEhFQVBVOFtpNyA+PiAwXSB8IDA7IGVsc2UgaTEgPSAtMTsKIH0g
d2hpbGUgKDApOwogU1RBQ0tUT1AgPSBpOTsKIHJldHVybiBpMSB8IDA7Cn0KCmZ1bmN0aW9uIF9w
YWQoaTYsIGkzLCBpNSwgaTQsIGkyKSB7CiBpNiA9IGk2IHwgMDsKIGkzID0gaTMgfCAwOwogaTUg
PSBpNSB8IDA7CiBpNCA9IGk0IHwgMDsKIGkyID0gaTIgfCAwOwogdmFyIGkxID0gMCwgaTcgPSAw
LCBpOCA9IDA7CiBpOCA9IFNUQUNLVE9QOwogU1RBQ0tUT1AgPSBTVEFDS1RPUCArIDI1NiB8IDA7
CiBpNyA9IGk4OwogZG8gaWYgKChpNSB8IDApID4gKGk0IHwgMCkgJiAoaTIgJiA3MzcyOCB8IDAp
ID09IDApIHsKICBpMSA9IGk1IC0gaTQgfCAwOwogIF9tZW1zZXQoaTcgfCAwLCBpMyB8IDAsIChp
MSA+Pj4gMCA+IDI1NiA/IDI1NiA6IGkxKSB8IDApIHwgMDsKICBpMiA9IEhFQVAzMltpNiA+PiAy
XSB8IDA7CiAgaTMgPSAoaTIgJiAzMiB8IDApID09IDA7CiAgaWYgKGkxID4+PiAwID4gMjU1KSB7
CiAgIGk1ID0gaTUgLSBpNCB8IDA7CiAgIGRvIHsKICAgIGlmIChpMykgewogICAgIF9fX2Z3cml0
ZXgoaTcsIDI1NiwgaTYpIHwgMDsKICAgICBpMiA9IEhFQVAzMltpNiA+PiAyXSB8IDA7CiAgICB9
CiAgICBpMSA9IGkxICsgLTI1NiB8IDA7CiAgICBpMyA9IChpMiAmIDMyIHwgMCkgPT0gMDsKICAg
fSB3aGlsZSAoaTEgPj4+IDAgPiAyNTUpOwogICBpZiAoaTMpIGkxID0gaTUgJiAyNTU7IGVsc2Ug
YnJlYWs7CiAgfSBlbHNlIGlmICghaTMpIGJyZWFrOwogIF9fX2Z3cml0ZXgoaTcsIGkxLCBpNikg
fCAwOwogfSB3aGlsZSAoMCk7CiBTVEFDS1RPUCA9IGk4OwogcmV0dXJuOwp9CgpmdW5jdGlvbiBf
X19yZW1kaTMoaTEsIGkyLCBpMywgaTQpIHsKIGkxID0gaTEgfCAwOwogaTIgPSBpMiB8IDA7CiBp
MyA9IGkzIHwgMDsKIGk0ID0gaTQgfCAwOwogdmFyIGk1ID0gMCwgaTYgPSAwLCBpNyA9IDAsIGk4
ID0gMCwgaTkgPSAwLCBpMTAgPSAwOwogaTUgPSBTVEFDS1RPUDsKIFNUQUNLVE9QID0gU1RBQ0tU
T1AgKyAxNiB8IDA7CiBpOCA9IGk1IHwgMDsKIGk3ID0gaTIgPj4gMzEgfCAoKGkyIHwgMCkgPCAw
ID8gLTEgOiAwKSA8PCAxOwogaTYgPSAoKGkyIHwgMCkgPCAwID8gLTEgOiAwKSA+PiAzMSB8ICgo
aTIgfCAwKSA8IDAgPyAtMSA6IDApIDw8IDE7CiBpMTAgPSBpNCA+PiAzMSB8ICgoaTQgfCAwKSA8
IDAgPyAtMSA6IDApIDw8IDE7CiBpOSA9ICgoaTQgfCAwKSA8IDAgPyAtMSA6IDApID4+IDMxIHwg
KChpNCB8IDApIDwgMCA/IC0xIDogMCkgPDwgMTsKIGkyID0gX2k2NFN1YnRyYWN0KGk3IF4gaTEs
IGk2IF4gaTIsIGk3LCBpNikgfCAwOwogaTEgPSB0ZW1wUmV0MDsKIF9fX3VkaXZtb2RkaTQoaTIs
IGkxLCBfaTY0U3VidHJhY3QoaTEwIF4gaTMsIGk5IF4gaTQsIGkxMCwgaTkpIHwgMCwgdGVtcFJl
dDAsIGk4KSB8IDA7CiBpMSA9IF9pNjRTdWJ0cmFjdChIRUFQMzJbaTggPj4gMl0gXiBpNywgSEVB
UDMyW2k4ICsgNCA+PiAyXSBeIGk2LCBpNywgaTYpIHwgMDsKIGkyID0gdGVtcFJldDA7CiBTVEFD
S1RPUCA9IGk1OwogcmV0dXJuICh0ZW1wUmV0MCA9IGkyLCBpMSkgfCAwOwp9CgpmdW5jdGlvbiBf
ZmZsdXNoKGkyKSB7CiBpMiA9IGkyIHwgMDsKIHZhciBpMSA9IDAsIGkzID0gMDsKIGRvIGlmIChp
MikgewogIGlmICgoSEVBUDMyW2kyICsgNzYgPj4gMl0gfCAwKSA8PSAtMSkgewogICBpMSA9IF9f
X2ZmbHVzaF91bmxvY2tlZChpMikgfCAwOwogICBicmVhazsKICB9CiAgaTMgPSAoX19fbG9ja2Zp
bGUoaTIpIHwgMCkgPT0gMDsKICBpMSA9IF9fX2ZmbHVzaF91bmxvY2tlZChpMikgfCAwOwogIGlm
ICghaTMpIF9fX3VubG9ja2ZpbGUoaTIpOwogfSBlbHNlIHsKICBpZiAoIShIRUFQMzJbM10gfCAw
KSkgaTEgPSAwOyBlbHNlIGkxID0gX2ZmbHVzaChIRUFQMzJbM10gfCAwKSB8IDA7CiAgX19fbG9j
ayg0NCk7CiAgaTIgPSBIRUFQMzJbMTBdIHwgMDsKICBpZiAoaTIpIGRvIHsKICAgaWYgKChIRUFQ
MzJbaTIgKyA3NiA+PiAyXSB8IDApID4gLTEpIGkzID0gX19fbG9ja2ZpbGUoaTIpIHwgMDsgZWxz
ZSBpMyA9IDA7CiAgIGlmICgoSEVBUDMyW2kyICsgMjAgPj4gMl0gfCAwKSA+Pj4gMCA+IChIRUFQ
MzJbaTIgKyAyOCA+PiAyXSB8IDApID4+PiAwKSBpMSA9IF9fX2ZmbHVzaF91bmxvY2tlZChpMikg
fCAwIHwgaTE7CiAgIGlmIChpMykgX19fdW5sb2NrZmlsZShpMik7CiAgIGkyID0gSEVBUDMyW2ky
ICsgNTYgPj4gMl0gfCAwOwogIH0gd2hpbGUgKChpMiB8IDApICE9IDApOwogIF9fX3VubG9jayg0
NCk7CiB9IHdoaWxlICgwKTsKIHJldHVybiBpMSB8IDA7Cn0KCmZ1bmN0aW9uIF9mcmV4cChkMSwg
aTUpIHsKIGQxID0gK2QxOwogaTUgPSBpNSB8IDA7CiB2YXIgaTIgPSAwLCBpMyA9IDAsIGk0ID0g
MDsKIEhFQVBGNjRbdGVtcERvdWJsZVB0ciA+PiAzXSA9IGQxOwogaTIgPSBIRUFQMzJbdGVtcERv
dWJsZVB0ciA+PiAyXSB8IDA7CiBpMyA9IEhFQVAzMlt0ZW1wRG91YmxlUHRyICsgNCA+PiAyXSB8
IDA7CiBpNCA9IF9iaXRzaGlmdDY0THNocihpMiB8IDAsIGkzIHwgMCwgNTIpIHwgMDsKIGk0ID0g
aTQgJiAyMDQ3Owogc3dpdGNoIChpNCB8IDApIHsKIGNhc2UgMDoKICB7CiAgIGlmIChkMSAhPSAw
LjApIHsKICAgIGQxID0gK19mcmV4cChkMSAqIDE4NDQ2NzQ0MDczNzA5NTUxNjE2LjAsIGk1KTsK
ICAgIGkyID0gKEhFQVAzMltpNSA+PiAyXSB8IDApICsgLTY0IHwgMDsKICAgfSBlbHNlIGkyID0g
MDsKICAgSEVBUDMyW2k1ID4+IDJdID0gaTI7CiAgIGJyZWFrOwogIH0KIGNhc2UgMjA0NzoKICBi
cmVhazsKIGRlZmF1bHQ6CiAgewogICBIRUFQMzJbaTUgPj4gMl0gPSBpNCArIC0xMDIyOwogICBI
RUFQMzJbdGVtcERvdWJsZVB0ciA+PiAyXSA9IGkyOwogICBIRUFQMzJbdGVtcERvdWJsZVB0ciAr
IDQgPj4gMl0gPSBpMyAmIC0yMTQ2NDM1MDczIHwgMTA3MTY0NDY3MjsKICAgZDEgPSArSEVBUEY2
NFt0ZW1wRG91YmxlUHRyID4+IDNdOwogIH0KIH0KIHJldHVybiArZDE7Cn0KCmZ1bmN0aW9uIF9h
dG9pKGkxKSB7CiBpMSA9IGkxIHwgMDsKIHZhciBpMiA9IDAsIGkzID0gMCwgaTQgPSAwLCBpNSA9
IDA7CiB3aGlsZSAoMSkgewogIGkyID0gaTEgKyAxIHwgMDsKICBpZiAoIShfaXNzcGFjZShIRUFQ
OFtpMSA+PiAwXSB8IDApIHwgMCkpIGJyZWFrOyBlbHNlIGkxID0gaTI7CiB9CiBpMyA9IEhFQVA4
W2kxID4+IDBdIHwgMDsKIHN3aXRjaCAoaTMgPDwgMjQgPj4gMjQgfCAwKSB7CiBjYXNlIDQ1Ogog
IHsKICAgaTQgPSAxOwogICBpNSA9IDU7CiAgIGJyZWFrOwogIH0KIGNhc2UgNDM6CiAgewogICBp
NCA9IDA7CiAgIGk1ID0gNTsKICAgYnJlYWs7CiAgfQogZGVmYXVsdDoKICBpNCA9IDA7CiB9CiBp
ZiAoKGk1IHwgMCkgPT0gNSkgewogIGkxID0gaTI7CiAgaTMgPSBIRUFQOFtpMiA+PiAwXSB8IDA7
CiB9CiBpMiA9IChpMyA8PCAyNCA+PiAyNCkgKyAtNDggfCAwOwogaWYgKGkyID4+PiAwIDwgMTAp
IHsKICBpMyA9IGkxOwogIGkxID0gMDsKICBkbyB7CiAgIGkzID0gaTMgKyAxIHwgMDsKICAgaTEg
PSAoaTEgKiAxMCB8IDApIC0gaTIgfCAwOwogICBpMiA9IChIRUFQOFtpMyA+PiAwXSB8IDApICsg
LTQ4IHwgMDsKICB9IHdoaWxlIChpMiA+Pj4gMCA8IDEwKTsKIH0gZWxzZSBpMSA9IDA7CiByZXR1
cm4gKChpNCB8IDApICE9IDAgPyBpMSA6IDAgLSBpMSB8IDApIHwgMDsKfQoKZnVuY3Rpb24gX19f
ZmZsdXNoX3VubG9ja2VkKGk3KSB7CiBpNyA9IGk3IHwgMDsKIHZhciBpMSA9IDAsIGkyID0gMCwg
aTMgPSAwLCBpNCA9IDAsIGk1ID0gMCwgaTYgPSAwOwogaTEgPSBpNyArIDIwIHwgMDsKIGk1ID0g
aTcgKyAyOCB8IDA7CiBpZiAoKEhFQVAzMltpMSA+PiAyXSB8IDApID4+PiAwID4gKEhFQVAzMltp
NSA+PiAyXSB8IDApID4+PiAwID8gKEZVTkNUSU9OX1RBQkxFX2lpaWlbSEVBUDMyW2k3ICsgMzYg
Pj4gMl0gJiAzXShpNywgMCwgMCkgfCAwLCAoSEVBUDMyW2kxID4+IDJdIHwgMCkgPT0gMCkgOiAw
KSBpMSA9IC0xOyBlbHNlIHsKICBpNiA9IGk3ICsgNCB8IDA7CiAgaTIgPSBIRUFQMzJbaTYgPj4g
Ml0gfCAwOwogIGkzID0gaTcgKyA4IHwgMDsKICBpNCA9IEhFQVAzMltpMyA+PiAyXSB8IDA7CiAg
aWYgKGkyID4+PiAwIDwgaTQgPj4+IDApIEZVTkNUSU9OX1RBQkxFX2lpaWlbSEVBUDMyW2k3ICsg
NDAgPj4gMl0gJiAzXShpNywgaTIgLSBpNCB8IDAsIDEpIHwgMDsKICBIRUFQMzJbaTcgKyAxNiA+
PiAyXSA9IDA7CiAgSEVBUDMyW2k1ID4+IDJdID0gMDsKICBIRUFQMzJbaTEgPj4gMl0gPSAwOwog
IEhFQVAzMltpMyA+PiAyXSA9IDA7CiAgSEVBUDMyW2k2ID4+IDJdID0gMDsKICBpMSA9IDA7CiB9
CiByZXR1cm4gaTEgfCAwOwp9CgpmdW5jdGlvbiBfbWVtY3B5KGkxLCBpNCwgaTIpIHsKIGkxID0g
aTEgfCAwOwogaTQgPSBpNCB8IDA7CiBpMiA9IGkyIHwgMDsKIHZhciBpMyA9IDA7CiBpZiAoKGky
IHwgMCkgPj0gNDA5NikgcmV0dXJuIF9lbXNjcmlwdGVuX21lbWNweV9iaWcoaTEgfCAwLCBpNCB8
IDAsIGkyIHwgMCkgfCAwOwogaTMgPSBpMSB8IDA7CiBpZiAoKGkxICYgMykgPT0gKGk0ICYgMykp
IHsKICB3aGlsZSAoaTEgJiAzKSB7CiAgIGlmICghaTIpIHJldHVybiBpMyB8IDA7CiAgIEhFQVA4
W2kxID4+IDBdID0gSEVBUDhbaTQgPj4gMF0gfCAwOwogICBpMSA9IGkxICsgMSB8IDA7CiAgIGk0
ID0gaTQgKyAxIHwgMDsKICAgaTIgPSBpMiAtIDEgfCAwOwogIH0KICB3aGlsZSAoKGkyIHwgMCkg
Pj0gNCkgewogICBIRUFQMzJbaTEgPj4gMl0gPSBIRUFQMzJbaTQgPj4gMl07CiAgIGkxID0gaTEg
KyA0IHwgMDsKICAgaTQgPSBpNCArIDQgfCAwOwogICBpMiA9IGkyIC0gNCB8IDA7CiAgfQogfQog
d2hpbGUgKChpMiB8IDApID4gMCkgewogIEhFQVA4W2kxID4+IDBdID0gSEVBUDhbaTQgPj4gMF0g
fCAwOwogIGkxID0gaTEgKyAxIHwgMDsKICBpNCA9IGk0ICsgMSB8IDA7CiAgaTIgPSBpMiAtIDEg
fCAwOwogfQogcmV0dXJuIGkzIHwgMDsKfQoKZnVuY3Rpb24gX19fZGl2ZGkzKGkxLCBpMiwgaTMs
IGk0KSB7CiBpMSA9IGkxIHwgMDsKIGkyID0gaTIgfCAwOwogaTMgPSBpMyB8IDA7CiBpNCA9IGk0
IHwgMDsKIHZhciBpNSA9IDAsIGk2ID0gMCwgaTcgPSAwLCBpOCA9IDAsIGk5ID0gMCwgaTEwID0g
MDsKIGkxMCA9IGkyID4+IDMxIHwgKChpMiB8IDApIDwgMCA/IC0xIDogMCkgPDwgMTsKIGk5ID0g
KChpMiB8IDApIDwgMCA/IC0xIDogMCkgPj4gMzEgfCAoKGkyIHwgMCkgPCAwID8gLTEgOiAwKSA8
PCAxOwogaTYgPSBpNCA+PiAzMSB8ICgoaTQgfCAwKSA8IDAgPyAtMSA6IDApIDw8IDE7CiBpNSA9
ICgoaTQgfCAwKSA8IDAgPyAtMSA6IDApID4+IDMxIHwgKChpNCB8IDApIDwgMCA/IC0xIDogMCkg
PDwgMTsKIGk4ID0gX2k2NFN1YnRyYWN0KGkxMCBeIGkxLCBpOSBeIGkyLCBpMTAsIGk5KSB8IDA7
CiBpNyA9IHRlbXBSZXQwOwogaTIgPSBpNiBeIGkxMDsKIGkxID0gaTUgXiBpOTsKIHJldHVybiBf
aTY0U3VidHJhY3QoKF9fX3VkaXZtb2RkaTQoaTgsIGk3LCBfaTY0U3VidHJhY3QoaTYgXiBpMywg
aTUgXiBpNCwgaTYsIGk1KSB8IDAsIHRlbXBSZXQwLCAwKSB8IDApIF4gaTIsIHRlbXBSZXQwIF4g
aTEsIGkyLCBpMSkgfCAwOwp9CgpmdW5jdGlvbiBfZm10X3UoaTIsIGkzLCBpMSkgewogaTIgPSBp
MiB8IDA7CiBpMyA9IGkzIHwgMDsKIGkxID0gaTEgfCAwOwogdmFyIGk0ID0gMDsKIGlmIChpMyA+
Pj4gMCA+IDAgfCAoaTMgfCAwKSA9PSAwICYgaTIgPj4+IDAgPiA0Mjk0OTY3Mjk1KSB7CiAgaTQg
PSBpMjsKICB3aGlsZSAoMSkgewogICBpMiA9IF9fX3VyZW1kaTMoaTQgfCAwLCBpMyB8IDAsIDEw
LCAwKSB8IDA7CiAgIGkxID0gaTEgKyAtMSB8IDA7CiAgIEhFQVA4W2kxID4+IDBdID0gaTIgfCA0
ODsKICAgaTIgPSBfX191ZGl2ZGkzKGk0IHwgMCwgaTMgfCAwLCAxMCwgMCkgfCAwOwogICBpZiAo
aTMgPj4+IDAgPiA5IHwgKGkzIHwgMCkgPT0gOSAmIGk0ID4+PiAwID4gNDI5NDk2NzI5NSkgewog
ICAgaTQgPSBpMjsKICAgIGkzID0gdGVtcFJldDA7CiAgIH0gZWxzZSBicmVhazsKICB9CiB9CiBp
ZiAoaTIpIHdoaWxlICgxKSB7CiAgaTEgPSBpMSArIC0xIHwgMDsKICBIRUFQOFtpMSA+PiAwXSA9
IChpMiA+Pj4gMCkgJSAxMCB8IDAgfCA0ODsKICBpZiAoaTIgPj4+IDAgPCAxMCkgYnJlYWs7IGVs
c2UgaTIgPSAoaTIgPj4+IDApIC8gMTAgfCAwOwogfQogcmV0dXJuIGkxIHwgMDsKfQoKZnVuY3Rp
b24gX3N0cmxlbihpMSkgewogaTEgPSBpMSB8IDA7CiB2YXIgaTIgPSAwLCBpMyA9IDAsIGk0ID0g
MDsKIGk0ID0gaTE7CiBMMSA6IGRvIGlmICghKGk0ICYgMykpIGkzID0gNDsgZWxzZSB7CiAgaTIg
PSBpNDsKICB3aGlsZSAoMSkgewogICBpZiAoIShIRUFQOFtpMSA+PiAwXSB8IDApKSB7CiAgICBp
MSA9IGkyOwogICAgYnJlYWsgTDE7CiAgIH0KICAgaTEgPSBpMSArIDEgfCAwOwogICBpMiA9IGkx
OwogICBpZiAoIShpMiAmIDMpKSB7CiAgICBpMyA9IDQ7CiAgICBicmVhazsKICAgfQogIH0KIH0g
d2hpbGUgKDApOwogaWYgKChpMyB8IDApID09IDQpIHsKICB3aGlsZSAoMSkgewogICBpMiA9IEhF
QVAzMltpMSA+PiAyXSB8IDA7CiAgIGlmICghKChpMiAmIC0yMTM5MDYyMTQ0IF4gLTIxMzkwNjIx
NDQpICYgaTIgKyAtMTY4NDMwMDkpKSBpMSA9IGkxICsgNCB8IDA7IGVsc2UgYnJlYWs7CiAgfQog
IGlmICgoaTIgJiAyNTUpIDw8IDI0ID4+IDI0KSBkbyBpMSA9IGkxICsgMSB8IDA7IHdoaWxlICgo
SEVBUDhbaTEgPj4gMF0gfCAwKSAhPSAwKTsKIH0KIHJldHVybiBpMSAtIGk0IHwgMDsKfQoKZnVu
Y3Rpb24gX21lbXNldChpMiwgaTYsIGkxKSB7CiBpMiA9IGkyIHwgMDsKIGk2ID0gaTYgfCAwOwog
aTEgPSBpMSB8IDA7CiB2YXIgaTMgPSAwLCBpNCA9IDAsIGk1ID0gMCwgaTcgPSAwOwogaTMgPSBp
MiArIGkxIHwgMDsKIGlmICgoaTEgfCAwKSA+PSAyMCkgewogIGk2ID0gaTYgJiAyNTU7CiAgaTUg
PSBpMiAmIDM7CiAgaTcgPSBpNiB8IGk2IDw8IDggfCBpNiA8PCAxNiB8IGk2IDw8IDI0OwogIGk0
ID0gaTMgJiB+MzsKICBpZiAoaTUpIHsKICAgaTUgPSBpMiArIDQgLSBpNSB8IDA7CiAgIHdoaWxl
ICgoaTIgfCAwKSA8IChpNSB8IDApKSB7CiAgICBIRUFQOFtpMiA+PiAwXSA9IGk2OwogICAgaTIg
PSBpMiArIDEgfCAwOwogICB9CiAgfQogIHdoaWxlICgoaTIgfCAwKSA8IChpNCB8IDApKSB7CiAg
IEhFQVAzMltpMiA+PiAyXSA9IGk3OwogICBpMiA9IGkyICsgNCB8IDA7CiAgfQogfQogd2hpbGUg
KChpMiB8IDApIDwgKGkzIHwgMCkpIHsKICBIRUFQOFtpMiA+PiAwXSA9IGk2OwogIGkyID0gaTIg
KyAxIHwgMDsKIH0KIHJldHVybiBpMiAtIGkxIHwgMDsKfQoKZnVuY3Rpb24gX3B1dHMoaTMpIHsK
IGkzID0gaTMgfCAwOwogdmFyIGkxID0gMCwgaTIgPSAwLCBpNCA9IDAsIGk1ID0gMDsKIGk0ID0g
SEVBUDMyWzJdIHwgMDsKIGlmICgoSEVBUDMyW2k0ICsgNzYgPj4gMl0gfCAwKSA+IC0xKSBpNSA9
IF9fX2xvY2tmaWxlKGk0KSB8IDA7IGVsc2UgaTUgPSAwOwogZG8gaWYgKChfZnB1dHMoaTMsIGk0
KSB8IDApIDwgMCkgaTEgPSAxOyBlbHNlIHsKICBpZiAoKEhFQVA4W2k0ICsgNzUgPj4gMF0gfCAw
KSAhPSAxMCA/IChpMSA9IGk0ICsgMjAgfCAwLCBpMiA9IEhFQVAzMltpMSA+PiAyXSB8IDAsIGky
ID4+PiAwIDwgKEhFQVAzMltpNCArIDE2ID4+IDJdIHwgMCkgPj4+IDApIDogMCkgewogICBIRUFQ
MzJbaTEgPj4gMl0gPSBpMiArIDE7CiAgIEhFQVA4W2kyID4+IDBdID0gMTA7CiAgIGkxID0gMDsK
ICAgYnJlYWs7CiAgfQogIGkxID0gKF9fX292ZXJmbG93KGk0LCAxMCkgfCAwKSA8IDA7CiB9IHdo
aWxlICgwKTsKIGlmIChpNSkgX19fdW5sb2NrZmlsZShpNCk7CiByZXR1cm4gaTEgPDwgMzEgPj4g
MzEgfCAwOwp9CgpmdW5jdGlvbiBfc3RyZXJyb3IoaTEpIHsKIGkxID0gaTEgfCAwOwogdmFyIGky
ID0gMCwgaTMgPSAwOwogaTIgPSAwOwogd2hpbGUgKDEpIHsKICBpZiAoKEhFQVBVOFs3MTQgKyBp
MiA+PiAwXSB8IDApID09IChpMSB8IDApKSB7CiAgIGkzID0gMjsKICAgYnJlYWs7CiAgfQogIGky
ID0gaTIgKyAxIHwgMDsKICBpZiAoKGkyIHwgMCkgPT0gODcpIHsKICAgaTIgPSA4NzsKICAgaTEg
PSA4MDI7CiAgIGkzID0gNTsKICAgYnJlYWs7CiAgfQogfQogaWYgKChpMyB8IDApID09IDIpIGlm
ICghaTIpIGkxID0gODAyOyBlbHNlIHsKICBpMSA9IDgwMjsKICBpMyA9IDU7CiB9CiBpZiAoKGkz
IHwgMCkgPT0gNSkgd2hpbGUgKDEpIHsKICB3aGlsZSAoMSkgewogICBpMyA9IGkxICsgMSB8IDA7
CiAgIGlmICghKEhFQVA4W2kxID4+IDBdIHwgMCkpIHsKICAgIGkxID0gaTM7CiAgICBicmVhazsK
ICAgfSBlbHNlIGkxID0gaTM7CiAgfQogIGkyID0gaTIgKyAtMSB8IDA7CiAgaWYgKCFpMikgYnJl
YWs7IGVsc2UgaTMgPSA1OwogfQogcmV0dXJuIGkxIHwgMDsKfQoKZnVuY3Rpb24gX19fc3RkaW9f
c2VlayhpMSwgaTIsIGk0KSB7CiBpMSA9IGkxIHwgMDsKIGkyID0gaTIgfCAwOwogaTQgPSBpNCB8
IDA7CiB2YXIgaTMgPSAwLCBpNSA9IDAsIGk2ID0gMDsKIGk1ID0gU1RBQ0tUT1A7CiBTVEFDS1RP
UCA9IFNUQUNLVE9QICsgMzIgfCAwOwogaTYgPSBpNTsKIGkzID0gaTUgKyAyMCB8IDA7CiBIRUFQ
MzJbaTYgPj4gMl0gPSBIRUFQMzJbaTEgKyA2MCA+PiAyXTsKIEhFQVAzMltpNiArIDQgPj4gMl0g
PSAwOwogSEVBUDMyW2k2ICsgOCA+PiAyXSA9IGkyOwogSEVBUDMyW2k2ICsgMTIgPj4gMl0gPSBp
MzsKIEhFQVAzMltpNiArIDE2ID4+IDJdID0gaTQ7CiBpZiAoKF9fX3N5c2NhbGxfcmV0KF9fX3N5
c2NhbGwxNDAoMTQwLCBpNiB8IDApIHwgMCkgfCAwKSA8IDApIHsKICBIRUFQMzJbaTMgPj4gMl0g
PSAtMTsKICBpMSA9IC0xOwogfSBlbHNlIGkxID0gSEVBUDMyW2kzID4+IDJdIHwgMDsKIFNUQUNL
VE9QID0gaTU7CiByZXR1cm4gaTEgfCAwOwp9CgpmdW5jdGlvbiBfX190b3dyaXRlKGkyKSB7CiBp
MiA9IGkyIHwgMDsKIHZhciBpMSA9IDAsIGkzID0gMDsKIGkxID0gaTIgKyA3NCB8IDA7CiBpMyA9
IEhFQVA4W2kxID4+IDBdIHwgMDsKIEhFQVA4W2kxID4+IDBdID0gaTMgKyAyNTUgfCBpMzsKIGkx
ID0gSEVBUDMyW2kyID4+IDJdIHwgMDsKIGlmICghKGkxICYgOCkpIHsKICBIRUFQMzJbaTIgKyA4
ID4+IDJdID0gMDsKICBIRUFQMzJbaTIgKyA0ID4+IDJdID0gMDsKICBpMSA9IEhFQVAzMltpMiAr
IDQ0ID4+IDJdIHwgMDsKICBIRUFQMzJbaTIgKyAyOCA+PiAyXSA9IGkxOwogIEhFQVAzMltpMiAr
IDIwID4+IDJdID0gaTE7CiAgSEVBUDMyW2kyICsgMTYgPj4gMl0gPSBpMSArIChIRUFQMzJbaTIg
KyA0OCA+PiAyXSB8IDApOwogIGkxID0gMDsKIH0gZWxzZSB7CiAgSEVBUDMyW2kyID4+IDJdID0g
aTEgfCAzMjsKICBpMSA9IC0xOwogfQogcmV0dXJuIGkxIHwgMDsKfQoKZnVuY3Rpb24gX19fc3Rk
b3V0X3dyaXRlKGkyLCBpMSwgaTMpIHsKIGkyID0gaTIgfCAwOwogaTEgPSBpMSB8IDA7CiBpMyA9
IGkzIHwgMDsKIHZhciBpNCA9IDAsIGk1ID0gMDsKIGk1ID0gU1RBQ0tUT1A7CiBTVEFDS1RPUCA9
IFNUQUNLVE9QICsgODAgfCAwOwogaTQgPSBpNTsKIEhFQVAzMltpMiArIDM2ID4+IDJdID0gMzsK
IGlmICgoSEVBUDMyW2kyID4+IDJdICYgNjQgfCAwKSA9PSAwID8gKEhFQVAzMltpNCA+PiAyXSA9
IEhFQVAzMltpMiArIDYwID4+IDJdLCBIRUFQMzJbaTQgKyA0ID4+IDJdID0gMjE1MDUsIEhFQVAz
MltpNCArIDggPj4gMl0gPSBpNSArIDEyLCAoX19fc3lzY2FsbDU0KDU0LCBpNCB8IDApIHwgMCkg
IT0gMCkgOiAwKSBIRUFQOFtpMiArIDc1ID4+IDBdID0gLTE7CiBpMSA9IF9fX3N0ZGlvX3dyaXRl
KGkyLCBpMSwgaTMpIHwgMDsKIFNUQUNLVE9QID0gaTU7CiByZXR1cm4gaTEgfCAwOwp9CgpmdW5j
dGlvbiBjb3B5VGVtcERvdWJsZShpMSkgewogaTEgPSBpMSB8IDA7CiBIRUFQOFt0ZW1wRG91Ymxl
UHRyID4+IDBdID0gSEVBUDhbaTEgPj4gMF07CiBIRUFQOFt0ZW1wRG91YmxlUHRyICsgMSA+PiAw
XSA9IEhFQVA4W2kxICsgMSA+PiAwXTsKIEhFQVA4W3RlbXBEb3VibGVQdHIgKyAyID4+IDBdID0g
SEVBUDhbaTEgKyAyID4+IDBdOwogSEVBUDhbdGVtcERvdWJsZVB0ciArIDMgPj4gMF0gPSBIRUFQ
OFtpMSArIDMgPj4gMF07CiBIRUFQOFt0ZW1wRG91YmxlUHRyICsgNCA+PiAwXSA9IEhFQVA4W2kx
ICsgNCA+PiAwXTsKIEhFQVA4W3RlbXBEb3VibGVQdHIgKyA1ID4+IDBdID0gSEVBUDhbaTEgKyA1
ID4+IDBdOwogSEVBUDhbdGVtcERvdWJsZVB0ciArIDYgPj4gMF0gPSBIRUFQOFtpMSArIDYgPj4g
MF07CiBIRUFQOFt0ZW1wRG91YmxlUHRyICsgNyA+PiAwXSA9IEhFQVA4W2kxICsgNyA+PiAwXTsK
fQoKZnVuY3Rpb24gX19fbXVsZHNpMyhpMSwgaTIpIHsKIGkxID0gaTEgfCAwOwogaTIgPSBpMiB8
IDA7CiB2YXIgaTMgPSAwLCBpNCA9IDAsIGk1ID0gMCwgaTYgPSAwOwogaTYgPSBpMSAmIDY1NTM1
OwogaTQgPSBpMiAmIDY1NTM1OwogaTMgPSBNYXRoX2ltdWwoaTQsIGk2KSB8IDA7CiBpNSA9IGkx
ID4+PiAxNjsKIGk0ID0gKGkzID4+PiAxNikgKyAoTWF0aF9pbXVsKGk0LCBpNSkgfCAwKSB8IDA7
CiBpMiA9IGkyID4+PiAxNjsKIGkxID0gTWF0aF9pbXVsKGkyLCBpNikgfCAwOwogcmV0dXJuICh0
ZW1wUmV0MCA9IChpNCA+Pj4gMTYpICsgKE1hdGhfaW11bChpMiwgaTUpIHwgMCkgKyAoKChpNCAm
IDY1NTM1KSArIGkxIHwgMCkgPj4+IDE2KSB8IDAsIGk0ICsgaTEgPDwgMTYgfCBpMyAmIDY1NTM1
IHwgMCkgfCAwOwp9CgpmdW5jdGlvbiBfZndyaXRlKGkyLCBpNSwgaTEsIGkzKSB7CiBpMiA9IGky
IHwgMDsKIGk1ID0gaTUgfCAwOwogaTEgPSBpMSB8IDA7CiBpMyA9IGkzIHwgMDsKIHZhciBpNCA9
IDAsIGk2ID0gMDsKIGk0ID0gTWF0aF9pbXVsKGkxLCBpNSkgfCAwOwogaWYgKChIRUFQMzJbaTMg
KyA3NiA+PiAyXSB8IDApID4gLTEpIHsKICBpNiA9IChfX19sb2NrZmlsZShpMykgfCAwKSA9PSAw
OwogIGkyID0gX19fZndyaXRleChpMiwgaTQsIGkzKSB8IDA7CiAgaWYgKCFpNikgX19fdW5sb2Nr
ZmlsZShpMyk7CiB9IGVsc2UgaTIgPSBfX19md3JpdGV4KGkyLCBpNCwgaTMpIHwgMDsKIGlmICgo
aTIgfCAwKSAhPSAoaTQgfCAwKSkgaTEgPSAoaTIgPj4+IDApIC8gKGk1ID4+PiAwKSB8IDA7CiBy
ZXR1cm4gaTEgfCAwOwp9CgpmdW5jdGlvbiBfbGx2bV9jdHR6X2kzMihpMikgewogaTIgPSBpMiB8
IDA7CiB2YXIgaTEgPSAwOwogaTEgPSBIRUFQOFtjdHR6X2k4ICsgKGkyICYgMjU1KSA+PiAwXSB8
IDA7CiBpZiAoKGkxIHwgMCkgPCA4KSByZXR1cm4gaTEgfCAwOwogaTEgPSBIRUFQOFtjdHR6X2k4
ICsgKGkyID4+IDggJiAyNTUpID4+IDBdIHwgMDsKIGlmICgoaTEgfCAwKSA8IDgpIHJldHVybiBp
MSArIDggfCAwOwogaTEgPSBIRUFQOFtjdHR6X2k4ICsgKGkyID4+IDE2ICYgMjU1KSA+PiAwXSB8
IDA7CiBpZiAoKGkxIHwgMCkgPCA4KSByZXR1cm4gaTEgKyAxNiB8IDA7CiByZXR1cm4gKEhFQVA4
W2N0dHpfaTggKyAoaTIgPj4+IDI0KSA+PiAwXSB8IDApICsgMjQgfCAwOwp9CgpmdW5jdGlvbiBf
aW5pdF9tcGFyYW1zKCkgewogdmFyIGkxID0gMDsKIGRvIGlmICghKEhFQVAzMlsxMzNdIHwgMCkp
IHsKICBpMSA9IF9zeXNjb25mKDMwKSB8IDA7CiAgaWYgKCEoaTEgKyAtMSAmIGkxKSkgewogICBI
RUFQMzJbMTM1XSA9IGkxOwogICBIRUFQMzJbMTM0XSA9IGkxOwogICBIRUFQMzJbMTM2XSA9IC0x
OwogICBIRUFQMzJbMTM3XSA9IC0xOwogICBIRUFQMzJbMTM4XSA9IDA7CiAgIEhFQVAzMlsxMjZd
ID0gMDsKICAgaTEgPSAoX3RpbWUoMCkgfCAwKSAmIC0xNiBeIDE0MzE2NTU3Njg7CiAgIEhFQVAz
MlsxMzNdID0gaTE7CiAgIGJyZWFrOwogIH0gZWxzZSBfYWJvcnQoKTsKIH0gd2hpbGUgKDApOwog
cmV0dXJuOwp9CgpmdW5jdGlvbiBfX191cmVtZGkzKGkxLCBpMiwgaTMsIGk0KSB7CiBpMSA9IGkx
IHwgMDsKIGkyID0gaTIgfCAwOwogaTMgPSBpMyB8IDA7CiBpNCA9IGk0IHwgMDsKIHZhciBpNSA9
IDAsIGk2ID0gMDsKIGk2ID0gU1RBQ0tUT1A7CiBTVEFDS1RPUCA9IFNUQUNLVE9QICsgMTYgfCAw
OwogaTUgPSBpNiB8IDA7CiBfX191ZGl2bW9kZGk0KGkxLCBpMiwgaTMsIGk0LCBpNSkgfCAwOwog
U1RBQ0tUT1AgPSBpNjsKIHJldHVybiAodGVtcFJldDAgPSBIRUFQMzJbaTUgKyA0ID4+IDJdIHwg
MCwgSEVBUDMyW2k1ID4+IDJdIHwgMCkgfCAwOwp9CgpmdW5jdGlvbiBfX19tdWxkaTMoaTEsIGky
LCBpMywgaTQpIHsKIGkxID0gaTEgfCAwOwogaTIgPSBpMiB8IDA7CiBpMyA9IGkzIHwgMDsKIGk0
ID0gaTQgfCAwOwogdmFyIGk1ID0gMCwgaTYgPSAwOwogaTUgPSBpMTsKIGk2ID0gaTM7CiBpMSA9
IF9fX211bGRzaTMoaTUsIGk2KSB8IDA7CiBpMyA9IHRlbXBSZXQwOwogcmV0dXJuICh0ZW1wUmV0
MCA9IChNYXRoX2ltdWwoaTIsIGk2KSB8IDApICsgKE1hdGhfaW11bChpNCwgaTUpIHwgMCkgKyBp
MyB8IGkzICYgMCwgaTEgfCAwIHwgMCkgfCAwOwp9CgpmdW5jdGlvbiBfX19zdGRpb19jbG9zZShp
MSkgewogaTEgPSBpMSB8IDA7CiB2YXIgaTIgPSAwLCBpMyA9IDA7CiBpMiA9IFNUQUNLVE9QOwog
U1RBQ0tUT1AgPSBTVEFDS1RPUCArIDE2IHwgMDsKIGkzID0gaTI7CiBIRUFQMzJbaTMgPj4gMl0g
PSBIRUFQMzJbaTEgKyA2MCA+PiAyXTsKIGkxID0gX19fc3lzY2FsbF9yZXQoX19fc3lzY2FsbDYo
NiwgaTMgfCAwKSB8IDApIHwgMDsKIFNUQUNLVE9QID0gaTI7CiByZXR1cm4gaTEgfCAwOwp9Cgpm
dW5jdGlvbiBjb3B5VGVtcEZsb2F0KGkxKSB7CiBpMSA9IGkxIHwgMDsKIEhFQVA4W3RlbXBEb3Vi
bGVQdHIgPj4gMF0gPSBIRUFQOFtpMSA+PiAwXTsKIEhFQVA4W3RlbXBEb3VibGVQdHIgKyAxID4+
IDBdID0gSEVBUDhbaTEgKyAxID4+IDBdOwogSEVBUDhbdGVtcERvdWJsZVB0ciArIDIgPj4gMF0g
PSBIRUFQOFtpMSArIDIgPj4gMF07CiBIRUFQOFt0ZW1wRG91YmxlUHRyICsgMyA+PiAwXSA9IEhF
QVA4W2kxICsgMyA+PiAwXTsKfQoKZnVuY3Rpb24gX2JpdHNoaWZ0NjRBc2hyKGkzLCBpMiwgaTEp
IHsKIGkzID0gaTMgfCAwOwogaTIgPSBpMiB8IDA7CiBpMSA9IGkxIHwgMDsKIGlmICgoaTEgfCAw
KSA8IDMyKSB7CiAgdGVtcFJldDAgPSBpMiA+PiBpMTsKICByZXR1cm4gaTMgPj4+IGkxIHwgKGky
ICYgKDEgPDwgaTEpIC0gMSkgPDwgMzIgLSBpMTsKIH0KIHRlbXBSZXQwID0gKGkyIHwgMCkgPCAw
ID8gLTEgOiAwOwogcmV0dXJuIGkyID4+IGkxIC0gMzIgfCAwOwp9CgpmdW5jdGlvbiBfcHJpbnRm
KGkxLCBpMikgewogaTEgPSBpMSB8IDA7CiBpMiA9IGkyIHwgMDsKIHZhciBpMyA9IDAsIGk0ID0g
MDsKIGkzID0gU1RBQ0tUT1A7CiBTVEFDS1RPUCA9IFNUQUNLVE9QICsgMTYgfCAwOwogaTQgPSBp
MzsKIEhFQVAzMltpNCA+PiAyXSA9IGkyOwogaTEgPSBfdmZwcmludGYoSEVBUDMyWzJdIHwgMCwg
aTEsIGk0KSB8IDA7CiBTVEFDS1RPUCA9IGkzOwogcmV0dXJuIGkxIHwgMDsKfQoKZnVuY3Rpb24g
X2JpdHNoaWZ0NjRTaGwoaTMsIGkyLCBpMSkgewogaTMgPSBpMyB8IDA7CiBpMiA9IGkyIHwgMDsK
IGkxID0gaTEgfCAwOwogaWYgKChpMSB8IDApIDwgMzIpIHsKICB0ZW1wUmV0MCA9IGkyIDw8IGkx
IHwgKGkzICYgKDEgPDwgaTEpIC0gMSA8PCAzMiAtIGkxKSA+Pj4gMzIgLSBpMTsKICByZXR1cm4g
aTMgPDwgaTE7CiB9CiB0ZW1wUmV0MCA9IGkzIDw8IGkxIC0gMzI7CiByZXR1cm4gMDsKfQoKZnVu
Y3Rpb24gX2JpdHNoaWZ0NjRMc2hyKGkzLCBpMiwgaTEpIHsKIGkzID0gaTMgfCAwOwogaTIgPSBp
MiB8IDA7CiBpMSA9IGkxIHwgMDsKIGlmICgoaTEgfCAwKSA8IDMyKSB7CiAgdGVtcFJldDAgPSBp
MiA+Pj4gaTE7CiAgcmV0dXJuIGkzID4+PiBpMSB8IChpMiAmICgxIDw8IGkxKSAtIDEpIDw8IDMy
IC0gaTE7CiB9CiB0ZW1wUmV0MCA9IDA7CiByZXR1cm4gaTIgPj4+IGkxIC0gMzIgfCAwOwp9Cgpm
dW5jdGlvbiBydW5Qb3N0U2V0cygpIHt9CmZ1bmN0aW9uIF9pNjRTdWJ0cmFjdChpMSwgaTIsIGkz
LCBpNCkgewogaTEgPSBpMSB8IDA7CiBpMiA9IGkyIHwgMDsKIGkzID0gaTMgfCAwOwogaTQgPSBp
NCB8IDA7CiBpMiA9IGkyIC0gaTQgLSAoaTMgPj4+IDAgPiBpMSA+Pj4gMCB8IDApID4+PiAwOwog
cmV0dXJuICh0ZW1wUmV0MCA9IGkyLCBpMSAtIGkzID4+PiAwIHwgMCkgfCAwOwp9CgpmdW5jdGlv
biBfaTY0QWRkKGkxLCBpMiwgaTMsIGk0KSB7CiBpMSA9IGkxIHwgMDsKIGkyID0gaTIgfCAwOwog
aTMgPSBpMyB8IDA7CiBpNCA9IGk0IHwgMDsKIGkzID0gaTEgKyBpMyA+Pj4gMDsKIHJldHVybiAo
dGVtcFJldDAgPSBpMiArIGk0ICsgKGkzID4+PiAwIDwgaTEgPj4+IDAgfCAwKSA+Pj4gMCwgaTMg
fCAwKSB8IDA7Cn0KCmZ1bmN0aW9uIF9fX3N5c2NhbGxfcmV0KGkxKSB7CiBpMSA9IGkxIHwgMDsK
IHZhciBpMiA9IDA7CiBpZiAoaTEgPj4+IDAgPiA0Mjk0OTYzMjAwKSB7CiAgaTIgPSBfX19lcnJu
b19sb2NhdGlvbigpIHwgMDsKICBIRUFQMzJbaTIgPj4gMl0gPSAwIC0gaTE7CiAgaTEgPSAtMTsK
IH0KIHJldHVybiBpMSB8IDA7Cn0KCmZ1bmN0aW9uIF9fX2Vycm5vX2xvY2F0aW9uKCkgewogdmFy
IGkxID0gMDsKIGlmICghKEhFQVAzMls0XSB8IDApKSBpMSA9IDU1NjsgZWxzZSB7CiAgaTEgPSAo
X3B0aHJlYWRfc2VsZigpIHwgMCkgKyA2MCB8IDA7CiAgaTEgPSBIRUFQMzJbaTEgPj4gMl0gfCAw
OwogfQogcmV0dXJuIGkxIHwgMDsKfQoKZnVuY3Rpb24gZHluQ2FsbF9paWlpKGk0LCBpMSwgaTIs
IGkzKSB7CiBpNCA9IGk0IHwgMDsKIGkxID0gaTEgfCAwOwogaTIgPSBpMiB8IDA7CiBpMyA9IGkz
IHwgMDsKIHJldHVybiBGVU5DVElPTl9UQUJMRV9paWlpW2k0ICYgM10oaTEgfCAwLCBpMiB8IDAs
IGkzIHwgMCkgfCAwOwp9CmZ1bmN0aW9uIHN0YWNrQWxsb2MoaTEpIHsKIGkxID0gaTEgfCAwOwog
dmFyIGkyID0gMDsKIGkyID0gU1RBQ0tUT1A7CiBTVEFDS1RPUCA9IFNUQUNLVE9QICsgaTEgfCAw
OwogU1RBQ0tUT1AgPSBTVEFDS1RPUCArIDE1ICYgLTE2OwogcmV0dXJuIGkyIHwgMDsKfQoKZnVu
Y3Rpb24gX19fdWRpdmRpMyhpMSwgaTIsIGkzLCBpNCkgewogaTEgPSBpMSB8IDA7CiBpMiA9IGky
IHwgMDsKIGkzID0gaTMgfCAwOwogaTQgPSBpNCB8IDA7CiByZXR1cm4gX19fdWRpdm1vZGRpNChp
MSwgaTIsIGkzLCBpNCwgMCkgfCAwOwp9CgpmdW5jdGlvbiBfd2N0b21iKGkxLCBpMikgewogaTEg
PSBpMSB8IDA7CiBpMiA9IGkyIHwgMDsKIGlmICghaTEpIGkxID0gMDsgZWxzZSBpMSA9IF93Y3J0
b21iKGkxLCBpMiwgMCkgfCAwOwogcmV0dXJuIGkxIHwgMDsKfQoKZnVuY3Rpb24gc2V0VGhyZXco
aTEsIGkyKSB7CiBpMSA9IGkxIHwgMDsKIGkyID0gaTIgfCAwOwogaWYgKCFfX1RIUkVXX18pIHsK
ICBfX1RIUkVXX18gPSBpMTsKICB0aHJld1ZhbHVlID0gaTI7CiB9Cn0KCmZ1bmN0aW9uIF9mcHV0
cyhpMiwgaTEpIHsKIGkyID0gaTIgfCAwOwogaTEgPSBpMSB8IDA7CiByZXR1cm4gKF9md3JpdGUo
aTIsIF9zdHJsZW4oaTIpIHwgMCwgMSwgaTEpIHwgMCkgKyAtMSB8IDA7Cn0KCmZ1bmN0aW9uIGR5
bkNhbGxfaWkoaTIsIGkxKSB7CiBpMiA9IGkyIHwgMDsKIGkxID0gaTEgfCAwOwogcmV0dXJuIEZV
TkNUSU9OX1RBQkxFX2lpW2kyICYgMV0oaTEgfCAwKSB8IDA7Cn0KCmZ1bmN0aW9uIGVzdGFibGlz
aFN0YWNrU3BhY2UoaTEsIGkyKSB7CiBpMSA9IGkxIHwgMDsKIGkyID0gaTIgfCAwOwogU1RBQ0tU
T1AgPSBpMTsKIFNUQUNLX01BWCA9IGkyOwp9CgpmdW5jdGlvbiBfY2xlYW51cChpMSkgewogaTEg
PSBpMSB8IDA7CiBpZiAoIShIRUFQMzJbaTEgKyA2OCA+PiAyXSB8IDApKSBfX191bmxvY2tmaWxl
KGkxKTsKIHJldHVybjsKfQoKZnVuY3Rpb24gX2lzc3BhY2UoaTEpIHsKIGkxID0gaTEgfCAwOwog
cmV0dXJuICgoaTEgfCAwKSA9PSAzMiB8IChpMSArIC05IHwgMCkgPj4+IDAgPCA1KSAmIDEgfCAw
Owp9CgpmdW5jdGlvbiBkeW5DYWxsX3ZpKGkyLCBpMSkgewogaTIgPSBpMiB8IDA7CiBpMSA9IGkx
IHwgMDsKIEZVTkNUSU9OX1RBQkxFX3ZpW2kyICYgMV0oaTEgfCAwKTsKfQoKZnVuY3Rpb24gYjEo
aTEsIGkyLCBpMykgewogaTEgPSBpMSB8IDA7CiBpMiA9IGkyIHwgMDsKIGkzID0gaTMgfCAwOwog
YWJvcnQoMSk7CiByZXR1cm4gMDsKfQoKZnVuY3Rpb24gX2ZyZXhwbChkMiwgaTEpIHsKIGQyID0g
K2QyOwogaTEgPSBpMSB8IDA7CiByZXR1cm4gKygrX2ZyZXhwKGQyLCBpMSkpOwp9CgpmdW5jdGlv
biBfcHV0Y2hhcihpMSkgewogaTEgPSBpMSB8IDA7CiByZXR1cm4gX2ZwdXRjKGkxLCBIRUFQMzJb
Ml0gfCAwKSB8IDA7Cn0KCmZ1bmN0aW9uIHN0YWNrUmVzdG9yZShpMSkgewogaTEgPSBpMSB8IDA7
CiBTVEFDS1RPUCA9IGkxOwp9CgpmdW5jdGlvbiBzZXRUZW1wUmV0MChpMSkgewogaTEgPSBpMSB8
IDA7CiB0ZW1wUmV0MCA9IGkxOwp9CgpmdW5jdGlvbiBiMChpMSkgewogaTEgPSBpMSB8IDA7CiBh
Ym9ydCgwKTsKIHJldHVybiAwOwp9CgpmdW5jdGlvbiBfX191bmxvY2tmaWxlKGkxKSB7CiBpMSA9
IGkxIHwgMDsKIHJldHVybjsKfQoKZnVuY3Rpb24gX19fbG9ja2ZpbGUoaTEpIHsKIGkxID0gaTEg
fCAwOwogcmV0dXJuIDA7Cn0KCmZ1bmN0aW9uIGdldFRlbXBSZXQwKCkgewogcmV0dXJuIHRlbXBS
ZXQwIHwgMDsKfQoKZnVuY3Rpb24gc3RhY2tTYXZlKCkgewogcmV0dXJuIFNUQUNLVE9QIHwgMDsK
fQoKZnVuY3Rpb24gYjIoaTEpIHsKIGkxID0gaTEgfCAwOwogYWJvcnQoMik7Cn0KCi8vIEVNU0NS
SVBURU5fRU5EX0ZVTkNTCnZhciBGVU5DVElPTl9UQUJMRV9paSA9IFtiMCxfX19zdGRpb19jbG9z
ZV07CnZhciBGVU5DVElPTl9UQUJMRV9paWlpID0gW2IxLF9fX3N0ZG91dF93cml0ZSxfX19zdGRp
b19zZWVrLF9fX3N0ZGlvX3dyaXRlXTsKdmFyIEZVTkNUSU9OX1RBQkxFX3ZpID0gW2IyLF9jbGVh
bnVwXTsKCiAgcmV0dXJuIHsgX2k2NFN1YnRyYWN0OiBfaTY0U3VidHJhY3QsIF9mZmx1c2g6IF9m
Zmx1c2gsIF9tYWluOiBfbWFpbiwgX2k2NEFkZDogX2k2NEFkZCwgX21lbXNldDogX21lbXNldCwg
X21hbGxvYzogX21hbGxvYywgX21lbWNweTogX21lbWNweSwgX2JpdHNoaWZ0NjRMc2hyOiBfYml0
c2hpZnQ2NExzaHIsIF9mcmVlOiBfZnJlZSwgX19fZXJybm9fbG9jYXRpb246IF9fX2Vycm5vX2xv
Y2F0aW9uLCBfYml0c2hpZnQ2NFNobDogX2JpdHNoaWZ0NjRTaGwsIHJ1blBvc3RTZXRzOiBydW5Q
b3N0U2V0cywgX2Vtc2NyaXB0ZW5fcmVwbGFjZV9tZW1vcnk6IF9lbXNjcmlwdGVuX3JlcGxhY2Vf
bWVtb3J5LCBzdGFja0FsbG9jOiBzdGFja0FsbG9jLCBzdGFja1NhdmU6IHN0YWNrU2F2ZSwgc3Rh
Y2tSZXN0b3JlOiBzdGFja1Jlc3RvcmUsIGVzdGFibGlzaFN0YWNrU3BhY2U6IGVzdGFibGlzaFN0
YWNrU3BhY2UsIHNldFRocmV3OiBzZXRUaHJldywgc2V0VGVtcFJldDA6IHNldFRlbXBSZXQwLCBn
ZXRUZW1wUmV0MDogZ2V0VGVtcFJldDAsIGR5bkNhbGxfaWk6IGR5bkNhbGxfaWksIGR5bkNhbGxf
aWlpaTogZHluQ2FsbF9paWlpLCBkeW5DYWxsX3ZpOiBkeW5DYWxsX3ZpIH07Cn0pCi8vIEVNU0NS
SVBURU5fRU5EX0FTTQooTW9kdWxlLmFzbUdsb2JhbEFyZywgTW9kdWxlLmFzbUxpYnJhcnlBcmcs
IGJ1ZmZlcik7CnZhciBfaTY0U3VidHJhY3QgPSBNb2R1bGVbIl9pNjRTdWJ0cmFjdCJdID0gYXNt
WyJfaTY0U3VidHJhY3QiXTsKdmFyIF9mZmx1c2ggPSBNb2R1bGVbIl9mZmx1c2giXSA9IGFzbVsi
X2ZmbHVzaCJdOwp2YXIgX21haW4gPSBNb2R1bGVbIl9tYWluIl0gPSBhc21bIl9tYWluIl07CnZh
ciBfaTY0QWRkID0gTW9kdWxlWyJfaTY0QWRkIl0gPSBhc21bIl9pNjRBZGQiXTsKdmFyIF9tZW1z
ZXQgPSBNb2R1bGVbIl9tZW1zZXQiXSA9IGFzbVsiX21lbXNldCJdOwp2YXIgcnVuUG9zdFNldHMg
PSBNb2R1bGVbInJ1blBvc3RTZXRzIl0gPSBhc21bInJ1blBvc3RTZXRzIl07CnZhciBfbWFsbG9j
ID0gTW9kdWxlWyJfbWFsbG9jIl0gPSBhc21bIl9tYWxsb2MiXTsKdmFyIF9tZW1jcHkgPSBNb2R1
bGVbIl9tZW1jcHkiXSA9IGFzbVsiX21lbWNweSJdOwp2YXIgX2Vtc2NyaXB0ZW5fcmVwbGFjZV9t
ZW1vcnkgPSBNb2R1bGVbIl9lbXNjcmlwdGVuX3JlcGxhY2VfbWVtb3J5Il0gPSBhc21bIl9lbXNj
cmlwdGVuX3JlcGxhY2VfbWVtb3J5Il07CnZhciBfYml0c2hpZnQ2NExzaHIgPSBNb2R1bGVbIl9i
aXRzaGlmdDY0THNociJdID0gYXNtWyJfYml0c2hpZnQ2NExzaHIiXTsKdmFyIF9mcmVlID0gTW9k
dWxlWyJfZnJlZSJdID0gYXNtWyJfZnJlZSJdOwp2YXIgX19fZXJybm9fbG9jYXRpb24gPSBNb2R1
bGVbIl9fX2Vycm5vX2xvY2F0aW9uIl0gPSBhc21bIl9fX2Vycm5vX2xvY2F0aW9uIl07CnZhciBf
Yml0c2hpZnQ2NFNobCA9IE1vZHVsZVsiX2JpdHNoaWZ0NjRTaGwiXSA9IGFzbVsiX2JpdHNoaWZ0
NjRTaGwiXTsKdmFyIGR5bkNhbGxfaWkgPSBNb2R1bGVbImR5bkNhbGxfaWkiXSA9IGFzbVsiZHlu
Q2FsbF9paSJdOwp2YXIgZHluQ2FsbF9paWlpID0gTW9kdWxlWyJkeW5DYWxsX2lpaWkiXSA9IGFz
bVsiZHluQ2FsbF9paWlpIl07CnZhciBkeW5DYWxsX3ZpID0gTW9kdWxlWyJkeW5DYWxsX3ZpIl0g
PSBhc21bImR5bkNhbGxfdmkiXTsKUnVudGltZS5zdGFja0FsbG9jID0gYXNtWyJzdGFja0FsbG9j
Il07ClJ1bnRpbWUuc3RhY2tTYXZlID0gYXNtWyJzdGFja1NhdmUiXTsKUnVudGltZS5zdGFja1Jl
c3RvcmUgPSBhc21bInN0YWNrUmVzdG9yZSJdOwpSdW50aW1lLmVzdGFibGlzaFN0YWNrU3BhY2Ug
PSBhc21bImVzdGFibGlzaFN0YWNrU3BhY2UiXTsKUnVudGltZS5zZXRUZW1wUmV0MCA9IGFzbVsi
c2V0VGVtcFJldDAiXTsKUnVudGltZS5nZXRUZW1wUmV0MCA9IGFzbVsiZ2V0VGVtcFJldDAiXTsK
ZnVuY3Rpb24gRXhpdFN0YXR1cyhzdGF0dXMpIHsKIHRoaXMubmFtZSA9ICJFeGl0U3RhdHVzIjsK
IHRoaXMubWVzc2FnZSA9ICJQcm9ncmFtIHRlcm1pbmF0ZWQgd2l0aCBleGl0KCIgKyBzdGF0dXMg
KyAiKSI7CiB0aGlzLnN0YXR1cyA9IHN0YXR1czsKfQpFeGl0U3RhdHVzLnByb3RvdHlwZSA9IG5l
dyBFcnJvcjsKRXhpdFN0YXR1cy5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBFeGl0U3RhdHVzOwp2
YXIgaW5pdGlhbFN0YWNrVG9wOwp2YXIgcHJlbG9hZFN0YXJ0VGltZSA9IG51bGw7CnZhciBjYWxs
ZWRNYWluID0gZmFsc2U7CmRlcGVuZGVuY2llc0Z1bGZpbGxlZCA9IGZ1bmN0aW9uIHJ1bkNhbGxl
cigpIHsKIGlmICghTW9kdWxlWyJjYWxsZWRSdW4iXSkgcnVuKCk7CiBpZiAoIU1vZHVsZVsiY2Fs
bGVkUnVuIl0pIGRlcGVuZGVuY2llc0Z1bGZpbGxlZCA9IHJ1bkNhbGxlcjsKfTsKTW9kdWxlWyJj
YWxsTWFpbiJdID0gTW9kdWxlLmNhbGxNYWluID0gZnVuY3Rpb24gY2FsbE1haW4oYXJncykgewog
YXNzZXJ0KHJ1bkRlcGVuZGVuY2llcyA9PSAwLCAiY2Fubm90IGNhbGwgbWFpbiB3aGVuIGFzeW5j
IGRlcGVuZGVuY2llcyByZW1haW4hIChsaXN0ZW4gb24gX19BVE1BSU5fXykiKTsKIGFzc2VydChf
X0FUUFJFUlVOX18ubGVuZ3RoID09IDAsICJjYW5ub3QgY2FsbCBtYWluIHdoZW4gcHJlUnVuIGZ1
bmN0aW9ucyByZW1haW4gdG8gYmUgY2FsbGVkIik7CiBhcmdzID0gYXJncyB8fCBbXTsKIGVuc3Vy
ZUluaXRSdW50aW1lKCk7CiB2YXIgYXJnYyA9IGFyZ3MubGVuZ3RoICsgMTsKIGZ1bmN0aW9uIHBh
ZCgpIHsKICBmb3IgKHZhciBpID0gMDsgaSA8IDQgLSAxOyBpKyspIHsKICAgYXJndi5wdXNoKDAp
OwogIH0KIH0KIHZhciBhcmd2ID0gWyBhbGxvY2F0ZShpbnRBcnJheUZyb21TdHJpbmcoTW9kdWxl
WyJ0aGlzUHJvZ3JhbSJdKSwgImk4IiwgQUxMT0NfTk9STUFMKSBdOwogcGFkKCk7CiBmb3IgKHZh
ciBpID0gMDsgaSA8IGFyZ2MgLSAxOyBpID0gaSArIDEpIHsKICBhcmd2LnB1c2goYWxsb2NhdGUo
aW50QXJyYXlGcm9tU3RyaW5nKGFyZ3NbaV0pLCAiaTgiLCBBTExPQ19OT1JNQUwpKTsKICBwYWQo
KTsKIH0KIGFyZ3YucHVzaCgwKTsKIGFyZ3YgPSBhbGxvY2F0ZShhcmd2LCAiaTMyIiwgQUxMT0Nf
Tk9STUFMKTsKIGluaXRpYWxTdGFja1RvcCA9IFJ1bnRpbWUuc3RhY2tTYXZlKCk7CiB0cnkgewog
IHZhciByZXQgPSBNb2R1bGVbIl9tYWluIl0oYXJnYywgYXJndiwgMCk7CiAgZXhpdChyZXQsIHRy
dWUpOwogfSBjYXRjaCAoZSkgewogIGlmIChlIGluc3RhbmNlb2YgRXhpdFN0YXR1cykgewogICBy
ZXR1cm47CiAgfSBlbHNlIGlmIChlID09ICJTaW11bGF0ZUluZmluaXRlTG9vcCIpIHsKICAgTW9k
dWxlWyJub0V4aXRSdW50aW1lIl0gPSB0cnVlOwogICBSdW50aW1lLnN0YWNrUmVzdG9yZShpbml0
aWFsU3RhY2tUb3ApOwogICByZXR1cm47CiAgfSBlbHNlIHsKICAgaWYgKGUgJiYgdHlwZW9mIGUg
PT09ICJvYmplY3QiICYmIGUuc3RhY2spIE1vZHVsZS5wcmludEVycigiZXhjZXB0aW9uIHRocm93
bjogIiArIFsgZSwgZS5zdGFjayBdKTsKICAgdGhyb3cgZTsKICB9CiB9IGZpbmFsbHkgewogIGNh
bGxlZE1haW4gPSB0cnVlOwogfQp9OwpmdW5jdGlvbiBydW4oYXJncykgewogYXJncyA9IGFyZ3Mg
fHwgTW9kdWxlWyJhcmd1bWVudHMiXTsKIGlmIChwcmVsb2FkU3RhcnRUaW1lID09PSBudWxsKSBw
cmVsb2FkU3RhcnRUaW1lID0gRGF0ZS5ub3coKTsKIGlmIChydW5EZXBlbmRlbmNpZXMgPiAwKSB7
CiAgcmV0dXJuOwogfQogcHJlUnVuKCk7CiBpZiAocnVuRGVwZW5kZW5jaWVzID4gMCkgcmV0dXJu
OwogaWYgKE1vZHVsZVsiY2FsbGVkUnVuIl0pIHJldHVybjsKIGZ1bmN0aW9uIGRvUnVuKCkgewog
IGlmIChNb2R1bGVbImNhbGxlZFJ1biJdKSByZXR1cm47CiAgTW9kdWxlWyJjYWxsZWRSdW4iXSA9
IHRydWU7CiAgaWYgKEFCT1JUKSByZXR1cm47CiAgZW5zdXJlSW5pdFJ1bnRpbWUoKTsKICBwcmVN
YWluKCk7CiAgaWYgKE1vZHVsZVsib25SdW50aW1lSW5pdGlhbGl6ZWQiXSkgTW9kdWxlWyJvblJ1
bnRpbWVJbml0aWFsaXplZCJdKCk7CiAgaWYgKE1vZHVsZVsiX21haW4iXSAmJiBzaG91bGRSdW5O
b3cpIE1vZHVsZVsiY2FsbE1haW4iXShhcmdzKTsKICBwb3N0UnVuKCk7CiB9CiBpZiAoTW9kdWxl
WyJzZXRTdGF0dXMiXSkgewogIE1vZHVsZVsic2V0U3RhdHVzIl0oIlJ1bm5pbmcuLi4iKTsKICBz
ZXRUaW1lb3V0KChmdW5jdGlvbigpIHsKICAgc2V0VGltZW91dCgoZnVuY3Rpb24oKSB7CiAgICBN
b2R1bGVbInNldFN0YXR1cyJdKCIiKTsKICAgfSksIDEpOwogICBkb1J1bigpOwogIH0pLCAxKTsK
IH0gZWxzZSB7CiAgZG9SdW4oKTsKIH0KfQpNb2R1bGVbInJ1biJdID0gTW9kdWxlLnJ1biA9IHJ1
bjsKZnVuY3Rpb24gZXhpdChzdGF0dXMsIGltcGxpY2l0KSB7CiBpZiAoaW1wbGljaXQgJiYgTW9k
dWxlWyJub0V4aXRSdW50aW1lIl0pIHsKICByZXR1cm47CiB9CiBpZiAoTW9kdWxlWyJub0V4aXRS
dW50aW1lIl0pIHt9IGVsc2UgewogIEFCT1JUID0gdHJ1ZTsKICBFWElUU1RBVFVTID0gc3RhdHVz
OwogIFNUQUNLVE9QID0gaW5pdGlhbFN0YWNrVG9wOwogIGV4aXRSdW50aW1lKCk7CiAgaWYgKE1v
ZHVsZVsib25FeGl0Il0pIE1vZHVsZVsib25FeGl0Il0oc3RhdHVzKTsKIH0KIGlmIChFTlZJUk9O
TUVOVF9JU19OT0RFKSB7CiAgcHJvY2Vzc1sic3Rkb3V0Il1bIm9uY2UiXSgiZHJhaW4iLCAoZnVu
Y3Rpb24oKSB7CiAgIHByb2Nlc3NbImV4aXQiXShzdGF0dXMpOwogIH0pKTsKICBjb25zb2xlLmxv
ZygiICIpOwogIHNldFRpbWVvdXQoKGZ1bmN0aW9uKCkgewogICBwcm9jZXNzWyJleGl0Il0oc3Rh
dHVzKTsKICB9KSwgNTAwKTsKIH0gZWxzZSBpZiAoRU5WSVJPTk1FTlRfSVNfU0hFTEwgJiYgdHlw
ZW9mIHF1aXQgPT09ICJmdW5jdGlvbiIpIHsKICBxdWl0KHN0YXR1cyk7CiB9CiB0aHJvdyBuZXcg
RXhpdFN0YXR1cyhzdGF0dXMpOwp9Ck1vZHVsZVsiZXhpdCJdID0gTW9kdWxlLmV4aXQgPSBleGl0
Owp2YXIgYWJvcnREZWNvcmF0b3JzID0gW107CmZ1bmN0aW9uIGFib3J0KHdoYXQpIHsKIGlmICh3
aGF0ICE9PSB1bmRlZmluZWQpIHsKICBNb2R1bGUucHJpbnQod2hhdCk7CiAgTW9kdWxlLnByaW50
RXJyKHdoYXQpOwogIHdoYXQgPSBKU09OLnN0cmluZ2lmeSh3aGF0KTsKIH0gZWxzZSB7CiAgd2hh
dCA9ICIiOwogfQogQUJPUlQgPSB0cnVlOwogRVhJVFNUQVRVUyA9IDE7CiB2YXIgZXh0cmEgPSAi
XG5JZiB0aGlzIGFib3J0KCkgaXMgdW5leHBlY3RlZCwgYnVpbGQgd2l0aCAtcyBBU1NFUlRJT05T
PTEgd2hpY2ggY2FuIGdpdmUgbW9yZSBpbmZvcm1hdGlvbi4iOwogdmFyIG91dHB1dCA9ICJhYm9y
dCgiICsgd2hhdCArICIpIGF0ICIgKyBzdGFja1RyYWNlKCkgKyBleHRyYTsKIGlmIChhYm9ydERl
Y29yYXRvcnMpIHsKICBhYm9ydERlY29yYXRvcnMuZm9yRWFjaCgoZnVuY3Rpb24oZGVjb3JhdG9y
KSB7CiAgIG91dHB1dCA9IGRlY29yYXRvcihvdXRwdXQsIHdoYXQpOwogIH0pKTsKIH0KIHRocm93
IG91dHB1dDsKfQpNb2R1bGVbImFib3J0Il0gPSBNb2R1bGUuYWJvcnQgPSBhYm9ydDsKaWYgKE1v
ZHVsZVsicHJlSW5pdCJdKSB7CiBpZiAodHlwZW9mIE1vZHVsZVsicHJlSW5pdCJdID09ICJmdW5j
dGlvbiIpIE1vZHVsZVsicHJlSW5pdCJdID0gWyBNb2R1bGVbInByZUluaXQiXSBdOwogd2hpbGUg
KE1vZHVsZVsicHJlSW5pdCJdLmxlbmd0aCA+IDApIHsKICBNb2R1bGVbInByZUluaXQiXS5wb3Ao
KSgpOwogfQp9CnZhciBzaG91bGRSdW5Ob3cgPSB0cnVlOwppZiAoTW9kdWxlWyJub0luaXRpYWxS
dW4iXSkgewogc2hvdWxkUnVuTm93ID0gZmFsc2U7Cn0KcnVuKFsnMTAnXSk7Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>259537</attachid>
            <date>2015-08-20 17:34:01 -0700</date>
            <delta_ts>2015-08-20 17:34:01 -0700</delta_ts>
            <desc>Fannkuch benchmark without memory growth</desc>
            <filename>fannkuch.js</filename>
            <type>application/javascript</type>
            <size>289242</size>
            <attacher name="Alon Zakai">alonzakai</attacher>
            
              <data encoding="base64">dmFyIE1vZHVsZTsKaWYgKCFNb2R1bGUpIE1vZHVsZSA9ICh0eXBlb2YgTW9kdWxlICE9PSAidW5k
ZWZpbmVkIiA/IE1vZHVsZSA6IG51bGwpIHx8IHt9Owp2YXIgbW9kdWxlT3ZlcnJpZGVzID0ge307
CmZvciAodmFyIGtleSBpbiBNb2R1bGUpIHsKIGlmIChNb2R1bGUuaGFzT3duUHJvcGVydHkoa2V5
KSkgewogIG1vZHVsZU92ZXJyaWRlc1trZXldID0gTW9kdWxlW2tleV07CiB9Cn0KdmFyIEVOVklS
T05NRU5UX0lTX1dFQiA9IHR5cGVvZiB3aW5kb3cgPT09ICJvYmplY3QiOwp2YXIgRU5WSVJPTk1F
TlRfSVNfV09SS0VSID0gdHlwZW9mIGltcG9ydFNjcmlwdHMgPT09ICJmdW5jdGlvbiI7CnZhciBF
TlZJUk9OTUVOVF9JU19OT0RFID0gdHlwZW9mIHByb2Nlc3MgPT09ICJvYmplY3QiICYmIHR5cGVv
ZiByZXF1aXJlID09PSAiZnVuY3Rpb24iICYmICFFTlZJUk9OTUVOVF9JU19XRUIgJiYgIUVOVklS
T05NRU5UX0lTX1dPUktFUjsKdmFyIEVOVklST05NRU5UX0lTX1NIRUxMID0gIUVOVklST05NRU5U
X0lTX1dFQiAmJiAhRU5WSVJPTk1FTlRfSVNfTk9ERSAmJiAhRU5WSVJPTk1FTlRfSVNfV09SS0VS
OwppZiAoRU5WSVJPTk1FTlRfSVNfTk9ERSkgewogaWYgKCFNb2R1bGVbInByaW50Il0pIE1vZHVs
ZVsicHJpbnQiXSA9IGZ1bmN0aW9uIHByaW50KHgpIHsKICBwcm9jZXNzWyJzdGRvdXQiXS53cml0
ZSh4ICsgIlxuIik7CiB9OwogaWYgKCFNb2R1bGVbInByaW50RXJyIl0pIE1vZHVsZVsicHJpbnRF
cnIiXSA9IGZ1bmN0aW9uIHByaW50RXJyKHgpIHsKICBwcm9jZXNzWyJzdGRlcnIiXS53cml0ZSh4
ICsgIlxuIik7CiB9OwogdmFyIG5vZGVGUyA9IHJlcXVpcmUoImZzIik7CiB2YXIgbm9kZVBhdGgg
PSByZXF1aXJlKCJwYXRoIik7CiBNb2R1bGVbInJlYWQiXSA9IGZ1bmN0aW9uIHJlYWQoZmlsZW5h
bWUsIGJpbmFyeSkgewogIGZpbGVuYW1lID0gbm9kZVBhdGhbIm5vcm1hbGl6ZSJdKGZpbGVuYW1l
KTsKICB2YXIgcmV0ID0gbm9kZUZTWyJyZWFkRmlsZVN5bmMiXShmaWxlbmFtZSk7CiAgaWYgKCFy
ZXQgJiYgZmlsZW5hbWUgIT0gbm9kZVBhdGhbInJlc29sdmUiXShmaWxlbmFtZSkpIHsKICAgZmls
ZW5hbWUgPSBwYXRoLmpvaW4oX19kaXJuYW1lLCAiLi4iLCAic3JjIiwgZmlsZW5hbWUpOwogICBy
ZXQgPSBub2RlRlNbInJlYWRGaWxlU3luYyJdKGZpbGVuYW1lKTsKICB9CiAgaWYgKHJldCAmJiAh
YmluYXJ5KSByZXQgPSByZXQudG9TdHJpbmcoKTsKICByZXR1cm4gcmV0OwogfTsKIE1vZHVsZVsi
cmVhZEJpbmFyeSJdID0gZnVuY3Rpb24gcmVhZEJpbmFyeShmaWxlbmFtZSkgewogIHJldHVybiBN
b2R1bGVbInJlYWQiXShmaWxlbmFtZSwgdHJ1ZSk7CiB9OwogTW9kdWxlWyJsb2FkIl0gPSBmdW5j
dGlvbiBsb2FkKGYpIHsKICBnbG9iYWxFdmFsKHJlYWQoZikpOwogfTsKIGlmICghTW9kdWxlWyJ0
aGlzUHJvZ3JhbSJdKSB7CiAgaWYgKHByb2Nlc3NbImFyZ3YiXS5sZW5ndGggPiAxKSB7CiAgIE1v
ZHVsZVsidGhpc1Byb2dyYW0iXSA9IHByb2Nlc3NbImFyZ3YiXVsxXS5yZXBsYWNlKC9cXC9nLCAi
LyIpOwogIH0gZWxzZSB7CiAgIE1vZHVsZVsidGhpc1Byb2dyYW0iXSA9ICJ1bmtub3duLXByb2dy
YW0iOwogIH0KIH0KIE1vZHVsZVsiYXJndW1lbnRzIl0gPSBwcm9jZXNzWyJhcmd2Il0uc2xpY2Uo
Mik7CiBpZiAodHlwZW9mIG1vZHVsZSAhPT0gInVuZGVmaW5lZCIpIHsKICBtb2R1bGVbImV4cG9y
dHMiXSA9IE1vZHVsZTsKIH0KIHByb2Nlc3NbIm9uIl0oInVuY2F1Z2h0RXhjZXB0aW9uIiwgKGZ1
bmN0aW9uKGV4KSB7CiAgaWYgKCEoZXggaW5zdGFuY2VvZiBFeGl0U3RhdHVzKSkgewogICB0aHJv
dyBleDsKICB9CiB9KSk7CiBNb2R1bGVbImluc3BlY3QiXSA9IChmdW5jdGlvbigpIHsKICByZXR1
cm4gIltFbXNjcmlwdGVuIE1vZHVsZSBvYmplY3RdIjsKIH0pOwp9IGVsc2UgaWYgKEVOVklST05N
RU5UX0lTX1NIRUxMKSB7CiBpZiAoIU1vZHVsZVsicHJpbnQiXSkgTW9kdWxlWyJwcmludCJdID0g
cHJpbnQ7CiBpZiAodHlwZW9mIHByaW50RXJyICE9ICJ1bmRlZmluZWQiKSBNb2R1bGVbInByaW50
RXJyIl0gPSBwcmludEVycjsKIGlmICh0eXBlb2YgcmVhZCAhPSAidW5kZWZpbmVkIikgewogIE1v
ZHVsZVsicmVhZCJdID0gcmVhZDsKIH0gZWxzZSB7CiAgTW9kdWxlWyJyZWFkIl0gPSBmdW5jdGlv
biByZWFkKCkgewogICB0aHJvdyAibm8gcmVhZCgpIGF2YWlsYWJsZSAoanNjPykiOwogIH07CiB9
CiBNb2R1bGVbInJlYWRCaW5hcnkiXSA9IGZ1bmN0aW9uIHJlYWRCaW5hcnkoZikgewogIGlmICh0
eXBlb2YgcmVhZGJ1ZmZlciA9PT0gImZ1bmN0aW9uIikgewogICByZXR1cm4gbmV3IFVpbnQ4QXJy
YXkocmVhZGJ1ZmZlcihmKSk7CiAgfQogIHZhciBkYXRhID0gcmVhZChmLCAiYmluYXJ5Iik7CiAg
YXNzZXJ0KHR5cGVvZiBkYXRhID09PSAib2JqZWN0Iik7CiAgcmV0dXJuIGRhdGE7CiB9OwogaWYg
KHR5cGVvZiBzY3JpcHRBcmdzICE9ICJ1bmRlZmluZWQiKSB7CiAgTW9kdWxlWyJhcmd1bWVudHMi
XSA9IHNjcmlwdEFyZ3M7CiB9IGVsc2UgaWYgKHR5cGVvZiBhcmd1bWVudHMgIT0gInVuZGVmaW5l
ZCIpIHsKICBNb2R1bGVbImFyZ3VtZW50cyJdID0gYXJndW1lbnRzOwogfQp9IGVsc2UgaWYgKEVO
VklST05NRU5UX0lTX1dFQiB8fCBFTlZJUk9OTUVOVF9JU19XT1JLRVIpIHsKIE1vZHVsZVsicmVh
ZCJdID0gZnVuY3Rpb24gcmVhZCh1cmwpIHsKICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0
OwogIHhoci5vcGVuKCJHRVQiLCB1cmwsIGZhbHNlKTsKICB4aHIuc2VuZChudWxsKTsKICByZXR1
cm4geGhyLnJlc3BvbnNlVGV4dDsKIH07CiBpZiAodHlwZW9mIGFyZ3VtZW50cyAhPSAidW5kZWZp
bmVkIikgewogIE1vZHVsZVsiYXJndW1lbnRzIl0gPSBhcmd1bWVudHM7CiB9CiBpZiAodHlwZW9m
IGNvbnNvbGUgIT09ICJ1bmRlZmluZWQiKSB7CiAgaWYgKCFNb2R1bGVbInByaW50Il0pIE1vZHVs
ZVsicHJpbnQiXSA9IGZ1bmN0aW9uIHByaW50KHgpIHsKICAgY29uc29sZS5sb2coeCk7CiAgfTsK
ICBpZiAoIU1vZHVsZVsicHJpbnRFcnIiXSkgTW9kdWxlWyJwcmludEVyciJdID0gZnVuY3Rpb24g
cHJpbnRFcnIoeCkgewogICBjb25zb2xlLmxvZyh4KTsKICB9OwogfSBlbHNlIHsKICB2YXIgVFJZ
X1VTRV9EVU1QID0gZmFsc2U7CiAgaWYgKCFNb2R1bGVbInByaW50Il0pIE1vZHVsZVsicHJpbnQi
XSA9IFRSWV9VU0VfRFVNUCAmJiB0eXBlb2YgZHVtcCAhPT0gInVuZGVmaW5lZCIgPyAoZnVuY3Rp
b24oeCkgewogICBkdW1wKHgpOwogIH0pIDogKGZ1bmN0aW9uKHgpIHt9KTsKIH0KIGlmIChFTlZJ
Uk9OTUVOVF9JU19XT1JLRVIpIHsKICBNb2R1bGVbImxvYWQiXSA9IGltcG9ydFNjcmlwdHM7CiB9
CiBpZiAodHlwZW9mIE1vZHVsZVsic2V0V2luZG93VGl0bGUiXSA9PT0gInVuZGVmaW5lZCIpIHsK
ICBNb2R1bGVbInNldFdpbmRvd1RpdGxlIl0gPSAoZnVuY3Rpb24odGl0bGUpIHsKICAgZG9jdW1l
bnQudGl0bGUgPSB0aXRsZTsKICB9KTsKIH0KfSBlbHNlIHsKIHRocm93ICJVbmtub3duIHJ1bnRp
bWUgZW52aXJvbm1lbnQuIFdoZXJlIGFyZSB3ZT8iOwp9CmZ1bmN0aW9uIGdsb2JhbEV2YWwoeCkg
ewogZXZhbC5jYWxsKG51bGwsIHgpOwp9CmlmICghTW9kdWxlWyJsb2FkIl0gJiYgTW9kdWxlWyJy
ZWFkIl0pIHsKIE1vZHVsZVsibG9hZCJdID0gZnVuY3Rpb24gbG9hZChmKSB7CiAgZ2xvYmFsRXZh
bChNb2R1bGVbInJlYWQiXShmKSk7CiB9Owp9CmlmICghTW9kdWxlWyJwcmludCJdKSB7CiBNb2R1
bGVbInByaW50Il0gPSAoZnVuY3Rpb24oKSB7fSk7Cn0KaWYgKCFNb2R1bGVbInByaW50RXJyIl0p
IHsKIE1vZHVsZVsicHJpbnRFcnIiXSA9IE1vZHVsZVsicHJpbnQiXTsKfQppZiAoIU1vZHVsZVsi
YXJndW1lbnRzIl0pIHsKIE1vZHVsZVsiYXJndW1lbnRzIl0gPSBbXTsKfQppZiAoIU1vZHVsZVsi
dGhpc1Byb2dyYW0iXSkgewogTW9kdWxlWyJ0aGlzUHJvZ3JhbSJdID0gIi4vdGhpcy5wcm9ncmFt
IjsKfQpNb2R1bGUucHJpbnQgPSBNb2R1bGVbInByaW50Il07Ck1vZHVsZS5wcmludEVyciA9IE1v
ZHVsZVsicHJpbnRFcnIiXTsKTW9kdWxlWyJwcmVSdW4iXSA9IFtdOwpNb2R1bGVbInBvc3RSdW4i
XSA9IFtdOwpmb3IgKHZhciBrZXkgaW4gbW9kdWxlT3ZlcnJpZGVzKSB7CiBpZiAobW9kdWxlT3Zl
cnJpZGVzLmhhc093blByb3BlcnR5KGtleSkpIHsKICBNb2R1bGVba2V5XSA9IG1vZHVsZU92ZXJy
aWRlc1trZXldOwogfQp9CnZhciBSdW50aW1lID0gewogc2V0VGVtcFJldDA6IChmdW5jdGlvbih2
YWx1ZSkgewogIHRlbXBSZXQwID0gdmFsdWU7CiB9KSwKIGdldFRlbXBSZXQwOiAoZnVuY3Rpb24o
KSB7CiAgcmV0dXJuIHRlbXBSZXQwOwogfSksCiBzdGFja1NhdmU6IChmdW5jdGlvbigpIHsKICBy
ZXR1cm4gU1RBQ0tUT1A7CiB9KSwKIHN0YWNrUmVzdG9yZTogKGZ1bmN0aW9uKHN0YWNrVG9wKSB7
CiAgU1RBQ0tUT1AgPSBzdGFja1RvcDsKIH0pLAogZ2V0TmF0aXZlVHlwZVNpemU6IChmdW5jdGlv
bih0eXBlKSB7CiAgc3dpdGNoICh0eXBlKSB7CiAgY2FzZSAiaTEiOgogIGNhc2UgImk4IjoKICAg
cmV0dXJuIDE7CiAgY2FzZSAiaTE2IjoKICAgcmV0dXJuIDI7CiAgY2FzZSAiaTMyIjoKICAgcmV0
dXJuIDQ7CiAgY2FzZSAiaTY0IjoKICAgcmV0dXJuIDg7CiAgY2FzZSAiZmxvYXQiOgogICByZXR1
cm4gNDsKICBjYXNlICJkb3VibGUiOgogICByZXR1cm4gODsKICBkZWZhdWx0OgogICB7CiAgICBp
ZiAodHlwZVt0eXBlLmxlbmd0aCAtIDFdID09PSAiKiIpIHsKICAgICByZXR1cm4gUnVudGltZS5R
VUFOVFVNX1NJWkU7CiAgICB9IGVsc2UgaWYgKHR5cGVbMF0gPT09ICJpIikgewogICAgIHZhciBi
aXRzID0gcGFyc2VJbnQodHlwZS5zdWJzdHIoMSkpOwogICAgIGFzc2VydChiaXRzICUgOCA9PT0g
MCk7CiAgICAgcmV0dXJuIGJpdHMgLyA4OwogICAgfSBlbHNlIHsKICAgICByZXR1cm4gMDsKICAg
IH0KICAgfQogIH0KIH0pLAogZ2V0TmF0aXZlRmllbGRTaXplOiAoZnVuY3Rpb24odHlwZSkgewog
IHJldHVybiBNYXRoLm1heChSdW50aW1lLmdldE5hdGl2ZVR5cGVTaXplKHR5cGUpLCBSdW50aW1l
LlFVQU5UVU1fU0laRSk7CiB9KSwKIFNUQUNLX0FMSUdOOiAxNiwKIHByZXBWYXJhcmc6IChmdW5j
dGlvbihwdHIsIHR5cGUpIHsKICBpZiAodHlwZSA9PT0gImRvdWJsZSIgfHwgdHlwZSA9PT0gImk2
NCIpIHsKICAgaWYgKHB0ciAmIDcpIHsKICAgIGFzc2VydCgocHRyICYgNykgPT09IDQpOwogICAg
cHRyICs9IDQ7CiAgIH0KICB9IGVsc2UgewogICBhc3NlcnQoKHB0ciAmIDMpID09PSAwKTsKICB9
CiAgcmV0dXJuIHB0cjsKIH0pLAogZ2V0QWxpZ25TaXplOiAoZnVuY3Rpb24odHlwZSwgc2l6ZSwg
dmFyYXJnKSB7CiAgaWYgKCF2YXJhcmcgJiYgKHR5cGUgPT0gImk2NCIgfHwgdHlwZSA9PSAiZG91
YmxlIikpIHJldHVybiA4OwogIGlmICghdHlwZSkgcmV0dXJuIE1hdGgubWluKHNpemUsIDgpOwog
IHJldHVybiBNYXRoLm1pbihzaXplIHx8ICh0eXBlID8gUnVudGltZS5nZXROYXRpdmVGaWVsZFNp
emUodHlwZSkgOiAwKSwgUnVudGltZS5RVUFOVFVNX1NJWkUpOwogfSksCiBkeW5DYWxsOiAoZnVu
Y3Rpb24oc2lnLCBwdHIsIGFyZ3MpIHsKICBpZiAoYXJncyAmJiBhcmdzLmxlbmd0aCkgewogICBp
ZiAoIWFyZ3Muc3BsaWNlKSBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJncyk7
CiAgIGFyZ3Muc3BsaWNlKDAsIDAsIHB0cik7CiAgIHJldHVybiBNb2R1bGVbImR5bkNhbGxfIiAr
IHNpZ10uYXBwbHkobnVsbCwgYXJncyk7CiAgfSBlbHNlIHsKICAgcmV0dXJuIE1vZHVsZVsiZHlu
Q2FsbF8iICsgc2lnXS5jYWxsKG51bGwsIHB0cik7CiAgfQogfSksCiBmdW5jdGlvblBvaW50ZXJz
OiBbXSwKIGFkZEZ1bmN0aW9uOiAoZnVuY3Rpb24oZnVuYykgewogIGZvciAodmFyIGkgPSAwOyBp
IDwgUnVudGltZS5mdW5jdGlvblBvaW50ZXJzLmxlbmd0aDsgaSsrKSB7CiAgIGlmICghUnVudGlt
ZS5mdW5jdGlvblBvaW50ZXJzW2ldKSB7CiAgICBSdW50aW1lLmZ1bmN0aW9uUG9pbnRlcnNbaV0g
PSBmdW5jOwogICAgcmV0dXJuIDIgKiAoMSArIGkpOwogICB9CiAgfQogIHRocm93ICJGaW5pc2hl
ZCB1cCBhbGwgcmVzZXJ2ZWQgZnVuY3Rpb24gcG9pbnRlcnMuIFVzZSBhIGhpZ2hlciB2YWx1ZSBm
b3IgUkVTRVJWRURfRlVOQ1RJT05fUE9JTlRFUlMuIjsKIH0pLAogcmVtb3ZlRnVuY3Rpb246IChm
dW5jdGlvbihpbmRleCkgewogIFJ1bnRpbWUuZnVuY3Rpb25Qb2ludGVyc1soaW5kZXggLSAyKSAv
IDJdID0gbnVsbDsKIH0pLAogd2Fybk9uY2U6IChmdW5jdGlvbih0ZXh0KSB7CiAgaWYgKCFSdW50
aW1lLndhcm5PbmNlLnNob3duKSBSdW50aW1lLndhcm5PbmNlLnNob3duID0ge307CiAgaWYgKCFS
dW50aW1lLndhcm5PbmNlLnNob3duW3RleHRdKSB7CiAgIFJ1bnRpbWUud2Fybk9uY2Uuc2hvd25b
dGV4dF0gPSAxOwogICBNb2R1bGUucHJpbnRFcnIodGV4dCk7CiAgfQogfSksCiBmdW5jV3JhcHBl
cnM6IHt9LAogZ2V0RnVuY1dyYXBwZXI6IChmdW5jdGlvbihmdW5jLCBzaWcpIHsKICBhc3NlcnQo
c2lnKTsKICBpZiAoIVJ1bnRpbWUuZnVuY1dyYXBwZXJzW3NpZ10pIHsKICAgUnVudGltZS5mdW5j
V3JhcHBlcnNbc2lnXSA9IHt9OwogIH0KICB2YXIgc2lnQ2FjaGUgPSBSdW50aW1lLmZ1bmNXcmFw
cGVyc1tzaWddOwogIGlmICghc2lnQ2FjaGVbZnVuY10pIHsKICAgc2lnQ2FjaGVbZnVuY10gPSBm
dW5jdGlvbiBkeW5DYWxsX3dyYXBwZXIoKSB7CiAgICByZXR1cm4gUnVudGltZS5keW5DYWxsKHNp
ZywgZnVuYywgYXJndW1lbnRzKTsKICAgfTsKICB9CiAgcmV0dXJuIHNpZ0NhY2hlW2Z1bmNdOwog
fSksCiBnZXRDb21waWxlclNldHRpbmc6IChmdW5jdGlvbihuYW1lKSB7CiAgdGhyb3cgIllvdSBt
dXN0IGJ1aWxkIHdpdGggLXMgUkVUQUlOX0NPTVBJTEVSX1NFVFRJTkdTPTEgZm9yIFJ1bnRpbWUu
Z2V0Q29tcGlsZXJTZXR0aW5nIG9yIGVtc2NyaXB0ZW5fZ2V0X2NvbXBpbGVyX3NldHRpbmcgdG8g
d29yayI7CiB9KSwKIHN0YWNrQWxsb2M6IChmdW5jdGlvbihzaXplKSB7CiAgdmFyIHJldCA9IFNU
QUNLVE9QOwogIFNUQUNLVE9QID0gU1RBQ0tUT1AgKyBzaXplIHwgMDsKICBTVEFDS1RPUCA9IFNU
QUNLVE9QICsgMTUgJiAtMTY7CiAgcmV0dXJuIHJldDsKIH0pLAogc3RhdGljQWxsb2M6IChmdW5j
dGlvbihzaXplKSB7CiAgdmFyIHJldCA9IFNUQVRJQ1RPUDsKICBTVEFUSUNUT1AgPSBTVEFUSUNU
T1AgKyBzaXplIHwgMDsKICBTVEFUSUNUT1AgPSBTVEFUSUNUT1AgKyAxNSAmIC0xNjsKICByZXR1
cm4gcmV0OwogfSksCiBkeW5hbWljQWxsb2M6IChmdW5jdGlvbihzaXplKSB7CiAgdmFyIHJldCA9
IERZTkFNSUNUT1A7CiAgRFlOQU1JQ1RPUCA9IERZTkFNSUNUT1AgKyBzaXplIHwgMDsKICBEWU5B
TUlDVE9QID0gRFlOQU1JQ1RPUCArIDE1ICYgLTE2OwogIGlmIChEWU5BTUlDVE9QID49IFRPVEFM
X01FTU9SWSkgewogICB2YXIgc3VjY2VzcyA9IGVubGFyZ2VNZW1vcnkoKTsKICAgaWYgKCFzdWNj
ZXNzKSB7CiAgICBEWU5BTUlDVE9QID0gcmV0OwogICAgcmV0dXJuIDA7CiAgIH0KICB9CiAgcmV0
dXJuIHJldDsKIH0pLAogYWxpZ25NZW1vcnk6IChmdW5jdGlvbihzaXplLCBxdWFudHVtKSB7CiAg
dmFyIHJldCA9IHNpemUgPSBNYXRoLmNlaWwoc2l6ZSAvIChxdWFudHVtID8gcXVhbnR1bSA6IDE2
KSkgKiAocXVhbnR1bSA/IHF1YW50dW0gOiAxNik7CiAgcmV0dXJuIHJldDsKIH0pLAogbWFrZUJp
Z0ludDogKGZ1bmN0aW9uKGxvdywgaGlnaCwgdW5zaWduZWQpIHsKICB2YXIgcmV0ID0gdW5zaWdu
ZWQgPyArKGxvdyA+Pj4gMCkgKyArKGhpZ2ggPj4+IDApICogKzQyOTQ5NjcyOTYgOiArKGxvdyA+
Pj4gMCkgKyArKGhpZ2ggfCAwKSAqICs0Mjk0OTY3Mjk2OwogIHJldHVybiByZXQ7CiB9KSwKIEdM
T0JBTF9CQVNFOiA4LAogUVVBTlRVTV9TSVpFOiA0LAogX19kdW1teV9fOiAwCn07Ck1vZHVsZVsi
UnVudGltZSJdID0gUnVudGltZTsKdmFyIF9fVEhSRVdfXyA9IDA7CnZhciBBQk9SVCA9IGZhbHNl
Owp2YXIgRVhJVFNUQVRVUyA9IDA7CnZhciB1bmRlZiA9IDA7CnZhciB0ZW1wVmFsdWUsIHRlbXBJ
bnQsIHRlbXBCaWdJbnQsIHRlbXBJbnQyLCB0ZW1wQmlnSW50MiwgdGVtcFBhaXIsIHRlbXBCaWdJ
bnRJLCB0ZW1wQmlnSW50UiwgdGVtcEJpZ0ludFMsIHRlbXBCaWdJbnRQLCB0ZW1wQmlnSW50RCwg
dGVtcERvdWJsZSwgdGVtcEZsb2F0Owp2YXIgdGVtcEk2NCwgdGVtcEk2NGI7CnZhciB0ZW1wUmV0
MCwgdGVtcFJldDEsIHRlbXBSZXQyLCB0ZW1wUmV0MywgdGVtcFJldDQsIHRlbXBSZXQ1LCB0ZW1w
UmV0NiwgdGVtcFJldDcsIHRlbXBSZXQ4LCB0ZW1wUmV0OTsKZnVuY3Rpb24gYXNzZXJ0KGNvbmRp
dGlvbiwgdGV4dCkgewogaWYgKCFjb25kaXRpb24pIHsKICBhYm9ydCgiQXNzZXJ0aW9uIGZhaWxl
ZDogIiArIHRleHQpOwogfQp9CnZhciBnbG9iYWxTY29wZSA9IHRoaXM7CmZ1bmN0aW9uIGdldENG
dW5jKGlkZW50KSB7CiB2YXIgZnVuYyA9IE1vZHVsZVsiXyIgKyBpZGVudF07CiBpZiAoIWZ1bmMp
IHsKICB0cnkgewogICBmdW5jID0gZXZhbCgiXyIgKyBpZGVudCk7CiAgfSBjYXRjaCAoZSkge30K
IH0KIGFzc2VydChmdW5jLCAiQ2Fubm90IGNhbGwgdW5rbm93biBmdW5jdGlvbiAiICsgaWRlbnQg
KyAiIChwZXJoYXBzIExMVk0gb3B0aW1pemF0aW9ucyBvciBjbG9zdXJlIHJlbW92ZWQgaXQ/KSIp
OwogcmV0dXJuIGZ1bmM7Cn0KdmFyIGN3cmFwLCBjY2FsbDsKKChmdW5jdGlvbigpIHsKIHZhciBK
U2Z1bmNzID0gewogICJzdGFja1NhdmUiOiAoZnVuY3Rpb24oKSB7CiAgIFJ1bnRpbWUuc3RhY2tT
YXZlKCk7CiAgfSksCiAgInN0YWNrUmVzdG9yZSI6IChmdW5jdGlvbigpIHsKICAgUnVudGltZS5z
dGFja1Jlc3RvcmUoKTsKICB9KSwKICAiYXJyYXlUb0MiOiAoZnVuY3Rpb24oYXJyKSB7CiAgIHZh
ciByZXQgPSBSdW50aW1lLnN0YWNrQWxsb2MoYXJyLmxlbmd0aCk7CiAgIHdyaXRlQXJyYXlUb01l
bW9yeShhcnIsIHJldCk7CiAgIHJldHVybiByZXQ7CiAgfSksCiAgInN0cmluZ1RvQyI6IChmdW5j
dGlvbihzdHIpIHsKICAgdmFyIHJldCA9IDA7CiAgIGlmIChzdHIgIT09IG51bGwgJiYgc3RyICE9
PSB1bmRlZmluZWQgJiYgc3RyICE9PSAwKSB7CiAgICByZXQgPSBSdW50aW1lLnN0YWNrQWxsb2Mo
KHN0ci5sZW5ndGggPDwgMikgKyAxKTsKICAgIHdyaXRlU3RyaW5nVG9NZW1vcnkoc3RyLCByZXQp
OwogICB9CiAgIHJldHVybiByZXQ7CiAgfSkKIH07CiB2YXIgdG9DID0gewogICJzdHJpbmciOiBK
U2Z1bmNzWyJzdHJpbmdUb0MiXSwKICAiYXJyYXkiOiBKU2Z1bmNzWyJhcnJheVRvQyJdCiB9Owog
Y2NhbGwgPSBmdW5jdGlvbiBjY2FsbEZ1bmMoaWRlbnQsIHJldHVyblR5cGUsIGFyZ1R5cGVzLCBh
cmdzLCBvcHRzKSB7CiAgdmFyIGZ1bmMgPSBnZXRDRnVuYyhpZGVudCk7CiAgdmFyIGNBcmdzID0g
W107CiAgdmFyIHN0YWNrID0gMDsKICBpZiAoYXJncykgewogICBmb3IgKHZhciBpID0gMDsgaSA8
IGFyZ3MubGVuZ3RoOyBpKyspIHsKICAgIHZhciBjb252ZXJ0ZXIgPSB0b0NbYXJnVHlwZXNbaV1d
OwogICAgaWYgKGNvbnZlcnRlcikgewogICAgIGlmIChzdGFjayA9PT0gMCkgc3RhY2sgPSBSdW50
aW1lLnN0YWNrU2F2ZSgpOwogICAgIGNBcmdzW2ldID0gY29udmVydGVyKGFyZ3NbaV0pOwogICAg
fSBlbHNlIHsKICAgICBjQXJnc1tpXSA9IGFyZ3NbaV07CiAgICB9CiAgIH0KICB9CiAgdmFyIHJl
dCA9IGZ1bmMuYXBwbHkobnVsbCwgY0FyZ3MpOwogIGlmIChyZXR1cm5UeXBlID09PSAic3RyaW5n
IikgcmV0ID0gUG9pbnRlcl9zdHJpbmdpZnkocmV0KTsKICBpZiAoc3RhY2sgIT09IDApIHsKICAg
aWYgKG9wdHMgJiYgb3B0cy5hc3luYykgewogICAgRW10ZXJwcmV0ZXJBc3luYy5hc3luY0ZpbmFs
aXplcnMucHVzaCgoZnVuY3Rpb24oKSB7CiAgICAgUnVudGltZS5zdGFja1Jlc3RvcmUoc3RhY2sp
OwogICAgfSkpOwogICAgcmV0dXJuOwogICB9CiAgIFJ1bnRpbWUuc3RhY2tSZXN0b3JlKHN0YWNr
KTsKICB9CiAgcmV0dXJuIHJldDsKIH07CiB2YXIgc291cmNlUmVnZXggPSAvXmZ1bmN0aW9uXHMq
XCgoW14pXSopXClccyp7XHMqKFteKl0qPylbXHM7XSooPzpyZXR1cm5ccyooLio/KVs7XHNdKik/
fSQvOwogZnVuY3Rpb24gcGFyc2VKU0Z1bmMoanNmdW5jKSB7CiAgdmFyIHBhcnNlZCA9IGpzZnVu
Yy50b1N0cmluZygpLm1hdGNoKHNvdXJjZVJlZ2V4KS5zbGljZSgxKTsKICByZXR1cm4gewogICBh
cmd1bWVudHM6IHBhcnNlZFswXSwKICAgYm9keTogcGFyc2VkWzFdLAogICByZXR1cm5WYWx1ZTog
cGFyc2VkWzJdCiAgfTsKIH0KIHZhciBKU3NvdXJjZSA9IHt9OwogZm9yICh2YXIgZnVuIGluIEpT
ZnVuY3MpIHsKICBpZiAoSlNmdW5jcy5oYXNPd25Qcm9wZXJ0eShmdW4pKSB7CiAgIEpTc291cmNl
W2Z1bl0gPSBwYXJzZUpTRnVuYyhKU2Z1bmNzW2Z1bl0pOwogIH0KIH0KIGN3cmFwID0gZnVuY3Rp
b24gY3dyYXAoaWRlbnQsIHJldHVyblR5cGUsIGFyZ1R5cGVzKSB7CiAgYXJnVHlwZXMgPSBhcmdU
eXBlcyB8fCBbXTsKICB2YXIgY2Z1bmMgPSBnZXRDRnVuYyhpZGVudCk7CiAgdmFyIG51bWVyaWNB
cmdzID0gYXJnVHlwZXMuZXZlcnkoKGZ1bmN0aW9uKHR5cGUpIHsKICAgcmV0dXJuIHR5cGUgPT09
ICJudW1iZXIiOwogIH0pKTsKICB2YXIgbnVtZXJpY1JldCA9IHJldHVyblR5cGUgIT09ICJzdHJp
bmciOwogIGlmIChudW1lcmljUmV0ICYmIG51bWVyaWNBcmdzKSB7CiAgIHJldHVybiBjZnVuYzsK
ICB9CiAgdmFyIGFyZ05hbWVzID0gYXJnVHlwZXMubWFwKChmdW5jdGlvbih4LCBpKSB7CiAgIHJl
dHVybiAiJCIgKyBpOwogIH0pKTsKICB2YXIgZnVuY3N0ciA9ICIoZnVuY3Rpb24oIiArIGFyZ05h
bWVzLmpvaW4oIiwiKSArICIpIHsiOwogIHZhciBuYXJncyA9IGFyZ1R5cGVzLmxlbmd0aDsKICBp
ZiAoIW51bWVyaWNBcmdzKSB7CiAgIGZ1bmNzdHIgKz0gInZhciBzdGFjayA9ICIgKyBKU3NvdXJj
ZVsic3RhY2tTYXZlIl0uYm9keSArICI7IjsKICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuYXJnczsg
aSsrKSB7CiAgICB2YXIgYXJnID0gYXJnTmFtZXNbaV0sIHR5cGUgPSBhcmdUeXBlc1tpXTsKICAg
IGlmICh0eXBlID09PSAibnVtYmVyIikgY29udGludWU7CiAgICB2YXIgY29udmVydENvZGUgPSBK
U3NvdXJjZVt0eXBlICsgIlRvQyJdOwogICAgZnVuY3N0ciArPSAidmFyICIgKyBjb252ZXJ0Q29k
ZS5hcmd1bWVudHMgKyAiID0gIiArIGFyZyArICI7IjsKICAgIGZ1bmNzdHIgKz0gY29udmVydENv
ZGUuYm9keSArICI7IjsKICAgIGZ1bmNzdHIgKz0gYXJnICsgIj0iICsgY29udmVydENvZGUucmV0
dXJuVmFsdWUgKyAiOyI7CiAgIH0KICB9CiAgdmFyIGNmdW5jbmFtZSA9IHBhcnNlSlNGdW5jKChm
dW5jdGlvbigpIHsKICAgcmV0dXJuIGNmdW5jOwogIH0pKS5yZXR1cm5WYWx1ZTsKICBmdW5jc3Ry
ICs9ICJ2YXIgcmV0ID0gIiArIGNmdW5jbmFtZSArICIoIiArIGFyZ05hbWVzLmpvaW4oIiwiKSAr
ICIpOyI7CiAgaWYgKCFudW1lcmljUmV0KSB7CiAgIHZhciBzdHJnZnkgPSBwYXJzZUpTRnVuYygo
ZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gUG9pbnRlcl9zdHJpbmdpZnk7CiAgIH0pKS5yZXR1cm5W
YWx1ZTsKICAgZnVuY3N0ciArPSAicmV0ID0gIiArIHN0cmdmeSArICIocmV0KTsiOwogIH0KICBp
ZiAoIW51bWVyaWNBcmdzKSB7CiAgIGZ1bmNzdHIgKz0gSlNzb3VyY2VbInN0YWNrUmVzdG9yZSJd
LmJvZHkucmVwbGFjZSgiKCkiLCAiKHN0YWNrKSIpICsgIjsiOwogIH0KICBmdW5jc3RyICs9ICJy
ZXR1cm4gcmV0fSkiOwogIHJldHVybiBldmFsKGZ1bmNzdHIpOwogfTsKfSkpKCk7Ck1vZHVsZVsi
Y2NhbGwiXSA9IGNjYWxsOwpNb2R1bGVbImN3cmFwIl0gPSBjd3JhcDsKZnVuY3Rpb24gc2V0VmFs
dWUocHRyLCB2YWx1ZSwgdHlwZSwgbm9TYWZlKSB7CiB0eXBlID0gdHlwZSB8fCAiaTgiOwogaWYg
KHR5cGUuY2hhckF0KHR5cGUubGVuZ3RoIC0gMSkgPT09ICIqIikgdHlwZSA9ICJpMzIiOwogc3dp
dGNoICh0eXBlKSB7CiBjYXNlICJpMSI6CiAgSEVBUDhbcHRyID4+IDBdID0gdmFsdWU7CiAgYnJl
YWs7CiBjYXNlICJpOCI6CiAgSEVBUDhbcHRyID4+IDBdID0gdmFsdWU7CiAgYnJlYWs7CiBjYXNl
ICJpMTYiOgogIEhFQVAxNltwdHIgPj4gMV0gPSB2YWx1ZTsKICBicmVhazsKIGNhc2UgImkzMiI6
CiAgSEVBUDMyW3B0ciA+PiAyXSA9IHZhbHVlOwogIGJyZWFrOwogY2FzZSAiaTY0IjoKICB0ZW1w
STY0ID0gWyB2YWx1ZSA+Pj4gMCwgKHRlbXBEb3VibGUgPSB2YWx1ZSwgK01hdGhfYWJzKHRlbXBE
b3VibGUpID49ICsxID8gdGVtcERvdWJsZSA+ICswID8gKE1hdGhfbWluKCtNYXRoX2Zsb29yKHRl
bXBEb3VibGUgLyArNDI5NDk2NzI5NiksICs0Mjk0OTY3Mjk1KSB8IDApID4+PiAwIDogfn4rTWF0
aF9jZWlsKCh0ZW1wRG91YmxlIC0gKyh+fnRlbXBEb3VibGUgPj4+IDApKSAvICs0Mjk0OTY3Mjk2
KSA+Pj4gMCA6IDApIF0sIEhFQVAzMltwdHIgPj4gMl0gPSB0ZW1wSTY0WzBdLCBIRUFQMzJbcHRy
ICsgNCA+PiAyXSA9IHRlbXBJNjRbMV07CiAgYnJlYWs7CiBjYXNlICJmbG9hdCI6CiAgSEVBUEYz
MltwdHIgPj4gMl0gPSB2YWx1ZTsKICBicmVhazsKIGNhc2UgImRvdWJsZSI6CiAgSEVBUEY2NFtw
dHIgPj4gM10gPSB2YWx1ZTsKICBicmVhazsKIGRlZmF1bHQ6CiAgYWJvcnQoImludmFsaWQgdHlw
ZSBmb3Igc2V0VmFsdWU6ICIgKyB0eXBlKTsKIH0KfQpNb2R1bGVbInNldFZhbHVlIl0gPSBzZXRW
YWx1ZTsKZnVuY3Rpb24gZ2V0VmFsdWUocHRyLCB0eXBlLCBub1NhZmUpIHsKIHR5cGUgPSB0eXBl
IHx8ICJpOCI7CiBpZiAodHlwZS5jaGFyQXQodHlwZS5sZW5ndGggLSAxKSA9PT0gIioiKSB0eXBl
ID0gImkzMiI7CiBzd2l0Y2ggKHR5cGUpIHsKIGNhc2UgImkxIjoKICByZXR1cm4gSEVBUDhbcHRy
ID4+IDBdOwogY2FzZSAiaTgiOgogIHJldHVybiBIRUFQOFtwdHIgPj4gMF07CiBjYXNlICJpMTYi
OgogIHJldHVybiBIRUFQMTZbcHRyID4+IDFdOwogY2FzZSAiaTMyIjoKICByZXR1cm4gSEVBUDMy
W3B0ciA+PiAyXTsKIGNhc2UgImk2NCI6CiAgcmV0dXJuIEhFQVAzMltwdHIgPj4gMl07CiBjYXNl
ICJmbG9hdCI6CiAgcmV0dXJuIEhFQVBGMzJbcHRyID4+IDJdOwogY2FzZSAiZG91YmxlIjoKICBy
ZXR1cm4gSEVBUEY2NFtwdHIgPj4gM107CiBkZWZhdWx0OgogIGFib3J0KCJpbnZhbGlkIHR5cGUg
Zm9yIHNldFZhbHVlOiAiICsgdHlwZSk7CiB9CiByZXR1cm4gbnVsbDsKfQpNb2R1bGVbImdldFZh
bHVlIl0gPSBnZXRWYWx1ZTsKdmFyIEFMTE9DX05PUk1BTCA9IDA7CnZhciBBTExPQ19TVEFDSyA9
IDE7CnZhciBBTExPQ19TVEFUSUMgPSAyOwp2YXIgQUxMT0NfRFlOQU1JQyA9IDM7CnZhciBBTExP
Q19OT05FID0gNDsKTW9kdWxlWyJBTExPQ19OT1JNQUwiXSA9IEFMTE9DX05PUk1BTDsKTW9kdWxl
WyJBTExPQ19TVEFDSyJdID0gQUxMT0NfU1RBQ0s7Ck1vZHVsZVsiQUxMT0NfU1RBVElDIl0gPSBB
TExPQ19TVEFUSUM7Ck1vZHVsZVsiQUxMT0NfRFlOQU1JQyJdID0gQUxMT0NfRFlOQU1JQzsKTW9k
dWxlWyJBTExPQ19OT05FIl0gPSBBTExPQ19OT05FOwpmdW5jdGlvbiBhbGxvY2F0ZShzbGFiLCB0
eXBlcywgYWxsb2NhdG9yLCBwdHIpIHsKIHZhciB6ZXJvaW5pdCwgc2l6ZTsKIGlmICh0eXBlb2Yg
c2xhYiA9PT0gIm51bWJlciIpIHsKICB6ZXJvaW5pdCA9IHRydWU7CiAgc2l6ZSA9IHNsYWI7CiB9
IGVsc2UgewogIHplcm9pbml0ID0gZmFsc2U7CiAgc2l6ZSA9IHNsYWIubGVuZ3RoOwogfQogdmFy
IHNpbmdsZVR5cGUgPSB0eXBlb2YgdHlwZXMgPT09ICJzdHJpbmciID8gdHlwZXMgOiBudWxsOwog
dmFyIHJldDsKIGlmIChhbGxvY2F0b3IgPT0gQUxMT0NfTk9ORSkgewogIHJldCA9IHB0cjsKIH0g
ZWxzZSB7CiAgcmV0ID0gWyBfbWFsbG9jLCBSdW50aW1lLnN0YWNrQWxsb2MsIFJ1bnRpbWUuc3Rh
dGljQWxsb2MsIFJ1bnRpbWUuZHluYW1pY0FsbG9jIF1bYWxsb2NhdG9yID09PSB1bmRlZmluZWQg
PyBBTExPQ19TVEFUSUMgOiBhbGxvY2F0b3JdKE1hdGgubWF4KHNpemUsIHNpbmdsZVR5cGUgPyAx
IDogdHlwZXMubGVuZ3RoKSk7CiB9CiBpZiAoemVyb2luaXQpIHsKICB2YXIgcHRyID0gcmV0LCBz
dG9wOwogIGFzc2VydCgocmV0ICYgMykgPT0gMCk7CiAgc3RvcCA9IHJldCArIChzaXplICYgfjMp
OwogIGZvciAoOyBwdHIgPCBzdG9wOyBwdHIgKz0gNCkgewogICBIRUFQMzJbcHRyID4+IDJdID0g
MDsKICB9CiAgc3RvcCA9IHJldCArIHNpemU7CiAgd2hpbGUgKHB0ciA8IHN0b3ApIHsKICAgSEVB
UDhbcHRyKysgPj4gMF0gPSAwOwogIH0KICByZXR1cm4gcmV0OwogfQogaWYgKHNpbmdsZVR5cGUg
PT09ICJpOCIpIHsKICBpZiAoc2xhYi5zdWJhcnJheSB8fCBzbGFiLnNsaWNlKSB7CiAgIEhFQVBV
OC5zZXQoc2xhYiwgcmV0KTsKICB9IGVsc2UgewogICBIRUFQVTguc2V0KG5ldyBVaW50OEFycmF5
KHNsYWIpLCByZXQpOwogIH0KICByZXR1cm4gcmV0OwogfQogdmFyIGkgPSAwLCB0eXBlLCB0eXBl
U2l6ZSwgcHJldmlvdXNUeXBlOwogd2hpbGUgKGkgPCBzaXplKSB7CiAgdmFyIGN1cnIgPSBzbGFi
W2ldOwogIGlmICh0eXBlb2YgY3VyciA9PT0gImZ1bmN0aW9uIikgewogICBjdXJyID0gUnVudGlt
ZS5nZXRGdW5jdGlvbkluZGV4KGN1cnIpOwogIH0KICB0eXBlID0gc2luZ2xlVHlwZSB8fCB0eXBl
c1tpXTsKICBpZiAodHlwZSA9PT0gMCkgewogICBpKys7CiAgIGNvbnRpbnVlOwogIH0KICBpZiAo
dHlwZSA9PSAiaTY0IikgdHlwZSA9ICJpMzIiOwogIHNldFZhbHVlKHJldCArIGksIGN1cnIsIHR5
cGUpOwogIGlmIChwcmV2aW91c1R5cGUgIT09IHR5cGUpIHsKICAgdHlwZVNpemUgPSBSdW50aW1l
LmdldE5hdGl2ZVR5cGVTaXplKHR5cGUpOwogICBwcmV2aW91c1R5cGUgPSB0eXBlOwogIH0KICBp
ICs9IHR5cGVTaXplOwogfQogcmV0dXJuIHJldDsKfQpNb2R1bGVbImFsbG9jYXRlIl0gPSBhbGxv
Y2F0ZTsKZnVuY3Rpb24gZ2V0TWVtb3J5KHNpemUpIHsKIGlmICghc3RhdGljU2VhbGVkKSByZXR1
cm4gUnVudGltZS5zdGF0aWNBbGxvYyhzaXplKTsKIGlmICh0eXBlb2YgX3NicmsgIT09ICJ1bmRl
ZmluZWQiICYmICFfc2Jyay5jYWxsZWQgfHwgIXJ1bnRpbWVJbml0aWFsaXplZCkgcmV0dXJuIFJ1
bnRpbWUuZHluYW1pY0FsbG9jKHNpemUpOwogcmV0dXJuIF9tYWxsb2Moc2l6ZSk7Cn0KTW9kdWxl
WyJnZXRNZW1vcnkiXSA9IGdldE1lbW9yeTsKZnVuY3Rpb24gUG9pbnRlcl9zdHJpbmdpZnkocHRy
LCBsZW5ndGgpIHsKIGlmIChsZW5ndGggPT09IDAgfHwgIXB0cikgcmV0dXJuICIiOwogdmFyIGhh
c1V0ZiA9IDA7CiB2YXIgdDsKIHZhciBpID0gMDsKIHdoaWxlICgxKSB7CiAgdCA9IEhFQVBVOFtw
dHIgKyBpID4+IDBdOwogIGhhc1V0ZiB8PSB0OwogIGlmICh0ID09IDAgJiYgIWxlbmd0aCkgYnJl
YWs7CiAgaSsrOwogIGlmIChsZW5ndGggJiYgaSA9PSBsZW5ndGgpIGJyZWFrOwogfQogaWYgKCFs
ZW5ndGgpIGxlbmd0aCA9IGk7CiB2YXIgcmV0ID0gIiI7CiBpZiAoaGFzVXRmIDwgMTI4KSB7CiAg
dmFyIE1BWF9DSFVOSyA9IDEwMjQ7CiAgdmFyIGN1cnI7CiAgd2hpbGUgKGxlbmd0aCA+IDApIHsK
ICAgY3VyciA9IFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLCBIRUFQVTguc3ViYXJy
YXkocHRyLCBwdHIgKyBNYXRoLm1pbihsZW5ndGgsIE1BWF9DSFVOSykpKTsKICAgcmV0ID0gcmV0
ID8gcmV0ICsgY3VyciA6IGN1cnI7CiAgIHB0ciArPSBNQVhfQ0hVTks7CiAgIGxlbmd0aCAtPSBN
QVhfQ0hVTks7CiAgfQogIHJldHVybiByZXQ7CiB9CiByZXR1cm4gTW9kdWxlWyJVVEY4VG9TdHJp
bmciXShwdHIpOwp9Ck1vZHVsZVsiUG9pbnRlcl9zdHJpbmdpZnkiXSA9IFBvaW50ZXJfc3RyaW5n
aWZ5OwpmdW5jdGlvbiBBc2NpaVRvU3RyaW5nKHB0cikgewogdmFyIHN0ciA9ICIiOwogd2hpbGUg
KDEpIHsKICB2YXIgY2ggPSBIRUFQOFtwdHIrKyA+PiAwXTsKICBpZiAoIWNoKSByZXR1cm4gc3Ry
OwogIHN0ciArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGNoKTsKIH0KfQpNb2R1bGVbIkFzY2lpVG9T
dHJpbmciXSA9IEFzY2lpVG9TdHJpbmc7CmZ1bmN0aW9uIHN0cmluZ1RvQXNjaWkoc3RyLCBvdXRQ
dHIpIHsKIHJldHVybiB3cml0ZUFzY2lpVG9NZW1vcnkoc3RyLCBvdXRQdHIsIGZhbHNlKTsKfQpN
b2R1bGVbInN0cmluZ1RvQXNjaWkiXSA9IHN0cmluZ1RvQXNjaWk7CmZ1bmN0aW9uIFVURjhBcnJh
eVRvU3RyaW5nKHU4QXJyYXksIGlkeCkgewogdmFyIHUwLCB1MSwgdTIsIHUzLCB1NCwgdTU7CiB2
YXIgc3RyID0gIiI7CiB3aGlsZSAoMSkgewogIHUwID0gdThBcnJheVtpZHgrK107CiAgaWYgKCF1
MCkgcmV0dXJuIHN0cjsKICBpZiAoISh1MCAmIDEyOCkpIHsKICAgc3RyICs9IFN0cmluZy5mcm9t
Q2hhckNvZGUodTApOwogICBjb250aW51ZTsKICB9CiAgdTEgPSB1OEFycmF5W2lkeCsrXSAmIDYz
OwogIGlmICgodTAgJiAyMjQpID09IDE5MikgewogICBzdHIgKz0gU3RyaW5nLmZyb21DaGFyQ29k
ZSgodTAgJiAzMSkgPDwgNiB8IHUxKTsKICAgY29udGludWU7CiAgfQogIHUyID0gdThBcnJheVtp
ZHgrK10gJiA2MzsKICBpZiAoKHUwICYgMjQwKSA9PSAyMjQpIHsKICAgdTAgPSAodTAgJiAxNSkg
PDwgMTIgfCB1MSA8PCA2IHwgdTI7CiAgfSBlbHNlIHsKICAgdTMgPSB1OEFycmF5W2lkeCsrXSAm
IDYzOwogICBpZiAoKHUwICYgMjQ4KSA9PSAyNDApIHsKICAgIHUwID0gKHUwICYgNykgPDwgMTgg
fCB1MSA8PCAxMiB8IHUyIDw8IDYgfCB1MzsKICAgfSBlbHNlIHsKICAgIHU0ID0gdThBcnJheVtp
ZHgrK10gJiA2MzsKICAgIGlmICgodTAgJiAyNTIpID09IDI0OCkgewogICAgIHUwID0gKHUwICYg
MykgPDwgMjQgfCB1MSA8PCAxOCB8IHUyIDw8IDEyIHwgdTMgPDwgNiB8IHU0OwogICAgfSBlbHNl
IHsKICAgICB1NSA9IHU4QXJyYXlbaWR4KytdICYgNjM7CiAgICAgdTAgPSAodTAgJiAxKSA8PCAz
MCB8IHUxIDw8IDI0IHwgdTIgPDwgMTggfCB1MyA8PCAxMiB8IHU0IDw8IDYgfCB1NTsKICAgIH0K
ICAgfQogIH0KICBpZiAodTAgPCA2NTUzNikgewogICBzdHIgKz0gU3RyaW5nLmZyb21DaGFyQ29k
ZSh1MCk7CiAgfSBlbHNlIHsKICAgdmFyIGNoID0gdTAgLSA2NTUzNjsKICAgc3RyICs9IFN0cmlu
Zy5mcm9tQ2hhckNvZGUoNTUyOTYgfCBjaCA+PiAxMCwgNTYzMjAgfCBjaCAmIDEwMjMpOwogIH0K
IH0KfQpNb2R1bGVbIlVURjhBcnJheVRvU3RyaW5nIl0gPSBVVEY4QXJyYXlUb1N0cmluZzsKZnVu
Y3Rpb24gVVRGOFRvU3RyaW5nKHB0cikgewogcmV0dXJuIFVURjhBcnJheVRvU3RyaW5nKEhFQVBV
OCwgcHRyKTsKfQpNb2R1bGVbIlVURjhUb1N0cmluZyJdID0gVVRGOFRvU3RyaW5nOwpmdW5jdGlv
biBzdHJpbmdUb1VURjhBcnJheShzdHIsIG91dFU4QXJyYXksIG91dElkeCwgbWF4Qnl0ZXNUb1dy
aXRlKSB7CiBpZiAoIShtYXhCeXRlc1RvV3JpdGUgPiAwKSkgcmV0dXJuIDA7CiB2YXIgc3RhcnRJ
ZHggPSBvdXRJZHg7CiB2YXIgZW5kSWR4ID0gb3V0SWR4ICsgbWF4Qnl0ZXNUb1dyaXRlIC0gMTsK
IGZvciAodmFyIGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgKytpKSB7CiAgdmFyIHUgPSBzdHIuY2hh
ckNvZGVBdChpKTsKICBpZiAodSA+PSA1NTI5NiAmJiB1IDw9IDU3MzQzKSB1ID0gNjU1MzYgKyAo
KHUgJiAxMDIzKSA8PCAxMCkgfCBzdHIuY2hhckNvZGVBdCgrK2kpICYgMTAyMzsKICBpZiAodSA8
PSAxMjcpIHsKICAgaWYgKG91dElkeCA+PSBlbmRJZHgpIGJyZWFrOwogICBvdXRVOEFycmF5W291
dElkeCsrXSA9IHU7CiAgfSBlbHNlIGlmICh1IDw9IDIwNDcpIHsKICAgaWYgKG91dElkeCArIDEg
Pj0gZW5kSWR4KSBicmVhazsKICAgb3V0VThBcnJheVtvdXRJZHgrK10gPSAxOTIgfCB1ID4+IDY7
CiAgIG91dFU4QXJyYXlbb3V0SWR4KytdID0gMTI4IHwgdSAmIDYzOwogIH0gZWxzZSBpZiAodSA8
PSA2NTUzNSkgewogICBpZiAob3V0SWR4ICsgMiA+PSBlbmRJZHgpIGJyZWFrOwogICBvdXRVOEFy
cmF5W291dElkeCsrXSA9IDIyNCB8IHUgPj4gMTI7CiAgIG91dFU4QXJyYXlbb3V0SWR4KytdID0g
MTI4IHwgdSA+PiA2ICYgNjM7CiAgIG91dFU4QXJyYXlbb3V0SWR4KytdID0gMTI4IHwgdSAmIDYz
OwogIH0gZWxzZSBpZiAodSA8PSAyMDk3MTUxKSB7CiAgIGlmIChvdXRJZHggKyAzID49IGVuZElk
eCkgYnJlYWs7CiAgIG91dFU4QXJyYXlbb3V0SWR4KytdID0gMjQwIHwgdSA+PiAxODsKICAgb3V0
VThBcnJheVtvdXRJZHgrK10gPSAxMjggfCB1ID4+IDEyICYgNjM7CiAgIG91dFU4QXJyYXlbb3V0
SWR4KytdID0gMTI4IHwgdSA+PiA2ICYgNjM7CiAgIG91dFU4QXJyYXlbb3V0SWR4KytdID0gMTI4
IHwgdSAmIDYzOwogIH0gZWxzZSBpZiAodSA8PSA2NzEwODg2MykgewogICBpZiAob3V0SWR4ICsg
NCA+PSBlbmRJZHgpIGJyZWFrOwogICBvdXRVOEFycmF5W291dElkeCsrXSA9IDI0OCB8IHUgPj4g
MjQ7CiAgIG91dFU4QXJyYXlbb3V0SWR4KytdID0gMTI4IHwgdSA+PiAxOCAmIDYzOwogICBvdXRV
OEFycmF5W291dElkeCsrXSA9IDEyOCB8IHUgPj4gMTIgJiA2MzsKICAgb3V0VThBcnJheVtvdXRJ
ZHgrK10gPSAxMjggfCB1ID4+IDYgJiA2MzsKICAgb3V0VThBcnJheVtvdXRJZHgrK10gPSAxMjgg
fCB1ICYgNjM7CiAgfSBlbHNlIHsKICAgaWYgKG91dElkeCArIDUgPj0gZW5kSWR4KSBicmVhazsK
ICAgb3V0VThBcnJheVtvdXRJZHgrK10gPSAyNTIgfCB1ID4+IDMwOwogICBvdXRVOEFycmF5W291
dElkeCsrXSA9IDEyOCB8IHUgPj4gMjQgJiA2MzsKICAgb3V0VThBcnJheVtvdXRJZHgrK10gPSAx
MjggfCB1ID4+IDE4ICYgNjM7CiAgIG91dFU4QXJyYXlbb3V0SWR4KytdID0gMTI4IHwgdSA+PiAx
MiAmIDYzOwogICBvdXRVOEFycmF5W291dElkeCsrXSA9IDEyOCB8IHUgPj4gNiAmIDYzOwogICBv
dXRVOEFycmF5W291dElkeCsrXSA9IDEyOCB8IHUgJiA2MzsKICB9CiB9CiBvdXRVOEFycmF5W291
dElkeF0gPSAwOwogcmV0dXJuIG91dElkeCAtIHN0YXJ0SWR4Owp9Ck1vZHVsZVsic3RyaW5nVG9V
VEY4QXJyYXkiXSA9IHN0cmluZ1RvVVRGOEFycmF5OwpmdW5jdGlvbiBzdHJpbmdUb1VURjgoc3Ry
LCBvdXRQdHIsIG1heEJ5dGVzVG9Xcml0ZSkgewogcmV0dXJuIHN0cmluZ1RvVVRGOEFycmF5KHN0
ciwgSEVBUFU4LCBvdXRQdHIsIG1heEJ5dGVzVG9Xcml0ZSk7Cn0KTW9kdWxlWyJzdHJpbmdUb1VU
RjgiXSA9IHN0cmluZ1RvVVRGODsKZnVuY3Rpb24gbGVuZ3RoQnl0ZXNVVEY4KHN0cikgewogdmFy
IGxlbiA9IDA7CiBmb3IgKHZhciBpID0gMDsgaSA8IHN0ci5sZW5ndGg7ICsraSkgewogIHZhciB1
ID0gc3RyLmNoYXJDb2RlQXQoaSk7CiAgaWYgKHUgPj0gNTUyOTYgJiYgdSA8PSA1NzM0MykgdSA9
IDY1NTM2ICsgKCh1ICYgMTAyMykgPDwgMTApIHwgc3RyLmNoYXJDb2RlQXQoKytpKSAmIDEwMjM7
CiAgaWYgKHUgPD0gMTI3KSB7CiAgICsrbGVuOwogIH0gZWxzZSBpZiAodSA8PSAyMDQ3KSB7CiAg
IGxlbiArPSAyOwogIH0gZWxzZSBpZiAodSA8PSA2NTUzNSkgewogICBsZW4gKz0gMzsKICB9IGVs
c2UgaWYgKHUgPD0gMjA5NzE1MSkgewogICBsZW4gKz0gNDsKICB9IGVsc2UgaWYgKHUgPD0gNjcx
MDg4NjMpIHsKICAgbGVuICs9IDU7CiAgfSBlbHNlIHsKICAgbGVuICs9IDY7CiAgfQogfQogcmV0
dXJuIGxlbjsKfQpNb2R1bGVbImxlbmd0aEJ5dGVzVVRGOCJdID0gbGVuZ3RoQnl0ZXNVVEY4Owpm
dW5jdGlvbiBVVEYxNlRvU3RyaW5nKHB0cikgewogdmFyIGkgPSAwOwogdmFyIHN0ciA9ICIiOwog
d2hpbGUgKDEpIHsKICB2YXIgY29kZVVuaXQgPSBIRUFQMTZbcHRyICsgaSAqIDIgPj4gMV07CiAg
aWYgKGNvZGVVbml0ID09IDApIHJldHVybiBzdHI7CiAgKytpOwogIHN0ciArPSBTdHJpbmcuZnJv
bUNoYXJDb2RlKGNvZGVVbml0KTsKIH0KfQpNb2R1bGVbIlVURjE2VG9TdHJpbmciXSA9IFVURjE2
VG9TdHJpbmc7CmZ1bmN0aW9uIHN0cmluZ1RvVVRGMTYoc3RyLCBvdXRQdHIsIG1heEJ5dGVzVG9X
cml0ZSkgewogaWYgKG1heEJ5dGVzVG9Xcml0ZSA9PT0gdW5kZWZpbmVkKSB7CiAgbWF4Qnl0ZXNU
b1dyaXRlID0gMjE0NzQ4MzY0NzsKIH0KIGlmIChtYXhCeXRlc1RvV3JpdGUgPCAyKSByZXR1cm4g
MDsKIG1heEJ5dGVzVG9Xcml0ZSAtPSAyOwogdmFyIHN0YXJ0UHRyID0gb3V0UHRyOwogdmFyIG51
bUNoYXJzVG9Xcml0ZSA9IG1heEJ5dGVzVG9Xcml0ZSA8IHN0ci5sZW5ndGggKiAyID8gbWF4Qnl0
ZXNUb1dyaXRlIC8gMiA6IHN0ci5sZW5ndGg7CiBmb3IgKHZhciBpID0gMDsgaSA8IG51bUNoYXJz
VG9Xcml0ZTsgKytpKSB7CiAgdmFyIGNvZGVVbml0ID0gc3RyLmNoYXJDb2RlQXQoaSk7CiAgSEVB
UDE2W291dFB0ciA+PiAxXSA9IGNvZGVVbml0OwogIG91dFB0ciArPSAyOwogfQogSEVBUDE2W291
dFB0ciA+PiAxXSA9IDA7CiByZXR1cm4gb3V0UHRyIC0gc3RhcnRQdHI7Cn0KTW9kdWxlWyJzdHJp
bmdUb1VURjE2Il0gPSBzdHJpbmdUb1VURjE2OwpmdW5jdGlvbiBsZW5ndGhCeXRlc1VURjE2KHN0
cikgewogcmV0dXJuIHN0ci5sZW5ndGggKiAyOwp9Ck1vZHVsZVsibGVuZ3RoQnl0ZXNVVEYxNiJd
ID0gbGVuZ3RoQnl0ZXNVVEYxNjsKZnVuY3Rpb24gVVRGMzJUb1N0cmluZyhwdHIpIHsKIHZhciBp
ID0gMDsKIHZhciBzdHIgPSAiIjsKIHdoaWxlICgxKSB7CiAgdmFyIHV0ZjMyID0gSEVBUDMyW3B0
ciArIGkgKiA0ID4+IDJdOwogIGlmICh1dGYzMiA9PSAwKSByZXR1cm4gc3RyOwogICsraTsKICBp
ZiAodXRmMzIgPj0gNjU1MzYpIHsKICAgdmFyIGNoID0gdXRmMzIgLSA2NTUzNjsKICAgc3RyICs9
IFN0cmluZy5mcm9tQ2hhckNvZGUoNTUyOTYgfCBjaCA+PiAxMCwgNTYzMjAgfCBjaCAmIDEwMjMp
OwogIH0gZWxzZSB7CiAgIHN0ciArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKHV0ZjMyKTsKICB9CiB9
Cn0KTW9kdWxlWyJVVEYzMlRvU3RyaW5nIl0gPSBVVEYzMlRvU3RyaW5nOwpmdW5jdGlvbiBzdHJp
bmdUb1VURjMyKHN0ciwgb3V0UHRyLCBtYXhCeXRlc1RvV3JpdGUpIHsKIGlmIChtYXhCeXRlc1Rv
V3JpdGUgPT09IHVuZGVmaW5lZCkgewogIG1heEJ5dGVzVG9Xcml0ZSA9IDIxNDc0ODM2NDc7CiB9
CiBpZiAobWF4Qnl0ZXNUb1dyaXRlIDwgNCkgcmV0dXJuIDA7CiB2YXIgc3RhcnRQdHIgPSBvdXRQ
dHI7CiB2YXIgZW5kUHRyID0gc3RhcnRQdHIgKyBtYXhCeXRlc1RvV3JpdGUgLSA0OwogZm9yICh2
YXIgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyArK2kpIHsKICB2YXIgY29kZVVuaXQgPSBzdHIuY2hh
ckNvZGVBdChpKTsKICBpZiAoY29kZVVuaXQgPj0gNTUyOTYgJiYgY29kZVVuaXQgPD0gNTczNDMp
IHsKICAgdmFyIHRyYWlsU3Vycm9nYXRlID0gc3RyLmNoYXJDb2RlQXQoKytpKTsKICAgY29kZVVu
aXQgPSA2NTUzNiArICgoY29kZVVuaXQgJiAxMDIzKSA8PCAxMCkgfCB0cmFpbFN1cnJvZ2F0ZSAm
IDEwMjM7CiAgfQogIEhFQVAzMltvdXRQdHIgPj4gMl0gPSBjb2RlVW5pdDsKICBvdXRQdHIgKz0g
NDsKICBpZiAob3V0UHRyICsgNCA+IGVuZFB0cikgYnJlYWs7CiB9CiBIRUFQMzJbb3V0UHRyID4+
IDJdID0gMDsKIHJldHVybiBvdXRQdHIgLSBzdGFydFB0cjsKfQpNb2R1bGVbInN0cmluZ1RvVVRG
MzIiXSA9IHN0cmluZ1RvVVRGMzI7CmZ1bmN0aW9uIGxlbmd0aEJ5dGVzVVRGMzIoc3RyKSB7CiB2
YXIgbGVuID0gMDsKIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgKytpKSB7CiAgdmFy
IGNvZGVVbml0ID0gc3RyLmNoYXJDb2RlQXQoaSk7CiAgaWYgKGNvZGVVbml0ID49IDU1Mjk2ICYm
IGNvZGVVbml0IDw9IDU3MzQzKSArK2k7CiAgbGVuICs9IDQ7CiB9CiByZXR1cm4gbGVuOwp9Ck1v
ZHVsZVsibGVuZ3RoQnl0ZXNVVEYzMiJdID0gbGVuZ3RoQnl0ZXNVVEYzMjsKZnVuY3Rpb24gZGVt
YW5nbGUoZnVuYykgewogdmFyIGhhc0xpYmN4eGFiaSA9ICEhTW9kdWxlWyJfX19jeGFfZGVtYW5n
bGUiXTsKIGlmIChoYXNMaWJjeHhhYmkpIHsKICB0cnkgewogICB2YXIgYnVmID0gX21hbGxvYyhm
dW5jLmxlbmd0aCk7CiAgIHdyaXRlU3RyaW5nVG9NZW1vcnkoZnVuYy5zdWJzdHIoMSksIGJ1Zik7
CiAgIHZhciBzdGF0dXMgPSBfbWFsbG9jKDQpOwogICB2YXIgcmV0ID0gTW9kdWxlWyJfX19jeGFf
ZGVtYW5nbGUiXShidWYsIDAsIDAsIHN0YXR1cyk7CiAgIGlmIChnZXRWYWx1ZShzdGF0dXMsICJp
MzIiKSA9PT0gMCAmJiByZXQpIHsKICAgIHJldHVybiBQb2ludGVyX3N0cmluZ2lmeShyZXQpOwog
ICB9CiAgfSBjYXRjaCAoZSkge30gZmluYWxseSB7CiAgIGlmIChidWYpIF9mcmVlKGJ1Zik7CiAg
IGlmIChzdGF0dXMpIF9mcmVlKHN0YXR1cyk7CiAgIGlmIChyZXQpIF9mcmVlKHJldCk7CiAgfQog
fQogdmFyIGkgPSAzOwogdmFyIGJhc2ljVHlwZXMgPSB7CiAgInYiOiAidm9pZCIsCiAgImIiOiAi
Ym9vbCIsCiAgImMiOiAiY2hhciIsCiAgInMiOiAic2hvcnQiLAogICJpIjogImludCIsCiAgImwi
OiAibG9uZyIsCiAgImYiOiAiZmxvYXQiLAogICJkIjogImRvdWJsZSIsCiAgInciOiAid2NoYXJf
dCIsCiAgImEiOiAic2lnbmVkIGNoYXIiLAogICJoIjogInVuc2lnbmVkIGNoYXIiLAogICJ0Ijog
InVuc2lnbmVkIHNob3J0IiwKICAiaiI6ICJ1bnNpZ25lZCBpbnQiLAogICJtIjogInVuc2lnbmVk
IGxvbmciLAogICJ4IjogImxvbmcgbG9uZyIsCiAgInkiOiAidW5zaWduZWQgbG9uZyBsb25nIiwK
ICAieiI6ICIuLi4iCiB9OwogdmFyIHN1YnMgPSBbXTsKIHZhciBmaXJzdCA9IHRydWU7CiBmdW5j
dGlvbiBkdW1wKHgpIHsKICBpZiAoeCkgTW9kdWxlLnByaW50KHgpOwogIE1vZHVsZS5wcmludChm
dW5jKTsKICB2YXIgcHJlID0gIiI7CiAgZm9yICh2YXIgYSA9IDA7IGEgPCBpOyBhKyspIHByZSAr
PSAiICI7CiAgTW9kdWxlLnByaW50KHByZSArICJeIik7CiB9CiBmdW5jdGlvbiBwYXJzZU5lc3Rl
ZCgpIHsKICBpKys7CiAgaWYgKGZ1bmNbaV0gPT09ICJLIikgaSsrOwogIHZhciBwYXJ0cyA9IFtd
OwogIHdoaWxlIChmdW5jW2ldICE9PSAiRSIpIHsKICAgaWYgKGZ1bmNbaV0gPT09ICJTIikgewog
ICAgaSsrOwogICAgdmFyIG5leHQgPSBmdW5jLmluZGV4T2YoIl8iLCBpKTsKICAgIHZhciBudW0g
PSBmdW5jLnN1YnN0cmluZyhpLCBuZXh0KSB8fCAwOwogICAgcGFydHMucHVzaChzdWJzW251bV0g
fHwgIj8iKTsKICAgIGkgPSBuZXh0ICsgMTsKICAgIGNvbnRpbnVlOwogICB9CiAgIGlmIChmdW5j
W2ldID09PSAiQyIpIHsKICAgIHBhcnRzLnB1c2gocGFydHNbcGFydHMubGVuZ3RoIC0gMV0pOwog
ICAgaSArPSAyOwogICAgY29udGludWU7CiAgIH0KICAgdmFyIHNpemUgPSBwYXJzZUludChmdW5j
LnN1YnN0cihpKSk7CiAgIHZhciBwcmUgPSBzaXplLnRvU3RyaW5nKCkubGVuZ3RoOwogICBpZiAo
IXNpemUgfHwgIXByZSkgewogICAgaS0tOwogICAgYnJlYWs7CiAgIH0KICAgdmFyIGN1cnIgPSBm
dW5jLnN1YnN0cihpICsgcHJlLCBzaXplKTsKICAgcGFydHMucHVzaChjdXJyKTsKICAgc3Vicy5w
dXNoKGN1cnIpOwogICBpICs9IHByZSArIHNpemU7CiAgfQogIGkrKzsKICByZXR1cm4gcGFydHM7
CiB9CiBmdW5jdGlvbiBwYXJzZShyYXdMaXN0LCBsaW1pdCwgYWxsb3dWb2lkKSB7CiAgbGltaXQg
PSBsaW1pdCB8fCBJbmZpbml0eTsKICB2YXIgcmV0ID0gIiIsIGxpc3QgPSBbXTsKICBmdW5jdGlv
biBmbHVzaExpc3QoKSB7CiAgIHJldHVybiAiKCIgKyBsaXN0LmpvaW4oIiwgIikgKyAiKSI7CiAg
fQogIHZhciBuYW1lOwogIGlmIChmdW5jW2ldID09PSAiTiIpIHsKICAgbmFtZSA9IHBhcnNlTmVz
dGVkKCkuam9pbigiOjoiKTsKICAgbGltaXQtLTsKICAgaWYgKGxpbWl0ID09PSAwKSByZXR1cm4g
cmF3TGlzdCA/IFsgbmFtZSBdIDogbmFtZTsKICB9IGVsc2UgewogICBpZiAoZnVuY1tpXSA9PT0g
IksiIHx8IGZpcnN0ICYmIGZ1bmNbaV0gPT09ICJMIikgaSsrOwogICB2YXIgc2l6ZSA9IHBhcnNl
SW50KGZ1bmMuc3Vic3RyKGkpKTsKICAgaWYgKHNpemUpIHsKICAgIHZhciBwcmUgPSBzaXplLnRv
U3RyaW5nKCkubGVuZ3RoOwogICAgbmFtZSA9IGZ1bmMuc3Vic3RyKGkgKyBwcmUsIHNpemUpOwog
ICAgaSArPSBwcmUgKyBzaXplOwogICB9CiAgfQogIGZpcnN0ID0gZmFsc2U7CiAgaWYgKGZ1bmNb
aV0gPT09ICJJIikgewogICBpKys7CiAgIHZhciBpTGlzdCA9IHBhcnNlKHRydWUpOwogICB2YXIg
aVJldCA9IHBhcnNlKHRydWUsIDEsIHRydWUpOwogICByZXQgKz0gaVJldFswXSArICIgIiArIG5h
bWUgKyAiPCIgKyBpTGlzdC5qb2luKCIsICIpICsgIj4iOwogIH0gZWxzZSB7CiAgIHJldCA9IG5h
bWU7CiAgfQogIHBhcmFtTG9vcCA6IHdoaWxlIChpIDwgZnVuYy5sZW5ndGggJiYgbGltaXQtLSA+
IDApIHsKICAgdmFyIGMgPSBmdW5jW2krK107CiAgIGlmIChjIGluIGJhc2ljVHlwZXMpIHsKICAg
IGxpc3QucHVzaChiYXNpY1R5cGVzW2NdKTsKICAgfSBlbHNlIHsKICAgIHN3aXRjaCAoYykgewog
ICAgY2FzZSAiUCI6CiAgICAgbGlzdC5wdXNoKHBhcnNlKHRydWUsIDEsIHRydWUpWzBdICsgIioi
KTsKICAgICBicmVhazsKICAgIGNhc2UgIlIiOgogICAgIGxpc3QucHVzaChwYXJzZSh0cnVlLCAx
LCB0cnVlKVswXSArICImIik7CiAgICAgYnJlYWs7CiAgICBjYXNlICJMIjoKICAgICB7CiAgICAg
IGkrKzsKICAgICAgdmFyIGVuZCA9IGZ1bmMuaW5kZXhPZigiRSIsIGkpOwogICAgICB2YXIgc2l6
ZSA9IGVuZCAtIGk7CiAgICAgIGxpc3QucHVzaChmdW5jLnN1YnN0cihpLCBzaXplKSk7CiAgICAg
IGkgKz0gc2l6ZSArIDI7CiAgICAgIGJyZWFrOwogICAgIH0KICAgIGNhc2UgIkEiOgogICAgIHsK
ICAgICAgdmFyIHNpemUgPSBwYXJzZUludChmdW5jLnN1YnN0cihpKSk7CiAgICAgIGkgKz0gc2l6
ZS50b1N0cmluZygpLmxlbmd0aDsKICAgICAgaWYgKGZ1bmNbaV0gIT09ICJfIikgdGhyb3cgIj8i
OwogICAgICBpKys7CiAgICAgIGxpc3QucHVzaChwYXJzZSh0cnVlLCAxLCB0cnVlKVswXSArICIg
WyIgKyBzaXplICsgIl0iKTsKICAgICAgYnJlYWs7CiAgICAgfQogICAgY2FzZSAiRSI6CiAgICAg
YnJlYWsgcGFyYW1Mb29wOwogICAgZGVmYXVsdDoKICAgICByZXQgKz0gIj8iICsgYzsKICAgICBi
cmVhayBwYXJhbUxvb3A7CiAgICB9CiAgIH0KICB9CiAgaWYgKCFhbGxvd1ZvaWQgJiYgbGlzdC5s
ZW5ndGggPT09IDEgJiYgbGlzdFswXSA9PT0gInZvaWQiKSBsaXN0ID0gW107CiAgaWYgKHJhd0xp
c3QpIHsKICAgaWYgKHJldCkgewogICAgbGlzdC5wdXNoKHJldCArICI/Iik7CiAgIH0KICAgcmV0
dXJuIGxpc3Q7CiAgfSBlbHNlIHsKICAgcmV0dXJuIHJldCArIGZsdXNoTGlzdCgpOwogIH0KIH0K
IHZhciBwYXJzZWQgPSBmdW5jOwogdHJ5IHsKICBpZiAoZnVuYyA9PSAiT2JqZWN0Ll9tYWluIiB8
fCBmdW5jID09ICJfbWFpbiIpIHsKICAgcmV0dXJuICJtYWluKCkiOwogIH0KICBpZiAodHlwZW9m
IGZ1bmMgPT09ICJudW1iZXIiKSBmdW5jID0gUG9pbnRlcl9zdHJpbmdpZnkoZnVuYyk7CiAgaWYg
KGZ1bmNbMF0gIT09ICJfIikgcmV0dXJuIGZ1bmM7CiAgaWYgKGZ1bmNbMV0gIT09ICJfIikgcmV0
dXJuIGZ1bmM7CiAgaWYgKGZ1bmNbMl0gIT09ICJaIikgcmV0dXJuIGZ1bmM7CiAgc3dpdGNoIChm
dW5jWzNdKSB7CiAgY2FzZSAibiI6CiAgIHJldHVybiAib3BlcmF0b3IgbmV3KCkiOwogIGNhc2Ug
ImQiOgogICByZXR1cm4gIm9wZXJhdG9yIGRlbGV0ZSgpIjsKICB9CiAgcGFyc2VkID0gcGFyc2Uo
KTsKIH0gY2F0Y2ggKGUpIHsKICBwYXJzZWQgKz0gIj8iOwogfQogaWYgKHBhcnNlZC5pbmRleE9m
KCI/IikgPj0gMCAmJiAhaGFzTGliY3h4YWJpKSB7CiAgUnVudGltZS53YXJuT25jZSgid2Fybmlu
ZzogYSBwcm9ibGVtIG9jY3VycmVkIGluIGJ1aWx0aW4gQysrIG5hbWUgZGVtYW5nbGluZzsgYnVp
bGQgd2l0aCAgLXMgREVNQU5HTEVfU1VQUE9SVD0xICB0byBsaW5rIGluIGxpYmN4eGFiaSBkZW1h
bmdsaW5nIik7CiB9CiByZXR1cm4gcGFyc2VkOwp9CmZ1bmN0aW9uIGRlbWFuZ2xlQWxsKHRleHQp
IHsKIHJldHVybiB0ZXh0LnJlcGxhY2UoL19fWltcd1xkX10rL2csIChmdW5jdGlvbih4KSB7CiAg
dmFyIHkgPSBkZW1hbmdsZSh4KTsKICByZXR1cm4geCA9PT0geSA/IHggOiB4ICsgIiBbIiArIHkg
KyAiXSI7CiB9KSk7Cn0KZnVuY3Rpb24ganNTdGFja1RyYWNlKCkgewogdmFyIGVyciA9IG5ldyBF
cnJvcjsKIGlmICghZXJyLnN0YWNrKSB7CiAgdHJ5IHsKICAgdGhyb3cgbmV3IEVycm9yKDApOwog
IH0gY2F0Y2ggKGUpIHsKICAgZXJyID0gZTsKICB9CiAgaWYgKCFlcnIuc3RhY2spIHsKICAgcmV0
dXJuICIobm8gc3RhY2sgdHJhY2UgYXZhaWxhYmxlKSI7CiAgfQogfQogcmV0dXJuIGVyci5zdGFj
ay50b1N0cmluZygpOwp9CmZ1bmN0aW9uIHN0YWNrVHJhY2UoKSB7CiByZXR1cm4gZGVtYW5nbGVB
bGwoanNTdGFja1RyYWNlKCkpOwp9Ck1vZHVsZVsic3RhY2tUcmFjZSJdID0gc3RhY2tUcmFjZTsK
dmFyIFBBR0VfU0laRSA9IDQwOTY7CmZ1bmN0aW9uIGFsaWduTWVtb3J5UGFnZSh4KSB7CiBpZiAo
eCAlIDQwOTYgPiAwKSB7CiAgeCArPSA0MDk2IC0geCAlIDQwOTY7CiB9CiByZXR1cm4geDsKfQp2
YXIgSEVBUDsKdmFyIEhFQVA4LCBIRUFQVTgsIEhFQVAxNiwgSEVBUFUxNiwgSEVBUDMyLCBIRUFQ
VTMyLCBIRUFQRjMyLCBIRUFQRjY0Owp2YXIgU1RBVElDX0JBU0UgPSAwLCBTVEFUSUNUT1AgPSAw
LCBzdGF0aWNTZWFsZWQgPSBmYWxzZTsKdmFyIFNUQUNLX0JBU0UgPSAwLCBTVEFDS1RPUCA9IDAs
IFNUQUNLX01BWCA9IDA7CnZhciBEWU5BTUlDX0JBU0UgPSAwLCBEWU5BTUlDVE9QID0gMDsKZnVu
Y3Rpb24gZW5sYXJnZU1lbW9yeSgpIHsKIGFib3J0KCJDYW5ub3QgZW5sYXJnZSBtZW1vcnkgYXJy
YXlzLiBFaXRoZXIgKDEpIGNvbXBpbGUgd2l0aCAtcyBUT1RBTF9NRU1PUlk9WCB3aXRoIFggaGln
aGVyIHRoYW4gdGhlIGN1cnJlbnQgdmFsdWUgIiArIFRPVEFMX01FTU9SWSArICIsICgyKSBjb21w
aWxlIHdpdGggQUxMT1dfTUVNT1JZX0dST1dUSCB3aGljaCBhZGp1c3RzIHRoZSBzaXplIGF0IHJ1
bnRpbWUgYnV0IHByZXZlbnRzIHNvbWUgb3B0aW1pemF0aW9ucywgb3IgKDMpIHNldCBNb2R1bGUu
VE9UQUxfTUVNT1JZIGJlZm9yZSB0aGUgcHJvZ3JhbSBydW5zLiIpOwp9CnZhciBUT1RBTF9TVEFD
SyA9IE1vZHVsZVsiVE9UQUxfU1RBQ0siXSB8fCA1MjQyODgwOwp2YXIgVE9UQUxfTUVNT1JZID0g
TW9kdWxlWyJUT1RBTF9NRU1PUlkiXSB8fCAxNjc3NzIxNjsKdmFyIHRvdGFsTWVtb3J5ID0gNjQg
KiAxMDI0Owp3aGlsZSAodG90YWxNZW1vcnkgPCBUT1RBTF9NRU1PUlkgfHwgdG90YWxNZW1vcnkg
PCAyICogVE9UQUxfU1RBQ0spIHsKIGlmICh0b3RhbE1lbW9yeSA8IDE2ICogMTAyNCAqIDEwMjQp
IHsKICB0b3RhbE1lbW9yeSAqPSAyOwogfSBlbHNlIHsKICB0b3RhbE1lbW9yeSArPSAxNiAqIDEw
MjQgKiAxMDI0OwogfQp9CmlmICh0b3RhbE1lbW9yeSAhPT0gVE9UQUxfTUVNT1JZKSB7CiBNb2R1
bGUucHJpbnRFcnIoImluY3JlYXNpbmcgVE9UQUxfTUVNT1JZIHRvICIgKyB0b3RhbE1lbW9yeSAr
ICIgdG8gYmUgY29tcGxpYW50IHdpdGggdGhlIGFzbS5qcyBzcGVjIChhbmQgZ2l2ZW4gdGhhdCBU
T1RBTF9TVEFDSz0iICsgVE9UQUxfU1RBQ0sgKyAiKSIpOwogVE9UQUxfTUVNT1JZID0gdG90YWxN
ZW1vcnk7Cn0KYXNzZXJ0KHR5cGVvZiBJbnQzMkFycmF5ICE9PSAidW5kZWZpbmVkIiAmJiB0eXBl
b2YgRmxvYXQ2NEFycmF5ICE9PSAidW5kZWZpbmVkIiAmJiAhIShuZXcgSW50MzJBcnJheSgxKSlb
InN1YmFycmF5Il0gJiYgISEobmV3IEludDMyQXJyYXkoMSkpWyJzZXQiXSwgIkpTIGVuZ2luZSBk
b2VzIG5vdCBwcm92aWRlIGZ1bGwgdHlwZWQgYXJyYXkgc3VwcG9ydCIpOwp2YXIgYnVmZmVyOwpi
dWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoVE9UQUxfTUVNT1JZKTsKSEVBUDggPSBuZXcgSW50OEFy
cmF5KGJ1ZmZlcik7CkhFQVAxNiA9IG5ldyBJbnQxNkFycmF5KGJ1ZmZlcik7CkhFQVAzMiA9IG5l
dyBJbnQzMkFycmF5KGJ1ZmZlcik7CkhFQVBVOCA9IG5ldyBVaW50OEFycmF5KGJ1ZmZlcik7CkhF
QVBVMTYgPSBuZXcgVWludDE2QXJyYXkoYnVmZmVyKTsKSEVBUFUzMiA9IG5ldyBVaW50MzJBcnJh
eShidWZmZXIpOwpIRUFQRjMyID0gbmV3IEZsb2F0MzJBcnJheShidWZmZXIpOwpIRUFQRjY0ID0g
bmV3IEZsb2F0NjRBcnJheShidWZmZXIpOwpIRUFQMzJbMF0gPSAyNTU7CmFzc2VydChIRUFQVThb
MF0gPT09IDI1NSAmJiBIRUFQVThbM10gPT09IDAsICJUeXBlZCBhcnJheXMgMiBtdXN0IGJlIHJ1
biBvbiBhIGxpdHRsZS1lbmRpYW4gc3lzdGVtIik7Ck1vZHVsZVsiSEVBUCJdID0gSEVBUDsKTW9k
dWxlWyJidWZmZXIiXSA9IGJ1ZmZlcjsKTW9kdWxlWyJIRUFQOCJdID0gSEVBUDg7Ck1vZHVsZVsi
SEVBUDE2Il0gPSBIRUFQMTY7Ck1vZHVsZVsiSEVBUDMyIl0gPSBIRUFQMzI7Ck1vZHVsZVsiSEVB
UFU4Il0gPSBIRUFQVTg7Ck1vZHVsZVsiSEVBUFUxNiJdID0gSEVBUFUxNjsKTW9kdWxlWyJIRUFQ
VTMyIl0gPSBIRUFQVTMyOwpNb2R1bGVbIkhFQVBGMzIiXSA9IEhFQVBGMzI7Ck1vZHVsZVsiSEVB
UEY2NCJdID0gSEVBUEY2NDsKZnVuY3Rpb24gY2FsbFJ1bnRpbWVDYWxsYmFja3MoY2FsbGJhY2tz
KSB7CiB3aGlsZSAoY2FsbGJhY2tzLmxlbmd0aCA+IDApIHsKICB2YXIgY2FsbGJhY2sgPSBjYWxs
YmFja3Muc2hpZnQoKTsKICBpZiAodHlwZW9mIGNhbGxiYWNrID09ICJmdW5jdGlvbiIpIHsKICAg
Y2FsbGJhY2soKTsKICAgY29udGludWU7CiAgfQogIHZhciBmdW5jID0gY2FsbGJhY2suZnVuYzsK
ICBpZiAodHlwZW9mIGZ1bmMgPT09ICJudW1iZXIiKSB7CiAgIGlmIChjYWxsYmFjay5hcmcgPT09
IHVuZGVmaW5lZCkgewogICAgUnVudGltZS5keW5DYWxsKCJ2IiwgZnVuYyk7CiAgIH0gZWxzZSB7
CiAgICBSdW50aW1lLmR5bkNhbGwoInZpIiwgZnVuYywgWyBjYWxsYmFjay5hcmcgXSk7CiAgIH0K
ICB9IGVsc2UgewogICBmdW5jKGNhbGxiYWNrLmFyZyA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IGNh
bGxiYWNrLmFyZyk7CiAgfQogfQp9CnZhciBfX0FUUFJFUlVOX18gPSBbXTsKdmFyIF9fQVRJTklU
X18gPSBbXTsKdmFyIF9fQVRNQUlOX18gPSBbXTsKdmFyIF9fQVRFWElUX18gPSBbXTsKdmFyIF9f
QVRQT1NUUlVOX18gPSBbXTsKdmFyIHJ1bnRpbWVJbml0aWFsaXplZCA9IGZhbHNlOwp2YXIgcnVu
dGltZUV4aXRlZCA9IGZhbHNlOwpmdW5jdGlvbiBwcmVSdW4oKSB7CiBpZiAoTW9kdWxlWyJwcmVS
dW4iXSkgewogIGlmICh0eXBlb2YgTW9kdWxlWyJwcmVSdW4iXSA9PSAiZnVuY3Rpb24iKSBNb2R1
bGVbInByZVJ1biJdID0gWyBNb2R1bGVbInByZVJ1biJdIF07CiAgd2hpbGUgKE1vZHVsZVsicHJl
UnVuIl0ubGVuZ3RoKSB7CiAgIGFkZE9uUHJlUnVuKE1vZHVsZVsicHJlUnVuIl0uc2hpZnQoKSk7
CiAgfQogfQogY2FsbFJ1bnRpbWVDYWxsYmFja3MoX19BVFBSRVJVTl9fKTsKfQpmdW5jdGlvbiBl
bnN1cmVJbml0UnVudGltZSgpIHsKIGlmIChydW50aW1lSW5pdGlhbGl6ZWQpIHJldHVybjsKIHJ1
bnRpbWVJbml0aWFsaXplZCA9IHRydWU7CiBjYWxsUnVudGltZUNhbGxiYWNrcyhfX0FUSU5JVF9f
KTsKfQpmdW5jdGlvbiBwcmVNYWluKCkgewogY2FsbFJ1bnRpbWVDYWxsYmFja3MoX19BVE1BSU5f
Xyk7Cn0KZnVuY3Rpb24gZXhpdFJ1bnRpbWUoKSB7CiBjYWxsUnVudGltZUNhbGxiYWNrcyhfX0FU
RVhJVF9fKTsKIHJ1bnRpbWVFeGl0ZWQgPSB0cnVlOwp9CmZ1bmN0aW9uIHBvc3RSdW4oKSB7CiBp
ZiAoTW9kdWxlWyJwb3N0UnVuIl0pIHsKICBpZiAodHlwZW9mIE1vZHVsZVsicG9zdFJ1biJdID09
ICJmdW5jdGlvbiIpIE1vZHVsZVsicG9zdFJ1biJdID0gWyBNb2R1bGVbInBvc3RSdW4iXSBdOwog
IHdoaWxlIChNb2R1bGVbInBvc3RSdW4iXS5sZW5ndGgpIHsKICAgYWRkT25Qb3N0UnVuKE1vZHVs
ZVsicG9zdFJ1biJdLnNoaWZ0KCkpOwogIH0KIH0KIGNhbGxSdW50aW1lQ2FsbGJhY2tzKF9fQVRQ
T1NUUlVOX18pOwp9CmZ1bmN0aW9uIGFkZE9uUHJlUnVuKGNiKSB7CiBfX0FUUFJFUlVOX18udW5z
aGlmdChjYik7Cn0KTW9kdWxlWyJhZGRPblByZVJ1biJdID0gYWRkT25QcmVSdW47CmZ1bmN0aW9u
IGFkZE9uSW5pdChjYikgewogX19BVElOSVRfXy51bnNoaWZ0KGNiKTsKfQpNb2R1bGVbImFkZE9u
SW5pdCJdID0gYWRkT25Jbml0OwpmdW5jdGlvbiBhZGRPblByZU1haW4oY2IpIHsKIF9fQVRNQUlO
X18udW5zaGlmdChjYik7Cn0KTW9kdWxlWyJhZGRPblByZU1haW4iXSA9IGFkZE9uUHJlTWFpbjsK
ZnVuY3Rpb24gYWRkT25FeGl0KGNiKSB7CiBfX0FURVhJVF9fLnVuc2hpZnQoY2IpOwp9Ck1vZHVs
ZVsiYWRkT25FeGl0Il0gPSBhZGRPbkV4aXQ7CmZ1bmN0aW9uIGFkZE9uUG9zdFJ1bihjYikgewog
X19BVFBPU1RSVU5fXy51bnNoaWZ0KGNiKTsKfQpNb2R1bGVbImFkZE9uUG9zdFJ1biJdID0gYWRk
T25Qb3N0UnVuOwpmdW5jdGlvbiBpbnRBcnJheUZyb21TdHJpbmcoc3RyaW5neSwgZG9udEFkZE51
bGwsIGxlbmd0aCkgewogdmFyIGxlbiA9IGxlbmd0aCA+IDAgPyBsZW5ndGggOiBsZW5ndGhCeXRl
c1VURjgoc3RyaW5neSkgKyAxOwogdmFyIHU4YXJyYXkgPSBuZXcgQXJyYXkobGVuKTsKIHZhciBu
dW1CeXRlc1dyaXR0ZW4gPSBzdHJpbmdUb1VURjhBcnJheShzdHJpbmd5LCB1OGFycmF5LCAwLCB1
OGFycmF5Lmxlbmd0aCk7CiBpZiAoZG9udEFkZE51bGwpIHU4YXJyYXkubGVuZ3RoID0gbnVtQnl0
ZXNXcml0dGVuOwogcmV0dXJuIHU4YXJyYXk7Cn0KTW9kdWxlWyJpbnRBcnJheUZyb21TdHJpbmci
XSA9IGludEFycmF5RnJvbVN0cmluZzsKZnVuY3Rpb24gaW50QXJyYXlUb1N0cmluZyhhcnJheSkg
ewogdmFyIHJldCA9IFtdOwogZm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKykg
ewogIHZhciBjaHIgPSBhcnJheVtpXTsKICBpZiAoY2hyID4gMjU1KSB7CiAgIGNociAmPSAyNTU7
CiAgfQogIHJldC5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoY2hyKSk7CiB9CiByZXR1cm4gcmV0
LmpvaW4oIiIpOwp9Ck1vZHVsZVsiaW50QXJyYXlUb1N0cmluZyJdID0gaW50QXJyYXlUb1N0cmlu
ZzsKZnVuY3Rpb24gd3JpdGVTdHJpbmdUb01lbW9yeShzdHJpbmcsIGJ1ZmZlciwgZG9udEFkZE51
bGwpIHsKIHZhciBhcnJheSA9IGludEFycmF5RnJvbVN0cmluZyhzdHJpbmcsIGRvbnRBZGROdWxs
KTsKIHZhciBpID0gMDsKIHdoaWxlIChpIDwgYXJyYXkubGVuZ3RoKSB7CiAgdmFyIGNociA9IGFy
cmF5W2ldOwogIEhFQVA4W2J1ZmZlciArIGkgPj4gMF0gPSBjaHI7CiAgaSA9IGkgKyAxOwogfQp9
Ck1vZHVsZVsid3JpdGVTdHJpbmdUb01lbW9yeSJdID0gd3JpdGVTdHJpbmdUb01lbW9yeTsKZnVu
Y3Rpb24gd3JpdGVBcnJheVRvTWVtb3J5KGFycmF5LCBidWZmZXIpIHsKIGZvciAodmFyIGkgPSAw
OyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHsKICBIRUFQOFtidWZmZXIrKyA+PiAwXSA9IGFycmF5
W2ldOwogfQp9Ck1vZHVsZVsid3JpdGVBcnJheVRvTWVtb3J5Il0gPSB3cml0ZUFycmF5VG9NZW1v
cnk7CmZ1bmN0aW9uIHdyaXRlQXNjaWlUb01lbW9yeShzdHIsIGJ1ZmZlciwgZG9udEFkZE51bGwp
IHsKIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgKytpKSB7CiAgSEVBUDhbYnVmZmVy
KysgPj4gMF0gPSBzdHIuY2hhckNvZGVBdChpKTsKIH0KIGlmICghZG9udEFkZE51bGwpIEhFQVA4
W2J1ZmZlciA+PiAwXSA9IDA7Cn0KTW9kdWxlWyJ3cml0ZUFzY2lpVG9NZW1vcnkiXSA9IHdyaXRl
QXNjaWlUb01lbW9yeTsKZnVuY3Rpb24gdW5TaWduKHZhbHVlLCBiaXRzLCBpZ25vcmUpIHsKIGlm
ICh2YWx1ZSA+PSAwKSB7CiAgcmV0dXJuIHZhbHVlOwogfQogcmV0dXJuIGJpdHMgPD0gMzIgPyAy
ICogTWF0aC5hYnMoMSA8PCBiaXRzIC0gMSkgKyB2YWx1ZSA6IE1hdGgucG93KDIsIGJpdHMpICsg
dmFsdWU7Cn0KZnVuY3Rpb24gcmVTaWduKHZhbHVlLCBiaXRzLCBpZ25vcmUpIHsKIGlmICh2YWx1
ZSA8PSAwKSB7CiAgcmV0dXJuIHZhbHVlOwogfQogdmFyIGhhbGYgPSBiaXRzIDw9IDMyID8gTWF0
aC5hYnMoMSA8PCBiaXRzIC0gMSkgOiBNYXRoLnBvdygyLCBiaXRzIC0gMSk7CiBpZiAodmFsdWUg
Pj0gaGFsZiAmJiAoYml0cyA8PSAzMiB8fCB2YWx1ZSA+IGhhbGYpKSB7CiAgdmFsdWUgPSAtMiAq
IGhhbGYgKyB2YWx1ZTsKIH0KIHJldHVybiB2YWx1ZTsKfQppZiAoIU1hdGhbImltdWwiXSB8fCBN
YXRoWyJpbXVsIl0oNDI5NDk2NzI5NSwgNSkgIT09IC01KSBNYXRoWyJpbXVsIl0gPSBmdW5jdGlv
biBpbXVsKGEsIGIpIHsKIHZhciBhaCA9IGEgPj4+IDE2OwogdmFyIGFsID0gYSAmIDY1NTM1Owog
dmFyIGJoID0gYiA+Pj4gMTY7CiB2YXIgYmwgPSBiICYgNjU1MzU7CiByZXR1cm4gYWwgKiBibCAr
IChhaCAqIGJsICsgYWwgKiBiaCA8PCAxNikgfCAwOwp9OwpNYXRoLmltdWwgPSBNYXRoWyJpbXVs
Il07CmlmICghTWF0aFsiY2x6MzIiXSkgTWF0aFsiY2x6MzIiXSA9IChmdW5jdGlvbih4KSB7CiB4
ID0geCA+Pj4gMDsKIGZvciAodmFyIGkgPSAwOyBpIDwgMzI7IGkrKykgewogIGlmICh4ICYgMSA8
PCAzMSAtIGkpIHJldHVybiBpOwogfQogcmV0dXJuIDMyOwp9KTsKTWF0aC5jbHozMiA9IE1hdGhb
ImNsejMyIl07CnZhciBNYXRoX2FicyA9IE1hdGguYWJzOwp2YXIgTWF0aF9jb3MgPSBNYXRoLmNv
czsKdmFyIE1hdGhfc2luID0gTWF0aC5zaW47CnZhciBNYXRoX3RhbiA9IE1hdGgudGFuOwp2YXIg
TWF0aF9hY29zID0gTWF0aC5hY29zOwp2YXIgTWF0aF9hc2luID0gTWF0aC5hc2luOwp2YXIgTWF0
aF9hdGFuID0gTWF0aC5hdGFuOwp2YXIgTWF0aF9hdGFuMiA9IE1hdGguYXRhbjI7CnZhciBNYXRo
X2V4cCA9IE1hdGguZXhwOwp2YXIgTWF0aF9sb2cgPSBNYXRoLmxvZzsKdmFyIE1hdGhfc3FydCA9
IE1hdGguc3FydDsKdmFyIE1hdGhfY2VpbCA9IE1hdGguY2VpbDsKdmFyIE1hdGhfZmxvb3IgPSBN
YXRoLmZsb29yOwp2YXIgTWF0aF9wb3cgPSBNYXRoLnBvdzsKdmFyIE1hdGhfaW11bCA9IE1hdGgu
aW11bDsKdmFyIE1hdGhfZnJvdW5kID0gTWF0aC5mcm91bmQ7CnZhciBNYXRoX21pbiA9IE1hdGgu
bWluOwp2YXIgTWF0aF9jbHozMiA9IE1hdGguY2x6MzI7CnZhciBydW5EZXBlbmRlbmNpZXMgPSAw
Owp2YXIgcnVuRGVwZW5kZW5jeVdhdGNoZXIgPSBudWxsOwp2YXIgZGVwZW5kZW5jaWVzRnVsZmls
bGVkID0gbnVsbDsKZnVuY3Rpb24gZ2V0VW5pcXVlUnVuRGVwZW5kZW5jeShpZCkgewogcmV0dXJu
IGlkOwp9CmZ1bmN0aW9uIGFkZFJ1bkRlcGVuZGVuY3koaWQpIHsKIHJ1bkRlcGVuZGVuY2llcysr
OwogaWYgKE1vZHVsZVsibW9uaXRvclJ1bkRlcGVuZGVuY2llcyJdKSB7CiAgTW9kdWxlWyJtb25p
dG9yUnVuRGVwZW5kZW5jaWVzIl0ocnVuRGVwZW5kZW5jaWVzKTsKIH0KfQpNb2R1bGVbImFkZFJ1
bkRlcGVuZGVuY3kiXSA9IGFkZFJ1bkRlcGVuZGVuY3k7CmZ1bmN0aW9uIHJlbW92ZVJ1bkRlcGVu
ZGVuY3koaWQpIHsKIHJ1bkRlcGVuZGVuY2llcy0tOwogaWYgKE1vZHVsZVsibW9uaXRvclJ1bkRl
cGVuZGVuY2llcyJdKSB7CiAgTW9kdWxlWyJtb25pdG9yUnVuRGVwZW5kZW5jaWVzIl0ocnVuRGVw
ZW5kZW5jaWVzKTsKIH0KIGlmIChydW5EZXBlbmRlbmNpZXMgPT0gMCkgewogIGlmIChydW5EZXBl
bmRlbmN5V2F0Y2hlciAhPT0gbnVsbCkgewogICBjbGVhckludGVydmFsKHJ1bkRlcGVuZGVuY3lX
YXRjaGVyKTsKICAgcnVuRGVwZW5kZW5jeVdhdGNoZXIgPSBudWxsOwogIH0KICBpZiAoZGVwZW5k
ZW5jaWVzRnVsZmlsbGVkKSB7CiAgIHZhciBjYWxsYmFjayA9IGRlcGVuZGVuY2llc0Z1bGZpbGxl
ZDsKICAgZGVwZW5kZW5jaWVzRnVsZmlsbGVkID0gbnVsbDsKICAgY2FsbGJhY2soKTsKICB9CiB9
Cn0KTW9kdWxlWyJyZW1vdmVSdW5EZXBlbmRlbmN5Il0gPSByZW1vdmVSdW5EZXBlbmRlbmN5OwpN
b2R1bGVbInByZWxvYWRlZEltYWdlcyJdID0ge307Ck1vZHVsZVsicHJlbG9hZGVkQXVkaW9zIl0g
PSB7fTsKdmFyIG1lbW9yeUluaXRpYWxpemVyID0gbnVsbDsKdmFyIEFTTV9DT05TVFMgPSBbXTsK
U1RBVElDX0JBU0UgPSA4OwpTVEFUSUNUT1AgPSBTVEFUSUNfQkFTRSArIDQxNzY7Cl9fQVRJTklU
X18ucHVzaCgpOwphbGxvY2F0ZShbIDQ4LCAyLCAwLCAwLCA0OCwgMiwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMiwgMCwgMCwgMCwgNTQsIDEwLCAwLCAw
LCAwLCA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMCwgMjU1LCAyNTUsIDI1NSwgMjU1LCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MCwgMTAyLCA5NywgMTEwLCAxMTAsIDEw
NywgMTE3LCA5OSwgMTA0LCAxMDEsIDExMCwgNDAsIDM3LCAxMDAsIDQxLCAzMiwgNjEsIDMyLCAz
NywgMTAwLCA0NiwgMTAsIDAsIDM3LCAxMDAsIDAsIDg3LCAxMTQsIDExMSwgMTEwLCAxMDMsIDMy
LCA5NywgMTE0LCAxMDMsIDExNywgMTA5LCAxMDEsIDExMCwgMTE2LCA0NiwgMCwgODQsIDMzLCAz
NCwgMjUsIDEzLCAxLCAyLCAzLCAxNywgNzUsIDI4LCAxMiwgMTYsIDQsIDExLCAyOSwgMTgsIDMw
LCAzOSwgMTA0LCAxMTAsIDExMSwgMTEyLCAxMTMsIDk4LCAzMiwgNSwgNiwgMTUsIDE5LCAyMCwg
MjEsIDI2LCA4LCAyMiwgNywgNDAsIDM2LCAyMywgMjQsIDksIDEwLCAxNCwgMjcsIDMxLCAzNywg
MzUsIDEzMSwgMTMwLCAxMjUsIDM4LCA0MiwgNDMsIDYwLCA2MSwgNjIsIDYzLCA2NywgNzEsIDc0
LCA3NywgODgsIDg5LCA5MCwgOTEsIDkyLCA5MywgOTQsIDk1LCA5NiwgOTcsIDk5LCAxMDAsIDEw
MSwgMTAyLCAxMDMsIDEwNSwgMTA2LCAxMDcsIDEwOCwgMTE0LCAxMTUsIDExNiwgMTIxLCAxMjIs
IDEyMywgMTI0LCAwLCA3MywgMTA4LCAxMDgsIDEwMSwgMTAzLCA5NywgMTA4LCAzMiwgOTgsIDEy
MSwgMTE2LCAxMDEsIDMyLCAxMTUsIDEwMSwgMTEzLCAxMTcsIDEwMSwgMTEwLCA5OSwgMTAxLCAw
LCA2OCwgMTExLCAxMDksIDk3LCAxMDUsIDExMCwgMzIsIDEwMSwgMTE0LCAxMTQsIDExMSwgMTE0
LCAwLCA4MiwgMTAxLCAxMTUsIDExNywgMTA4LCAxMTYsIDMyLCAxMTAsIDExMSwgMTE2LCAzMiwg
MTE0LCAxMDEsIDExMiwgMTE0LCAxMDEsIDExNSwgMTAxLCAxMTAsIDExNiwgOTcsIDk4LCAxMDgs
IDEwMSwgMCwgNzgsIDExMSwgMTE2LCAzMiwgOTcsIDMyLCAxMTYsIDExNiwgMTIxLCAwLCA4MCwg
MTAxLCAxMTQsIDEwOSwgMTA1LCAxMTUsIDExNSwgMTA1LCAxMTEsIDExMCwgMzIsIDEwMCwgMTAx
LCAxMTAsIDEwNSwgMTAxLCAxMDAsIDAsIDc5LCAxMTIsIDEwMSwgMTE0LCA5NywgMTE2LCAxMDUs
IDExMSwgMTEwLCAzMiwgMTEwLCAxMTEsIDExNiwgMzIsIDExMiwgMTAxLCAxMTQsIDEwOSwgMTA1
LCAxMTYsIDExNiwgMTAxLCAxMDAsIDAsIDc4LCAxMTEsIDMyLCAxMTUsIDExNywgOTksIDEwNCwg
MzIsIDEwMiwgMTA1LCAxMDgsIDEwMSwgMzIsIDExMSwgMTE0LCAzMiwgMTAwLCAxMDUsIDExNCwg
MTAxLCA5OSwgMTE2LCAxMTEsIDExNCwgMTIxLCAwLCA3OCwgMTExLCAzMiwgMTE1LCAxMTcsIDk5
LCAxMDQsIDMyLCAxMTIsIDExNCwgMTExLCA5OSwgMTAxLCAxMTUsIDExNSwgMCwgNzAsIDEwNSwg
MTA4LCAxMDEsIDMyLCAxMDEsIDEyMCwgMTA1LCAxMTUsIDExNiwgMTE1LCAwLCA4NiwgOTcsIDEw
OCwgMTE3LCAxMDEsIDMyLCAxMTYsIDExMSwgMTExLCAzMiwgMTA4LCA5NywgMTE0LCAxMDMsIDEw
MSwgMzIsIDEwMiwgMTExLCAxMTQsIDMyLCAxMDAsIDk3LCAxMTYsIDk3LCAzMiwgMTE2LCAxMjEs
IDExMiwgMTAxLCAwLCA3OCwgMTExLCAzMiwgMTE1LCAxMTIsIDk3LCA5OSwgMTAxLCAzMiwgMTA4
LCAxMDEsIDEwMiwgMTE2LCAzMiwgMTExLCAxMTAsIDMyLCAxMDAsIDEwMSwgMTE4LCAxMDUsIDk5
LCAxMDEsIDAsIDc5LCAxMTcsIDExNiwgMzIsIDExMSwgMTAyLCAzMiwgMTA5LCAxMDEsIDEwOSwg
MTExLCAxMTQsIDEyMSwgMCwgODIsIDEwMSwgMTE1LCAxMTEsIDExNywgMTE0LCA5OSwgMTAxLCAz
MiwgOTgsIDExNywgMTE1LCAxMjEsIDAsIDczLCAxMTAsIDExNiwgMTAxLCAxMTQsIDExNCwgMTE3
LCAxMTIsIDExNiwgMTAxLCAxMDAsIDMyLCAxMTUsIDEyMSwgMTE1LCAxMTYsIDEwMSwgMTA5LCAz
MiwgOTksIDk3LCAxMDgsIDEwOCwgMCwgODIsIDEwMSwgMTE1LCAxMTEsIDExNywgMTE0LCA5OSwg
MTAxLCAzMiwgMTE2LCAxMDEsIDEwOSwgMTEyLCAxMTEsIDExNCwgOTcsIDExNCwgMTA1LCAxMDgs
IDEyMSwgMzIsIDExNywgMTEwLCA5NywgMTE4LCA5NywgMTA1LCAxMDgsIDk3LCA5OCwgMTA4LCAx
MDEsIDAsIDczLCAxMTAsIDExOCwgOTcsIDEwOCwgMTA1LCAxMDAsIDMyLCAxMTUsIDEwMSwgMTAx
LCAxMDcsIDAsIDY3LCAxMTQsIDExMSwgMTE1LCAxMTUsIDQ1LCAxMDAsIDEwMSwgMTE4LCAxMDUs
IDk5LCAxMDEsIDMyLCAxMDgsIDEwNSwgMTEwLCAxMDcsIDAsIDgyLCAxMDEsIDk3LCAxMDAsIDQ1
LCAxMTEsIDExMCwgMTA4LCAxMjEsIDMyLCAxMDIsIDEwNSwgMTA4LCAxMDEsIDMyLCAxMTUsIDEy
MSwgMTE1LCAxMTYsIDEwMSwgMTA5LCAwLCA2OCwgMTA1LCAxMTQsIDEwMSwgOTksIDExNiwgMTEx
LCAxMTQsIDEyMSwgMzIsIDExMCwgMTExLCAxMTYsIDMyLCAxMDEsIDEwOSwgMTEyLCAxMTYsIDEy
MSwgMCwgNjcsIDExMSwgMTEwLCAxMTAsIDEwMSwgOTksIDExNiwgMTA1LCAxMTEsIDExMCwgMzIs
IDExNCwgMTAxLCAxMTUsIDEwMSwgMTE2LCAzMiwgOTgsIDEyMSwgMzIsIDExMiwgMTAxLCAxMDEs
IDExNCwgMCwgNzksIDExMiwgMTAxLCAxMTQsIDk3LCAxMTYsIDEwNSwgMTExLCAxMTAsIDMyLCAx
MTYsIDEwNSwgMTA5LCAxMDEsIDEwMCwgMzIsIDExMSwgMTE3LCAxMTYsIDAsIDY3LCAxMTEsIDEx
MCwgMTEwLCAxMDEsIDk5LCAxMTYsIDEwNSwgMTExLCAxMTAsIDMyLCAxMTQsIDEwMSwgMTAyLCAx
MTcsIDExNSwgMTAxLCAxMDAsIDAsIDcyLCAxMTEsIDExNSwgMTE2LCAzMiwgMTA1LCAxMTUsIDMy
LCAxMDAsIDExMSwgMTE5LCAxMTAsIDAsIDcyLCAxMTEsIDExNSwgMTE2LCAzMiwgMTA1LCAxMTUs
IDMyLCAxMTcsIDExMCwgMTE0LCAxMDEsIDk3LCA5OSwgMTA0LCA5NywgOTgsIDEwOCwgMTAxLCAw
LCA2NSwgMTAwLCAxMDAsIDExNCwgMTAxLCAxMTUsIDExNSwgMzIsIDEwNSwgMTEwLCAzMiwgMTE3
LCAxMTUsIDEwMSwgMCwgNjYsIDExNCwgMTExLCAxMDcsIDEwMSwgMTEwLCAzMiwgMTEyLCAxMDUs
IDExMiwgMTAxLCAwLCA3MywgNDcsIDc5LCAzMiwgMTAxLCAxMTQsIDExNCwgMTExLCAxMTQsIDAs
IDc4LCAxMTEsIDMyLCAxMTUsIDExNywgOTksIDEwNCwgMzIsIDEwMCwgMTAxLCAxMTgsIDEwNSwg
OTksIDEwMSwgMzIsIDExMSwgMTE0LCAzMiwgOTcsIDEwMCwgMTAwLCAxMTQsIDEwMSwgMTE1LCAx
MTUsIDAsIDY2LCAxMDgsIDExMSwgOTksIDEwNywgMzIsIDEwMCwgMTAxLCAxMTgsIDEwNSwgOTks
IDEwMSwgMzIsIDExNCwgMTAxLCAxMTMsIDExNywgMTA1LCAxMTQsIDEwMSwgMTAwLCAwLCA3OCwg
MTExLCAzMiwgMTE1LCAxMTcsIDk5LCAxMDQsIDMyLCAxMDAsIDEwMSwgMTE4LCAxMDUsIDk5LCAx
MDEsIDAsIDc4LCAxMTEsIDExNiwgMzIsIDk3LCAzMiwgMTAwLCAxMDUsIDExNCwgMTAxLCA5OSwg
MTE2LCAxMTEsIDExNCwgMTIxLCAwLCA3MywgMTE1LCAzMiwgOTcsIDMyLCAxMDAsIDEwNSwgMTE0
LCAxMDEsIDk5LCAxMTYsIDExMSwgMTE0LCAxMjEsIDAsIDg0LCAxMDEsIDEyMCwgMTE2LCAzMiwg
MTAyLCAxMDUsIDEwOCwgMTAxLCAzMiwgOTgsIDExNywgMTE1LCAxMjEsIDAsIDY5LCAxMjAsIDEw
MSwgOTksIDMyLCAxMDIsIDExMSwgMTE0LCAxMDksIDk3LCAxMTYsIDMyLCAxMDEsIDExNCwgMTE0
LCAxMTEsIDExNCwgMCwgNzMsIDExMCwgMTE4LCA5NywgMTA4LCAxMDUsIDEwMCwgMzIsIDk3LCAx
MTQsIDEwMywgMTE3LCAxMDksIDEwMSwgMTEwLCAxMTYsIDAsIDY1LCAxMTQsIDEwMywgMTE3LCAx
MDksIDEwMSwgMTEwLCAxMTYsIDMyLCAxMDgsIDEwNSwgMTE1LCAxMTYsIDMyLCAxMTYsIDExMSwg
MTExLCAzMiwgMTA4LCAxMTEsIDExMCwgMTAzLCAwLCA4MywgMTIxLCAxMDksIDk4LCAxMTEsIDEw
OCwgMTA1LCA5OSwgMzIsIDEwOCwgMTA1LCAxMTAsIDEwNywgMzIsIDEwOCwgMTExLCAxMTEsIDEx
MiwgMCwgNzAsIDEwNSwgMTA4LCAxMDEsIDExMCwgOTcsIDEwOSwgMTAxLCAzMiwgMTE2LCAxMTEs
IDExMSwgMzIsIDEwOCwgMTExLCAxMTAsIDEwMywgMCwgODQsIDExMSwgMTExLCAzMiwgMTA5LCA5
NywgMTEwLCAxMjEsIDMyLCAxMTEsIDExMiwgMTAxLCAxMTAsIDMyLCAxMDIsIDEwNSwgMTA4LCAx
MDEsIDExNSwgMzIsIDEwNSwgMTEwLCAzMiwgMTE1LCAxMjEsIDExNSwgMTE2LCAxMDEsIDEwOSwg
MCwgNzgsIDExMSwgMzIsIDEwMiwgMTA1LCAxMDgsIDEwMSwgMzIsIDEwMCwgMTAxLCAxMTUsIDk5
LCAxMTQsIDEwNSwgMTEyLCAxMTYsIDExMSwgMTE0LCAxMTUsIDMyLCA5NywgMTE4LCA5NywgMTA1
LCAxMDgsIDk3LCA5OCwgMTA4LCAxMDEsIDAsIDY2LCA5NywgMTAwLCAzMiwgMTAyLCAxMDUsIDEw
OCwgMTAxLCAzMiwgMTAwLCAxMDEsIDExNSwgOTksIDExNCwgMTA1LCAxMTIsIDExNiwgMTExLCAx
MTQsIDAsIDc4LCAxMTEsIDMyLCA5OSwgMTA0LCAxMDUsIDEwOCwgMTAwLCAzMiwgMTEyLCAxMTQs
IDExMSwgOTksIDEwMSwgMTE1LCAxMTUsIDAsIDY2LCA5NywgMTAwLCAzMiwgOTcsIDEwMCwgMTAw
LCAxMTQsIDEwMSwgMTE1LCAxMTUsIDAsIDcwLCAxMDUsIDEwOCwgMTAxLCAzMiwgMTE2LCAxMTEs
IDExMSwgMzIsIDEwOCwgOTcsIDExNCwgMTAzLCAxMDEsIDAsIDg0LCAxMTEsIDExMSwgMzIsIDEw
OSwgOTcsIDExMCwgMTIxLCAzMiwgMTA4LCAxMDUsIDExMCwgMTA3LCAxMTUsIDAsIDc4LCAxMTEs
IDMyLCAxMDgsIDExMSwgOTksIDEwNywgMTE1LCAzMiwgOTcsIDExOCwgOTcsIDEwNSwgMTA4LCA5
NywgOTgsIDEwOCwgMTAxLCAwLCA4MiwgMTAxLCAxMTUsIDExMSwgMTE3LCAxMTQsIDk5LCAxMDEs
IDMyLCAxMDAsIDEwMSwgOTcsIDEwMCwgMTA4LCAxMTEsIDk5LCAxMDcsIDMyLCAxMTksIDExMSwg
MTE3LCAxMDgsIDEwMCwgMzIsIDExMSwgOTksIDk5LCAxMTcsIDExNCwgMCwgODMsIDExNiwgOTcs
IDExNiwgMTAxLCAzMiwgMTEwLCAxMTEsIDExNiwgMzIsIDExNCwgMTAxLCA5OSwgMTExLCAxMTgs
IDEwMSwgMTE0LCA5NywgOTgsIDEwOCwgMTAxLCAwLCA4MCwgMTE0LCAxMDEsIDExOCwgMTA1LCAx
MTEsIDExNywgMTE1LCAzMiwgMTExLCAxMTksIDExMCwgMTAxLCAxMTQsIDMyLCAxMDAsIDEwNSwg
MTAxLCAxMDAsIDAsIDc5LCAxMTIsIDEwMSwgMTE0LCA5NywgMTE2LCAxMDUsIDExMSwgMTEwLCAz
MiwgOTksIDk3LCAxMTAsIDk5LCAxMDEsIDEwOCwgMTAxLCAxMDAsIDAsIDcwLCAxMTcsIDExMCwg
OTksIDExNiwgMTA1LCAxMTEsIDExMCwgMzIsIDExMCwgMTExLCAxMTYsIDMyLCAxMDUsIDEwOSwg
MTEyLCAxMDgsIDEwMSwgMTA5LCAxMDEsIDExMCwgMTE2LCAxMDEsIDEwMCwgMCwgNzgsIDExMSwg
MzIsIDEwOSwgMTAxLCAxMTUsIDExNSwgOTcsIDEwMywgMTAxLCAzMiwgMTExLCAxMDIsIDMyLCAx
MDAsIDEwMSwgMTE1LCAxMDUsIDExNCwgMTAxLCAxMDAsIDMyLCAxMTYsIDEyMSwgMTEyLCAxMDEs
IDAsIDczLCAxMDAsIDEwMSwgMTEwLCAxMTYsIDEwNSwgMTAyLCAxMDUsIDEwMSwgMTE0LCAzMiwg
MTE0LCAxMDEsIDEwOSwgMTExLCAxMTgsIDEwMSwgMTAwLCAwLCA2OCwgMTAxLCAxMTgsIDEwNSwg
OTksIDEwMSwgMzIsIDExMCwgMTExLCAxMTYsIDMyLCA5NywgMzIsIDExNSwgMTE2LCAxMTQsIDEw
MSwgOTcsIDEwOSwgMCwgNzgsIDExMSwgMzIsIDEwMCwgOTcsIDExNiwgOTcsIDMyLCA5NywgMTE4
LCA5NywgMTA1LCAxMDgsIDk3LCA5OCwgMTA4LCAxMDEsIDAsIDY4LCAxMDEsIDExOCwgMTA1LCA5
OSwgMTAxLCAzMiwgMTE2LCAxMDUsIDEwOSwgMTAxLCAxMTEsIDExNywgMTE2LCAwLCA3OSwgMTE3
LCAxMTYsIDMyLCAxMTEsIDEwMiwgMzIsIDExNSwgMTE2LCAxMTQsIDEwMSwgOTcsIDEwOSwgMTE1
LCAzMiwgMTE0LCAxMDEsIDExNSwgMTExLCAxMTcsIDExNCwgOTksIDEwMSwgMTE1LCAwLCA3Niwg
MTA1LCAxMTAsIDEwNywgMzIsIDEwNCwgOTcsIDExNSwgMzIsIDk4LCAxMDEsIDEwMSwgMTEwLCAz
MiwgMTE1LCAxMDEsIDExOCwgMTAxLCAxMTQsIDEwMSwgMTAwLCAwLCA4MCwgMTE0LCAxMTEsIDEx
NiwgMTExLCA5OSwgMTExLCAxMDgsIDMyLCAxMDEsIDExNCwgMTE0LCAxMTEsIDExNCwgMCwgNjYs
IDk3LCAxMDAsIDMyLCAxMDksIDEwMSwgMTE1LCAxMTUsIDk3LCAxMDMsIDEwMSwgMCwgNzAsIDEw
NSwgMTA4LCAxMDEsIDMyLCAxMDAsIDEwMSwgMTE1LCA5OSwgMTE0LCAxMDUsIDExMiwgMTE2LCAx
MTEsIDExNCwgMzIsIDEwNSwgMTEwLCAzMiwgOTgsIDk3LCAxMDAsIDMyLCAxMTUsIDExNiwgOTcs
IDExNiwgMTAxLCAwLCA3OCwgMTExLCAxMTYsIDMyLCA5NywgMzIsIDExNSwgMTExLCA5OSwgMTA3
LCAxMDEsIDExNiwgMCwgNjgsIDEwMSwgMTE1LCAxMTYsIDEwNSwgMTEwLCA5NywgMTE2LCAxMDUs
IDExMSwgMTEwLCAzMiwgOTcsIDEwMCwgMTAwLCAxMTQsIDEwMSwgMTE1LCAxMTUsIDMyLCAxMTQs
IDEwMSwgMTEzLCAxMTcsIDEwNSwgMTE0LCAxMDEsIDEwMCwgMCwgNzcsIDEwMSwgMTE1LCAxMTUs
IDk3LCAxMDMsIDEwMSwgMzIsIDExNiwgMTExLCAxMTEsIDMyLCAxMDgsIDk3LCAxMTQsIDEwMywg
MTAxLCAwLCA4MCwgMTE0LCAxMTEsIDExNiwgMTExLCA5OSwgMTExLCAxMDgsIDMyLCAxMTksIDEx
NCwgMTExLCAxMTAsIDEwMywgMzIsIDExNiwgMTIxLCAxMTIsIDEwMSwgMzIsIDEwMiwgMTExLCAx
MTQsIDMyLCAxMTUsIDExMSwgOTksIDEwNywgMTAxLCAxMTYsIDAsIDgwLCAxMTQsIDExMSwgMTE2
LCAxMTEsIDk5LCAxMTEsIDEwOCwgMzIsIDExMCwgMTExLCAxMTYsIDMyLCA5NywgMTE4LCA5Nywg
MTA1LCAxMDgsIDk3LCA5OCwgMTA4LCAxMDEsIDAsIDgwLCAxMTQsIDExMSwgMTE2LCAxMTEsIDk5
LCAxMTEsIDEwOCwgMzIsIDExMCwgMTExLCAxMTYsIDMyLCAxMTUsIDExNywgMTEyLCAxMTIsIDEx
MSwgMTE0LCAxMTYsIDEwMSwgMTAwLCAwLCA4MywgMTExLCA5OSwgMTA3LCAxMDEsIDExNiwgMzIs
IDExNiwgMTIxLCAxMTIsIDEwMSwgMzIsIDExMCwgMTExLCAxMTYsIDMyLCAxMTUsIDExNywgMTEy
LCAxMTIsIDExMSwgMTE0LCAxMTYsIDEwMSwgMTAwLCAwLCA3OCwgMTExLCAxMTYsIDMyLCAxMTUs
IDExNywgMTEyLCAxMTIsIDExMSwgMTE0LCAxMTYsIDEwMSwgMTAwLCAwLCA4MCwgMTE0LCAxMTEs
IDExNiwgMTExLCA5OSwgMTExLCAxMDgsIDMyLCAxMDIsIDk3LCAxMDksIDEwNSwgMTA4LCAxMjEs
IDMyLCAxMTAsIDExMSwgMTE2LCAzMiwgMTE1LCAxMTcsIDExMiwgMTEyLCAxMTEsIDExNCwgMTE2
LCAxMDEsIDEwMCwgMCwgNjUsIDEwMCwgMTAwLCAxMTQsIDEwMSwgMTE1LCAxMTUsIDMyLCAxMDIs
IDk3LCAxMDksIDEwNSwgMTA4LCAxMjEsIDMyLCAxMTAsIDExMSwgMTE2LCAzMiwgMTE1LCAxMTcs
IDExMiwgMTEyLCAxMTEsIDExNCwgMTE2LCAxMDEsIDEwMCwgMzIsIDk4LCAxMjEsIDMyLCAxMTIs
IDExNCwgMTExLCAxMTYsIDExMSwgOTksIDExMSwgMTA4LCAwLCA2NSwgMTAwLCAxMDAsIDExNCwg
MTAxLCAxMTUsIDExNSwgMzIsIDExMCwgMTExLCAxMTYsIDMyLCA5NywgMTE4LCA5NywgMTA1LCAx
MDgsIDk3LCA5OCwgMTA4LCAxMDEsIDAsIDc4LCAxMDEsIDExNiwgMTE5LCAxMTEsIDExNCwgMTA3
LCAzMiwgMTA1LCAxMTUsIDMyLCAxMDAsIDExMSwgMTE5LCAxMTAsIDAsIDc4LCAxMDEsIDExNiwg
MTE5LCAxMTEsIDExNCwgMTA3LCAzMiwgMTE3LCAxMTAsIDExNCwgMTAxLCA5NywgOTksIDEwNCwg
OTcsIDk4LCAxMDgsIDEwMSwgMCwgNjcsIDExMSwgMTEwLCAxMTAsIDEwMSwgOTksIDExNiwgMTA1
LCAxMTEsIDExMCwgMzIsIDExNCwgMTAxLCAxMTUsIDEwMSwgMTE2LCAzMiwgOTgsIDEyMSwgMzIs
IDExMCwgMTAxLCAxMTYsIDExOSwgMTExLCAxMTQsIDEwNywgMCwgNjcsIDExMSwgMTEwLCAxMTAs
IDEwMSwgOTksIDExNiwgMTA1LCAxMTEsIDExMCwgMzIsIDk3LCA5OCwgMTExLCAxMTQsIDExNiwg
MTAxLCAxMDAsIDAsIDc4LCAxMTEsIDMyLCA5OCwgMTE3LCAxMDIsIDEwMiwgMTAxLCAxMTQsIDMy
LCAxMTUsIDExMiwgOTcsIDk5LCAxMDEsIDMyLCA5NywgMTE4LCA5NywgMTA1LCAxMDgsIDk3LCA5
OCwgMTA4LCAxMDEsIDAsIDgzLCAxMTEsIDk5LCAxMDcsIDEwMSwgMTE2LCAzMiwgMTA1LCAxMTUs
IDMyLCA5OSwgMTExLCAxMTAsIDExMCwgMTAxLCA5OSwgMTE2LCAxMDEsIDEwMCwgMCwgODMsIDEx
MSwgOTksIDEwNywgMTAxLCAxMTYsIDMyLCAxMTAsIDExMSwgMTE2LCAzMiwgOTksIDExMSwgMTEw
LCAxMTAsIDEwMSwgOTksIDExNiwgMTAxLCAxMDAsIDAsIDY3LCA5NywgMTEwLCAxMTAsIDExMSwg
MTE2LCAzMiwgMTE1LCAxMDEsIDExMCwgMTAwLCAzMiwgOTcsIDEwMiwgMTE2LCAxMDEsIDExNCwg
MzIsIDExNSwgMTExLCA5OSwgMTA3LCAxMDEsIDExNiwgMzIsIDExNSwgMTA0LCAxMTcsIDExNiwg
MTAwLCAxMTEsIDExOSwgMTEwLCAwLCA3OSwgMTEyLCAxMDEsIDExNCwgOTcsIDExNiwgMTA1LCAx
MTEsIDExMCwgMzIsIDk3LCAxMDgsIDExNCwgMTAxLCA5NywgMTAwLCAxMjEsIDMyLCAxMDUsIDEx
MCwgMzIsIDExMiwgMTE0LCAxMTEsIDEwMywgMTE0LCAxMDEsIDExNSwgMTE1LCAwLCA3OSwgMTEy
LCAxMDEsIDExNCwgOTcsIDExNiwgMTA1LCAxMTEsIDExMCwgMzIsIDEwNSwgMTEwLCAzMiwgMTEy
LCAxMTQsIDExMSwgMTAzLCAxMTQsIDEwMSwgMTE1LCAxMTUsIDAsIDgzLCAxMTYsIDk3LCAxMDgs
IDEwMSwgMzIsIDEwMiwgMTA1LCAxMDgsIDEwMSwgMzIsIDEwNCwgOTcsIDExMCwgMTAwLCAxMDgs
IDEwMSwgMCwgODIsIDEwMSwgMTA5LCAxMTEsIDExNiwgMTAxLCAzMiwgNzMsIDQ3LCA3OSwgMzIs
IDEwMSwgMTE0LCAxMTQsIDExMSwgMTE0LCAwLCA4MSwgMTE3LCAxMTEsIDExNiwgOTcsIDMyLCAx
MDEsIDEyMCwgOTksIDEwMSwgMTAxLCAxMDAsIDEwMSwgMTAwLCAwLCA3OCwgMTExLCAzMiwgMTA5
LCAxMDEsIDEwMCwgMTA1LCAxMTcsIDEwOSwgMzIsIDEwMiwgMTExLCAxMTcsIDExMCwgMTAwLCAw
LCA4NywgMTE0LCAxMTEsIDExMCwgMTAzLCAzMiwgMTA5LCAxMDEsIDEwMCwgMTA1LCAxMTcsIDEw
OSwgMzIsIDExNiwgMTIxLCAxMTIsIDEwMSwgMCwgNzgsIDExMSwgMzIsIDEwMSwgMTE0LCAxMTQs
IDExMSwgMTE0LCAzMiwgMTA1LCAxMTAsIDEwMiwgMTExLCAxMTQsIDEwOSwgOTcsIDExNiwgMTA1
LCAxMTEsIDExMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcsIDAsIDEwLCAwLCAxNywgMTcs
IDE3LCAwLCAwLCAwLCAwLCA1LCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAxMSwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcsIDAsIDE1LCAxMCwgMTcsIDE3LCAxNywgMywgMTAs
IDcsIDAsIDEsIDE5LCA5LCAxMSwgMTEsIDAsIDAsIDksIDYsIDExLCAwLCAwLCAxMSwgMCwgNiwg
MTcsIDAsIDAsIDAsIDE3LCAxNywgMTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDExLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNywgMCwgMTAsIDEw
LCAxNywgMTcsIDE3LCAwLCAxMCwgMCwgMCwgMiwgMCwgOSwgMTEsIDAsIDAsIDAsIDksIDAsIDEx
LCAwLCAwLCAxMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDEyLCAwLCAwLCAwLCAwLCAxMiwgMCwgMCwgMCwgMCwgOSwgMTIsIDAsIDAsIDAs
IDAsIDAsIDEyLCAwLCAwLCAxMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDEzLCAwLCAwLCAwLCA0LCAxMywgMCwgMCwgMCwgMCwgOSwgMTQs
IDAsIDAsIDAsIDAsIDAsIDE0LCAwLCAwLCAxNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTYsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1LCAwLCAwLCAwLCAwLCAxNSwgMCwgMCwgMCwg
MCwgOSwgMTYsIDAsIDAsIDAsIDAsIDAsIDE2LCAwLCAwLCAxNiwgMCwgMCwgMTgsIDAsIDAsIDAs
IDE4LCAxOCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAxOCwgMTgsIDE4LCAw
LCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAxMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAsIDAsIDAs
IDAsIDAsIDEwLCAwLCAwLCAwLCAwLCA5LCAxMSwgMCwgMCwgMCwgMCwgMCwgMTEsIDAsIDAsIDEx
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAxMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MTIsIDAsIDAsIDAsIDAsIDEyLCAwLCAwLCAwLCAwLCA5LCAxMiwgMCwgMCwgMCwgMCwgMCwgMTIs
IDAsIDAsIDEyLCAwLCAwLCA0OCwgNDksIDUwLCA1MSwgNTIsIDUzLCA1NCwgNTUsIDU2LCA1Nywg
NjUsIDY2LCA2NywgNjgsIDY5LCA3MCwgNDUsIDQzLCAzMiwgMzIsIDMyLCA0OCwgODgsIDQ4LCAx
MjAsIDAsIDQwLCAxMTAsIDExNywgMTA4LCAxMDgsIDQxLCAwLCA0NSwgNDgsIDg4LCA0MywgNDgs
IDg4LCAzMiwgNDgsIDg4LCA0NSwgNDgsIDEyMCwgNDMsIDQ4LCAxMjAsIDMyLCA0OCwgMTIwLCAw
LCAxMDUsIDExMCwgMTAyLCAwLCA3MywgNzgsIDcwLCAwLCAxMTAsIDk3LCAxMTAsIDAsIDc4LCA2
NSwgNzgsIDAsIDQ2LCAwIF0sICJpOCIsIEFMTE9DX05PTkUsIFJ1bnRpbWUuR0xPQkFMX0JBU0Up
Owp2YXIgdGVtcERvdWJsZVB0ciA9IFJ1bnRpbWUuYWxpZ25NZW1vcnkoYWxsb2NhdGUoMTIsICJp
OCIsIEFMTE9DX1NUQVRJQyksIDgpOwphc3NlcnQodGVtcERvdWJsZVB0ciAlIDggPT0gMCk7CmZ1
bmN0aW9uIGNvcHlUZW1wRmxvYXQocHRyKSB7CiBIRUFQOFt0ZW1wRG91YmxlUHRyXSA9IEhFQVA4
W3B0cl07CiBIRUFQOFt0ZW1wRG91YmxlUHRyICsgMV0gPSBIRUFQOFtwdHIgKyAxXTsKIEhFQVA4
W3RlbXBEb3VibGVQdHIgKyAyXSA9IEhFQVA4W3B0ciArIDJdOwogSEVBUDhbdGVtcERvdWJsZVB0
ciArIDNdID0gSEVBUDhbcHRyICsgM107Cn0KZnVuY3Rpb24gY29weVRlbXBEb3VibGUocHRyKSB7
CiBIRUFQOFt0ZW1wRG91YmxlUHRyXSA9IEhFQVA4W3B0cl07CiBIRUFQOFt0ZW1wRG91YmxlUHRy
ICsgMV0gPSBIRUFQOFtwdHIgKyAxXTsKIEhFQVA4W3RlbXBEb3VibGVQdHIgKyAyXSA9IEhFQVA4
W3B0ciArIDJdOwogSEVBUDhbdGVtcERvdWJsZVB0ciArIDNdID0gSEVBUDhbcHRyICsgM107CiBI
RUFQOFt0ZW1wRG91YmxlUHRyICsgNF0gPSBIRUFQOFtwdHIgKyA0XTsKIEhFQVA4W3RlbXBEb3Vi
bGVQdHIgKyA1XSA9IEhFQVA4W3B0ciArIDVdOwogSEVBUDhbdGVtcERvdWJsZVB0ciArIDZdID0g
SEVBUDhbcHRyICsgNl07CiBIRUFQOFt0ZW1wRG91YmxlUHRyICsgN10gPSBIRUFQOFtwdHIgKyA3
XTsKfQp2YXIgX0JEdG9JSGlnaCA9IHRydWU7Ck1vZHVsZVsiX2k2NFN1YnRyYWN0Il0gPSBfaTY0
U3VidHJhY3Q7Ck1vZHVsZVsiX2k2NEFkZCJdID0gX2k2NEFkZDsKZnVuY3Rpb24gX3B0aHJlYWRf
Y2xlYW51cF9wdXNoKHJvdXRpbmUsIGFyZykgewogX19BVEVYSVRfXy5wdXNoKChmdW5jdGlvbigp
IHsKICBSdW50aW1lLmR5bkNhbGwoInZpIiwgcm91dGluZSwgWyBhcmcgXSk7CiB9KSk7CiBfcHRo
cmVhZF9jbGVhbnVwX3B1c2gubGV2ZWwgPSBfX0FURVhJVF9fLmxlbmd0aDsKfQpNb2R1bGVbIl9t
ZW1zZXQiXSA9IF9tZW1zZXQ7CnZhciBfQkR0b0lMb3cgPSB0cnVlOwpNb2R1bGVbIl9iaXRzaGlm
dDY0THNociJdID0gX2JpdHNoaWZ0NjRMc2hyOwpNb2R1bGVbIl9iaXRzaGlmdDY0U2hsIl0gPSBf
Yml0c2hpZnQ2NFNobDsKZnVuY3Rpb24gX3B0aHJlYWRfY2xlYW51cF9wb3AoKSB7CiBhc3NlcnQo
X3B0aHJlYWRfY2xlYW51cF9wdXNoLmxldmVsID09IF9fQVRFWElUX18ubGVuZ3RoLCAiY2Fubm90
IHBvcCBpZiBzb21ldGhpbmcgZWxzZSBhZGRlZCBtZWFud2hpbGUhIik7CiBfX0FURVhJVF9fLnBv
cCgpOwogX3B0aHJlYWRfY2xlYW51cF9wdXNoLmxldmVsID0gX19BVEVYSVRfXy5sZW5ndGg7Cn0K
ZnVuY3Rpb24gX2Fib3J0KCkgewogTW9kdWxlWyJhYm9ydCJdKCk7Cn0KZnVuY3Rpb24gX19fbG9j
aygpIHt9CmZ1bmN0aW9uIF9fX3VubG9jaygpIHt9CnZhciBFUlJOT19DT0RFUyA9IHsKIEVQRVJN
OiAxLAogRU5PRU5UOiAyLAogRVNSQ0g6IDMsCiBFSU5UUjogNCwKIEVJTzogNSwKIEVOWElPOiA2
LAogRTJCSUc6IDcsCiBFTk9FWEVDOiA4LAogRUJBREY6IDksCiBFQ0hJTEQ6IDEwLAogRUFHQUlO
OiAxMSwKIEVXT1VMREJMT0NLOiAxMSwKIEVOT01FTTogMTIsCiBFQUNDRVM6IDEzLAogRUZBVUxU
OiAxNCwKIEVOT1RCTEs6IDE1LAogRUJVU1k6IDE2LAogRUVYSVNUOiAxNywKIEVYREVWOiAxOCwK
IEVOT0RFVjogMTksCiBFTk9URElSOiAyMCwKIEVJU0RJUjogMjEsCiBFSU5WQUw6IDIyLAogRU5G
SUxFOiAyMywKIEVNRklMRTogMjQsCiBFTk9UVFk6IDI1LAogRVRYVEJTWTogMjYsCiBFRkJJRzog
MjcsCiBFTk9TUEM6IDI4LAogRVNQSVBFOiAyOSwKIEVST0ZTOiAzMCwKIEVNTElOSzogMzEsCiBF
UElQRTogMzIsCiBFRE9NOiAzMywKIEVSQU5HRTogMzQsCiBFTk9NU0c6IDQyLAogRUlEUk06IDQz
LAogRUNIUk5HOiA0NCwKIEVMMk5TWU5DOiA0NSwKIEVMM0hMVDogNDYsCiBFTDNSU1Q6IDQ3LAog
RUxOUk5HOiA0OCwKIEVVTkFUQ0g6IDQ5LAogRU5PQ1NJOiA1MCwKIEVMMkhMVDogNTEsCiBFREVB
RExLOiAzNSwKIEVOT0xDSzogMzcsCiBFQkFERTogNTIsCiBFQkFEUjogNTMsCiBFWEZVTEw6IDU0
LAogRU5PQU5POiA1NSwKIEVCQURSUUM6IDU2LAogRUJBRFNMVDogNTcsCiBFREVBRExPQ0s6IDM1
LAogRUJGT05UOiA1OSwKIEVOT1NUUjogNjAsCiBFTk9EQVRBOiA2MSwKIEVUSU1FOiA2MiwKIEVO
T1NSOiA2MywKIEVOT05FVDogNjQsCiBFTk9QS0c6IDY1LAogRVJFTU9URTogNjYsCiBFTk9MSU5L
OiA2NywKIEVBRFY6IDY4LAogRVNSTU5UOiA2OSwKIEVDT01NOiA3MCwKIEVQUk9UTzogNzEsCiBF
TVVMVElIT1A6IDcyLAogRURPVERPVDogNzMsCiBFQkFETVNHOiA3NCwKIEVOT1RVTklROiA3NiwK
IEVCQURGRDogNzcsCiBFUkVNQ0hHOiA3OCwKIEVMSUJBQ0M6IDc5LAogRUxJQkJBRDogODAsCiBF
TElCU0NOOiA4MSwKIEVMSUJNQVg6IDgyLAogRUxJQkVYRUM6IDgzLAogRU5PU1lTOiAzOCwKIEVO
T1RFTVBUWTogMzksCiBFTkFNRVRPT0xPTkc6IDM2LAogRUxPT1A6IDQwLAogRU9QTk9UU1VQUDog
OTUsCiBFUEZOT1NVUFBPUlQ6IDk2LAogRUNPTk5SRVNFVDogMTA0LAogRU5PQlVGUzogMTA1LAog
RUFGTk9TVVBQT1JUOiA5NywKIEVQUk9UT1RZUEU6IDkxLAogRU5PVFNPQ0s6IDg4LAogRU5PUFJP
VE9PUFQ6IDkyLAogRVNIVVRET1dOOiAxMDgsCiBFQ09OTlJFRlVTRUQ6IDExMSwKIEVBRERSSU5V
U0U6IDk4LAogRUNPTk5BQk9SVEVEOiAxMDMsCiBFTkVUVU5SRUFDSDogMTAxLAogRU5FVERPV046
IDEwMCwKIEVUSU1FRE9VVDogMTEwLAogRUhPU1RET1dOOiAxMTIsCiBFSE9TVFVOUkVBQ0g6IDEx
MywKIEVJTlBST0dSRVNTOiAxMTUsCiBFQUxSRUFEWTogMTE0LAogRURFU1RBRERSUkVROiA4OSwK
IEVNU0dTSVpFOiA5MCwKIEVQUk9UT05PU1VQUE9SVDogOTMsCiBFU09DS1ROT1NVUFBPUlQ6IDk0
LAogRUFERFJOT1RBVkFJTDogOTksCiBFTkVUUkVTRVQ6IDEwMiwKIEVJU0NPTk46IDEwNiwKIEVO
T1RDT05OOiAxMDcsCiBFVE9PTUFOWVJFRlM6IDEwOSwKIEVVU0VSUzogODcsCiBFRFFVT1Q6IDEy
MiwKIEVTVEFMRTogMTE2LAogRU5PVFNVUDogOTUsCiBFTk9NRURJVU06IDEyMywKIEVJTFNFUTog
ODQsCiBFT1ZFUkZMT1c6IDc1LAogRUNBTkNFTEVEOiAxMjUsCiBFTk9UUkVDT1ZFUkFCTEU6IDEz
MSwKIEVPV05FUkRFQUQ6IDEzMCwKIEVTVFJQSVBFOiA4Ngp9Owp2YXIgRVJSTk9fTUVTU0FHRVMg
PSB7CiAwOiAiU3VjY2VzcyIsCiAxOiAiTm90IHN1cGVyLXVzZXIiLAogMjogIk5vIHN1Y2ggZmls
ZSBvciBkaXJlY3RvcnkiLAogMzogIk5vIHN1Y2ggcHJvY2VzcyIsCiA0OiAiSW50ZXJydXB0ZWQg
c3lzdGVtIGNhbGwiLAogNTogIkkvTyBlcnJvciIsCiA2OiAiTm8gc3VjaCBkZXZpY2Ugb3IgYWRk
cmVzcyIsCiA3OiAiQXJnIGxpc3QgdG9vIGxvbmciLAogODogIkV4ZWMgZm9ybWF0IGVycm9yIiwK
IDk6ICJCYWQgZmlsZSBudW1iZXIiLAogMTA6ICJObyBjaGlsZHJlbiIsCiAxMTogIk5vIG1vcmUg
cHJvY2Vzc2VzIiwKIDEyOiAiTm90IGVub3VnaCBjb3JlIiwKIDEzOiAiUGVybWlzc2lvbiBkZW5p
ZWQiLAogMTQ6ICJCYWQgYWRkcmVzcyIsCiAxNTogIkJsb2NrIGRldmljZSByZXF1aXJlZCIsCiAx
NjogIk1vdW50IGRldmljZSBidXN5IiwKIDE3OiAiRmlsZSBleGlzdHMiLAogMTg6ICJDcm9zcy1k
ZXZpY2UgbGluayIsCiAxOTogIk5vIHN1Y2ggZGV2aWNlIiwKIDIwOiAiTm90IGEgZGlyZWN0b3J5
IiwKIDIxOiAiSXMgYSBkaXJlY3RvcnkiLAogMjI6ICJJbnZhbGlkIGFyZ3VtZW50IiwKIDIzOiAi
VG9vIG1hbnkgb3BlbiBmaWxlcyBpbiBzeXN0ZW0iLAogMjQ6ICJUb28gbWFueSBvcGVuIGZpbGVz
IiwKIDI1OiAiTm90IGEgdHlwZXdyaXRlciIsCiAyNjogIlRleHQgZmlsZSBidXN5IiwKIDI3OiAi
RmlsZSB0b28gbGFyZ2UiLAogMjg6ICJObyBzcGFjZSBsZWZ0IG9uIGRldmljZSIsCiAyOTogIkls
bGVnYWwgc2VlayIsCiAzMDogIlJlYWQgb25seSBmaWxlIHN5c3RlbSIsCiAzMTogIlRvbyBtYW55
IGxpbmtzIiwKIDMyOiAiQnJva2VuIHBpcGUiLAogMzM6ICJNYXRoIGFyZyBvdXQgb2YgZG9tYWlu
IG9mIGZ1bmMiLAogMzQ6ICJNYXRoIHJlc3VsdCBub3QgcmVwcmVzZW50YWJsZSIsCiAzNTogIkZp
bGUgbG9ja2luZyBkZWFkbG9jayBlcnJvciIsCiAzNjogIkZpbGUgb3IgcGF0aCBuYW1lIHRvbyBs
b25nIiwKIDM3OiAiTm8gcmVjb3JkIGxvY2tzIGF2YWlsYWJsZSIsCiAzODogIkZ1bmN0aW9uIG5v
dCBpbXBsZW1lbnRlZCIsCiAzOTogIkRpcmVjdG9yeSBub3QgZW1wdHkiLAogNDA6ICJUb28gbWFu
eSBzeW1ib2xpYyBsaW5rcyIsCiA0MjogIk5vIG1lc3NhZ2Ugb2YgZGVzaXJlZCB0eXBlIiwKIDQz
OiAiSWRlbnRpZmllciByZW1vdmVkIiwKIDQ0OiAiQ2hhbm5lbCBudW1iZXIgb3V0IG9mIHJhbmdl
IiwKIDQ1OiAiTGV2ZWwgMiBub3Qgc3luY2hyb25pemVkIiwKIDQ2OiAiTGV2ZWwgMyBoYWx0ZWQi
LAogNDc6ICJMZXZlbCAzIHJlc2V0IiwKIDQ4OiAiTGluayBudW1iZXIgb3V0IG9mIHJhbmdlIiwK
IDQ5OiAiUHJvdG9jb2wgZHJpdmVyIG5vdCBhdHRhY2hlZCIsCiA1MDogIk5vIENTSSBzdHJ1Y3R1
cmUgYXZhaWxhYmxlIiwKIDUxOiAiTGV2ZWwgMiBoYWx0ZWQiLAogNTI6ICJJbnZhbGlkIGV4Y2hh
bmdlIiwKIDUzOiAiSW52YWxpZCByZXF1ZXN0IGRlc2NyaXB0b3IiLAogNTQ6ICJFeGNoYW5nZSBm
dWxsIiwKIDU1OiAiTm8gYW5vZGUiLAogNTY6ICJJbnZhbGlkIHJlcXVlc3QgY29kZSIsCiA1Nzog
IkludmFsaWQgc2xvdCIsCiA1OTogIkJhZCBmb250IGZpbGUgZm10IiwKIDYwOiAiRGV2aWNlIG5v
dCBhIHN0cmVhbSIsCiA2MTogIk5vIGRhdGEgKGZvciBubyBkZWxheSBpbykiLAogNjI6ICJUaW1l
ciBleHBpcmVkIiwKIDYzOiAiT3V0IG9mIHN0cmVhbXMgcmVzb3VyY2VzIiwKIDY0OiAiTWFjaGlu
ZSBpcyBub3Qgb24gdGhlIG5ldHdvcmsiLAogNjU6ICJQYWNrYWdlIG5vdCBpbnN0YWxsZWQiLAog
NjY6ICJUaGUgb2JqZWN0IGlzIHJlbW90ZSIsCiA2NzogIlRoZSBsaW5rIGhhcyBiZWVuIHNldmVy
ZWQiLAogNjg6ICJBZHZlcnRpc2UgZXJyb3IiLAogNjk6ICJTcm1vdW50IGVycm9yIiwKIDcwOiAi
Q29tbXVuaWNhdGlvbiBlcnJvciBvbiBzZW5kIiwKIDcxOiAiUHJvdG9jb2wgZXJyb3IiLAogNzI6
ICJNdWx0aWhvcCBhdHRlbXB0ZWQiLAogNzM6ICJDcm9zcyBtb3VudCBwb2ludCAobm90IHJlYWxs
eSBlcnJvcikiLAogNzQ6ICJUcnlpbmcgdG8gcmVhZCB1bnJlYWRhYmxlIG1lc3NhZ2UiLAogNzU6
ICJWYWx1ZSB0b28gbGFyZ2UgZm9yIGRlZmluZWQgZGF0YSB0eXBlIiwKIDc2OiAiR2l2ZW4gbG9n
LiBuYW1lIG5vdCB1bmlxdWUiLAogNzc6ICJmLmQuIGludmFsaWQgZm9yIHRoaXMgb3BlcmF0aW9u
IiwKIDc4OiAiUmVtb3RlIGFkZHJlc3MgY2hhbmdlZCIsCiA3OTogIkNhbiAgIGFjY2VzcyBhIG5l
ZWRlZCBzaGFyZWQgbGliIiwKIDgwOiAiQWNjZXNzaW5nIGEgY29ycnVwdGVkIHNoYXJlZCBsaWIi
LAogODE6ICIubGliIHNlY3Rpb24gaW4gYS5vdXQgY29ycnVwdGVkIiwKIDgyOiAiQXR0ZW1wdGlu
ZyB0byBsaW5rIGluIHRvbyBtYW55IGxpYnMiLAogODM6ICJBdHRlbXB0aW5nIHRvIGV4ZWMgYSBz
aGFyZWQgbGlicmFyeSIsCiA4NDogIklsbGVnYWwgYnl0ZSBzZXF1ZW5jZSIsCiA4NjogIlN0cmVh
bXMgcGlwZSBlcnJvciIsCiA4NzogIlRvbyBtYW55IHVzZXJzIiwKIDg4OiAiU29ja2V0IG9wZXJh
dGlvbiBvbiBub24tc29ja2V0IiwKIDg5OiAiRGVzdGluYXRpb24gYWRkcmVzcyByZXF1aXJlZCIs
CiA5MDogIk1lc3NhZ2UgdG9vIGxvbmciLAogOTE6ICJQcm90b2NvbCB3cm9uZyB0eXBlIGZvciBz
b2NrZXQiLAogOTI6ICJQcm90b2NvbCBub3QgYXZhaWxhYmxlIiwKIDkzOiAiVW5rbm93biBwcm90
b2NvbCIsCiA5NDogIlNvY2tldCB0eXBlIG5vdCBzdXBwb3J0ZWQiLAogOTU6ICJOb3Qgc3VwcG9y
dGVkIiwKIDk2OiAiUHJvdG9jb2wgZmFtaWx5IG5vdCBzdXBwb3J0ZWQiLAogOTc6ICJBZGRyZXNz
IGZhbWlseSBub3Qgc3VwcG9ydGVkIGJ5IHByb3RvY29sIGZhbWlseSIsCiA5ODogIkFkZHJlc3Mg
YWxyZWFkeSBpbiB1c2UiLAogOTk6ICJBZGRyZXNzIG5vdCBhdmFpbGFibGUiLAogMTAwOiAiTmV0
d29yayBpbnRlcmZhY2UgaXMgbm90IGNvbmZpZ3VyZWQiLAogMTAxOiAiTmV0d29yayBpcyB1bnJl
YWNoYWJsZSIsCiAxMDI6ICJDb25uZWN0aW9uIHJlc2V0IGJ5IG5ldHdvcmsiLAogMTAzOiAiQ29u
bmVjdGlvbiBhYm9ydGVkIiwKIDEwNDogIkNvbm5lY3Rpb24gcmVzZXQgYnkgcGVlciIsCiAxMDU6
ICJObyBidWZmZXIgc3BhY2UgYXZhaWxhYmxlIiwKIDEwNjogIlNvY2tldCBpcyBhbHJlYWR5IGNv
bm5lY3RlZCIsCiAxMDc6ICJTb2NrZXQgaXMgbm90IGNvbm5lY3RlZCIsCiAxMDg6ICJDYW4ndCBz
ZW5kIGFmdGVyIHNvY2tldCBzaHV0ZG93biIsCiAxMDk6ICJUb28gbWFueSByZWZlcmVuY2VzIiwK
IDExMDogIkNvbm5lY3Rpb24gdGltZWQgb3V0IiwKIDExMTogIkNvbm5lY3Rpb24gcmVmdXNlZCIs
CiAxMTI6ICJIb3N0IGlzIGRvd24iLAogMTEzOiAiSG9zdCBpcyB1bnJlYWNoYWJsZSIsCiAxMTQ6
ICJTb2NrZXQgYWxyZWFkeSBjb25uZWN0ZWQiLAogMTE1OiAiQ29ubmVjdGlvbiBhbHJlYWR5IGlu
IHByb2dyZXNzIiwKIDExNjogIlN0YWxlIGZpbGUgaGFuZGxlIiwKIDEyMjogIlF1b3RhIGV4Y2Vl
ZGVkIiwKIDEyMzogIk5vIG1lZGl1bSAoaW4gdGFwZSBkcml2ZSkiLAogMTI1OiAiT3BlcmF0aW9u
IGNhbmNlbGVkIiwKIDEzMDogIlByZXZpb3VzIG93bmVyIGRpZWQiLAogMTMxOiAiU3RhdGUgbm90
IHJlY292ZXJhYmxlIgp9OwpmdW5jdGlvbiBfX19zZXRFcnJObyh2YWx1ZSkgewogaWYgKE1vZHVs
ZVsiX19fZXJybm9fbG9jYXRpb24iXSkgSEVBUDMyW01vZHVsZVsiX19fZXJybm9fbG9jYXRpb24i
XSgpID4+IDJdID0gdmFsdWU7CiByZXR1cm4gdmFsdWU7Cn0KdmFyIFBBVEggPSB7CiBzcGxpdFBh
dGg6IChmdW5jdGlvbihmaWxlbmFtZSkgewogIHZhciBzcGxpdFBhdGhSZSA9IC9eKFwvP3wpKFtc
c1xTXSo/KSgoPzpcLnsxLDJ9fFteXC9dKz98KShcLlteLlwvXSp8KSkoPzpbXC9dKikkLzsKICBy
ZXR1cm4gc3BsaXRQYXRoUmUuZXhlYyhmaWxlbmFtZSkuc2xpY2UoMSk7CiB9KSwKIG5vcm1hbGl6
ZUFycmF5OiAoZnVuY3Rpb24ocGFydHMsIGFsbG93QWJvdmVSb290KSB7CiAgdmFyIHVwID0gMDsK
ICBmb3IgKHZhciBpID0gcGFydHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHsKICAgdmFyIGxh
c3QgPSBwYXJ0c1tpXTsKICAgaWYgKGxhc3QgPT09ICIuIikgewogICAgcGFydHMuc3BsaWNlKGks
IDEpOwogICB9IGVsc2UgaWYgKGxhc3QgPT09ICIuLiIpIHsKICAgIHBhcnRzLnNwbGljZShpLCAx
KTsKICAgIHVwKys7CiAgIH0gZWxzZSBpZiAodXApIHsKICAgIHBhcnRzLnNwbGljZShpLCAxKTsK
ICAgIHVwLS07CiAgIH0KICB9CiAgaWYgKGFsbG93QWJvdmVSb290KSB7CiAgIGZvciAoOyB1cC0t
OyB1cCkgewogICAgcGFydHMudW5zaGlmdCgiLi4iKTsKICAgfQogIH0KICByZXR1cm4gcGFydHM7
CiB9KSwKIG5vcm1hbGl6ZTogKGZ1bmN0aW9uKHBhdGgpIHsKICB2YXIgaXNBYnNvbHV0ZSA9IHBh
dGguY2hhckF0KDApID09PSAiLyIsIHRyYWlsaW5nU2xhc2ggPSBwYXRoLnN1YnN0cigtMSkgPT09
ICIvIjsKICBwYXRoID0gUEFUSC5ub3JtYWxpemVBcnJheShwYXRoLnNwbGl0KCIvIikuZmlsdGVy
KChmdW5jdGlvbihwKSB7CiAgIHJldHVybiAhIXA7CiAgfSkpLCAhaXNBYnNvbHV0ZSkuam9pbigi
LyIpOwogIGlmICghcGF0aCAmJiAhaXNBYnNvbHV0ZSkgewogICBwYXRoID0gIi4iOwogIH0KICBp
ZiAocGF0aCAmJiB0cmFpbGluZ1NsYXNoKSB7CiAgIHBhdGggKz0gIi8iOwogIH0KICByZXR1cm4g
KGlzQWJzb2x1dGUgPyAiLyIgOiAiIikgKyBwYXRoOwogfSksCiBkaXJuYW1lOiAoZnVuY3Rpb24o
cGF0aCkgewogIHZhciByZXN1bHQgPSBQQVRILnNwbGl0UGF0aChwYXRoKSwgcm9vdCA9IHJlc3Vs
dFswXSwgZGlyID0gcmVzdWx0WzFdOwogIGlmICghcm9vdCAmJiAhZGlyKSB7CiAgIHJldHVybiAi
LiI7CiAgfQogIGlmIChkaXIpIHsKICAgZGlyID0gZGlyLnN1YnN0cigwLCBkaXIubGVuZ3RoIC0g
MSk7CiAgfQogIHJldHVybiByb290ICsgZGlyOwogfSksCiBiYXNlbmFtZTogKGZ1bmN0aW9uKHBh
dGgpIHsKICBpZiAocGF0aCA9PT0gIi8iKSByZXR1cm4gIi8iOwogIHZhciBsYXN0U2xhc2ggPSBw
YXRoLmxhc3RJbmRleE9mKCIvIik7CiAgaWYgKGxhc3RTbGFzaCA9PT0gLTEpIHJldHVybiBwYXRo
OwogIHJldHVybiBwYXRoLnN1YnN0cihsYXN0U2xhc2ggKyAxKTsKIH0pLAogZXh0bmFtZTogKGZ1
bmN0aW9uKHBhdGgpIHsKICByZXR1cm4gUEFUSC5zcGxpdFBhdGgocGF0aClbM107CiB9KSwKIGpv
aW46IChmdW5jdGlvbigpIHsKICB2YXIgcGF0aHMgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2Fs
bChhcmd1bWVudHMsIDApOwogIHJldHVybiBQQVRILm5vcm1hbGl6ZShwYXRocy5qb2luKCIvIikp
OwogfSksCiBqb2luMjogKGZ1bmN0aW9uKGwsIHIpIHsKICByZXR1cm4gUEFUSC5ub3JtYWxpemUo
bCArICIvIiArIHIpOwogfSksCiByZXNvbHZlOiAoZnVuY3Rpb24oKSB7CiAgdmFyIHJlc29sdmVk
UGF0aCA9ICIiLCByZXNvbHZlZEFic29sdXRlID0gZmFsc2U7CiAgZm9yICh2YXIgaSA9IGFyZ3Vt
ZW50cy5sZW5ndGggLSAxOyBpID49IC0xICYmICFyZXNvbHZlZEFic29sdXRlOyBpLS0pIHsKICAg
dmFyIHBhdGggPSBpID49IDAgPyBhcmd1bWVudHNbaV0gOiBGUy5jd2QoKTsKICAgaWYgKHR5cGVv
ZiBwYXRoICE9PSAic3RyaW5nIikgewogICAgdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnRz
IHRvIHBhdGgucmVzb2x2ZSBtdXN0IGJlIHN0cmluZ3MiKTsKICAgfSBlbHNlIGlmICghcGF0aCkg
ewogICAgcmV0dXJuICIiOwogICB9CiAgIHJlc29sdmVkUGF0aCA9IHBhdGggKyAiLyIgKyByZXNv
bHZlZFBhdGg7CiAgIHJlc29sdmVkQWJzb2x1dGUgPSBwYXRoLmNoYXJBdCgwKSA9PT0gIi8iOwog
IH0KICByZXNvbHZlZFBhdGggPSBQQVRILm5vcm1hbGl6ZUFycmF5KHJlc29sdmVkUGF0aC5zcGxp
dCgiLyIpLmZpbHRlcigoZnVuY3Rpb24ocCkgewogICByZXR1cm4gISFwOwogIH0pKSwgIXJlc29s
dmVkQWJzb2x1dGUpLmpvaW4oIi8iKTsKICByZXR1cm4gKHJlc29sdmVkQWJzb2x1dGUgPyAiLyIg
OiAiIikgKyByZXNvbHZlZFBhdGggfHwgIi4iOwogfSksCiByZWxhdGl2ZTogKGZ1bmN0aW9uKGZy
b20sIHRvKSB7CiAgZnJvbSA9IFBBVEgucmVzb2x2ZShmcm9tKS5zdWJzdHIoMSk7CiAgdG8gPSBQ
QVRILnJlc29sdmUodG8pLnN1YnN0cigxKTsKICBmdW5jdGlvbiB0cmltKGFycikgewogICB2YXIg
c3RhcnQgPSAwOwogICBmb3IgKDsgc3RhcnQgPCBhcnIubGVuZ3RoOyBzdGFydCsrKSB7CiAgICBp
ZiAoYXJyW3N0YXJ0XSAhPT0gIiIpIGJyZWFrOwogICB9CiAgIHZhciBlbmQgPSBhcnIubGVuZ3Ro
IC0gMTsKICAgZm9yICg7IGVuZCA+PSAwOyBlbmQtLSkgewogICAgaWYgKGFycltlbmRdICE9PSAi
IikgYnJlYWs7CiAgIH0KICAgaWYgKHN0YXJ0ID4gZW5kKSByZXR1cm4gW107CiAgIHJldHVybiBh
cnIuc2xpY2Uoc3RhcnQsIGVuZCAtIHN0YXJ0ICsgMSk7CiAgfQogIHZhciBmcm9tUGFydHMgPSB0
cmltKGZyb20uc3BsaXQoIi8iKSk7CiAgdmFyIHRvUGFydHMgPSB0cmltKHRvLnNwbGl0KCIvIikp
OwogIHZhciBsZW5ndGggPSBNYXRoLm1pbihmcm9tUGFydHMubGVuZ3RoLCB0b1BhcnRzLmxlbmd0
aCk7CiAgdmFyIHNhbWVQYXJ0c0xlbmd0aCA9IGxlbmd0aDsKICBmb3IgKHZhciBpID0gMDsgaSA8
IGxlbmd0aDsgaSsrKSB7CiAgIGlmIChmcm9tUGFydHNbaV0gIT09IHRvUGFydHNbaV0pIHsKICAg
IHNhbWVQYXJ0c0xlbmd0aCA9IGk7CiAgICBicmVhazsKICAgfQogIH0KICB2YXIgb3V0cHV0UGFy
dHMgPSBbXTsKICBmb3IgKHZhciBpID0gc2FtZVBhcnRzTGVuZ3RoOyBpIDwgZnJvbVBhcnRzLmxl
bmd0aDsgaSsrKSB7CiAgIG91dHB1dFBhcnRzLnB1c2goIi4uIik7CiAgfQogIG91dHB1dFBhcnRz
ID0gb3V0cHV0UGFydHMuY29uY2F0KHRvUGFydHMuc2xpY2Uoc2FtZVBhcnRzTGVuZ3RoKSk7CiAg
cmV0dXJuIG91dHB1dFBhcnRzLmpvaW4oIi8iKTsKIH0pCn07CnZhciBUVFkgPSB7CiB0dHlzOiBb
XSwKIGluaXQ6IChmdW5jdGlvbigpIHt9KSwKIHNodXRkb3duOiAoZnVuY3Rpb24oKSB7fSksCiBy
ZWdpc3RlcjogKGZ1bmN0aW9uKGRldiwgb3BzKSB7CiAgVFRZLnR0eXNbZGV2XSA9IHsKICAgaW5w
dXQ6IFtdLAogICBvdXRwdXQ6IFtdLAogICBvcHM6IG9wcwogIH07CiAgRlMucmVnaXN0ZXJEZXZp
Y2UoZGV2LCBUVFkuc3RyZWFtX29wcyk7CiB9KSwKIHN0cmVhbV9vcHM6IHsKICBvcGVuOiAoZnVu
Y3Rpb24oc3RyZWFtKSB7CiAgIHZhciB0dHkgPSBUVFkudHR5c1tzdHJlYW0ubm9kZS5yZGV2XTsK
ICAgaWYgKCF0dHkpIHsKICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVO
T0RFVik7CiAgIH0KICAgc3RyZWFtLnR0eSA9IHR0eTsKICAgc3RyZWFtLnNlZWthYmxlID0gZmFs
c2U7CiAgfSksCiAgY2xvc2U6IChmdW5jdGlvbihzdHJlYW0pIHsKICAgc3RyZWFtLnR0eS5vcHMu
Zmx1c2goc3RyZWFtLnR0eSk7CiAgfSksCiAgZmx1c2g6IChmdW5jdGlvbihzdHJlYW0pIHsKICAg
c3RyZWFtLnR0eS5vcHMuZmx1c2goc3RyZWFtLnR0eSk7CiAgfSksCiAgcmVhZDogKGZ1bmN0aW9u
KHN0cmVhbSwgYnVmZmVyLCBvZmZzZXQsIGxlbmd0aCwgcG9zKSB7CiAgIGlmICghc3RyZWFtLnR0
eSB8fCAhc3RyZWFtLnR0eS5vcHMuZ2V0X2NoYXIpIHsKICAgIHRocm93IG5ldyBGUy5FcnJub0Vy
cm9yKEVSUk5PX0NPREVTLkVOWElPKTsKICAgfQogICB2YXIgYnl0ZXNSZWFkID0gMDsKICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewogICAgdmFyIHJlc3VsdDsKICAgIHRyeSB7
CiAgICAgcmVzdWx0ID0gc3RyZWFtLnR0eS5vcHMuZ2V0X2NoYXIoc3RyZWFtLnR0eSk7CiAgICB9
IGNhdGNoIChlKSB7CiAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUlP
KTsKICAgIH0KICAgIGlmIChyZXN1bHQgPT09IHVuZGVmaW5lZCAmJiBieXRlc1JlYWQgPT09IDAp
IHsKICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FQUdBSU4pOwogICAg
fQogICAgaWYgKHJlc3VsdCA9PT0gbnVsbCB8fCByZXN1bHQgPT09IHVuZGVmaW5lZCkgYnJlYWs7
CiAgICBieXRlc1JlYWQrKzsKICAgIGJ1ZmZlcltvZmZzZXQgKyBpXSA9IHJlc3VsdDsKICAgfQog
ICBpZiAoYnl0ZXNSZWFkKSB7CiAgICBzdHJlYW0ubm9kZS50aW1lc3RhbXAgPSBEYXRlLm5vdygp
OwogICB9CiAgIHJldHVybiBieXRlc1JlYWQ7CiAgfSksCiAgd3JpdGU6IChmdW5jdGlvbihzdHJl
YW0sIGJ1ZmZlciwgb2Zmc2V0LCBsZW5ndGgsIHBvcykgewogICBpZiAoIXN0cmVhbS50dHkgfHwg
IXN0cmVhbS50dHkub3BzLnB1dF9jaGFyKSB7CiAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihF
UlJOT19DT0RFUy5FTlhJTyk7CiAgIH0KICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkr
KykgewogICAgdHJ5IHsKICAgICBzdHJlYW0udHR5Lm9wcy5wdXRfY2hhcihzdHJlYW0udHR5LCBi
dWZmZXJbb2Zmc2V0ICsgaV0pOwogICAgfSBjYXRjaCAoZSkgewogICAgIHRocm93IG5ldyBGUy5F
cnJub0Vycm9yKEVSUk5PX0NPREVTLkVJTyk7CiAgICB9CiAgIH0KICAgaWYgKGxlbmd0aCkgewog
ICAgc3RyZWFtLm5vZGUudGltZXN0YW1wID0gRGF0ZS5ub3coKTsKICAgfQogICByZXR1cm4gaTsK
ICB9KQogfSwKIGRlZmF1bHRfdHR5X29wczogewogIGdldF9jaGFyOiAoZnVuY3Rpb24odHR5KSB7
CiAgIGlmICghdHR5LmlucHV0Lmxlbmd0aCkgewogICAgdmFyIHJlc3VsdCA9IG51bGw7CiAgICBp
ZiAoRU5WSVJPTk1FTlRfSVNfTk9ERSkgewogICAgIHZhciBCVUZTSVpFID0gMjU2OwogICAgIHZh
ciBidWYgPSBuZXcgQnVmZmVyKEJVRlNJWkUpOwogICAgIHZhciBieXRlc1JlYWQgPSAwOwogICAg
IHZhciBmZCA9IHByb2Nlc3Muc3RkaW4uZmQ7CiAgICAgdmFyIHVzaW5nRGV2aWNlID0gZmFsc2U7
CiAgICAgdHJ5IHsKICAgICAgZmQgPSBmcy5vcGVuU3luYygiL2Rldi9zdGRpbiIsICJyIik7CiAg
ICAgIHVzaW5nRGV2aWNlID0gdHJ1ZTsKICAgICB9IGNhdGNoIChlKSB7fQogICAgIGJ5dGVzUmVh
ZCA9IGZzLnJlYWRTeW5jKGZkLCBidWYsIDAsIEJVRlNJWkUsIG51bGwpOwogICAgIGlmICh1c2lu
Z0RldmljZSkgewogICAgICBmcy5jbG9zZVN5bmMoZmQpOwogICAgIH0KICAgICBpZiAoYnl0ZXNS
ZWFkID4gMCkgewogICAgICByZXN1bHQgPSBidWYuc2xpY2UoMCwgYnl0ZXNSZWFkKS50b1N0cmlu
ZygidXRmLTgiKTsKICAgICB9IGVsc2UgewogICAgICByZXN1bHQgPSBudWxsOwogICAgIH0KICAg
IH0gZWxzZSBpZiAodHlwZW9mIHdpbmRvdyAhPSAidW5kZWZpbmVkIiAmJiB0eXBlb2Ygd2luZG93
LnByb21wdCA9PSAiZnVuY3Rpb24iKSB7CiAgICAgcmVzdWx0ID0gd2luZG93LnByb21wdCgiSW5w
dXQ6ICIpOwogICAgIGlmIChyZXN1bHQgIT09IG51bGwpIHsKICAgICAgcmVzdWx0ICs9ICJcbiI7
CiAgICAgfQogICAgfSBlbHNlIGlmICh0eXBlb2YgcmVhZGxpbmUgPT0gImZ1bmN0aW9uIikgewog
ICAgIHJlc3VsdCA9IHJlYWRsaW5lKCk7CiAgICAgaWYgKHJlc3VsdCAhPT0gbnVsbCkgewogICAg
ICByZXN1bHQgKz0gIlxuIjsKICAgICB9CiAgICB9CiAgICBpZiAoIXJlc3VsdCkgewogICAgIHJl
dHVybiBudWxsOwogICAgfQogICAgdHR5LmlucHV0ID0gaW50QXJyYXlGcm9tU3RyaW5nKHJlc3Vs
dCwgdHJ1ZSk7CiAgIH0KICAgcmV0dXJuIHR0eS5pbnB1dC5zaGlmdCgpOwogIH0pLAogIHB1dF9j
aGFyOiAoZnVuY3Rpb24odHR5LCB2YWwpIHsKICAgaWYgKHZhbCA9PT0gbnVsbCB8fCB2YWwgPT09
IDEwKSB7CiAgICBNb2R1bGVbInByaW50Il0oVVRGOEFycmF5VG9TdHJpbmcodHR5Lm91dHB1dCwg
MCkpOwogICAgdHR5Lm91dHB1dCA9IFtdOwogICB9IGVsc2UgewogICAgaWYgKHZhbCAhPSAwKSB0
dHkub3V0cHV0LnB1c2godmFsKTsKICAgfQogIH0pLAogIGZsdXNoOiAoZnVuY3Rpb24odHR5KSB7
CiAgIGlmICh0dHkub3V0cHV0ICYmIHR0eS5vdXRwdXQubGVuZ3RoID4gMCkgewogICAgTW9kdWxl
WyJwcmludCJdKFVURjhBcnJheVRvU3RyaW5nKHR0eS5vdXRwdXQsIDApKTsKICAgIHR0eS5vdXRw
dXQgPSBbXTsKICAgfQogIH0pCiB9LAogZGVmYXVsdF90dHkxX29wczogewogIHB1dF9jaGFyOiAo
ZnVuY3Rpb24odHR5LCB2YWwpIHsKICAgaWYgKHZhbCA9PT0gbnVsbCB8fCB2YWwgPT09IDEwKSB7
CiAgICBNb2R1bGVbInByaW50RXJyIl0oVVRGOEFycmF5VG9TdHJpbmcodHR5Lm91dHB1dCwgMCkp
OwogICAgdHR5Lm91dHB1dCA9IFtdOwogICB9IGVsc2UgewogICAgaWYgKHZhbCAhPSAwKSB0dHku
b3V0cHV0LnB1c2godmFsKTsKICAgfQogIH0pLAogIGZsdXNoOiAoZnVuY3Rpb24odHR5KSB7CiAg
IGlmICh0dHkub3V0cHV0ICYmIHR0eS5vdXRwdXQubGVuZ3RoID4gMCkgewogICAgTW9kdWxlWyJw
cmludEVyciJdKFVURjhBcnJheVRvU3RyaW5nKHR0eS5vdXRwdXQsIDApKTsKICAgIHR0eS5vdXRw
dXQgPSBbXTsKICAgfQogIH0pCiB9Cn07CnZhciBNRU1GUyA9IHsKIG9wc190YWJsZTogbnVsbCwK
IG1vdW50OiAoZnVuY3Rpb24obW91bnQpIHsKICByZXR1cm4gTUVNRlMuY3JlYXRlTm9kZShudWxs
LCAiLyIsIDE2Mzg0IHwgNTExLCAwKTsKIH0pLAogY3JlYXRlTm9kZTogKGZ1bmN0aW9uKHBhcmVu
dCwgbmFtZSwgbW9kZSwgZGV2KSB7CiAgaWYgKEZTLmlzQmxrZGV2KG1vZGUpIHx8IEZTLmlzRklG
Tyhtb2RlKSkgewogICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FUEVSTSk7
CiAgfQogIGlmICghTUVNRlMub3BzX3RhYmxlKSB7CiAgIE1FTUZTLm9wc190YWJsZSA9IHsKICAg
IGRpcjogewogICAgIG5vZGU6IHsKICAgICAgZ2V0YXR0cjogTUVNRlMubm9kZV9vcHMuZ2V0YXR0
ciwKICAgICAgc2V0YXR0cjogTUVNRlMubm9kZV9vcHMuc2V0YXR0ciwKICAgICAgbG9va3VwOiBN
RU1GUy5ub2RlX29wcy5sb29rdXAsCiAgICAgIG1rbm9kOiBNRU1GUy5ub2RlX29wcy5ta25vZCwK
ICAgICAgcmVuYW1lOiBNRU1GUy5ub2RlX29wcy5yZW5hbWUsCiAgICAgIHVubGluazogTUVNRlMu
bm9kZV9vcHMudW5saW5rLAogICAgICBybWRpcjogTUVNRlMubm9kZV9vcHMucm1kaXIsCiAgICAg
IHJlYWRkaXI6IE1FTUZTLm5vZGVfb3BzLnJlYWRkaXIsCiAgICAgIHN5bWxpbms6IE1FTUZTLm5v
ZGVfb3BzLnN5bWxpbmsKICAgICB9LAogICAgIHN0cmVhbTogewogICAgICBsbHNlZWs6IE1FTUZT
LnN0cmVhbV9vcHMubGxzZWVrCiAgICAgfQogICAgfSwKICAgIGZpbGU6IHsKICAgICBub2RlOiB7
CiAgICAgIGdldGF0dHI6IE1FTUZTLm5vZGVfb3BzLmdldGF0dHIsCiAgICAgIHNldGF0dHI6IE1F
TUZTLm5vZGVfb3BzLnNldGF0dHIKICAgICB9LAogICAgIHN0cmVhbTogewogICAgICBsbHNlZWs6
IE1FTUZTLnN0cmVhbV9vcHMubGxzZWVrLAogICAgICByZWFkOiBNRU1GUy5zdHJlYW1fb3BzLnJl
YWQsCiAgICAgIHdyaXRlOiBNRU1GUy5zdHJlYW1fb3BzLndyaXRlLAogICAgICBhbGxvY2F0ZTog
TUVNRlMuc3RyZWFtX29wcy5hbGxvY2F0ZSwKICAgICAgbW1hcDogTUVNRlMuc3RyZWFtX29wcy5t
bWFwLAogICAgICBtc3luYzogTUVNRlMuc3RyZWFtX29wcy5tc3luYwogICAgIH0KICAgIH0sCiAg
ICBsaW5rOiB7CiAgICAgbm9kZTogewogICAgICBnZXRhdHRyOiBNRU1GUy5ub2RlX29wcy5nZXRh
dHRyLAogICAgICBzZXRhdHRyOiBNRU1GUy5ub2RlX29wcy5zZXRhdHRyLAogICAgICByZWFkbGlu
azogTUVNRlMubm9kZV9vcHMucmVhZGxpbmsKICAgICB9LAogICAgIHN0cmVhbToge30KICAgIH0s
CiAgICBjaHJkZXY6IHsKICAgICBub2RlOiB7CiAgICAgIGdldGF0dHI6IE1FTUZTLm5vZGVfb3Bz
LmdldGF0dHIsCiAgICAgIHNldGF0dHI6IE1FTUZTLm5vZGVfb3BzLnNldGF0dHIKICAgICB9LAog
ICAgIHN0cmVhbTogRlMuY2hyZGV2X3N0cmVhbV9vcHMKICAgIH0KICAgfTsKICB9CiAgdmFyIG5v
ZGUgPSBGUy5jcmVhdGVOb2RlKHBhcmVudCwgbmFtZSwgbW9kZSwgZGV2KTsKICBpZiAoRlMuaXNE
aXIobm9kZS5tb2RlKSkgewogICBub2RlLm5vZGVfb3BzID0gTUVNRlMub3BzX3RhYmxlLmRpci5u
b2RlOwogICBub2RlLnN0cmVhbV9vcHMgPSBNRU1GUy5vcHNfdGFibGUuZGlyLnN0cmVhbTsKICAg
bm9kZS5jb250ZW50cyA9IHt9OwogIH0gZWxzZSBpZiAoRlMuaXNGaWxlKG5vZGUubW9kZSkpIHsK
ICAgbm9kZS5ub2RlX29wcyA9IE1FTUZTLm9wc190YWJsZS5maWxlLm5vZGU7CiAgIG5vZGUuc3Ry
ZWFtX29wcyA9IE1FTUZTLm9wc190YWJsZS5maWxlLnN0cmVhbTsKICAgbm9kZS51c2VkQnl0ZXMg
PSAwOwogICBub2RlLmNvbnRlbnRzID0gbnVsbDsKICB9IGVsc2UgaWYgKEZTLmlzTGluayhub2Rl
Lm1vZGUpKSB7CiAgIG5vZGUubm9kZV9vcHMgPSBNRU1GUy5vcHNfdGFibGUubGluay5ub2RlOwog
ICBub2RlLnN0cmVhbV9vcHMgPSBNRU1GUy5vcHNfdGFibGUubGluay5zdHJlYW07CiAgfSBlbHNl
IGlmIChGUy5pc0NocmRldihub2RlLm1vZGUpKSB7CiAgIG5vZGUubm9kZV9vcHMgPSBNRU1GUy5v
cHNfdGFibGUuY2hyZGV2Lm5vZGU7CiAgIG5vZGUuc3RyZWFtX29wcyA9IE1FTUZTLm9wc190YWJs
ZS5jaHJkZXYuc3RyZWFtOwogIH0KICBub2RlLnRpbWVzdGFtcCA9IERhdGUubm93KCk7CiAgaWYg
KHBhcmVudCkgewogICBwYXJlbnQuY29udGVudHNbbmFtZV0gPSBub2RlOwogIH0KICByZXR1cm4g
bm9kZTsKIH0pLAogZ2V0RmlsZURhdGFBc1JlZ3VsYXJBcnJheTogKGZ1bmN0aW9uKG5vZGUpIHsK
ICBpZiAobm9kZS5jb250ZW50cyAmJiBub2RlLmNvbnRlbnRzLnN1YmFycmF5KSB7CiAgIHZhciBh
cnIgPSBbXTsKICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2RlLnVzZWRCeXRlczsgKytpKSBhcnIu
cHVzaChub2RlLmNvbnRlbnRzW2ldKTsKICAgcmV0dXJuIGFycjsKICB9CiAgcmV0dXJuIG5vZGUu
Y29udGVudHM7CiB9KSwKIGdldEZpbGVEYXRhQXNUeXBlZEFycmF5OiAoZnVuY3Rpb24obm9kZSkg
ewogIGlmICghbm9kZS5jb250ZW50cykgcmV0dXJuIG5ldyBVaW50OEFycmF5OwogIGlmIChub2Rl
LmNvbnRlbnRzLnN1YmFycmF5KSByZXR1cm4gbm9kZS5jb250ZW50cy5zdWJhcnJheSgwLCBub2Rl
LnVzZWRCeXRlcyk7CiAgcmV0dXJuIG5ldyBVaW50OEFycmF5KG5vZGUuY29udGVudHMpOwogfSks
CiBleHBhbmRGaWxlU3RvcmFnZTogKGZ1bmN0aW9uKG5vZGUsIG5ld0NhcGFjaXR5KSB7CiAgaWYg
KG5vZGUuY29udGVudHMgJiYgbm9kZS5jb250ZW50cy5zdWJhcnJheSAmJiBuZXdDYXBhY2l0eSA+
IG5vZGUuY29udGVudHMubGVuZ3RoKSB7CiAgIG5vZGUuY29udGVudHMgPSBNRU1GUy5nZXRGaWxl
RGF0YUFzUmVndWxhckFycmF5KG5vZGUpOwogICBub2RlLnVzZWRCeXRlcyA9IG5vZGUuY29udGVu
dHMubGVuZ3RoOwogIH0KICBpZiAoIW5vZGUuY29udGVudHMgfHwgbm9kZS5jb250ZW50cy5zdWJh
cnJheSkgewogICB2YXIgcHJldkNhcGFjaXR5ID0gbm9kZS5jb250ZW50cyA/IG5vZGUuY29udGVu
dHMuYnVmZmVyLmJ5dGVMZW5ndGggOiAwOwogICBpZiAocHJldkNhcGFjaXR5ID49IG5ld0NhcGFj
aXR5KSByZXR1cm47CiAgIHZhciBDQVBBQ0lUWV9ET1VCTElOR19NQVggPSAxMDI0ICogMTAyNDsK
ICAgbmV3Q2FwYWNpdHkgPSBNYXRoLm1heChuZXdDYXBhY2l0eSwgcHJldkNhcGFjaXR5ICogKHBy
ZXZDYXBhY2l0eSA8IENBUEFDSVRZX0RPVUJMSU5HX01BWCA/IDIgOiAxLjEyNSkgfCAwKTsKICAg
aWYgKHByZXZDYXBhY2l0eSAhPSAwKSBuZXdDYXBhY2l0eSA9IE1hdGgubWF4KG5ld0NhcGFjaXR5
LCAyNTYpOwogICB2YXIgb2xkQ29udGVudHMgPSBub2RlLmNvbnRlbnRzOwogICBub2RlLmNvbnRl
bnRzID0gbmV3IFVpbnQ4QXJyYXkobmV3Q2FwYWNpdHkpOwogICBpZiAobm9kZS51c2VkQnl0ZXMg
PiAwKSBub2RlLmNvbnRlbnRzLnNldChvbGRDb250ZW50cy5zdWJhcnJheSgwLCBub2RlLnVzZWRC
eXRlcyksIDApOwogICByZXR1cm47CiAgfQogIGlmICghbm9kZS5jb250ZW50cyAmJiBuZXdDYXBh
Y2l0eSA+IDApIG5vZGUuY29udGVudHMgPSBbXTsKICB3aGlsZSAobm9kZS5jb250ZW50cy5sZW5n
dGggPCBuZXdDYXBhY2l0eSkgbm9kZS5jb250ZW50cy5wdXNoKDApOwogfSksCiByZXNpemVGaWxl
U3RvcmFnZTogKGZ1bmN0aW9uKG5vZGUsIG5ld1NpemUpIHsKICBpZiAobm9kZS51c2VkQnl0ZXMg
PT0gbmV3U2l6ZSkgcmV0dXJuOwogIGlmIChuZXdTaXplID09IDApIHsKICAgbm9kZS5jb250ZW50
cyA9IG51bGw7CiAgIG5vZGUudXNlZEJ5dGVzID0gMDsKICAgcmV0dXJuOwogIH0KICBpZiAoIW5v
ZGUuY29udGVudHMgfHwgbm9kZS5jb250ZW50cy5zdWJhcnJheSkgewogICB2YXIgb2xkQ29udGVu
dHMgPSBub2RlLmNvbnRlbnRzOwogICBub2RlLmNvbnRlbnRzID0gbmV3IFVpbnQ4QXJyYXkobmV3
IEFycmF5QnVmZmVyKG5ld1NpemUpKTsKICAgaWYgKG9sZENvbnRlbnRzKSB7CiAgICBub2RlLmNv
bnRlbnRzLnNldChvbGRDb250ZW50cy5zdWJhcnJheSgwLCBNYXRoLm1pbihuZXdTaXplLCBub2Rl
LnVzZWRCeXRlcykpKTsKICAgfQogICBub2RlLnVzZWRCeXRlcyA9IG5ld1NpemU7CiAgIHJldHVy
bjsKICB9CiAgaWYgKCFub2RlLmNvbnRlbnRzKSBub2RlLmNvbnRlbnRzID0gW107CiAgaWYgKG5v
ZGUuY29udGVudHMubGVuZ3RoID4gbmV3U2l6ZSkgbm9kZS5jb250ZW50cy5sZW5ndGggPSBuZXdT
aXplOyBlbHNlIHdoaWxlIChub2RlLmNvbnRlbnRzLmxlbmd0aCA8IG5ld1NpemUpIG5vZGUuY29u
dGVudHMucHVzaCgwKTsKICBub2RlLnVzZWRCeXRlcyA9IG5ld1NpemU7CiB9KSwKIG5vZGVfb3Bz
OiB7CiAgZ2V0YXR0cjogKGZ1bmN0aW9uKG5vZGUpIHsKICAgdmFyIGF0dHIgPSB7fTsKICAgYXR0
ci5kZXYgPSBGUy5pc0NocmRldihub2RlLm1vZGUpID8gbm9kZS5pZCA6IDE7CiAgIGF0dHIuaW5v
ID0gbm9kZS5pZDsKICAgYXR0ci5tb2RlID0gbm9kZS5tb2RlOwogICBhdHRyLm5saW5rID0gMTsK
ICAgYXR0ci51aWQgPSAwOwogICBhdHRyLmdpZCA9IDA7CiAgIGF0dHIucmRldiA9IG5vZGUucmRl
djsKICAgaWYgKEZTLmlzRGlyKG5vZGUubW9kZSkpIHsKICAgIGF0dHIuc2l6ZSA9IDQwOTY7CiAg
IH0gZWxzZSBpZiAoRlMuaXNGaWxlKG5vZGUubW9kZSkpIHsKICAgIGF0dHIuc2l6ZSA9IG5vZGUu
dXNlZEJ5dGVzOwogICB9IGVsc2UgaWYgKEZTLmlzTGluayhub2RlLm1vZGUpKSB7CiAgICBhdHRy
LnNpemUgPSBub2RlLmxpbmsubGVuZ3RoOwogICB9IGVsc2UgewogICAgYXR0ci5zaXplID0gMDsK
ICAgfQogICBhdHRyLmF0aW1lID0gbmV3IERhdGUobm9kZS50aW1lc3RhbXApOwogICBhdHRyLm10
aW1lID0gbmV3IERhdGUobm9kZS50aW1lc3RhbXApOwogICBhdHRyLmN0aW1lID0gbmV3IERhdGUo
bm9kZS50aW1lc3RhbXApOwogICBhdHRyLmJsa3NpemUgPSA0MDk2OwogICBhdHRyLmJsb2NrcyA9
IE1hdGguY2VpbChhdHRyLnNpemUgLyBhdHRyLmJsa3NpemUpOwogICByZXR1cm4gYXR0cjsKICB9
KSwKICBzZXRhdHRyOiAoZnVuY3Rpb24obm9kZSwgYXR0cikgewogICBpZiAoYXR0ci5tb2RlICE9
PSB1bmRlZmluZWQpIHsKICAgIG5vZGUubW9kZSA9IGF0dHIubW9kZTsKICAgfQogICBpZiAoYXR0
ci50aW1lc3RhbXAgIT09IHVuZGVmaW5lZCkgewogICAgbm9kZS50aW1lc3RhbXAgPSBhdHRyLnRp
bWVzdGFtcDsKICAgfQogICBpZiAoYXR0ci5zaXplICE9PSB1bmRlZmluZWQpIHsKICAgIE1FTUZT
LnJlc2l6ZUZpbGVTdG9yYWdlKG5vZGUsIGF0dHIuc2l6ZSk7CiAgIH0KICB9KSwKICBsb29rdXA6
IChmdW5jdGlvbihwYXJlbnQsIG5hbWUpIHsKICAgdGhyb3cgRlMuZ2VuZXJpY0Vycm9yc1tFUlJO
T19DT0RFUy5FTk9FTlRdOwogIH0pLAogIG1rbm9kOiAoZnVuY3Rpb24ocGFyZW50LCBuYW1lLCBt
b2RlLCBkZXYpIHsKICAgcmV0dXJuIE1FTUZTLmNyZWF0ZU5vZGUocGFyZW50LCBuYW1lLCBtb2Rl
LCBkZXYpOwogIH0pLAogIHJlbmFtZTogKGZ1bmN0aW9uKG9sZF9ub2RlLCBuZXdfZGlyLCBuZXdf
bmFtZSkgewogICBpZiAoRlMuaXNEaXIob2xkX25vZGUubW9kZSkpIHsKICAgIHZhciBuZXdfbm9k
ZTsKICAgIHRyeSB7CiAgICAgbmV3X25vZGUgPSBGUy5sb29rdXBOb2RlKG5ld19kaXIsIG5ld19u
YW1lKTsKICAgIH0gY2F0Y2ggKGUpIHt9CiAgICBpZiAobmV3X25vZGUpIHsKICAgICBmb3IgKHZh
ciBpIGluIG5ld19ub2RlLmNvbnRlbnRzKSB7CiAgICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9y
KEVSUk5PX0NPREVTLkVOT1RFTVBUWSk7CiAgICAgfQogICAgfQogICB9CiAgIGRlbGV0ZSBvbGRf
bm9kZS5wYXJlbnQuY29udGVudHNbb2xkX25vZGUubmFtZV07CiAgIG9sZF9ub2RlLm5hbWUgPSBu
ZXdfbmFtZTsKICAgbmV3X2Rpci5jb250ZW50c1tuZXdfbmFtZV0gPSBvbGRfbm9kZTsKICAgb2xk
X25vZGUucGFyZW50ID0gbmV3X2RpcjsKICB9KSwKICB1bmxpbms6IChmdW5jdGlvbihwYXJlbnQs
IG5hbWUpIHsKICAgZGVsZXRlIHBhcmVudC5jb250ZW50c1tuYW1lXTsKICB9KSwKICBybWRpcjog
KGZ1bmN0aW9uKHBhcmVudCwgbmFtZSkgewogICB2YXIgbm9kZSA9IEZTLmxvb2t1cE5vZGUocGFy
ZW50LCBuYW1lKTsKICAgZm9yICh2YXIgaSBpbiBub2RlLmNvbnRlbnRzKSB7CiAgICB0aHJvdyBu
ZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FTk9URU1QVFkpOwogICB9CiAgIGRlbGV0ZSBw
YXJlbnQuY29udGVudHNbbmFtZV07CiAgfSksCiAgcmVhZGRpcjogKGZ1bmN0aW9uKG5vZGUpIHsK
ICAgdmFyIGVudHJpZXMgPSBbICIuIiwgIi4uIiBdOwogICBmb3IgKHZhciBrZXkgaW4gbm9kZS5j
b250ZW50cykgewogICAgaWYgKCFub2RlLmNvbnRlbnRzLmhhc093blByb3BlcnR5KGtleSkpIHsK
ICAgICBjb250aW51ZTsKICAgIH0KICAgIGVudHJpZXMucHVzaChrZXkpOwogICB9CiAgIHJldHVy
biBlbnRyaWVzOwogIH0pLAogIHN5bWxpbms6IChmdW5jdGlvbihwYXJlbnQsIG5ld25hbWUsIG9s
ZHBhdGgpIHsKICAgdmFyIG5vZGUgPSBNRU1GUy5jcmVhdGVOb2RlKHBhcmVudCwgbmV3bmFtZSwg
NTExIHwgNDA5NjAsIDApOwogICBub2RlLmxpbmsgPSBvbGRwYXRoOwogICByZXR1cm4gbm9kZTsK
ICB9KSwKICByZWFkbGluazogKGZ1bmN0aW9uKG5vZGUpIHsKICAgaWYgKCFGUy5pc0xpbmsobm9k
ZS5tb2RlKSkgewogICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUlOVkFM
KTsKICAgfQogICByZXR1cm4gbm9kZS5saW5rOwogIH0pCiB9LAogc3RyZWFtX29wczogewogIHJl
YWQ6IChmdW5jdGlvbihzdHJlYW0sIGJ1ZmZlciwgb2Zmc2V0LCBsZW5ndGgsIHBvc2l0aW9uKSB7
CiAgIHZhciBjb250ZW50cyA9IHN0cmVhbS5ub2RlLmNvbnRlbnRzOwogICBpZiAocG9zaXRpb24g
Pj0gc3RyZWFtLm5vZGUudXNlZEJ5dGVzKSByZXR1cm4gMDsKICAgdmFyIHNpemUgPSBNYXRoLm1p
bihzdHJlYW0ubm9kZS51c2VkQnl0ZXMgLSBwb3NpdGlvbiwgbGVuZ3RoKTsKICAgYXNzZXJ0KHNp
emUgPj0gMCk7CiAgIGlmIChzaXplID4gOCAmJiBjb250ZW50cy5zdWJhcnJheSkgewogICAgYnVm
ZmVyLnNldChjb250ZW50cy5zdWJhcnJheShwb3NpdGlvbiwgcG9zaXRpb24gKyBzaXplKSwgb2Zm
c2V0KTsKICAgfSBlbHNlIHsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSBidWZm
ZXJbb2Zmc2V0ICsgaV0gPSBjb250ZW50c1twb3NpdGlvbiArIGldOwogICB9CiAgIHJldHVybiBz
aXplOwogIH0pLAogIHdyaXRlOiAoZnVuY3Rpb24oc3RyZWFtLCBidWZmZXIsIG9mZnNldCwgbGVu
Z3RoLCBwb3NpdGlvbiwgY2FuT3duKSB7CiAgIGlmICghbGVuZ3RoKSByZXR1cm4gMDsKICAgdmFy
IG5vZGUgPSBzdHJlYW0ubm9kZTsKICAgbm9kZS50aW1lc3RhbXAgPSBEYXRlLm5vdygpOwogICBp
ZiAoYnVmZmVyLnN1YmFycmF5ICYmICghbm9kZS5jb250ZW50cyB8fCBub2RlLmNvbnRlbnRzLnN1
YmFycmF5KSkgewogICAgaWYgKGNhbk93bikgewogICAgIG5vZGUuY29udGVudHMgPSBidWZmZXIu
c3ViYXJyYXkob2Zmc2V0LCBvZmZzZXQgKyBsZW5ndGgpOwogICAgIG5vZGUudXNlZEJ5dGVzID0g
bGVuZ3RoOwogICAgIHJldHVybiBsZW5ndGg7CiAgICB9IGVsc2UgaWYgKG5vZGUudXNlZEJ5dGVz
ID09PSAwICYmIHBvc2l0aW9uID09PSAwKSB7CiAgICAgbm9kZS5jb250ZW50cyA9IG5ldyBVaW50
OEFycmF5KGJ1ZmZlci5zdWJhcnJheShvZmZzZXQsIG9mZnNldCArIGxlbmd0aCkpOwogICAgIG5v
ZGUudXNlZEJ5dGVzID0gbGVuZ3RoOwogICAgIHJldHVybiBsZW5ndGg7CiAgICB9IGVsc2UgaWYg
KHBvc2l0aW9uICsgbGVuZ3RoIDw9IG5vZGUudXNlZEJ5dGVzKSB7CiAgICAgbm9kZS5jb250ZW50
cy5zZXQoYnVmZmVyLnN1YmFycmF5KG9mZnNldCwgb2Zmc2V0ICsgbGVuZ3RoKSwgcG9zaXRpb24p
OwogICAgIHJldHVybiBsZW5ndGg7CiAgICB9CiAgIH0KICAgTUVNRlMuZXhwYW5kRmlsZVN0b3Jh
Z2Uobm9kZSwgcG9zaXRpb24gKyBsZW5ndGgpOwogICBpZiAobm9kZS5jb250ZW50cy5zdWJhcnJh
eSAmJiBidWZmZXIuc3ViYXJyYXkpIG5vZGUuY29udGVudHMuc2V0KGJ1ZmZlci5zdWJhcnJheShv
ZmZzZXQsIG9mZnNldCArIGxlbmd0aCksIHBvc2l0aW9uKTsgZWxzZSB7CiAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CiAgICAgbm9kZS5jb250ZW50c1twb3NpdGlvbiArIGld
ID0gYnVmZmVyW29mZnNldCArIGldOwogICAgfQogICB9CiAgIG5vZGUudXNlZEJ5dGVzID0gTWF0
aC5tYXgobm9kZS51c2VkQnl0ZXMsIHBvc2l0aW9uICsgbGVuZ3RoKTsKICAgcmV0dXJuIGxlbmd0
aDsKICB9KSwKICBsbHNlZWs6IChmdW5jdGlvbihzdHJlYW0sIG9mZnNldCwgd2hlbmNlKSB7CiAg
IHZhciBwb3NpdGlvbiA9IG9mZnNldDsKICAgaWYgKHdoZW5jZSA9PT0gMSkgewogICAgcG9zaXRp
b24gKz0gc3RyZWFtLnBvc2l0aW9uOwogICB9IGVsc2UgaWYgKHdoZW5jZSA9PT0gMikgewogICAg
aWYgKEZTLmlzRmlsZShzdHJlYW0ubm9kZS5tb2RlKSkgewogICAgIHBvc2l0aW9uICs9IHN0cmVh
bS5ub2RlLnVzZWRCeXRlczsKICAgIH0KICAgfQogICBpZiAocG9zaXRpb24gPCAwKSB7CiAgICB0
aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FSU5WQUwpOwogICB9CiAgIHJldHVy
biBwb3NpdGlvbjsKICB9KSwKICBhbGxvY2F0ZTogKGZ1bmN0aW9uKHN0cmVhbSwgb2Zmc2V0LCBs
ZW5ndGgpIHsKICAgTUVNRlMuZXhwYW5kRmlsZVN0b3JhZ2Uoc3RyZWFtLm5vZGUsIG9mZnNldCAr
IGxlbmd0aCk7CiAgIHN0cmVhbS5ub2RlLnVzZWRCeXRlcyA9IE1hdGgubWF4KHN0cmVhbS5ub2Rl
LnVzZWRCeXRlcywgb2Zmc2V0ICsgbGVuZ3RoKTsKICB9KSwKICBtbWFwOiAoZnVuY3Rpb24oc3Ry
ZWFtLCBidWZmZXIsIG9mZnNldCwgbGVuZ3RoLCBwb3NpdGlvbiwgcHJvdCwgZmxhZ3MpIHsKICAg
aWYgKCFGUy5pc0ZpbGUoc3RyZWFtLm5vZGUubW9kZSkpIHsKICAgIHRocm93IG5ldyBGUy5FcnJu
b0Vycm9yKEVSUk5PX0NPREVTLkVOT0RFVik7CiAgIH0KICAgdmFyIHB0cjsKICAgdmFyIGFsbG9j
YXRlZDsKICAgdmFyIGNvbnRlbnRzID0gc3RyZWFtLm5vZGUuY29udGVudHM7CiAgIGlmICghKGZs
YWdzICYgMikgJiYgKGNvbnRlbnRzLmJ1ZmZlciA9PT0gYnVmZmVyIHx8IGNvbnRlbnRzLmJ1ZmZl
ciA9PT0gYnVmZmVyLmJ1ZmZlcikpIHsKICAgIGFsbG9jYXRlZCA9IGZhbHNlOwogICAgcHRyID0g
Y29udGVudHMuYnl0ZU9mZnNldDsKICAgfSBlbHNlIHsKICAgIGlmIChwb3NpdGlvbiA+IDAgfHwg
cG9zaXRpb24gKyBsZW5ndGggPCBzdHJlYW0ubm9kZS51c2VkQnl0ZXMpIHsKICAgICBpZiAoY29u
dGVudHMuc3ViYXJyYXkpIHsKICAgICAgY29udGVudHMgPSBjb250ZW50cy5zdWJhcnJheShwb3Np
dGlvbiwgcG9zaXRpb24gKyBsZW5ndGgpOwogICAgIH0gZWxzZSB7CiAgICAgIGNvbnRlbnRzID0g
QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoY29udGVudHMsIHBvc2l0aW9uLCBwb3NpdGlvbiAr
IGxlbmd0aCk7CiAgICAgfQogICAgfQogICAgYWxsb2NhdGVkID0gdHJ1ZTsKICAgIHB0ciA9IF9t
YWxsb2MobGVuZ3RoKTsKICAgIGlmICghcHRyKSB7CiAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJy
b3IoRVJSTk9fQ09ERVMuRU5PTUVNKTsKICAgIH0KICAgIGJ1ZmZlci5zZXQoY29udGVudHMsIHB0
cik7CiAgIH0KICAgcmV0dXJuIHsKICAgIHB0cjogcHRyLAogICAgYWxsb2NhdGVkOiBhbGxvY2F0
ZWQKICAgfTsKICB9KSwKICBtc3luYzogKGZ1bmN0aW9uKHN0cmVhbSwgYnVmZmVyLCBvZmZzZXQs
IGxlbmd0aCwgbW1hcEZsYWdzKSB7CiAgIGlmICghRlMuaXNGaWxlKHN0cmVhbS5ub2RlLm1vZGUp
KSB7CiAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FTk9ERVYpOwogICB9
CiAgIGlmIChtbWFwRmxhZ3MgJiAyKSB7CiAgICByZXR1cm4gMDsKICAgfQogICB2YXIgYnl0ZXNX
cml0dGVuID0gTUVNRlMuc3RyZWFtX29wcy53cml0ZShzdHJlYW0sIGJ1ZmZlciwgMCwgbGVuZ3Ro
LCBvZmZzZXQsIGZhbHNlKTsKICAgcmV0dXJuIDA7CiAgfSkKIH0KfTsKdmFyIElEQkZTID0gewog
ZGJzOiB7fSwKIGluZGV4ZWREQjogKGZ1bmN0aW9uKCkgewogIGlmICh0eXBlb2YgaW5kZXhlZERC
ICE9PSAidW5kZWZpbmVkIikgcmV0dXJuIGluZGV4ZWREQjsKICB2YXIgcmV0ID0gbnVsbDsKICBp
ZiAodHlwZW9mIHdpbmRvdyA9PT0gIm9iamVjdCIpIHJldCA9IHdpbmRvdy5pbmRleGVkREIgfHwg
d2luZG93Lm1vekluZGV4ZWREQiB8fCB3aW5kb3cud2Via2l0SW5kZXhlZERCIHx8IHdpbmRvdy5t
c0luZGV4ZWREQjsKICBhc3NlcnQocmV0LCAiSURCRlMgdXNlZCwgYnV0IGluZGV4ZWREQiBub3Qg
c3VwcG9ydGVkIik7CiAgcmV0dXJuIHJldDsKIH0pLAogREJfVkVSU0lPTjogMjEsCiBEQl9TVE9S
RV9OQU1FOiAiRklMRV9EQVRBIiwKIG1vdW50OiAoZnVuY3Rpb24obW91bnQpIHsKICByZXR1cm4g
TUVNRlMubW91bnQuYXBwbHkobnVsbCwgYXJndW1lbnRzKTsKIH0pLAogc3luY2ZzOiAoZnVuY3Rp
b24obW91bnQsIHBvcHVsYXRlLCBjYWxsYmFjaykgewogIElEQkZTLmdldExvY2FsU2V0KG1vdW50
LCAoZnVuY3Rpb24oZXJyLCBsb2NhbCkgewogICBpZiAoZXJyKSByZXR1cm4gY2FsbGJhY2soZXJy
KTsKICAgSURCRlMuZ2V0UmVtb3RlU2V0KG1vdW50LCAoZnVuY3Rpb24oZXJyLCByZW1vdGUpIHsK
ICAgIGlmIChlcnIpIHJldHVybiBjYWxsYmFjayhlcnIpOwogICAgdmFyIHNyYyA9IHBvcHVsYXRl
ID8gcmVtb3RlIDogbG9jYWw7CiAgICB2YXIgZHN0ID0gcG9wdWxhdGUgPyBsb2NhbCA6IHJlbW90
ZTsKICAgIElEQkZTLnJlY29uY2lsZShzcmMsIGRzdCwgY2FsbGJhY2spOwogICB9KSk7CiAgfSkp
OwogfSksCiBnZXREQjogKGZ1bmN0aW9uKG5hbWUsIGNhbGxiYWNrKSB7CiAgdmFyIGRiID0gSURC
RlMuZGJzW25hbWVdOwogIGlmIChkYikgewogICByZXR1cm4gY2FsbGJhY2sobnVsbCwgZGIpOwog
IH0KICB2YXIgcmVxOwogIHRyeSB7CiAgIHJlcSA9IElEQkZTLmluZGV4ZWREQigpLm9wZW4obmFt
ZSwgSURCRlMuREJfVkVSU0lPTik7CiAgfSBjYXRjaCAoZSkgewogICByZXR1cm4gY2FsbGJhY2so
ZSk7CiAgfQogIHJlcS5vbnVwZ3JhZGVuZWVkZWQgPSAoZnVuY3Rpb24oZSkgewogICB2YXIgZGIg
PSBlLnRhcmdldC5yZXN1bHQ7CiAgIHZhciB0cmFuc2FjdGlvbiA9IGUudGFyZ2V0LnRyYW5zYWN0
aW9uOwogICB2YXIgZmlsZVN0b3JlOwogICBpZiAoZGIub2JqZWN0U3RvcmVOYW1lcy5jb250YWlu
cyhJREJGUy5EQl9TVE9SRV9OQU1FKSkgewogICAgZmlsZVN0b3JlID0gdHJhbnNhY3Rpb24ub2Jq
ZWN0U3RvcmUoSURCRlMuREJfU1RPUkVfTkFNRSk7CiAgIH0gZWxzZSB7CiAgICBmaWxlU3RvcmUg
PSBkYi5jcmVhdGVPYmplY3RTdG9yZShJREJGUy5EQl9TVE9SRV9OQU1FKTsKICAgfQogICBpZiAo
IWZpbGVTdG9yZS5pbmRleE5hbWVzLmNvbnRhaW5zKCJ0aW1lc3RhbXAiKSkgewogICAgZmlsZVN0
b3JlLmNyZWF0ZUluZGV4KCJ0aW1lc3RhbXAiLCAidGltZXN0YW1wIiwgewogICAgIHVuaXF1ZTog
ZmFsc2UKICAgIH0pOwogICB9CiAgfSk7CiAgcmVxLm9uc3VjY2VzcyA9IChmdW5jdGlvbigpIHsK
ICAgZGIgPSByZXEucmVzdWx0OwogICBJREJGUy5kYnNbbmFtZV0gPSBkYjsKICAgY2FsbGJhY2so
bnVsbCwgZGIpOwogIH0pOwogIHJlcS5vbmVycm9yID0gKGZ1bmN0aW9uKGUpIHsKICAgY2FsbGJh
Y2sodGhpcy5lcnJvcik7CiAgIGUucHJldmVudERlZmF1bHQoKTsKICB9KTsKIH0pLAogZ2V0TG9j
YWxTZXQ6IChmdW5jdGlvbihtb3VudCwgY2FsbGJhY2spIHsKICB2YXIgZW50cmllcyA9IHt9Owog
IGZ1bmN0aW9uIGlzUmVhbERpcihwKSB7CiAgIHJldHVybiBwICE9PSAiLiIgJiYgcCAhPT0gIi4u
IjsKICB9CiAgZnVuY3Rpb24gdG9BYnNvbHV0ZShyb290KSB7CiAgIHJldHVybiAoZnVuY3Rpb24o
cCkgewogICAgcmV0dXJuIFBBVEguam9pbjIocm9vdCwgcCk7CiAgIH0pOwogIH0KICB2YXIgY2hl
Y2sgPSBGUy5yZWFkZGlyKG1vdW50Lm1vdW50cG9pbnQpLmZpbHRlcihpc1JlYWxEaXIpLm1hcCh0
b0Fic29sdXRlKG1vdW50Lm1vdW50cG9pbnQpKTsKICB3aGlsZSAoY2hlY2subGVuZ3RoKSB7CiAg
IHZhciBwYXRoID0gY2hlY2sucG9wKCk7CiAgIHZhciBzdGF0OwogICB0cnkgewogICAgc3RhdCA9
IEZTLnN0YXQocGF0aCk7CiAgIH0gY2F0Y2ggKGUpIHsKICAgIHJldHVybiBjYWxsYmFjayhlKTsK
ICAgfQogICBpZiAoRlMuaXNEaXIoc3RhdC5tb2RlKSkgewogICAgY2hlY2sucHVzaC5hcHBseShj
aGVjaywgRlMucmVhZGRpcihwYXRoKS5maWx0ZXIoaXNSZWFsRGlyKS5tYXAodG9BYnNvbHV0ZShw
YXRoKSkpOwogICB9CiAgIGVudHJpZXNbcGF0aF0gPSB7CiAgICB0aW1lc3RhbXA6IHN0YXQubXRp
bWUKICAgfTsKICB9CiAgcmV0dXJuIGNhbGxiYWNrKG51bGwsIHsKICAgdHlwZTogImxvY2FsIiwK
ICAgZW50cmllczogZW50cmllcwogIH0pOwogfSksCiBnZXRSZW1vdGVTZXQ6IChmdW5jdGlvbiht
b3VudCwgY2FsbGJhY2spIHsKICB2YXIgZW50cmllcyA9IHt9OwogIElEQkZTLmdldERCKG1vdW50
Lm1vdW50cG9pbnQsIChmdW5jdGlvbihlcnIsIGRiKSB7CiAgIGlmIChlcnIpIHJldHVybiBjYWxs
YmFjayhlcnIpOwogICB2YXIgdHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbihbIElEQkZTLkRC
X1NUT1JFX05BTUUgXSwgInJlYWRvbmx5Iik7CiAgIHRyYW5zYWN0aW9uLm9uZXJyb3IgPSAoZnVu
Y3Rpb24oZSkgewogICAgY2FsbGJhY2sodGhpcy5lcnJvcik7CiAgICBlLnByZXZlbnREZWZhdWx0
KCk7CiAgIH0pOwogICB2YXIgc3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZShJREJGUy5E
Ql9TVE9SRV9OQU1FKTsKICAgdmFyIGluZGV4ID0gc3RvcmUuaW5kZXgoInRpbWVzdGFtcCIpOwog
ICBpbmRleC5vcGVuS2V5Q3Vyc29yKCkub25zdWNjZXNzID0gKGZ1bmN0aW9uKGV2ZW50KSB7CiAg
ICB2YXIgY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKICAgIGlmICghY3Vyc29yKSB7CiAg
ICAgcmV0dXJuIGNhbGxiYWNrKG51bGwsIHsKICAgICAgdHlwZTogInJlbW90ZSIsCiAgICAgIGRi
OiBkYiwKICAgICAgZW50cmllczogZW50cmllcwogICAgIH0pOwogICAgfQogICAgZW50cmllc1tj
dXJzb3IucHJpbWFyeUtleV0gPSB7CiAgICAgdGltZXN0YW1wOiBjdXJzb3Iua2V5CiAgICB9Owog
ICAgY3Vyc29yLmNvbnRpbnVlKCk7CiAgIH0pOwogIH0pKTsKIH0pLAogbG9hZExvY2FsRW50cnk6
IChmdW5jdGlvbihwYXRoLCBjYWxsYmFjaykgewogIHZhciBzdGF0LCBub2RlOwogIHRyeSB7CiAg
IHZhciBsb29rdXAgPSBGUy5sb29rdXBQYXRoKHBhdGgpOwogICBub2RlID0gbG9va3VwLm5vZGU7
CiAgIHN0YXQgPSBGUy5zdGF0KHBhdGgpOwogIH0gY2F0Y2ggKGUpIHsKICAgcmV0dXJuIGNhbGxi
YWNrKGUpOwogIH0KICBpZiAoRlMuaXNEaXIoc3RhdC5tb2RlKSkgewogICByZXR1cm4gY2FsbGJh
Y2sobnVsbCwgewogICAgdGltZXN0YW1wOiBzdGF0Lm10aW1lLAogICAgbW9kZTogc3RhdC5tb2Rl
CiAgIH0pOwogIH0gZWxzZSBpZiAoRlMuaXNGaWxlKHN0YXQubW9kZSkpIHsKICAgbm9kZS5jb250
ZW50cyA9IE1FTUZTLmdldEZpbGVEYXRhQXNUeXBlZEFycmF5KG5vZGUpOwogICByZXR1cm4gY2Fs
bGJhY2sobnVsbCwgewogICAgdGltZXN0YW1wOiBzdGF0Lm10aW1lLAogICAgbW9kZTogc3RhdC5t
b2RlLAogICAgY29udGVudHM6IG5vZGUuY29udGVudHMKICAgfSk7CiAgfSBlbHNlIHsKICAgcmV0
dXJuIGNhbGxiYWNrKG5ldyBFcnJvcigibm9kZSB0eXBlIG5vdCBzdXBwb3J0ZWQiKSk7CiAgfQog
fSksCiBzdG9yZUxvY2FsRW50cnk6IChmdW5jdGlvbihwYXRoLCBlbnRyeSwgY2FsbGJhY2spIHsK
ICB0cnkgewogICBpZiAoRlMuaXNEaXIoZW50cnkubW9kZSkpIHsKICAgIEZTLm1rZGlyKHBhdGgs
IGVudHJ5Lm1vZGUpOwogICB9IGVsc2UgaWYgKEZTLmlzRmlsZShlbnRyeS5tb2RlKSkgewogICAg
RlMud3JpdGVGaWxlKHBhdGgsIGVudHJ5LmNvbnRlbnRzLCB7CiAgICAgZW5jb2Rpbmc6ICJiaW5h
cnkiLAogICAgIGNhbk93bjogdHJ1ZQogICAgfSk7CiAgIH0gZWxzZSB7CiAgICByZXR1cm4gY2Fs
bGJhY2sobmV3IEVycm9yKCJub2RlIHR5cGUgbm90IHN1cHBvcnRlZCIpKTsKICAgfQogICBGUy5j
aG1vZChwYXRoLCBlbnRyeS5tb2RlKTsKICAgRlMudXRpbWUocGF0aCwgZW50cnkudGltZXN0YW1w
LCBlbnRyeS50aW1lc3RhbXApOwogIH0gY2F0Y2ggKGUpIHsKICAgcmV0dXJuIGNhbGxiYWNrKGUp
OwogIH0KICBjYWxsYmFjayhudWxsKTsKIH0pLAogcmVtb3ZlTG9jYWxFbnRyeTogKGZ1bmN0aW9u
KHBhdGgsIGNhbGxiYWNrKSB7CiAgdHJ5IHsKICAgdmFyIGxvb2t1cCA9IEZTLmxvb2t1cFBhdGgo
cGF0aCk7CiAgIHZhciBzdGF0ID0gRlMuc3RhdChwYXRoKTsKICAgaWYgKEZTLmlzRGlyKHN0YXQu
bW9kZSkpIHsKICAgIEZTLnJtZGlyKHBhdGgpOwogICB9IGVsc2UgaWYgKEZTLmlzRmlsZShzdGF0
Lm1vZGUpKSB7CiAgICBGUy51bmxpbmsocGF0aCk7CiAgIH0KICB9IGNhdGNoIChlKSB7CiAgIHJl
dHVybiBjYWxsYmFjayhlKTsKICB9CiAgY2FsbGJhY2sobnVsbCk7CiB9KSwKIGxvYWRSZW1vdGVF
bnRyeTogKGZ1bmN0aW9uKHN0b3JlLCBwYXRoLCBjYWxsYmFjaykgewogIHZhciByZXEgPSBzdG9y
ZS5nZXQocGF0aCk7CiAgcmVxLm9uc3VjY2VzcyA9IChmdW5jdGlvbihldmVudCkgewogICBjYWxs
YmFjayhudWxsLCBldmVudC50YXJnZXQucmVzdWx0KTsKICB9KTsKICByZXEub25lcnJvciA9IChm
dW5jdGlvbihlKSB7CiAgIGNhbGxiYWNrKHRoaXMuZXJyb3IpOwogICBlLnByZXZlbnREZWZhdWx0
KCk7CiAgfSk7CiB9KSwKIHN0b3JlUmVtb3RlRW50cnk6IChmdW5jdGlvbihzdG9yZSwgcGF0aCwg
ZW50cnksIGNhbGxiYWNrKSB7CiAgdmFyIHJlcSA9IHN0b3JlLnB1dChlbnRyeSwgcGF0aCk7CiAg
cmVxLm9uc3VjY2VzcyA9IChmdW5jdGlvbigpIHsKICAgY2FsbGJhY2sobnVsbCk7CiAgfSk7CiAg
cmVxLm9uZXJyb3IgPSAoZnVuY3Rpb24oZSkgewogICBjYWxsYmFjayh0aGlzLmVycm9yKTsKICAg
ZS5wcmV2ZW50RGVmYXVsdCgpOwogIH0pOwogfSksCiByZW1vdmVSZW1vdGVFbnRyeTogKGZ1bmN0
aW9uKHN0b3JlLCBwYXRoLCBjYWxsYmFjaykgewogIHZhciByZXEgPSBzdG9yZS5kZWxldGUocGF0
aCk7CiAgcmVxLm9uc3VjY2VzcyA9IChmdW5jdGlvbigpIHsKICAgY2FsbGJhY2sobnVsbCk7CiAg
fSk7CiAgcmVxLm9uZXJyb3IgPSAoZnVuY3Rpb24oZSkgewogICBjYWxsYmFjayh0aGlzLmVycm9y
KTsKICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogIH0pOwogfSksCiByZWNvbmNpbGU6IChmdW5jdGlv
bihzcmMsIGRzdCwgY2FsbGJhY2spIHsKICB2YXIgdG90YWwgPSAwOwogIHZhciBjcmVhdGUgPSBb
XTsKICBPYmplY3Qua2V5cyhzcmMuZW50cmllcykuZm9yRWFjaCgoZnVuY3Rpb24oa2V5KSB7CiAg
IHZhciBlID0gc3JjLmVudHJpZXNba2V5XTsKICAgdmFyIGUyID0gZHN0LmVudHJpZXNba2V5XTsK
ICAgaWYgKCFlMiB8fCBlLnRpbWVzdGFtcCA+IGUyLnRpbWVzdGFtcCkgewogICAgY3JlYXRlLnB1
c2goa2V5KTsKICAgIHRvdGFsKys7CiAgIH0KICB9KSk7CiAgdmFyIHJlbW92ZSA9IFtdOwogIE9i
amVjdC5rZXlzKGRzdC5lbnRyaWVzKS5mb3JFYWNoKChmdW5jdGlvbihrZXkpIHsKICAgdmFyIGUg
PSBkc3QuZW50cmllc1trZXldOwogICB2YXIgZTIgPSBzcmMuZW50cmllc1trZXldOwogICBpZiAo
IWUyKSB7CiAgICByZW1vdmUucHVzaChrZXkpOwogICAgdG90YWwrKzsKICAgfQogIH0pKTsKICBp
ZiAoIXRvdGFsKSB7CiAgIHJldHVybiBjYWxsYmFjayhudWxsKTsKICB9CiAgdmFyIGVycm9yZWQg
PSBmYWxzZTsKICB2YXIgY29tcGxldGVkID0gMDsKICB2YXIgZGIgPSBzcmMudHlwZSA9PT0gInJl
bW90ZSIgPyBzcmMuZGIgOiBkc3QuZGI7CiAgdmFyIHRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rp
b24oWyBJREJGUy5EQl9TVE9SRV9OQU1FIF0sICJyZWFkd3JpdGUiKTsKICB2YXIgc3RvcmUgPSB0
cmFuc2FjdGlvbi5vYmplY3RTdG9yZShJREJGUy5EQl9TVE9SRV9OQU1FKTsKICBmdW5jdGlvbiBk
b25lKGVycikgewogICBpZiAoZXJyKSB7CiAgICBpZiAoIWRvbmUuZXJyb3JlZCkgewogICAgIGRv
bmUuZXJyb3JlZCA9IHRydWU7CiAgICAgcmV0dXJuIGNhbGxiYWNrKGVycik7CiAgICB9CiAgICBy
ZXR1cm47CiAgIH0KICAgaWYgKCsrY29tcGxldGVkID49IHRvdGFsKSB7CiAgICByZXR1cm4gY2Fs
bGJhY2sobnVsbCk7CiAgIH0KICB9CiAgdHJhbnNhY3Rpb24ub25lcnJvciA9IChmdW5jdGlvbihl
KSB7CiAgIGRvbmUodGhpcy5lcnJvcik7CiAgIGUucHJldmVudERlZmF1bHQoKTsKICB9KTsKICBj
cmVhdGUuc29ydCgpLmZvckVhY2goKGZ1bmN0aW9uKHBhdGgpIHsKICAgaWYgKGRzdC50eXBlID09
PSAibG9jYWwiKSB7CiAgICBJREJGUy5sb2FkUmVtb3RlRW50cnkoc3RvcmUsIHBhdGgsIChmdW5j
dGlvbihlcnIsIGVudHJ5KSB7CiAgICAgaWYgKGVycikgcmV0dXJuIGRvbmUoZXJyKTsKICAgICBJ
REJGUy5zdG9yZUxvY2FsRW50cnkocGF0aCwgZW50cnksIGRvbmUpOwogICAgfSkpOwogICB9IGVs
c2UgewogICAgSURCRlMubG9hZExvY2FsRW50cnkocGF0aCwgKGZ1bmN0aW9uKGVyciwgZW50cnkp
IHsKICAgICBpZiAoZXJyKSByZXR1cm4gZG9uZShlcnIpOwogICAgIElEQkZTLnN0b3JlUmVtb3Rl
RW50cnkoc3RvcmUsIHBhdGgsIGVudHJ5LCBkb25lKTsKICAgIH0pKTsKICAgfQogIH0pKTsKICBy
ZW1vdmUuc29ydCgpLnJldmVyc2UoKS5mb3JFYWNoKChmdW5jdGlvbihwYXRoKSB7CiAgIGlmIChk
c3QudHlwZSA9PT0gImxvY2FsIikgewogICAgSURCRlMucmVtb3ZlTG9jYWxFbnRyeShwYXRoLCBk
b25lKTsKICAgfSBlbHNlIHsKICAgIElEQkZTLnJlbW92ZVJlbW90ZUVudHJ5KHN0b3JlLCBwYXRo
LCBkb25lKTsKICAgfQogIH0pKTsKIH0pCn07CnZhciBOT0RFRlMgPSB7CiBpc1dpbmRvd3M6IGZh
bHNlLAogc3RhdGljSW5pdDogKGZ1bmN0aW9uKCkgewogIE5PREVGUy5pc1dpbmRvd3MgPSAhIXBy
b2Nlc3MucGxhdGZvcm0ubWF0Y2goL153aW4vKTsKIH0pLAogbW91bnQ6IChmdW5jdGlvbihtb3Vu
dCkgewogIGFzc2VydChFTlZJUk9OTUVOVF9JU19OT0RFKTsKICByZXR1cm4gTk9ERUZTLmNyZWF0
ZU5vZGUobnVsbCwgIi8iLCBOT0RFRlMuZ2V0TW9kZShtb3VudC5vcHRzLnJvb3QpLCAwKTsKIH0p
LAogY3JlYXRlTm9kZTogKGZ1bmN0aW9uKHBhcmVudCwgbmFtZSwgbW9kZSwgZGV2KSB7CiAgaWYg
KCFGUy5pc0Rpcihtb2RlKSAmJiAhRlMuaXNGaWxlKG1vZGUpICYmICFGUy5pc0xpbmsobW9kZSkp
IHsKICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUlOVkFMKTsKICB9CiAg
dmFyIG5vZGUgPSBGUy5jcmVhdGVOb2RlKHBhcmVudCwgbmFtZSwgbW9kZSk7CiAgbm9kZS5ub2Rl
X29wcyA9IE5PREVGUy5ub2RlX29wczsKICBub2RlLnN0cmVhbV9vcHMgPSBOT0RFRlMuc3RyZWFt
X29wczsKICByZXR1cm4gbm9kZTsKIH0pLAogZ2V0TW9kZTogKGZ1bmN0aW9uKHBhdGgpIHsKICB2
YXIgc3RhdDsKICB0cnkgewogICBzdGF0ID0gZnMubHN0YXRTeW5jKHBhdGgpOwogICBpZiAoTk9E
RUZTLmlzV2luZG93cykgewogICAgc3RhdC5tb2RlID0gc3RhdC5tb2RlIHwgKHN0YXQubW9kZSAm
IDE0NikgPj4gMTsKICAgfQogIH0gY2F0Y2ggKGUpIHsKICAgaWYgKCFlLmNvZGUpIHRocm93IGU7
CiAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTW2UuY29kZV0pOwogIH0KICBy
ZXR1cm4gc3RhdC5tb2RlOwogfSksCiByZWFsUGF0aDogKGZ1bmN0aW9uKG5vZGUpIHsKICB2YXIg
cGFydHMgPSBbXTsKICB3aGlsZSAobm9kZS5wYXJlbnQgIT09IG5vZGUpIHsKICAgcGFydHMucHVz
aChub2RlLm5hbWUpOwogICBub2RlID0gbm9kZS5wYXJlbnQ7CiAgfQogIHBhcnRzLnB1c2gobm9k
ZS5tb3VudC5vcHRzLnJvb3QpOwogIHBhcnRzLnJldmVyc2UoKTsKICByZXR1cm4gUEFUSC5qb2lu
LmFwcGx5KG51bGwsIHBhcnRzKTsKIH0pLAogZmxhZ3NUb1Blcm1pc3Npb25TdHJpbmdNYXA6IHsK
ICAwOiAiciIsCiAgMTogInIrIiwKICAyOiAicisiLAogIDY0OiAiciIsCiAgNjU6ICJyKyIsCiAg
NjY6ICJyKyIsCiAgMTI5OiAicngrIiwKICAxOTM6ICJyeCsiLAogIDUxNDogIncrIiwKICA1Nzc6
ICJ3IiwKICA1Nzg6ICJ3KyIsCiAgNzA1OiAid3giLAogIDcwNjogInd4KyIsCiAgMTAyNDogImEi
LAogIDEwMjU6ICJhIiwKICAxMDI2OiAiYSsiLAogIDEwODk6ICJhIiwKICAxMDkwOiAiYSsiLAog
IDExNTM6ICJheCIsCiAgMTE1NDogImF4KyIsCiAgMTIxNzogImF4IiwKICAxMjE4OiAiYXgrIiwK
ICA0MDk2OiAicnMiLAogIDQwOTg6ICJycysiCiB9LAogZmxhZ3NUb1Blcm1pc3Npb25TdHJpbmc6
IChmdW5jdGlvbihmbGFncykgewogIGlmIChmbGFncyBpbiBOT0RFRlMuZmxhZ3NUb1Blcm1pc3Np
b25TdHJpbmdNYXApIHsKICAgcmV0dXJuIE5PREVGUy5mbGFnc1RvUGVybWlzc2lvblN0cmluZ01h
cFtmbGFnc107CiAgfSBlbHNlIHsKICAgcmV0dXJuIGZsYWdzOwogIH0KIH0pLAogbm9kZV9vcHM6
IHsKICBnZXRhdHRyOiAoZnVuY3Rpb24obm9kZSkgewogICB2YXIgcGF0aCA9IE5PREVGUy5yZWFs
UGF0aChub2RlKTsKICAgdmFyIHN0YXQ7CiAgIHRyeSB7CiAgICBzdGF0ID0gZnMubHN0YXRTeW5j
KHBhdGgpOwogICB9IGNhdGNoIChlKSB7CiAgICBpZiAoIWUuY29kZSkgdGhyb3cgZTsKICAgIHRo
cm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTW2UuY29kZV0pOwogICB9CiAgIGlmIChO
T0RFRlMuaXNXaW5kb3dzICYmICFzdGF0LmJsa3NpemUpIHsKICAgIHN0YXQuYmxrc2l6ZSA9IDQw
OTY7CiAgIH0KICAgaWYgKE5PREVGUy5pc1dpbmRvd3MgJiYgIXN0YXQuYmxvY2tzKSB7CiAgICBz
dGF0LmJsb2NrcyA9IChzdGF0LnNpemUgKyBzdGF0LmJsa3NpemUgLSAxKSAvIHN0YXQuYmxrc2l6
ZSB8IDA7CiAgIH0KICAgcmV0dXJuIHsKICAgIGRldjogc3RhdC5kZXYsCiAgICBpbm86IHN0YXQu
aW5vLAogICAgbW9kZTogc3RhdC5tb2RlLAogICAgbmxpbms6IHN0YXQubmxpbmssCiAgICB1aWQ6
IHN0YXQudWlkLAogICAgZ2lkOiBzdGF0LmdpZCwKICAgIHJkZXY6IHN0YXQucmRldiwKICAgIHNp
emU6IHN0YXQuc2l6ZSwKICAgIGF0aW1lOiBzdGF0LmF0aW1lLAogICAgbXRpbWU6IHN0YXQubXRp
bWUsCiAgICBjdGltZTogc3RhdC5jdGltZSwKICAgIGJsa3NpemU6IHN0YXQuYmxrc2l6ZSwKICAg
IGJsb2Nrczogc3RhdC5ibG9ja3MKICAgfTsKICB9KSwKICBzZXRhdHRyOiAoZnVuY3Rpb24obm9k
ZSwgYXR0cikgewogICB2YXIgcGF0aCA9IE5PREVGUy5yZWFsUGF0aChub2RlKTsKICAgdHJ5IHsK
ICAgIGlmIChhdHRyLm1vZGUgIT09IHVuZGVmaW5lZCkgewogICAgIGZzLmNobW9kU3luYyhwYXRo
LCBhdHRyLm1vZGUpOwogICAgIG5vZGUubW9kZSA9IGF0dHIubW9kZTsKICAgIH0KICAgIGlmIChh
dHRyLnRpbWVzdGFtcCAhPT0gdW5kZWZpbmVkKSB7CiAgICAgdmFyIGRhdGUgPSBuZXcgRGF0ZShh
dHRyLnRpbWVzdGFtcCk7CiAgICAgZnMudXRpbWVzU3luYyhwYXRoLCBkYXRlLCBkYXRlKTsKICAg
IH0KICAgIGlmIChhdHRyLnNpemUgIT09IHVuZGVmaW5lZCkgewogICAgIGZzLnRydW5jYXRlU3lu
YyhwYXRoLCBhdHRyLnNpemUpOwogICAgfQogICB9IGNhdGNoIChlKSB7CiAgICBpZiAoIWUuY29k
ZSkgdGhyb3cgZTsKICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTW2UuY29k
ZV0pOwogICB9CiAgfSksCiAgbG9va3VwOiAoZnVuY3Rpb24ocGFyZW50LCBuYW1lKSB7CiAgIHZh
ciBwYXRoID0gUEFUSC5qb2luMihOT0RFRlMucmVhbFBhdGgocGFyZW50KSwgbmFtZSk7CiAgIHZh
ciBtb2RlID0gTk9ERUZTLmdldE1vZGUocGF0aCk7CiAgIHJldHVybiBOT0RFRlMuY3JlYXRlTm9k
ZShwYXJlbnQsIG5hbWUsIG1vZGUpOwogIH0pLAogIG1rbm9kOiAoZnVuY3Rpb24ocGFyZW50LCBu
YW1lLCBtb2RlLCBkZXYpIHsKICAgdmFyIG5vZGUgPSBOT0RFRlMuY3JlYXRlTm9kZShwYXJlbnQs
IG5hbWUsIG1vZGUsIGRldik7CiAgIHZhciBwYXRoID0gTk9ERUZTLnJlYWxQYXRoKG5vZGUpOwog
ICB0cnkgewogICAgaWYgKEZTLmlzRGlyKG5vZGUubW9kZSkpIHsKICAgICBmcy5ta2RpclN5bmMo
cGF0aCwgbm9kZS5tb2RlKTsKICAgIH0gZWxzZSB7CiAgICAgZnMud3JpdGVGaWxlU3luYyhwYXRo
LCAiIiwgewogICAgICBtb2RlOiBub2RlLm1vZGUKICAgICB9KTsKICAgIH0KICAgfSBjYXRjaCAo
ZSkgewogICAgaWYgKCFlLmNvZGUpIHRocm93IGU7CiAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJv
cihFUlJOT19DT0RFU1tlLmNvZGVdKTsKICAgfQogICByZXR1cm4gbm9kZTsKICB9KSwKICByZW5h
bWU6IChmdW5jdGlvbihvbGROb2RlLCBuZXdEaXIsIG5ld05hbWUpIHsKICAgdmFyIG9sZFBhdGgg
PSBOT0RFRlMucmVhbFBhdGgob2xkTm9kZSk7CiAgIHZhciBuZXdQYXRoID0gUEFUSC5qb2luMihO
T0RFRlMucmVhbFBhdGgobmV3RGlyKSwgbmV3TmFtZSk7CiAgIHRyeSB7CiAgICBmcy5yZW5hbWVT
eW5jKG9sZFBhdGgsIG5ld1BhdGgpOwogICB9IGNhdGNoIChlKSB7CiAgICBpZiAoIWUuY29kZSkg
dGhyb3cgZTsKICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTW2UuY29kZV0p
OwogICB9CiAgfSksCiAgdW5saW5rOiAoZnVuY3Rpb24ocGFyZW50LCBuYW1lKSB7CiAgIHZhciBw
YXRoID0gUEFUSC5qb2luMihOT0RFRlMucmVhbFBhdGgocGFyZW50KSwgbmFtZSk7CiAgIHRyeSB7
CiAgICBmcy51bmxpbmtTeW5jKHBhdGgpOwogICB9IGNhdGNoIChlKSB7CiAgICBpZiAoIWUuY29k
ZSkgdGhyb3cgZTsKICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTW2UuY29k
ZV0pOwogICB9CiAgfSksCiAgcm1kaXI6IChmdW5jdGlvbihwYXJlbnQsIG5hbWUpIHsKICAgdmFy
IHBhdGggPSBQQVRILmpvaW4yKE5PREVGUy5yZWFsUGF0aChwYXJlbnQpLCBuYW1lKTsKICAgdHJ5
IHsKICAgIGZzLnJtZGlyU3luYyhwYXRoKTsKICAgfSBjYXRjaCAoZSkgewogICAgaWYgKCFlLmNv
ZGUpIHRocm93IGU7CiAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFU1tlLmNv
ZGVdKTsKICAgfQogIH0pLAogIHJlYWRkaXI6IChmdW5jdGlvbihub2RlKSB7CiAgIHZhciBwYXRo
ID0gTk9ERUZTLnJlYWxQYXRoKG5vZGUpOwogICB0cnkgewogICAgcmV0dXJuIGZzLnJlYWRkaXJT
eW5jKHBhdGgpOwogICB9IGNhdGNoIChlKSB7CiAgICBpZiAoIWUuY29kZSkgdGhyb3cgZTsKICAg
IHRocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTW2UuY29kZV0pOwogICB9CiAgfSks
CiAgc3ltbGluazogKGZ1bmN0aW9uKHBhcmVudCwgbmV3TmFtZSwgb2xkUGF0aCkgewogICB2YXIg
bmV3UGF0aCA9IFBBVEguam9pbjIoTk9ERUZTLnJlYWxQYXRoKHBhcmVudCksIG5ld05hbWUpOwog
ICB0cnkgewogICAgZnMuc3ltbGlua1N5bmMob2xkUGF0aCwgbmV3UGF0aCk7CiAgIH0gY2F0Y2gg
KGUpIHsKICAgIGlmICghZS5jb2RlKSB0aHJvdyBlOwogICAgdGhyb3cgbmV3IEZTLkVycm5vRXJy
b3IoRVJSTk9fQ09ERVNbZS5jb2RlXSk7CiAgIH0KICB9KSwKICByZWFkbGluazogKGZ1bmN0aW9u
KG5vZGUpIHsKICAgdmFyIHBhdGggPSBOT0RFRlMucmVhbFBhdGgobm9kZSk7CiAgIHRyeSB7CiAg
ICBwYXRoID0gZnMucmVhZGxpbmtTeW5jKHBhdGgpOwogICAgcGF0aCA9IE5PREVKU19QQVRILnJl
bGF0aXZlKE5PREVKU19QQVRILnJlc29sdmUobm9kZS5tb3VudC5vcHRzLnJvb3QpLCBwYXRoKTsK
ICAgIHJldHVybiBwYXRoOwogICB9IGNhdGNoIChlKSB7CiAgICBpZiAoIWUuY29kZSkgdGhyb3cg
ZTsKICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTW2UuY29kZV0pOwogICB9
CiAgfSkKIH0sCiBzdHJlYW1fb3BzOiB7CiAgb3BlbjogKGZ1bmN0aW9uKHN0cmVhbSkgewogICB2
YXIgcGF0aCA9IE5PREVGUy5yZWFsUGF0aChzdHJlYW0ubm9kZSk7CiAgIHRyeSB7CiAgICBpZiAo
RlMuaXNGaWxlKHN0cmVhbS5ub2RlLm1vZGUpKSB7CiAgICAgc3RyZWFtLm5mZCA9IGZzLm9wZW5T
eW5jKHBhdGgsIE5PREVGUy5mbGFnc1RvUGVybWlzc2lvblN0cmluZyhzdHJlYW0uZmxhZ3MpKTsK
ICAgIH0KICAgfSBjYXRjaCAoZSkgewogICAgaWYgKCFlLmNvZGUpIHRocm93IGU7CiAgICB0aHJv
dyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFU1tlLmNvZGVdKTsKICAgfQogIH0pLAogIGNs
b3NlOiAoZnVuY3Rpb24oc3RyZWFtKSB7CiAgIHRyeSB7CiAgICBpZiAoRlMuaXNGaWxlKHN0cmVh
bS5ub2RlLm1vZGUpICYmIHN0cmVhbS5uZmQpIHsKICAgICBmcy5jbG9zZVN5bmMoc3RyZWFtLm5m
ZCk7CiAgICB9CiAgIH0gY2F0Y2ggKGUpIHsKICAgIGlmICghZS5jb2RlKSB0aHJvdyBlOwogICAg
dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVNbZS5jb2RlXSk7CiAgIH0KICB9KSwK
ICByZWFkOiAoZnVuY3Rpb24oc3RyZWFtLCBidWZmZXIsIG9mZnNldCwgbGVuZ3RoLCBwb3NpdGlv
bikgewogICBpZiAobGVuZ3RoID09PSAwKSByZXR1cm4gMDsKICAgdmFyIG5idWZmZXIgPSBuZXcg
QnVmZmVyKGxlbmd0aCk7CiAgIHZhciByZXM7CiAgIHRyeSB7CiAgICByZXMgPSBmcy5yZWFkU3lu
YyhzdHJlYW0ubmZkLCBuYnVmZmVyLCAwLCBsZW5ndGgsIHBvc2l0aW9uKTsKICAgfSBjYXRjaCAo
ZSkgewogICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVNbZS5jb2RlXSk7CiAg
IH0KICAgaWYgKHJlcyA+IDApIHsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzOyBpKyspIHsK
ICAgICBidWZmZXJbb2Zmc2V0ICsgaV0gPSBuYnVmZmVyW2ldOwogICAgfQogICB9CiAgIHJldHVy
biByZXM7CiAgfSksCiAgd3JpdGU6IChmdW5jdGlvbihzdHJlYW0sIGJ1ZmZlciwgb2Zmc2V0LCBs
ZW5ndGgsIHBvc2l0aW9uKSB7CiAgIHZhciBuYnVmZmVyID0gbmV3IEJ1ZmZlcihidWZmZXIuc3Vi
YXJyYXkob2Zmc2V0LCBvZmZzZXQgKyBsZW5ndGgpKTsKICAgdmFyIHJlczsKICAgdHJ5IHsKICAg
IHJlcyA9IGZzLndyaXRlU3luYyhzdHJlYW0ubmZkLCBuYnVmZmVyLCAwLCBsZW5ndGgsIHBvc2l0
aW9uKTsKICAgfSBjYXRjaCAoZSkgewogICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9f
Q09ERVNbZS5jb2RlXSk7CiAgIH0KICAgcmV0dXJuIHJlczsKICB9KSwKICBsbHNlZWs6IChmdW5j
dGlvbihzdHJlYW0sIG9mZnNldCwgd2hlbmNlKSB7CiAgIHZhciBwb3NpdGlvbiA9IG9mZnNldDsK
ICAgaWYgKHdoZW5jZSA9PT0gMSkgewogICAgcG9zaXRpb24gKz0gc3RyZWFtLnBvc2l0aW9uOwog
ICB9IGVsc2UgaWYgKHdoZW5jZSA9PT0gMikgewogICAgaWYgKEZTLmlzRmlsZShzdHJlYW0ubm9k
ZS5tb2RlKSkgewogICAgIHRyeSB7CiAgICAgIHZhciBzdGF0ID0gZnMuZnN0YXRTeW5jKHN0cmVh
bS5uZmQpOwogICAgICBwb3NpdGlvbiArPSBzdGF0LnNpemU7CiAgICAgfSBjYXRjaCAoZSkgewog
ICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFU1tlLmNvZGVdKTsKICAgICB9
CiAgICB9CiAgIH0KICAgaWYgKHBvc2l0aW9uIDwgMCkgewogICAgdGhyb3cgbmV3IEZTLkVycm5v
RXJyb3IoRVJSTk9fQ09ERVMuRUlOVkFMKTsKICAgfQogICByZXR1cm4gcG9zaXRpb247CiAgfSkK
IH0KfTsKdmFyIFdPUktFUkZTID0gewogRElSX01PREU6IDE2ODk1LAogRklMRV9NT0RFOiAzMzI3
OSwKIHJlYWRlcjogbnVsbCwKIG1vdW50OiAoZnVuY3Rpb24obW91bnQpIHsKICBhc3NlcnQoRU5W
SVJPTk1FTlRfSVNfV09SS0VSKTsKICBpZiAoIVdPUktFUkZTLnJlYWRlcikgV09SS0VSRlMucmVh
ZGVyID0gbmV3IEZpbGVSZWFkZXJTeW5jOwogIHZhciByb290ID0gV09SS0VSRlMuY3JlYXRlTm9k
ZShudWxsLCAiLyIsIFdPUktFUkZTLkRJUl9NT0RFLCAwKTsKICBBcnJheS5wcm90b3R5cGUuZm9y
RWFjaC5jYWxsKG1vdW50Lm9wdHNbImZpbGVzIl0gfHwgW10sIChmdW5jdGlvbihmaWxlKSB7CiAg
IFdPUktFUkZTLmNyZWF0ZU5vZGUocm9vdCwgZmlsZS5uYW1lLCBXT1JLRVJGUy5GSUxFX01PREUs
IDAsIGZpbGUsIGZpbGUubGFzdE1vZGlmaWVkRGF0ZSk7CiAgfSkpOwogIChtb3VudC5vcHRzWyJi
bG9icyJdIHx8IFtdKS5mb3JFYWNoKChmdW5jdGlvbihvYmopIHsKICAgV09SS0VSRlMuY3JlYXRl
Tm9kZShyb290LCBvYmpbIm5hbWUiXSwgV09SS0VSRlMuRklMRV9NT0RFLCAwLCBvYmpbImRhdGEi
XSk7CiAgfSkpOwogIHJldHVybiByb290OwogfSksCiBjcmVhdGVOb2RlOiAoZnVuY3Rpb24ocGFy
ZW50LCBuYW1lLCBtb2RlLCBkZXYsIGNvbnRlbnRzLCBtdGltZSkgewogIHZhciBub2RlID0gRlMu
Y3JlYXRlTm9kZShwYXJlbnQsIG5hbWUsIG1vZGUpOwogIG5vZGUubW9kZSA9IG1vZGU7CiAgbm9k
ZS5ub2RlX29wcyA9IFdPUktFUkZTLm5vZGVfb3BzOwogIG5vZGUuc3RyZWFtX29wcyA9IFdPUktF
UkZTLnN0cmVhbV9vcHM7CiAgbm9kZS50aW1lc3RhbXAgPSAobXRpbWUgfHwgbmV3IERhdGUpLmdl
dFRpbWUoKTsKICBpZiAocGFyZW50KSB7CiAgIG5vZGUuc2l6ZSA9IGNvbnRlbnRzLnNpemU7CiAg
IG5vZGUuY29udGVudHMgPSBjb250ZW50czsKICAgcGFyZW50LmNvbnRlbnRzW25hbWVdID0gbm9k
ZTsKICB9IGVsc2UgewogICBub2RlLnNpemUgPSA0MDk2OwogICBub2RlLmNvbnRlbnRzID0ge307
CiAgfQogIHJldHVybiBub2RlOwogfSksCiBub2RlX29wczogewogIGdldGF0dHI6IChmdW5jdGlv
bihub2RlKSB7CiAgIHJldHVybiB7CiAgICBkZXY6IDEsCiAgICBpbm86IHVuZGVmaW5lZCwKICAg
IG1vZGU6IG5vZGUubW9kZSwKICAgIG5saW5rOiAxLAogICAgdWlkOiAwLAogICAgZ2lkOiAwLAog
ICAgcmRldjogdW5kZWZpbmVkLAogICAgc2l6ZTogbm9kZS5zaXplLAogICAgYXRpbWU6IG5ldyBE
YXRlKG5vZGUudGltZXN0YW1wKSwKICAgIG10aW1lOiBuZXcgRGF0ZShub2RlLnRpbWVzdGFtcCks
CiAgICBjdGltZTogbmV3IERhdGUobm9kZS50aW1lc3RhbXApLAogICAgYmxrc2l6ZTogNDA5NiwK
ICAgIGJsb2NrczogTWF0aC5jZWlsKG5vZGUuc2l6ZSAvIDQwOTYpCiAgIH07CiAgfSksCiAgc2V0
YXR0cjogKGZ1bmN0aW9uKG5vZGUsIGF0dHIpIHsKICAgaWYgKGF0dHIubW9kZSAhPT0gdW5kZWZp
bmVkKSB7CiAgICBub2RlLm1vZGUgPSBhdHRyLm1vZGU7CiAgIH0KICAgaWYgKGF0dHIudGltZXN0
YW1wICE9PSB1bmRlZmluZWQpIHsKICAgIG5vZGUudGltZXN0YW1wID0gYXR0ci50aW1lc3RhbXA7
CiAgIH0KICB9KSwKICBsb29rdXA6IChmdW5jdGlvbihwYXJlbnQsIG5hbWUpIHsKICAgdGhyb3cg
bmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRU5PRU5UKTsKICB9KSwKICBta25vZDogKGZ1
bmN0aW9uKHBhcmVudCwgbmFtZSwgbW9kZSwgZGV2KSB7CiAgIHRocm93IG5ldyBGUy5FcnJub0Vy
cm9yKEVSUk5PX0NPREVTLkVQRVJNKTsKICB9KSwKICByZW5hbWU6IChmdW5jdGlvbihvbGROb2Rl
LCBuZXdEaXIsIG5ld05hbWUpIHsKICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09E
RVMuRVBFUk0pOwogIH0pLAogIHVubGluazogKGZ1bmN0aW9uKHBhcmVudCwgbmFtZSkgewogICB0
aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FUEVSTSk7CiAgfSksCiAgcm1kaXI6
IChmdW5jdGlvbihwYXJlbnQsIG5hbWUpIHsKICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJS
Tk9fQ09ERVMuRVBFUk0pOwogIH0pLAogIHJlYWRkaXI6IChmdW5jdGlvbihub2RlKSB7CiAgIHRo
cm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVQRVJNKTsKICB9KSwKICBzeW1saW5r
OiAoZnVuY3Rpb24ocGFyZW50LCBuZXdOYW1lLCBvbGRQYXRoKSB7CiAgIHRocm93IG5ldyBGUy5F
cnJub0Vycm9yKEVSUk5PX0NPREVTLkVQRVJNKTsKICB9KSwKICByZWFkbGluazogKGZ1bmN0aW9u
KG5vZGUpIHsKICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRVBFUk0pOwog
IH0pCiB9LAogc3RyZWFtX29wczogewogIHJlYWQ6IChmdW5jdGlvbihzdHJlYW0sIGJ1ZmZlciwg
b2Zmc2V0LCBsZW5ndGgsIHBvc2l0aW9uKSB7CiAgIGlmIChwb3NpdGlvbiA+PSBzdHJlYW0ubm9k
ZS5zaXplKSByZXR1cm4gMDsKICAgdmFyIGNodW5rID0gc3RyZWFtLm5vZGUuY29udGVudHMuc2xp
Y2UocG9zaXRpb24sIHBvc2l0aW9uICsgbGVuZ3RoKTsKICAgdmFyIGFiID0gV09SS0VSRlMucmVh
ZGVyLnJlYWRBc0FycmF5QnVmZmVyKGNodW5rKTsKICAgYnVmZmVyLnNldChuZXcgVWludDhBcnJh
eShhYiksIG9mZnNldCk7CiAgIHJldHVybiBjaHVuay5zaXplOwogIH0pLAogIHdyaXRlOiAoZnVu
Y3Rpb24oc3RyZWFtLCBidWZmZXIsIG9mZnNldCwgbGVuZ3RoLCBwb3NpdGlvbikgewogICB0aHJv
dyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FSU8pOwogIH0pLAogIGxsc2VlazogKGZ1
bmN0aW9uKHN0cmVhbSwgb2Zmc2V0LCB3aGVuY2UpIHsKICAgdmFyIHBvc2l0aW9uID0gb2Zmc2V0
OwogICBpZiAod2hlbmNlID09PSAxKSB7CiAgICBwb3NpdGlvbiArPSBzdHJlYW0ucG9zaXRpb247
CiAgIH0gZWxzZSBpZiAod2hlbmNlID09PSAyKSB7CiAgICBpZiAoRlMuaXNGaWxlKHN0cmVhbS5u
b2RlLm1vZGUpKSB7CiAgICAgcG9zaXRpb24gKz0gc3RyZWFtLm5vZGUuc2l6ZTsKICAgIH0KICAg
fQogICBpZiAocG9zaXRpb24gPCAwKSB7CiAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJO
T19DT0RFUy5FSU5WQUwpOwogICB9CiAgIHJldHVybiBwb3NpdGlvbjsKICB9KQogfQp9Owp2YXIg
X3N0ZGluID0gYWxsb2NhdGUoMSwgImkzMioiLCBBTExPQ19TVEFUSUMpOwp2YXIgX3N0ZG91dCA9
IGFsbG9jYXRlKDEsICJpMzIqIiwgQUxMT0NfU1RBVElDKTsKdmFyIF9zdGRlcnIgPSBhbGxvY2F0
ZSgxLCAiaTMyKiIsIEFMTE9DX1NUQVRJQyk7CnZhciBGUyA9IHsKIHJvb3Q6IG51bGwsCiBtb3Vu
dHM6IFtdLAogZGV2aWNlczogWyBudWxsIF0sCiBzdHJlYW1zOiBbXSwKIG5leHRJbm9kZTogMSwK
IG5hbWVUYWJsZTogbnVsbCwKIGN1cnJlbnRQYXRoOiAiLyIsCiBpbml0aWFsaXplZDogZmFsc2Us
CiBpZ25vcmVQZXJtaXNzaW9uczogdHJ1ZSwKIHRyYWNraW5nRGVsZWdhdGU6IHt9LAogdHJhY2tp
bmc6IHsKICBvcGVuRmxhZ3M6IHsKICAgUkVBRDogMSwKICAgV1JJVEU6IDIKICB9CiB9LAogRXJy
bm9FcnJvcjogbnVsbCwKIGdlbmVyaWNFcnJvcnM6IHt9LAogZmlsZXN5c3RlbXM6IG51bGwsCiBo
YW5kbGVGU0Vycm9yOiAoZnVuY3Rpb24oZSkgewogIGlmICghKGUgaW5zdGFuY2VvZiBGUy5FcnJu
b0Vycm9yKSkgdGhyb3cgZSArICIgOiAiICsgc3RhY2tUcmFjZSgpOwogIHJldHVybiBfX19zZXRF
cnJObyhlLmVycm5vKTsKIH0pLAogbG9va3VwUGF0aDogKGZ1bmN0aW9uKHBhdGgsIG9wdHMpIHsK
ICBwYXRoID0gUEFUSC5yZXNvbHZlKEZTLmN3ZCgpLCBwYXRoKTsKICBvcHRzID0gb3B0cyB8fCB7
fTsKICBpZiAoIXBhdGgpIHJldHVybiB7CiAgIHBhdGg6ICIiLAogICBub2RlOiBudWxsCiAgfTsK
ICB2YXIgZGVmYXVsdHMgPSB7CiAgIGZvbGxvd19tb3VudDogdHJ1ZSwKICAgcmVjdXJzZV9jb3Vu
dDogMAogIH07CiAgZm9yICh2YXIga2V5IGluIGRlZmF1bHRzKSB7CiAgIGlmIChvcHRzW2tleV0g
PT09IHVuZGVmaW5lZCkgewogICAgb3B0c1trZXldID0gZGVmYXVsdHNba2V5XTsKICAgfQogIH0K
ICBpZiAob3B0cy5yZWN1cnNlX2NvdW50ID4gOCkgewogICB0aHJvdyBuZXcgRlMuRXJybm9FcnJv
cihFUlJOT19DT0RFUy5FTE9PUCk7CiAgfQogIHZhciBwYXJ0cyA9IFBBVEgubm9ybWFsaXplQXJy
YXkocGF0aC5zcGxpdCgiLyIpLmZpbHRlcigoZnVuY3Rpb24ocCkgewogICByZXR1cm4gISFwOwog
IH0pKSwgZmFsc2UpOwogIHZhciBjdXJyZW50ID0gRlMucm9vdDsKICB2YXIgY3VycmVudF9wYXRo
ID0gIi8iOwogIGZvciAodmFyIGkgPSAwOyBpIDwgcGFydHMubGVuZ3RoOyBpKyspIHsKICAgdmFy
IGlzbGFzdCA9IGkgPT09IHBhcnRzLmxlbmd0aCAtIDE7CiAgIGlmIChpc2xhc3QgJiYgb3B0cy5w
YXJlbnQpIHsKICAgIGJyZWFrOwogICB9CiAgIGN1cnJlbnQgPSBGUy5sb29rdXBOb2RlKGN1cnJl
bnQsIHBhcnRzW2ldKTsKICAgY3VycmVudF9wYXRoID0gUEFUSC5qb2luMihjdXJyZW50X3BhdGgs
IHBhcnRzW2ldKTsKICAgaWYgKEZTLmlzTW91bnRwb2ludChjdXJyZW50KSkgewogICAgaWYgKCFp
c2xhc3QgfHwgaXNsYXN0ICYmIG9wdHMuZm9sbG93X21vdW50KSB7CiAgICAgY3VycmVudCA9IGN1
cnJlbnQubW91bnRlZC5yb290OwogICAgfQogICB9CiAgIGlmICghaXNsYXN0IHx8IG9wdHMuZm9s
bG93KSB7CiAgICB2YXIgY291bnQgPSAwOwogICAgd2hpbGUgKEZTLmlzTGluayhjdXJyZW50Lm1v
ZGUpKSB7CiAgICAgdmFyIGxpbmsgPSBGUy5yZWFkbGluayhjdXJyZW50X3BhdGgpOwogICAgIGN1
cnJlbnRfcGF0aCA9IFBBVEgucmVzb2x2ZShQQVRILmRpcm5hbWUoY3VycmVudF9wYXRoKSwgbGlu
ayk7CiAgICAgdmFyIGxvb2t1cCA9IEZTLmxvb2t1cFBhdGgoY3VycmVudF9wYXRoLCB7CiAgICAg
IHJlY3Vyc2VfY291bnQ6IG9wdHMucmVjdXJzZV9jb3VudAogICAgIH0pOwogICAgIGN1cnJlbnQg
PSBsb29rdXAubm9kZTsKICAgICBpZiAoY291bnQrKyA+IDQwKSB7CiAgICAgIHRocm93IG5ldyBG
Uy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVMT09QKTsKICAgICB9CiAgICB9CiAgIH0KICB9CiAg
cmV0dXJuIHsKICAgcGF0aDogY3VycmVudF9wYXRoLAogICBub2RlOiBjdXJyZW50CiAgfTsKIH0p
LAogZ2V0UGF0aDogKGZ1bmN0aW9uKG5vZGUpIHsKICB2YXIgcGF0aDsKICB3aGlsZSAodHJ1ZSkg
ewogICBpZiAoRlMuaXNSb290KG5vZGUpKSB7CiAgICB2YXIgbW91bnQgPSBub2RlLm1vdW50Lm1v
dW50cG9pbnQ7CiAgICBpZiAoIXBhdGgpIHJldHVybiBtb3VudDsKICAgIHJldHVybiBtb3VudFtt
b3VudC5sZW5ndGggLSAxXSAhPT0gIi8iID8gbW91bnQgKyAiLyIgKyBwYXRoIDogbW91bnQgKyBw
YXRoOwogICB9CiAgIHBhdGggPSBwYXRoID8gbm9kZS5uYW1lICsgIi8iICsgcGF0aCA6IG5vZGUu
bmFtZTsKICAgbm9kZSA9IG5vZGUucGFyZW50OwogIH0KIH0pLAogaGFzaE5hbWU6IChmdW5jdGlv
bihwYXJlbnRpZCwgbmFtZSkgewogIHZhciBoYXNoID0gMDsKICBmb3IgKHZhciBpID0gMDsgaSA8
IG5hbWUubGVuZ3RoOyBpKyspIHsKICAgaGFzaCA9IChoYXNoIDw8IDUpIC0gaGFzaCArIG5hbWUu
Y2hhckNvZGVBdChpKSB8IDA7CiAgfQogIHJldHVybiAocGFyZW50aWQgKyBoYXNoID4+PiAwKSAl
IEZTLm5hbWVUYWJsZS5sZW5ndGg7CiB9KSwKIGhhc2hBZGROb2RlOiAoZnVuY3Rpb24obm9kZSkg
ewogIHZhciBoYXNoID0gRlMuaGFzaE5hbWUobm9kZS5wYXJlbnQuaWQsIG5vZGUubmFtZSk7CiAg
bm9kZS5uYW1lX25leHQgPSBGUy5uYW1lVGFibGVbaGFzaF07CiAgRlMubmFtZVRhYmxlW2hhc2hd
ID0gbm9kZTsKIH0pLAogaGFzaFJlbW92ZU5vZGU6IChmdW5jdGlvbihub2RlKSB7CiAgdmFyIGhh
c2ggPSBGUy5oYXNoTmFtZShub2RlLnBhcmVudC5pZCwgbm9kZS5uYW1lKTsKICBpZiAoRlMubmFt
ZVRhYmxlW2hhc2hdID09PSBub2RlKSB7CiAgIEZTLm5hbWVUYWJsZVtoYXNoXSA9IG5vZGUubmFt
ZV9uZXh0OwogIH0gZWxzZSB7CiAgIHZhciBjdXJyZW50ID0gRlMubmFtZVRhYmxlW2hhc2hdOwog
ICB3aGlsZSAoY3VycmVudCkgewogICAgaWYgKGN1cnJlbnQubmFtZV9uZXh0ID09PSBub2RlKSB7
CiAgICAgY3VycmVudC5uYW1lX25leHQgPSBub2RlLm5hbWVfbmV4dDsKICAgICBicmVhazsKICAg
IH0KICAgIGN1cnJlbnQgPSBjdXJyZW50Lm5hbWVfbmV4dDsKICAgfQogIH0KIH0pLAogbG9va3Vw
Tm9kZTogKGZ1bmN0aW9uKHBhcmVudCwgbmFtZSkgewogIHZhciBlcnIgPSBGUy5tYXlMb29rdXAo
cGFyZW50KTsKICBpZiAoZXJyKSB7CiAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKGVyciwgcGFy
ZW50KTsKICB9CiAgdmFyIGhhc2ggPSBGUy5oYXNoTmFtZShwYXJlbnQuaWQsIG5hbWUpOwogIGZv
ciAodmFyIG5vZGUgPSBGUy5uYW1lVGFibGVbaGFzaF07IG5vZGU7IG5vZGUgPSBub2RlLm5hbWVf
bmV4dCkgewogICB2YXIgbm9kZU5hbWUgPSBub2RlLm5hbWU7CiAgIGlmIChub2RlLnBhcmVudC5p
ZCA9PT0gcGFyZW50LmlkICYmIG5vZGVOYW1lID09PSBuYW1lKSB7CiAgICByZXR1cm4gbm9kZTsK
ICAgfQogIH0KICByZXR1cm4gRlMubG9va3VwKHBhcmVudCwgbmFtZSk7CiB9KSwKIGNyZWF0ZU5v
ZGU6IChmdW5jdGlvbihwYXJlbnQsIG5hbWUsIG1vZGUsIHJkZXYpIHsKICBpZiAoIUZTLkZTTm9k
ZSkgewogICBGUy5GU05vZGUgPSAoZnVuY3Rpb24ocGFyZW50LCBuYW1lLCBtb2RlLCByZGV2KSB7
CiAgICBpZiAoIXBhcmVudCkgewogICAgIHBhcmVudCA9IHRoaXM7CiAgICB9CiAgICB0aGlzLnBh
cmVudCA9IHBhcmVudDsKICAgIHRoaXMubW91bnQgPSBwYXJlbnQubW91bnQ7CiAgICB0aGlzLm1v
dW50ZWQgPSBudWxsOwogICAgdGhpcy5pZCA9IEZTLm5leHRJbm9kZSsrOwogICAgdGhpcy5uYW1l
ID0gbmFtZTsKICAgIHRoaXMubW9kZSA9IG1vZGU7CiAgICB0aGlzLm5vZGVfb3BzID0ge307CiAg
ICB0aGlzLnN0cmVhbV9vcHMgPSB7fTsKICAgIHRoaXMucmRldiA9IHJkZXY7CiAgIH0pOwogICBG
Uy5GU05vZGUucHJvdG90eXBlID0ge307CiAgIHZhciByZWFkTW9kZSA9IDI5MiB8IDczOwogICB2
YXIgd3JpdGVNb2RlID0gMTQ2OwogICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhGUy5GU05vZGUu
cHJvdG90eXBlLCB7CiAgICByZWFkOiB7CiAgICAgZ2V0OiAoZnVuY3Rpb24oKSB7CiAgICAgIHJl
dHVybiAodGhpcy5tb2RlICYgcmVhZE1vZGUpID09PSByZWFkTW9kZTsKICAgICB9KSwKICAgICBz
ZXQ6IChmdW5jdGlvbih2YWwpIHsKICAgICAgdmFsID8gdGhpcy5tb2RlIHw9IHJlYWRNb2RlIDog
dGhpcy5tb2RlICY9IH5yZWFkTW9kZTsKICAgICB9KQogICAgfSwKICAgIHdyaXRlOiB7CiAgICAg
Z2V0OiAoZnVuY3Rpb24oKSB7CiAgICAgIHJldHVybiAodGhpcy5tb2RlICYgd3JpdGVNb2RlKSA9
PT0gd3JpdGVNb2RlOwogICAgIH0pLAogICAgIHNldDogKGZ1bmN0aW9uKHZhbCkgewogICAgICB2
YWwgPyB0aGlzLm1vZGUgfD0gd3JpdGVNb2RlIDogdGhpcy5tb2RlICY9IH53cml0ZU1vZGU7CiAg
ICAgfSkKICAgIH0sCiAgICBpc0ZvbGRlcjogewogICAgIGdldDogKGZ1bmN0aW9uKCkgewogICAg
ICByZXR1cm4gRlMuaXNEaXIodGhpcy5tb2RlKTsKICAgICB9KQogICAgfSwKICAgIGlzRGV2aWNl
OiB7CiAgICAgZ2V0OiAoZnVuY3Rpb24oKSB7CiAgICAgIHJldHVybiBGUy5pc0NocmRldih0aGlz
Lm1vZGUpOwogICAgIH0pCiAgICB9CiAgIH0pOwogIH0KICB2YXIgbm9kZSA9IG5ldyBGUy5GU05v
ZGUocGFyZW50LCBuYW1lLCBtb2RlLCByZGV2KTsKICBGUy5oYXNoQWRkTm9kZShub2RlKTsKICBy
ZXR1cm4gbm9kZTsKIH0pLAogZGVzdHJveU5vZGU6IChmdW5jdGlvbihub2RlKSB7CiAgRlMuaGFz
aFJlbW92ZU5vZGUobm9kZSk7CiB9KSwKIGlzUm9vdDogKGZ1bmN0aW9uKG5vZGUpIHsKICByZXR1
cm4gbm9kZSA9PT0gbm9kZS5wYXJlbnQ7CiB9KSwKIGlzTW91bnRwb2ludDogKGZ1bmN0aW9uKG5v
ZGUpIHsKICByZXR1cm4gISFub2RlLm1vdW50ZWQ7CiB9KSwKIGlzRmlsZTogKGZ1bmN0aW9uKG1v
ZGUpIHsKICByZXR1cm4gKG1vZGUgJiA2MTQ0MCkgPT09IDMyNzY4OwogfSksCiBpc0RpcjogKGZ1
bmN0aW9uKG1vZGUpIHsKICByZXR1cm4gKG1vZGUgJiA2MTQ0MCkgPT09IDE2Mzg0OwogfSksCiBp
c0xpbms6IChmdW5jdGlvbihtb2RlKSB7CiAgcmV0dXJuIChtb2RlICYgNjE0NDApID09PSA0MDk2
MDsKIH0pLAogaXNDaHJkZXY6IChmdW5jdGlvbihtb2RlKSB7CiAgcmV0dXJuIChtb2RlICYgNjE0
NDApID09PSA4MTkyOwogfSksCiBpc0Jsa2RldjogKGZ1bmN0aW9uKG1vZGUpIHsKICByZXR1cm4g
KG1vZGUgJiA2MTQ0MCkgPT09IDI0NTc2OwogfSksCiBpc0ZJRk86IChmdW5jdGlvbihtb2RlKSB7
CiAgcmV0dXJuIChtb2RlICYgNjE0NDApID09PSA0MDk2OwogfSksCiBpc1NvY2tldDogKGZ1bmN0
aW9uKG1vZGUpIHsKICByZXR1cm4gKG1vZGUgJiA0OTE1MikgPT09IDQ5MTUyOwogfSksCiBmbGFn
TW9kZXM6IHsKICAiciI6IDAsCiAgInJzIjogMTA1MjY3MiwKICAicisiOiAyLAogICJ3IjogNTc3
LAogICJ3eCI6IDcwNSwKICAieHciOiA3MDUsCiAgIncrIjogNTc4LAogICJ3eCsiOiA3MDYsCiAg
Inh3KyI6IDcwNiwKICAiYSI6IDEwODksCiAgImF4IjogMTIxNywKICAieGEiOiAxMjE3LAogICJh
KyI6IDEwOTAsCiAgImF4KyI6IDEyMTgsCiAgInhhKyI6IDEyMTgKIH0sCiBtb2RlU3RyaW5nVG9G
bGFnczogKGZ1bmN0aW9uKHN0cikgewogIHZhciBmbGFncyA9IEZTLmZsYWdNb2Rlc1tzdHJdOwog
IGlmICh0eXBlb2YgZmxhZ3MgPT09ICJ1bmRlZmluZWQiKSB7CiAgIHRocm93IG5ldyBFcnJvcigi
VW5rbm93biBmaWxlIG9wZW4gbW9kZTogIiArIHN0cik7CiAgfQogIHJldHVybiBmbGFnczsKIH0p
LAogZmxhZ3NUb1Blcm1pc3Npb25TdHJpbmc6IChmdW5jdGlvbihmbGFnKSB7CiAgdmFyIHBlcm1z
ID0gWyAiciIsICJ3IiwgInJ3IiBdW2ZsYWcgJiAzXTsKICBpZiAoZmxhZyAmIDUxMikgewogICBw
ZXJtcyArPSAidyI7CiAgfQogIHJldHVybiBwZXJtczsKIH0pLAogbm9kZVBlcm1pc3Npb25zOiAo
ZnVuY3Rpb24obm9kZSwgcGVybXMpIHsKICBpZiAoRlMuaWdub3JlUGVybWlzc2lvbnMpIHsKICAg
cmV0dXJuIDA7CiAgfQogIGlmIChwZXJtcy5pbmRleE9mKCJyIikgIT09IC0xICYmICEobm9kZS5t
b2RlICYgMjkyKSkgewogICByZXR1cm4gRVJSTk9fQ09ERVMuRUFDQ0VTOwogIH0gZWxzZSBpZiAo
cGVybXMuaW5kZXhPZigidyIpICE9PSAtMSAmJiAhKG5vZGUubW9kZSAmIDE0NikpIHsKICAgcmV0
dXJuIEVSUk5PX0NPREVTLkVBQ0NFUzsKICB9IGVsc2UgaWYgKHBlcm1zLmluZGV4T2YoIngiKSAh
PT0gLTEgJiYgIShub2RlLm1vZGUgJiA3MykpIHsKICAgcmV0dXJuIEVSUk5PX0NPREVTLkVBQ0NF
UzsKICB9CiAgcmV0dXJuIDA7CiB9KSwKIG1heUxvb2t1cDogKGZ1bmN0aW9uKGRpcikgewogIHZh
ciBlcnIgPSBGUy5ub2RlUGVybWlzc2lvbnMoZGlyLCAieCIpOwogIGlmIChlcnIpIHJldHVybiBl
cnI7CiAgaWYgKCFkaXIubm9kZV9vcHMubG9va3VwKSByZXR1cm4gRVJSTk9fQ09ERVMuRUFDQ0VT
OwogIHJldHVybiAwOwogfSksCiBtYXlDcmVhdGU6IChmdW5jdGlvbihkaXIsIG5hbWUpIHsKICB0
cnkgewogICB2YXIgbm9kZSA9IEZTLmxvb2t1cE5vZGUoZGlyLCBuYW1lKTsKICAgcmV0dXJuIEVS
Uk5PX0NPREVTLkVFWElTVDsKICB9IGNhdGNoIChlKSB7fQogIHJldHVybiBGUy5ub2RlUGVybWlz
c2lvbnMoZGlyLCAid3giKTsKIH0pLAogbWF5RGVsZXRlOiAoZnVuY3Rpb24oZGlyLCBuYW1lLCBp
c2RpcikgewogIHZhciBub2RlOwogIHRyeSB7CiAgIG5vZGUgPSBGUy5sb29rdXBOb2RlKGRpciwg
bmFtZSk7CiAgfSBjYXRjaCAoZSkgewogICByZXR1cm4gZS5lcnJubzsKICB9CiAgdmFyIGVyciA9
IEZTLm5vZGVQZXJtaXNzaW9ucyhkaXIsICJ3eCIpOwogIGlmIChlcnIpIHsKICAgcmV0dXJuIGVy
cjsKICB9CiAgaWYgKGlzZGlyKSB7CiAgIGlmICghRlMuaXNEaXIobm9kZS5tb2RlKSkgewogICAg
cmV0dXJuIEVSUk5PX0NPREVTLkVOT1RESVI7CiAgIH0KICAgaWYgKEZTLmlzUm9vdChub2RlKSB8
fCBGUy5nZXRQYXRoKG5vZGUpID09PSBGUy5jd2QoKSkgewogICAgcmV0dXJuIEVSUk5PX0NPREVT
LkVCVVNZOwogICB9CiAgfSBlbHNlIHsKICAgaWYgKEZTLmlzRGlyKG5vZGUubW9kZSkpIHsKICAg
IHJldHVybiBFUlJOT19DT0RFUy5FSVNESVI7CiAgIH0KICB9CiAgcmV0dXJuIDA7CiB9KSwKIG1h
eU9wZW46IChmdW5jdGlvbihub2RlLCBmbGFncykgewogIGlmICghbm9kZSkgewogICByZXR1cm4g
RVJSTk9fQ09ERVMuRU5PRU5UOwogIH0KICBpZiAoRlMuaXNMaW5rKG5vZGUubW9kZSkpIHsKICAg
cmV0dXJuIEVSUk5PX0NPREVTLkVMT09QOwogIH0gZWxzZSBpZiAoRlMuaXNEaXIobm9kZS5tb2Rl
KSkgewogICBpZiAoKGZsYWdzICYgMjA5NzE1NSkgIT09IDAgfHwgZmxhZ3MgJiA1MTIpIHsKICAg
IHJldHVybiBFUlJOT19DT0RFUy5FSVNESVI7CiAgIH0KICB9CiAgcmV0dXJuIEZTLm5vZGVQZXJt
aXNzaW9ucyhub2RlLCBGUy5mbGFnc1RvUGVybWlzc2lvblN0cmluZyhmbGFncykpOwogfSksCiBN
QVhfT1BFTl9GRFM6IDQwOTYsCiBuZXh0ZmQ6IChmdW5jdGlvbihmZF9zdGFydCwgZmRfZW5kKSB7
CiAgZmRfc3RhcnQgPSBmZF9zdGFydCB8fCAwOwogIGZkX2VuZCA9IGZkX2VuZCB8fCBGUy5NQVhf
T1BFTl9GRFM7CiAgZm9yICh2YXIgZmQgPSBmZF9zdGFydDsgZmQgPD0gZmRfZW5kOyBmZCsrKSB7
CiAgIGlmICghRlMuc3RyZWFtc1tmZF0pIHsKICAgIHJldHVybiBmZDsKICAgfQogIH0KICB0aHJv
dyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FTUZJTEUpOwogfSksCiBnZXRTdHJlYW06
IChmdW5jdGlvbihmZCkgewogIHJldHVybiBGUy5zdHJlYW1zW2ZkXTsKIH0pLAogY3JlYXRlU3Ry
ZWFtOiAoZnVuY3Rpb24oc3RyZWFtLCBmZF9zdGFydCwgZmRfZW5kKSB7CiAgaWYgKCFGUy5GU1N0
cmVhbSkgewogICBGUy5GU1N0cmVhbSA9IChmdW5jdGlvbigpIHt9KTsKICAgRlMuRlNTdHJlYW0u
cHJvdG90eXBlID0ge307CiAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEZTLkZTU3RyZWFtLnBy
b3RvdHlwZSwgewogICAgb2JqZWN0OiB7CiAgICAgZ2V0OiAoZnVuY3Rpb24oKSB7CiAgICAgIHJl
dHVybiB0aGlzLm5vZGU7CiAgICAgfSksCiAgICAgc2V0OiAoZnVuY3Rpb24odmFsKSB7CiAgICAg
IHRoaXMubm9kZSA9IHZhbDsKICAgICB9KQogICAgfSwKICAgIGlzUmVhZDogewogICAgIGdldDog
KGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gKHRoaXMuZmxhZ3MgJiAyMDk3MTU1KSAhPT0gMTsK
ICAgICB9KQogICAgfSwKICAgIGlzV3JpdGU6IHsKICAgICBnZXQ6IChmdW5jdGlvbigpIHsKICAg
ICAgcmV0dXJuICh0aGlzLmZsYWdzICYgMjA5NzE1NSkgIT09IDA7CiAgICAgfSkKICAgIH0sCiAg
ICBpc0FwcGVuZDogewogICAgIGdldDogKGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gdGhpcy5m
bGFncyAmIDEwMjQ7CiAgICAgfSkKICAgIH0KICAgfSk7CiAgfQogIHZhciBuZXdTdHJlYW0gPSBu
ZXcgRlMuRlNTdHJlYW07CiAgZm9yICh2YXIgcCBpbiBzdHJlYW0pIHsKICAgbmV3U3RyZWFtW3Bd
ID0gc3RyZWFtW3BdOwogIH0KICBzdHJlYW0gPSBuZXdTdHJlYW07CiAgdmFyIGZkID0gRlMubmV4
dGZkKGZkX3N0YXJ0LCBmZF9lbmQpOwogIHN0cmVhbS5mZCA9IGZkOwogIEZTLnN0cmVhbXNbZmRd
ID0gc3RyZWFtOwogIHJldHVybiBzdHJlYW07CiB9KSwKIGNsb3NlU3RyZWFtOiAoZnVuY3Rpb24o
ZmQpIHsKICBGUy5zdHJlYW1zW2ZkXSA9IG51bGw7CiB9KSwKIGNocmRldl9zdHJlYW1fb3BzOiB7
CiAgb3BlbjogKGZ1bmN0aW9uKHN0cmVhbSkgewogICB2YXIgZGV2aWNlID0gRlMuZ2V0RGV2aWNl
KHN0cmVhbS5ub2RlLnJkZXYpOwogICBzdHJlYW0uc3RyZWFtX29wcyA9IGRldmljZS5zdHJlYW1f
b3BzOwogICBpZiAoc3RyZWFtLnN0cmVhbV9vcHMub3BlbikgewogICAgc3RyZWFtLnN0cmVhbV9v
cHMub3BlbihzdHJlYW0pOwogICB9CiAgfSksCiAgbGxzZWVrOiAoZnVuY3Rpb24oKSB7CiAgIHRo
cm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVTUElQRSk7CiAgfSkKIH0sCiBtYWpv
cjogKGZ1bmN0aW9uKGRldikgewogIHJldHVybiBkZXYgPj4gODsKIH0pLAogbWlub3I6IChmdW5j
dGlvbihkZXYpIHsKICByZXR1cm4gZGV2ICYgMjU1OwogfSksCiBtYWtlZGV2OiAoZnVuY3Rpb24o
bWEsIG1pKSB7CiAgcmV0dXJuIG1hIDw8IDggfCBtaTsKIH0pLAogcmVnaXN0ZXJEZXZpY2U6IChm
dW5jdGlvbihkZXYsIG9wcykgewogIEZTLmRldmljZXNbZGV2XSA9IHsKICAgc3RyZWFtX29wczog
b3BzCiAgfTsKIH0pLAogZ2V0RGV2aWNlOiAoZnVuY3Rpb24oZGV2KSB7CiAgcmV0dXJuIEZTLmRl
dmljZXNbZGV2XTsKIH0pLAogZ2V0TW91bnRzOiAoZnVuY3Rpb24obW91bnQpIHsKICB2YXIgbW91
bnRzID0gW107CiAgdmFyIGNoZWNrID0gWyBtb3VudCBdOwogIHdoaWxlIChjaGVjay5sZW5ndGgp
IHsKICAgdmFyIG0gPSBjaGVjay5wb3AoKTsKICAgbW91bnRzLnB1c2gobSk7CiAgIGNoZWNrLnB1
c2guYXBwbHkoY2hlY2ssIG0ubW91bnRzKTsKICB9CiAgcmV0dXJuIG1vdW50czsKIH0pLAogc3lu
Y2ZzOiAoZnVuY3Rpb24ocG9wdWxhdGUsIGNhbGxiYWNrKSB7CiAgaWYgKHR5cGVvZiBwb3B1bGF0
ZSA9PT0gImZ1bmN0aW9uIikgewogICBjYWxsYmFjayA9IHBvcHVsYXRlOwogICBwb3B1bGF0ZSA9
IGZhbHNlOwogIH0KICB2YXIgbW91bnRzID0gRlMuZ2V0TW91bnRzKEZTLnJvb3QubW91bnQpOwog
IHZhciBjb21wbGV0ZWQgPSAwOwogIGZ1bmN0aW9uIGRvbmUoZXJyKSB7CiAgIGlmIChlcnIpIHsK
ICAgIGlmICghZG9uZS5lcnJvcmVkKSB7CiAgICAgZG9uZS5lcnJvcmVkID0gdHJ1ZTsKICAgICBy
ZXR1cm4gY2FsbGJhY2soZXJyKTsKICAgIH0KICAgIHJldHVybjsKICAgfQogICBpZiAoKytjb21w
bGV0ZWQgPj0gbW91bnRzLmxlbmd0aCkgewogICAgY2FsbGJhY2sobnVsbCk7CiAgIH0KICB9CiAg
bW91bnRzLmZvckVhY2goKGZ1bmN0aW9uKG1vdW50KSB7CiAgIGlmICghbW91bnQudHlwZS5zeW5j
ZnMpIHsKICAgIHJldHVybiBkb25lKG51bGwpOwogICB9CiAgIG1vdW50LnR5cGUuc3luY2ZzKG1v
dW50LCBwb3B1bGF0ZSwgZG9uZSk7CiAgfSkpOwogfSksCiBtb3VudDogKGZ1bmN0aW9uKHR5cGUs
IG9wdHMsIG1vdW50cG9pbnQpIHsKICB2YXIgcm9vdCA9IG1vdW50cG9pbnQgPT09ICIvIjsKICB2
YXIgcHNldWRvID0gIW1vdW50cG9pbnQ7CiAgdmFyIG5vZGU7CiAgaWYgKHJvb3QgJiYgRlMucm9v
dCkgewogICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FQlVTWSk7CiAgfSBl
bHNlIGlmICghcm9vdCAmJiAhcHNldWRvKSB7CiAgIHZhciBsb29rdXAgPSBGUy5sb29rdXBQYXRo
KG1vdW50cG9pbnQsIHsKICAgIGZvbGxvd19tb3VudDogZmFsc2UKICAgfSk7CiAgIG1vdW50cG9p
bnQgPSBsb29rdXAucGF0aDsKICAgbm9kZSA9IGxvb2t1cC5ub2RlOwogICBpZiAoRlMuaXNNb3Vu
dHBvaW50KG5vZGUpKSB7CiAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5F
QlVTWSk7CiAgIH0KICAgaWYgKCFGUy5pc0Rpcihub2RlLm1vZGUpKSB7CiAgICB0aHJvdyBuZXcg
RlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FTk9URElSKTsKICAgfQogIH0KICB2YXIgbW91bnQg
PSB7CiAgIHR5cGU6IHR5cGUsCiAgIG9wdHM6IG9wdHMsCiAgIG1vdW50cG9pbnQ6IG1vdW50cG9p
bnQsCiAgIG1vdW50czogW10KICB9OwogIHZhciBtb3VudFJvb3QgPSB0eXBlLm1vdW50KG1vdW50
KTsKICBtb3VudFJvb3QubW91bnQgPSBtb3VudDsKICBtb3VudC5yb290ID0gbW91bnRSb290Owog
IGlmIChyb290KSB7CiAgIEZTLnJvb3QgPSBtb3VudFJvb3Q7CiAgfSBlbHNlIGlmIChub2RlKSB7
CiAgIG5vZGUubW91bnRlZCA9IG1vdW50OwogICBpZiAobm9kZS5tb3VudCkgewogICAgbm9kZS5t
b3VudC5tb3VudHMucHVzaChtb3VudCk7CiAgIH0KICB9CiAgcmV0dXJuIG1vdW50Um9vdDsKIH0p
LAogdW5tb3VudDogKGZ1bmN0aW9uKG1vdW50cG9pbnQpIHsKICB2YXIgbG9va3VwID0gRlMubG9v
a3VwUGF0aChtb3VudHBvaW50LCB7CiAgIGZvbGxvd19tb3VudDogZmFsc2UKICB9KTsKICBpZiAo
IUZTLmlzTW91bnRwb2ludChsb29rdXAubm9kZSkpIHsKICAgdGhyb3cgbmV3IEZTLkVycm5vRXJy
b3IoRVJSTk9fQ09ERVMuRUlOVkFMKTsKICB9CiAgdmFyIG5vZGUgPSBsb29rdXAubm9kZTsKICB2
YXIgbW91bnQgPSBub2RlLm1vdW50ZWQ7CiAgdmFyIG1vdW50cyA9IEZTLmdldE1vdW50cyhtb3Vu
dCk7CiAgT2JqZWN0LmtleXMoRlMubmFtZVRhYmxlKS5mb3JFYWNoKChmdW5jdGlvbihoYXNoKSB7
CiAgIHZhciBjdXJyZW50ID0gRlMubmFtZVRhYmxlW2hhc2hdOwogICB3aGlsZSAoY3VycmVudCkg
ewogICAgdmFyIG5leHQgPSBjdXJyZW50Lm5hbWVfbmV4dDsKICAgIGlmIChtb3VudHMuaW5kZXhP
ZihjdXJyZW50Lm1vdW50KSAhPT0gLTEpIHsKICAgICBGUy5kZXN0cm95Tm9kZShjdXJyZW50KTsK
ICAgIH0KICAgIGN1cnJlbnQgPSBuZXh0OwogICB9CiAgfSkpOwogIG5vZGUubW91bnRlZCA9IG51
bGw7CiAgdmFyIGlkeCA9IG5vZGUubW91bnQubW91bnRzLmluZGV4T2YobW91bnQpOwogIGFzc2Vy
dChpZHggIT09IC0xKTsKICBub2RlLm1vdW50Lm1vdW50cy5zcGxpY2UoaWR4LCAxKTsKIH0pLAog
bG9va3VwOiAoZnVuY3Rpb24ocGFyZW50LCBuYW1lKSB7CiAgcmV0dXJuIHBhcmVudC5ub2RlX29w
cy5sb29rdXAocGFyZW50LCBuYW1lKTsKIH0pLAogbWtub2Q6IChmdW5jdGlvbihwYXRoLCBtb2Rl
LCBkZXYpIHsKICB2YXIgbG9va3VwID0gRlMubG9va3VwUGF0aChwYXRoLCB7CiAgIHBhcmVudDog
dHJ1ZQogIH0pOwogIHZhciBwYXJlbnQgPSBsb29rdXAubm9kZTsKICB2YXIgbmFtZSA9IFBBVEgu
YmFzZW5hbWUocGF0aCk7CiAgaWYgKCFuYW1lIHx8IG5hbWUgPT09ICIuIiB8fCBuYW1lID09PSAi
Li4iKSB7CiAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVJTlZBTCk7CiAg
fQogIHZhciBlcnIgPSBGUy5tYXlDcmVhdGUocGFyZW50LCBuYW1lKTsKICBpZiAoZXJyKSB7CiAg
IHRocm93IG5ldyBGUy5FcnJub0Vycm9yKGVycik7CiAgfQogIGlmICghcGFyZW50Lm5vZGVfb3Bz
Lm1rbm9kKSB7CiAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVQRVJNKTsK
ICB9CiAgcmV0dXJuIHBhcmVudC5ub2RlX29wcy5ta25vZChwYXJlbnQsIG5hbWUsIG1vZGUsIGRl
dik7CiB9KSwKIGNyZWF0ZTogKGZ1bmN0aW9uKHBhdGgsIG1vZGUpIHsKICBtb2RlID0gbW9kZSAh
PT0gdW5kZWZpbmVkID8gbW9kZSA6IDQzODsKICBtb2RlICY9IDQwOTU7CiAgbW9kZSB8PSAzMjc2
ODsKICByZXR1cm4gRlMubWtub2QocGF0aCwgbW9kZSwgMCk7CiB9KSwKIG1rZGlyOiAoZnVuY3Rp
b24ocGF0aCwgbW9kZSkgewogIG1vZGUgPSBtb2RlICE9PSB1bmRlZmluZWQgPyBtb2RlIDogNTEx
OwogIG1vZGUgJj0gNTExIHwgNTEyOwogIG1vZGUgfD0gMTYzODQ7CiAgcmV0dXJuIEZTLm1rbm9k
KHBhdGgsIG1vZGUsIDApOwogfSksCiBta2RldjogKGZ1bmN0aW9uKHBhdGgsIG1vZGUsIGRldikg
ewogIGlmICh0eXBlb2YgZGV2ID09PSAidW5kZWZpbmVkIikgewogICBkZXYgPSBtb2RlOwogICBt
b2RlID0gNDM4OwogIH0KICBtb2RlIHw9IDgxOTI7CiAgcmV0dXJuIEZTLm1rbm9kKHBhdGgsIG1v
ZGUsIGRldik7CiB9KSwKIHN5bWxpbms6IChmdW5jdGlvbihvbGRwYXRoLCBuZXdwYXRoKSB7CiAg
aWYgKCFQQVRILnJlc29sdmUob2xkcGF0aCkpIHsKICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3Io
RVJSTk9fQ09ERVMuRU5PRU5UKTsKICB9CiAgdmFyIGxvb2t1cCA9IEZTLmxvb2t1cFBhdGgobmV3
cGF0aCwgewogICBwYXJlbnQ6IHRydWUKICB9KTsKICB2YXIgcGFyZW50ID0gbG9va3VwLm5vZGU7
CiAgaWYgKCFwYXJlbnQpIHsKICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMu
RU5PRU5UKTsKICB9CiAgdmFyIG5ld25hbWUgPSBQQVRILmJhc2VuYW1lKG5ld3BhdGgpOwogIHZh
ciBlcnIgPSBGUy5tYXlDcmVhdGUocGFyZW50LCBuZXduYW1lKTsKICBpZiAoZXJyKSB7CiAgIHRo
cm93IG5ldyBGUy5FcnJub0Vycm9yKGVycik7CiAgfQogIGlmICghcGFyZW50Lm5vZGVfb3BzLnN5
bWxpbmspIHsKICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRVBFUk0pOwog
IH0KICByZXR1cm4gcGFyZW50Lm5vZGVfb3BzLnN5bWxpbmsocGFyZW50LCBuZXduYW1lLCBvbGRw
YXRoKTsKIH0pLAogcmVuYW1lOiAoZnVuY3Rpb24ob2xkX3BhdGgsIG5ld19wYXRoKSB7CiAgdmFy
IG9sZF9kaXJuYW1lID0gUEFUSC5kaXJuYW1lKG9sZF9wYXRoKTsKICB2YXIgbmV3X2Rpcm5hbWUg
PSBQQVRILmRpcm5hbWUobmV3X3BhdGgpOwogIHZhciBvbGRfbmFtZSA9IFBBVEguYmFzZW5hbWUo
b2xkX3BhdGgpOwogIHZhciBuZXdfbmFtZSA9IFBBVEguYmFzZW5hbWUobmV3X3BhdGgpOwogIHZh
ciBsb29rdXAsIG9sZF9kaXIsIG5ld19kaXI7CiAgdHJ5IHsKICAgbG9va3VwID0gRlMubG9va3Vw
UGF0aChvbGRfcGF0aCwgewogICAgcGFyZW50OiB0cnVlCiAgIH0pOwogICBvbGRfZGlyID0gbG9v
a3VwLm5vZGU7CiAgIGxvb2t1cCA9IEZTLmxvb2t1cFBhdGgobmV3X3BhdGgsIHsKICAgIHBhcmVu
dDogdHJ1ZQogICB9KTsKICAgbmV3X2RpciA9IGxvb2t1cC5ub2RlOwogIH0gY2F0Y2ggKGUpIHsK
ICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUJVU1kpOwogIH0KICBpZiAo
IW9sZF9kaXIgfHwgIW5ld19kaXIpIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVT
LkVOT0VOVCk7CiAgaWYgKG9sZF9kaXIubW91bnQgIT09IG5ld19kaXIubW91bnQpIHsKICAgdGhy
b3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRVhERVYpOwogIH0KICB2YXIgb2xkX25v
ZGUgPSBGUy5sb29rdXBOb2RlKG9sZF9kaXIsIG9sZF9uYW1lKTsKICB2YXIgcmVsYXRpdmUgPSBQ
QVRILnJlbGF0aXZlKG9sZF9wYXRoLCBuZXdfZGlybmFtZSk7CiAgaWYgKHJlbGF0aXZlLmNoYXJB
dCgwKSAhPT0gIi4iKSB7CiAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVJ
TlZBTCk7CiAgfQogIHJlbGF0aXZlID0gUEFUSC5yZWxhdGl2ZShuZXdfcGF0aCwgb2xkX2Rpcm5h
bWUpOwogIGlmIChyZWxhdGl2ZS5jaGFyQXQoMCkgIT09ICIuIikgewogICB0aHJvdyBuZXcgRlMu
RXJybm9FcnJvcihFUlJOT19DT0RFUy5FTk9URU1QVFkpOwogIH0KICB2YXIgbmV3X25vZGU7CiAg
dHJ5IHsKICAgbmV3X25vZGUgPSBGUy5sb29rdXBOb2RlKG5ld19kaXIsIG5ld19uYW1lKTsKICB9
IGNhdGNoIChlKSB7fQogIGlmIChvbGRfbm9kZSA9PT0gbmV3X25vZGUpIHsKICAgcmV0dXJuOwog
IH0KICB2YXIgaXNkaXIgPSBGUy5pc0RpcihvbGRfbm9kZS5tb2RlKTsKICB2YXIgZXJyID0gRlMu
bWF5RGVsZXRlKG9sZF9kaXIsIG9sZF9uYW1lLCBpc2Rpcik7CiAgaWYgKGVycikgewogICB0aHJv
dyBuZXcgRlMuRXJybm9FcnJvcihlcnIpOwogIH0KICBlcnIgPSBuZXdfbm9kZSA/IEZTLm1heURl
bGV0ZShuZXdfZGlyLCBuZXdfbmFtZSwgaXNkaXIpIDogRlMubWF5Q3JlYXRlKG5ld19kaXIsIG5l
d19uYW1lKTsKICBpZiAoZXJyKSB7CiAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKGVycik7CiAg
fQogIGlmICghb2xkX2Rpci5ub2RlX29wcy5yZW5hbWUpIHsKICAgdGhyb3cgbmV3IEZTLkVycm5v
RXJyb3IoRVJSTk9fQ09ERVMuRVBFUk0pOwogIH0KICBpZiAoRlMuaXNNb3VudHBvaW50KG9sZF9u
b2RlKSB8fCBuZXdfbm9kZSAmJiBGUy5pc01vdW50cG9pbnQobmV3X25vZGUpKSB7CiAgIHRocm93
IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVCVVNZKTsKICB9CiAgaWYgKG5ld19kaXIg
IT09IG9sZF9kaXIpIHsKICAgZXJyID0gRlMubm9kZVBlcm1pc3Npb25zKG9sZF9kaXIsICJ3Iik7
CiAgIGlmIChlcnIpIHsKICAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKGVycik7CiAgIH0KICB9
CiAgdHJ5IHsKICAgaWYgKEZTLnRyYWNraW5nRGVsZWdhdGVbIndpbGxNb3ZlUGF0aCJdKSB7CiAg
ICBGUy50cmFja2luZ0RlbGVnYXRlWyJ3aWxsTW92ZVBhdGgiXShvbGRfcGF0aCwgbmV3X3BhdGgp
OwogICB9CiAgfSBjYXRjaCAoZSkgewogICBjb25zb2xlLmxvZygiRlMudHJhY2tpbmdEZWxlZ2F0
ZVsnd2lsbE1vdmVQYXRoJ10oJyIgKyBvbGRfcGF0aCArICInLCAnIiArIG5ld19wYXRoICsgIicp
IHRocmV3IGFuIGV4Y2VwdGlvbjogIiArIGUubWVzc2FnZSk7CiAgfQogIEZTLmhhc2hSZW1vdmVO
b2RlKG9sZF9ub2RlKTsKICB0cnkgewogICBvbGRfZGlyLm5vZGVfb3BzLnJlbmFtZShvbGRfbm9k
ZSwgbmV3X2RpciwgbmV3X25hbWUpOwogIH0gY2F0Y2ggKGUpIHsKICAgdGhyb3cgZTsKICB9IGZp
bmFsbHkgewogICBGUy5oYXNoQWRkTm9kZShvbGRfbm9kZSk7CiAgfQogIHRyeSB7CiAgIGlmIChG
Uy50cmFja2luZ0RlbGVnYXRlWyJvbk1vdmVQYXRoIl0pIEZTLnRyYWNraW5nRGVsZWdhdGVbIm9u
TW92ZVBhdGgiXShvbGRfcGF0aCwgbmV3X3BhdGgpOwogIH0gY2F0Y2ggKGUpIHsKICAgY29uc29s
ZS5sb2coIkZTLnRyYWNraW5nRGVsZWdhdGVbJ29uTW92ZVBhdGgnXSgnIiArIG9sZF9wYXRoICsg
IicsICciICsgbmV3X3BhdGggKyAiJykgdGhyZXcgYW4gZXhjZXB0aW9uOiAiICsgZS5tZXNzYWdl
KTsKICB9CiB9KSwKIHJtZGlyOiAoZnVuY3Rpb24ocGF0aCkgewogIHZhciBsb29rdXAgPSBGUy5s
b29rdXBQYXRoKHBhdGgsIHsKICAgcGFyZW50OiB0cnVlCiAgfSk7CiAgdmFyIHBhcmVudCA9IGxv
b2t1cC5ub2RlOwogIHZhciBuYW1lID0gUEFUSC5iYXNlbmFtZShwYXRoKTsKICB2YXIgbm9kZSA9
IEZTLmxvb2t1cE5vZGUocGFyZW50LCBuYW1lKTsKICB2YXIgZXJyID0gRlMubWF5RGVsZXRlKHBh
cmVudCwgbmFtZSwgdHJ1ZSk7CiAgaWYgKGVycikgewogICB0aHJvdyBuZXcgRlMuRXJybm9FcnJv
cihlcnIpOwogIH0KICBpZiAoIXBhcmVudC5ub2RlX29wcy5ybWRpcikgewogICB0aHJvdyBuZXcg
RlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FUEVSTSk7CiAgfQogIGlmIChGUy5pc01vdW50cG9p
bnQobm9kZSkpIHsKICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUJVU1kp
OwogIH0KICB0cnkgewogICBpZiAoRlMudHJhY2tpbmdEZWxlZ2F0ZVsid2lsbERlbGV0ZVBhdGgi
XSkgewogICAgRlMudHJhY2tpbmdEZWxlZ2F0ZVsid2lsbERlbGV0ZVBhdGgiXShwYXRoKTsKICAg
fQogIH0gY2F0Y2ggKGUpIHsKICAgY29uc29sZS5sb2coIkZTLnRyYWNraW5nRGVsZWdhdGVbJ3dp
bGxEZWxldGVQYXRoJ10oJyIgKyBwYXRoICsgIicpIHRocmV3IGFuIGV4Y2VwdGlvbjogIiArIGUu
bWVzc2FnZSk7CiAgfQogIHBhcmVudC5ub2RlX29wcy5ybWRpcihwYXJlbnQsIG5hbWUpOwogIEZT
LmRlc3Ryb3lOb2RlKG5vZGUpOwogIHRyeSB7CiAgIGlmIChGUy50cmFja2luZ0RlbGVnYXRlWyJv
bkRlbGV0ZVBhdGgiXSkgRlMudHJhY2tpbmdEZWxlZ2F0ZVsib25EZWxldGVQYXRoIl0ocGF0aCk7
CiAgfSBjYXRjaCAoZSkgewogICBjb25zb2xlLmxvZygiRlMudHJhY2tpbmdEZWxlZ2F0ZVsnb25E
ZWxldGVQYXRoJ10oJyIgKyBwYXRoICsgIicpIHRocmV3IGFuIGV4Y2VwdGlvbjogIiArIGUubWVz
c2FnZSk7CiAgfQogfSksCiByZWFkZGlyOiAoZnVuY3Rpb24ocGF0aCkgewogIHZhciBsb29rdXAg
PSBGUy5sb29rdXBQYXRoKHBhdGgsIHsKICAgZm9sbG93OiB0cnVlCiAgfSk7CiAgdmFyIG5vZGUg
PSBsb29rdXAubm9kZTsKICBpZiAoIW5vZGUubm9kZV9vcHMucmVhZGRpcikgewogICB0aHJvdyBu
ZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FTk9URElSKTsKICB9CiAgcmV0dXJuIG5vZGUu
bm9kZV9vcHMucmVhZGRpcihub2RlKTsKIH0pLAogdW5saW5rOiAoZnVuY3Rpb24ocGF0aCkgewog
IHZhciBsb29rdXAgPSBGUy5sb29rdXBQYXRoKHBhdGgsIHsKICAgcGFyZW50OiB0cnVlCiAgfSk7
CiAgdmFyIHBhcmVudCA9IGxvb2t1cC5ub2RlOwogIHZhciBuYW1lID0gUEFUSC5iYXNlbmFtZShw
YXRoKTsKICB2YXIgbm9kZSA9IEZTLmxvb2t1cE5vZGUocGFyZW50LCBuYW1lKTsKICB2YXIgZXJy
ID0gRlMubWF5RGVsZXRlKHBhcmVudCwgbmFtZSwgZmFsc2UpOwogIGlmIChlcnIpIHsKICAgaWYg
KGVyciA9PT0gRVJSTk9fQ09ERVMuRUlTRElSKSBlcnIgPSBFUlJOT19DT0RFUy5FUEVSTTsKICAg
dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoZXJyKTsKICB9CiAgaWYgKCFwYXJlbnQubm9kZV9vcHMu
dW5saW5rKSB7CiAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVQRVJNKTsK
ICB9CiAgaWYgKEZTLmlzTW91bnRwb2ludChub2RlKSkgewogICB0aHJvdyBuZXcgRlMuRXJybm9F
cnJvcihFUlJOT19DT0RFUy5FQlVTWSk7CiAgfQogIHRyeSB7CiAgIGlmIChGUy50cmFja2luZ0Rl
bGVnYXRlWyJ3aWxsRGVsZXRlUGF0aCJdKSB7CiAgICBGUy50cmFja2luZ0RlbGVnYXRlWyJ3aWxs
RGVsZXRlUGF0aCJdKHBhdGgpOwogICB9CiAgfSBjYXRjaCAoZSkgewogICBjb25zb2xlLmxvZygi
RlMudHJhY2tpbmdEZWxlZ2F0ZVsnd2lsbERlbGV0ZVBhdGgnXSgnIiArIHBhdGggKyAiJykgdGhy
ZXcgYW4gZXhjZXB0aW9uOiAiICsgZS5tZXNzYWdlKTsKICB9CiAgcGFyZW50Lm5vZGVfb3BzLnVu
bGluayhwYXJlbnQsIG5hbWUpOwogIEZTLmRlc3Ryb3lOb2RlKG5vZGUpOwogIHRyeSB7CiAgIGlm
IChGUy50cmFja2luZ0RlbGVnYXRlWyJvbkRlbGV0ZVBhdGgiXSkgRlMudHJhY2tpbmdEZWxlZ2F0
ZVsib25EZWxldGVQYXRoIl0ocGF0aCk7CiAgfSBjYXRjaCAoZSkgewogICBjb25zb2xlLmxvZygi
RlMudHJhY2tpbmdEZWxlZ2F0ZVsnb25EZWxldGVQYXRoJ10oJyIgKyBwYXRoICsgIicpIHRocmV3
IGFuIGV4Y2VwdGlvbjogIiArIGUubWVzc2FnZSk7CiAgfQogfSksCiByZWFkbGluazogKGZ1bmN0
aW9uKHBhdGgpIHsKICB2YXIgbG9va3VwID0gRlMubG9va3VwUGF0aChwYXRoKTsKICB2YXIgbGlu
ayA9IGxvb2t1cC5ub2RlOwogIGlmICghbGluaykgewogICB0aHJvdyBuZXcgRlMuRXJybm9FcnJv
cihFUlJOT19DT0RFUy5FTk9FTlQpOwogIH0KICBpZiAoIWxpbmsubm9kZV9vcHMucmVhZGxpbmsp
IHsKICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUlOVkFMKTsKICB9CiAg
cmV0dXJuIFBBVEgucmVzb2x2ZShGUy5nZXRQYXRoKGxpbmsucGFyZW50KSwgbGluay5ub2RlX29w
cy5yZWFkbGluayhsaW5rKSk7CiB9KSwKIHN0YXQ6IChmdW5jdGlvbihwYXRoLCBkb250Rm9sbG93
KSB7CiAgdmFyIGxvb2t1cCA9IEZTLmxvb2t1cFBhdGgocGF0aCwgewogICBmb2xsb3c6ICFkb250
Rm9sbG93CiAgfSk7CiAgdmFyIG5vZGUgPSBsb29rdXAubm9kZTsKICBpZiAoIW5vZGUpIHsKICAg
dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRU5PRU5UKTsKICB9CiAgaWYgKCFu
b2RlLm5vZGVfb3BzLmdldGF0dHIpIHsKICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9f
Q09ERVMuRVBFUk0pOwogIH0KICByZXR1cm4gbm9kZS5ub2RlX29wcy5nZXRhdHRyKG5vZGUpOwog
fSksCiBsc3RhdDogKGZ1bmN0aW9uKHBhdGgpIHsKICByZXR1cm4gRlMuc3RhdChwYXRoLCB0cnVl
KTsKIH0pLAogY2htb2Q6IChmdW5jdGlvbihwYXRoLCBtb2RlLCBkb250Rm9sbG93KSB7CiAgdmFy
IG5vZGU7CiAgaWYgKHR5cGVvZiBwYXRoID09PSAic3RyaW5nIikgewogICB2YXIgbG9va3VwID0g
RlMubG9va3VwUGF0aChwYXRoLCB7CiAgICBmb2xsb3c6ICFkb250Rm9sbG93CiAgIH0pOwogICBu
b2RlID0gbG9va3VwLm5vZGU7CiAgfSBlbHNlIHsKICAgbm9kZSA9IHBhdGg7CiAgfQogIGlmICgh
bm9kZS5ub2RlX29wcy5zZXRhdHRyKSB7CiAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5P
X0NPREVTLkVQRVJNKTsKICB9CiAgbm9kZS5ub2RlX29wcy5zZXRhdHRyKG5vZGUsIHsKICAgbW9k
ZTogbW9kZSAmIDQwOTUgfCBub2RlLm1vZGUgJiB+NDA5NSwKICAgdGltZXN0YW1wOiBEYXRlLm5v
dygpCiAgfSk7CiB9KSwKIGxjaG1vZDogKGZ1bmN0aW9uKHBhdGgsIG1vZGUpIHsKICBGUy5jaG1v
ZChwYXRoLCBtb2RlLCB0cnVlKTsKIH0pLAogZmNobW9kOiAoZnVuY3Rpb24oZmQsIG1vZGUpIHsK
ICB2YXIgc3RyZWFtID0gRlMuZ2V0U3RyZWFtKGZkKTsKICBpZiAoIXN0cmVhbSkgewogICB0aHJv
dyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FQkFERik7CiAgfQogIEZTLmNobW9kKHN0
cmVhbS5ub2RlLCBtb2RlKTsKIH0pLAogY2hvd246IChmdW5jdGlvbihwYXRoLCB1aWQsIGdpZCwg
ZG9udEZvbGxvdykgewogIHZhciBub2RlOwogIGlmICh0eXBlb2YgcGF0aCA9PT0gInN0cmluZyIp
IHsKICAgdmFyIGxvb2t1cCA9IEZTLmxvb2t1cFBhdGgocGF0aCwgewogICAgZm9sbG93OiAhZG9u
dEZvbGxvdwogICB9KTsKICAgbm9kZSA9IGxvb2t1cC5ub2RlOwogIH0gZWxzZSB7CiAgIG5vZGUg
PSBwYXRoOwogIH0KICBpZiAoIW5vZGUubm9kZV9vcHMuc2V0YXR0cikgewogICB0aHJvdyBuZXcg
RlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FUEVSTSk7CiAgfQogIG5vZGUubm9kZV9vcHMuc2V0
YXR0cihub2RlLCB7CiAgIHRpbWVzdGFtcDogRGF0ZS5ub3coKQogIH0pOwogfSksCiBsY2hvd246
IChmdW5jdGlvbihwYXRoLCB1aWQsIGdpZCkgewogIEZTLmNob3duKHBhdGgsIHVpZCwgZ2lkLCB0
cnVlKTsKIH0pLAogZmNob3duOiAoZnVuY3Rpb24oZmQsIHVpZCwgZ2lkKSB7CiAgdmFyIHN0cmVh
bSA9IEZTLmdldFN0cmVhbShmZCk7CiAgaWYgKCFzdHJlYW0pIHsKICAgdGhyb3cgbmV3IEZTLkVy
cm5vRXJyb3IoRVJSTk9fQ09ERVMuRUJBREYpOwogIH0KICBGUy5jaG93bihzdHJlYW0ubm9kZSwg
dWlkLCBnaWQpOwogfSksCiB0cnVuY2F0ZTogKGZ1bmN0aW9uKHBhdGgsIGxlbikgewogIGlmIChs
ZW4gPCAwKSB7CiAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVJTlZBTCk7
CiAgfQogIHZhciBub2RlOwogIGlmICh0eXBlb2YgcGF0aCA9PT0gInN0cmluZyIpIHsKICAgdmFy
IGxvb2t1cCA9IEZTLmxvb2t1cFBhdGgocGF0aCwgewogICAgZm9sbG93OiB0cnVlCiAgIH0pOwog
ICBub2RlID0gbG9va3VwLm5vZGU7CiAgfSBlbHNlIHsKICAgbm9kZSA9IHBhdGg7CiAgfQogIGlm
ICghbm9kZS5ub2RlX29wcy5zZXRhdHRyKSB7CiAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKEVS
Uk5PX0NPREVTLkVQRVJNKTsKICB9CiAgaWYgKEZTLmlzRGlyKG5vZGUubW9kZSkpIHsKICAgdGhy
b3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUlTRElSKTsKICB9CiAgaWYgKCFGUy5p
c0ZpbGUobm9kZS5tb2RlKSkgewogICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RF
Uy5FSU5WQUwpOwogIH0KICB2YXIgZXJyID0gRlMubm9kZVBlcm1pc3Npb25zKG5vZGUsICJ3Iik7
CiAgaWYgKGVycikgewogICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihlcnIpOwogIH0KICBub2Rl
Lm5vZGVfb3BzLnNldGF0dHIobm9kZSwgewogICBzaXplOiBsZW4sCiAgIHRpbWVzdGFtcDogRGF0
ZS5ub3coKQogIH0pOwogfSksCiBmdHJ1bmNhdGU6IChmdW5jdGlvbihmZCwgbGVuKSB7CiAgdmFy
IHN0cmVhbSA9IEZTLmdldFN0cmVhbShmZCk7CiAgaWYgKCFzdHJlYW0pIHsKICAgdGhyb3cgbmV3
IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUJBREYpOwogIH0KICBpZiAoKHN0cmVhbS5mbGFn
cyAmIDIwOTcxNTUpID09PSAwKSB7CiAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NP
REVTLkVJTlZBTCk7CiAgfQogIEZTLnRydW5jYXRlKHN0cmVhbS5ub2RlLCBsZW4pOwogfSksCiB1
dGltZTogKGZ1bmN0aW9uKHBhdGgsIGF0aW1lLCBtdGltZSkgewogIHZhciBsb29rdXAgPSBGUy5s
b29rdXBQYXRoKHBhdGgsIHsKICAgZm9sbG93OiB0cnVlCiAgfSk7CiAgdmFyIG5vZGUgPSBsb29r
dXAubm9kZTsKICBub2RlLm5vZGVfb3BzLnNldGF0dHIobm9kZSwgewogICB0aW1lc3RhbXA6IE1h
dGgubWF4KGF0aW1lLCBtdGltZSkKICB9KTsKIH0pLAogb3BlbjogKGZ1bmN0aW9uKHBhdGgsIGZs
YWdzLCBtb2RlLCBmZF9zdGFydCwgZmRfZW5kKSB7CiAgaWYgKHBhdGggPT09ICIiKSB7CiAgIHRo
cm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVOT0VOVCk7CiAgfQogIGZsYWdzID0g
dHlwZW9mIGZsYWdzID09PSAic3RyaW5nIiA/IEZTLm1vZGVTdHJpbmdUb0ZsYWdzKGZsYWdzKSA6
IGZsYWdzOwogIG1vZGUgPSB0eXBlb2YgbW9kZSA9PT0gInVuZGVmaW5lZCIgPyA0MzggOiBtb2Rl
OwogIGlmIChmbGFncyAmIDY0KSB7CiAgIG1vZGUgPSBtb2RlICYgNDA5NSB8IDMyNzY4OwogIH0g
ZWxzZSB7CiAgIG1vZGUgPSAwOwogIH0KICB2YXIgbm9kZTsKICBpZiAodHlwZW9mIHBhdGggPT09
ICJvYmplY3QiKSB7CiAgIG5vZGUgPSBwYXRoOwogIH0gZWxzZSB7CiAgIHBhdGggPSBQQVRILm5v
cm1hbGl6ZShwYXRoKTsKICAgdHJ5IHsKICAgIHZhciBsb29rdXAgPSBGUy5sb29rdXBQYXRoKHBh
dGgsIHsKICAgICBmb2xsb3c6ICEoZmxhZ3MgJiAxMzEwNzIpCiAgICB9KTsKICAgIG5vZGUgPSBs
b29rdXAubm9kZTsKICAgfSBjYXRjaCAoZSkge30KICB9CiAgdmFyIGNyZWF0ZWQgPSBmYWxzZTsK
ICBpZiAoZmxhZ3MgJiA2NCkgewogICBpZiAobm9kZSkgewogICAgaWYgKGZsYWdzICYgMTI4KSB7
CiAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUVYSVNUKTsKICAgIH0K
ICAgfSBlbHNlIHsKICAgIG5vZGUgPSBGUy5ta25vZChwYXRoLCBtb2RlLCAwKTsKICAgIGNyZWF0
ZWQgPSB0cnVlOwogICB9CiAgfQogIGlmICghbm9kZSkgewogICB0aHJvdyBuZXcgRlMuRXJybm9F
cnJvcihFUlJOT19DT0RFUy5FTk9FTlQpOwogIH0KICBpZiAoRlMuaXNDaHJkZXYobm9kZS5tb2Rl
KSkgewogICBmbGFncyAmPSB+NTEyOwogIH0KICBpZiAoZmxhZ3MgJiA2NTUzNiAmJiAhRlMuaXNE
aXIobm9kZS5tb2RlKSkgewogICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5F
Tk9URElSKTsKICB9CiAgaWYgKCFjcmVhdGVkKSB7CiAgIHZhciBlcnIgPSBGUy5tYXlPcGVuKG5v
ZGUsIGZsYWdzKTsKICAgaWYgKGVycikgewogICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoZXJy
KTsKICAgfQogIH0KICBpZiAoZmxhZ3MgJiA1MTIpIHsKICAgRlMudHJ1bmNhdGUobm9kZSwgMCk7
CiAgfQogIGZsYWdzICY9IH4oMTI4IHwgNTEyKTsKICB2YXIgc3RyZWFtID0gRlMuY3JlYXRlU3Ry
ZWFtKHsKICAgbm9kZTogbm9kZSwKICAgcGF0aDogRlMuZ2V0UGF0aChub2RlKSwKICAgZmxhZ3M6
IGZsYWdzLAogICBzZWVrYWJsZTogdHJ1ZSwKICAgcG9zaXRpb246IDAsCiAgIHN0cmVhbV9vcHM6
IG5vZGUuc3RyZWFtX29wcywKICAgdW5nb3R0ZW46IFtdLAogICBlcnJvcjogZmFsc2UKICB9LCBm
ZF9zdGFydCwgZmRfZW5kKTsKICBpZiAoc3RyZWFtLnN0cmVhbV9vcHMub3BlbikgewogICBzdHJl
YW0uc3RyZWFtX29wcy5vcGVuKHN0cmVhbSk7CiAgfQogIGlmIChNb2R1bGVbImxvZ1JlYWRGaWxl
cyJdICYmICEoZmxhZ3MgJiAxKSkgewogICBpZiAoIUZTLnJlYWRGaWxlcykgRlMucmVhZEZpbGVz
ID0ge307CiAgIGlmICghKHBhdGggaW4gRlMucmVhZEZpbGVzKSkgewogICAgRlMucmVhZEZpbGVz
W3BhdGhdID0gMTsKICAgIE1vZHVsZVsicHJpbnRFcnIiXSgicmVhZCBmaWxlOiAiICsgcGF0aCk7
CiAgIH0KICB9CiAgdHJ5IHsKICAgaWYgKEZTLnRyYWNraW5nRGVsZWdhdGVbIm9uT3BlbkZpbGUi
XSkgewogICAgdmFyIHRyYWNraW5nRmxhZ3MgPSAwOwogICAgaWYgKChmbGFncyAmIDIwOTcxNTUp
ICE9PSAxKSB7CiAgICAgdHJhY2tpbmdGbGFncyB8PSBGUy50cmFja2luZy5vcGVuRmxhZ3MuUkVB
RDsKICAgIH0KICAgIGlmICgoZmxhZ3MgJiAyMDk3MTU1KSAhPT0gMCkgewogICAgIHRyYWNraW5n
RmxhZ3MgfD0gRlMudHJhY2tpbmcub3BlbkZsYWdzLldSSVRFOwogICAgfQogICAgRlMudHJhY2tp
bmdEZWxlZ2F0ZVsib25PcGVuRmlsZSJdKHBhdGgsIHRyYWNraW5nRmxhZ3MpOwogICB9CiAgfSBj
YXRjaCAoZSkgewogICBjb25zb2xlLmxvZygiRlMudHJhY2tpbmdEZWxlZ2F0ZVsnb25PcGVuRmls
ZSddKCciICsgcGF0aCArICInLCBmbGFncykgdGhyZXcgYW4gZXhjZXB0aW9uOiAiICsgZS5tZXNz
YWdlKTsKICB9CiAgcmV0dXJuIHN0cmVhbTsKIH0pLAogY2xvc2U6IChmdW5jdGlvbihzdHJlYW0p
IHsKICBpZiAoc3RyZWFtLmdldGRlbnRzKSBzdHJlYW0uZ2V0ZGVudHMgPSBudWxsOwogIHRyeSB7
CiAgIGlmIChzdHJlYW0uc3RyZWFtX29wcy5jbG9zZSkgewogICAgc3RyZWFtLnN0cmVhbV9vcHMu
Y2xvc2Uoc3RyZWFtKTsKICAgfQogIH0gY2F0Y2ggKGUpIHsKICAgdGhyb3cgZTsKICB9IGZpbmFs
bHkgewogICBGUy5jbG9zZVN0cmVhbShzdHJlYW0uZmQpOwogIH0KIH0pLAogbGxzZWVrOiAoZnVu
Y3Rpb24oc3RyZWFtLCBvZmZzZXQsIHdoZW5jZSkgewogIGlmICghc3RyZWFtLnNlZWthYmxlIHx8
ICFzdHJlYW0uc3RyZWFtX29wcy5sbHNlZWspIHsKICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3Io
RVJSTk9fQ09ERVMuRVNQSVBFKTsKICB9CiAgc3RyZWFtLnBvc2l0aW9uID0gc3RyZWFtLnN0cmVh
bV9vcHMubGxzZWVrKHN0cmVhbSwgb2Zmc2V0LCB3aGVuY2UpOwogIHN0cmVhbS51bmdvdHRlbiA9
IFtdOwogIHJldHVybiBzdHJlYW0ucG9zaXRpb247CiB9KSwKIHJlYWQ6IChmdW5jdGlvbihzdHJl
YW0sIGJ1ZmZlciwgb2Zmc2V0LCBsZW5ndGgsIHBvc2l0aW9uKSB7CiAgaWYgKGxlbmd0aCA8IDAg
fHwgcG9zaXRpb24gPCAwKSB7CiAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVT
LkVJTlZBTCk7CiAgfQogIGlmICgoc3RyZWFtLmZsYWdzICYgMjA5NzE1NSkgPT09IDEpIHsKICAg
dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUJBREYpOwogIH0KICBpZiAoRlMu
aXNEaXIoc3RyZWFtLm5vZGUubW9kZSkpIHsKICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJS
Tk9fQ09ERVMuRUlTRElSKTsKICB9CiAgaWYgKCFzdHJlYW0uc3RyZWFtX29wcy5yZWFkKSB7CiAg
IHRocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVJTlZBTCk7CiAgfQogIHZhciBz
ZWVraW5nID0gdHJ1ZTsKICBpZiAodHlwZW9mIHBvc2l0aW9uID09PSAidW5kZWZpbmVkIikgewog
ICBwb3NpdGlvbiA9IHN0cmVhbS5wb3NpdGlvbjsKICAgc2Vla2luZyA9IGZhbHNlOwogIH0gZWxz
ZSBpZiAoIXN0cmVhbS5zZWVrYWJsZSkgewogICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJO
T19DT0RFUy5FU1BJUEUpOwogIH0KICB2YXIgYnl0ZXNSZWFkID0gc3RyZWFtLnN0cmVhbV9vcHMu
cmVhZChzdHJlYW0sIGJ1ZmZlciwgb2Zmc2V0LCBsZW5ndGgsIHBvc2l0aW9uKTsKICBpZiAoIXNl
ZWtpbmcpIHN0cmVhbS5wb3NpdGlvbiArPSBieXRlc1JlYWQ7CiAgcmV0dXJuIGJ5dGVzUmVhZDsK
IH0pLAogd3JpdGU6IChmdW5jdGlvbihzdHJlYW0sIGJ1ZmZlciwgb2Zmc2V0LCBsZW5ndGgsIHBv
c2l0aW9uLCBjYW5Pd24pIHsKICBpZiAobGVuZ3RoIDwgMCB8fCBwb3NpdGlvbiA8IDApIHsKICAg
dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUlOVkFMKTsKICB9CiAgaWYgKChz
dHJlYW0uZmxhZ3MgJiAyMDk3MTU1KSA9PT0gMCkgewogICB0aHJvdyBuZXcgRlMuRXJybm9FcnJv
cihFUlJOT19DT0RFUy5FQkFERik7CiAgfQogIGlmIChGUy5pc0RpcihzdHJlYW0ubm9kZS5tb2Rl
KSkgewogICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FSVNESVIpOwogIH0K
ICBpZiAoIXN0cmVhbS5zdHJlYW1fb3BzLndyaXRlKSB7CiAgIHRocm93IG5ldyBGUy5FcnJub0Vy
cm9yKEVSUk5PX0NPREVTLkVJTlZBTCk7CiAgfQogIGlmIChzdHJlYW0uZmxhZ3MgJiAxMDI0KSB7
CiAgIEZTLmxsc2VlayhzdHJlYW0sIDAsIDIpOwogIH0KICB2YXIgc2Vla2luZyA9IHRydWU7CiAg
aWYgKHR5cGVvZiBwb3NpdGlvbiA9PT0gInVuZGVmaW5lZCIpIHsKICAgcG9zaXRpb24gPSBzdHJl
YW0ucG9zaXRpb247CiAgIHNlZWtpbmcgPSBmYWxzZTsKICB9IGVsc2UgaWYgKCFzdHJlYW0uc2Vl
a2FibGUpIHsKICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRVNQSVBFKTsK
ICB9CiAgdmFyIGJ5dGVzV3JpdHRlbiA9IHN0cmVhbS5zdHJlYW1fb3BzLndyaXRlKHN0cmVhbSwg
YnVmZmVyLCBvZmZzZXQsIGxlbmd0aCwgcG9zaXRpb24sIGNhbk93bik7CiAgaWYgKCFzZWVraW5n
KSBzdHJlYW0ucG9zaXRpb24gKz0gYnl0ZXNXcml0dGVuOwogIHRyeSB7CiAgIGlmIChzdHJlYW0u
cGF0aCAmJiBGUy50cmFja2luZ0RlbGVnYXRlWyJvbldyaXRlVG9GaWxlIl0pIEZTLnRyYWNraW5n
RGVsZWdhdGVbIm9uV3JpdGVUb0ZpbGUiXShzdHJlYW0ucGF0aCk7CiAgfSBjYXRjaCAoZSkgewog
ICBjb25zb2xlLmxvZygiRlMudHJhY2tpbmdEZWxlZ2F0ZVsnb25Xcml0ZVRvRmlsZSddKCciICsg
cGF0aCArICInKSB0aHJldyBhbiBleGNlcHRpb246ICIgKyBlLm1lc3NhZ2UpOwogIH0KICByZXR1
cm4gYnl0ZXNXcml0dGVuOwogfSksCiBhbGxvY2F0ZTogKGZ1bmN0aW9uKHN0cmVhbSwgb2Zmc2V0
LCBsZW5ndGgpIHsKICBpZiAob2Zmc2V0IDwgMCB8fCBsZW5ndGggPD0gMCkgewogICB0aHJvdyBu
ZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FSU5WQUwpOwogIH0KICBpZiAoKHN0cmVhbS5m
bGFncyAmIDIwOTcxNTUpID09PSAwKSB7CiAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5P
X0NPREVTLkVCQURGKTsKICB9CiAgaWYgKCFGUy5pc0ZpbGUoc3RyZWFtLm5vZGUubW9kZSkgJiYg
IUZTLmlzRGlyKG5vZGUubW9kZSkpIHsKICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9f
Q09ERVMuRU5PREVWKTsKICB9CiAgaWYgKCFzdHJlYW0uc3RyZWFtX29wcy5hbGxvY2F0ZSkgewog
ICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FT1BOT1RTVVBQKTsKICB9CiAg
c3RyZWFtLnN0cmVhbV9vcHMuYWxsb2NhdGUoc3RyZWFtLCBvZmZzZXQsIGxlbmd0aCk7CiB9KSwK
IG1tYXA6IChmdW5jdGlvbihzdHJlYW0sIGJ1ZmZlciwgb2Zmc2V0LCBsZW5ndGgsIHBvc2l0aW9u
LCBwcm90LCBmbGFncykgewogIGlmICgoc3RyZWFtLmZsYWdzICYgMjA5NzE1NSkgPT09IDEpIHsK
ICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUFDQ0VTKTsKICB9CiAgaWYg
KCFzdHJlYW0uc3RyZWFtX29wcy5tbWFwKSB7CiAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9yKEVS
Uk5PX0NPREVTLkVOT0RFVik7CiAgfQogIHJldHVybiBzdHJlYW0uc3RyZWFtX29wcy5tbWFwKHN0
cmVhbSwgYnVmZmVyLCBvZmZzZXQsIGxlbmd0aCwgcG9zaXRpb24sIHByb3QsIGZsYWdzKTsKIH0p
LAogbXN5bmM6IChmdW5jdGlvbihzdHJlYW0sIGJ1ZmZlciwgb2Zmc2V0LCBsZW5ndGgsIG1tYXBG
bGFncykgewogIGlmICghc3RyZWFtIHx8ICFzdHJlYW0uc3RyZWFtX29wcy5tc3luYykgewogICBy
ZXR1cm4gMDsKICB9CiAgcmV0dXJuIHN0cmVhbS5zdHJlYW1fb3BzLm1zeW5jKHN0cmVhbSwgYnVm
ZmVyLCBvZmZzZXQsIGxlbmd0aCwgbW1hcEZsYWdzKTsKIH0pLAogbXVubWFwOiAoZnVuY3Rpb24o
c3RyZWFtKSB7CiAgcmV0dXJuIDA7CiB9KSwKIGlvY3RsOiAoZnVuY3Rpb24oc3RyZWFtLCBjbWQs
IGFyZykgewogIGlmICghc3RyZWFtLnN0cmVhbV9vcHMuaW9jdGwpIHsKICAgdGhyb3cgbmV3IEZT
LkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRU5PVFRZKTsKICB9CiAgcmV0dXJuIHN0cmVhbS5zdHJl
YW1fb3BzLmlvY3RsKHN0cmVhbSwgY21kLCBhcmcpOwogfSksCiByZWFkRmlsZTogKGZ1bmN0aW9u
KHBhdGgsIG9wdHMpIHsKICBvcHRzID0gb3B0cyB8fCB7fTsKICBvcHRzLmZsYWdzID0gb3B0cy5m
bGFncyB8fCAiciI7CiAgb3B0cy5lbmNvZGluZyA9IG9wdHMuZW5jb2RpbmcgfHwgImJpbmFyeSI7
CiAgaWYgKG9wdHMuZW5jb2RpbmcgIT09ICJ1dGY4IiAmJiBvcHRzLmVuY29kaW5nICE9PSAiYmlu
YXJ5IikgewogICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgZW5jb2RpbmcgdHlwZSAiJyArIG9w
dHMuZW5jb2RpbmcgKyAnIicpOwogIH0KICB2YXIgcmV0OwogIHZhciBzdHJlYW0gPSBGUy5vcGVu
KHBhdGgsIG9wdHMuZmxhZ3MpOwogIHZhciBzdGF0ID0gRlMuc3RhdChwYXRoKTsKICB2YXIgbGVu
Z3RoID0gc3RhdC5zaXplOwogIHZhciBidWYgPSBuZXcgVWludDhBcnJheShsZW5ndGgpOwogIEZT
LnJlYWQoc3RyZWFtLCBidWYsIDAsIGxlbmd0aCwgMCk7CiAgaWYgKG9wdHMuZW5jb2RpbmcgPT09
ICJ1dGY4IikgewogICByZXQgPSBVVEY4QXJyYXlUb1N0cmluZyhidWYsIDApOwogIH0gZWxzZSBp
ZiAob3B0cy5lbmNvZGluZyA9PT0gImJpbmFyeSIpIHsKICAgcmV0ID0gYnVmOwogIH0KICBGUy5j
bG9zZShzdHJlYW0pOwogIHJldHVybiByZXQ7CiB9KSwKIHdyaXRlRmlsZTogKGZ1bmN0aW9uKHBh
dGgsIGRhdGEsIG9wdHMpIHsKICBvcHRzID0gb3B0cyB8fCB7fTsKICBvcHRzLmZsYWdzID0gb3B0
cy5mbGFncyB8fCAidyI7CiAgb3B0cy5lbmNvZGluZyA9IG9wdHMuZW5jb2RpbmcgfHwgInV0Zjgi
OwogIGlmIChvcHRzLmVuY29kaW5nICE9PSAidXRmOCIgJiYgb3B0cy5lbmNvZGluZyAhPT0gImJp
bmFyeSIpIHsKICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGVuY29kaW5nIHR5cGUgIicgKyBv
cHRzLmVuY29kaW5nICsgJyInKTsKICB9CiAgdmFyIHN0cmVhbSA9IEZTLm9wZW4ocGF0aCwgb3B0
cy5mbGFncywgb3B0cy5tb2RlKTsKICBpZiAob3B0cy5lbmNvZGluZyA9PT0gInV0ZjgiKSB7CiAg
IHZhciBidWYgPSBuZXcgVWludDhBcnJheShsZW5ndGhCeXRlc1VURjgoZGF0YSkgKyAxKTsKICAg
dmFyIGFjdHVhbE51bUJ5dGVzID0gc3RyaW5nVG9VVEY4QXJyYXkoZGF0YSwgYnVmLCAwLCBidWYu
bGVuZ3RoKTsKICAgRlMud3JpdGUoc3RyZWFtLCBidWYsIDAsIGFjdHVhbE51bUJ5dGVzLCAwLCBv
cHRzLmNhbk93bik7CiAgfSBlbHNlIGlmIChvcHRzLmVuY29kaW5nID09PSAiYmluYXJ5Iikgewog
ICBGUy53cml0ZShzdHJlYW0sIGRhdGEsIDAsIGRhdGEubGVuZ3RoLCAwLCBvcHRzLmNhbk93bik7
CiAgfQogIEZTLmNsb3NlKHN0cmVhbSk7CiB9KSwKIGN3ZDogKGZ1bmN0aW9uKCkgewogIHJldHVy
biBGUy5jdXJyZW50UGF0aDsKIH0pLAogY2hkaXI6IChmdW5jdGlvbihwYXRoKSB7CiAgdmFyIGxv
b2t1cCA9IEZTLmxvb2t1cFBhdGgocGF0aCwgewogICBmb2xsb3c6IHRydWUKICB9KTsKICBpZiAo
IUZTLmlzRGlyKGxvb2t1cC5ub2RlLm1vZGUpKSB7CiAgIHRocm93IG5ldyBGUy5FcnJub0Vycm9y
KEVSUk5PX0NPREVTLkVOT1RESVIpOwogIH0KICB2YXIgZXJyID0gRlMubm9kZVBlcm1pc3Npb25z
KGxvb2t1cC5ub2RlLCAieCIpOwogIGlmIChlcnIpIHsKICAgdGhyb3cgbmV3IEZTLkVycm5vRXJy
b3IoZXJyKTsKICB9CiAgRlMuY3VycmVudFBhdGggPSBsb29rdXAucGF0aDsKIH0pLAogY3JlYXRl
RGVmYXVsdERpcmVjdG9yaWVzOiAoZnVuY3Rpb24oKSB7CiAgRlMubWtkaXIoIi90bXAiKTsKICBG
Uy5ta2RpcigiL2hvbWUiKTsKICBGUy5ta2RpcigiL2hvbWUvd2ViX3VzZXIiKTsKIH0pLAogY3Jl
YXRlRGVmYXVsdERldmljZXM6IChmdW5jdGlvbigpIHsKICBGUy5ta2RpcigiL2RldiIpOwogIEZT
LnJlZ2lzdGVyRGV2aWNlKEZTLm1ha2VkZXYoMSwgMyksIHsKICAgcmVhZDogKGZ1bmN0aW9uKCkg
ewogICAgcmV0dXJuIDA7CiAgIH0pLAogICB3cml0ZTogKGZ1bmN0aW9uKHN0cmVhbSwgYnVmZmVy
LCBvZmZzZXQsIGxlbmd0aCwgcG9zKSB7CiAgICByZXR1cm4gbGVuZ3RoOwogICB9KQogIH0pOwog
IEZTLm1rZGV2KCIvZGV2L251bGwiLCBGUy5tYWtlZGV2KDEsIDMpKTsKICBUVFkucmVnaXN0ZXIo
RlMubWFrZWRldig1LCAwKSwgVFRZLmRlZmF1bHRfdHR5X29wcyk7CiAgVFRZLnJlZ2lzdGVyKEZT
Lm1ha2VkZXYoNiwgMCksIFRUWS5kZWZhdWx0X3R0eTFfb3BzKTsKICBGUy5ta2RldigiL2Rldi90
dHkiLCBGUy5tYWtlZGV2KDUsIDApKTsKICBGUy5ta2RldigiL2Rldi90dHkxIiwgRlMubWFrZWRl
dig2LCAwKSk7CiAgdmFyIHJhbmRvbV9kZXZpY2U7CiAgaWYgKHR5cGVvZiBjcnlwdG8gIT09ICJ1
bmRlZmluZWQiKSB7CiAgIHZhciByYW5kb21CdWZmZXIgPSBuZXcgVWludDhBcnJheSgxKTsKICAg
cmFuZG9tX2RldmljZSA9IChmdW5jdGlvbigpIHsKICAgIGNyeXB0by5nZXRSYW5kb21WYWx1ZXMo
cmFuZG9tQnVmZmVyKTsKICAgIHJldHVybiByYW5kb21CdWZmZXJbMF07CiAgIH0pOwogIH0gZWxz
ZSBpZiAoRU5WSVJPTk1FTlRfSVNfTk9ERSkgewogICByYW5kb21fZGV2aWNlID0gKGZ1bmN0aW9u
KCkgewogICAgcmV0dXJuIHJlcXVpcmUoImNyeXB0byIpLnJhbmRvbUJ5dGVzKDEpWzBdOwogICB9
KTsKICB9IGVsc2UgewogICByYW5kb21fZGV2aWNlID0gKGZ1bmN0aW9uKCkgewogICAgcmV0dXJu
IE1hdGgucmFuZG9tKCkgKiAyNTYgfCAwOwogICB9KTsKICB9CiAgRlMuY3JlYXRlRGV2aWNlKCIv
ZGV2IiwgInJhbmRvbSIsIHJhbmRvbV9kZXZpY2UpOwogIEZTLmNyZWF0ZURldmljZSgiL2RldiIs
ICJ1cmFuZG9tIiwgcmFuZG9tX2RldmljZSk7CiAgRlMubWtkaXIoIi9kZXYvc2htIik7CiAgRlMu
bWtkaXIoIi9kZXYvc2htL3RtcCIpOwogfSksCiBjcmVhdGVTcGVjaWFsRGlyZWN0b3JpZXM6IChm
dW5jdGlvbigpIHsKICBGUy5ta2RpcigiL3Byb2MiKTsKICBGUy5ta2RpcigiL3Byb2Mvc2VsZiIp
OwogIEZTLm1rZGlyKCIvcHJvYy9zZWxmL2ZkIik7CiAgRlMubW91bnQoewogICBtb3VudDogKGZ1
bmN0aW9uKCkgewogICAgdmFyIG5vZGUgPSBGUy5jcmVhdGVOb2RlKCIvcHJvYy9zZWxmIiwgImZk
IiwgMTYzODQgfCA1MTEsIDczKTsKICAgIG5vZGUubm9kZV9vcHMgPSB7CiAgICAgbG9va3VwOiAo
ZnVuY3Rpb24ocGFyZW50LCBuYW1lKSB7CiAgICAgIHZhciBmZCA9ICtuYW1lOwogICAgICB2YXIg
c3RyZWFtID0gRlMuZ2V0U3RyZWFtKGZkKTsKICAgICAgaWYgKCFzdHJlYW0pIHRocm93IG5ldyBG
Uy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVCQURGKTsKICAgICAgdmFyIHJldCA9IHsKICAgICAg
IHBhcmVudDogbnVsbCwKICAgICAgIG1vdW50OiB7CiAgICAgICAgbW91bnRwb2ludDogImZha2Ui
CiAgICAgICB9LAogICAgICAgbm9kZV9vcHM6IHsKICAgICAgICByZWFkbGluazogKGZ1bmN0aW9u
KCkgewogICAgICAgICByZXR1cm4gc3RyZWFtLnBhdGg7CiAgICAgICAgfSkKICAgICAgIH0KICAg
ICAgfTsKICAgICAgcmV0LnBhcmVudCA9IHJldDsKICAgICAgcmV0dXJuIHJldDsKICAgICB9KQog
ICAgfTsKICAgIHJldHVybiBub2RlOwogICB9KQogIH0sIHt9LCAiL3Byb2Mvc2VsZi9mZCIpOwog
fSksCiBjcmVhdGVTdGFuZGFyZFN0cmVhbXM6IChmdW5jdGlvbigpIHsKICBpZiAoTW9kdWxlWyJz
dGRpbiJdKSB7CiAgIEZTLmNyZWF0ZURldmljZSgiL2RldiIsICJzdGRpbiIsIE1vZHVsZVsic3Rk
aW4iXSk7CiAgfSBlbHNlIHsKICAgRlMuc3ltbGluaygiL2Rldi90dHkiLCAiL2Rldi9zdGRpbiIp
OwogIH0KICBpZiAoTW9kdWxlWyJzdGRvdXQiXSkgewogICBGUy5jcmVhdGVEZXZpY2UoIi9kZXYi
LCAic3Rkb3V0IiwgbnVsbCwgTW9kdWxlWyJzdGRvdXQiXSk7CiAgfSBlbHNlIHsKICAgRlMuc3lt
bGluaygiL2Rldi90dHkiLCAiL2Rldi9zdGRvdXQiKTsKICB9CiAgaWYgKE1vZHVsZVsic3RkZXJy
Il0pIHsKICAgRlMuY3JlYXRlRGV2aWNlKCIvZGV2IiwgInN0ZGVyciIsIG51bGwsIE1vZHVsZVsi
c3RkZXJyIl0pOwogIH0gZWxzZSB7CiAgIEZTLnN5bWxpbmsoIi9kZXYvdHR5MSIsICIvZGV2L3N0
ZGVyciIpOwogIH0KICB2YXIgc3RkaW4gPSBGUy5vcGVuKCIvZGV2L3N0ZGluIiwgInIiKTsKICBh
c3NlcnQoc3RkaW4uZmQgPT09IDAsICJpbnZhbGlkIGhhbmRsZSBmb3Igc3RkaW4gKCIgKyBzdGRp
bi5mZCArICIpIik7CiAgdmFyIHN0ZG91dCA9IEZTLm9wZW4oIi9kZXYvc3Rkb3V0IiwgInciKTsK
ICBhc3NlcnQoc3Rkb3V0LmZkID09PSAxLCAiaW52YWxpZCBoYW5kbGUgZm9yIHN0ZG91dCAoIiAr
IHN0ZG91dC5mZCArICIpIik7CiAgdmFyIHN0ZGVyciA9IEZTLm9wZW4oIi9kZXYvc3RkZXJyIiwg
InciKTsKICBhc3NlcnQoc3RkZXJyLmZkID09PSAyLCAiaW52YWxpZCBoYW5kbGUgZm9yIHN0ZGVy
ciAoIiArIHN0ZGVyci5mZCArICIpIik7CiB9KSwKIGVuc3VyZUVycm5vRXJyb3I6IChmdW5jdGlv
bigpIHsKICBpZiAoRlMuRXJybm9FcnJvcikgcmV0dXJuOwogIEZTLkVycm5vRXJyb3IgPSBmdW5j
dGlvbiBFcnJub0Vycm9yKGVycm5vLCBub2RlKSB7CiAgIHRoaXMubm9kZSA9IG5vZGU7CiAgIHRo
aXMuc2V0RXJybm8gPSAoZnVuY3Rpb24oZXJybm8pIHsKICAgIHRoaXMuZXJybm8gPSBlcnJubzsK
ICAgIGZvciAodmFyIGtleSBpbiBFUlJOT19DT0RFUykgewogICAgIGlmIChFUlJOT19DT0RFU1tr
ZXldID09PSBlcnJubykgewogICAgICB0aGlzLmNvZGUgPSBrZXk7CiAgICAgIGJyZWFrOwogICAg
IH0KICAgIH0KICAgfSk7CiAgIHRoaXMuc2V0RXJybm8oZXJybm8pOwogICB0aGlzLm1lc3NhZ2Ug
PSBFUlJOT19NRVNTQUdFU1tlcnJub107CiAgfTsKICBGUy5FcnJub0Vycm9yLnByb3RvdHlwZSA9
IG5ldyBFcnJvcjsKICBGUy5FcnJub0Vycm9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEZTLkVy
cm5vRXJyb3I7CiAgWyBFUlJOT19DT0RFUy5FTk9FTlQgXS5mb3JFYWNoKChmdW5jdGlvbihjb2Rl
KSB7CiAgIEZTLmdlbmVyaWNFcnJvcnNbY29kZV0gPSBuZXcgRlMuRXJybm9FcnJvcihjb2RlKTsK
ICAgRlMuZ2VuZXJpY0Vycm9yc1tjb2RlXS5zdGFjayA9ICI8Z2VuZXJpYyBlcnJvciwgbm8gc3Rh
Y2s+IjsKICB9KSk7CiB9KSwKIHN0YXRpY0luaXQ6IChmdW5jdGlvbigpIHsKICBGUy5lbnN1cmVF
cnJub0Vycm9yKCk7CiAgRlMubmFtZVRhYmxlID0gbmV3IEFycmF5KDQwOTYpOwogIEZTLm1vdW50
KE1FTUZTLCB7fSwgIi8iKTsKICBGUy5jcmVhdGVEZWZhdWx0RGlyZWN0b3JpZXMoKTsKICBGUy5j
cmVhdGVEZWZhdWx0RGV2aWNlcygpOwogIEZTLmNyZWF0ZVNwZWNpYWxEaXJlY3RvcmllcygpOwog
IEZTLmZpbGVzeXN0ZW1zID0gewogICAiTUVNRlMiOiBNRU1GUywKICAgIklEQkZTIjogSURCRlMs
CiAgICJOT0RFRlMiOiBOT0RFRlMsCiAgICJXT1JLRVJGUyI6IFdPUktFUkZTCiAgfTsKIH0pLAog
aW5pdDogKGZ1bmN0aW9uKGlucHV0LCBvdXRwdXQsIGVycm9yKSB7CiAgYXNzZXJ0KCFGUy5pbml0
LmluaXRpYWxpemVkLCAiRlMuaW5pdCB3YXMgcHJldmlvdXNseSBjYWxsZWQuIElmIHlvdSB3YW50
IHRvIGluaXRpYWxpemUgbGF0ZXIgd2l0aCBjdXN0b20gcGFyYW1ldGVycywgcmVtb3ZlIGFueSBl
YXJsaWVyIGNhbGxzIChub3RlIHRoYXQgb25lIGlzIGF1dG9tYXRpY2FsbHkgYWRkZWQgdG8gdGhl
IGdlbmVyYXRlZCBjb2RlKSIpOwogIEZTLmluaXQuaW5pdGlhbGl6ZWQgPSB0cnVlOwogIEZTLmVu
c3VyZUVycm5vRXJyb3IoKTsKICBNb2R1bGVbInN0ZGluIl0gPSBpbnB1dCB8fCBNb2R1bGVbInN0
ZGluIl07CiAgTW9kdWxlWyJzdGRvdXQiXSA9IG91dHB1dCB8fCBNb2R1bGVbInN0ZG91dCJdOwog
IE1vZHVsZVsic3RkZXJyIl0gPSBlcnJvciB8fCBNb2R1bGVbInN0ZGVyciJdOwogIEZTLmNyZWF0
ZVN0YW5kYXJkU3RyZWFtcygpOwogfSksCiBxdWl0OiAoZnVuY3Rpb24oKSB7CiAgRlMuaW5pdC5p
bml0aWFsaXplZCA9IGZhbHNlOwogIHZhciBmZmx1c2ggPSBNb2R1bGVbIl9mZmx1c2giXTsKICBp
ZiAoZmZsdXNoKSBmZmx1c2goMCk7CiAgZm9yICh2YXIgaSA9IDA7IGkgPCBGUy5zdHJlYW1zLmxl
bmd0aDsgaSsrKSB7CiAgIHZhciBzdHJlYW0gPSBGUy5zdHJlYW1zW2ldOwogICBpZiAoIXN0cmVh
bSkgewogICAgY29udGludWU7CiAgIH0KICAgRlMuY2xvc2Uoc3RyZWFtKTsKICB9CiB9KSwKIGdl
dE1vZGU6IChmdW5jdGlvbihjYW5SZWFkLCBjYW5Xcml0ZSkgewogIHZhciBtb2RlID0gMDsKICBp
ZiAoY2FuUmVhZCkgbW9kZSB8PSAyOTIgfCA3MzsKICBpZiAoY2FuV3JpdGUpIG1vZGUgfD0gMTQ2
OwogIHJldHVybiBtb2RlOwogfSksCiBqb2luUGF0aDogKGZ1bmN0aW9uKHBhcnRzLCBmb3JjZVJl
bGF0aXZlKSB7CiAgdmFyIHBhdGggPSBQQVRILmpvaW4uYXBwbHkobnVsbCwgcGFydHMpOwogIGlm
IChmb3JjZVJlbGF0aXZlICYmIHBhdGhbMF0gPT0gIi8iKSBwYXRoID0gcGF0aC5zdWJzdHIoMSk7
CiAgcmV0dXJuIHBhdGg7CiB9KSwKIGFic29sdXRlUGF0aDogKGZ1bmN0aW9uKHJlbGF0aXZlLCBi
YXNlKSB7CiAgcmV0dXJuIFBBVEgucmVzb2x2ZShiYXNlLCByZWxhdGl2ZSk7CiB9KSwKIHN0YW5k
YXJkaXplUGF0aDogKGZ1bmN0aW9uKHBhdGgpIHsKICByZXR1cm4gUEFUSC5ub3JtYWxpemUocGF0
aCk7CiB9KSwKIGZpbmRPYmplY3Q6IChmdW5jdGlvbihwYXRoLCBkb250UmVzb2x2ZUxhc3RMaW5r
KSB7CiAgdmFyIHJldCA9IEZTLmFuYWx5emVQYXRoKHBhdGgsIGRvbnRSZXNvbHZlTGFzdExpbmsp
OwogIGlmIChyZXQuZXhpc3RzKSB7CiAgIHJldHVybiByZXQub2JqZWN0OwogIH0gZWxzZSB7CiAg
IF9fX3NldEVyck5vKHJldC5lcnJvcik7CiAgIHJldHVybiBudWxsOwogIH0KIH0pLAogYW5hbHl6
ZVBhdGg6IChmdW5jdGlvbihwYXRoLCBkb250UmVzb2x2ZUxhc3RMaW5rKSB7CiAgdHJ5IHsKICAg
dmFyIGxvb2t1cCA9IEZTLmxvb2t1cFBhdGgocGF0aCwgewogICAgZm9sbG93OiAhZG9udFJlc29s
dmVMYXN0TGluawogICB9KTsKICAgcGF0aCA9IGxvb2t1cC5wYXRoOwogIH0gY2F0Y2ggKGUpIHt9
CiAgdmFyIHJldCA9IHsKICAgaXNSb290OiBmYWxzZSwKICAgZXhpc3RzOiBmYWxzZSwKICAgZXJy
b3I6IDAsCiAgIG5hbWU6IG51bGwsCiAgIHBhdGg6IG51bGwsCiAgIG9iamVjdDogbnVsbCwKICAg
cGFyZW50RXhpc3RzOiBmYWxzZSwKICAgcGFyZW50UGF0aDogbnVsbCwKICAgcGFyZW50T2JqZWN0
OiBudWxsCiAgfTsKICB0cnkgewogICB2YXIgbG9va3VwID0gRlMubG9va3VwUGF0aChwYXRoLCB7
CiAgICBwYXJlbnQ6IHRydWUKICAgfSk7CiAgIHJldC5wYXJlbnRFeGlzdHMgPSB0cnVlOwogICBy
ZXQucGFyZW50UGF0aCA9IGxvb2t1cC5wYXRoOwogICByZXQucGFyZW50T2JqZWN0ID0gbG9va3Vw
Lm5vZGU7CiAgIHJldC5uYW1lID0gUEFUSC5iYXNlbmFtZShwYXRoKTsKICAgbG9va3VwID0gRlMu
bG9va3VwUGF0aChwYXRoLCB7CiAgICBmb2xsb3c6ICFkb250UmVzb2x2ZUxhc3RMaW5rCiAgIH0p
OwogICByZXQuZXhpc3RzID0gdHJ1ZTsKICAgcmV0LnBhdGggPSBsb29rdXAucGF0aDsKICAgcmV0
Lm9iamVjdCA9IGxvb2t1cC5ub2RlOwogICByZXQubmFtZSA9IGxvb2t1cC5ub2RlLm5hbWU7CiAg
IHJldC5pc1Jvb3QgPSBsb29rdXAucGF0aCA9PT0gIi8iOwogIH0gY2F0Y2ggKGUpIHsKICAgcmV0
LmVycm9yID0gZS5lcnJubzsKICB9CiAgcmV0dXJuIHJldDsKIH0pLAogY3JlYXRlRm9sZGVyOiAo
ZnVuY3Rpb24ocGFyZW50LCBuYW1lLCBjYW5SZWFkLCBjYW5Xcml0ZSkgewogIHZhciBwYXRoID0g
UEFUSC5qb2luMih0eXBlb2YgcGFyZW50ID09PSAic3RyaW5nIiA/IHBhcmVudCA6IEZTLmdldFBh
dGgocGFyZW50KSwgbmFtZSk7CiAgdmFyIG1vZGUgPSBGUy5nZXRNb2RlKGNhblJlYWQsIGNhbldy
aXRlKTsKICByZXR1cm4gRlMubWtkaXIocGF0aCwgbW9kZSk7CiB9KSwKIGNyZWF0ZVBhdGg6IChm
dW5jdGlvbihwYXJlbnQsIHBhdGgsIGNhblJlYWQsIGNhbldyaXRlKSB7CiAgcGFyZW50ID0gdHlw
ZW9mIHBhcmVudCA9PT0gInN0cmluZyIgPyBwYXJlbnQgOiBGUy5nZXRQYXRoKHBhcmVudCk7CiAg
dmFyIHBhcnRzID0gcGF0aC5zcGxpdCgiLyIpLnJldmVyc2UoKTsKICB3aGlsZSAocGFydHMubGVu
Z3RoKSB7CiAgIHZhciBwYXJ0ID0gcGFydHMucG9wKCk7CiAgIGlmICghcGFydCkgY29udGludWU7
CiAgIHZhciBjdXJyZW50ID0gUEFUSC5qb2luMihwYXJlbnQsIHBhcnQpOwogICB0cnkgewogICAg
RlMubWtkaXIoY3VycmVudCk7CiAgIH0gY2F0Y2ggKGUpIHt9CiAgIHBhcmVudCA9IGN1cnJlbnQ7
CiAgfQogIHJldHVybiBjdXJyZW50OwogfSksCiBjcmVhdGVGaWxlOiAoZnVuY3Rpb24ocGFyZW50
LCBuYW1lLCBwcm9wZXJ0aWVzLCBjYW5SZWFkLCBjYW5Xcml0ZSkgewogIHZhciBwYXRoID0gUEFU
SC5qb2luMih0eXBlb2YgcGFyZW50ID09PSAic3RyaW5nIiA/IHBhcmVudCA6IEZTLmdldFBhdGgo
cGFyZW50KSwgbmFtZSk7CiAgdmFyIG1vZGUgPSBGUy5nZXRNb2RlKGNhblJlYWQsIGNhbldyaXRl
KTsKICByZXR1cm4gRlMuY3JlYXRlKHBhdGgsIG1vZGUpOwogfSksCiBjcmVhdGVEYXRhRmlsZTog
KGZ1bmN0aW9uKHBhcmVudCwgbmFtZSwgZGF0YSwgY2FuUmVhZCwgY2FuV3JpdGUsIGNhbk93bikg
ewogIHZhciBwYXRoID0gbmFtZSA/IFBBVEguam9pbjIodHlwZW9mIHBhcmVudCA9PT0gInN0cmlu
ZyIgPyBwYXJlbnQgOiBGUy5nZXRQYXRoKHBhcmVudCksIG5hbWUpIDogcGFyZW50OwogIHZhciBt
b2RlID0gRlMuZ2V0TW9kZShjYW5SZWFkLCBjYW5Xcml0ZSk7CiAgdmFyIG5vZGUgPSBGUy5jcmVh
dGUocGF0aCwgbW9kZSk7CiAgaWYgKGRhdGEpIHsKICAgaWYgKHR5cGVvZiBkYXRhID09PSAic3Ry
aW5nIikgewogICAgdmFyIGFyciA9IG5ldyBBcnJheShkYXRhLmxlbmd0aCk7CiAgICBmb3IgKHZh
ciBpID0gMCwgbGVuID0gZGF0YS5sZW5ndGg7IGkgPCBsZW47ICsraSkgYXJyW2ldID0gZGF0YS5j
aGFyQ29kZUF0KGkpOwogICAgZGF0YSA9IGFycjsKICAgfQogICBGUy5jaG1vZChub2RlLCBtb2Rl
IHwgMTQ2KTsKICAgdmFyIHN0cmVhbSA9IEZTLm9wZW4obm9kZSwgInciKTsKICAgRlMud3JpdGUo
c3RyZWFtLCBkYXRhLCAwLCBkYXRhLmxlbmd0aCwgMCwgY2FuT3duKTsKICAgRlMuY2xvc2Uoc3Ry
ZWFtKTsKICAgRlMuY2htb2Qobm9kZSwgbW9kZSk7CiAgfQogIHJldHVybiBub2RlOwogfSksCiBj
cmVhdGVEZXZpY2U6IChmdW5jdGlvbihwYXJlbnQsIG5hbWUsIGlucHV0LCBvdXRwdXQpIHsKICB2
YXIgcGF0aCA9IFBBVEguam9pbjIodHlwZW9mIHBhcmVudCA9PT0gInN0cmluZyIgPyBwYXJlbnQg
OiBGUy5nZXRQYXRoKHBhcmVudCksIG5hbWUpOwogIHZhciBtb2RlID0gRlMuZ2V0TW9kZSghIWlu
cHV0LCAhIW91dHB1dCk7CiAgaWYgKCFGUy5jcmVhdGVEZXZpY2UubWFqb3IpIEZTLmNyZWF0ZURl
dmljZS5tYWpvciA9IDY0OwogIHZhciBkZXYgPSBGUy5tYWtlZGV2KEZTLmNyZWF0ZURldmljZS5t
YWpvcisrLCAwKTsKICBGUy5yZWdpc3RlckRldmljZShkZXYsIHsKICAgb3BlbjogKGZ1bmN0aW9u
KHN0cmVhbSkgewogICAgc3RyZWFtLnNlZWthYmxlID0gZmFsc2U7CiAgIH0pLAogICBjbG9zZTog
KGZ1bmN0aW9uKHN0cmVhbSkgewogICAgaWYgKG91dHB1dCAmJiBvdXRwdXQuYnVmZmVyICYmIG91
dHB1dC5idWZmZXIubGVuZ3RoKSB7CiAgICAgb3V0cHV0KDEwKTsKICAgIH0KICAgfSksCiAgIHJl
YWQ6IChmdW5jdGlvbihzdHJlYW0sIGJ1ZmZlciwgb2Zmc2V0LCBsZW5ndGgsIHBvcykgewogICAg
dmFyIGJ5dGVzUmVhZCA9IDA7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7
CiAgICAgdmFyIHJlc3VsdDsKICAgICB0cnkgewogICAgICByZXN1bHQgPSBpbnB1dCgpOwogICAg
IH0gY2F0Y2ggKGUpIHsKICAgICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMu
RUlPKTsKICAgICB9CiAgICAgaWYgKHJlc3VsdCA9PT0gdW5kZWZpbmVkICYmIGJ5dGVzUmVhZCA9
PT0gMCkgewogICAgICB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FQUdBSU4p
OwogICAgIH0KICAgICBpZiAocmVzdWx0ID09PSBudWxsIHx8IHJlc3VsdCA9PT0gdW5kZWZpbmVk
KSBicmVhazsKICAgICBieXRlc1JlYWQrKzsKICAgICBidWZmZXJbb2Zmc2V0ICsgaV0gPSByZXN1
bHQ7CiAgICB9CiAgICBpZiAoYnl0ZXNSZWFkKSB7CiAgICAgc3RyZWFtLm5vZGUudGltZXN0YW1w
ID0gRGF0ZS5ub3coKTsKICAgIH0KICAgIHJldHVybiBieXRlc1JlYWQ7CiAgIH0pLAogICB3cml0
ZTogKGZ1bmN0aW9uKHN0cmVhbSwgYnVmZmVyLCBvZmZzZXQsIGxlbmd0aCwgcG9zKSB7CiAgICBm
b3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CiAgICAgdHJ5IHsKICAgICAgb3V0cHV0
KGJ1ZmZlcltvZmZzZXQgKyBpXSk7CiAgICAgfSBjYXRjaCAoZSkgewogICAgICB0aHJvdyBuZXcg
RlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FSU8pOwogICAgIH0KICAgIH0KICAgIGlmIChsZW5n
dGgpIHsKICAgICBzdHJlYW0ubm9kZS50aW1lc3RhbXAgPSBEYXRlLm5vdygpOwogICAgfQogICAg
cmV0dXJuIGk7CiAgIH0pCiAgfSk7CiAgcmV0dXJuIEZTLm1rZGV2KHBhdGgsIG1vZGUsIGRldik7
CiB9KSwKIGNyZWF0ZUxpbms6IChmdW5jdGlvbihwYXJlbnQsIG5hbWUsIHRhcmdldCwgY2FuUmVh
ZCwgY2FuV3JpdGUpIHsKICB2YXIgcGF0aCA9IFBBVEguam9pbjIodHlwZW9mIHBhcmVudCA9PT0g
InN0cmluZyIgPyBwYXJlbnQgOiBGUy5nZXRQYXRoKHBhcmVudCksIG5hbWUpOwogIHJldHVybiBG
Uy5zeW1saW5rKHRhcmdldCwgcGF0aCk7CiB9KSwKIGZvcmNlTG9hZEZpbGU6IChmdW5jdGlvbihv
YmopIHsKICBpZiAob2JqLmlzRGV2aWNlIHx8IG9iai5pc0ZvbGRlciB8fCBvYmoubGluayB8fCBv
YmouY29udGVudHMpIHJldHVybiB0cnVlOwogIHZhciBzdWNjZXNzID0gdHJ1ZTsKICBpZiAodHlw
ZW9mIFhNTEh0dHBSZXF1ZXN0ICE9PSAidW5kZWZpbmVkIikgewogICB0aHJvdyBuZXcgRXJyb3Io
IkxhenkgbG9hZGluZyBzaG91bGQgaGF2ZSBiZWVuIHBlcmZvcm1lZCAoY29udGVudHMgc2V0KSBp
biBjcmVhdGVMYXp5RmlsZSwgYnV0IGl0IHdhcyBub3QuIExhenkgbG9hZGluZyBvbmx5IHdvcmtz
IGluIHdlYiB3b3JrZXJzLiBVc2UgLS1lbWJlZC1maWxlIG9yIC0tcHJlbG9hZC1maWxlIGluIGVt
Y2Mgb24gdGhlIG1haW4gdGhyZWFkLiIpOwogIH0gZWxzZSBpZiAoTW9kdWxlWyJyZWFkIl0pIHsK
ICAgdHJ5IHsKICAgIG9iai5jb250ZW50cyA9IGludEFycmF5RnJvbVN0cmluZyhNb2R1bGVbInJl
YWQiXShvYmoudXJsKSwgdHJ1ZSk7CiAgICBvYmoudXNlZEJ5dGVzID0gb2JqLmNvbnRlbnRzLmxl
bmd0aDsKICAgfSBjYXRjaCAoZSkgewogICAgc3VjY2VzcyA9IGZhbHNlOwogICB9CiAgfSBlbHNl
IHsKICAgdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgbG9hZCB3aXRob3V0IHJlYWQoKSBvciBYTUxI
dHRwUmVxdWVzdC4iKTsKICB9CiAgaWYgKCFzdWNjZXNzKSBfX19zZXRFcnJObyhFUlJOT19DT0RF
Uy5FSU8pOwogIHJldHVybiBzdWNjZXNzOwogfSksCiBjcmVhdGVMYXp5RmlsZTogKGZ1bmN0aW9u
KHBhcmVudCwgbmFtZSwgdXJsLCBjYW5SZWFkLCBjYW5Xcml0ZSkgewogIGZ1bmN0aW9uIExhenlV
aW50OEFycmF5KCkgewogICB0aGlzLmxlbmd0aEtub3duID0gZmFsc2U7CiAgIHRoaXMuY2h1bmtz
ID0gW107CiAgfQogIExhenlVaW50OEFycmF5LnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiBMYXp5
VWludDhBcnJheV9nZXQoaWR4KSB7CiAgIGlmIChpZHggPiB0aGlzLmxlbmd0aCAtIDEgfHwgaWR4
IDwgMCkgewogICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgfQogICB2YXIgY2h1bmtPZmZzZXQgPSBp
ZHggJSB0aGlzLmNodW5rU2l6ZTsKICAgdmFyIGNodW5rTnVtID0gaWR4IC8gdGhpcy5jaHVua1Np
emUgfCAwOwogICByZXR1cm4gdGhpcy5nZXR0ZXIoY2h1bmtOdW0pW2NodW5rT2Zmc2V0XTsKICB9
OwogIExhenlVaW50OEFycmF5LnByb3RvdHlwZS5zZXREYXRhR2V0dGVyID0gZnVuY3Rpb24gTGF6
eVVpbnQ4QXJyYXlfc2V0RGF0YUdldHRlcihnZXR0ZXIpIHsKICAgdGhpcy5nZXR0ZXIgPSBnZXR0
ZXI7CiAgfTsKICBMYXp5VWludDhBcnJheS5wcm90b3R5cGUuY2FjaGVMZW5ndGggPSBmdW5jdGlv
biBMYXp5VWludDhBcnJheV9jYWNoZUxlbmd0aCgpIHsKICAgdmFyIHhociA9IG5ldyBYTUxIdHRw
UmVxdWVzdDsKICAgeGhyLm9wZW4oIkhFQUQiLCB1cmwsIGZhbHNlKTsKICAgeGhyLnNlbmQobnVs
bCk7CiAgIGlmICghKHhoci5zdGF0dXMgPj0gMjAwICYmIHhoci5zdGF0dXMgPCAzMDAgfHwgeGhy
LnN0YXR1cyA9PT0gMzA0KSkgdGhyb3cgbmV3IEVycm9yKCJDb3VsZG4ndCBsb2FkICIgKyB1cmwg
KyAiLiBTdGF0dXM6ICIgKyB4aHIuc3RhdHVzKTsKICAgdmFyIGRhdGFsZW5ndGggPSBOdW1iZXIo
eGhyLmdldFJlc3BvbnNlSGVhZGVyKCJDb250ZW50LWxlbmd0aCIpKTsKICAgdmFyIGhlYWRlcjsK
ICAgdmFyIGhhc0J5dGVTZXJ2aW5nID0gKGhlYWRlciA9IHhoci5nZXRSZXNwb25zZUhlYWRlcigi
QWNjZXB0LVJhbmdlcyIpKSAmJiBoZWFkZXIgPT09ICJieXRlcyI7CiAgIHZhciBjaHVua1NpemUg
PSAxMDI0ICogMTAyNDsKICAgaWYgKCFoYXNCeXRlU2VydmluZykgY2h1bmtTaXplID0gZGF0YWxl
bmd0aDsKICAgdmFyIGRvWEhSID0gKGZ1bmN0aW9uKGZyb20sIHRvKSB7CiAgICBpZiAoZnJvbSA+
IHRvKSB0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgcmFuZ2UgKCIgKyBmcm9tICsgIiwgIiArIHRv
ICsgIikgb3Igbm8gYnl0ZXMgcmVxdWVzdGVkISIpOwogICAgaWYgKHRvID4gZGF0YWxlbmd0aCAt
IDEpIHRocm93IG5ldyBFcnJvcigib25seSAiICsgZGF0YWxlbmd0aCArICIgYnl0ZXMgYXZhaWxh
YmxlISBwcm9ncmFtbWVyIGVycm9yISIpOwogICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVz
dDsKICAgIHhoci5vcGVuKCJHRVQiLCB1cmwsIGZhbHNlKTsKICAgIGlmIChkYXRhbGVuZ3RoICE9
PSBjaHVua1NpemUpIHhoci5zZXRSZXF1ZXN0SGVhZGVyKCJSYW5nZSIsICJieXRlcz0iICsgZnJv
bSArICItIiArIHRvKTsKICAgIGlmICh0eXBlb2YgVWludDhBcnJheSAhPSAidW5kZWZpbmVkIikg
eGhyLnJlc3BvbnNlVHlwZSA9ICJhcnJheWJ1ZmZlciI7CiAgICBpZiAoeGhyLm92ZXJyaWRlTWlt
ZVR5cGUpIHsKICAgICB4aHIub3ZlcnJpZGVNaW1lVHlwZSgidGV4dC9wbGFpbjsgY2hhcnNldD14
LXVzZXItZGVmaW5lZCIpOwogICAgfQogICAgeGhyLnNlbmQobnVsbCk7CiAgICBpZiAoISh4aHIu
c3RhdHVzID49IDIwMCAmJiB4aHIuc3RhdHVzIDwgMzAwIHx8IHhoci5zdGF0dXMgPT09IDMwNCkp
IHRocm93IG5ldyBFcnJvcigiQ291bGRuJ3QgbG9hZCAiICsgdXJsICsgIi4gU3RhdHVzOiAiICsg
eGhyLnN0YXR1cyk7CiAgICBpZiAoeGhyLnJlc3BvbnNlICE9PSB1bmRlZmluZWQpIHsKICAgICBy
ZXR1cm4gbmV3IFVpbnQ4QXJyYXkoeGhyLnJlc3BvbnNlIHx8IFtdKTsKICAgIH0gZWxzZSB7CiAg
ICAgcmV0dXJuIGludEFycmF5RnJvbVN0cmluZyh4aHIucmVzcG9uc2VUZXh0IHx8ICIiLCB0cnVl
KTsKICAgIH0KICAgfSk7CiAgIHZhciBsYXp5QXJyYXkgPSB0aGlzOwogICBsYXp5QXJyYXkuc2V0
RGF0YUdldHRlcigoZnVuY3Rpb24oY2h1bmtOdW0pIHsKICAgIHZhciBzdGFydCA9IGNodW5rTnVt
ICogY2h1bmtTaXplOwogICAgdmFyIGVuZCA9IChjaHVua051bSArIDEpICogY2h1bmtTaXplIC0g
MTsKICAgIGVuZCA9IE1hdGgubWluKGVuZCwgZGF0YWxlbmd0aCAtIDEpOwogICAgaWYgKHR5cGVv
ZiBsYXp5QXJyYXkuY2h1bmtzW2NodW5rTnVtXSA9PT0gInVuZGVmaW5lZCIpIHsKICAgICBsYXp5
QXJyYXkuY2h1bmtzW2NodW5rTnVtXSA9IGRvWEhSKHN0YXJ0LCBlbmQpOwogICAgfQogICAgaWYg
KHR5cGVvZiBsYXp5QXJyYXkuY2h1bmtzW2NodW5rTnVtXSA9PT0gInVuZGVmaW5lZCIpIHRocm93
IG5ldyBFcnJvcigiZG9YSFIgZmFpbGVkISIpOwogICAgcmV0dXJuIGxhenlBcnJheS5jaHVua3Nb
Y2h1bmtOdW1dOwogICB9KSk7CiAgIHRoaXMuX2xlbmd0aCA9IGRhdGFsZW5ndGg7CiAgIHRoaXMu
X2NodW5rU2l6ZSA9IGNodW5rU2l6ZTsKICAgdGhpcy5sZW5ndGhLbm93biA9IHRydWU7CiAgfTsK
ICBpZiAodHlwZW9mIFhNTEh0dHBSZXF1ZXN0ICE9PSAidW5kZWZpbmVkIikgewogICBpZiAoIUVO
VklST05NRU5UX0lTX1dPUktFUikgdGhyb3cgIkNhbm5vdCBkbyBzeW5jaHJvbm91cyBiaW5hcnkg
WEhScyBvdXRzaWRlIHdlYndvcmtlcnMgaW4gbW9kZXJuIGJyb3dzZXJzLiBVc2UgLS1lbWJlZC1m
aWxlIG9yIC0tcHJlbG9hZC1maWxlIGluIGVtY2MiOwogICB2YXIgbGF6eUFycmF5ID0gbmV3IExh
enlVaW50OEFycmF5OwogICBPYmplY3QuZGVmaW5lUHJvcGVydHkobGF6eUFycmF5LCAibGVuZ3Ro
IiwgewogICAgZ2V0OiAoZnVuY3Rpb24oKSB7CiAgICAgaWYgKCF0aGlzLmxlbmd0aEtub3duKSB7
CiAgICAgIHRoaXMuY2FjaGVMZW5ndGgoKTsKICAgICB9CiAgICAgcmV0dXJuIHRoaXMuX2xlbmd0
aDsKICAgIH0pCiAgIH0pOwogICBPYmplY3QuZGVmaW5lUHJvcGVydHkobGF6eUFycmF5LCAiY2h1
bmtTaXplIiwgewogICAgZ2V0OiAoZnVuY3Rpb24oKSB7CiAgICAgaWYgKCF0aGlzLmxlbmd0aEtu
b3duKSB7CiAgICAgIHRoaXMuY2FjaGVMZW5ndGgoKTsKICAgICB9CiAgICAgcmV0dXJuIHRoaXMu
X2NodW5rU2l6ZTsKICAgIH0pCiAgIH0pOwogICB2YXIgcHJvcGVydGllcyA9IHsKICAgIGlzRGV2
aWNlOiBmYWxzZSwKICAgIGNvbnRlbnRzOiBsYXp5QXJyYXkKICAgfTsKICB9IGVsc2UgewogICB2
YXIgcHJvcGVydGllcyA9IHsKICAgIGlzRGV2aWNlOiBmYWxzZSwKICAgIHVybDogdXJsCiAgIH07
CiAgfQogIHZhciBub2RlID0gRlMuY3JlYXRlRmlsZShwYXJlbnQsIG5hbWUsIHByb3BlcnRpZXMs
IGNhblJlYWQsIGNhbldyaXRlKTsKICBpZiAocHJvcGVydGllcy5jb250ZW50cykgewogICBub2Rl
LmNvbnRlbnRzID0gcHJvcGVydGllcy5jb250ZW50czsKICB9IGVsc2UgaWYgKHByb3BlcnRpZXMu
dXJsKSB7CiAgIG5vZGUuY29udGVudHMgPSBudWxsOwogICBub2RlLnVybCA9IHByb3BlcnRpZXMu
dXJsOwogIH0KICBPYmplY3QuZGVmaW5lUHJvcGVydHkobm9kZSwgInVzZWRCeXRlcyIsIHsKICAg
Z2V0OiAoZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gdGhpcy5jb250ZW50cy5sZW5ndGg7CiAgIH0p
CiAgfSk7CiAgdmFyIHN0cmVhbV9vcHMgPSB7fTsKICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG5v
ZGUuc3RyZWFtX29wcyk7CiAga2V5cy5mb3JFYWNoKChmdW5jdGlvbihrZXkpIHsKICAgdmFyIGZu
ID0gbm9kZS5zdHJlYW1fb3BzW2tleV07CiAgIHN0cmVhbV9vcHNba2V5XSA9IGZ1bmN0aW9uIGZv
cmNlTG9hZExhenlGaWxlKCkgewogICAgaWYgKCFGUy5mb3JjZUxvYWRGaWxlKG5vZGUpKSB7CiAg
ICAgdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoRVJSTk9fQ09ERVMuRUlPKTsKICAgIH0KICAgIHJl
dHVybiBmbi5hcHBseShudWxsLCBhcmd1bWVudHMpOwogICB9OwogIH0pKTsKICBzdHJlYW1fb3Bz
LnJlYWQgPSBmdW5jdGlvbiBzdHJlYW1fb3BzX3JlYWQoc3RyZWFtLCBidWZmZXIsIG9mZnNldCwg
bGVuZ3RoLCBwb3NpdGlvbikgewogICBpZiAoIUZTLmZvcmNlTG9hZEZpbGUobm9kZSkpIHsKICAg
IHRocm93IG5ldyBGUy5FcnJub0Vycm9yKEVSUk5PX0NPREVTLkVJTyk7CiAgIH0KICAgdmFyIGNv
bnRlbnRzID0gc3RyZWFtLm5vZGUuY29udGVudHM7CiAgIGlmIChwb3NpdGlvbiA+PSBjb250ZW50
cy5sZW5ndGgpIHJldHVybiAwOwogICB2YXIgc2l6ZSA9IE1hdGgubWluKGNvbnRlbnRzLmxlbmd0
aCAtIHBvc2l0aW9uLCBsZW5ndGgpOwogICBhc3NlcnQoc2l6ZSA+PSAwKTsKICAgaWYgKGNvbnRl
bnRzLnNsaWNlKSB7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKykgewogICAgIGJ1
ZmZlcltvZmZzZXQgKyBpXSA9IGNvbnRlbnRzW3Bvc2l0aW9uICsgaV07CiAgICB9CiAgIH0gZWxz
ZSB7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKykgewogICAgIGJ1ZmZlcltvZmZz
ZXQgKyBpXSA9IGNvbnRlbnRzLmdldChwb3NpdGlvbiArIGkpOwogICAgfQogICB9CiAgIHJldHVy
biBzaXplOwogIH07CiAgbm9kZS5zdHJlYW1fb3BzID0gc3RyZWFtX29wczsKICByZXR1cm4gbm9k
ZTsKIH0pLAogY3JlYXRlUHJlbG9hZGVkRmlsZTogKGZ1bmN0aW9uKHBhcmVudCwgbmFtZSwgdXJs
LCBjYW5SZWFkLCBjYW5Xcml0ZSwgb25sb2FkLCBvbmVycm9yLCBkb250Q3JlYXRlRmlsZSwgY2Fu
T3duLCBwcmVGaW5pc2gpIHsKICBCcm93c2VyLmluaXQoKTsKICB2YXIgZnVsbG5hbWUgPSBuYW1l
ID8gUEFUSC5yZXNvbHZlKFBBVEguam9pbjIocGFyZW50LCBuYW1lKSkgOiBwYXJlbnQ7CiAgdmFy
IGRlcCA9IGdldFVuaXF1ZVJ1bkRlcGVuZGVuY3koImNwICIgKyBmdWxsbmFtZSk7CiAgZnVuY3Rp
b24gcHJvY2Vzc0RhdGEoYnl0ZUFycmF5KSB7CiAgIGZ1bmN0aW9uIGZpbmlzaChieXRlQXJyYXkp
IHsKICAgIGlmIChwcmVGaW5pc2gpIHByZUZpbmlzaCgpOwogICAgaWYgKCFkb250Q3JlYXRlRmls
ZSkgewogICAgIEZTLmNyZWF0ZURhdGFGaWxlKHBhcmVudCwgbmFtZSwgYnl0ZUFycmF5LCBjYW5S
ZWFkLCBjYW5Xcml0ZSwgY2FuT3duKTsKICAgIH0KICAgIGlmIChvbmxvYWQpIG9ubG9hZCgpOwog
ICAgcmVtb3ZlUnVuRGVwZW5kZW5jeShkZXApOwogICB9CiAgIHZhciBoYW5kbGVkID0gZmFsc2U7
CiAgIE1vZHVsZVsicHJlbG9hZFBsdWdpbnMiXS5mb3JFYWNoKChmdW5jdGlvbihwbHVnaW4pIHsK
ICAgIGlmIChoYW5kbGVkKSByZXR1cm47CiAgICBpZiAocGx1Z2luWyJjYW5IYW5kbGUiXShmdWxs
bmFtZSkpIHsKICAgICBwbHVnaW5bImhhbmRsZSJdKGJ5dGVBcnJheSwgZnVsbG5hbWUsIGZpbmlz
aCwgKGZ1bmN0aW9uKCkgewogICAgICBpZiAob25lcnJvcikgb25lcnJvcigpOwogICAgICByZW1v
dmVSdW5EZXBlbmRlbmN5KGRlcCk7CiAgICAgfSkpOwogICAgIGhhbmRsZWQgPSB0cnVlOwogICAg
fQogICB9KSk7CiAgIGlmICghaGFuZGxlZCkgZmluaXNoKGJ5dGVBcnJheSk7CiAgfQogIGFkZFJ1
bkRlcGVuZGVuY3koZGVwKTsKICBpZiAodHlwZW9mIHVybCA9PSAic3RyaW5nIikgewogICBCcm93
c2VyLmFzeW5jTG9hZCh1cmwsIChmdW5jdGlvbihieXRlQXJyYXkpIHsKICAgIHByb2Nlc3NEYXRh
KGJ5dGVBcnJheSk7CiAgIH0pLCBvbmVycm9yKTsKICB9IGVsc2UgewogICBwcm9jZXNzRGF0YSh1
cmwpOwogIH0KIH0pLAogaW5kZXhlZERCOiAoZnVuY3Rpb24oKSB7CiAgcmV0dXJuIHdpbmRvdy5p
bmRleGVkREIgfHwgd2luZG93Lm1vekluZGV4ZWREQiB8fCB3aW5kb3cud2Via2l0SW5kZXhlZERC
IHx8IHdpbmRvdy5tc0luZGV4ZWREQjsKIH0pLAogREJfTkFNRTogKGZ1bmN0aW9uKCkgewogIHJl
dHVybiAiRU1fRlNfIiArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZTsKIH0pLAogREJfVkVSU0lP
TjogMjAsCiBEQl9TVE9SRV9OQU1FOiAiRklMRV9EQVRBIiwKIHNhdmVGaWxlc1RvREI6IChmdW5j
dGlvbihwYXRocywgb25sb2FkLCBvbmVycm9yKSB7CiAgb25sb2FkID0gb25sb2FkIHx8IChmdW5j
dGlvbigpIHt9KTsKICBvbmVycm9yID0gb25lcnJvciB8fCAoZnVuY3Rpb24oKSB7fSk7CiAgdmFy
IGluZGV4ZWREQiA9IEZTLmluZGV4ZWREQigpOwogIHRyeSB7CiAgIHZhciBvcGVuUmVxdWVzdCA9
IGluZGV4ZWREQi5vcGVuKEZTLkRCX05BTUUoKSwgRlMuREJfVkVSU0lPTik7CiAgfSBjYXRjaCAo
ZSkgewogICByZXR1cm4gb25lcnJvcihlKTsKICB9CiAgb3BlblJlcXVlc3Qub251cGdyYWRlbmVl
ZGVkID0gZnVuY3Rpb24gb3BlblJlcXVlc3Rfb251cGdyYWRlbmVlZGVkKCkgewogICBjb25zb2xl
LmxvZygiY3JlYXRpbmcgZGIiKTsKICAgdmFyIGRiID0gb3BlblJlcXVlc3QucmVzdWx0OwogICBk
Yi5jcmVhdGVPYmplY3RTdG9yZShGUy5EQl9TVE9SRV9OQU1FKTsKICB9OwogIG9wZW5SZXF1ZXN0
Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIG9wZW5SZXF1ZXN0X29uc3VjY2VzcygpIHsKICAgdmFyIGRi
ID0gb3BlblJlcXVlc3QucmVzdWx0OwogICB2YXIgdHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlv
bihbIEZTLkRCX1NUT1JFX05BTUUgXSwgInJlYWR3cml0ZSIpOwogICB2YXIgZmlsZXMgPSB0cmFu
c2FjdGlvbi5vYmplY3RTdG9yZShGUy5EQl9TVE9SRV9OQU1FKTsKICAgdmFyIG9rID0gMCwgZmFp
bCA9IDAsIHRvdGFsID0gcGF0aHMubGVuZ3RoOwogICBmdW5jdGlvbiBmaW5pc2goKSB7CiAgICBp
ZiAoZmFpbCA9PSAwKSBvbmxvYWQoKTsgZWxzZSBvbmVycm9yKCk7CiAgIH0KICAgcGF0aHMuZm9y
RWFjaCgoZnVuY3Rpb24ocGF0aCkgewogICAgdmFyIHB1dFJlcXVlc3QgPSBmaWxlcy5wdXQoRlMu
YW5hbHl6ZVBhdGgocGF0aCkub2JqZWN0LmNvbnRlbnRzLCBwYXRoKTsKICAgIHB1dFJlcXVlc3Qu
b25zdWNjZXNzID0gZnVuY3Rpb24gcHV0UmVxdWVzdF9vbnN1Y2Nlc3MoKSB7CiAgICAgb2srKzsK
ICAgICBpZiAob2sgKyBmYWlsID09IHRvdGFsKSBmaW5pc2goKTsKICAgIH07CiAgICBwdXRSZXF1
ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbiBwdXRSZXF1ZXN0X29uZXJyb3IoKSB7CiAgICAgZmFpbCsr
OwogICAgIGlmIChvayArIGZhaWwgPT0gdG90YWwpIGZpbmlzaCgpOwogICAgfTsKICAgfSkpOwog
ICB0cmFuc2FjdGlvbi5vbmVycm9yID0gb25lcnJvcjsKICB9OwogIG9wZW5SZXF1ZXN0Lm9uZXJy
b3IgPSBvbmVycm9yOwogfSksCiBsb2FkRmlsZXNGcm9tREI6IChmdW5jdGlvbihwYXRocywgb25s
b2FkLCBvbmVycm9yKSB7CiAgb25sb2FkID0gb25sb2FkIHx8IChmdW5jdGlvbigpIHt9KTsKICBv
bmVycm9yID0gb25lcnJvciB8fCAoZnVuY3Rpb24oKSB7fSk7CiAgdmFyIGluZGV4ZWREQiA9IEZT
LmluZGV4ZWREQigpOwogIHRyeSB7CiAgIHZhciBvcGVuUmVxdWVzdCA9IGluZGV4ZWREQi5vcGVu
KEZTLkRCX05BTUUoKSwgRlMuREJfVkVSU0lPTik7CiAgfSBjYXRjaCAoZSkgewogICByZXR1cm4g
b25lcnJvcihlKTsKICB9CiAgb3BlblJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gb25lcnJvcjsK
ICBvcGVuUmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiBvcGVuUmVxdWVzdF9vbnN1Y2Nlc3Mo
KSB7CiAgIHZhciBkYiA9IG9wZW5SZXF1ZXN0LnJlc3VsdDsKICAgdHJ5IHsKICAgIHZhciB0cmFu
c2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKFsgRlMuREJfU1RPUkVfTkFNRSBdLCAicmVhZG9ubHki
KTsKICAgfSBjYXRjaCAoZSkgewogICAgb25lcnJvcihlKTsKICAgIHJldHVybjsKICAgfQogICB2
YXIgZmlsZXMgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZShGUy5EQl9TVE9SRV9OQU1FKTsKICAg
dmFyIG9rID0gMCwgZmFpbCA9IDAsIHRvdGFsID0gcGF0aHMubGVuZ3RoOwogICBmdW5jdGlvbiBm
aW5pc2goKSB7CiAgICBpZiAoZmFpbCA9PSAwKSBvbmxvYWQoKTsgZWxzZSBvbmVycm9yKCk7CiAg
IH0KICAgcGF0aHMuZm9yRWFjaCgoZnVuY3Rpb24ocGF0aCkgewogICAgdmFyIGdldFJlcXVlc3Qg
PSBmaWxlcy5nZXQocGF0aCk7CiAgICBnZXRSZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIGdl
dFJlcXVlc3Rfb25zdWNjZXNzKCkgewogICAgIGlmIChGUy5hbmFseXplUGF0aChwYXRoKS5leGlz
dHMpIHsKICAgICAgRlMudW5saW5rKHBhdGgpOwogICAgIH0KICAgICBGUy5jcmVhdGVEYXRhRmls
ZShQQVRILmRpcm5hbWUocGF0aCksIFBBVEguYmFzZW5hbWUocGF0aCksIGdldFJlcXVlc3QucmVz
dWx0LCB0cnVlLCB0cnVlLCB0cnVlKTsKICAgICBvaysrOwogICAgIGlmIChvayArIGZhaWwgPT0g
dG90YWwpIGZpbmlzaCgpOwogICAgfTsKICAgIGdldFJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9u
IGdldFJlcXVlc3Rfb25lcnJvcigpIHsKICAgICBmYWlsKys7CiAgICAgaWYgKG9rICsgZmFpbCA9
PSB0b3RhbCkgZmluaXNoKCk7CiAgICB9OwogICB9KSk7CiAgIHRyYW5zYWN0aW9uLm9uZXJyb3Ig
PSBvbmVycm9yOwogIH07CiAgb3BlblJlcXVlc3Qub25lcnJvciA9IG9uZXJyb3I7CiB9KQp9Owp2
YXIgU1lTQ0FMTFMgPSB7CiBERUZBVUxUX1BPTExNQVNLOiA1LAogbWFwcGluZ3M6IHt9LAogdW1h
c2s6IDUxMSwKIGNhbGN1bGF0ZUF0OiAoZnVuY3Rpb24oZGlyZmQsIHBhdGgpIHsKICBpZiAocGF0
aFswXSAhPT0gIi8iKSB7CiAgIHZhciBkaXI7CiAgIGlmIChkaXJmZCA9PT0gLTEwMCkgewogICAg
ZGlyID0gRlMuY3dkKCk7CiAgIH0gZWxzZSB7CiAgICB2YXIgZGlyc3RyZWFtID0gRlMuZ2V0U3Ry
ZWFtKGRpcmZkKTsKICAgIGlmICghZGlyc3RyZWFtKSB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihF
UlJOT19DT0RFUy5FQkFERik7CiAgICBkaXIgPSBkaXJzdHJlYW0ucGF0aDsKICAgfQogICBwYXRo
ID0gUEFUSC5qb2luMihkaXIsIHBhdGgpOwogIH0KICByZXR1cm4gcGF0aDsKIH0pLAogZG9TdGF0
OiAoZnVuY3Rpb24oZnVuYywgcGF0aCwgYnVmKSB7CiAgdHJ5IHsKICAgdmFyIHN0YXQgPSBmdW5j
KHBhdGgpOwogIH0gY2F0Y2ggKGUpIHsKICAgaWYgKGUgJiYgZS5ub2RlICYmIFBBVEgubm9ybWFs
aXplKHBhdGgpICE9PSBQQVRILm5vcm1hbGl6ZShGUy5nZXRQYXRoKGUubm9kZSkpKSB7CiAgICBy
ZXR1cm4gLUVSUk5PX0NPREVTLkVOT1RESVI7CiAgIH0KICAgdGhyb3cgZTsKICB9CiAgSEVBUDMy
W2J1ZiA+PiAyXSA9IHN0YXQuZGV2OwogIEhFQVAzMltidWYgKyA0ID4+IDJdID0gMDsKICBIRUFQ
MzJbYnVmICsgOCA+PiAyXSA9IHN0YXQuaW5vOwogIEhFQVAzMltidWYgKyAxMiA+PiAyXSA9IHN0
YXQubW9kZTsKICBIRUFQMzJbYnVmICsgMTYgPj4gMl0gPSBzdGF0Lm5saW5rOwogIEhFQVAzMlti
dWYgKyAyMCA+PiAyXSA9IHN0YXQudWlkOwogIEhFQVAzMltidWYgKyAyNCA+PiAyXSA9IHN0YXQu
Z2lkOwogIEhFQVAzMltidWYgKyAyOCA+PiAyXSA9IHN0YXQucmRldjsKICBIRUFQMzJbYnVmICsg
MzIgPj4gMl0gPSAwOwogIEhFQVAzMltidWYgKyAzNiA+PiAyXSA9IHN0YXQuc2l6ZTsKICBIRUFQ
MzJbYnVmICsgNDAgPj4gMl0gPSA0MDk2OwogIEhFQVAzMltidWYgKyA0NCA+PiAyXSA9IHN0YXQu
YmxvY2tzOwogIEhFQVAzMltidWYgKyA0OCA+PiAyXSA9IHN0YXQuYXRpbWUuZ2V0VGltZSgpIC8g
MWUzIHwgMDsKICBIRUFQMzJbYnVmICsgNTIgPj4gMl0gPSAwOwogIEhFQVAzMltidWYgKyA1NiA+
PiAyXSA9IHN0YXQubXRpbWUuZ2V0VGltZSgpIC8gMWUzIHwgMDsKICBIRUFQMzJbYnVmICsgNjAg
Pj4gMl0gPSAwOwogIEhFQVAzMltidWYgKyA2NCA+PiAyXSA9IHN0YXQuY3RpbWUuZ2V0VGltZSgp
IC8gMWUzIHwgMDsKICBIRUFQMzJbYnVmICsgNjggPj4gMl0gPSAwOwogIEhFQVAzMltidWYgKyA3
MiA+PiAyXSA9IHN0YXQuaW5vOwogIHJldHVybiAwOwogfSksCiBkb01zeW5jOiAoZnVuY3Rpb24o
YWRkciwgc3RyZWFtLCBsZW4sIGZsYWdzKSB7CiAgdmFyIGJ1ZmZlciA9IG5ldyBVaW50OEFycmF5
KEhFQVBVOC5idWZmZXIsIGFkZHIsIGxlbik7CiAgRlMubXN5bmMoc3RyZWFtLCBidWZmZXIsIDAs
IGxlbiwgZmxhZ3MpOwogfSksCiBkb01rZGlyOiAoZnVuY3Rpb24ocGF0aCwgbW9kZSkgewogIHBh
dGggPSBQQVRILm5vcm1hbGl6ZShwYXRoKTsKICBpZiAocGF0aFtwYXRoLmxlbmd0aCAtIDFdID09
PSAiLyIpIHBhdGggPSBwYXRoLnN1YnN0cigwLCBwYXRoLmxlbmd0aCAtIDEpOwogIEZTLm1rZGly
KHBhdGgsIG1vZGUsIDApOwogIHJldHVybiAwOwogfSksCiBkb01rbm9kOiAoZnVuY3Rpb24ocGF0
aCwgbW9kZSwgZGV2KSB7CiAgc3dpdGNoIChtb2RlICYgNjE0NDApIHsKICBjYXNlIDMyNzY4Ogog
IGNhc2UgODE5MjoKICBjYXNlIDI0NTc2OgogIGNhc2UgNDA5NjoKICBjYXNlIDQ5MTUyOgogICBi
cmVhazsKICBkZWZhdWx0OgogICByZXR1cm4gLUVSUk5PX0NPREVTLkVJTlZBTDsKICB9CiAgRlMu
bWtub2QocGF0aCwgbW9kZSwgZGV2KTsKICByZXR1cm4gMDsKIH0pLAogZG9SZWFkbGluazogKGZ1
bmN0aW9uKHBhdGgsIGJ1ZiwgYnVmc2l6ZSkgewogIGlmIChidWZzaXplIDw9IDApIHJldHVybiAt
RVJSTk9fQ09ERVMuRUlOVkFMOwogIHZhciByZXQgPSBGUy5yZWFkbGluayhwYXRoKTsKICByZXQg
PSByZXQuc2xpY2UoMCwgTWF0aC5tYXgoMCwgYnVmc2l6ZSkpOwogIHdyaXRlU3RyaW5nVG9NZW1v
cnkocmV0LCBidWYsIHRydWUpOwogIHJldHVybiByZXQubGVuZ3RoOwogfSksCiBkb0FjY2Vzczog
KGZ1bmN0aW9uKHBhdGgsIGFtb2RlKSB7CiAgaWYgKGFtb2RlICYgfjcpIHsKICAgcmV0dXJuIC1F
UlJOT19DT0RFUy5FSU5WQUw7CiAgfQogIHZhciBub2RlOwogIHZhciBsb29rdXAgPSBGUy5sb29r
dXBQYXRoKHBhdGgsIHsKICAgZm9sbG93OiB0cnVlCiAgfSk7CiAgbm9kZSA9IGxvb2t1cC5ub2Rl
OwogIHZhciBwZXJtcyA9ICIiOwogIGlmIChhbW9kZSAmIDQpIHBlcm1zICs9ICJyIjsKICBpZiAo
YW1vZGUgJiAyKSBwZXJtcyArPSAidyI7CiAgaWYgKGFtb2RlICYgMSkgcGVybXMgKz0gIngiOwog
IGlmIChwZXJtcyAmJiBGUy5ub2RlUGVybWlzc2lvbnMobm9kZSwgcGVybXMpKSB7CiAgIHJldHVy
biAtRVJSTk9fQ09ERVMuRUFDQ0VTOwogIH0KICByZXR1cm4gMDsKIH0pLAogZG9EdXA6IChmdW5j
dGlvbihwYXRoLCBmbGFncywgc3VnZ2VzdEZEKSB7CiAgdmFyIHN1Z2dlc3QgPSBGUy5nZXRTdHJl
YW0oc3VnZ2VzdEZEKTsKICBpZiAoc3VnZ2VzdCkgRlMuY2xvc2Uoc3VnZ2VzdCk7CiAgcmV0dXJu
IEZTLm9wZW4ocGF0aCwgZmxhZ3MsIDAsIHN1Z2dlc3RGRCwgc3VnZ2VzdEZEKS5mZDsKIH0pLAog
ZG9SZWFkdjogKGZ1bmN0aW9uKHN0cmVhbSwgaW92LCBpb3ZjbnQsIG9mZnNldCkgewogIHZhciBy
ZXQgPSAwOwogIGZvciAodmFyIGkgPSAwOyBpIDwgaW92Y250OyBpKyspIHsKICAgdmFyIHB0ciA9
IEhFQVAzMltpb3YgKyBpICogOCA+PiAyXTsKICAgdmFyIGxlbiA9IEhFQVAzMltpb3YgKyAoaSAq
IDggKyA0KSA+PiAyXTsKICAgdmFyIGN1cnIgPSBGUy5yZWFkKHN0cmVhbSwgSEVBUDgsIHB0ciwg
bGVuLCBvZmZzZXQpOwogICBpZiAoY3VyciA8IDApIHJldHVybiAtMTsKICAgcmV0ICs9IGN1cnI7
CiAgIGlmIChjdXJyIDwgbGVuKSBicmVhazsKICB9CiAgcmV0dXJuIHJldDsKIH0pLAogZG9Xcml0
ZXY6IChmdW5jdGlvbihzdHJlYW0sIGlvdiwgaW92Y250LCBvZmZzZXQpIHsKICB2YXIgcmV0ID0g
MDsKICBmb3IgKHZhciBpID0gMDsgaSA8IGlvdmNudDsgaSsrKSB7CiAgIHZhciBwdHIgPSBIRUFQ
MzJbaW92ICsgaSAqIDggPj4gMl07CiAgIHZhciBsZW4gPSBIRUFQMzJbaW92ICsgKGkgKiA4ICsg
NCkgPj4gMl07CiAgIHZhciBjdXJyID0gRlMud3JpdGUoc3RyZWFtLCBIRUFQOCwgcHRyLCBsZW4s
IG9mZnNldCk7CiAgIGlmIChjdXJyIDwgMCkgcmV0dXJuIC0xOwogICByZXQgKz0gY3VycjsKICB9
CiAgcmV0dXJuIHJldDsKIH0pLAogdmFyYXJnczogMCwKIGdldDogKGZ1bmN0aW9uKHZhcmFyZ3Mp
IHsKICBTWVNDQUxMUy52YXJhcmdzICs9IDQ7CiAgdmFyIHJldCA9IEhFQVAzMltTWVNDQUxMUy52
YXJhcmdzIC0gNCA+PiAyXTsKICByZXR1cm4gcmV0OwogfSksCiBnZXRTdHI6IChmdW5jdGlvbigp
IHsKICB2YXIgcmV0ID0gUG9pbnRlcl9zdHJpbmdpZnkoU1lTQ0FMTFMuZ2V0KCkpOwogIHJldHVy
biByZXQ7CiB9KSwKIGdldFN0cmVhbUZyb21GRDogKGZ1bmN0aW9uKCkgewogIHZhciBzdHJlYW0g
PSBGUy5nZXRTdHJlYW0oU1lTQ0FMTFMuZ2V0KCkpOwogIGlmICghc3RyZWFtKSB0aHJvdyBuZXcg
RlMuRXJybm9FcnJvcihFUlJOT19DT0RFUy5FQkFERik7CiAgcmV0dXJuIHN0cmVhbTsKIH0pLAog
Z2V0U29ja2V0RnJvbUZEOiAoZnVuY3Rpb24oKSB7CiAgdmFyIHNvY2tldCA9IFNPQ0tGUy5nZXRT
b2NrZXQoU1lTQ0FMTFMuZ2V0KCkpOwogIGlmICghc29ja2V0KSB0aHJvdyBuZXcgRlMuRXJybm9F
cnJvcihFUlJOT19DT0RFUy5FQkFERik7CiAgcmV0dXJuIHNvY2tldDsKIH0pLAogZ2V0U29ja2V0
QWRkcmVzczogKGZ1bmN0aW9uKGFsbG93TnVsbCkgewogIHZhciBhZGRycCA9IFNZU0NBTExTLmdl
dCgpLCBhZGRybGVuID0gU1lTQ0FMTFMuZ2V0KCk7CiAgaWYgKGFsbG93TnVsbCAmJiBhZGRycCA9
PT0gMCkgcmV0dXJuIG51bGw7CiAgdmFyIGluZm8gPSBfX3JlYWRfc29ja2FkZHIoYWRkcnAsIGFk
ZHJsZW4pOwogIGlmIChpbmZvLmVycm5vKSB0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihpbmZvLmVy
cm5vKTsKICBpbmZvLmFkZHIgPSBETlMubG9va3VwX2FkZHIoaW5mby5hZGRyKSB8fCBpbmZvLmFk
ZHI7CiAgcmV0dXJuIGluZm87CiB9KSwKIGdldDY0OiAoZnVuY3Rpb24oKSB7CiAgdmFyIGxvdyA9
IFNZU0NBTExTLmdldCgpLCBoaWdoID0gU1lTQ0FMTFMuZ2V0KCk7CiAgaWYgKGxvdyA+PSAwKSBh
c3NlcnQoaGlnaCA9PT0gMCk7IGVsc2UgYXNzZXJ0KGhpZ2ggPT09IC0xKTsKICByZXR1cm4gbG93
OwogfSksCiBnZXRaZXJvOiAoZnVuY3Rpb24oKSB7CiAgYXNzZXJ0KFNZU0NBTExTLmdldCgpID09
PSAwKTsKIH0pCn07CmZ1bmN0aW9uIF9fX3N5c2NhbGw2KHdoaWNoLCB2YXJhcmdzKSB7CiBTWVND
QUxMUy52YXJhcmdzID0gdmFyYXJnczsKIHRyeSB7CiAgdmFyIHN0cmVhbSA9IFNZU0NBTExTLmdl
dFN0cmVhbUZyb21GRCgpOwogIEZTLmNsb3NlKHN0cmVhbSk7CiAgcmV0dXJuIDA7CiB9IGNhdGNo
IChlKSB7CiAgaWYgKHR5cGVvZiBGUyA9PT0gInVuZGVmaW5lZCIgfHwgIShlIGluc3RhbmNlb2Yg
RlMuRXJybm9FcnJvcikpIGFib3J0KGUpOwogIHJldHVybiAtZS5lcnJubzsKIH0KfQpmdW5jdGlv
biBfc3lzY29uZihuYW1lKSB7CiBzd2l0Y2ggKG5hbWUpIHsKIGNhc2UgMzA6CiAgcmV0dXJuIFBB
R0VfU0laRTsKIGNhc2UgODU6CiAgcmV0dXJuIHRvdGFsTWVtb3J5IC8gUEFHRV9TSVpFOwogY2Fz
ZSAxMzI6CiBjYXNlIDEzMzoKIGNhc2UgMTI6CiBjYXNlIDEzNzoKIGNhc2UgMTM4OgogY2FzZSAx
NToKIGNhc2UgMjM1OgogY2FzZSAxNjoKIGNhc2UgMTc6CiBjYXNlIDE4OgogY2FzZSAxOToKIGNh
c2UgMjA6CiBjYXNlIDE0OToKIGNhc2UgMTM6CiBjYXNlIDEwOgogY2FzZSAyMzY6CiBjYXNlIDE1
MzoKIGNhc2UgOToKIGNhc2UgMjE6CiBjYXNlIDIyOgogY2FzZSAxNTk6CiBjYXNlIDE1NDoKIGNh
c2UgMTQ6CiBjYXNlIDc3OgogY2FzZSA3ODoKIGNhc2UgMTM5OgogY2FzZSA4MDoKIGNhc2UgODE6
CiBjYXNlIDgyOgogY2FzZSA2ODoKIGNhc2UgNjc6CiBjYXNlIDE2NDoKIGNhc2UgMTE6CiBjYXNl
IDI5OgogY2FzZSA0NzoKIGNhc2UgNDg6CiBjYXNlIDk1OgogY2FzZSA1MjoKIGNhc2UgNTE6CiBj
YXNlIDQ2OgogIHJldHVybiAyMDA4MDk7CiBjYXNlIDc5OgogIHJldHVybiAwOwogY2FzZSAyNzoK
IGNhc2UgMjQ2OgogY2FzZSAxMjc6CiBjYXNlIDEyODoKIGNhc2UgMjM6CiBjYXNlIDI0OgogY2Fz
ZSAxNjA6CiBjYXNlIDE2MToKIGNhc2UgMTgxOgogY2FzZSAxODI6CiBjYXNlIDI0MjoKIGNhc2Ug
MTgzOgogY2FzZSAxODQ6CiBjYXNlIDI0MzoKIGNhc2UgMjQ0OgogY2FzZSAyNDU6CiBjYXNlIDE2
NToKIGNhc2UgMTc4OgogY2FzZSAxNzk6CiBjYXNlIDQ5OgogY2FzZSA1MDoKIGNhc2UgMTY4Ogog
Y2FzZSAxNjk6CiBjYXNlIDE3NToKIGNhc2UgMTcwOgogY2FzZSAxNzE6CiBjYXNlIDE3MjoKIGNh
c2UgOTc6CiBjYXNlIDc2OgogY2FzZSAzMjoKIGNhc2UgMTczOgogY2FzZSAzNToKICByZXR1cm4g
LTE7CiBjYXNlIDE3NjoKIGNhc2UgMTc3OgogY2FzZSA3OgogY2FzZSAxNTU6CiBjYXNlIDg6CiBj
YXNlIDE1NzoKIGNhc2UgMTI1OgogY2FzZSAxMjY6CiBjYXNlIDkyOgogY2FzZSA5MzoKIGNhc2Ug
MTI5OgogY2FzZSAxMzA6CiBjYXNlIDEzMToKIGNhc2UgOTQ6CiBjYXNlIDkxOgogIHJldHVybiAx
OwogY2FzZSA3NDoKIGNhc2UgNjA6CiBjYXNlIDY5OgogY2FzZSA3MDoKIGNhc2UgNDoKICByZXR1
cm4gMTAyNDsKIGNhc2UgMzE6CiBjYXNlIDQyOgogY2FzZSA3MjoKICByZXR1cm4gMzI7CiBjYXNl
IDg3OgogY2FzZSAyNjoKIGNhc2UgMzM6CiAgcmV0dXJuIDIxNDc0ODM2NDc7CiBjYXNlIDM0Ogog
Y2FzZSAxOgogIHJldHVybiA0NzgzOTsKIGNhc2UgMzg6CiBjYXNlIDM2OgogIHJldHVybiA5OTsK
IGNhc2UgNDM6CiBjYXNlIDM3OgogIHJldHVybiAyMDQ4OwogY2FzZSAwOgogIHJldHVybiAyMDk3
MTUyOwogY2FzZSAzOgogIHJldHVybiA2NTUzNjsKIGNhc2UgMjg6CiAgcmV0dXJuIDMyNzY4Owog
Y2FzZSA0NDoKICByZXR1cm4gMzI3Njc7CiBjYXNlIDc1OgogIHJldHVybiAxNjM4NDsKIGNhc2Ug
Mzk6CiAgcmV0dXJuIDFlMzsKIGNhc2UgODk6CiAgcmV0dXJuIDcwMDsKIGNhc2UgNzE6CiAgcmV0
dXJuIDI1NjsKIGNhc2UgNDA6CiAgcmV0dXJuIDI1NTsKIGNhc2UgMjoKICByZXR1cm4gMTAwOwog
Y2FzZSAxODA6CiAgcmV0dXJuIDY0OwogY2FzZSAyNToKICByZXR1cm4gMjA7CiBjYXNlIDU6CiAg
cmV0dXJuIDE2OwogY2FzZSA2OgogIHJldHVybiA2OwogY2FzZSA3MzoKICByZXR1cm4gNDsKIGNh
c2UgODQ6CiAgewogICBpZiAodHlwZW9mIG5hdmlnYXRvciA9PT0gIm9iamVjdCIpIHJldHVybiBu
YXZpZ2F0b3JbImhhcmR3YXJlQ29uY3VycmVuY3kiXSB8fCAxOwogICByZXR1cm4gMTsKICB9CiB9
CiBfX19zZXRFcnJObyhFUlJOT19DT0RFUy5FSU5WQUwpOwogcmV0dXJuIC0xOwp9CmZ1bmN0aW9u
IF9zYnJrKGJ5dGVzKSB7CiB2YXIgc2VsZiA9IF9zYnJrOwogaWYgKCFzZWxmLmNhbGxlZCkgewog
IERZTkFNSUNUT1AgPSBhbGlnbk1lbW9yeVBhZ2UoRFlOQU1JQ1RPUCk7CiAgc2VsZi5jYWxsZWQg
PSB0cnVlOwogIGFzc2VydChSdW50aW1lLmR5bmFtaWNBbGxvYyk7CiAgc2VsZi5hbGxvYyA9IFJ1
bnRpbWUuZHluYW1pY0FsbG9jOwogIFJ1bnRpbWUuZHluYW1pY0FsbG9jID0gKGZ1bmN0aW9uKCkg
ewogICBhYm9ydCgiY2Fubm90IGR5bmFtaWNhbGx5IGFsbG9jYXRlLCBzYnJrIG5vdyBoYXMgY29u
dHJvbCIpOwogIH0pOwogfQogdmFyIHJldCA9IERZTkFNSUNUT1A7CiBpZiAoYnl0ZXMgIT0gMCkg
ewogIHZhciBzdWNjZXNzID0gc2VsZi5hbGxvYyhieXRlcyk7CiAgaWYgKCFzdWNjZXNzKSByZXR1
cm4gLTEgPj4+IDA7CiB9CiByZXR1cm4gcmV0Owp9CnZhciBfQkl0b0QgPSB0cnVlOwpmdW5jdGlv
biBfZW1zY3JpcHRlbl9tZW1jcHlfYmlnKGRlc3QsIHNyYywgbnVtKSB7CiBIRUFQVTguc2V0KEhF
QVBVOC5zdWJhcnJheShzcmMsIHNyYyArIG51bSksIGRlc3QpOwogcmV0dXJuIGRlc3Q7Cn0KTW9k
dWxlWyJfbWVtY3B5Il0gPSBfbWVtY3B5OwpmdW5jdGlvbiBfZW1zY3JpcHRlbl9zZXRfbWFpbl9s
b29wX3RpbWluZyhtb2RlLCB2YWx1ZSkgewogQnJvd3Nlci5tYWluTG9vcC50aW1pbmdNb2RlID0g
bW9kZTsKIEJyb3dzZXIubWFpbkxvb3AudGltaW5nVmFsdWUgPSB2YWx1ZTsKIGlmICghQnJvd3Nl
ci5tYWluTG9vcC5mdW5jKSB7CiAgcmV0dXJuIDE7CiB9CiBpZiAobW9kZSA9PSAwKSB7CiAgQnJv
d3Nlci5tYWluTG9vcC5zY2hlZHVsZXIgPSBmdW5jdGlvbiBCcm93c2VyX21haW5Mb29wX3NjaGVk
dWxlcigpIHsKICAgc2V0VGltZW91dChCcm93c2VyLm1haW5Mb29wLnJ1bm5lciwgdmFsdWUpOwog
IH07CiAgQnJvd3Nlci5tYWluTG9vcC5tZXRob2QgPSAidGltZW91dCI7CiB9IGVsc2UgaWYgKG1v
ZGUgPT0gMSkgewogIEJyb3dzZXIubWFpbkxvb3Auc2NoZWR1bGVyID0gZnVuY3Rpb24gQnJvd3Nl
cl9tYWluTG9vcF9zY2hlZHVsZXIoKSB7CiAgIEJyb3dzZXIucmVxdWVzdEFuaW1hdGlvbkZyYW1l
KEJyb3dzZXIubWFpbkxvb3AucnVubmVyKTsKICB9OwogIEJyb3dzZXIubWFpbkxvb3AubWV0aG9k
ID0gInJBRiI7CiB9CiByZXR1cm4gMDsKfQpmdW5jdGlvbiBfZW1zY3JpcHRlbl9zZXRfbWFpbl9s
b29wKGZ1bmMsIGZwcywgc2ltdWxhdGVJbmZpbml0ZUxvb3AsIGFyZywgbm9TZXRUaW1pbmcpIHsK
IE1vZHVsZVsibm9FeGl0UnVudGltZSJdID0gdHJ1ZTsKIGFzc2VydCghQnJvd3Nlci5tYWluTG9v
cC5mdW5jLCAiZW1zY3JpcHRlbl9zZXRfbWFpbl9sb29wOiB0aGVyZSBjYW4gb25seSBiZSBvbmUg
bWFpbiBsb29wIGZ1bmN0aW9uIGF0IG9uY2U6IGNhbGwgZW1zY3JpcHRlbl9jYW5jZWxfbWFpbl9s
b29wIHRvIGNhbmNlbCB0aGUgcHJldmlvdXMgb25lIGJlZm9yZSBzZXR0aW5nIGEgbmV3IG9uZSB3
aXRoIGRpZmZlcmVudCBwYXJhbWV0ZXJzLiIpOwogQnJvd3Nlci5tYWluTG9vcC5mdW5jID0gZnVu
YzsKIEJyb3dzZXIubWFpbkxvb3AuYXJnID0gYXJnOwogdmFyIHRoaXNNYWluTG9vcElkID0gQnJv
d3Nlci5tYWluTG9vcC5jdXJyZW50bHlSdW5uaW5nTWFpbmxvb3A7CiBCcm93c2VyLm1haW5Mb29w
LnJ1bm5lciA9IGZ1bmN0aW9uIEJyb3dzZXJfbWFpbkxvb3BfcnVubmVyKCkgewogIGlmIChBQk9S
VCkgcmV0dXJuOwogIGlmIChCcm93c2VyLm1haW5Mb29wLnF1ZXVlLmxlbmd0aCA+IDApIHsKICAg
dmFyIHN0YXJ0ID0gRGF0ZS5ub3coKTsKICAgdmFyIGJsb2NrZXIgPSBCcm93c2VyLm1haW5Mb29w
LnF1ZXVlLnNoaWZ0KCk7CiAgIGJsb2NrZXIuZnVuYyhibG9ja2VyLmFyZyk7CiAgIGlmIChCcm93
c2VyLm1haW5Mb29wLnJlbWFpbmluZ0Jsb2NrZXJzKSB7CiAgICB2YXIgcmVtYWluaW5nID0gQnJv
d3Nlci5tYWluTG9vcC5yZW1haW5pbmdCbG9ja2VyczsKICAgIHZhciBuZXh0ID0gcmVtYWluaW5n
ICUgMSA9PSAwID8gcmVtYWluaW5nIC0gMSA6IE1hdGguZmxvb3IocmVtYWluaW5nKTsKICAgIGlm
IChibG9ja2VyLmNvdW50ZWQpIHsKICAgICBCcm93c2VyLm1haW5Mb29wLnJlbWFpbmluZ0Jsb2Nr
ZXJzID0gbmV4dDsKICAgIH0gZWxzZSB7CiAgICAgbmV4dCA9IG5leHQgKyAuNTsKICAgICBCcm93
c2VyLm1haW5Mb29wLnJlbWFpbmluZ0Jsb2NrZXJzID0gKDggKiByZW1haW5pbmcgKyBuZXh0KSAv
IDk7CiAgICB9CiAgIH0KICAgY29uc29sZS5sb2coJ21haW4gbG9vcCBibG9ja2VyICInICsgYmxv
Y2tlci5uYW1lICsgJyIgdG9vayAnICsgKERhdGUubm93KCkgLSBzdGFydCkgKyAiIG1zIik7CiAg
IEJyb3dzZXIubWFpbkxvb3AudXBkYXRlU3RhdHVzKCk7CiAgIHNldFRpbWVvdXQoQnJvd3Nlci5t
YWluTG9vcC5ydW5uZXIsIDApOwogICByZXR1cm47CiAgfQogIGlmICh0aGlzTWFpbkxvb3BJZCA8
IEJyb3dzZXIubWFpbkxvb3AuY3VycmVudGx5UnVubmluZ01haW5sb29wKSByZXR1cm47CiAgQnJv
d3Nlci5tYWluTG9vcC5jdXJyZW50RnJhbWVOdW1iZXIgPSBCcm93c2VyLm1haW5Mb29wLmN1cnJl
bnRGcmFtZU51bWJlciArIDEgfCAwOwogIGlmIChCcm93c2VyLm1haW5Mb29wLnRpbWluZ01vZGUg
PT0gMSAmJiBCcm93c2VyLm1haW5Mb29wLnRpbWluZ1ZhbHVlID4gMSAmJiBCcm93c2VyLm1haW5M
b29wLmN1cnJlbnRGcmFtZU51bWJlciAlIEJyb3dzZXIubWFpbkxvb3AudGltaW5nVmFsdWUgIT0g
MCkgewogICBCcm93c2VyLm1haW5Mb29wLnNjaGVkdWxlcigpOwogICByZXR1cm47CiAgfQogIGlm
IChCcm93c2VyLm1haW5Mb29wLm1ldGhvZCA9PT0gInRpbWVvdXQiICYmIE1vZHVsZS5jdHgpIHsK
ICAgTW9kdWxlLnByaW50RXJyKCJMb29rcyBsaWtlIHlvdSBhcmUgcmVuZGVyaW5nIHdpdGhvdXQg
dXNpbmcgcmVxdWVzdEFuaW1hdGlvbkZyYW1lIGZvciB0aGUgbWFpbiBsb29wLiBZb3Ugc2hvdWxk
IHVzZSAwIGZvciB0aGUgZnJhbWUgcmF0ZSBpbiBlbXNjcmlwdGVuX3NldF9tYWluX2xvb3AgaW4g
b3JkZXIgdG8gdXNlIHJlcXVlc3RBbmltYXRpb25GcmFtZSwgYXMgdGhhdCBjYW4gZ3JlYXRseSBp
bXByb3ZlIHlvdXIgZnJhbWUgcmF0ZXMhIik7CiAgIEJyb3dzZXIubWFpbkxvb3AubWV0aG9kID0g
IiI7CiAgfQogIEJyb3dzZXIubWFpbkxvb3AucnVuSXRlcigoZnVuY3Rpb24oKSB7CiAgIGlmICh0
eXBlb2YgYXJnICE9PSAidW5kZWZpbmVkIikgewogICAgUnVudGltZS5keW5DYWxsKCJ2aSIsIGZ1
bmMsIFsgYXJnIF0pOwogICB9IGVsc2UgewogICAgUnVudGltZS5keW5DYWxsKCJ2IiwgZnVuYyk7
CiAgIH0KICB9KSk7CiAgaWYgKHRoaXNNYWluTG9vcElkIDwgQnJvd3Nlci5tYWluTG9vcC5jdXJy
ZW50bHlSdW5uaW5nTWFpbmxvb3ApIHJldHVybjsKICBpZiAodHlwZW9mIFNETCA9PT0gIm9iamVj
dCIgJiYgU0RMLmF1ZGlvICYmIFNETC5hdWRpby5xdWV1ZU5ld0F1ZGlvRGF0YSkgU0RMLmF1ZGlv
LnF1ZXVlTmV3QXVkaW9EYXRhKCk7CiAgQnJvd3Nlci5tYWluTG9vcC5zY2hlZHVsZXIoKTsKIH07
CiBpZiAoIW5vU2V0VGltaW5nKSB7CiAgaWYgKGZwcyAmJiBmcHMgPiAwKSBfZW1zY3JpcHRlbl9z
ZXRfbWFpbl9sb29wX3RpbWluZygwLCAxZTMgLyBmcHMpOyBlbHNlIF9lbXNjcmlwdGVuX3NldF9t
YWluX2xvb3BfdGltaW5nKDEsIDEpOwogIEJyb3dzZXIubWFpbkxvb3Auc2NoZWR1bGVyKCk7CiB9
CiBpZiAoc2ltdWxhdGVJbmZpbml0ZUxvb3ApIHsKICB0aHJvdyAiU2ltdWxhdGVJbmZpbml0ZUxv
b3AiOwogfQp9CnZhciBCcm93c2VyID0gewogbWFpbkxvb3A6IHsKICBzY2hlZHVsZXI6IG51bGws
CiAgbWV0aG9kOiAiIiwKICBjdXJyZW50bHlSdW5uaW5nTWFpbmxvb3A6IDAsCiAgZnVuYzogbnVs
bCwKICBhcmc6IDAsCiAgdGltaW5nTW9kZTogMCwKICB0aW1pbmdWYWx1ZTogMCwKICBjdXJyZW50
RnJhbWVOdW1iZXI6IDAsCiAgcXVldWU6IFtdLAogIHBhdXNlOiAoZnVuY3Rpb24oKSB7CiAgIEJy
b3dzZXIubWFpbkxvb3Auc2NoZWR1bGVyID0gbnVsbDsKICAgQnJvd3Nlci5tYWluTG9vcC5jdXJy
ZW50bHlSdW5uaW5nTWFpbmxvb3ArKzsKICB9KSwKICByZXN1bWU6IChmdW5jdGlvbigpIHsKICAg
QnJvd3Nlci5tYWluTG9vcC5jdXJyZW50bHlSdW5uaW5nTWFpbmxvb3ArKzsKICAgdmFyIHRpbWlu
Z01vZGUgPSBCcm93c2VyLm1haW5Mb29wLnRpbWluZ01vZGU7CiAgIHZhciB0aW1pbmdWYWx1ZSA9
IEJyb3dzZXIubWFpbkxvb3AudGltaW5nVmFsdWU7CiAgIHZhciBmdW5jID0gQnJvd3Nlci5tYWlu
TG9vcC5mdW5jOwogICBCcm93c2VyLm1haW5Mb29wLmZ1bmMgPSBudWxsOwogICBfZW1zY3JpcHRl
bl9zZXRfbWFpbl9sb29wKGZ1bmMsIDAsIGZhbHNlLCBCcm93c2VyLm1haW5Mb29wLmFyZywgdHJ1
ZSk7CiAgIF9lbXNjcmlwdGVuX3NldF9tYWluX2xvb3BfdGltaW5nKHRpbWluZ01vZGUsIHRpbWlu
Z1ZhbHVlKTsKICAgQnJvd3Nlci5tYWluTG9vcC5zY2hlZHVsZXIoKTsKICB9KSwKICB1cGRhdGVT
dGF0dXM6IChmdW5jdGlvbigpIHsKICAgaWYgKE1vZHVsZVsic2V0U3RhdHVzIl0pIHsKICAgIHZh
ciBtZXNzYWdlID0gTW9kdWxlWyJzdGF0dXNNZXNzYWdlIl0gfHwgIlBsZWFzZSB3YWl0Li4uIjsK
ICAgIHZhciByZW1haW5pbmcgPSBCcm93c2VyLm1haW5Mb29wLnJlbWFpbmluZ0Jsb2NrZXJzOwog
ICAgdmFyIGV4cGVjdGVkID0gQnJvd3Nlci5tYWluTG9vcC5leHBlY3RlZEJsb2NrZXJzOwogICAg
aWYgKHJlbWFpbmluZykgewogICAgIGlmIChyZW1haW5pbmcgPCBleHBlY3RlZCkgewogICAgICBN
b2R1bGVbInNldFN0YXR1cyJdKG1lc3NhZ2UgKyAiICgiICsgKGV4cGVjdGVkIC0gcmVtYWluaW5n
KSArICIvIiArIGV4cGVjdGVkICsgIikiKTsKICAgICB9IGVsc2UgewogICAgICBNb2R1bGVbInNl
dFN0YXR1cyJdKG1lc3NhZ2UpOwogICAgIH0KICAgIH0gZWxzZSB7CiAgICAgTW9kdWxlWyJzZXRT
dGF0dXMiXSgiIik7CiAgICB9CiAgIH0KICB9KSwKICBydW5JdGVyOiAoZnVuY3Rpb24oZnVuYykg
ewogICBpZiAoQUJPUlQpIHJldHVybjsKICAgaWYgKE1vZHVsZVsicHJlTWFpbkxvb3AiXSkgewog
ICAgdmFyIHByZVJldCA9IE1vZHVsZVsicHJlTWFpbkxvb3AiXSgpOwogICAgaWYgKHByZVJldCA9
PT0gZmFsc2UpIHsKICAgICByZXR1cm47CiAgICB9CiAgIH0KICAgdHJ5IHsKICAgIGZ1bmMoKTsK
ICAgfSBjYXRjaCAoZSkgewogICAgaWYgKGUgaW5zdGFuY2VvZiBFeGl0U3RhdHVzKSB7CiAgICAg
cmV0dXJuOwogICAgfSBlbHNlIHsKICAgICBpZiAoZSAmJiB0eXBlb2YgZSA9PT0gIm9iamVjdCIg
JiYgZS5zdGFjaykgTW9kdWxlLnByaW50RXJyKCJleGNlcHRpb24gdGhyb3duOiAiICsgWyBlLCBl
LnN0YWNrIF0pOwogICAgIHRocm93IGU7CiAgICB9CiAgIH0KICAgaWYgKE1vZHVsZVsicG9zdE1h
aW5Mb29wIl0pIE1vZHVsZVsicG9zdE1haW5Mb29wIl0oKTsKICB9KQogfSwKIGlzRnVsbFNjcmVl
bjogZmFsc2UsCiBwb2ludGVyTG9jazogZmFsc2UsCiBtb2R1bGVDb250ZXh0Q3JlYXRlZENhbGxi
YWNrczogW10sCiB3b3JrZXJzOiBbXSwKIGluaXQ6IChmdW5jdGlvbigpIHsKICBpZiAoIU1vZHVs
ZVsicHJlbG9hZFBsdWdpbnMiXSkgTW9kdWxlWyJwcmVsb2FkUGx1Z2lucyJdID0gW107CiAgaWYg
KEJyb3dzZXIuaW5pdHRlZCkgcmV0dXJuOwogIEJyb3dzZXIuaW5pdHRlZCA9IHRydWU7CiAgdHJ5
IHsKICAgbmV3IEJsb2I7CiAgIEJyb3dzZXIuaGFzQmxvYkNvbnN0cnVjdG9yID0gdHJ1ZTsKICB9
IGNhdGNoIChlKSB7CiAgIEJyb3dzZXIuaGFzQmxvYkNvbnN0cnVjdG9yID0gZmFsc2U7CiAgIGNv
bnNvbGUubG9nKCJ3YXJuaW5nOiBubyBibG9iIGNvbnN0cnVjdG9yLCBjYW5ub3QgY3JlYXRlIGJs
b2JzIHdpdGggbWltZXR5cGVzIik7CiAgfQogIEJyb3dzZXIuQmxvYkJ1aWxkZXIgPSB0eXBlb2Yg
TW96QmxvYkJ1aWxkZXIgIT0gInVuZGVmaW5lZCIgPyBNb3pCbG9iQnVpbGRlciA6IHR5cGVvZiBX
ZWJLaXRCbG9iQnVpbGRlciAhPSAidW5kZWZpbmVkIiA/IFdlYktpdEJsb2JCdWlsZGVyIDogIUJy
b3dzZXIuaGFzQmxvYkNvbnN0cnVjdG9yID8gY29uc29sZS5sb2coIndhcm5pbmc6IG5vIEJsb2JC
dWlsZGVyIikgOiBudWxsOwogIEJyb3dzZXIuVVJMT2JqZWN0ID0gdHlwZW9mIHdpbmRvdyAhPSAi
dW5kZWZpbmVkIiA/IHdpbmRvdy5VUkwgPyB3aW5kb3cuVVJMIDogd2luZG93LndlYmtpdFVSTCA6
IHVuZGVmaW5lZDsKICBpZiAoIU1vZHVsZS5ub0ltYWdlRGVjb2RpbmcgJiYgdHlwZW9mIEJyb3dz
ZXIuVVJMT2JqZWN0ID09PSAidW5kZWZpbmVkIikgewogICBjb25zb2xlLmxvZygid2FybmluZzog
QnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IGNyZWF0aW5nIG9iamVjdCBVUkxzLiBCdWlsdC1pbiBi
cm93c2VyIGltYWdlIGRlY29kaW5nIHdpbGwgbm90IGJlIGF2YWlsYWJsZS4iKTsKICAgTW9kdWxl
Lm5vSW1hZ2VEZWNvZGluZyA9IHRydWU7CiAgfQogIHZhciBpbWFnZVBsdWdpbiA9IHt9OwogIGlt
YWdlUGx1Z2luWyJjYW5IYW5kbGUiXSA9IGZ1bmN0aW9uIGltYWdlUGx1Z2luX2NhbkhhbmRsZShu
YW1lKSB7CiAgIHJldHVybiAhTW9kdWxlLm5vSW1hZ2VEZWNvZGluZyAmJiAvXC4oanBnfGpwZWd8
cG5nfGJtcCkkL2kudGVzdChuYW1lKTsKICB9OwogIGltYWdlUGx1Z2luWyJoYW5kbGUiXSA9IGZ1
bmN0aW9uIGltYWdlUGx1Z2luX2hhbmRsZShieXRlQXJyYXksIG5hbWUsIG9ubG9hZCwgb25lcnJv
cikgewogICB2YXIgYiA9IG51bGw7CiAgIGlmIChCcm93c2VyLmhhc0Jsb2JDb25zdHJ1Y3Rvcikg
ewogICAgdHJ5IHsKICAgICBiID0gbmV3IEJsb2IoWyBieXRlQXJyYXkgXSwgewogICAgICB0eXBl
OiBCcm93c2VyLmdldE1pbWV0eXBlKG5hbWUpCiAgICAgfSk7CiAgICAgaWYgKGIuc2l6ZSAhPT0g
Ynl0ZUFycmF5Lmxlbmd0aCkgewogICAgICBiID0gbmV3IEJsb2IoWyAobmV3IFVpbnQ4QXJyYXko
Ynl0ZUFycmF5KSkuYnVmZmVyIF0sIHsKICAgICAgIHR5cGU6IEJyb3dzZXIuZ2V0TWltZXR5cGUo
bmFtZSkKICAgICAgfSk7CiAgICAgfQogICAgfSBjYXRjaCAoZSkgewogICAgIFJ1bnRpbWUud2Fy
bk9uY2UoIkJsb2IgY29uc3RydWN0b3IgcHJlc2VudCBidXQgZmFpbHM6ICIgKyBlICsgIjsgZmFs
bGluZyBiYWNrIHRvIGJsb2IgYnVpbGRlciIpOwogICAgfQogICB9CiAgIGlmICghYikgewogICAg
dmFyIGJiID0gbmV3IEJyb3dzZXIuQmxvYkJ1aWxkZXI7CiAgICBiYi5hcHBlbmQoKG5ldyBVaW50
OEFycmF5KGJ5dGVBcnJheSkpLmJ1ZmZlcik7CiAgICBiID0gYmIuZ2V0QmxvYigpOwogICB9CiAg
IHZhciB1cmwgPSBCcm93c2VyLlVSTE9iamVjdC5jcmVhdGVPYmplY3RVUkwoYik7CiAgIHZhciBp
bWcgPSBuZXcgSW1hZ2U7CiAgIGltZy5vbmxvYWQgPSBmdW5jdGlvbiBpbWdfb25sb2FkKCkgewog
ICAgYXNzZXJ0KGltZy5jb21wbGV0ZSwgIkltYWdlICIgKyBuYW1lICsgIiBjb3VsZCBub3QgYmUg
ZGVjb2RlZCIpOwogICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZh
cyIpOwogICAgY2FudmFzLndpZHRoID0gaW1nLndpZHRoOwogICAgY2FudmFzLmhlaWdodCA9IGlt
Zy5oZWlnaHQ7CiAgICB2YXIgY3R4ID0gY2FudmFzLmdldENvbnRleHQoIjJkIik7CiAgICBjdHgu
ZHJhd0ltYWdlKGltZywgMCwgMCk7CiAgICBNb2R1bGVbInByZWxvYWRlZEltYWdlcyJdW25hbWVd
ID0gY2FudmFzOwogICAgQnJvd3Nlci5VUkxPYmplY3QucmV2b2tlT2JqZWN0VVJMKHVybCk7CiAg
ICBpZiAob25sb2FkKSBvbmxvYWQoYnl0ZUFycmF5KTsKICAgfTsKICAgaW1nLm9uZXJyb3IgPSBm
dW5jdGlvbiBpbWdfb25lcnJvcihldmVudCkgewogICAgY29uc29sZS5sb2coIkltYWdlICIgKyB1
cmwgKyAiIGNvdWxkIG5vdCBiZSBkZWNvZGVkIik7CiAgICBpZiAob25lcnJvcikgb25lcnJvcigp
OwogICB9OwogICBpbWcuc3JjID0gdXJsOwogIH07CiAgTW9kdWxlWyJwcmVsb2FkUGx1Z2lucyJd
LnB1c2goaW1hZ2VQbHVnaW4pOwogIHZhciBhdWRpb1BsdWdpbiA9IHt9OwogIGF1ZGlvUGx1Z2lu
WyJjYW5IYW5kbGUiXSA9IGZ1bmN0aW9uIGF1ZGlvUGx1Z2luX2NhbkhhbmRsZShuYW1lKSB7CiAg
IHJldHVybiAhTW9kdWxlLm5vQXVkaW9EZWNvZGluZyAmJiBuYW1lLnN1YnN0cigtNCkgaW4gewog
ICAgIi5vZ2ciOiAxLAogICAgIi53YXYiOiAxLAogICAgIi5tcDMiOiAxCiAgIH07CiAgfTsKICBh
dWRpb1BsdWdpblsiaGFuZGxlIl0gPSBmdW5jdGlvbiBhdWRpb1BsdWdpbl9oYW5kbGUoYnl0ZUFy
cmF5LCBuYW1lLCBvbmxvYWQsIG9uZXJyb3IpIHsKICAgdmFyIGRvbmUgPSBmYWxzZTsKICAgZnVu
Y3Rpb24gZmluaXNoKGF1ZGlvKSB7CiAgICBpZiAoZG9uZSkgcmV0dXJuOwogICAgZG9uZSA9IHRy
dWU7CiAgICBNb2R1bGVbInByZWxvYWRlZEF1ZGlvcyJdW25hbWVdID0gYXVkaW87CiAgICBpZiAo
b25sb2FkKSBvbmxvYWQoYnl0ZUFycmF5KTsKICAgfQogICBmdW5jdGlvbiBmYWlsKCkgewogICAg
aWYgKGRvbmUpIHJldHVybjsKICAgIGRvbmUgPSB0cnVlOwogICAgTW9kdWxlWyJwcmVsb2FkZWRB
dWRpb3MiXVtuYW1lXSA9IG5ldyBBdWRpbzsKICAgIGlmIChvbmVycm9yKSBvbmVycm9yKCk7CiAg
IH0KICAgaWYgKEJyb3dzZXIuaGFzQmxvYkNvbnN0cnVjdG9yKSB7CiAgICB0cnkgewogICAgIHZh
ciBiID0gbmV3IEJsb2IoWyBieXRlQXJyYXkgXSwgewogICAgICB0eXBlOiBCcm93c2VyLmdldE1p
bWV0eXBlKG5hbWUpCiAgICAgfSk7CiAgICB9IGNhdGNoIChlKSB7CiAgICAgcmV0dXJuIGZhaWwo
KTsKICAgIH0KICAgIHZhciB1cmwgPSBCcm93c2VyLlVSTE9iamVjdC5jcmVhdGVPYmplY3RVUkwo
Yik7CiAgICB2YXIgYXVkaW8gPSBuZXcgQXVkaW87CiAgICBhdWRpby5hZGRFdmVudExpc3RlbmVy
KCJjYW5wbGF5dGhyb3VnaCIsIChmdW5jdGlvbigpIHsKICAgICBmaW5pc2goYXVkaW8pOwogICAg
fSksIGZhbHNlKTsKICAgIGF1ZGlvLm9uZXJyb3IgPSBmdW5jdGlvbiBhdWRpb19vbmVycm9yKGV2
ZW50KSB7CiAgICAgaWYgKGRvbmUpIHJldHVybjsKICAgICBjb25zb2xlLmxvZygid2FybmluZzog
YnJvd3NlciBjb3VsZCBub3QgZnVsbHkgZGVjb2RlIGF1ZGlvICIgKyBuYW1lICsgIiwgdHJ5aW5n
IHNsb3dlciBiYXNlNjQgYXBwcm9hY2giKTsKICAgICBmdW5jdGlvbiBlbmNvZGU2NChkYXRhKSB7
CiAgICAgIHZhciBCQVNFID0gIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamts
bW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8iOwogICAgICB2YXIgUEFEID0gIj0iOwogICAgICB2
YXIgcmV0ID0gIiI7CiAgICAgIHZhciBsZWZ0Y2hhciA9IDA7CiAgICAgIHZhciBsZWZ0Yml0cyA9
IDA7CiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7IGkrKykgewogICAgICAg
bGVmdGNoYXIgPSBsZWZ0Y2hhciA8PCA4IHwgZGF0YVtpXTsKICAgICAgIGxlZnRiaXRzICs9IDg7
CiAgICAgICB3aGlsZSAobGVmdGJpdHMgPj0gNikgewogICAgICAgIHZhciBjdXJyID0gbGVmdGNo
YXIgPj4gbGVmdGJpdHMgLSA2ICYgNjM7CiAgICAgICAgbGVmdGJpdHMgLT0gNjsKICAgICAgICBy
ZXQgKz0gQkFTRVtjdXJyXTsKICAgICAgIH0KICAgICAgfQogICAgICBpZiAobGVmdGJpdHMgPT0g
MikgewogICAgICAgcmV0ICs9IEJBU0VbKGxlZnRjaGFyICYgMykgPDwgNF07CiAgICAgICByZXQg
Kz0gUEFEICsgUEFEOwogICAgICB9IGVsc2UgaWYgKGxlZnRiaXRzID09IDQpIHsKICAgICAgIHJl
dCArPSBCQVNFWyhsZWZ0Y2hhciAmIDE1KSA8PCAyXTsKICAgICAgIHJldCArPSBQQUQ7CiAgICAg
IH0KICAgICAgcmV0dXJuIHJldDsKICAgICB9CiAgICAgYXVkaW8uc3JjID0gImRhdGE6YXVkaW8v
eC0iICsgbmFtZS5zdWJzdHIoLTMpICsgIjtiYXNlNjQsIiArIGVuY29kZTY0KGJ5dGVBcnJheSk7
CiAgICAgZmluaXNoKGF1ZGlvKTsKICAgIH07CiAgICBhdWRpby5zcmMgPSB1cmw7CiAgICBCcm93
c2VyLnNhZmVTZXRUaW1lb3V0KChmdW5jdGlvbigpIHsKICAgICBmaW5pc2goYXVkaW8pOwogICAg
fSksIDFlNCk7CiAgIH0gZWxzZSB7CiAgICByZXR1cm4gZmFpbCgpOwogICB9CiAgfTsKICBNb2R1
bGVbInByZWxvYWRQbHVnaW5zIl0ucHVzaChhdWRpb1BsdWdpbik7CiAgdmFyIGNhbnZhcyA9IE1v
ZHVsZVsiY2FudmFzIl07CiAgZnVuY3Rpb24gcG9pbnRlckxvY2tDaGFuZ2UoKSB7CiAgIEJyb3dz
ZXIucG9pbnRlckxvY2sgPSBkb2N1bWVudFsicG9pbnRlckxvY2tFbGVtZW50Il0gPT09IGNhbnZh
cyB8fCBkb2N1bWVudFsibW96UG9pbnRlckxvY2tFbGVtZW50Il0gPT09IGNhbnZhcyB8fCBkb2N1
bWVudFsid2Via2l0UG9pbnRlckxvY2tFbGVtZW50Il0gPT09IGNhbnZhcyB8fCBkb2N1bWVudFsi
bXNQb2ludGVyTG9ja0VsZW1lbnQiXSA9PT0gY2FudmFzOwogIH0KICBpZiAoY2FudmFzKSB7CiAg
IGNhbnZhcy5yZXF1ZXN0UG9pbnRlckxvY2sgPSBjYW52YXNbInJlcXVlc3RQb2ludGVyTG9jayJd
IHx8IGNhbnZhc1sibW96UmVxdWVzdFBvaW50ZXJMb2NrIl0gfHwgY2FudmFzWyJ3ZWJraXRSZXF1
ZXN0UG9pbnRlckxvY2siXSB8fCBjYW52YXNbIm1zUmVxdWVzdFBvaW50ZXJMb2NrIl0gfHwgKGZ1
bmN0aW9uKCkge30pOwogICBjYW52YXMuZXhpdFBvaW50ZXJMb2NrID0gZG9jdW1lbnRbImV4aXRQ
b2ludGVyTG9jayJdIHx8IGRvY3VtZW50WyJtb3pFeGl0UG9pbnRlckxvY2siXSB8fCBkb2N1bWVu
dFsid2Via2l0RXhpdFBvaW50ZXJMb2NrIl0gfHwgZG9jdW1lbnRbIm1zRXhpdFBvaW50ZXJMb2Nr
Il0gfHwgKGZ1bmN0aW9uKCkge30pOwogICBjYW52YXMuZXhpdFBvaW50ZXJMb2NrID0gY2FudmFz
LmV4aXRQb2ludGVyTG9jay5iaW5kKGRvY3VtZW50KTsKICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0
ZW5lcigicG9pbnRlcmxvY2tjaGFuZ2UiLCBwb2ludGVyTG9ja0NoYW5nZSwgZmFsc2UpOwogICBk
b2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3pwb2ludGVybG9ja2NoYW5nZSIsIHBvaW50ZXJM
b2NrQ2hhbmdlLCBmYWxzZSk7CiAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIndlYmtpdHBv
aW50ZXJsb2NrY2hhbmdlIiwgcG9pbnRlckxvY2tDaGFuZ2UsIGZhbHNlKTsKICAgZG9jdW1lbnQu
YWRkRXZlbnRMaXN0ZW5lcigibXNwb2ludGVybG9ja2NoYW5nZSIsIHBvaW50ZXJMb2NrQ2hhbmdl
LCBmYWxzZSk7CiAgIGlmIChNb2R1bGVbImVsZW1lbnRQb2ludGVyTG9jayJdKSB7CiAgICBjYW52
YXMuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCAoZnVuY3Rpb24oZXYpIHsKICAgICBpZiAoIUJy
b3dzZXIucG9pbnRlckxvY2sgJiYgY2FudmFzLnJlcXVlc3RQb2ludGVyTG9jaykgewogICAgICBj
YW52YXMucmVxdWVzdFBvaW50ZXJMb2NrKCk7CiAgICAgIGV2LnByZXZlbnREZWZhdWx0KCk7CiAg
ICAgfQogICAgfSksIGZhbHNlKTsKICAgfQogIH0KIH0pLAogY3JlYXRlQ29udGV4dDogKGZ1bmN0
aW9uKGNhbnZhcywgdXNlV2ViR0wsIHNldEluTW9kdWxlLCB3ZWJHTENvbnRleHRBdHRyaWJ1dGVz
KSB7CiAgaWYgKHVzZVdlYkdMICYmIE1vZHVsZS5jdHggJiYgY2FudmFzID09IE1vZHVsZS5jYW52
YXMpIHJldHVybiBNb2R1bGUuY3R4OwogIHZhciBjdHg7CiAgdmFyIGNvbnRleHRIYW5kbGU7CiAg
aWYgKHVzZVdlYkdMKSB7CiAgIHZhciBjb250ZXh0QXR0cmlidXRlcyA9IHsKICAgIGFudGlhbGlh
czogZmFsc2UsCiAgICBhbHBoYTogZmFsc2UKICAgfTsKICAgaWYgKHdlYkdMQ29udGV4dEF0dHJp
YnV0ZXMpIHsKICAgIGZvciAodmFyIGF0dHJpYnV0ZSBpbiB3ZWJHTENvbnRleHRBdHRyaWJ1dGVz
KSB7CiAgICAgY29udGV4dEF0dHJpYnV0ZXNbYXR0cmlidXRlXSA9IHdlYkdMQ29udGV4dEF0dHJp
YnV0ZXNbYXR0cmlidXRlXTsKICAgIH0KICAgfQogICBjb250ZXh0SGFuZGxlID0gR0wuY3JlYXRl
Q29udGV4dChjYW52YXMsIGNvbnRleHRBdHRyaWJ1dGVzKTsKICAgaWYgKGNvbnRleHRIYW5kbGUp
IHsKICAgIGN0eCA9IEdMLmdldENvbnRleHQoY29udGV4dEhhbmRsZSkuR0xjdHg7CiAgIH0KICAg
Y2FudmFzLnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICJibGFjayI7CiAgfSBlbHNlIHsKICAgY3R4
ID0gY2FudmFzLmdldENvbnRleHQoIjJkIik7CiAgfQogIGlmICghY3R4KSByZXR1cm4gbnVsbDsK
ICBpZiAoc2V0SW5Nb2R1bGUpIHsKICAgaWYgKCF1c2VXZWJHTCkgYXNzZXJ0KHR5cGVvZiBHTGN0
eCA9PT0gInVuZGVmaW5lZCIsICJjYW5ub3Qgc2V0IGluIG1vZHVsZSBpZiBHTGN0eCBpcyB1c2Vk
LCBidXQgd2UgYXJlIGEgbm9uLUdMIGNvbnRleHQgdGhhdCB3b3VsZCByZXBsYWNlIGl0Iik7CiAg
IE1vZHVsZS5jdHggPSBjdHg7CiAgIGlmICh1c2VXZWJHTCkgR0wubWFrZUNvbnRleHRDdXJyZW50
KGNvbnRleHRIYW5kbGUpOwogICBNb2R1bGUudXNlV2ViR0wgPSB1c2VXZWJHTDsKICAgQnJvd3Nl
ci5tb2R1bGVDb250ZXh0Q3JlYXRlZENhbGxiYWNrcy5mb3JFYWNoKChmdW5jdGlvbihjYWxsYmFj
aykgewogICAgY2FsbGJhY2soKTsKICAgfSkpOwogICBCcm93c2VyLmluaXQoKTsKICB9CiAgcmV0
dXJuIGN0eDsKIH0pLAogZGVzdHJveUNvbnRleHQ6IChmdW5jdGlvbihjYW52YXMsIHVzZVdlYkdM
LCBzZXRJbk1vZHVsZSkge30pLAogZnVsbFNjcmVlbkhhbmRsZXJzSW5zdGFsbGVkOiBmYWxzZSwK
IGxvY2tQb2ludGVyOiB1bmRlZmluZWQsCiByZXNpemVDYW52YXM6IHVuZGVmaW5lZCwKIHJlcXVl
c3RGdWxsU2NyZWVuOiAoZnVuY3Rpb24obG9ja1BvaW50ZXIsIHJlc2l6ZUNhbnZhcywgdnJEZXZp
Y2UpIHsKICBCcm93c2VyLmxvY2tQb2ludGVyID0gbG9ja1BvaW50ZXI7CiAgQnJvd3Nlci5yZXNp
emVDYW52YXMgPSByZXNpemVDYW52YXM7CiAgQnJvd3Nlci52ckRldmljZSA9IHZyRGV2aWNlOwog
IGlmICh0eXBlb2YgQnJvd3Nlci5sb2NrUG9pbnRlciA9PT0gInVuZGVmaW5lZCIpIEJyb3dzZXIu
bG9ja1BvaW50ZXIgPSB0cnVlOwogIGlmICh0eXBlb2YgQnJvd3Nlci5yZXNpemVDYW52YXMgPT09
ICJ1bmRlZmluZWQiKSBCcm93c2VyLnJlc2l6ZUNhbnZhcyA9IGZhbHNlOwogIGlmICh0eXBlb2Yg
QnJvd3Nlci52ckRldmljZSA9PT0gInVuZGVmaW5lZCIpIEJyb3dzZXIudnJEZXZpY2UgPSBudWxs
OwogIHZhciBjYW52YXMgPSBNb2R1bGVbImNhbnZhcyJdOwogIGZ1bmN0aW9uIGZ1bGxTY3JlZW5D
aGFuZ2UoKSB7CiAgIEJyb3dzZXIuaXNGdWxsU2NyZWVuID0gZmFsc2U7CiAgIHZhciBjYW52YXND
b250YWluZXIgPSBjYW52YXMucGFyZW50Tm9kZTsKICAgaWYgKChkb2N1bWVudFsid2Via2l0RnVs
bFNjcmVlbkVsZW1lbnQiXSB8fCBkb2N1bWVudFsid2Via2l0RnVsbHNjcmVlbkVsZW1lbnQiXSB8
fCBkb2N1bWVudFsibW96RnVsbFNjcmVlbkVsZW1lbnQiXSB8fCBkb2N1bWVudFsibW96RnVsbHNj
cmVlbkVsZW1lbnQiXSB8fCBkb2N1bWVudFsiZnVsbFNjcmVlbkVsZW1lbnQiXSB8fCBkb2N1bWVu
dFsiZnVsbHNjcmVlbkVsZW1lbnQiXSB8fCBkb2N1bWVudFsibXNGdWxsU2NyZWVuRWxlbWVudCJd
IHx8IGRvY3VtZW50WyJtc0Z1bGxzY3JlZW5FbGVtZW50Il0gfHwgZG9jdW1lbnRbIndlYmtpdEN1
cnJlbnRGdWxsU2NyZWVuRWxlbWVudCJdKSA9PT0gY2FudmFzQ29udGFpbmVyKSB7CiAgICBjYW52
YXMuY2FuY2VsRnVsbFNjcmVlbiA9IGRvY3VtZW50WyJjYW5jZWxGdWxsU2NyZWVuIl0gfHwgZG9j
dW1lbnRbIm1vekNhbmNlbEZ1bGxTY3JlZW4iXSB8fCBkb2N1bWVudFsid2Via2l0Q2FuY2VsRnVs
bFNjcmVlbiJdIHx8IGRvY3VtZW50WyJtc0V4aXRGdWxsc2NyZWVuIl0gfHwgZG9jdW1lbnRbImV4
aXRGdWxsc2NyZWVuIl0gfHwgKGZ1bmN0aW9uKCkge30pOwogICAgY2FudmFzLmNhbmNlbEZ1bGxT
Y3JlZW4gPSBjYW52YXMuY2FuY2VsRnVsbFNjcmVlbi5iaW5kKGRvY3VtZW50KTsKICAgIGlmIChC
cm93c2VyLmxvY2tQb2ludGVyKSBjYW52YXMucmVxdWVzdFBvaW50ZXJMb2NrKCk7CiAgICBCcm93
c2VyLmlzRnVsbFNjcmVlbiA9IHRydWU7CiAgICBpZiAoQnJvd3Nlci5yZXNpemVDYW52YXMpIEJy
b3dzZXIuc2V0RnVsbFNjcmVlbkNhbnZhc1NpemUoKTsKICAgfSBlbHNlIHsKICAgIGNhbnZhc0Nv
bnRhaW5lci5wYXJlbnROb2RlLmluc2VydEJlZm9yZShjYW52YXMsIGNhbnZhc0NvbnRhaW5lcik7
CiAgICBjYW52YXNDb250YWluZXIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChjYW52YXNDb250YWlu
ZXIpOwogICAgaWYgKEJyb3dzZXIucmVzaXplQ2FudmFzKSBCcm93c2VyLnNldFdpbmRvd2VkQ2Fu
dmFzU2l6ZSgpOwogICB9CiAgIGlmIChNb2R1bGVbIm9uRnVsbFNjcmVlbiJdKSBNb2R1bGVbIm9u
RnVsbFNjcmVlbiJdKEJyb3dzZXIuaXNGdWxsU2NyZWVuKTsKICAgQnJvd3Nlci51cGRhdGVDYW52
YXNEaW1lbnNpb25zKGNhbnZhcyk7CiAgfQogIGlmICghQnJvd3Nlci5mdWxsU2NyZWVuSGFuZGxl
cnNJbnN0YWxsZWQpIHsKICAgQnJvd3Nlci5mdWxsU2NyZWVuSGFuZGxlcnNJbnN0YWxsZWQgPSB0
cnVlOwogICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJmdWxsc2NyZWVuY2hhbmdlIiwgZnVs
bFNjcmVlbkNoYW5nZSwgZmFsc2UpOwogICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3pm
dWxsc2NyZWVuY2hhbmdlIiwgZnVsbFNjcmVlbkNoYW5nZSwgZmFsc2UpOwogICBkb2N1bWVudC5h
ZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRmdWxsc2NyZWVuY2hhbmdlIiwgZnVsbFNjcmVlbkNoYW5n
ZSwgZmFsc2UpOwogICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJNU0Z1bGxzY3JlZW5DaGFu
Z2UiLCBmdWxsU2NyZWVuQ2hhbmdlLCBmYWxzZSk7CiAgfQogIHZhciBjYW52YXNDb250YWluZXIg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICBjYW52YXMucGFyZW50Tm9kZS5pbnNl
cnRCZWZvcmUoY2FudmFzQ29udGFpbmVyLCBjYW52YXMpOwogIGNhbnZhc0NvbnRhaW5lci5hcHBl
bmRDaGlsZChjYW52YXMpOwogIGNhbnZhc0NvbnRhaW5lci5yZXF1ZXN0RnVsbFNjcmVlbiA9IGNh
bnZhc0NvbnRhaW5lclsicmVxdWVzdEZ1bGxTY3JlZW4iXSB8fCBjYW52YXNDb250YWluZXJbIm1v
elJlcXVlc3RGdWxsU2NyZWVuIl0gfHwgY2FudmFzQ29udGFpbmVyWyJtc1JlcXVlc3RGdWxsc2Ny
ZWVuIl0gfHwgKGNhbnZhc0NvbnRhaW5lclsid2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4iXSA/IChm
dW5jdGlvbigpIHsKICAgY2FudmFzQ29udGFpbmVyWyJ3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbiJd
KEVsZW1lbnRbIkFMTE9XX0tFWUJPQVJEX0lOUFVUIl0pOwogIH0pIDogbnVsbCk7CiAgaWYgKHZy
RGV2aWNlKSB7CiAgIGNhbnZhc0NvbnRhaW5lci5yZXF1ZXN0RnVsbFNjcmVlbih7CiAgICB2ckRp
c3BsYXk6IHZyRGV2aWNlCiAgIH0pOwogIH0gZWxzZSB7CiAgIGNhbnZhc0NvbnRhaW5lci5yZXF1
ZXN0RnVsbFNjcmVlbigpOwogIH0KIH0pLAogbmV4dFJBRjogMCwKIGZha2VSZXF1ZXN0QW5pbWF0
aW9uRnJhbWU6IChmdW5jdGlvbihmdW5jKSB7CiAgdmFyIG5vdyA9IERhdGUubm93KCk7CiAgaWYg
KEJyb3dzZXIubmV4dFJBRiA9PT0gMCkgewogICBCcm93c2VyLm5leHRSQUYgPSBub3cgKyAxZTMg
LyA2MDsKICB9IGVsc2UgewogICB3aGlsZSAobm93ICsgMiA+PSBCcm93c2VyLm5leHRSQUYpIHsK
ICAgIEJyb3dzZXIubmV4dFJBRiArPSAxZTMgLyA2MDsKICAgfQogIH0KICB2YXIgZGVsYXkgPSBN
YXRoLm1heChCcm93c2VyLm5leHRSQUYgLSBub3csIDApOwogIHNldFRpbWVvdXQoZnVuYywgZGVs
YXkpOwogfSksCiByZXF1ZXN0QW5pbWF0aW9uRnJhbWU6IGZ1bmN0aW9uIHJlcXVlc3RBbmltYXRp
b25GcmFtZShmdW5jKSB7CiAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICJ1bmRlZmluZWQiKSB7CiAg
IEJyb3dzZXIuZmFrZVJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jKTsKICB9IGVsc2UgewogICBp
ZiAoIXdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUpIHsKICAgIHdpbmRvdy5yZXF1ZXN0QW5p
bWF0aW9uRnJhbWUgPSB3aW5kb3dbInJlcXVlc3RBbmltYXRpb25GcmFtZSJdIHx8IHdpbmRvd1si
bW96UmVxdWVzdEFuaW1hdGlvbkZyYW1lIl0gfHwgd2luZG93WyJ3ZWJraXRSZXF1ZXN0QW5pbWF0
aW9uRnJhbWUiXSB8fCB3aW5kb3dbIm1zUmVxdWVzdEFuaW1hdGlvbkZyYW1lIl0gfHwgd2luZG93
WyJvUmVxdWVzdEFuaW1hdGlvbkZyYW1lIl0gfHwgQnJvd3Nlci5mYWtlUmVxdWVzdEFuaW1hdGlv
bkZyYW1lOwogICB9CiAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuYyk7CiAgfQog
fSwKIHNhZmVDYWxsYmFjazogKGZ1bmN0aW9uKGZ1bmMpIHsKICByZXR1cm4gKGZ1bmN0aW9uKCkg
ewogICBpZiAoIUFCT1JUKSByZXR1cm4gZnVuYy5hcHBseShudWxsLCBhcmd1bWVudHMpOwogIH0p
OwogfSksCiBhbGxvd0FzeW5jQ2FsbGJhY2tzOiB0cnVlLAogcXVldWVkQXN5bmNDYWxsYmFja3M6
IFtdLAogcGF1c2VBc3luY0NhbGxiYWNrczogKGZ1bmN0aW9uKCkgewogIEJyb3dzZXIuYWxsb3dB
c3luY0NhbGxiYWNrcyA9IGZhbHNlOwogfSksCiByZXN1bWVBc3luY0NhbGxiYWNrczogKGZ1bmN0
aW9uKCkgewogIEJyb3dzZXIuYWxsb3dBc3luY0NhbGxiYWNrcyA9IHRydWU7CiAgaWYgKEJyb3dz
ZXIucXVldWVkQXN5bmNDYWxsYmFja3MubGVuZ3RoID4gMCkgewogICB2YXIgY2FsbGJhY2tzID0g
QnJvd3Nlci5xdWV1ZWRBc3luY0NhbGxiYWNrczsKICAgQnJvd3Nlci5xdWV1ZWRBc3luY0NhbGxi
YWNrcyA9IFtdOwogICBjYWxsYmFja3MuZm9yRWFjaCgoZnVuY3Rpb24oZnVuYykgewogICAgZnVu
YygpOwogICB9KSk7CiAgfQogfSksCiBzYWZlUmVxdWVzdEFuaW1hdGlvbkZyYW1lOiAoZnVuY3Rp
b24oZnVuYykgewogIHJldHVybiBCcm93c2VyLnJlcXVlc3RBbmltYXRpb25GcmFtZSgoZnVuY3Rp
b24oKSB7CiAgIGlmIChBQk9SVCkgcmV0dXJuOwogICBpZiAoQnJvd3Nlci5hbGxvd0FzeW5jQ2Fs
bGJhY2tzKSB7CiAgICBmdW5jKCk7CiAgIH0gZWxzZSB7CiAgICBCcm93c2VyLnF1ZXVlZEFzeW5j
Q2FsbGJhY2tzLnB1c2goZnVuYyk7CiAgIH0KICB9KSk7CiB9KSwKIHNhZmVTZXRUaW1lb3V0OiAo
ZnVuY3Rpb24oZnVuYywgdGltZW91dCkgewogIE1vZHVsZVsibm9FeGl0UnVudGltZSJdID0gdHJ1
ZTsKICByZXR1cm4gc2V0VGltZW91dCgoZnVuY3Rpb24oKSB7CiAgIGlmIChBQk9SVCkgcmV0dXJu
OwogICBpZiAoQnJvd3Nlci5hbGxvd0FzeW5jQ2FsbGJhY2tzKSB7CiAgICBmdW5jKCk7CiAgIH0g
ZWxzZSB7CiAgICBCcm93c2VyLnF1ZXVlZEFzeW5jQ2FsbGJhY2tzLnB1c2goZnVuYyk7CiAgIH0K
ICB9KSwgdGltZW91dCk7CiB9KSwKIHNhZmVTZXRJbnRlcnZhbDogKGZ1bmN0aW9uKGZ1bmMsIHRp
bWVvdXQpIHsKICBNb2R1bGVbIm5vRXhpdFJ1bnRpbWUiXSA9IHRydWU7CiAgcmV0dXJuIHNldElu
dGVydmFsKChmdW5jdGlvbigpIHsKICAgaWYgKEFCT1JUKSByZXR1cm47CiAgIGlmIChCcm93c2Vy
LmFsbG93QXN5bmNDYWxsYmFja3MpIHsKICAgIGZ1bmMoKTsKICAgfQogIH0pLCB0aW1lb3V0KTsK
IH0pLAogZ2V0TWltZXR5cGU6IChmdW5jdGlvbihuYW1lKSB7CiAgcmV0dXJuIHsKICAgImpwZyI6
ICJpbWFnZS9qcGVnIiwKICAgImpwZWciOiAiaW1hZ2UvanBlZyIsCiAgICJwbmciOiAiaW1hZ2Uv
cG5nIiwKICAgImJtcCI6ICJpbWFnZS9ibXAiLAogICAib2dnIjogImF1ZGlvL29nZyIsCiAgICJ3
YXYiOiAiYXVkaW8vd2F2IiwKICAgIm1wMyI6ICJhdWRpby9tcGVnIgogIH1bbmFtZS5zdWJzdHIo
bmFtZS5sYXN0SW5kZXhPZigiLiIpICsgMSldOwogfSksCiBnZXRVc2VyTWVkaWE6IChmdW5jdGlv
bihmdW5jKSB7CiAgaWYgKCF3aW5kb3cuZ2V0VXNlck1lZGlhKSB7CiAgIHdpbmRvdy5nZXRVc2Vy
TWVkaWEgPSBuYXZpZ2F0b3JbImdldFVzZXJNZWRpYSJdIHx8IG5hdmlnYXRvclsibW96R2V0VXNl
ck1lZGlhIl07CiAgfQogIHdpbmRvdy5nZXRVc2VyTWVkaWEoZnVuYyk7CiB9KSwKIGdldE1vdmVt
ZW50WDogKGZ1bmN0aW9uKGV2ZW50KSB7CiAgcmV0dXJuIGV2ZW50WyJtb3ZlbWVudFgiXSB8fCBl
dmVudFsibW96TW92ZW1lbnRYIl0gfHwgZXZlbnRbIndlYmtpdE1vdmVtZW50WCJdIHx8IDA7CiB9
KSwKIGdldE1vdmVtZW50WTogKGZ1bmN0aW9uKGV2ZW50KSB7CiAgcmV0dXJuIGV2ZW50WyJtb3Zl
bWVudFkiXSB8fCBldmVudFsibW96TW92ZW1lbnRZIl0gfHwgZXZlbnRbIndlYmtpdE1vdmVtZW50
WSJdIHx8IDA7CiB9KSwKIGdldE1vdXNlV2hlZWxEZWx0YTogKGZ1bmN0aW9uKGV2ZW50KSB7CiAg
dmFyIGRlbHRhID0gMDsKICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHsKICBjYXNlICJET01Nb3VzZVNj
cm9sbCI6CiAgIGRlbHRhID0gZXZlbnQuZGV0YWlsOwogICBicmVhazsKICBjYXNlICJtb3VzZXdo
ZWVsIjoKICAgZGVsdGEgPSBldmVudC53aGVlbERlbHRhOwogICBicmVhazsKICBjYXNlICJ3aGVl
bCI6CiAgIGRlbHRhID0gZXZlbnRbImRlbHRhWSJdOwogICBicmVhazsKICBkZWZhdWx0OgogICB0
aHJvdyAidW5yZWNvZ25pemVkIG1vdXNlIHdoZWVsIGV2ZW50OiAiICsgZXZlbnQudHlwZTsKICB9
CiAgcmV0dXJuIGRlbHRhOwogfSksCiBtb3VzZVg6IDAsCiBtb3VzZVk6IDAsCiBtb3VzZU1vdmVt
ZW50WDogMCwKIG1vdXNlTW92ZW1lbnRZOiAwLAogdG91Y2hlczoge30sCiBsYXN0VG91Y2hlczog
e30sCiBjYWxjdWxhdGVNb3VzZUV2ZW50OiAoZnVuY3Rpb24oZXZlbnQpIHsKICBpZiAoQnJvd3Nl
ci5wb2ludGVyTG9jaykgewogICBpZiAoZXZlbnQudHlwZSAhPSAibW91c2Vtb3ZlIiAmJiAibW96
TW92ZW1lbnRYIiBpbiBldmVudCkgewogICAgQnJvd3Nlci5tb3VzZU1vdmVtZW50WCA9IEJyb3dz
ZXIubW91c2VNb3ZlbWVudFkgPSAwOwogICB9IGVsc2UgewogICAgQnJvd3Nlci5tb3VzZU1vdmVt
ZW50WCA9IEJyb3dzZXIuZ2V0TW92ZW1lbnRYKGV2ZW50KTsKICAgIEJyb3dzZXIubW91c2VNb3Zl
bWVudFkgPSBCcm93c2VyLmdldE1vdmVtZW50WShldmVudCk7CiAgIH0KICAgaWYgKHR5cGVvZiBT
REwgIT0gInVuZGVmaW5lZCIpIHsKICAgIEJyb3dzZXIubW91c2VYID0gU0RMLm1vdXNlWCArIEJy
b3dzZXIubW91c2VNb3ZlbWVudFg7CiAgICBCcm93c2VyLm1vdXNlWSA9IFNETC5tb3VzZVkgKyBC
cm93c2VyLm1vdXNlTW92ZW1lbnRZOwogICB9IGVsc2UgewogICAgQnJvd3Nlci5tb3VzZVggKz0g
QnJvd3Nlci5tb3VzZU1vdmVtZW50WDsKICAgIEJyb3dzZXIubW91c2VZICs9IEJyb3dzZXIubW91
c2VNb3ZlbWVudFk7CiAgIH0KICB9IGVsc2UgewogICB2YXIgcmVjdCA9IE1vZHVsZVsiY2FudmFz
Il0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgIHZhciBjdyA9IE1vZHVsZVsiY2FudmFzIl0u
d2lkdGg7CiAgIHZhciBjaCA9IE1vZHVsZVsiY2FudmFzIl0uaGVpZ2h0OwogICB2YXIgc2Nyb2xs
WCA9IHR5cGVvZiB3aW5kb3cuc2Nyb2xsWCAhPT0gInVuZGVmaW5lZCIgPyB3aW5kb3cuc2Nyb2xs
WCA6IHdpbmRvdy5wYWdlWE9mZnNldDsKICAgdmFyIHNjcm9sbFkgPSB0eXBlb2Ygd2luZG93LnNj
cm9sbFkgIT09ICJ1bmRlZmluZWQiID8gd2luZG93LnNjcm9sbFkgOiB3aW5kb3cucGFnZVlPZmZz
ZXQ7CiAgIGlmIChldmVudC50eXBlID09PSAidG91Y2hzdGFydCIgfHwgZXZlbnQudHlwZSA9PT0g
InRvdWNoZW5kIiB8fCBldmVudC50eXBlID09PSAidG91Y2htb3ZlIikgewogICAgdmFyIHRvdWNo
ID0gZXZlbnQudG91Y2g7CiAgICBpZiAodG91Y2ggPT09IHVuZGVmaW5lZCkgewogICAgIHJldHVy
bjsKICAgIH0KICAgIHZhciBhZGp1c3RlZFggPSB0b3VjaC5wYWdlWCAtIChzY3JvbGxYICsgcmVj
dC5sZWZ0KTsKICAgIHZhciBhZGp1c3RlZFkgPSB0b3VjaC5wYWdlWSAtIChzY3JvbGxZICsgcmVj
dC50b3ApOwogICAgYWRqdXN0ZWRYID0gYWRqdXN0ZWRYICogKGN3IC8gcmVjdC53aWR0aCk7CiAg
ICBhZGp1c3RlZFkgPSBhZGp1c3RlZFkgKiAoY2ggLyByZWN0LmhlaWdodCk7CiAgICB2YXIgY29v
cmRzID0gewogICAgIHg6IGFkanVzdGVkWCwKICAgICB5OiBhZGp1c3RlZFkKICAgIH07CiAgICBp
ZiAoZXZlbnQudHlwZSA9PT0gInRvdWNoc3RhcnQiKSB7CiAgICAgQnJvd3Nlci5sYXN0VG91Y2hl
c1t0b3VjaC5pZGVudGlmaWVyXSA9IGNvb3JkczsKICAgICBCcm93c2VyLnRvdWNoZXNbdG91Y2gu
aWRlbnRpZmllcl0gPSBjb29yZHM7CiAgICB9IGVsc2UgaWYgKGV2ZW50LnR5cGUgPT09ICJ0b3Vj
aGVuZCIgfHwgZXZlbnQudHlwZSA9PT0gInRvdWNobW92ZSIpIHsKICAgICB2YXIgbGFzdCA9IEJy
b3dzZXIudG91Y2hlc1t0b3VjaC5pZGVudGlmaWVyXTsKICAgICBpZiAoIWxhc3QpIGxhc3QgPSBj
b29yZHM7CiAgICAgQnJvd3Nlci5sYXN0VG91Y2hlc1t0b3VjaC5pZGVudGlmaWVyXSA9IGxhc3Q7
CiAgICAgQnJvd3Nlci50b3VjaGVzW3RvdWNoLmlkZW50aWZpZXJdID0gY29vcmRzOwogICAgfQog
ICAgcmV0dXJuOwogICB9CiAgIHZhciB4ID0gZXZlbnQucGFnZVggLSAoc2Nyb2xsWCArIHJlY3Qu
bGVmdCk7CiAgIHZhciB5ID0gZXZlbnQucGFnZVkgLSAoc2Nyb2xsWSArIHJlY3QudG9wKTsKICAg
eCA9IHggKiAoY3cgLyByZWN0LndpZHRoKTsKICAgeSA9IHkgKiAoY2ggLyByZWN0LmhlaWdodCk7
CiAgIEJyb3dzZXIubW91c2VNb3ZlbWVudFggPSB4IC0gQnJvd3Nlci5tb3VzZVg7CiAgIEJyb3dz
ZXIubW91c2VNb3ZlbWVudFkgPSB5IC0gQnJvd3Nlci5tb3VzZVk7CiAgIEJyb3dzZXIubW91c2VY
ID0geDsKICAgQnJvd3Nlci5tb3VzZVkgPSB5OwogIH0KIH0pLAogeGhyTG9hZDogKGZ1bmN0aW9u
KHVybCwgb25sb2FkLCBvbmVycm9yKSB7CiAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdDsK
ICB4aHIub3BlbigiR0VUIiwgdXJsLCB0cnVlKTsKICB4aHIucmVzcG9uc2VUeXBlID0gImFycmF5
YnVmZmVyIjsKICB4aHIub25sb2FkID0gZnVuY3Rpb24geGhyX29ubG9hZCgpIHsKICAgaWYgKHho
ci5zdGF0dXMgPT0gMjAwIHx8IHhoci5zdGF0dXMgPT0gMCAmJiB4aHIucmVzcG9uc2UpIHsKICAg
IG9ubG9hZCh4aHIucmVzcG9uc2UpOwogICB9IGVsc2UgewogICAgb25lcnJvcigpOwogICB9CiAg
fTsKICB4aHIub25lcnJvciA9IG9uZXJyb3I7CiAgeGhyLnNlbmQobnVsbCk7CiB9KSwKIGFzeW5j
TG9hZDogKGZ1bmN0aW9uKHVybCwgb25sb2FkLCBvbmVycm9yLCBub1J1bkRlcCkgewogIEJyb3dz
ZXIueGhyTG9hZCh1cmwsIChmdW5jdGlvbihhcnJheUJ1ZmZlcikgewogICBhc3NlcnQoYXJyYXlC
dWZmZXIsICdMb2FkaW5nIGRhdGEgZmlsZSAiJyArIHVybCArICciIGZhaWxlZCAobm8gYXJyYXlC
dWZmZXIpLicpOwogICBvbmxvYWQobmV3IFVpbnQ4QXJyYXkoYXJyYXlCdWZmZXIpKTsKICAgaWYg
KCFub1J1bkRlcCkgcmVtb3ZlUnVuRGVwZW5kZW5jeSgiYWwgIiArIHVybCk7CiAgfSksIChmdW5j
dGlvbihldmVudCkgewogICBpZiAob25lcnJvcikgewogICAgb25lcnJvcigpOwogICB9IGVsc2Ug
ewogICAgdGhyb3cgJ0xvYWRpbmcgZGF0YSBmaWxlICInICsgdXJsICsgJyIgZmFpbGVkLic7CiAg
IH0KICB9KSk7CiAgaWYgKCFub1J1bkRlcCkgYWRkUnVuRGVwZW5kZW5jeSgiYWwgIiArIHVybCk7
CiB9KSwKIHJlc2l6ZUxpc3RlbmVyczogW10sCiB1cGRhdGVSZXNpemVMaXN0ZW5lcnM6IChmdW5j
dGlvbigpIHsKICB2YXIgY2FudmFzID0gTW9kdWxlWyJjYW52YXMiXTsKICBCcm93c2VyLnJlc2l6
ZUxpc3RlbmVycy5mb3JFYWNoKChmdW5jdGlvbihsaXN0ZW5lcikgewogICBsaXN0ZW5lcihjYW52
YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpOwogIH0pKTsKIH0pLAogc2V0Q2FudmFzU2l6ZTogKGZ1
bmN0aW9uKHdpZHRoLCBoZWlnaHQsIG5vVXBkYXRlcykgewogIHZhciBjYW52YXMgPSBNb2R1bGVb
ImNhbnZhcyJdOwogIEJyb3dzZXIudXBkYXRlQ2FudmFzRGltZW5zaW9ucyhjYW52YXMsIHdpZHRo
LCBoZWlnaHQpOwogIGlmICghbm9VcGRhdGVzKSBCcm93c2VyLnVwZGF0ZVJlc2l6ZUxpc3RlbmVy
cygpOwogfSksCiB3aW5kb3dlZFdpZHRoOiAwLAogd2luZG93ZWRIZWlnaHQ6IDAsCiBzZXRGdWxs
U2NyZWVuQ2FudmFzU2l6ZTogKGZ1bmN0aW9uKCkgewogIGlmICh0eXBlb2YgU0RMICE9ICJ1bmRl
ZmluZWQiKSB7CiAgIHZhciBmbGFncyA9IEhFQVBVMzJbU0RMLnNjcmVlbiArIFJ1bnRpbWUuUVVB
TlRVTV9TSVpFICogMCA+PiAyXTsKICAgZmxhZ3MgPSBmbGFncyB8IDgzODg2MDg7CiAgIEhFQVAz
MltTREwuc2NyZWVuICsgUnVudGltZS5RVUFOVFVNX1NJWkUgKiAwID4+IDJdID0gZmxhZ3M7CiAg
fQogIEJyb3dzZXIudXBkYXRlUmVzaXplTGlzdGVuZXJzKCk7CiB9KSwKIHNldFdpbmRvd2VkQ2Fu
dmFzU2l6ZTogKGZ1bmN0aW9uKCkgewogIGlmICh0eXBlb2YgU0RMICE9ICJ1bmRlZmluZWQiKSB7
CiAgIHZhciBmbGFncyA9IEhFQVBVMzJbU0RMLnNjcmVlbiArIFJ1bnRpbWUuUVVBTlRVTV9TSVpF
ICogMCA+PiAyXTsKICAgZmxhZ3MgPSBmbGFncyAmIH44Mzg4NjA4OwogICBIRUFQMzJbU0RMLnNj
cmVlbiArIFJ1bnRpbWUuUVVBTlRVTV9TSVpFICogMCA+PiAyXSA9IGZsYWdzOwogIH0KICBCcm93
c2VyLnVwZGF0ZVJlc2l6ZUxpc3RlbmVycygpOwogfSksCiB1cGRhdGVDYW52YXNEaW1lbnNpb25z
OiAoZnVuY3Rpb24oY2FudmFzLCB3TmF0aXZlLCBoTmF0aXZlKSB7CiAgaWYgKHdOYXRpdmUgJiYg
aE5hdGl2ZSkgewogICBjYW52YXMud2lkdGhOYXRpdmUgPSB3TmF0aXZlOwogICBjYW52YXMuaGVp
Z2h0TmF0aXZlID0gaE5hdGl2ZTsKICB9IGVsc2UgewogICB3TmF0aXZlID0gY2FudmFzLndpZHRo
TmF0aXZlOwogICBoTmF0aXZlID0gY2FudmFzLmhlaWdodE5hdGl2ZTsKICB9CiAgdmFyIHcgPSB3
TmF0aXZlOwogIHZhciBoID0gaE5hdGl2ZTsKICBpZiAoTW9kdWxlWyJmb3JjZWRBc3BlY3RSYXRp
byJdICYmIE1vZHVsZVsiZm9yY2VkQXNwZWN0UmF0aW8iXSA+IDApIHsKICAgaWYgKHcgLyBoIDwg
TW9kdWxlWyJmb3JjZWRBc3BlY3RSYXRpbyJdKSB7CiAgICB3ID0gTWF0aC5yb3VuZChoICogTW9k
dWxlWyJmb3JjZWRBc3BlY3RSYXRpbyJdKTsKICAgfSBlbHNlIHsKICAgIGggPSBNYXRoLnJvdW5k
KHcgLyBNb2R1bGVbImZvcmNlZEFzcGVjdFJhdGlvIl0pOwogICB9CiAgfQogIGlmICgoZG9jdW1l
bnRbIndlYmtpdEZ1bGxTY3JlZW5FbGVtZW50Il0gfHwgZG9jdW1lbnRbIndlYmtpdEZ1bGxzY3Jl
ZW5FbGVtZW50Il0gfHwgZG9jdW1lbnRbIm1vekZ1bGxTY3JlZW5FbGVtZW50Il0gfHwgZG9jdW1l
bnRbIm1vekZ1bGxzY3JlZW5FbGVtZW50Il0gfHwgZG9jdW1lbnRbImZ1bGxTY3JlZW5FbGVtZW50
Il0gfHwgZG9jdW1lbnRbImZ1bGxzY3JlZW5FbGVtZW50Il0gfHwgZG9jdW1lbnRbIm1zRnVsbFNj
cmVlbkVsZW1lbnQiXSB8fCBkb2N1bWVudFsibXNGdWxsc2NyZWVuRWxlbWVudCJdIHx8IGRvY3Vt
ZW50WyJ3ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQiXSkgPT09IGNhbnZhcy5wYXJlbnRO
b2RlICYmIHR5cGVvZiBzY3JlZW4gIT0gInVuZGVmaW5lZCIpIHsKICAgdmFyIGZhY3RvciA9IE1h
dGgubWluKHNjcmVlbi53aWR0aCAvIHcsIHNjcmVlbi5oZWlnaHQgLyBoKTsKICAgdyA9IE1hdGgu
cm91bmQodyAqIGZhY3Rvcik7CiAgIGggPSBNYXRoLnJvdW5kKGggKiBmYWN0b3IpOwogIH0KICBp
ZiAoQnJvd3Nlci5yZXNpemVDYW52YXMpIHsKICAgaWYgKGNhbnZhcy53aWR0aCAhPSB3KSBjYW52
YXMud2lkdGggPSB3OwogICBpZiAoY2FudmFzLmhlaWdodCAhPSBoKSBjYW52YXMuaGVpZ2h0ID0g
aDsKICAgaWYgKHR5cGVvZiBjYW52YXMuc3R5bGUgIT0gInVuZGVmaW5lZCIpIHsKICAgIGNhbnZh
cy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgid2lkdGgiKTsKICAgIGNhbnZhcy5zdHlsZS5yZW1vdmVQ
cm9wZXJ0eSgiaGVpZ2h0Iik7CiAgIH0KICB9IGVsc2UgewogICBpZiAoY2FudmFzLndpZHRoICE9
IHdOYXRpdmUpIGNhbnZhcy53aWR0aCA9IHdOYXRpdmU7CiAgIGlmIChjYW52YXMuaGVpZ2h0ICE9
IGhOYXRpdmUpIGNhbnZhcy5oZWlnaHQgPSBoTmF0aXZlOwogICBpZiAodHlwZW9mIGNhbnZhcy5z
dHlsZSAhPSAidW5kZWZpbmVkIikgewogICAgaWYgKHcgIT0gd05hdGl2ZSB8fCBoICE9IGhOYXRp
dmUpIHsKICAgICBjYW52YXMuc3R5bGUuc2V0UHJvcGVydHkoIndpZHRoIiwgdyArICJweCIsICJp
bXBvcnRhbnQiKTsKICAgICBjYW52YXMuc3R5bGUuc2V0UHJvcGVydHkoImhlaWdodCIsIGggKyAi
cHgiLCAiaW1wb3J0YW50Iik7CiAgICB9IGVsc2UgewogICAgIGNhbnZhcy5zdHlsZS5yZW1vdmVQ
cm9wZXJ0eSgid2lkdGgiKTsKICAgICBjYW52YXMuc3R5bGUucmVtb3ZlUHJvcGVydHkoImhlaWdo
dCIpOwogICAgfQogICB9CiAgfQogfSksCiB3Z2V0UmVxdWVzdHM6IHt9LAogbmV4dFdnZXRSZXF1
ZXN0SGFuZGxlOiAwLAogZ2V0TmV4dFdnZXRSZXF1ZXN0SGFuZGxlOiAoZnVuY3Rpb24oKSB7CiAg
dmFyIGhhbmRsZSA9IEJyb3dzZXIubmV4dFdnZXRSZXF1ZXN0SGFuZGxlOwogIEJyb3dzZXIubmV4
dFdnZXRSZXF1ZXN0SGFuZGxlKys7CiAgcmV0dXJuIGhhbmRsZTsKIH0pCn07CmZ1bmN0aW9uIF90
aW1lKHB0cikgewogdmFyIHJldCA9IERhdGUubm93KCkgLyAxZTMgfCAwOwogaWYgKHB0cikgewog
IEhFQVAzMltwdHIgPj4gMl0gPSByZXQ7CiB9CiByZXR1cm4gcmV0Owp9CmZ1bmN0aW9uIF9wdGhy
ZWFkX3NlbGYoKSB7CiByZXR1cm4gMDsKfQpmdW5jdGlvbiBfX19zeXNjYWxsMTQwKHdoaWNoLCB2
YXJhcmdzKSB7CiBTWVNDQUxMUy52YXJhcmdzID0gdmFyYXJnczsKIHRyeSB7CiAgdmFyIHN0cmVh
bSA9IFNZU0NBTExTLmdldFN0cmVhbUZyb21GRCgpLCBvZmZzZXRfaGlnaCA9IFNZU0NBTExTLmdl
dCgpLCBvZmZzZXRfbG93ID0gU1lTQ0FMTFMuZ2V0KCksIHJlc3VsdCA9IFNZU0NBTExTLmdldCgp
LCB3aGVuY2UgPSBTWVNDQUxMUy5nZXQoKTsKICB2YXIgb2Zmc2V0ID0gb2Zmc2V0X2xvdzsKICBh
c3NlcnQob2Zmc2V0X2hpZ2ggPT09IDApOwogIEZTLmxsc2VlayhzdHJlYW0sIG9mZnNldCwgd2hl
bmNlKTsKICBIRUFQMzJbcmVzdWx0ID4+IDJdID0gc3RyZWFtLnBvc2l0aW9uOwogIGlmIChzdHJl
YW0uZ2V0ZGVudHMgJiYgb2Zmc2V0ID09PSAwICYmIHdoZW5jZSA9PT0gMCkgc3RyZWFtLmdldGRl
bnRzID0gbnVsbDsKICByZXR1cm4gMDsKIH0gY2F0Y2ggKGUpIHsKICBpZiAodHlwZW9mIEZTID09
PSAidW5kZWZpbmVkIiB8fCAhKGUgaW5zdGFuY2VvZiBGUy5FcnJub0Vycm9yKSkgYWJvcnQoZSk7
CiAgcmV0dXJuIC1lLmVycm5vOwogfQp9CmZ1bmN0aW9uIF9fX3N5c2NhbGwxNDYod2hpY2gsIHZh
cmFyZ3MpIHsKIFNZU0NBTExTLnZhcmFyZ3MgPSB2YXJhcmdzOwogdHJ5IHsKICB2YXIgc3RyZWFt
ID0gU1lTQ0FMTFMuZ2V0U3RyZWFtRnJvbUZEKCksIGlvdiA9IFNZU0NBTExTLmdldCgpLCBpb3Zj
bnQgPSBTWVNDQUxMUy5nZXQoKTsKICByZXR1cm4gU1lTQ0FMTFMuZG9Xcml0ZXYoc3RyZWFtLCBp
b3YsIGlvdmNudCk7CiB9IGNhdGNoIChlKSB7CiAgaWYgKHR5cGVvZiBGUyA9PT0gInVuZGVmaW5l
ZCIgfHwgIShlIGluc3RhbmNlb2YgRlMuRXJybm9FcnJvcikpIGFib3J0KGUpOwogIHJldHVybiAt
ZS5lcnJubzsKIH0KfQpmdW5jdGlvbiBfX19zeXNjYWxsNTQod2hpY2gsIHZhcmFyZ3MpIHsKIFNZ
U0NBTExTLnZhcmFyZ3MgPSB2YXJhcmdzOwogdHJ5IHsKICB2YXIgc3RyZWFtID0gU1lTQ0FMTFMu
Z2V0U3RyZWFtRnJvbUZEKCksIG9wID0gU1lTQ0FMTFMuZ2V0KCk7CiAgc3dpdGNoIChvcCkgewog
IGNhc2UgMjE1MDU6CiAgIHsKICAgIGlmICghc3RyZWFtLnR0eSkgcmV0dXJuIC1FUlJOT19DT0RF
Uy5FTk9UVFk7CiAgICByZXR1cm4gMDsKICAgfQogIGNhc2UgMjE1MDY6CiAgIHsKICAgIGlmICgh
c3RyZWFtLnR0eSkgcmV0dXJuIC1FUlJOT19DT0RFUy5FTk9UVFk7CiAgICByZXR1cm4gMDsKICAg
fQogIGNhc2UgMjE1MTk6CiAgIHsKICAgIGlmICghc3RyZWFtLnR0eSkgcmV0dXJuIC1FUlJOT19D
T0RFUy5FTk9UVFk7CiAgICB2YXIgYXJncCA9IFNZU0NBTExTLmdldCgpOwogICAgSEVBUDMyW2Fy
Z3AgPj4gMl0gPSAwOwogICAgcmV0dXJuIDA7CiAgIH0KICBjYXNlIDIxNTIwOgogICB7CiAgICBp
ZiAoIXN0cmVhbS50dHkpIHJldHVybiAtRVJSTk9fQ09ERVMuRU5PVFRZOwogICAgcmV0dXJuIC1F
UlJOT19DT0RFUy5FSU5WQUw7CiAgIH0KICBjYXNlIDIxNTMxOgogICB7CiAgICB2YXIgYXJncCA9
IFNZU0NBTExTLmdldCgpOwogICAgcmV0dXJuIEZTLmlvY3RsKHN0cmVhbSwgb3AsIGFyZ3ApOwog
ICB9CiAgZGVmYXVsdDoKICAgYWJvcnQoImJhZCBpb2N0bCBzeXNjYWxsICIgKyBvcCk7CiAgfQog
fSBjYXRjaCAoZSkgewogIGlmICh0eXBlb2YgRlMgPT09ICJ1bmRlZmluZWQiIHx8ICEoZSBpbnN0
YW5jZW9mIEZTLkVycm5vRXJyb3IpKSBhYm9ydChlKTsKICByZXR1cm4gLWUuZXJybm87CiB9Cn0K
RlMuc3RhdGljSW5pdCgpOwpfX0FUSU5JVF9fLnVuc2hpZnQoKGZ1bmN0aW9uKCkgewogaWYgKCFN
b2R1bGVbIm5vRlNJbml0Il0gJiYgIUZTLmluaXQuaW5pdGlhbGl6ZWQpIEZTLmluaXQoKTsKfSkp
OwpfX0FUTUFJTl9fLnB1c2goKGZ1bmN0aW9uKCkgewogRlMuaWdub3JlUGVybWlzc2lvbnMgPSBm
YWxzZTsKfSkpOwpfX0FURVhJVF9fLnB1c2goKGZ1bmN0aW9uKCkgewogRlMucXVpdCgpOwp9KSk7
Ck1vZHVsZVsiRlNfY3JlYXRlRm9sZGVyIl0gPSBGUy5jcmVhdGVGb2xkZXI7Ck1vZHVsZVsiRlNf
Y3JlYXRlUGF0aCJdID0gRlMuY3JlYXRlUGF0aDsKTW9kdWxlWyJGU19jcmVhdGVEYXRhRmlsZSJd
ID0gRlMuY3JlYXRlRGF0YUZpbGU7Ck1vZHVsZVsiRlNfY3JlYXRlUHJlbG9hZGVkRmlsZSJdID0g
RlMuY3JlYXRlUHJlbG9hZGVkRmlsZTsKTW9kdWxlWyJGU19jcmVhdGVMYXp5RmlsZSJdID0gRlMu
Y3JlYXRlTGF6eUZpbGU7Ck1vZHVsZVsiRlNfY3JlYXRlTGluayJdID0gRlMuY3JlYXRlTGluazsK
TW9kdWxlWyJGU19jcmVhdGVEZXZpY2UiXSA9IEZTLmNyZWF0ZURldmljZTsKTW9kdWxlWyJGU191
bmxpbmsiXSA9IEZTLnVubGluazsKX19BVElOSVRfXy51bnNoaWZ0KChmdW5jdGlvbigpIHsKIFRU
WS5pbml0KCk7Cn0pKTsKX19BVEVYSVRfXy5wdXNoKChmdW5jdGlvbigpIHsKIFRUWS5zaHV0ZG93
bigpOwp9KSk7CmlmIChFTlZJUk9OTUVOVF9JU19OT0RFKSB7CiB2YXIgZnMgPSByZXF1aXJlKCJm
cyIpOwogdmFyIE5PREVKU19QQVRIID0gcmVxdWlyZSgicGF0aCIpOwogTk9ERUZTLnN0YXRpY0lu
aXQoKTsKfQpNb2R1bGVbInJlcXVlc3RGdWxsU2NyZWVuIl0gPSBmdW5jdGlvbiBNb2R1bGVfcmVx
dWVzdEZ1bGxTY3JlZW4obG9ja1BvaW50ZXIsIHJlc2l6ZUNhbnZhcywgdnJEZXZpY2UpIHsKIEJy
b3dzZXIucmVxdWVzdEZ1bGxTY3JlZW4obG9ja1BvaW50ZXIsIHJlc2l6ZUNhbnZhcywgdnJEZXZp
Y2UpOwp9OwpNb2R1bGVbInJlcXVlc3RBbmltYXRpb25GcmFtZSJdID0gZnVuY3Rpb24gTW9kdWxl
X3JlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jKSB7CiBCcm93c2VyLnJlcXVlc3RBbmltYXRpb25G
cmFtZShmdW5jKTsKfTsKTW9kdWxlWyJzZXRDYW52YXNTaXplIl0gPSBmdW5jdGlvbiBNb2R1bGVf
c2V0Q2FudmFzU2l6ZSh3aWR0aCwgaGVpZ2h0LCBub1VwZGF0ZXMpIHsKIEJyb3dzZXIuc2V0Q2Fu
dmFzU2l6ZSh3aWR0aCwgaGVpZ2h0LCBub1VwZGF0ZXMpOwp9OwpNb2R1bGVbInBhdXNlTWFpbkxv
b3AiXSA9IGZ1bmN0aW9uIE1vZHVsZV9wYXVzZU1haW5Mb29wKCkgewogQnJvd3Nlci5tYWluTG9v
cC5wYXVzZSgpOwp9OwpNb2R1bGVbInJlc3VtZU1haW5Mb29wIl0gPSBmdW5jdGlvbiBNb2R1bGVf
cmVzdW1lTWFpbkxvb3AoKSB7CiBCcm93c2VyLm1haW5Mb29wLnJlc3VtZSgpOwp9OwpNb2R1bGVb
ImdldFVzZXJNZWRpYSJdID0gZnVuY3Rpb24gTW9kdWxlX2dldFVzZXJNZWRpYSgpIHsKIEJyb3dz
ZXIuZ2V0VXNlck1lZGlhKCk7Cn07Ck1vZHVsZVsiY3JlYXRlQ29udGV4dCJdID0gZnVuY3Rpb24g
TW9kdWxlX2NyZWF0ZUNvbnRleHQoY2FudmFzLCB1c2VXZWJHTCwgc2V0SW5Nb2R1bGUsIHdlYkdM
Q29udGV4dEF0dHJpYnV0ZXMpIHsKIHJldHVybiBCcm93c2VyLmNyZWF0ZUNvbnRleHQoY2FudmFz
LCB1c2VXZWJHTCwgc2V0SW5Nb2R1bGUsIHdlYkdMQ29udGV4dEF0dHJpYnV0ZXMpOwp9OwpTVEFD
S19CQVNFID0gU1RBQ0tUT1AgPSBSdW50aW1lLmFsaWduTWVtb3J5KFNUQVRJQ1RPUCk7CnN0YXRp
Y1NlYWxlZCA9IHRydWU7ClNUQUNLX01BWCA9IFNUQUNLX0JBU0UgKyBUT1RBTF9TVEFDSzsKRFlO
QU1JQ19CQVNFID0gRFlOQU1JQ1RPUCA9IFJ1bnRpbWUuYWxpZ25NZW1vcnkoU1RBQ0tfTUFYKTsK
YXNzZXJ0KERZTkFNSUNfQkFTRSA8IFRPVEFMX01FTU9SWSwgIlRPVEFMX01FTU9SWSBub3QgYmln
IGVub3VnaCBmb3Igc3RhY2siKTsKdmFyIGN0dHpfaTggPSBhbGxvY2F0ZShbIDgsIDAsIDEsIDAs
IDIsIDAsIDEsIDAsIDMsIDAsIDEsIDAsIDIsIDAsIDEsIDAsIDQsIDAsIDEsIDAsIDIsIDAsIDEs
IDAsIDMsIDAsIDEsIDAsIDIsIDAsIDEsIDAsIDUsIDAsIDEsIDAsIDIsIDAsIDEsIDAsIDMsIDAs
IDEsIDAsIDIsIDAsIDEsIDAsIDQsIDAsIDEsIDAsIDIsIDAsIDEsIDAsIDMsIDAsIDEsIDAsIDIs
IDAsIDEsIDAsIDYsIDAsIDEsIDAsIDIsIDAsIDEsIDAsIDMsIDAsIDEsIDAsIDIsIDAsIDEsIDAs
IDQsIDAsIDEsIDAsIDIsIDAsIDEsIDAsIDMsIDAsIDEsIDAsIDIsIDAsIDEsIDAsIDUsIDAsIDEs
IDAsIDIsIDAsIDEsIDAsIDMsIDAsIDEsIDAsIDIsIDAsIDEsIDAsIDQsIDAsIDEsIDAsIDIsIDAs
IDEsIDAsIDMsIDAsIDEsIDAsIDIsIDAsIDEsIDAsIDcsIDAsIDEsIDAsIDIsIDAsIDEsIDAsIDMs
IDAsIDEsIDAsIDIsIDAsIDEsIDAsIDQsIDAsIDEsIDAsIDIsIDAsIDEsIDAsIDMsIDAsIDEsIDAs
IDIsIDAsIDEsIDAsIDUsIDAsIDEsIDAsIDIsIDAsIDEsIDAsIDMsIDAsIDEsIDAsIDIsIDAsIDEs
IDAsIDQsIDAsIDEsIDAsIDIsIDAsIDEsIDAsIDMsIDAsIDEsIDAsIDIsIDAsIDEsIDAsIDYsIDAs
IDEsIDAsIDIsIDAsIDEsIDAsIDMsIDAsIDEsIDAsIDIsIDAsIDEsIDAsIDQsIDAsIDEsIDAsIDIs
IDAsIDEsIDAsIDMsIDAsIDEsIDAsIDIsIDAsIDEsIDAsIDUsIDAsIDEsIDAsIDIsIDAsIDEsIDAs
IDMsIDAsIDEsIDAsIDIsIDAsIDEsIDAsIDQsIDAsIDEsIDAsIDIsIDAsIDEsIDAsIDMsIDAsIDEs
IDAsIDIsIDAsIDEsIDAgXSwgImk4IiwgQUxMT0NfRFlOQU1JQyk7CmZ1bmN0aW9uIGludm9rZV9p
aShpbmRleCwgYTEpIHsKIHRyeSB7CiAgcmV0dXJuIE1vZHVsZVsiZHluQ2FsbF9paSJdKGluZGV4
LCBhMSk7CiB9IGNhdGNoIChlKSB7CiAgaWYgKHR5cGVvZiBlICE9PSAibnVtYmVyIiAmJiBlICE9
PSAibG9uZ2ptcCIpIHRocm93IGU7CiAgYXNtWyJzZXRUaHJldyJdKDEsIDApOwogfQp9CmZ1bmN0
aW9uIGludm9rZV9paWlpKGluZGV4LCBhMSwgYTIsIGEzKSB7CiB0cnkgewogIHJldHVybiBNb2R1
bGVbImR5bkNhbGxfaWlpaSJdKGluZGV4LCBhMSwgYTIsIGEzKTsKIH0gY2F0Y2ggKGUpIHsKICBp
ZiAodHlwZW9mIGUgIT09ICJudW1iZXIiICYmIGUgIT09ICJsb25nam1wIikgdGhyb3cgZTsKICBh
c21bInNldFRocmV3Il0oMSwgMCk7CiB9Cn0KZnVuY3Rpb24gaW52b2tlX3ZpKGluZGV4LCBhMSkg
ewogdHJ5IHsKICBNb2R1bGVbImR5bkNhbGxfdmkiXShpbmRleCwgYTEpOwogfSBjYXRjaCAoZSkg
ewogIGlmICh0eXBlb2YgZSAhPT0gIm51bWJlciIgJiYgZSAhPT0gImxvbmdqbXAiKSB0aHJvdyBl
OwogIGFzbVsic2V0VGhyZXciXSgxLCAwKTsKIH0KfQpNb2R1bGUuYXNtR2xvYmFsQXJnID0gewog
Ik1hdGgiOiBNYXRoLAogIkludDhBcnJheSI6IEludDhBcnJheSwKICJJbnQxNkFycmF5IjogSW50
MTZBcnJheSwKICJJbnQzMkFycmF5IjogSW50MzJBcnJheSwKICJVaW50OEFycmF5IjogVWludDhB
cnJheSwKICJVaW50MTZBcnJheSI6IFVpbnQxNkFycmF5LAogIlVpbnQzMkFycmF5IjogVWludDMy
QXJyYXksCiAiRmxvYXQzMkFycmF5IjogRmxvYXQzMkFycmF5LAogIkZsb2F0NjRBcnJheSI6IEZs
b2F0NjRBcnJheSwKICJOYU4iOiBOYU4sCiAiSW5maW5pdHkiOiBJbmZpbml0eQp9OwpNb2R1bGUu
YXNtTGlicmFyeUFyZyA9IHsKICJhYm9ydCI6IGFib3J0LAogImFzc2VydCI6IGFzc2VydCwKICJp
bnZva2VfaWkiOiBpbnZva2VfaWksCiAiaW52b2tlX2lpaWkiOiBpbnZva2VfaWlpaSwKICJpbnZv
a2VfdmkiOiBpbnZva2VfdmksCiAiX3B0aHJlYWRfY2xlYW51cF9wb3AiOiBfcHRocmVhZF9jbGVh
bnVwX3BvcCwKICJfX19sb2NrIjogX19fbG9jaywKICJfZW1zY3JpcHRlbl9zZXRfbWFpbl9sb29w
IjogX2Vtc2NyaXB0ZW5fc2V0X21haW5fbG9vcCwKICJfcHRocmVhZF9zZWxmIjogX3B0aHJlYWRf
c2VsZiwKICJfYWJvcnQiOiBfYWJvcnQsCiAiX2Vtc2NyaXB0ZW5fc2V0X21haW5fbG9vcF90aW1p
bmciOiBfZW1zY3JpcHRlbl9zZXRfbWFpbl9sb29wX3RpbWluZywKICJfX19zeXNjYWxsNiI6IF9f
X3N5c2NhbGw2LAogIl9zYnJrIjogX3NicmssCiAiX3RpbWUiOiBfdGltZSwKICJfX19zZXRFcnJO
byI6IF9fX3NldEVyck5vLAogIl9lbXNjcmlwdGVuX21lbWNweV9iaWciOiBfZW1zY3JpcHRlbl9t
ZW1jcHlfYmlnLAogIl9fX3N5c2NhbGw1NCI6IF9fX3N5c2NhbGw1NCwKICJfX191bmxvY2siOiBf
X191bmxvY2ssCiAiX19fc3lzY2FsbDE0MCI6IF9fX3N5c2NhbGwxNDAsCiAiX3B0aHJlYWRfY2xl
YW51cF9wdXNoIjogX3B0aHJlYWRfY2xlYW51cF9wdXNoLAogIl9zeXNjb25mIjogX3N5c2NvbmYs
CiAiX19fc3lzY2FsbDE0NiI6IF9fX3N5c2NhbGwxNDYsCiAiU1RBQ0tUT1AiOiBTVEFDS1RPUCwK
ICJTVEFDS19NQVgiOiBTVEFDS19NQVgsCiAidGVtcERvdWJsZVB0ciI6IHRlbXBEb3VibGVQdHIs
CiAiQUJPUlQiOiBBQk9SVCwKICJjdHR6X2k4IjogY3R0el9pOAp9OwovLyBFTVNDUklQVEVOX1NU
QVJUX0FTTQoKdmFyIGFzbSA9IChmdW5jdGlvbihnbG9iYWwsZW52LGJ1ZmZlcikgewoKICAndXNl
IGFzbSc7CiAgCiAgdmFyIEhFQVA4ID0gbmV3IGdsb2JhbC5JbnQ4QXJyYXkoYnVmZmVyKTsKICB2
YXIgSEVBUDE2ID0gbmV3IGdsb2JhbC5JbnQxNkFycmF5KGJ1ZmZlcik7CiAgdmFyIEhFQVAzMiA9
IG5ldyBnbG9iYWwuSW50MzJBcnJheShidWZmZXIpOwogIHZhciBIRUFQVTggPSBuZXcgZ2xvYmFs
LlVpbnQ4QXJyYXkoYnVmZmVyKTsKICB2YXIgSEVBUFUxNiA9IG5ldyBnbG9iYWwuVWludDE2QXJy
YXkoYnVmZmVyKTsKICB2YXIgSEVBUFUzMiA9IG5ldyBnbG9iYWwuVWludDMyQXJyYXkoYnVmZmVy
KTsKICB2YXIgSEVBUEYzMiA9IG5ldyBnbG9iYWwuRmxvYXQzMkFycmF5KGJ1ZmZlcik7CiAgdmFy
IEhFQVBGNjQgPSBuZXcgZ2xvYmFsLkZsb2F0NjRBcnJheShidWZmZXIpOwoKCiAgdmFyIFNUQUNL
VE9QPWVudi5TVEFDS1RPUHwwOwogIHZhciBTVEFDS19NQVg9ZW52LlNUQUNLX01BWHwwOwogIHZh
ciB0ZW1wRG91YmxlUHRyPWVudi50ZW1wRG91YmxlUHRyfDA7CiAgdmFyIEFCT1JUPWVudi5BQk9S
VHwwOwogIHZhciBjdHR6X2k4PWVudi5jdHR6X2k4fDA7CgogIHZhciBfX1RIUkVXX18gPSAwOwog
IHZhciB0aHJld1ZhbHVlID0gMDsKICB2YXIgc2V0am1wSWQgPSAwOwogIHZhciB1bmRlZiA9IDA7
CiAgdmFyIG5hbiA9IGdsb2JhbC5OYU4sIGluZiA9IGdsb2JhbC5JbmZpbml0eTsKICB2YXIgdGVt
cEludCA9IDAsIHRlbXBCaWdJbnQgPSAwLCB0ZW1wQmlnSW50UCA9IDAsIHRlbXBCaWdJbnRTID0g
MCwgdGVtcEJpZ0ludFIgPSAwLjAsIHRlbXBCaWdJbnRJID0gMCwgdGVtcEJpZ0ludEQgPSAwLCB0
ZW1wVmFsdWUgPSAwLCB0ZW1wRG91YmxlID0gMC4wOwoKICB2YXIgdGVtcFJldDAgPSAwOwogIHZh
ciB0ZW1wUmV0MSA9IDA7CiAgdmFyIHRlbXBSZXQyID0gMDsKICB2YXIgdGVtcFJldDMgPSAwOwog
IHZhciB0ZW1wUmV0NCA9IDA7CiAgdmFyIHRlbXBSZXQ1ID0gMDsKICB2YXIgdGVtcFJldDYgPSAw
OwogIHZhciB0ZW1wUmV0NyA9IDA7CiAgdmFyIHRlbXBSZXQ4ID0gMDsKICB2YXIgdGVtcFJldDkg
PSAwOwogIHZhciBNYXRoX2Zsb29yPWdsb2JhbC5NYXRoLmZsb29yOwogIHZhciBNYXRoX2Ficz1n
bG9iYWwuTWF0aC5hYnM7CiAgdmFyIE1hdGhfc3FydD1nbG9iYWwuTWF0aC5zcXJ0OwogIHZhciBN
YXRoX3Bvdz1nbG9iYWwuTWF0aC5wb3c7CiAgdmFyIE1hdGhfY29zPWdsb2JhbC5NYXRoLmNvczsK
ICB2YXIgTWF0aF9zaW49Z2xvYmFsLk1hdGguc2luOwogIHZhciBNYXRoX3Rhbj1nbG9iYWwuTWF0
aC50YW47CiAgdmFyIE1hdGhfYWNvcz1nbG9iYWwuTWF0aC5hY29zOwogIHZhciBNYXRoX2FzaW49
Z2xvYmFsLk1hdGguYXNpbjsKICB2YXIgTWF0aF9hdGFuPWdsb2JhbC5NYXRoLmF0YW47CiAgdmFy
IE1hdGhfYXRhbjI9Z2xvYmFsLk1hdGguYXRhbjI7CiAgdmFyIE1hdGhfZXhwPWdsb2JhbC5NYXRo
LmV4cDsKICB2YXIgTWF0aF9sb2c9Z2xvYmFsLk1hdGgubG9nOwogIHZhciBNYXRoX2NlaWw9Z2xv
YmFsLk1hdGguY2VpbDsKICB2YXIgTWF0aF9pbXVsPWdsb2JhbC5NYXRoLmltdWw7CiAgdmFyIE1h
dGhfbWluPWdsb2JhbC5NYXRoLm1pbjsKICB2YXIgTWF0aF9jbHozMj1nbG9iYWwuTWF0aC5jbHoz
MjsKICB2YXIgYWJvcnQ9ZW52LmFib3J0OwogIHZhciBhc3NlcnQ9ZW52LmFzc2VydDsKICB2YXIg
aW52b2tlX2lpPWVudi5pbnZva2VfaWk7CiAgdmFyIGludm9rZV9paWlpPWVudi5pbnZva2VfaWlp
aTsKICB2YXIgaW52b2tlX3ZpPWVudi5pbnZva2Vfdmk7CiAgdmFyIF9wdGhyZWFkX2NsZWFudXBf
cG9wPWVudi5fcHRocmVhZF9jbGVhbnVwX3BvcDsKICB2YXIgX19fbG9jaz1lbnYuX19fbG9jazsK
ICB2YXIgX2Vtc2NyaXB0ZW5fc2V0X21haW5fbG9vcD1lbnYuX2Vtc2NyaXB0ZW5fc2V0X21haW5f
bG9vcDsKICB2YXIgX3B0aHJlYWRfc2VsZj1lbnYuX3B0aHJlYWRfc2VsZjsKICB2YXIgX2Fib3J0
PWVudi5fYWJvcnQ7CiAgdmFyIF9lbXNjcmlwdGVuX3NldF9tYWluX2xvb3BfdGltaW5nPWVudi5f
ZW1zY3JpcHRlbl9zZXRfbWFpbl9sb29wX3RpbWluZzsKICB2YXIgX19fc3lzY2FsbDY9ZW52Ll9f
X3N5c2NhbGw2OwogIHZhciBfc2Jyaz1lbnYuX3Nicms7CiAgdmFyIF90aW1lPWVudi5fdGltZTsK
ICB2YXIgX19fc2V0RXJyTm89ZW52Ll9fX3NldEVyck5vOwogIHZhciBfZW1zY3JpcHRlbl9tZW1j
cHlfYmlnPWVudi5fZW1zY3JpcHRlbl9tZW1jcHlfYmlnOwogIHZhciBfX19zeXNjYWxsNTQ9ZW52
Ll9fX3N5c2NhbGw1NDsKICB2YXIgX19fdW5sb2NrPWVudi5fX191bmxvY2s7CiAgdmFyIF9fX3N5
c2NhbGwxNDA9ZW52Ll9fX3N5c2NhbGwxNDA7CiAgdmFyIF9wdGhyZWFkX2NsZWFudXBfcHVzaD1l
bnYuX3B0aHJlYWRfY2xlYW51cF9wdXNoOwogIHZhciBfc3lzY29uZj1lbnYuX3N5c2NvbmY7CiAg
dmFyIF9fX3N5c2NhbGwxNDY9ZW52Ll9fX3N5c2NhbGwxNDY7CiAgdmFyIHRlbXBGbG9hdCA9IDAu
MDsKCi8vIEVNU0NSSVBURU5fU1RBUlRfRlVOQ1MKCmZ1bmN0aW9uIF9tYWxsb2MoaTkpIHsKIGk5
ID0gaTkgfCAwOwogdmFyIGkxID0gMCwgaTIgPSAwLCBpMyA9IDAsIGk0ID0gMCwgaTUgPSAwLCBp
NiA9IDAsIGk3ID0gMCwgaTggPSAwLCBpMTAgPSAwLCBpMTEgPSAwLCBpMTIgPSAwLCBpMTMgPSAw
LCBpMTQgPSAwLCBpMTUgPSAwLCBpMTYgPSAwLCBpMTcgPSAwLCBpMTggPSAwLCBpMTkgPSAwLCBp
MjAgPSAwLCBpMjEgPSAwLCBpMjIgPSAwLCBpMjMgPSAwLCBpMjQgPSAwLCBpMjUgPSAwLCBpMjYg
PSAwLCBpMjcgPSAwLCBpMjggPSAwLCBpMjkgPSAwLCBpMzAgPSAwLCBpMzEgPSAwLCBpMzIgPSAw
LCBpMzMgPSAwLCBpMzQgPSAwLCBpMzUgPSAwLCBpMzYgPSAwLCBpMzcgPSAwLCBpMzggPSAwLCBp
MzkgPSAwLCBpNDAgPSAwLCBpNDEgPSAwLCBpNDIgPSAwLCBpNDMgPSAwLCBpNDQgPSAwLCBpNDUg
PSAwLCBpNDYgPSAwLCBpNDcgPSAwOwogZG8gaWYgKGk5ID4+PiAwIDwgMjQ1KSB7CiAgaTE4ID0g
aTkgPj4+IDAgPCAxMSA/IDE2IDogaTkgKyAxMSAmIC04OwogIGk5ID0gaTE4ID4+PiAzOwogIGkx
MiA9IEhFQVAzMlsxNV0gfCAwOwogIGk4ID0gaTEyID4+PiBpOTsKICBpZiAoaTggJiAzKSB7CiAg
IGkzID0gKGk4ICYgMSBeIDEpICsgaTkgfCAwOwogICBpMSA9IGkzIDw8IDE7CiAgIGkyID0gMTAw
ICsgKGkxIDw8IDIpIHwgMDsKICAgaTEgPSAxMDAgKyAoaTEgKyAyIDw8IDIpIHwgMDsKICAgaTQg
PSBIRUFQMzJbaTEgPj4gMl0gfCAwOwogICBpNSA9IGk0ICsgOCB8IDA7CiAgIGk2ID0gSEVBUDMy
W2k1ID4+IDJdIHwgMDsKICAgZG8gaWYgKChpMiB8IDApID09IChpNiB8IDApKSBIRUFQMzJbMTVd
ID0gaTEyICYgfigxIDw8IGkzKTsgZWxzZSB7CiAgICBpZiAoaTYgPj4+IDAgPj0gKEhFQVAzMlsx
OV0gfCAwKSA+Pj4gMCA/IChpMTEgPSBpNiArIDEyIHwgMCwgKEhFQVAzMltpMTEgPj4gMl0gfCAw
KSA9PSAoaTQgfCAwKSkgOiAwKSB7CiAgICAgSEVBUDMyW2kxMSA+PiAyXSA9IGkyOwogICAgIEhF
QVAzMltpMSA+PiAyXSA9IGk2OwogICAgIGJyZWFrOwogICAgfQogICAgX2Fib3J0KCk7CiAgIH0g
d2hpbGUgKDApOwogICBpNDYgPSBpMyA8PCAzOwogICBIRUFQMzJbaTQgKyA0ID4+IDJdID0gaTQ2
IHwgMzsKICAgaTQ2ID0gaTQgKyAoaTQ2IHwgNCkgfCAwOwogICBIRUFQMzJbaTQ2ID4+IDJdID0g
SEVBUDMyW2k0NiA+PiAyXSB8IDE7CiAgIGJyZWFrOwogIH0KICBpMSA9IEhFQVAzMlsxN10gfCAw
OwogIGlmIChpMTggPj4+IDAgPiBpMSA+Pj4gMCkgewogICBpZiAoaTgpIHsKICAgIGk0ID0gMiA8
PCBpOTsKICAgIGk0ID0gaTggPDwgaTkgJiAoaTQgfCAwIC0gaTQpOwogICAgaTQgPSAoaTQgJiAw
IC0gaTQpICsgLTEgfCAwOwogICAgaTUgPSBpNCA+Pj4gMTIgJiAxNjsKICAgIGk0ID0gaTQgPj4+
IGk1OwogICAgaTMgPSBpNCA+Pj4gNSAmIDg7CiAgICBpNCA9IGk0ID4+PiBpMzsKICAgIGkyID0g
aTQgPj4+IDIgJiA0OwogICAgaTQgPSBpNCA+Pj4gaTI7CiAgICBpNiA9IGk0ID4+PiAxICYgMjsK
ICAgIGk0ID0gaTQgPj4+IGk2OwogICAgaTcgPSBpNCA+Pj4gMSAmIDE7CiAgICBpNyA9IChpMyB8
IGk1IHwgaTIgfCBpNiB8IGk3KSArIChpNCA+Pj4gaTcpIHwgMDsKICAgIGk0ID0gaTcgPDwgMTsK
ICAgIGk2ID0gMTAwICsgKGk0IDw8IDIpIHwgMDsKICAgIGk0ID0gMTAwICsgKGk0ICsgMiA8PCAy
KSB8IDA7CiAgICBpMiA9IEhFQVAzMltpNCA+PiAyXSB8IDA7CiAgICBpNSA9IGkyICsgOCB8IDA7
CiAgICBpMyA9IEhFQVAzMltpNSA+PiAyXSB8IDA7CiAgICBkbyBpZiAoKGk2IHwgMCkgPT0gKGkz
IHwgMCkpIHsKICAgICBIRUFQMzJbMTVdID0gaTEyICYgfigxIDw8IGk3KTsKICAgICBpMTMgPSBp
MTsKICAgIH0gZWxzZSB7CiAgICAgaWYgKGkzID4+PiAwID49IChIRUFQMzJbMTldIHwgMCkgPj4+
IDAgPyAoaTEwID0gaTMgKyAxMiB8IDAsIChIRUFQMzJbaTEwID4+IDJdIHwgMCkgPT0gKGkyIHwg
MCkpIDogMCkgewogICAgICBIRUFQMzJbaTEwID4+IDJdID0gaTY7CiAgICAgIEhFQVAzMltpNCA+
PiAyXSA9IGkzOwogICAgICBpMTMgPSBIRUFQMzJbMTddIHwgMDsKICAgICAgYnJlYWs7CiAgICAg
fQogICAgIF9hYm9ydCgpOwogICAgfSB3aGlsZSAoMCk7CiAgICBpNDYgPSBpNyA8PCAzOwogICAg
aTEgPSBpNDYgLSBpMTggfCAwOwogICAgSEVBUDMyW2kyICsgNCA+PiAyXSA9IGkxOCB8IDM7CiAg
ICBpOCA9IGkyICsgaTE4IHwgMDsKICAgIEhFQVAzMltpMiArIChpMTggfCA0KSA+PiAyXSA9IGkx
IHwgMTsKICAgIEhFQVAzMltpMiArIGk0NiA+PiAyXSA9IGkxOwogICAgaWYgKGkxMykgewogICAg
IGkyID0gSEVBUDMyWzIwXSB8IDA7CiAgICAgaTMgPSBpMTMgPj4+IDM7CiAgICAgaTYgPSBpMyA8
PCAxOwogICAgIGk3ID0gMTAwICsgKGk2IDw8IDIpIHwgMDsKICAgICBpNCA9IEhFQVAzMlsxNV0g
fCAwOwogICAgIGkzID0gMSA8PCBpMzsKICAgICBpZiAoaTQgJiBpMykgewogICAgICBpNCA9IDEw
MCArIChpNiArIDIgPDwgMikgfCAwOwogICAgICBpNiA9IEhFQVAzMltpNCA+PiAyXSB8IDA7CiAg
ICAgIGlmIChpNiA+Pj4gMCA8IChIRUFQMzJbMTldIHwgMCkgPj4+IDApIF9hYm9ydCgpOyBlbHNl
IHsKICAgICAgIGkxNSA9IGk0OwogICAgICAgaTE2ID0gaTY7CiAgICAgIH0KICAgICB9IGVsc2Ug
ewogICAgICBIRUFQMzJbMTVdID0gaTQgfCBpMzsKICAgICAgaTE1ID0gMTAwICsgKGk2ICsgMiA8
PCAyKSB8IDA7CiAgICAgIGkxNiA9IGk3OwogICAgIH0KICAgICBIRUFQMzJbaTE1ID4+IDJdID0g
aTI7CiAgICAgSEVBUDMyW2kxNiArIDEyID4+IDJdID0gaTI7CiAgICAgSEVBUDMyW2kyICsgOCA+
PiAyXSA9IGkxNjsKICAgICBIRUFQMzJbaTIgKyAxMiA+PiAyXSA9IGk3OwogICAgfQogICAgSEVB
UDMyWzE3XSA9IGkxOwogICAgSEVBUDMyWzIwXSA9IGk4OwogICAgYnJlYWs7CiAgIH0KICAgaTkg
PSBIRUFQMzJbMTZdIHwgMDsKICAgaWYgKGk5KSB7CiAgICBpNCA9IChpOSAmIDAgLSBpOSkgKyAt
MSB8IDA7CiAgICBpNDUgPSBpNCA+Pj4gMTIgJiAxNjsKICAgIGk0ID0gaTQgPj4+IGk0NTsKICAg
IGk0NCA9IGk0ID4+PiA1ICYgODsKICAgIGk0ID0gaTQgPj4+IGk0NDsKICAgIGk0NiA9IGk0ID4+
PiAyICYgNDsKICAgIGk0ID0gaTQgPj4+IGk0NjsKICAgIGk2ID0gaTQgPj4+IDEgJiAyOwogICAg
aTQgPSBpNCA+Pj4gaTY7CiAgICBpOCA9IGk0ID4+PiAxICYgMTsKICAgIGk4ID0gSEVBUDMyWzM2
NCArICgoaTQ0IHwgaTQ1IHwgaTQ2IHwgaTYgfCBpOCkgKyAoaTQgPj4+IGk4KSA8PCAyKSA+PiAy
XSB8IDA7CiAgICBpNCA9IChIRUFQMzJbaTggKyA0ID4+IDJdICYgLTgpIC0gaTE4IHwgMDsKICAg
IGk2ID0gaTg7CiAgICB3aGlsZSAoMSkgewogICAgIGk3ID0gSEVBUDMyW2k2ICsgMTYgPj4gMl0g
fCAwOwogICAgIGlmICghaTcpIHsKICAgICAgaTcgPSBIRUFQMzJbaTYgKyAyMCA+PiAyXSB8IDA7
CiAgICAgIGlmICghaTcpIHsKICAgICAgIGkxID0gaTQ7CiAgICAgICBicmVhazsKICAgICAgfQog
ICAgIH0KICAgICBpNiA9IChIRUFQMzJbaTcgKyA0ID4+IDJdICYgLTgpIC0gaTE4IHwgMDsKICAg
ICBpNDYgPSBpNiA+Pj4gMCA8IGk0ID4+PiAwOwogICAgIGk0ID0gaTQ2ID8gaTYgOiBpNDsKICAg
ICBpNiA9IGk3OwogICAgIGk4ID0gaTQ2ID8gaTcgOiBpODsKICAgIH0KICAgIGk5ID0gSEVBUDMy
WzE5XSB8IDA7CiAgICBpZiAoaTggPj4+IDAgPj0gaTkgPj4+IDAgPyAoaTIxID0gaTggKyBpMTgg
fCAwLCBpOCA+Pj4gMCA8IGkyMSA+Pj4gMCkgOiAwKSB7CiAgICAgaTMgPSBIRUFQMzJbaTggKyAy
NCA+PiAyXSB8IDA7CiAgICAgaTcgPSBIRUFQMzJbaTggKyAxMiA+PiAyXSB8IDA7CiAgICAgZG8g
aWYgKChpNyB8IDApID09IChpOCB8IDApKSB7CiAgICAgIGk2ID0gaTggKyAyMCB8IDA7CiAgICAg
IGk3ID0gSEVBUDMyW2k2ID4+IDJdIHwgMDsKICAgICAgaWYgKCFpNykgewogICAgICAgaTYgPSBp
OCArIDE2IHwgMDsKICAgICAgIGk3ID0gSEVBUDMyW2k2ID4+IDJdIHwgMDsKICAgICAgIGlmICgh
aTcpIHsKICAgICAgICBpMTkgPSAwOwogICAgICAgIGJyZWFrOwogICAgICAgfQogICAgICB9CiAg
ICAgIHdoaWxlICgxKSB7CiAgICAgICBpNSA9IGk3ICsgMjAgfCAwOwogICAgICAgaTQgPSBIRUFQ
MzJbaTUgPj4gMl0gfCAwOwogICAgICAgaWYgKGk0KSB7CiAgICAgICAgaTcgPSBpNDsKICAgICAg
ICBpNiA9IGk1OwogICAgICAgIGNvbnRpbnVlOwogICAgICAgfQogICAgICAgaTUgPSBpNyArIDE2
IHwgMDsKICAgICAgIGk0ID0gSEVBUDMyW2k1ID4+IDJdIHwgMDsKICAgICAgIGlmICghaTQpIGJy
ZWFrOyBlbHNlIHsKICAgICAgICBpNyA9IGk0OwogICAgICAgIGk2ID0gaTU7CiAgICAgICB9CiAg
ICAgIH0KICAgICAgaWYgKGk2ID4+PiAwIDwgaTkgPj4+IDApIF9hYm9ydCgpOyBlbHNlIHsKICAg
ICAgIEhFQVAzMltpNiA+PiAyXSA9IDA7CiAgICAgICBpMTkgPSBpNzsKICAgICAgIGJyZWFrOwog
ICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgaTYgPSBIRUFQMzJbaTggKyA4ID4+IDJdIHwgMDsK
ICAgICAgaWYgKChpNiA+Pj4gMCA+PSBpOSA+Pj4gMCA/IChpMiA9IGk2ICsgMTIgfCAwLCAoSEVB
UDMyW2kyID4+IDJdIHwgMCkgPT0gKGk4IHwgMCkpIDogMCkgPyAoaTE0ID0gaTcgKyA4IHwgMCwg
KEhFQVAzMltpMTQgPj4gMl0gfCAwKSA9PSAoaTggfCAwKSkgOiAwKSB7CiAgICAgICBIRUFQMzJb
aTIgPj4gMl0gPSBpNzsKICAgICAgIEhFQVAzMltpMTQgPj4gMl0gPSBpNjsKICAgICAgIGkxOSA9
IGk3OwogICAgICAgYnJlYWs7CiAgICAgIH0KICAgICAgX2Fib3J0KCk7CiAgICAgfSB3aGlsZSAo
MCk7CiAgICAgZG8gaWYgKGkzKSB7CiAgICAgIGk2ID0gSEVBUDMyW2k4ICsgMjggPj4gMl0gfCAw
OwogICAgICBpNSA9IDM2NCArIChpNiA8PCAyKSB8IDA7CiAgICAgIGlmICgoaTggfCAwKSA9PSAo
SEVBUDMyW2k1ID4+IDJdIHwgMCkpIHsKICAgICAgIEhFQVAzMltpNSA+PiAyXSA9IGkxOTsKICAg
ICAgIGlmICghaTE5KSB7CiAgICAgICAgSEVBUDMyWzE2XSA9IEhFQVAzMlsxNl0gJiB+KDEgPDwg
aTYpOwogICAgICAgIGJyZWFrOwogICAgICAgfQogICAgICB9IGVsc2UgewogICAgICAgaWYgKGkz
ID4+PiAwIDwgKEhFQVAzMlsxOV0gfCAwKSA+Pj4gMCkgX2Fib3J0KCk7CiAgICAgICBpNiA9IGkz
ICsgMTYgfCAwOwogICAgICAgaWYgKChIRUFQMzJbaTYgPj4gMl0gfCAwKSA9PSAoaTggfCAwKSkg
SEVBUDMyW2k2ID4+IDJdID0gaTE5OyBlbHNlIEhFQVAzMltpMyArIDIwID4+IDJdID0gaTE5Owog
ICAgICAgaWYgKCFpMTkpIGJyZWFrOwogICAgICB9CiAgICAgIGk1ID0gSEVBUDMyWzE5XSB8IDA7
CiAgICAgIGlmIChpMTkgPj4+IDAgPCBpNSA+Pj4gMCkgX2Fib3J0KCk7CiAgICAgIEhFQVAzMltp
MTkgKyAyNCA+PiAyXSA9IGkzOwogICAgICBpNiA9IEhFQVAzMltpOCArIDE2ID4+IDJdIHwgMDsK
ICAgICAgZG8gaWYgKGk2KSBpZiAoaTYgPj4+IDAgPCBpNSA+Pj4gMCkgX2Fib3J0KCk7IGVsc2Ug
ewogICAgICAgSEVBUDMyW2kxOSArIDE2ID4+IDJdID0gaTY7CiAgICAgICBIRUFQMzJbaTYgKyAy
NCA+PiAyXSA9IGkxOTsKICAgICAgIGJyZWFrOwogICAgICB9IHdoaWxlICgwKTsKICAgICAgaTYg
PSBIRUFQMzJbaTggKyAyMCA+PiAyXSB8IDA7CiAgICAgIGlmIChpNikgaWYgKGk2ID4+PiAwIDwg
KEhFQVAzMlsxOV0gfCAwKSA+Pj4gMCkgX2Fib3J0KCk7IGVsc2UgewogICAgICAgSEVBUDMyW2kx
OSArIDIwID4+IDJdID0gaTY7CiAgICAgICBIRUFQMzJbaTYgKyAyNCA+PiAyXSA9IGkxOTsKICAg
ICAgIGJyZWFrOwogICAgICB9CiAgICAgfSB3aGlsZSAoMCk7CiAgICAgaWYgKGkxID4+PiAwIDwg
MTYpIHsKICAgICAgaTQ2ID0gaTEgKyBpMTggfCAwOwogICAgICBIRUFQMzJbaTggKyA0ID4+IDJd
ID0gaTQ2IHwgMzsKICAgICAgaTQ2ID0gaTggKyAoaTQ2ICsgNCkgfCAwOwogICAgICBIRUFQMzJb
aTQ2ID4+IDJdID0gSEVBUDMyW2k0NiA+PiAyXSB8IDE7CiAgICAgfSBlbHNlIHsKICAgICAgSEVB
UDMyW2k4ICsgNCA+PiAyXSA9IGkxOCB8IDM7CiAgICAgIEhFQVAzMltpOCArIChpMTggfCA0KSA+
PiAyXSA9IGkxIHwgMTsKICAgICAgSEVBUDMyW2k4ICsgKGkxICsgaTE4KSA+PiAyXSA9IGkxOwog
ICAgICBpMyA9IEhFQVAzMlsxN10gfCAwOwogICAgICBpZiAoaTMpIHsKICAgICAgIGkyID0gSEVB
UDMyWzIwXSB8IDA7CiAgICAgICBpNCA9IGkzID4+PiAzOwogICAgICAgaTYgPSBpNCA8PCAxOwog
ICAgICAgaTcgPSAxMDAgKyAoaTYgPDwgMikgfCAwOwogICAgICAgaTUgPSBIRUFQMzJbMTVdIHwg
MDsKICAgICAgIGk0ID0gMSA8PCBpNDsKICAgICAgIGlmIChpNSAmIGk0KSB7CiAgICAgICAgaTYg
PSAxMDAgKyAoaTYgKyAyIDw8IDIpIHwgMDsKICAgICAgICBpNSA9IEhFQVAzMltpNiA+PiAyXSB8
IDA7CiAgICAgICAgaWYgKGk1ID4+PiAwIDwgKEhFQVAzMlsxOV0gfCAwKSA+Pj4gMCkgX2Fib3J0
KCk7IGVsc2UgewogICAgICAgICBpMjAgPSBpNjsKICAgICAgICAgaTIyID0gaTU7CiAgICAgICAg
fQogICAgICAgfSBlbHNlIHsKICAgICAgICBIRUFQMzJbMTVdID0gaTUgfCBpNDsKICAgICAgICBp
MjAgPSAxMDAgKyAoaTYgKyAyIDw8IDIpIHwgMDsKICAgICAgICBpMjIgPSBpNzsKICAgICAgIH0K
ICAgICAgIEhFQVAzMltpMjAgPj4gMl0gPSBpMjsKICAgICAgIEhFQVAzMltpMjIgKyAxMiA+PiAy
XSA9IGkyOwogICAgICAgSEVBUDMyW2kyICsgOCA+PiAyXSA9IGkyMjsKICAgICAgIEhFQVAzMltp
MiArIDEyID4+IDJdID0gaTc7CiAgICAgIH0KICAgICAgSEVBUDMyWzE3XSA9IGkxOwogICAgICBI
RUFQMzJbMjBdID0gaTIxOwogICAgIH0KICAgICBpNSA9IGk4ICsgOCB8IDA7CiAgICAgYnJlYWs7
CiAgICB9CiAgICBfYWJvcnQoKTsKICAgfSBlbHNlIGk0NyA9IDE1NDsKICB9IGVsc2UgaTQ3ID0g
MTU0OwogfSBlbHNlIGlmIChpOSA+Pj4gMCA8PSA0Mjk0OTY3MjMxKSB7CiAgaTkgPSBpOSArIDEx
IHwgMDsKICBpMTMgPSBpOSAmIC04OwogIGkxMiA9IEhFQVAzMlsxNl0gfCAwOwogIGlmIChpMTIp
IHsKICAgaTggPSAwIC0gaTEzIHwgMDsKICAgaTkgPSBpOSA+Pj4gODsKICAgaWYgKGk5KSBpZiAo
aTEzID4+PiAwID4gMTY3NzcyMTUpIGkxMSA9IDMxOyBlbHNlIHsKICAgIGk3ID0gKGk5ICsgMTA0
ODMyMCB8IDApID4+PiAxNiAmIDg7CiAgICBpMTAgPSBpOSA8PCBpNzsKICAgIGk5ID0gKGkxMCAr
IDUyMDE5MiB8IDApID4+PiAxNiAmIDQ7CiAgICBpMTAgPSBpMTAgPDwgaTk7CiAgICBpMTEgPSAo
aTEwICsgMjQ1NzYwIHwgMCkgPj4+IDE2ICYgMjsKICAgIGkxMSA9IDE0IC0gKGk5IHwgaTcgfCBp
MTEpICsgKGkxMCA8PCBpMTEgPj4+IDE1KSB8IDA7CiAgICBpMTEgPSBpMTMgPj4+IChpMTEgKyA3
IHwgMCkgJiAxIHwgaTExIDw8IDE7CiAgIH0gZWxzZSBpMTEgPSAwOwogICBpOSA9IEhFQVAzMlsz
NjQgKyAoaTExIDw8IDIpID4+IDJdIHwgMDsKICAgTDExMCA6IGRvIGlmICghaTkpIHsKICAgIGk3
ID0gMDsKICAgIGk5ID0gMDsKICAgIGk0NyA9IDg2OwogICB9IGVsc2UgewogICAgaTIgPSBpODsK
ICAgIGk3ID0gMDsKICAgIGkxID0gaTEzIDw8ICgoaTExIHwgMCkgPT0gMzEgPyAwIDogMjUgLSAo
aTExID4+PiAxKSB8IDApOwogICAgaTEwID0gaTk7CiAgICBpOSA9IDA7CiAgICB3aGlsZSAoMSkg
ewogICAgIGkzID0gSEVBUDMyW2kxMCArIDQgPj4gMl0gJiAtODsKICAgICBpOCA9IGkzIC0gaTEz
IHwgMDsKICAgICBpZiAoaTggPj4+IDAgPCBpMiA+Pj4gMCkgaWYgKChpMyB8IDApID09IChpMTMg
fCAwKSkgewogICAgICBpMyA9IGkxMDsKICAgICAgaTkgPSBpMTA7CiAgICAgIGk0NyA9IDkwOwog
ICAgICBicmVhayBMMTEwOwogICAgIH0gZWxzZSBpOSA9IGkxMDsgZWxzZSBpOCA9IGkyOwogICAg
IGkzID0gSEVBUDMyW2kxMCArIDIwID4+IDJdIHwgMDsKICAgICBpMTAgPSBIRUFQMzJbaTEwICsg
MTYgKyAoaTEgPj4+IDMxIDw8IDIpID4+IDJdIHwgMDsKICAgICBpNyA9IChpMyB8IDApID09IDAg
fCAoaTMgfCAwKSA9PSAoaTEwIHwgMCkgPyBpNyA6IGkzOwogICAgIGlmICghaTEwKSB7CiAgICAg
IGk0NyA9IDg2OwogICAgICBicmVhazsKICAgICB9IGVsc2UgewogICAgICBpMiA9IGk4OwogICAg
ICBpMSA9IGkxIDw8IDE7CiAgICAgfQogICAgfQogICB9IHdoaWxlICgwKTsKICAgaWYgKChpNDcg
fCAwKSA9PSA4NikgewogICAgaWYgKChpNyB8IDApID09IDAgJiAoaTkgfCAwKSA9PSAwKSB7CiAg
ICAgaTkgPSAyIDw8IGkxMTsKICAgICBpOSA9IGkxMiAmIChpOSB8IDAgLSBpOSk7CiAgICAgaWYg
KCFpOSkgewogICAgICBpMTggPSBpMTM7CiAgICAgIGk0NyA9IDE1NDsKICAgICAgYnJlYWs7CiAg
ICAgfQogICAgIGk5ID0gKGk5ICYgMCAtIGk5KSArIC0xIHwgMDsKICAgICBpMiA9IGk5ID4+PiAx
MiAmIDE2OwogICAgIGk5ID0gaTkgPj4+IGkyOwogICAgIGkxID0gaTkgPj4+IDUgJiA4OwogICAg
IGk5ID0gaTkgPj4+IGkxOwogICAgIGkzID0gaTkgPj4+IDIgJiA0OwogICAgIGk5ID0gaTkgPj4+
IGkzOwogICAgIGkxMCA9IGk5ID4+PiAxICYgMjsKICAgICBpOSA9IGk5ID4+PiBpMTA7CiAgICAg
aTcgPSBpOSA+Pj4gMSAmIDE7CiAgICAgaTcgPSBIRUFQMzJbMzY0ICsgKChpMSB8IGkyIHwgaTMg
fCBpMTAgfCBpNykgKyAoaTkgPj4+IGk3KSA8PCAyKSA+PiAyXSB8IDA7CiAgICAgaTkgPSAwOwog
ICAgfQogICAgaWYgKCFpNykgewogICAgIGkxNiA9IGk4OwogICAgIGkxNSA9IGk5OwogICAgfSBl
bHNlIHsKICAgICBpMyA9IGk3OwogICAgIGk0NyA9IDkwOwogICAgfQogICB9CiAgIGlmICgoaTQ3
IHwgMCkgPT0gOTApIHdoaWxlICgxKSB7CiAgICBpNDcgPSAwOwogICAgaTEwID0gKEhFQVAzMltp
MyArIDQgPj4gMl0gJiAtOCkgLSBpMTMgfCAwOwogICAgaTcgPSBpMTAgPj4+IDAgPCBpOCA+Pj4g
MDsKICAgIGk4ID0gaTcgPyBpMTAgOiBpODsKICAgIGk5ID0gaTcgPyBpMyA6IGk5OwogICAgaTcg
PSBIRUFQMzJbaTMgKyAxNiA+PiAyXSB8IDA7CiAgICBpZiAoaTcpIHsKICAgICBpMyA9IGk3Owog
ICAgIGk0NyA9IDkwOwogICAgIGNvbnRpbnVlOwogICAgfQogICAgaTMgPSBIRUFQMzJbaTMgKyAy
MCA+PiAyXSB8IDA7CiAgICBpZiAoIWkzKSB7CiAgICAgaTE2ID0gaTg7CiAgICAgaTE1ID0gaTk7
CiAgICAgYnJlYWs7CiAgICB9IGVsc2UgaTQ3ID0gOTA7CiAgIH0KICAgaWYgKChpMTUgfCAwKSAh
PSAwID8gaTE2ID4+PiAwIDwgKChIRUFQMzJbMTddIHwgMCkgLSBpMTMgfCAwKSA+Pj4gMCA6IDAp
IHsKICAgIGk5ID0gSEVBUDMyWzE5XSB8IDA7CiAgICBpZiAoaTE1ID4+PiAwID49IGk5ID4+PiAw
ID8gKGkzMyA9IGkxNSArIGkxMyB8IDAsIGkxNSA+Pj4gMCA8IGkzMyA+Pj4gMCkgOiAwKSB7CiAg
ICAgaTggPSBIRUFQMzJbaTE1ICsgMjQgPj4gMl0gfCAwOwogICAgIGk3ID0gSEVBUDMyW2kxNSAr
IDEyID4+IDJdIHwgMDsKICAgICBkbyBpZiAoKGk3IHwgMCkgPT0gKGkxNSB8IDApKSB7CiAgICAg
IGk2ID0gaTE1ICsgMjAgfCAwOwogICAgICBpNyA9IEhFQVAzMltpNiA+PiAyXSB8IDA7CiAgICAg
IGlmICghaTcpIHsKICAgICAgIGk2ID0gaTE1ICsgMTYgfCAwOwogICAgICAgaTcgPSBIRUFQMzJb
aTYgPj4gMl0gfCAwOwogICAgICAgaWYgKCFpNykgewogICAgICAgIGkyNCA9IDA7CiAgICAgICAg
YnJlYWs7CiAgICAgICB9CiAgICAgIH0KICAgICAgd2hpbGUgKDEpIHsKICAgICAgIGk1ID0gaTcg
KyAyMCB8IDA7CiAgICAgICBpNCA9IEhFQVAzMltpNSA+PiAyXSB8IDA7CiAgICAgICBpZiAoaTQp
IHsKICAgICAgICBpNyA9IGk0OwogICAgICAgIGk2ID0gaTU7CiAgICAgICAgY29udGludWU7CiAg
ICAgICB9CiAgICAgICBpNSA9IGk3ICsgMTYgfCAwOwogICAgICAgaTQgPSBIRUFQMzJbaTUgPj4g
Ml0gfCAwOwogICAgICAgaWYgKCFpNCkgYnJlYWs7IGVsc2UgewogICAgICAgIGk3ID0gaTQ7CiAg
ICAgICAgaTYgPSBpNTsKICAgICAgIH0KICAgICAgfQogICAgICBpZiAoaTYgPj4+IDAgPCBpOSA+
Pj4gMCkgX2Fib3J0KCk7IGVsc2UgewogICAgICAgSEVBUDMyW2k2ID4+IDJdID0gMDsKICAgICAg
IGkyNCA9IGk3OwogICAgICAgYnJlYWs7CiAgICAgIH0KICAgICB9IGVsc2UgewogICAgICBpNiA9
IEhFQVAzMltpMTUgKyA4ID4+IDJdIHwgMDsKICAgICAgaWYgKChpNiA+Pj4gMCA+PSBpOSA+Pj4g
MCA/IChpMTcgPSBpNiArIDEyIHwgMCwgKEhFQVAzMltpMTcgPj4gMl0gfCAwKSA9PSAoaTE1IHwg
MCkpIDogMCkgPyAoaTE4ID0gaTcgKyA4IHwgMCwgKEhFQVAzMltpMTggPj4gMl0gfCAwKSA9PSAo
aTE1IHwgMCkpIDogMCkgewogICAgICAgSEVBUDMyW2kxNyA+PiAyXSA9IGk3OwogICAgICAgSEVB
UDMyW2kxOCA+PiAyXSA9IGk2OwogICAgICAgaTI0ID0gaTc7CiAgICAgICBicmVhazsKICAgICAg
fQogICAgICBfYWJvcnQoKTsKICAgICB9IHdoaWxlICgwKTsKICAgICBkbyBpZiAoaTgpIHsKICAg
ICAgaTcgPSBIRUFQMzJbaTE1ICsgMjggPj4gMl0gfCAwOwogICAgICBpNiA9IDM2NCArIChpNyA8
PCAyKSB8IDA7CiAgICAgIGlmICgoaTE1IHwgMCkgPT0gKEhFQVAzMltpNiA+PiAyXSB8IDApKSB7
CiAgICAgICBIRUFQMzJbaTYgPj4gMl0gPSBpMjQ7CiAgICAgICBpZiAoIWkyNCkgewogICAgICAg
IEhFQVAzMlsxNl0gPSBIRUFQMzJbMTZdICYgfigxIDw8IGk3KTsKICAgICAgICBicmVhazsKICAg
ICAgIH0KICAgICAgfSBlbHNlIHsKICAgICAgIGlmIChpOCA+Pj4gMCA8IChIRUFQMzJbMTldIHwg
MCkgPj4+IDApIF9hYm9ydCgpOwogICAgICAgaTYgPSBpOCArIDE2IHwgMDsKICAgICAgIGlmICgo
SEVBUDMyW2k2ID4+IDJdIHwgMCkgPT0gKGkxNSB8IDApKSBIRUFQMzJbaTYgPj4gMl0gPSBpMjQ7
IGVsc2UgSEVBUDMyW2k4ICsgMjAgPj4gMl0gPSBpMjQ7CiAgICAgICBpZiAoIWkyNCkgYnJlYWs7
CiAgICAgIH0KICAgICAgaTcgPSBIRUFQMzJbMTldIHwgMDsKICAgICAgaWYgKGkyNCA+Pj4gMCA8
IGk3ID4+PiAwKSBfYWJvcnQoKTsKICAgICAgSEVBUDMyW2kyNCArIDI0ID4+IDJdID0gaTg7CiAg
ICAgIGk2ID0gSEVBUDMyW2kxNSArIDE2ID4+IDJdIHwgMDsKICAgICAgZG8gaWYgKGk2KSBpZiAo
aTYgPj4+IDAgPCBpNyA+Pj4gMCkgX2Fib3J0KCk7IGVsc2UgewogICAgICAgSEVBUDMyW2kyNCAr
IDE2ID4+IDJdID0gaTY7CiAgICAgICBIRUFQMzJbaTYgKyAyNCA+PiAyXSA9IGkyNDsKICAgICAg
IGJyZWFrOwogICAgICB9IHdoaWxlICgwKTsKICAgICAgaTYgPSBIRUFQMzJbaTE1ICsgMjAgPj4g
Ml0gfCAwOwogICAgICBpZiAoaTYpIGlmIChpNiA+Pj4gMCA8IChIRUFQMzJbMTldIHwgMCkgPj4+
IDApIF9hYm9ydCgpOyBlbHNlIHsKICAgICAgIEhFQVAzMltpMjQgKyAyMCA+PiAyXSA9IGk2Owog
ICAgICAgSEVBUDMyW2k2ICsgMjQgPj4gMl0gPSBpMjQ7CiAgICAgICBicmVhazsKICAgICAgfQog
ICAgIH0gd2hpbGUgKDApOwogICAgIEwxNzkgOiBkbyBpZiAoaTE2ID4+PiAwID49IDE2KSB7CiAg
ICAgIEhFQVAzMltpMTUgKyA0ID4+IDJdID0gaTEzIHwgMzsKICAgICAgSEVBUDMyW2kxNSArIChp
MTMgfCA0KSA+PiAyXSA9IGkxNiB8IDE7CiAgICAgIEhFQVAzMltpMTUgKyAoaTE2ICsgaTEzKSA+
PiAyXSA9IGkxNjsKICAgICAgaTcgPSBpMTYgPj4+IDM7CiAgICAgIGlmIChpMTYgPj4+IDAgPCAy
NTYpIHsKICAgICAgIGk1ID0gaTcgPDwgMTsKICAgICAgIGkzID0gMTAwICsgKGk1IDw8IDIpIHwg
MDsKICAgICAgIGk0ID0gSEVBUDMyWzE1XSB8IDA7CiAgICAgICBpNiA9IDEgPDwgaTc7CiAgICAg
ICBpZiAoaTQgJiBpNikgewogICAgICAgIGk2ID0gMTAwICsgKGk1ICsgMiA8PCAyKSB8IDA7CiAg
ICAgICAgaTUgPSBIRUFQMzJbaTYgPj4gMl0gfCAwOwogICAgICAgIGlmIChpNSA+Pj4gMCA8IChI
RUFQMzJbMTldIHwgMCkgPj4+IDApIF9hYm9ydCgpOyBlbHNlIHsKICAgICAgICAgaTI1ID0gaTY7
CiAgICAgICAgIGkyNiA9IGk1OwogICAgICAgIH0KICAgICAgIH0gZWxzZSB7CiAgICAgICAgSEVB
UDMyWzE1XSA9IGk0IHwgaTY7CiAgICAgICAgaTI1ID0gMTAwICsgKGk1ICsgMiA8PCAyKSB8IDA7
CiAgICAgICAgaTI2ID0gaTM7CiAgICAgICB9CiAgICAgICBIRUFQMzJbaTI1ID4+IDJdID0gaTMz
OwogICAgICAgSEVBUDMyW2kyNiArIDEyID4+IDJdID0gaTMzOwogICAgICAgSEVBUDMyW2kxNSAr
IChpMTMgKyA4KSA+PiAyXSA9IGkyNjsKICAgICAgIEhFQVAzMltpMTUgKyAoaTEzICsgMTIpID4+
IDJdID0gaTM7CiAgICAgICBicmVhazsKICAgICAgfQogICAgICBpMiA9IGkxNiA+Pj4gODsKICAg
ICAgaWYgKGkyKSBpZiAoaTE2ID4+PiAwID4gMTY3NzcyMTUpIGk3ID0gMzE7IGVsc2UgewogICAg
ICAgaTQ1ID0gKGkyICsgMTA0ODMyMCB8IDApID4+PiAxNiAmIDg7CiAgICAgICBpNDYgPSBpMiA8
PCBpNDU7CiAgICAgICBpNDQgPSAoaTQ2ICsgNTIwMTkyIHwgMCkgPj4+IDE2ICYgNDsKICAgICAg
IGk0NiA9IGk0NiA8PCBpNDQ7CiAgICAgICBpNyA9IChpNDYgKyAyNDU3NjAgfCAwKSA+Pj4gMTYg
JiAyOwogICAgICAgaTcgPSAxNCAtIChpNDQgfCBpNDUgfCBpNykgKyAoaTQ2IDw8IGk3ID4+PiAx
NSkgfCAwOwogICAgICAgaTcgPSBpMTYgPj4+IChpNyArIDcgfCAwKSAmIDEgfCBpNyA8PCAxOwog
ICAgICB9IGVsc2UgaTcgPSAwOwogICAgICBpNiA9IDM2NCArIChpNyA8PCAyKSB8IDA7CiAgICAg
IEhFQVAzMltpMTUgKyAoaTEzICsgMjgpID4+IDJdID0gaTc7CiAgICAgIEhFQVAzMltpMTUgKyAo
aTEzICsgMjApID4+IDJdID0gMDsKICAgICAgSEVBUDMyW2kxNSArIChpMTMgKyAxNikgPj4gMl0g
PSAwOwogICAgICBpNSA9IEhFQVAzMlsxNl0gfCAwOwogICAgICBpNCA9IDEgPDwgaTc7CiAgICAg
IGlmICghKGk1ICYgaTQpKSB7CiAgICAgICBIRUFQMzJbMTZdID0gaTUgfCBpNDsKICAgICAgIEhF
QVAzMltpNiA+PiAyXSA9IGkzMzsKICAgICAgIEhFQVAzMltpMTUgKyAoaTEzICsgMjQpID4+IDJd
ID0gaTY7CiAgICAgICBIRUFQMzJbaTE1ICsgKGkxMyArIDEyKSA+PiAyXSA9IGkzMzsKICAgICAg
IEhFQVAzMltpMTUgKyAoaTEzICsgOCkgPj4gMl0gPSBpMzM7CiAgICAgICBicmVhazsKICAgICAg
fQogICAgICBpMiA9IEhFQVAzMltpNiA+PiAyXSB8IDA7CiAgICAgIEwxOTcgOiBkbyBpZiAoKEhF
QVAzMltpMiArIDQgPj4gMl0gJiAtOCB8IDApICE9IChpMTYgfCAwKSkgewogICAgICAgaTcgPSBp
MTYgPDwgKChpNyB8IDApID09IDMxID8gMCA6IDI1IC0gKGk3ID4+PiAxKSB8IDApOwogICAgICAg
d2hpbGUgKDEpIHsKICAgICAgICBpMSA9IGkyICsgMTYgKyAoaTcgPj4+IDMxIDw8IDIpIHwgMDsK
ICAgICAgICBpNiA9IEhFQVAzMltpMSA+PiAyXSB8IDA7CiAgICAgICAgaWYgKCFpNikgYnJlYWs7
CiAgICAgICAgaWYgKChIRUFQMzJbaTYgKyA0ID4+IDJdICYgLTggfCAwKSA9PSAoaTE2IHwgMCkp
IHsKICAgICAgICAgaTI4ID0gaTY7CiAgICAgICAgIGJyZWFrIEwxOTc7CiAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgaTcgPSBpNyA8PCAxOwogICAgICAgICBpMiA9IGk2OwogICAgICAgIH0KICAg
ICAgIH0KICAgICAgIGlmIChpMSA+Pj4gMCA8IChIRUFQMzJbMTldIHwgMCkgPj4+IDApIF9hYm9y
dCgpOyBlbHNlIHsKICAgICAgICBIRUFQMzJbaTEgPj4gMl0gPSBpMzM7CiAgICAgICAgSEVBUDMy
W2kxNSArIChpMTMgKyAyNCkgPj4gMl0gPSBpMjsKICAgICAgICBIRUFQMzJbaTE1ICsgKGkxMyAr
IDEyKSA+PiAyXSA9IGkzMzsKICAgICAgICBIRUFQMzJbaTE1ICsgKGkxMyArIDgpID4+IDJdID0g
aTMzOwogICAgICAgIGJyZWFrIEwxNzk7CiAgICAgICB9CiAgICAgIH0gZWxzZSBpMjggPSBpMjsg
d2hpbGUgKDApOwogICAgICBpMiA9IGkyOCArIDggfCAwOwogICAgICBpMSA9IEhFQVAzMltpMiA+
PiAyXSB8IDA7CiAgICAgIGk0NiA9IEhFQVAzMlsxOV0gfCAwOwogICAgICBpZiAoaTEgPj4+IDAg
Pj0gaTQ2ID4+PiAwICYgaTI4ID4+PiAwID49IGk0NiA+Pj4gMCkgewogICAgICAgSEVBUDMyW2kx
ICsgMTIgPj4gMl0gPSBpMzM7CiAgICAgICBIRUFQMzJbaTIgPj4gMl0gPSBpMzM7CiAgICAgICBI
RUFQMzJbaTE1ICsgKGkxMyArIDgpID4+IDJdID0gaTE7CiAgICAgICBIRUFQMzJbaTE1ICsgKGkx
MyArIDEyKSA+PiAyXSA9IGkyODsKICAgICAgIEhFQVAzMltpMTUgKyAoaTEzICsgMjQpID4+IDJd
ID0gMDsKICAgICAgIGJyZWFrOwogICAgICB9IGVsc2UgX2Fib3J0KCk7CiAgICAgfSBlbHNlIHsK
ICAgICAgaTQ2ID0gaTE2ICsgaTEzIHwgMDsKICAgICAgSEVBUDMyW2kxNSArIDQgPj4gMl0gPSBp
NDYgfCAzOwogICAgICBpNDYgPSBpMTUgKyAoaTQ2ICsgNCkgfCAwOwogICAgICBIRUFQMzJbaTQ2
ID4+IDJdID0gSEVBUDMyW2k0NiA+PiAyXSB8IDE7CiAgICAgfSB3aGlsZSAoMCk7CiAgICAgaTUg
PSBpMTUgKyA4IHwgMDsKICAgICBicmVhazsKICAgIH0KICAgIF9hYm9ydCgpOwogICB9IGVsc2Ug
ewogICAgaTE4ID0gaTEzOwogICAgaTQ3ID0gMTU0OwogICB9CiAgfSBlbHNlIHsKICAgaTE4ID0g
aTEzOwogICBpNDcgPSAxNTQ7CiAgfQogfSBlbHNlIHsKICBpMTggPSAtMTsKICBpNDcgPSAxNTQ7
CiB9IHdoaWxlICgwKTsKIEwyMTIgOiBkbyBpZiAoKGk0NyB8IDApID09IDE1NCkgewogIGk5ID0g
SEVBUDMyWzE3XSB8IDA7CiAgaWYgKGk5ID4+PiAwID49IGkxOCA+Pj4gMCkgewogICBpMSA9IGk5
IC0gaTE4IHwgMDsKICAgaTIgPSBIRUFQMzJbMjBdIHwgMDsKICAgaWYgKGkxID4+PiAwID4gMTUp
IHsKICAgIEhFQVAzMlsyMF0gPSBpMiArIGkxODsKICAgIEhFQVAzMlsxN10gPSBpMTsKICAgIEhF
QVAzMltpMiArIChpMTggKyA0KSA+PiAyXSA9IGkxIHwgMTsKICAgIEhFQVAzMltpMiArIGk5ID4+
IDJdID0gaTE7CiAgICBIRUFQMzJbaTIgKyA0ID4+IDJdID0gaTE4IHwgMzsKICAgfSBlbHNlIHsK
ICAgIEhFQVAzMlsxN10gPSAwOwogICAgSEVBUDMyWzIwXSA9IDA7CiAgICBIRUFQMzJbaTIgKyA0
ID4+IDJdID0gaTkgfCAzOwogICAgaTQ2ID0gaTIgKyAoaTkgKyA0KSB8IDA7CiAgICBIRUFQMzJb
aTQ2ID4+IDJdID0gSEVBUDMyW2k0NiA+PiAyXSB8IDE7CiAgIH0KICAgaTUgPSBpMiArIDggfCAw
OwogICBicmVhazsKICB9CiAgaTkgPSBIRUFQMzJbMThdIHwgMDsKICBpZiAoaTkgPj4+IDAgPiBp
MTggPj4+IDApIHsKICAgaTQ2ID0gaTkgLSBpMTggfCAwOwogICBIRUFQMzJbMThdID0gaTQ2Owog
ICBpNSA9IEhFQVAzMlsyMV0gfCAwOwogICBIRUFQMzJbMjFdID0gaTUgKyBpMTg7CiAgIEhFQVAz
MltpNSArIChpMTggKyA0KSA+PiAyXSA9IGk0NiB8IDE7CiAgIEhFQVAzMltpNSArIDQgPj4gMl0g
PSBpMTggfCAzOwogICBpNSA9IGk1ICsgOCB8IDA7CiAgIGJyZWFrOwogIH0KICBpZiAoIShIRUFQ
MzJbMTMzXSB8IDApKSBfaW5pdF9tcGFyYW1zKCk7CiAgaTEyID0gaTE4ICsgNDggfCAwOwogIGky
ID0gSEVBUDMyWzEzNV0gfCAwOwogIGkxMSA9IGkxOCArIDQ3IHwgMDsKICBpMyA9IGkyICsgaTEx
IHwgMDsKICBpMiA9IDAgLSBpMiB8IDA7CiAgaTEgPSBpMyAmIGkyOwogIGlmIChpMSA+Pj4gMCA+
IGkxOCA+Pj4gMCkgewogICBpOSA9IEhFQVAzMlsxMjVdIHwgMDsKICAgaWYgKChpOSB8IDApICE9
IDAgPyAoaTI4ID0gSEVBUDMyWzEyM10gfCAwLCBpMzMgPSBpMjggKyBpMSB8IDAsIGkzMyA+Pj4g
MCA8PSBpMjggPj4+IDAgfCBpMzMgPj4+IDAgPiBpOSA+Pj4gMCkgOiAwKSB7CiAgICBpNSA9IDA7
CiAgICBicmVhazsKICAgfQogICBMMjMxIDogZG8gaWYgKCEoSEVBUDMyWzEyNl0gJiA0KSkgewog
ICAgaTkgPSBIRUFQMzJbMjFdIHwgMDsKICAgIEwyMzMgOiBkbyBpZiAoaTkpIHsKICAgICBpNyA9
IDUwODsKICAgICB3aGlsZSAoMSkgewogICAgICBpOCA9IEhFQVAzMltpNyA+PiAyXSB8IDA7CiAg
ICAgIGlmIChpOCA+Pj4gMCA8PSBpOSA+Pj4gMCA/IChpMjMgPSBpNyArIDQgfCAwLCAoaTggKyAo
SEVBUDMyW2kyMyA+PiAyXSB8IDApIHwgMCkgPj4+IDAgPiBpOSA+Pj4gMCkgOiAwKSB7CiAgICAg
ICBpNSA9IGk3OwogICAgICAgaTkgPSBpMjM7CiAgICAgICBicmVhazsKICAgICAgfQogICAgICBp
NyA9IEhFQVAzMltpNyArIDggPj4gMl0gfCAwOwogICAgICBpZiAoIWk3KSB7CiAgICAgICBpNDcg
PSAxNzI7CiAgICAgICBicmVhayBMMjMzOwogICAgICB9CiAgICAgfQogICAgIGk4ID0gaTMgLSAo
SEVBUDMyWzE4XSB8IDApICYgaTI7CiAgICAgaWYgKGk4ID4+PiAwIDwgMjE0NzQ4MzY0Nykgewog
ICAgICBpNyA9IF9zYnJrKGk4IHwgMCkgfCAwOwogICAgICBpMzMgPSAoaTcgfCAwKSA9PSAoKEhF
QVAzMltpNSA+PiAyXSB8IDApICsgKEhFQVAzMltpOSA+PiAyXSB8IDApIHwgMCk7CiAgICAgIGk5
ID0gaTMzID8gaTggOiAwOwogICAgICBpZiAoaTMzKSB7CiAgICAgICBpZiAoKGk3IHwgMCkgIT0g
KC0xIHwgMCkpIHsKICAgICAgICBpMjYgPSBpNzsKICAgICAgICBpMTkgPSBpOTsKICAgICAgICBp
NDcgPSAxOTI7CiAgICAgICAgYnJlYWsgTDIzMTsKICAgICAgIH0KICAgICAgfSBlbHNlIGk0NyA9
IDE4MjsKICAgICB9IGVsc2UgaTkgPSAwOwogICAgfSBlbHNlIGk0NyA9IDE3Mjsgd2hpbGUgKDAp
OwogICAgZG8gaWYgKChpNDcgfCAwKSA9PSAxNzIpIHsKICAgICBpNSA9IF9zYnJrKDApIHwgMDsK
ICAgICBpZiAoKGk1IHwgMCkgIT0gKC0xIHwgMCkpIHsKICAgICAgaTkgPSBpNTsKICAgICAgaTgg
PSBIRUFQMzJbMTM0XSB8IDA7CiAgICAgIGk3ID0gaTggKyAtMSB8IDA7CiAgICAgIGlmICghKGk3
ICYgaTkpKSBpOCA9IGkxOyBlbHNlIGk4ID0gaTEgLSBpOSArIChpNyArIGk5ICYgMCAtIGk4KSB8
IDA7CiAgICAgIGk5ID0gSEVBUDMyWzEyM10gfCAwOwogICAgICBpNyA9IGk5ICsgaTggfCAwOwog
ICAgICBpZiAoaTggPj4+IDAgPiBpMTggPj4+IDAgJiBpOCA+Pj4gMCA8IDIxNDc0ODM2NDcpIHsK
ICAgICAgIGkzMyA9IEhFQVAzMlsxMjVdIHwgMDsKICAgICAgIGlmICgoaTMzIHwgMCkgIT0gMCA/
IGk3ID4+PiAwIDw9IGk5ID4+PiAwIHwgaTcgPj4+IDAgPiBpMzMgPj4+IDAgOiAwKSB7CiAgICAg
ICAgaTkgPSAwOwogICAgICAgIGJyZWFrOwogICAgICAgfQogICAgICAgaTcgPSBfc2JyayhpOCB8
IDApIHwgMDsKICAgICAgIGkzMyA9IChpNyB8IDApID09IChpNSB8IDApOwogICAgICAgaTkgPSBp
MzMgPyBpOCA6IDA7CiAgICAgICBpZiAoaTMzKSB7CiAgICAgICAgaTI2ID0gaTU7CiAgICAgICAg
aTE5ID0gaTk7CiAgICAgICAgaTQ3ID0gMTkyOwogICAgICAgIGJyZWFrIEwyMzE7CiAgICAgICB9
IGVsc2UgaTQ3ID0gMTgyOwogICAgICB9IGVsc2UgaTkgPSAwOwogICAgIH0gZWxzZSBpOSA9IDA7
CiAgICB9IHdoaWxlICgwKTsKICAgIEwyNTMgOiBkbyBpZiAoKGk0NyB8IDApID09IDE4Mikgewog
ICAgIGk1ID0gMCAtIGk4IHwgMDsKICAgICBkbyBpZiAoaTEyID4+PiAwID4gaTggPj4+IDAgJiAo
aTggPj4+IDAgPCAyMTQ3NDgzNjQ3ICYgKGk3IHwgMCkgIT0gKC0xIHwgMCkpID8gKGkyNyA9IEhF
QVAzMlsxMzVdIHwgMCwgaTI3ID0gaTExIC0gaTggKyBpMjcgJiAwIC0gaTI3LCBpMjcgPj4+IDAg
PCAyMTQ3NDgzNjQ3KSA6IDApIGlmICgoX3NicmsoaTI3IHwgMCkgfCAwKSA9PSAoLTEgfCAwKSkg
ewogICAgICBfc2JyayhpNSB8IDApIHwgMDsKICAgICAgYnJlYWsgTDI1MzsKICAgICB9IGVsc2Ug
ewogICAgICBpOCA9IGkyNyArIGk4IHwgMDsKICAgICAgYnJlYWs7CiAgICAgfSB3aGlsZSAoMCk7
CiAgICAgaWYgKChpNyB8IDApICE9ICgtMSB8IDApKSB7CiAgICAgIGkyNiA9IGk3OwogICAgICBp
MTkgPSBpODsKICAgICAgaTQ3ID0gMTkyOwogICAgICBicmVhayBMMjMxOwogICAgIH0KICAgIH0g
d2hpbGUgKDApOwogICAgSEVBUDMyWzEyNl0gPSBIRUFQMzJbMTI2XSB8IDQ7CiAgICBpNDcgPSAx
ODk7CiAgIH0gZWxzZSB7CiAgICBpOSA9IDA7CiAgICBpNDcgPSAxODk7CiAgIH0gd2hpbGUgKDAp
OwogICBpZiAoKCgoaTQ3IHwgMCkgPT0gMTg5ID8gaTEgPj4+IDAgPCAyMTQ3NDgzNjQ3IDogMCkg
PyAoaTI5ID0gX3NicmsoaTEgfCAwKSB8IDAsIGkzMCA9IF9zYnJrKDApIHwgMCwgaTI5ID4+PiAw
IDwgaTMwID4+PiAwICYgKChpMjkgfCAwKSAhPSAoLTEgfCAwKSAmIChpMzAgfCAwKSAhPSAoLTEg
fCAwKSkpIDogMCkgPyAoaTMxID0gaTMwIC0gaTI5IHwgMCwgaTMyID0gaTMxID4+PiAwID4gKGkx
OCArIDQwIHwgMCkgPj4+IDAsIGkzMikgOiAwKSB7CiAgICBpMjYgPSBpMjk7CiAgICBpMTkgPSBp
MzIgPyBpMzEgOiBpOTsKICAgIGk0NyA9IDE5MjsKICAgfQogICBpZiAoKGk0NyB8IDApID09IDE5
MikgewogICAgaTggPSAoSEVBUDMyWzEyM10gfCAwKSArIGkxOSB8IDA7CiAgICBIRUFQMzJbMTIz
XSA9IGk4OwogICAgaWYgKGk4ID4+PiAwID4gKEhFQVAzMlsxMjRdIHwgMCkgPj4+IDApIEhFQVAz
MlsxMjRdID0gaTg7CiAgICBpMTYgPSBIRUFQMzJbMjFdIHwgMDsKICAgIEwyNzIgOiBkbyBpZiAo
aTE2KSB7CiAgICAgaTUgPSA1MDg7CiAgICAgZG8gewogICAgICBpOSA9IEhFQVAzMltpNSA+PiAy
XSB8IDA7CiAgICAgIGk4ID0gaTUgKyA0IHwgMDsKICAgICAgaTcgPSBIRUFQMzJbaTggPj4gMl0g
fCAwOwogICAgICBpZiAoKGkyNiB8IDApID09IChpOSArIGk3IHwgMCkpIHsKICAgICAgIGkzNCA9
IGk5OwogICAgICAgaTM1ID0gaTg7CiAgICAgICBpMzYgPSBpNzsKICAgICAgIGkzNyA9IGk1Owog
ICAgICAgaTQ3ID0gMjAyOwogICAgICAgYnJlYWs7CiAgICAgIH0KICAgICAgaTUgPSBIRUFQMzJb
aTUgKyA4ID4+IDJdIHwgMDsKICAgICB9IHdoaWxlICgoaTUgfCAwKSAhPSAwKTsKICAgICBpZiAo
KChpNDcgfCAwKSA9PSAyMDIgPyAoSEVBUDMyW2kzNyArIDEyID4+IDJdICYgOCB8IDApID09IDAg
OiAwKSA/IGkxNiA+Pj4gMCA8IGkyNiA+Pj4gMCAmIGkxNiA+Pj4gMCA+PSBpMzQgPj4+IDAgOiAw
KSB7CiAgICAgIEhFQVAzMltpMzUgPj4gMl0gPSBpMzYgKyBpMTk7CiAgICAgIGk0NiA9IChIRUFQ
MzJbMThdIHwgMCkgKyBpMTkgfCAwOwogICAgICBpNDUgPSBpMTYgKyA4IHwgMDsKICAgICAgaTQ1
ID0gKGk0NSAmIDcgfCAwKSA9PSAwID8gMCA6IDAgLSBpNDUgJiA3OwogICAgICBpNDQgPSBpNDYg
LSBpNDUgfCAwOwogICAgICBIRUFQMzJbMjFdID0gaTE2ICsgaTQ1OwogICAgICBIRUFQMzJbMThd
ID0gaTQ0OwogICAgICBIRUFQMzJbaTE2ICsgKGk0NSArIDQpID4+IDJdID0gaTQ0IHwgMTsKICAg
ICAgSEVBUDMyW2kxNiArIChpNDYgKyA0KSA+PiAyXSA9IDQwOwogICAgICBIRUFQMzJbMjJdID0g
SEVBUDMyWzEzN107CiAgICAgIGJyZWFrOwogICAgIH0KICAgICBpOCA9IEhFQVAzMlsxOV0gfCAw
OwogICAgIGlmIChpMjYgPj4+IDAgPCBpOCA+Pj4gMCkgewogICAgICBIRUFQMzJbMTldID0gaTI2
OwogICAgICBpOCA9IGkyNjsKICAgICB9CiAgICAgaTcgPSBpMjYgKyBpMTkgfCAwOwogICAgIGk5
ID0gNTA4OwogICAgIHdoaWxlICgxKSB7CiAgICAgIGlmICgoSEVBUDMyW2k5ID4+IDJdIHwgMCkg
PT0gKGk3IHwgMCkpIHsKICAgICAgIGk1ID0gaTk7CiAgICAgICBpNyA9IGk5OwogICAgICAgaTQ3
ID0gMjEwOwogICAgICAgYnJlYWs7CiAgICAgIH0KICAgICAgaTkgPSBIRUFQMzJbaTkgKyA4ID4+
IDJdIHwgMDsKICAgICAgaWYgKCFpOSkgewogICAgICAgaTcgPSA1MDg7CiAgICAgICBicmVhazsK
ICAgICAgfQogICAgIH0KICAgICBpZiAoKGk0NyB8IDApID09IDIxMCkgaWYgKCEoSEVBUDMyW2k3
ICsgMTIgPj4gMl0gJiA4KSkgewogICAgICBIRUFQMzJbaTUgPj4gMl0gPSBpMjY7CiAgICAgIGkx
NCA9IGk3ICsgNCB8IDA7CiAgICAgIEhFQVAzMltpMTQgPj4gMl0gPSAoSEVBUDMyW2kxNCA+PiAy
XSB8IDApICsgaTE5OwogICAgICBpMTQgPSBpMjYgKyA4IHwgMDsKICAgICAgaTE0ID0gKGkxNCAm
IDcgfCAwKSA9PSAwID8gMCA6IDAgLSBpMTQgJiA3OwogICAgICBpMTEgPSBpMjYgKyAoaTE5ICsg
OCkgfCAwOwogICAgICBpMTEgPSAoaTExICYgNyB8IDApID09IDAgPyAwIDogMCAtIGkxMSAmIDc7
CiAgICAgIGk3ID0gaTI2ICsgKGkxMSArIGkxOSkgfCAwOwogICAgICBpMTUgPSBpMTQgKyBpMTgg
fCAwOwogICAgICBpMTMgPSBpMjYgKyBpMTUgfCAwOwogICAgICBpOSA9IGk3IC0gKGkyNiArIGkx
NCkgLSBpMTggfCAwOwogICAgICBIRUFQMzJbaTI2ICsgKGkxNCArIDQpID4+IDJdID0gaTE4IHwg
MzsKICAgICAgTDI5NyA6IGRvIGlmICgoaTcgfCAwKSAhPSAoaTE2IHwgMCkpIHsKICAgICAgIGlm
ICgoaTcgfCAwKSA9PSAoSEVBUDMyWzIwXSB8IDApKSB7CiAgICAgICAgaTQ2ID0gKEhFQVAzMlsx
N10gfCAwKSArIGk5IHwgMDsKICAgICAgICBIRUFQMzJbMTddID0gaTQ2OwogICAgICAgIEhFQVAz
MlsyMF0gPSBpMTM7CiAgICAgICAgSEVBUDMyW2kyNiArIChpMTUgKyA0KSA+PiAyXSA9IGk0NiB8
IDE7CiAgICAgICAgSEVBUDMyW2kyNiArIChpNDYgKyBpMTUpID4+IDJdID0gaTQ2OwogICAgICAg
IGJyZWFrOwogICAgICAgfQogICAgICAgaTEgPSBpMTkgKyA0IHwgMDsKICAgICAgIGk2ID0gSEVB
UDMyW2kyNiArIChpMSArIGkxMSkgPj4gMl0gfCAwOwogICAgICAgaWYgKChpNiAmIDMgfCAwKSA9
PSAxKSB7CiAgICAgICAgaTEwID0gaTYgJiAtODsKICAgICAgICBpMyA9IGk2ID4+PiAzOwogICAg
ICAgIEwzMDUgOiBkbyBpZiAoaTYgPj4+IDAgPj0gMjU2KSB7CiAgICAgICAgIGkyID0gSEVBUDMy
W2kyNiArICgoaTExIHwgMjQpICsgaTE5KSA+PiAyXSB8IDA7CiAgICAgICAgIGk1ID0gSEVBUDMy
W2kyNiArIChpMTkgKyAxMiArIGkxMSkgPj4gMl0gfCAwOwogICAgICAgICBMMzI0IDogZG8gaWYg
KChpNSB8IDApID09IChpNyB8IDApKSB7CiAgICAgICAgICBpNCA9IGkxMSB8IDE2OwogICAgICAg
ICAgaTUgPSBpMjYgKyAoaTEgKyBpNCkgfCAwOwogICAgICAgICAgaTYgPSBIRUFQMzJbaTUgPj4g
Ml0gfCAwOwogICAgICAgICAgaWYgKCFpNikgewogICAgICAgICAgIGk1ID0gaTI2ICsgKGk0ICsg
aTE5KSB8IDA7CiAgICAgICAgICAgaTYgPSBIRUFQMzJbaTUgPj4gMl0gfCAwOwogICAgICAgICAg
IGlmICghaTYpIHsKICAgICAgICAgICAgaTQzID0gMDsKICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgICBpNCA9
IGk2ICsgMjAgfCAwOwogICAgICAgICAgIGkzID0gSEVBUDMyW2k0ID4+IDJdIHwgMDsKICAgICAg
ICAgICBpZiAoaTMpIHsKICAgICAgICAgICAgaTYgPSBpMzsKICAgICAgICAgICAgaTUgPSBpNDsK
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgfQogICAgICAgICAgIGk0ID0gaTYgKyAx
NiB8IDA7CiAgICAgICAgICAgaTMgPSBIRUFQMzJbaTQgPj4gMl0gfCAwOwogICAgICAgICAgIGlm
ICghaTMpIGJyZWFrOyBlbHNlIHsKICAgICAgICAgICAgaTYgPSBpMzsKICAgICAgICAgICAgaTUg
PSBpNDsKICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICBpZiAoaTUgPj4+IDAgPCBp
OCA+Pj4gMCkgX2Fib3J0KCk7IGVsc2UgewogICAgICAgICAgIEhFQVAzMltpNSA+PiAyXSA9IDA7
CiAgICAgICAgICAgaTQzID0gaTY7CiAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICB9CiAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICBpNCA9IEhFQVAzMltpMjYgKyAoKGkxMSB8IDgpICsgaTE5
KSA+PiAyXSB8IDA7CiAgICAgICAgICBkbyBpZiAoaTQgPj4+IDAgPj0gaTggPj4+IDApIHsKICAg
ICAgICAgICBpOCA9IGk0ICsgMTIgfCAwOwogICAgICAgICAgIGlmICgoSEVBUDMyW2k4ID4+IDJd
IHwgMCkgIT0gKGk3IHwgMCkpIGJyZWFrOwogICAgICAgICAgIGk2ID0gaTUgKyA4IHwgMDsKICAg
ICAgICAgICBpZiAoKEhFQVAzMltpNiA+PiAyXSB8IDApICE9IChpNyB8IDApKSBicmVhazsKICAg
ICAgICAgICBIRUFQMzJbaTggPj4gMl0gPSBpNTsKICAgICAgICAgICBIRUFQMzJbaTYgPj4gMl0g
PSBpNDsKICAgICAgICAgICBpNDMgPSBpNTsKICAgICAgICAgICBicmVhayBMMzI0OwogICAgICAg
ICAgfSB3aGlsZSAoMCk7CiAgICAgICAgICBfYWJvcnQoKTsKICAgICAgICAgfSB3aGlsZSAoMCk7
CiAgICAgICAgIGlmICghaTIpIGJyZWFrOwogICAgICAgICBpOCA9IEhFQVAzMltpMjYgKyAoaTE5
ICsgMjggKyBpMTEpID4+IDJdIHwgMDsKICAgICAgICAgaTYgPSAzNjQgKyAoaTggPDwgMikgfCAw
OwogICAgICAgICBkbyBpZiAoKGk3IHwgMCkgIT0gKEhFQVAzMltpNiA+PiAyXSB8IDApKSB7CiAg
ICAgICAgICBpZiAoaTIgPj4+IDAgPCAoSEVBUDMyWzE5XSB8IDApID4+PiAwKSBfYWJvcnQoKTsK
ICAgICAgICAgIGk2ID0gaTIgKyAxNiB8IDA7CiAgICAgICAgICBpZiAoKEhFQVAzMltpNiA+PiAy
XSB8IDApID09IChpNyB8IDApKSBIRUFQMzJbaTYgPj4gMl0gPSBpNDM7IGVsc2UgSEVBUDMyW2ky
ICsgMjAgPj4gMl0gPSBpNDM7CiAgICAgICAgICBpZiAoIWk0MykgYnJlYWsgTDMwNTsKICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgIEhFQVAzMltpNiA+PiAyXSA9IGk0MzsKICAgICAgICAgIGlm
IChpNDMpIGJyZWFrOwogICAgICAgICAgSEVBUDMyWzE2XSA9IEhFQVAzMlsxNl0gJiB+KDEgPDwg
aTgpOwogICAgICAgICAgYnJlYWsgTDMwNTsKICAgICAgICAgfSB3aGlsZSAoMCk7CiAgICAgICAg
IGk4ID0gSEVBUDMyWzE5XSB8IDA7CiAgICAgICAgIGlmIChpNDMgPj4+IDAgPCBpOCA+Pj4gMCkg
X2Fib3J0KCk7CiAgICAgICAgIEhFQVAzMltpNDMgKyAyNCA+PiAyXSA9IGkyOwogICAgICAgICBp
NyA9IGkxMSB8IDE2OwogICAgICAgICBpNiA9IEhFQVAzMltpMjYgKyAoaTcgKyBpMTkpID4+IDJd
IHwgMDsKICAgICAgICAgZG8gaWYgKGk2KSBpZiAoaTYgPj4+IDAgPCBpOCA+Pj4gMCkgX2Fib3J0
KCk7IGVsc2UgewogICAgICAgICAgSEVBUDMyW2k0MyArIDE2ID4+IDJdID0gaTY7CiAgICAgICAg
ICBIRUFQMzJbaTYgKyAyNCA+PiAyXSA9IGk0MzsKICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
IHdoaWxlICgwKTsKICAgICAgICAgaTcgPSBIRUFQMzJbaTI2ICsgKGkxICsgaTcpID4+IDJdIHwg
MDsKICAgICAgICAgaWYgKCFpNykgYnJlYWs7CiAgICAgICAgIGlmIChpNyA+Pj4gMCA8IChIRUFQ
MzJbMTldIHwgMCkgPj4+IDApIF9hYm9ydCgpOyBlbHNlIHsKICAgICAgICAgIEhFQVAzMltpNDMg
KyAyMCA+PiAyXSA9IGk3OwogICAgICAgICAgSEVBUDMyW2k3ICsgMjQgPj4gMl0gPSBpNDM7CiAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgIGk2ID0g
SEVBUDMyW2kyNiArICgoaTExIHwgOCkgKyBpMTkpID4+IDJdIHwgMDsKICAgICAgICAgaTUgPSBI
RUFQMzJbaTI2ICsgKGkxOSArIDEyICsgaTExKSA+PiAyXSB8IDA7CiAgICAgICAgIGk0ID0gMTAw
ICsgKGkzIDw8IDEgPDwgMikgfCAwOwogICAgICAgICBkbyBpZiAoKGk2IHwgMCkgIT0gKGk0IHwg
MCkpIHsKICAgICAgICAgIGlmIChpNiA+Pj4gMCA+PSBpOCA+Pj4gMCA/IChIRUFQMzJbaTYgKyAx
MiA+PiAyXSB8IDApID09IChpNyB8IDApIDogMCkgYnJlYWs7CiAgICAgICAgICBfYWJvcnQoKTsK
ICAgICAgICAgfSB3aGlsZSAoMCk7CiAgICAgICAgIGlmICgoaTUgfCAwKSA9PSAoaTYgfCAwKSkg
ewogICAgICAgICAgSEVBUDMyWzE1XSA9IEhFQVAzMlsxNV0gJiB+KDEgPDwgaTMpOwogICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgZG8gaWYgKChpNSB8IDApID09IChpNCB8IDAp
KSBpMzggPSBpNSArIDggfCAwOyBlbHNlIHsKICAgICAgICAgIGlmIChpNSA+Pj4gMCA+PSBpOCA+
Pj4gMCA/IChpMzkgPSBpNSArIDggfCAwLCAoSEVBUDMyW2kzOSA+PiAyXSB8IDApID09IChpNyB8
IDApKSA6IDApIHsKICAgICAgICAgICBpMzggPSBpMzk7CiAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICB9CiAgICAgICAgICBfYWJvcnQoKTsKICAgICAgICAgfSB3aGlsZSAoMCk7CiAgICAgICAg
IEhFQVAzMltpNiArIDEyID4+IDJdID0gaTU7CiAgICAgICAgIEhFQVAzMltpMzggPj4gMl0gPSBp
NjsKICAgICAgICB9IHdoaWxlICgwKTsKICAgICAgICBpNyA9IGkyNiArICgoaTEwIHwgaTExKSAr
IGkxOSkgfCAwOwogICAgICAgIGk5ID0gaTEwICsgaTkgfCAwOwogICAgICAgfQogICAgICAgaTcg
PSBpNyArIDQgfCAwOwogICAgICAgSEVBUDMyW2k3ID4+IDJdID0gSEVBUDMyW2k3ID4+IDJdICYg
LTI7CiAgICAgICBIRUFQMzJbaTI2ICsgKGkxNSArIDQpID4+IDJdID0gaTkgfCAxOwogICAgICAg
SEVBUDMyW2kyNiArIChpOSArIGkxNSkgPj4gMl0gPSBpOTsKICAgICAgIGk3ID0gaTkgPj4+IDM7
CiAgICAgICBpZiAoaTkgPj4+IDAgPCAyNTYpIHsKICAgICAgICBpNSA9IGk3IDw8IDE7CiAgICAg
ICAgaTMgPSAxMDAgKyAoaTUgPDwgMikgfCAwOwogICAgICAgIGk0ID0gSEVBUDMyWzE1XSB8IDA7
CiAgICAgICAgaTYgPSAxIDw8IGk3OwogICAgICAgIGRvIGlmICghKGk0ICYgaTYpKSB7CiAgICAg
ICAgIEhFQVAzMlsxNV0gPSBpNCB8IGk2OwogICAgICAgICBpNDQgPSAxMDAgKyAoaTUgKyAyIDw8
IDIpIHwgMDsKICAgICAgICAgaTQ1ID0gaTM7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgaTYg
PSAxMDAgKyAoaTUgKyAyIDw8IDIpIHwgMDsKICAgICAgICAgaTUgPSBIRUFQMzJbaTYgPj4gMl0g
fCAwOwogICAgICAgICBpZiAoaTUgPj4+IDAgPj0gKEhFQVAzMlsxOV0gfCAwKSA+Pj4gMCkgewog
ICAgICAgICAgaTQ0ID0gaTY7CiAgICAgICAgICBpNDUgPSBpNTsKICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIF9hYm9ydCgpOwogICAgICAgIH0gd2hpbGUgKDApOwogICAgICAg
IEhFQVAzMltpNDQgPj4gMl0gPSBpMTM7CiAgICAgICAgSEVBUDMyW2k0NSArIDEyID4+IDJdID0g
aTEzOwogICAgICAgIEhFQVAzMltpMjYgKyAoaTE1ICsgOCkgPj4gMl0gPSBpNDU7CiAgICAgICAg
SEVBUDMyW2kyNiArIChpMTUgKyAxMikgPj4gMl0gPSBpMzsKICAgICAgICBicmVhazsKICAgICAg
IH0KICAgICAgIGkyID0gaTkgPj4+IDg7CiAgICAgICBkbyBpZiAoIWkyKSBpNyA9IDA7IGVsc2Ug
ewogICAgICAgIGlmIChpOSA+Pj4gMCA+IDE2Nzc3MjE1KSB7CiAgICAgICAgIGk3ID0gMzE7CiAg
ICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICBpNDQgPSAoaTIgKyAxMDQ4MzIwIHwgMCkg
Pj4+IDE2ICYgODsKICAgICAgICBpNDUgPSBpMiA8PCBpNDQ7CiAgICAgICAgaTQzID0gKGk0NSAr
IDUyMDE5MiB8IDApID4+PiAxNiAmIDQ7CiAgICAgICAgaTQ1ID0gaTQ1IDw8IGk0MzsKICAgICAg
ICBpNyA9IChpNDUgKyAyNDU3NjAgfCAwKSA+Pj4gMTYgJiAyOwogICAgICAgIGk3ID0gMTQgLSAo
aTQzIHwgaTQ0IHwgaTcpICsgKGk0NSA8PCBpNyA+Pj4gMTUpIHwgMDsKICAgICAgICBpNyA9IGk5
ID4+PiAoaTcgKyA3IHwgMCkgJiAxIHwgaTcgPDwgMTsKICAgICAgIH0gd2hpbGUgKDApOwogICAg
ICAgaTYgPSAzNjQgKyAoaTcgPDwgMikgfCAwOwogICAgICAgSEVBUDMyW2kyNiArIChpMTUgKyAy
OCkgPj4gMl0gPSBpNzsKICAgICAgIEhFQVAzMltpMjYgKyAoaTE1ICsgMjApID4+IDJdID0gMDsK
ICAgICAgIEhFQVAzMltpMjYgKyAoaTE1ICsgMTYpID4+IDJdID0gMDsKICAgICAgIGk1ID0gSEVB
UDMyWzE2XSB8IDA7CiAgICAgICBpNCA9IDEgPDwgaTc7CiAgICAgICBpZiAoIShpNSAmIGk0KSkg
ewogICAgICAgIEhFQVAzMlsxNl0gPSBpNSB8IGk0OwogICAgICAgIEhFQVAzMltpNiA+PiAyXSA9
IGkxMzsKICAgICAgICBIRUFQMzJbaTI2ICsgKGkxNSArIDI0KSA+PiAyXSA9IGk2OwogICAgICAg
IEhFQVAzMltpMjYgKyAoaTE1ICsgMTIpID4+IDJdID0gaTEzOwogICAgICAgIEhFQVAzMltpMjYg
KyAoaTE1ICsgOCkgPj4gMl0gPSBpMTM7CiAgICAgICAgYnJlYWs7CiAgICAgICB9CiAgICAgICBp
MiA9IEhFQVAzMltpNiA+PiAyXSB8IDA7CiAgICAgICBMMzg1IDogZG8gaWYgKChIRUFQMzJbaTIg
KyA0ID4+IDJdICYgLTggfCAwKSAhPSAoaTkgfCAwKSkgewogICAgICAgIGk3ID0gaTkgPDwgKChp
NyB8IDApID09IDMxID8gMCA6IDI1IC0gKGk3ID4+PiAxKSB8IDApOwogICAgICAgIHdoaWxlICgx
KSB7CiAgICAgICAgIGkxID0gaTIgKyAxNiArIChpNyA+Pj4gMzEgPDwgMikgfCAwOwogICAgICAg
ICBpNiA9IEhFQVAzMltpMSA+PiAyXSB8IDA7CiAgICAgICAgIGlmICghaTYpIGJyZWFrOwogICAg
ICAgICBpZiAoKEhFQVAzMltpNiArIDQgPj4gMl0gJiAtOCB8IDApID09IChpOSB8IDApKSB7CiAg
ICAgICAgICBpNDYgPSBpNjsKICAgICAgICAgIGJyZWFrIEwzODU7CiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICBpNyA9IGk3IDw8IDE7CiAgICAgICAgICBpMiA9IGk2OwogICAgICAgICB9CiAg
ICAgICAgfQogICAgICAgIGlmIChpMSA+Pj4gMCA8IChIRUFQMzJbMTldIHwgMCkgPj4+IDApIF9h
Ym9ydCgpOyBlbHNlIHsKICAgICAgICAgSEVBUDMyW2kxID4+IDJdID0gaTEzOwogICAgICAgICBI
RUFQMzJbaTI2ICsgKGkxNSArIDI0KSA+PiAyXSA9IGkyOwogICAgICAgICBIRUFQMzJbaTI2ICsg
KGkxNSArIDEyKSA+PiAyXSA9IGkxMzsKICAgICAgICAgSEVBUDMyW2kyNiArIChpMTUgKyA4KSA+
PiAyXSA9IGkxMzsKICAgICAgICAgYnJlYWsgTDI5NzsKICAgICAgICB9CiAgICAgICB9IGVsc2Ug
aTQ2ID0gaTI7IHdoaWxlICgwKTsKICAgICAgIGkyID0gaTQ2ICsgOCB8IDA7CiAgICAgICBpMSA9
IEhFQVAzMltpMiA+PiAyXSB8IDA7CiAgICAgICBpNDUgPSBIRUFQMzJbMTldIHwgMDsKICAgICAg
IGlmIChpMSA+Pj4gMCA+PSBpNDUgPj4+IDAgJiBpNDYgPj4+IDAgPj0gaTQ1ID4+PiAwKSB7CiAg
ICAgICAgSEVBUDMyW2kxICsgMTIgPj4gMl0gPSBpMTM7CiAgICAgICAgSEVBUDMyW2kyID4+IDJd
ID0gaTEzOwogICAgICAgIEhFQVAzMltpMjYgKyAoaTE1ICsgOCkgPj4gMl0gPSBpMTsKICAgICAg
ICBIRUFQMzJbaTI2ICsgKGkxNSArIDEyKSA+PiAyXSA9IGk0NjsKICAgICAgICBIRUFQMzJbaTI2
ICsgKGkxNSArIDI0KSA+PiAyXSA9IDA7CiAgICAgICAgYnJlYWs7CiAgICAgICB9IGVsc2UgX2Fi
b3J0KCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICBpNDYgPSAoSEVBUDMyWzE4XSB8IDApICsgaTkg
fCAwOwogICAgICAgSEVBUDMyWzE4XSA9IGk0NjsKICAgICAgIEhFQVAzMlsyMV0gPSBpMTM7CiAg
ICAgICBIRUFQMzJbaTI2ICsgKGkxNSArIDQpID4+IDJdID0gaTQ2IHwgMTsKICAgICAgfSB3aGls
ZSAoMCk7CiAgICAgIGk1ID0gaTI2ICsgKGkxNCB8IDgpIHwgMDsKICAgICAgYnJlYWsgTDIxMjsK
ICAgICB9IGVsc2UgaTcgPSA1MDg7CiAgICAgd2hpbGUgKDEpIHsKICAgICAgaTUgPSBIRUFQMzJb
aTcgPj4gMl0gfCAwOwogICAgICBpZiAoaTUgPj4+IDAgPD0gaTE2ID4+PiAwID8gKGk2ID0gSEVB
UDMyW2k3ICsgNCA+PiAyXSB8IDAsIGk0ID0gaTUgKyBpNiB8IDAsIGk0ID4+PiAwID4gaTE2ID4+
PiAwKSA6IDApIGJyZWFrOwogICAgICBpNyA9IEhFQVAzMltpNyArIDggPj4gMl0gfCAwOwogICAg
IH0KICAgICBpNyA9IGk1ICsgKGk2ICsgLTM5KSB8IDA7CiAgICAgaTcgPSBpNSArIChpNiArIC00
NyArICgoaTcgJiA3IHwgMCkgPT0gMCA/IDAgOiAwIC0gaTcgJiA3KSkgfCAwOwogICAgIGk4ID0g
aTE2ICsgMTYgfCAwOwogICAgIGk3ID0gaTcgPj4+IDAgPCBpOCA+Pj4gMCA/IGkxNiA6IGk3Owog
ICAgIGk2ID0gaTcgKyA4IHwgMDsKICAgICBpNSA9IGkyNiArIDggfCAwOwogICAgIGk1ID0gKGk1
ICYgNyB8IDApID09IDAgPyAwIDogMCAtIGk1ICYgNzsKICAgICBpNDYgPSBpMTkgKyAtNDAgLSBp
NSB8IDA7CiAgICAgSEVBUDMyWzIxXSA9IGkyNiArIGk1OwogICAgIEhFQVAzMlsxOF0gPSBpNDY7
CiAgICAgSEVBUDMyW2kyNiArIChpNSArIDQpID4+IDJdID0gaTQ2IHwgMTsKICAgICBIRUFQMzJb
aTI2ICsgKGkxOSArIC0zNikgPj4gMl0gPSA0MDsKICAgICBIRUFQMzJbMjJdID0gSEVBUDMyWzEz
N107CiAgICAgaTUgPSBpNyArIDQgfCAwOwogICAgIEhFQVAzMltpNSA+PiAyXSA9IDI3OwogICAg
IEhFQVAzMltpNiA+PiAyXSA9IEhFQVAzMlsxMjddOwogICAgIEhFQVAzMltpNiArIDQgPj4gMl0g
PSBIRUFQMzJbMTI4XTsKICAgICBIRUFQMzJbaTYgKyA4ID4+IDJdID0gSEVBUDMyWzEyOV07CiAg
ICAgSEVBUDMyW2k2ICsgMTIgPj4gMl0gPSBIRUFQMzJbMTMwXTsKICAgICBIRUFQMzJbMTI3XSA9
IGkyNjsKICAgICBIRUFQMzJbMTI4XSA9IGkxOTsKICAgICBIRUFQMzJbMTMwXSA9IDA7CiAgICAg
SEVBUDMyWzEyOV0gPSBpNjsKICAgICBpNiA9IGk3ICsgMjggfCAwOwogICAgIEhFQVAzMltpNiA+
PiAyXSA9IDc7CiAgICAgaWYgKChpNyArIDMyIHwgMCkgPj4+IDAgPCBpNCA+Pj4gMCkgZG8gewog
ICAgICBpNDYgPSBpNjsKICAgICAgaTYgPSBpNiArIDQgfCAwOwogICAgICBIRUFQMzJbaTYgPj4g
Ml0gPSA3OwogICAgIH0gd2hpbGUgKChpNDYgKyA4IHwgMCkgPj4+IDAgPCBpNCA+Pj4gMCk7CiAg
ICAgaWYgKChpNyB8IDApICE9IChpMTYgfCAwKSkgewogICAgICBpOSA9IGk3IC0gaTE2IHwgMDsK
ICAgICAgSEVBUDMyW2k1ID4+IDJdID0gSEVBUDMyW2k1ID4+IDJdICYgLTI7CiAgICAgIEhFQVAz
MltpMTYgKyA0ID4+IDJdID0gaTkgfCAxOwogICAgICBIRUFQMzJbaTcgPj4gMl0gPSBpOTsKICAg
ICAgaTQgPSBpOSA+Pj4gMzsKICAgICAgaWYgKGk5ID4+PiAwIDwgMjU2KSB7CiAgICAgICBpNiA9
IGk0IDw8IDE7CiAgICAgICBpNyA9IDEwMCArIChpNiA8PCAyKSB8IDA7CiAgICAgICBpNSA9IEhF
QVAzMlsxNV0gfCAwOwogICAgICAgaTMgPSAxIDw8IGk0OwogICAgICAgaWYgKGk1ICYgaTMpIHsK
ICAgICAgICBpMiA9IDEwMCArIChpNiArIDIgPDwgMikgfCAwOwogICAgICAgIGkxID0gSEVBUDMy
W2kyID4+IDJdIHwgMDsKICAgICAgICBpZiAoaTEgPj4+IDAgPCAoSEVBUDMyWzE5XSB8IDApID4+
PiAwKSBfYWJvcnQoKTsgZWxzZSB7CiAgICAgICAgIGk0MCA9IGkyOwogICAgICAgICBpNDEgPSBp
MTsKICAgICAgICB9CiAgICAgICB9IGVsc2UgewogICAgICAgIEhFQVAzMlsxNV0gPSBpNSB8IGkz
OwogICAgICAgIGk0MCA9IDEwMCArIChpNiArIDIgPDwgMikgfCAwOwogICAgICAgIGk0MSA9IGk3
OwogICAgICAgfQogICAgICAgSEVBUDMyW2k0MCA+PiAyXSA9IGkxNjsKICAgICAgIEhFQVAzMltp
NDEgKyAxMiA+PiAyXSA9IGkxNjsKICAgICAgIEhFQVAzMltpMTYgKyA4ID4+IDJdID0gaTQxOwog
ICAgICAgSEVBUDMyW2kxNiArIDEyID4+IDJdID0gaTc7CiAgICAgICBicmVhazsKICAgICAgfQog
ICAgICBpMiA9IGk5ID4+PiA4OwogICAgICBpZiAoaTIpIGlmIChpOSA+Pj4gMCA+IDE2Nzc3MjE1
KSBpNiA9IDMxOyBlbHNlIHsKICAgICAgIGk0NSA9IChpMiArIDEwNDgzMjAgfCAwKSA+Pj4gMTYg
JiA4OwogICAgICAgaTQ2ID0gaTIgPDwgaTQ1OwogICAgICAgaTQ0ID0gKGk0NiArIDUyMDE5MiB8
IDApID4+PiAxNiAmIDQ7CiAgICAgICBpNDYgPSBpNDYgPDwgaTQ0OwogICAgICAgaTYgPSAoaTQ2
ICsgMjQ1NzYwIHwgMCkgPj4+IDE2ICYgMjsKICAgICAgIGk2ID0gMTQgLSAoaTQ0IHwgaTQ1IHwg
aTYpICsgKGk0NiA8PCBpNiA+Pj4gMTUpIHwgMDsKICAgICAgIGk2ID0gaTkgPj4+IChpNiArIDcg
fCAwKSAmIDEgfCBpNiA8PCAxOwogICAgICB9IGVsc2UgaTYgPSAwOwogICAgICBpMyA9IDM2NCAr
IChpNiA8PCAyKSB8IDA7CiAgICAgIEhFQVAzMltpMTYgKyAyOCA+PiAyXSA9IGk2OwogICAgICBI
RUFQMzJbaTE2ICsgMjAgPj4gMl0gPSAwOwogICAgICBIRUFQMzJbaTggPj4gMl0gPSAwOwogICAg
ICBpMiA9IEhFQVAzMlsxNl0gfCAwOwogICAgICBpMSA9IDEgPDwgaTY7CiAgICAgIGlmICghKGky
ICYgaTEpKSB7CiAgICAgICBIRUFQMzJbMTZdID0gaTIgfCBpMTsKICAgICAgIEhFQVAzMltpMyA+
PiAyXSA9IGkxNjsKICAgICAgIEhFQVAzMltpMTYgKyAyNCA+PiAyXSA9IGkzOwogICAgICAgSEVB
UDMyW2kxNiArIDEyID4+IDJdID0gaTE2OwogICAgICAgSEVBUDMyW2kxNiArIDggPj4gMl0gPSBp
MTY7CiAgICAgICBicmVhazsKICAgICAgfQogICAgICBpMiA9IEhFQVAzMltpMyA+PiAyXSB8IDA7
CiAgICAgIEw0MjUgOiBkbyBpZiAoKEhFQVAzMltpMiArIDQgPj4gMl0gJiAtOCB8IDApICE9IChp
OSB8IDApKSB7CiAgICAgICBpNiA9IGk5IDw8ICgoaTYgfCAwKSA9PSAzMSA/IDAgOiAyNSAtIChp
NiA+Pj4gMSkgfCAwKTsKICAgICAgIHdoaWxlICgxKSB7CiAgICAgICAgaTEgPSBpMiArIDE2ICsg
KGk2ID4+PiAzMSA8PCAyKSB8IDA7CiAgICAgICAgaTMgPSBIRUFQMzJbaTEgPj4gMl0gfCAwOwog
ICAgICAgIGlmICghaTMpIGJyZWFrOwogICAgICAgIGlmICgoSEVBUDMyW2kzICsgNCA+PiAyXSAm
IC04IHwgMCkgPT0gKGk5IHwgMCkpIHsKICAgICAgICAgaTQyID0gaTM7CiAgICAgICAgIGJyZWFr
IEw0MjU7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgaTYgPSBpNiA8PCAxOwogICAgICAgICBp
MiA9IGkzOwogICAgICAgIH0KICAgICAgIH0KICAgICAgIGlmIChpMSA+Pj4gMCA8IChIRUFQMzJb
MTldIHwgMCkgPj4+IDApIF9hYm9ydCgpOyBlbHNlIHsKICAgICAgICBIRUFQMzJbaTEgPj4gMl0g
PSBpMTY7CiAgICAgICAgSEVBUDMyW2kxNiArIDI0ID4+IDJdID0gaTI7CiAgICAgICAgSEVBUDMy
W2kxNiArIDEyID4+IDJdID0gaTE2OwogICAgICAgIEhFQVAzMltpMTYgKyA4ID4+IDJdID0gaTE2
OwogICAgICAgIGJyZWFrIEwyNzI7CiAgICAgICB9CiAgICAgIH0gZWxzZSBpNDIgPSBpMjsgd2hp
bGUgKDApOwogICAgICBpMiA9IGk0MiArIDggfCAwOwogICAgICBpMSA9IEhFQVAzMltpMiA+PiAy
XSB8IDA7CiAgICAgIGk0NiA9IEhFQVAzMlsxOV0gfCAwOwogICAgICBpZiAoaTEgPj4+IDAgPj0g
aTQ2ID4+PiAwICYgaTQyID4+PiAwID49IGk0NiA+Pj4gMCkgewogICAgICAgSEVBUDMyW2kxICsg
MTIgPj4gMl0gPSBpMTY7CiAgICAgICBIRUFQMzJbaTIgPj4gMl0gPSBpMTY7CiAgICAgICBIRUFQ
MzJbaTE2ICsgOCA+PiAyXSA9IGkxOwogICAgICAgSEVBUDMyW2kxNiArIDEyID4+IDJdID0gaTQy
OwogICAgICAgSEVBUDMyW2kxNiArIDI0ID4+IDJdID0gMDsKICAgICAgIGJyZWFrOwogICAgICB9
IGVsc2UgX2Fib3J0KCk7CiAgICAgfQogICAgfSBlbHNlIHsKICAgICBpNDYgPSBIRUFQMzJbMTld
IHwgMDsKICAgICBpZiAoKGk0NiB8IDApID09IDAgfCBpMjYgPj4+IDAgPCBpNDYgPj4+IDApIEhF
QVAzMlsxOV0gPSBpMjY7CiAgICAgSEVBUDMyWzEyN10gPSBpMjY7CiAgICAgSEVBUDMyWzEyOF0g
PSBpMTk7CiAgICAgSEVBUDMyWzEzMF0gPSAwOwogICAgIEhFQVAzMlsyNF0gPSBIRUFQMzJbMTMz
XTsKICAgICBIRUFQMzJbMjNdID0gLTE7CiAgICAgaTIgPSAwOwogICAgIGRvIHsKICAgICAgaTQ2
ID0gaTIgPDwgMTsKICAgICAgaTQ1ID0gMTAwICsgKGk0NiA8PCAyKSB8IDA7CiAgICAgIEhFQVAz
MlsxMDAgKyAoaTQ2ICsgMyA8PCAyKSA+PiAyXSA9IGk0NTsKICAgICAgSEVBUDMyWzEwMCArIChp
NDYgKyAyIDw8IDIpID4+IDJdID0gaTQ1OwogICAgICBpMiA9IGkyICsgMSB8IDA7CiAgICAgfSB3
aGlsZSAoKGkyIHwgMCkgIT0gMzIpOwogICAgIGk0NiA9IGkyNiArIDggfCAwOwogICAgIGk0NiA9
IChpNDYgJiA3IHwgMCkgPT0gMCA/IDAgOiAwIC0gaTQ2ICYgNzsKICAgICBpNDUgPSBpMTkgKyAt
NDAgLSBpNDYgfCAwOwogICAgIEhFQVAzMlsyMV0gPSBpMjYgKyBpNDY7CiAgICAgSEVBUDMyWzE4
XSA9IGk0NTsKICAgICBIRUFQMzJbaTI2ICsgKGk0NiArIDQpID4+IDJdID0gaTQ1IHwgMTsKICAg
ICBIRUFQMzJbaTI2ICsgKGkxOSArIC0zNikgPj4gMl0gPSA0MDsKICAgICBIRUFQMzJbMjJdID0g
SEVBUDMyWzEzN107CiAgICB9IHdoaWxlICgwKTsKICAgIGkxID0gSEVBUDMyWzE4XSB8IDA7CiAg
ICBpZiAoaTEgPj4+IDAgPiBpMTggPj4+IDApIHsKICAgICBpNDYgPSBpMSAtIGkxOCB8IDA7CiAg
ICAgSEVBUDMyWzE4XSA9IGk0NjsKICAgICBpNSA9IEhFQVAzMlsyMV0gfCAwOwogICAgIEhFQVAz
MlsyMV0gPSBpNSArIGkxODsKICAgICBIRUFQMzJbaTUgKyAoaTE4ICsgNCkgPj4gMl0gPSBpNDYg
fCAxOwogICAgIEhFQVAzMltpNSArIDQgPj4gMl0gPSBpMTggfCAzOwogICAgIGk1ID0gaTUgKyA4
IHwgMDsKICAgICBicmVhazsKICAgIH0KICAgfQogICBIRUFQMzJbKF9fX2Vycm5vX2xvY2F0aW9u
KCkgfCAwKSA+PiAyXSA9IDEyOwogICBpNSA9IDA7CiAgfSBlbHNlIGk1ID0gMDsKIH0gd2hpbGUg
KDApOwogcmV0dXJuIGk1IHwgMDsKfQoKZnVuY3Rpb24gX3ByaW50Zl9jb3JlKGk1MCwgaTIsIGk1
MSwgaTUyLCBpNTMpIHsKIGk1MCA9IGk1MCB8IDA7CiBpMiA9IGkyIHwgMDsKIGk1MSA9IGk1MSB8
IDA7CiBpNTIgPSBpNTIgfCAwOwogaTUzID0gaTUzIHwgMDsKIHZhciBpMSA9IDAsIGkzID0gMCwg
aTQgPSAwLCBpNSA9IDAsIGQ2ID0gMC4wLCBpNyA9IDAsIGk4ID0gMCwgaTkgPSAwLCBpMTAgPSAw
LCBkMTEgPSAwLjAsIGkxMiA9IDAsIGkxMyA9IDAsIGkxNCA9IDAsIGkxNSA9IDAsIGkxNiA9IDAs
IGkxNyA9IDAsIGkxOCA9IDAsIGkxOSA9IDAsIGkyMCA9IDAsIGkyMSA9IDAsIGkyMiA9IDAsIGky
MyA9IDAsIGkyNCA9IDAsIGkyNSA9IDAsIGkyNiA9IDAsIGkyNyA9IDAsIGkyOCA9IDAsIGkyOSA9
IDAsIGkzMCA9IDAsIGkzMSA9IDAsIGkzMiA9IDAsIGkzMyA9IDAsIGkzNCA9IDAsIGkzNSA9IDAs
IGkzNiA9IDAsIGkzNyA9IDAsIGkzOCA9IDAsIGkzOSA9IDAsIGk0MCA9IDAsIGk0MSA9IDAsIGk0
MiA9IDAsIGk0MyA9IDAsIGk0NCA9IDAsIGk0NSA9IDAsIGk0NiA9IDAsIGk0NyA9IDAsIGk0OCA9
IDAsIGk0OSA9IDAsIGk1NCA9IDA7CiBpNTQgPSBTVEFDS1RPUDsKIFNUQUNLVE9QID0gU1RBQ0tU
T1AgKyA2MjQgfCAwOwogaTQ1ID0gaTU0ICsgMjQgfCAwOwogaTQ3ID0gaTU0ICsgMTYgfCAwOwog
aTQ2ID0gaTU0ICsgNTg4IHwgMDsKIGk0MCA9IGk1NCArIDU3NiB8IDA7CiBpNDQgPSBpNTQ7CiBp
MzcgPSBpNTQgKyA1MzYgfCAwOwogaTQ5ID0gaTU0ICsgOCB8IDA7CiBpNDggPSBpNTQgKyA1Mjgg
fCAwOwogaTI4ID0gKGk1MCB8IDApICE9IDA7CiBpMjkgPSBpMzcgKyA0MCB8IDA7CiBpMzYgPSBp
Mjk7CiBpMzcgPSBpMzcgKyAzOSB8IDA7CiBpMzggPSBpNDkgKyA0IHwgMDsKIGkzOSA9IGk0MCAr
IDEyIHwgMDsKIGk0MCA9IGk0MCArIDExIHwgMDsKIGk0MSA9IGk0NjsKIGk0MiA9IGkzOTsKIGk0
MyA9IGk0MiAtIGk0MSB8IDA7CiBpMzAgPSAtMiAtIGk0MSB8IDA7CiBpMzEgPSBpNDIgKyAyIHwg
MDsKIGkzMiA9IGk0NSArIDI4OCB8IDA7CiBpMzMgPSBpNDYgKyA5IHwgMDsKIGkzNCA9IGkzMzsK
IGkzNSA9IGk0NiArIDggfCAwOwogaTEyID0gaTI7CiBpMSA9IDA7CiBpMyA9IDA7CiBpMiA9IDA7
CiBMMSA6IHdoaWxlICgxKSB7CiAgZG8gaWYgKChpMSB8IDApID4gLTEpIGlmICgoaTMgfCAwKSA+
ICgyMTQ3NDgzNjQ3IC0gaTEgfCAwKSkgewogICBIRUFQMzJbKF9fX2Vycm5vX2xvY2F0aW9uKCkg
fCAwKSA+PiAyXSA9IDc1OwogICBpMSA9IC0xOwogICBicmVhazsKICB9IGVsc2UgewogICBpMSA9
IGkzICsgaTEgfCAwOwogICBicmVhazsKICB9IHdoaWxlICgwKTsKICBpMyA9IEhFQVA4W2kxMiA+
PiAwXSB8IDA7CiAgaWYgKCEoaTMgPDwgMjQgPj4gMjQpKSB7CiAgIGkyNyA9IDI0NTsKICAgYnJl
YWs7CiAgfSBlbHNlIGk0ID0gaTEyOwogIEw5IDogd2hpbGUgKDEpIHsKICAgc3dpdGNoIChpMyA8
PCAyNCA+PiAyNCkgewogICBjYXNlIDM3OgogICAgewogICAgIGkzID0gaTQ7CiAgICAgaTI3ID0g
OTsKICAgICBicmVhayBMOTsKICAgIH0KICAgY2FzZSAwOgogICAgewogICAgIGkzID0gaTQ7CiAg
ICAgYnJlYWsgTDk7CiAgICB9CiAgIGRlZmF1bHQ6CiAgICB7fQogICB9CiAgIGkyNiA9IGk0ICsg
MSB8IDA7CiAgIGkzID0gSEVBUDhbaTI2ID4+IDBdIHwgMDsKICAgaTQgPSBpMjY7CiAgfQogIEwx
MiA6IGRvIGlmICgoaTI3IHwgMCkgPT0gOSkgd2hpbGUgKDEpIHsKICAgaTI3ID0gMDsKICAgaWYg
KChIRUFQOFtpMyArIDEgPj4gMF0gfCAwKSAhPSAzNykgYnJlYWsgTDEyOwogICBpNCA9IGk0ICsg
MSB8IDA7CiAgIGkzID0gaTMgKyAyIHwgMDsKICAgaWYgKChIRUFQOFtpMyA+PiAwXSB8IDApID09
IDM3KSBpMjcgPSA5OyBlbHNlIGJyZWFrOwogIH0gd2hpbGUgKDApOwogIGkxNyA9IGk0IC0gaTEy
IHwgMDsKICBpZiAoaTI4ID8gKEhFQVAzMltpNTAgPj4gMl0gJiAzMiB8IDApID09IDAgOiAwKSBf
X19md3JpdGV4KGkxMiwgaTE3LCBpNTApIHwgMDsKICBpZiAoKGk0IHwgMCkgIT0gKGkxMiB8IDAp
KSB7CiAgIGkxMiA9IGkzOwogICBpMyA9IGkxNzsKICAgY29udGludWU7CiAgfQogIGk0ID0gaTMg
KyAxIHwgMDsKICBpNSA9IEhFQVA4W2k0ID4+IDBdIHwgMDsKICBpNyA9IChpNSA8PCAyNCA+PiAy
NCkgKyAtNDggfCAwOwogIGlmIChpNyA+Pj4gMCA8IDEwKSB7CiAgIGkyNiA9IChIRUFQOFtpMyAr
IDIgPj4gMF0gfCAwKSA9PSAzNjsKICAgaTQgPSBpMjYgPyBpMyArIDMgfCAwIDogaTQ7CiAgIGk1
ID0gSEVBUDhbaTQgPj4gMF0gfCAwOwogICBpMTggPSBpMjYgPyBpNyA6IC0xOwogICBpMiA9IGky
NiA/IDEgOiBpMjsKICB9IGVsc2UgaTE4ID0gLTE7CiAgaTMgPSBpNSA8PCAyNCA+PiAyNDsKICBM
MjUgOiBkbyBpZiAoKGkzICYgLTMyIHwgMCkgPT0gMzIpIHsKICAgaTcgPSAwOwogICB3aGlsZSAo
MSkgewogICAgaWYgKCEoMSA8PCBpMyArIC0zMiAmIDc1OTEzKSkgewogICAgIGkxMCA9IGk3Owog
ICAgIGJyZWFrIEwyNTsKICAgIH0KICAgIGk3ID0gMSA8PCAoaTUgPDwgMjQgPj4gMjQpICsgLTMy
IHwgaTc7CiAgICBpNCA9IGk0ICsgMSB8IDA7CiAgICBpNSA9IEhFQVA4W2k0ID4+IDBdIHwgMDsK
ICAgIGkzID0gaTUgPDwgMjQgPj4gMjQ7CiAgICBpZiAoKGkzICYgLTMyIHwgMCkgIT0gMzIpIHsK
ICAgICBpMTAgPSBpNzsKICAgICBicmVhazsKICAgIH0KICAgfQogIH0gZWxzZSBpMTAgPSAwOyB3
aGlsZSAoMCk7CiAgZG8gaWYgKGk1IDw8IDI0ID4+IDI0ID09IDQyKSB7CiAgIGk1ID0gaTQgKyAx
IHwgMDsKICAgaTcgPSAoSEVBUDhbaTUgPj4gMF0gfCAwKSArIC00OCB8IDA7CiAgIGlmIChpNyA+
Pj4gMCA8IDEwID8gKEhFQVA4W2k0ICsgMiA+PiAwXSB8IDApID09IDM2IDogMCkgewogICAgSEVB
UDMyW2k1MyArIChpNyA8PCAyKSA+PiAyXSA9IDEwOwogICAgaTIgPSAxOwogICAgaTQgPSBpNCAr
IDMgfCAwOwogICAgaTcgPSBIRUFQMzJbaTUyICsgKChIRUFQOFtpNSA+PiAwXSB8IDApICsgLTQ4
IDw8IDMpID4+IDJdIHwgMDsKICAgfSBlbHNlIHsKICAgIGlmIChpMikgewogICAgIGkxID0gLTE7
CiAgICAgYnJlYWsgTDE7CiAgICB9CiAgICBpZiAoIWkyOCkgewogICAgIGk0ID0gaTU7CiAgICAg
aTE1ID0gaTEwOwogICAgIGkyID0gMDsKICAgICBpMjYgPSAwOwogICAgIGJyZWFrOwogICAgfQog
ICAgaTIgPSAoSEVBUDMyW2k1MSA+PiAyXSB8IDApICsgKDQgLSAxKSAmIH4oNCAtIDEpOwogICAg
aTcgPSBIRUFQMzJbaTIgPj4gMl0gfCAwOwogICAgSEVBUDMyW2k1MSA+PiAyXSA9IGkyICsgNDsK
ICAgIGkyID0gMDsKICAgIGk0ID0gaTU7CiAgIH0KICAgaWYgKChpNyB8IDApIDwgMCkgewogICAg
aTE1ID0gaTEwIHwgODE5MjsKICAgIGkyNiA9IDAgLSBpNyB8IDA7CiAgIH0gZWxzZSB7CiAgICBp
MTUgPSBpMTA7CiAgICBpMjYgPSBpNzsKICAgfQogIH0gZWxzZSB7CiAgIGk1ID0gKGk1IDw8IDI0
ID4+IDI0KSArIC00OCB8IDA7CiAgIGlmIChpNSA+Pj4gMCA8IDEwKSB7CiAgICBpNyA9IDA7CiAg
ICBkbyB7CiAgICAgaTcgPSAoaTcgKiAxMCB8IDApICsgaTUgfCAwOwogICAgIGk0ID0gaTQgKyAx
IHwgMDsKICAgICBpNSA9IChIRUFQOFtpNCA+PiAwXSB8IDApICsgLTQ4IHwgMDsKICAgIH0gd2hp
bGUgKGk1ID4+PiAwIDwgMTApOwogICAgaWYgKChpNyB8IDApIDwgMCkgewogICAgIGkxID0gLTE7
CiAgICAgYnJlYWsgTDE7CiAgICB9IGVsc2UgewogICAgIGkxNSA9IGkxMDsKICAgICBpMjYgPSBp
NzsKICAgIH0KICAgfSBlbHNlIHsKICAgIGkxNSA9IGkxMDsKICAgIGkyNiA9IDA7CiAgIH0KICB9
IHdoaWxlICgwKTsKICBMNDYgOiBkbyBpZiAoKEhFQVA4W2k0ID4+IDBdIHwgMCkgPT0gNDYpIHsK
ICAgaTUgPSBpNCArIDEgfCAwOwogICBpNyA9IEhFQVA4W2k1ID4+IDBdIHwgMDsKICAgaWYgKGk3
IDw8IDI0ID4+IDI0ICE9IDQyKSB7CiAgICBpMyA9IChpNyA8PCAyNCA+PiAyNCkgKyAtNDggfCAw
OwogICAgaWYgKGkzID4+PiAwIDwgMTApIHsKICAgICBpNCA9IGk1OwogICAgIGk3ID0gMDsKICAg
IH0gZWxzZSB7CiAgICAgaTQgPSBpNTsKICAgICBpMTYgPSAwOwogICAgIGJyZWFrOwogICAgfQog
ICAgd2hpbGUgKDEpIHsKICAgICBpNyA9IChpNyAqIDEwIHwgMCkgKyBpMyB8IDA7CiAgICAgaTQg
PSBpNCArIDEgfCAwOwogICAgIGkzID0gKEhFQVA4W2k0ID4+IDBdIHwgMCkgKyAtNDggfCAwOwog
ICAgIGlmIChpMyA+Pj4gMCA+PSAxMCkgewogICAgICBpMTYgPSBpNzsKICAgICAgYnJlYWsgTDQ2
OwogICAgIH0KICAgIH0KICAgfQogICBpNSA9IGk0ICsgMiB8IDA7CiAgIGk3ID0gKEhFQVA4W2k1
ID4+IDBdIHwgMCkgKyAtNDggfCAwOwogICBpZiAoaTcgPj4+IDAgPCAxMCA/IChIRUFQOFtpNCAr
IDMgPj4gMF0gfCAwKSA9PSAzNiA6IDApIHsKICAgIEhFQVAzMltpNTMgKyAoaTcgPDwgMikgPj4g
Ml0gPSAxMDsKICAgIGk0ID0gaTQgKyA0IHwgMDsKICAgIGkxNiA9IEhFQVAzMltpNTIgKyAoKEhF
QVA4W2k1ID4+IDBdIHwgMCkgKyAtNDggPDwgMykgPj4gMl0gfCAwOwogICAgYnJlYWs7CiAgIH0K
ICAgaWYgKGkyKSB7CiAgICBpMSA9IC0xOwogICAgYnJlYWsgTDE7CiAgIH0KICAgaWYgKGkyOCkg
ewogICAgaTQgPSAoSEVBUDMyW2k1MSA+PiAyXSB8IDApICsgKDQgLSAxKSAmIH4oNCAtIDEpOwog
ICAgaTE2ID0gSEVBUDMyW2k0ID4+IDJdIHwgMDsKICAgIEhFQVAzMltpNTEgPj4gMl0gPSBpNCAr
IDQ7CiAgICBpNCA9IGk1OwogICB9IGVsc2UgewogICAgaTQgPSBpNTsKICAgIGkxNiA9IDA7CiAg
IH0KICB9IGVsc2UgaTE2ID0gLTE7IHdoaWxlICgwKTsKICBpMTAgPSAwOwogIHdoaWxlICgxKSB7
CiAgIGk3ID0gKEhFQVA4W2k0ID4+IDBdIHwgMCkgKyAtNjUgfCAwOwogICBpZiAoaTcgPj4+IDAg
PiA1NykgewogICAgaTEgPSAtMTsKICAgIGJyZWFrIEwxOwogICB9CiAgIGk4ID0gaTQgKyAxIHwg
MDsKICAgaTUgPSBIRUFQOFszNjM4ICsgKGkxMCAqIDU4IHwgMCkgKyBpNyA+PiAwXSB8IDA7CiAg
IGk3ID0gaTUgJiAyNTU7CiAgIGlmICgoaTcgKyAtMSB8IDApID4+PiAwIDwgOCkgewogICAgaTQg
PSBpODsKICAgIGkxMCA9IGk3OwogICB9IGVsc2UgewogICAgaTI1ID0gaTg7CiAgICBicmVhazsK
ICAgfQogIH0KICBpZiAoIShpNSA8PCAyNCA+PiAyNCkpIHsKICAgaTEgPSAtMTsKICAgYnJlYWs7
CiAgfQogIGk4ID0gKGkxOCB8IDApID4gLTE7CiAgZG8gaWYgKGk1IDw8IDI0ID4+IDI0ID09IDE5
KSBpZiAoaTgpIHsKICAgaTEgPSAtMTsKICAgYnJlYWsgTDE7CiAgfSBlbHNlIGkyNyA9IDUyOyBl
bHNlIHsKICAgaWYgKGk4KSB7CiAgICBIRUFQMzJbaTUzICsgKGkxOCA8PCAyKSA+PiAyXSA9IGk3
OwogICAgaTggPSBpNTIgKyAoaTE4IDw8IDMpIHwgMDsKICAgIGk5ID0gSEVBUDMyW2k4ICsgNCA+
PiAyXSB8IDA7CiAgICBpMjcgPSBpNDQ7CiAgICBIRUFQMzJbaTI3ID4+IDJdID0gSEVBUDMyW2k4
ID4+IDJdOwogICAgSEVBUDMyW2kyNyArIDQgPj4gMl0gPSBpOTsKICAgIGkyNyA9IDUyOwogICAg
YnJlYWs7CiAgIH0KICAgaWYgKCFpMjgpIHsKICAgIGkxID0gMDsKICAgIGJyZWFrIEwxOwogICB9
CiAgIF9wb3BfYXJnMzM5KGk0NCwgaTcsIGk1MSk7CiAgfSB3aGlsZSAoMCk7CiAgaWYgKChpMjcg
fCAwKSA9PSA1MiA/IChpMjcgPSAwLCAhaTI4KSA6IDApIHsKICAgaTEyID0gaTI1OwogICBpMyA9
IGkxNzsKICAgY29udGludWU7CiAgfQogIGkyMCA9IEhFQVA4W2k0ID4+IDBdIHwgMDsKICBpMjAg
PSAoaTEwIHwgMCkgIT0gMCAmIChpMjAgJiAxNSB8IDApID09IDMgPyBpMjAgJiAtMzMgOiBpMjA7
CiAgaTUgPSBpMTUgJiAtNjU1Mzc7CiAgaTI0ID0gKGkxNSAmIDgxOTIgfCAwKSA9PSAwID8gaTE1
IDogaTU7CiAgTDc1IDogZG8gc3dpdGNoIChpMjAgfCAwKSB7CiAgY2FzZSAxMTA6CiAgIHN3aXRj
aCAoaTEwIHwgMCkgewogICBjYXNlIDA6CiAgICB7CiAgICAgSEVBUDMyW0hFQVAzMltpNDQgPj4g
Ml0gPj4gMl0gPSBpMTsKICAgICBpMTIgPSBpMjU7CiAgICAgaTMgPSBpMTc7CiAgICAgY29udGlu
dWUgTDE7CiAgICB9CiAgIGNhc2UgMToKICAgIHsKICAgICBIRUFQMzJbSEVBUDMyW2k0NCA+PiAy
XSA+PiAyXSA9IGkxOwogICAgIGkxMiA9IGkyNTsKICAgICBpMyA9IGkxNzsKICAgICBjb250aW51
ZSBMMTsKICAgIH0KICAgY2FzZSAyOgogICAgewogICAgIGkxMiA9IEhFQVAzMltpNDQgPj4gMl0g
fCAwOwogICAgIEhFQVAzMltpMTIgPj4gMl0gPSBpMTsKICAgICBIRUFQMzJbaTEyICsgNCA+PiAy
XSA9ICgoaTEgfCAwKSA8IDApIDw8IDMxID4+IDMxOwogICAgIGkxMiA9IGkyNTsKICAgICBpMyA9
IGkxNzsKICAgICBjb250aW51ZSBMMTsKICAgIH0KICAgY2FzZSAzOgogICAgewogICAgIEhFQVAx
NltIRUFQMzJbaTQ0ID4+IDJdID4+IDFdID0gaTE7CiAgICAgaTEyID0gaTI1OwogICAgIGkzID0g
aTE3OwogICAgIGNvbnRpbnVlIEwxOwogICAgfQogICBjYXNlIDQ6CiAgICB7CiAgICAgSEVBUDhb
SEVBUDMyW2k0NCA+PiAyXSA+PiAwXSA9IGkxOwogICAgIGkxMiA9IGkyNTsKICAgICBpMyA9IGkx
NzsKICAgICBjb250aW51ZSBMMTsKICAgIH0KICAgY2FzZSA2OgogICAgewogICAgIEhFQVAzMltI
RUFQMzJbaTQ0ID4+IDJdID4+IDJdID0gaTE7CiAgICAgaTEyID0gaTI1OwogICAgIGkzID0gaTE3
OwogICAgIGNvbnRpbnVlIEwxOwogICAgfQogICBjYXNlIDc6CiAgICB7CiAgICAgaTEyID0gSEVB
UDMyW2k0NCA+PiAyXSB8IDA7CiAgICAgSEVBUDMyW2kxMiA+PiAyXSA9IGkxOwogICAgIEhFQVAz
MltpMTIgKyA0ID4+IDJdID0gKChpMSB8IDApIDwgMCkgPDwgMzEgPj4gMzE7CiAgICAgaTEyID0g
aTI1OwogICAgIGkzID0gaTE3OwogICAgIGNvbnRpbnVlIEwxOwogICAgfQogICBkZWZhdWx0Ogog
ICAgewogICAgIGkxMiA9IGkyNTsKICAgICBpMyA9IGkxNzsKICAgICBjb250aW51ZSBMMTsKICAg
IH0KICAgfQogIGNhc2UgMTEyOgogICB7CiAgICBpMTAgPSBpMjQgfCA4OwogICAgaTQgPSBpMTYg
Pj4+IDAgPiA4ID8gaTE2IDogODsKICAgIGk5ID0gMTIwOwogICAgaTI3ID0gNjQ7CiAgICBicmVh
azsKICAgfQogIGNhc2UgODg6CiAgY2FzZSAxMjA6CiAgIHsKICAgIGkxMCA9IGkyNDsKICAgIGk0
ID0gaTE2OwogICAgaTkgPSBpMjA7CiAgICBpMjcgPSA2NDsKICAgIGJyZWFrOwogICB9CiAgY2Fz
ZSAxMTE6CiAgIHsKICAgIGk1ID0gaTQ0OwogICAgaTQgPSBIRUFQMzJbaTUgPj4gMl0gfCAwOwog
ICAgaTUgPSBIRUFQMzJbaTUgKyA0ID4+IDJdIHwgMDsKICAgIGlmICgoaTQgfCAwKSA9PSAwICYg
KGk1IHwgMCkgPT0gMCkgaTMgPSBpMjk7IGVsc2UgewogICAgIGkzID0gaTI5OwogICAgIGRvIHsK
ICAgICAgaTMgPSBpMyArIC0xIHwgMDsKICAgICAgSEVBUDhbaTMgPj4gMF0gPSBpNCAmIDcgfCA0
ODsKICAgICAgaTQgPSBfYml0c2hpZnQ2NExzaHIoaTQgfCAwLCBpNSB8IDAsIDMpIHwgMDsKICAg
ICAgaTUgPSB0ZW1wUmV0MDsKICAgICB9IHdoaWxlICghKChpNCB8IDApID09IDAgJiAoaTUgfCAw
KSA9PSAwKSk7CiAgICB9CiAgICBpZiAoIShpMjQgJiA4KSkgewogICAgIGk3ID0gaTI0OwogICAg
IGk0ID0gaTE2OwogICAgIGk4ID0gMDsKICAgICBpOSA9IDQxMTg7CiAgICAgaTI3ID0gNzc7CiAg
ICB9IGVsc2UgewogICAgIGk0ID0gaTM2IC0gaTMgKyAxIHwgMDsKICAgICBpNyA9IGkyNDsKICAg
ICBpNCA9IChpMTYgfCAwKSA8IChpNCB8IDApID8gaTQgOiBpMTY7CiAgICAgaTggPSAwOwogICAg
IGk5ID0gNDExODsKICAgICBpMjcgPSA3NzsKICAgIH0KICAgIGJyZWFrOwogICB9CiAgY2FzZSAx
MDU6CiAgY2FzZSAxMDA6CiAgIHsKICAgIGkzID0gaTQ0OwogICAgaTQgPSBIRUFQMzJbaTMgPj4g
Ml0gfCAwOwogICAgaTMgPSBIRUFQMzJbaTMgKyA0ID4+IDJdIHwgMDsKICAgIGlmICgoaTMgfCAw
KSA8IDApIHsKICAgICBpNCA9IF9pNjRTdWJ0cmFjdCgwLCAwLCBpNCB8IDAsIGkzIHwgMCkgfCAw
OwogICAgIGkzID0gdGVtcFJldDA7CiAgICAgaTggPSBpNDQ7CiAgICAgSEVBUDMyW2k4ID4+IDJd
ID0gaTQ7CiAgICAgSEVBUDMyW2k4ICsgNCA+PiAyXSA9IGkzOwogICAgIGk4ID0gMTsKICAgICBp
NSA9IDQxMTg7CiAgICAgaTI3ID0gNzY7CiAgICAgYnJlYWsgTDc1OwogICAgfQogICAgaWYgKCEo
aTI0ICYgMjA0OCkpIHsKICAgICBpNSA9IGkyNCAmIDE7CiAgICAgaTggPSBpNTsKICAgICBpNSA9
IChpNSB8IDApID09IDAgPyA0MTE4IDogNDEyMDsKICAgICBpMjcgPSA3NjsKICAgIH0gZWxzZSB7
CiAgICAgaTggPSAxOwogICAgIGk1ID0gNDExOTsKICAgICBpMjcgPSA3NjsKICAgIH0KICAgIGJy
ZWFrOwogICB9CiAgY2FzZSAxMTc6CiAgIHsKICAgIGkzID0gaTQ0OwogICAgaTQgPSBIRUFQMzJb
aTMgPj4gMl0gfCAwOwogICAgaTMgPSBIRUFQMzJbaTMgKyA0ID4+IDJdIHwgMDsKICAgIGk4ID0g
MDsKICAgIGk1ID0gNDExODsKICAgIGkyNyA9IDc2OwogICAgYnJlYWs7CiAgIH0KICBjYXNlIDk5
OgogICB7CiAgICBIRUFQOFtpMzcgPj4gMF0gPSBIRUFQMzJbaTQ0ID4+IDJdOwogICAgaTEyID0g
aTM3OwogICAgaTQgPSAxOwogICAgaTEwID0gMDsKICAgIGk5ID0gNDExODsKICAgIGk3ID0gaTI5
OwogICAgYnJlYWs7CiAgIH0KICBjYXNlIDEwOToKICAgewogICAgaTcgPSBfc3RyZXJyb3IoSEVB
UDMyWyhfX19lcnJub19sb2NhdGlvbigpIHwgMCkgPj4gMl0gfCAwKSB8IDA7CiAgICBpMjcgPSA4
MjsKICAgIGJyZWFrOwogICB9CiAgY2FzZSAxMTU6CiAgIHsKICAgIGk3ID0gSEVBUDMyW2k0NCA+
PiAyXSB8IDA7CiAgICBpNyA9IChpNyB8IDApICE9IDAgPyBpNyA6IDQxMjg7CiAgICBpMjcgPSA4
MjsKICAgIGJyZWFrOwogICB9CiAgY2FzZSA2NzoKICAgewogICAgSEVBUDMyW2k0OSA+PiAyXSA9
IEhFQVAzMltpNDQgPj4gMl07CiAgICBIRUFQMzJbaTM4ID4+IDJdID0gMDsKICAgIEhFQVAzMltp
NDQgPj4gMl0gPSBpNDk7CiAgICBpMyA9IC0xOwogICAgaTI3ID0gODY7CiAgICBicmVhazsKICAg
fQogIGNhc2UgODM6CiAgIHsKICAgIGlmICghaTE2KSB7CiAgICAgX3BhZChpNTAsIDMyLCBpMjYs
IDAsIGkyNCk7CiAgICAgaTUgPSAwOwogICAgIGkyNyA9IDk4OwogICAgfSBlbHNlIHsKICAgICBp
MyA9IGkxNjsKICAgICBpMjcgPSA4NjsKICAgIH0KICAgIGJyZWFrOwogICB9CiAgY2FzZSA2NToK
ICBjYXNlIDcxOgogIGNhc2UgNzA6CiAgY2FzZSA2OToKICBjYXNlIDk3OgogIGNhc2UgMTAzOgog
IGNhc2UgMTAyOgogIGNhc2UgMTAxOgogICB7CiAgICBkNiA9ICtIRUFQRjY0W2k0NCA+PiAzXTsK
ICAgIEhFQVAzMltpNDcgPj4gMl0gPSAwOwogICAgSEVBUEY2NFt0ZW1wRG91YmxlUHRyID4+IDNd
ID0gZDY7CiAgICBpZiAoKEhFQVAzMlt0ZW1wRG91YmxlUHRyICsgNCA+PiAyXSB8IDApID49IDAp
IGlmICghKGkyNCAmIDIwNDgpKSB7CiAgICAgaTIzID0gaTI0ICYgMTsKICAgICBpMjIgPSBpMjM7
CiAgICAgaTIzID0gKGkyMyB8IDApID09IDAgPyA0MTM2IDogNDE0MTsKICAgIH0gZWxzZSB7CiAg
ICAgaTIyID0gMTsKICAgICBpMjMgPSA0MTM4OwogICAgfSBlbHNlIHsKICAgICBkNiA9IC1kNjsK
ICAgICBpMjIgPSAxOwogICAgIGkyMyA9IDQxMzU7CiAgICB9CiAgICBIRUFQRjY0W3RlbXBEb3Vi
bGVQdHIgPj4gM10gPSBkNjsKICAgIGkxMCA9IEhFQVAzMlt0ZW1wRG91YmxlUHRyICsgNCA+PiAy
XSAmIDIxNDY0MzUwNzI7CiAgICBkbyBpZiAoaTEwID4+PiAwIDwgMjE0NjQzNTA3MiB8IChpMTAg
fCAwKSA9PSAyMTQ2NDM1MDcyICYgMCA8IDApIHsKICAgICBkMTEgPSArX2ZyZXhwbChkNiwgaTQ3
KSAqIDIuMDsKICAgICBpOCA9IGQxMSAhPSAwLjA7CiAgICAgaWYgKGk4KSBIRUFQMzJbaTQ3ID4+
IDJdID0gKEhFQVAzMltpNDcgPj4gMl0gfCAwKSArIC0xOwogICAgIGkxOCA9IGkyMCB8IDMyOwog
ICAgIGlmICgoaTE4IHwgMCkgPT0gOTcpIHsKICAgICAgaTE0ID0gaTIwICYgMzI7CiAgICAgIGkx
MiA9IChpMTQgfCAwKSA9PSAwID8gaTIzIDogaTIzICsgOSB8IDA7CiAgICAgIGkxMyA9IGkyMiB8
IDI7CiAgICAgIGk3ID0gMTIgLSBpMTYgfCAwOwogICAgICBkbyBpZiAoIShpMTYgPj4+IDAgPiAx
MSB8IChpNyB8IDApID09IDApKSB7CiAgICAgICBkNiA9IDguMDsKICAgICAgIGRvIHsKICAgICAg
ICBpNyA9IGk3ICsgLTEgfCAwOwogICAgICAgIGQ2ID0gZDYgKiAxNi4wOwogICAgICAgfSB3aGls
ZSAoKGk3IHwgMCkgIT0gMCk7CiAgICAgICBpZiAoKEhFQVA4W2kxMiA+PiAwXSB8IDApID09IDQ1
KSB7CiAgICAgICAgZDYgPSAtKGQ2ICsgKC1kMTEgLSBkNikpOwogICAgICAgIGJyZWFrOwogICAg
ICAgfSBlbHNlIHsKICAgICAgICBkNiA9IGQxMSArIGQ2IC0gZDY7CiAgICAgICAgYnJlYWs7CiAg
ICAgICB9CiAgICAgIH0gZWxzZSBkNiA9IGQxMTsgd2hpbGUgKDApOwogICAgICBpNyA9IEhFQVAz
MltpNDcgPj4gMl0gfCAwOwogICAgICBpOCA9IChpNyB8IDApIDwgMCA/IDAgLSBpNyB8IDAgOiBp
NzsKICAgICAgaTggPSBfZm10X3UoaTgsICgoaTggfCAwKSA8IDApIDw8IDMxID4+IDMxLCBpMzkp
IHwgMDsKICAgICAgaWYgKChpOCB8IDApID09IChpMzkgfCAwKSkgewogICAgICAgSEVBUDhbaTQw
ID4+IDBdID0gNDg7CiAgICAgICBpOCA9IGk0MDsKICAgICAgfQogICAgICBIRUFQOFtpOCArIC0x
ID4+IDBdID0gKGk3ID4+IDMxICYgMikgKyA0MzsKICAgICAgaTEwID0gaTggKyAtMiB8IDA7CiAg
ICAgIEhFQVA4W2kxMCA+PiAwXSA9IGkyMCArIDE1OwogICAgICBpNSA9IChpMTYgfCAwKSA8IDE7
CiAgICAgIGk5ID0gKGkyNCAmIDggfCAwKSA9PSAwOwogICAgICBpNyA9IGk0NjsKICAgICAgZG8g
ewogICAgICAgaTQgPSB+fmQ2OwogICAgICAgaTggPSBpNyArIDEgfCAwOwogICAgICAgSEVBUDhb
aTcgPj4gMF0gPSBIRUFQVThbNDEwMiArIGk0ID4+IDBdIHwgaTE0OwogICAgICAgZDYgPSAoZDYg
LSArKGk0IHwgMCkpICogMTYuMDsKICAgICAgIGRvIGlmICgoaTggLSBpNDEgfCAwKSA9PSAxKSB7
CiAgICAgICAgaWYgKGk5ICYgKGk1ICYgZDYgPT0gMC4wKSkgewogICAgICAgICBpNyA9IGk4Owog
ICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgSEVBUDhbaTggPj4gMF0gPSA0NjsKICAg
ICAgICBpNyA9IGk3ICsgMiB8IDA7CiAgICAgICB9IGVsc2UgaTcgPSBpODsgd2hpbGUgKDApOwog
ICAgICB9IHdoaWxlIChkNiAhPSAwLjApOwogICAgICBpNCA9IChpMTYgfCAwKSAhPSAwICYgKGkz
MCArIGk3IHwgMCkgPCAoaTE2IHwgMCkgPyBpMzEgKyBpMTYgLSBpMTAgfCAwIDogaTQzIC0gaTEw
ICsgaTcgfCAwOwogICAgICBpOCA9IGk0ICsgaTEzIHwgMDsKICAgICAgX3BhZChpNTAsIDMyLCBp
MjYsIGk4LCBpMjQpOwogICAgICBpZiAoIShIRUFQMzJbaTUwID4+IDJdICYgMzIpKSBfX19md3Jp
dGV4KGkxMiwgaTEzLCBpNTApIHwgMDsKICAgICAgX3BhZChpNTAsIDQ4LCBpMjYsIGk4LCBpMjQg
XiA2NTUzNik7CiAgICAgIGk3ID0gaTcgLSBpNDEgfCAwOwogICAgICBpZiAoIShIRUFQMzJbaTUw
ID4+IDJdICYgMzIpKSBfX19md3JpdGV4KGk0NiwgaTcsIGk1MCkgfCAwOwogICAgICBpNSA9IGk0
MiAtIGkxMCB8IDA7CiAgICAgIF9wYWQoaTUwLCA0OCwgaTQgLSAoaTcgKyBpNSkgfCAwLCAwLCAw
KTsKICAgICAgaWYgKCEoSEVBUDMyW2k1MCA+PiAyXSAmIDMyKSkgX19fZndyaXRleChpMTAsIGk1
LCBpNTApIHwgMDsKICAgICAgX3BhZChpNTAsIDMyLCBpMjYsIGk4LCBpMjQgXiA4MTkyKTsKICAg
ICAgaTMgPSAoaTggfCAwKSA8IChpMjYgfCAwKSA/IGkyNiA6IGk4OwogICAgICBicmVhazsKICAg
ICB9CiAgICAgaTQgPSAoaTE2IHwgMCkgPCAwID8gNiA6IGkxNjsKICAgICBpZiAoaTgpIHsKICAg
ICAgaTcgPSAoSEVBUDMyW2k0NyA+PiAyXSB8IDApICsgLTI4IHwgMDsKICAgICAgSEVBUDMyW2k0
NyA+PiAyXSA9IGk3OwogICAgICBkNiA9IGQxMSAqIDI2ODQzNTQ1Ni4wOwogICAgIH0gZWxzZSB7
CiAgICAgIGQ2ID0gZDExOwogICAgICBpNyA9IEhFQVAzMltpNDcgPj4gMl0gfCAwOwogICAgIH0K
ICAgICBpMjEgPSAoaTcgfCAwKSA8IDAgPyBpNDUgOiBpMzI7CiAgICAgaTE5ID0gaTIxOwogICAg
IGk4ID0gaTIxOwogICAgIGRvIHsKICAgICAgaTEwID0gfn5kNiA+Pj4gMDsKICAgICAgSEVBUDMy
W2k4ID4+IDJdID0gaTEwOwogICAgICBpOCA9IGk4ICsgNCB8IDA7CiAgICAgIGQ2ID0gKGQ2IC0g
KyhpMTAgPj4+IDApKSAqIDEuMGU5OwogICAgIH0gd2hpbGUgKGQ2ICE9IDAuMCk7CiAgICAgaTEw
ID0gaTg7CiAgICAgaTggPSBIRUFQMzJbaTQ3ID4+IDJdIHwgMDsKICAgICBpZiAoKGk4IHwgMCkg
PiAwKSB7CiAgICAgIGk3ID0gaTIxOwogICAgICBkbyB7CiAgICAgICBpNSA9IChpOCB8IDApID4g
MjkgPyAyOSA6IGk4OwogICAgICAgaTggPSBpMTAgKyAtNCB8IDA7CiAgICAgICBkbyBpZiAoaTgg
Pj4+IDAgPj0gaTcgPj4+IDApIHsKICAgICAgICBpOSA9IDA7CiAgICAgICAgZG8gewogICAgICAg
ICBpMyA9IF9iaXRzaGlmdDY0U2hsKEhFQVAzMltpOCA+PiAyXSB8IDAsIDAsIGk1IHwgMCkgfCAw
OwogICAgICAgICBpMyA9IF9pNjRBZGQoaTMgfCAwLCB0ZW1wUmV0MCB8IDAsIGk5IHwgMCwgMCkg
fCAwOwogICAgICAgICBpOSA9IHRlbXBSZXQwOwogICAgICAgICBpMTIgPSBfX191cmVtZGkzKGkz
IHwgMCwgaTkgfCAwLCAxZTksIDApIHwgMDsKICAgICAgICAgSEVBUDMyW2k4ID4+IDJdID0gaTEy
OwogICAgICAgICBpOSA9IF9fX3VkaXZkaTMoaTMgfCAwLCBpOSB8IDAsIDFlOSwgMCkgfCAwOwog
ICAgICAgICBpOCA9IGk4ICsgLTQgfCAwOwogICAgICAgIH0gd2hpbGUgKGk4ID4+PiAwID49IGk3
ID4+PiAwKTsKICAgICAgICBpZiAoIWk5KSBicmVhazsKICAgICAgICBpNyA9IGk3ICsgLTQgfCAw
OwogICAgICAgIEhFQVAzMltpNyA+PiAyXSA9IGk5OwogICAgICAgfSB3aGlsZSAoMCk7CiAgICAg
ICBpOCA9IGkxMDsKICAgICAgIHdoaWxlICgxKSB7CiAgICAgICAgaWYgKGk4ID4+PiAwIDw9IGk3
ID4+PiAwKSB7CiAgICAgICAgIGkxMCA9IGk4OwogICAgICAgICBicmVhazsKICAgICAgICB9CiAg
ICAgICAgaTkgPSBpOCArIC00IHwgMDsKICAgICAgICBpZiAoIShIRUFQMzJbaTkgPj4gMl0gfCAw
KSkgaTggPSBpOTsgZWxzZSB7CiAgICAgICAgIGkxMCA9IGk4OwogICAgICAgICBicmVhazsKICAg
ICAgICB9CiAgICAgICB9CiAgICAgICBpOCA9IChIRUFQMzJbaTQ3ID4+IDJdIHwgMCkgLSBpNSB8
IDA7CiAgICAgICBIRUFQMzJbaTQ3ID4+IDJdID0gaTg7CiAgICAgIH0gd2hpbGUgKChpOCB8IDAp
ID4gMCk7CiAgICAgIGk5ID0gaTc7CiAgICAgfSBlbHNlIGk5ID0gaTIxOwogICAgIGlmICgoaTgg
fCAwKSA8IDApIHsKICAgICAgaTE0ID0gKChpNCArIDI1IHwgMCkgLyA5IHwgMCkgKyAxIHwgMDsK
ICAgICAgaTEyID0gKGkxOCB8IDApID09IDEwMjsKICAgICAgZG8gewogICAgICAgaTEzID0gMCAt
IGk4IHwgMDsKICAgICAgIGkxMyA9IChpMTMgfCAwKSA+IDkgPyA5IDogaTEzOwogICAgICAgZG8g
aWYgKGk5ID4+PiAwIDwgaTEwID4+PiAwKSB7CiAgICAgICAgaTcgPSAoMSA8PCBpMTMpICsgLTEg
fCAwOwogICAgICAgIGk1ID0gMWU5ID4+PiBpMTM7CiAgICAgICAgaTggPSAwOwogICAgICAgIGkz
ID0gaTk7CiAgICAgICAgZG8gewogICAgICAgICBpMTUgPSBIRUFQMzJbaTMgPj4gMl0gfCAwOwog
ICAgICAgICBIRUFQMzJbaTMgPj4gMl0gPSAoaTE1ID4+PiBpMTMpICsgaTg7CiAgICAgICAgIGk4
ID0gTWF0aF9pbXVsKGkxNSAmIGk3LCBpNSkgfCAwOwogICAgICAgICBpMyA9IGkzICsgNCB8IDA7
CiAgICAgICAgfSB3aGlsZSAoaTMgPj4+IDAgPCBpMTAgPj4+IDApOwogICAgICAgIGk5ID0gKEhF
QVAzMltpOSA+PiAyXSB8IDApID09IDAgPyBpOSArIDQgfCAwIDogaTk7CiAgICAgICAgaWYgKCFp
OCkgYnJlYWs7CiAgICAgICAgSEVBUDMyW2kxMCA+PiAyXSA9IGk4OwogICAgICAgIGkxMCA9IGkx
MCArIDQgfCAwOwogICAgICAgfSBlbHNlIGk5ID0gKEhFQVAzMltpOSA+PiAyXSB8IDApID09IDAg
PyBpOSArIDQgfCAwIDogaTk7IHdoaWxlICgwKTsKICAgICAgIGk4ID0gaTEyID8gaTIxIDogaTk7
CiAgICAgICBpMTAgPSAoaTEwIC0gaTggPj4gMiB8IDApID4gKGkxNCB8IDApID8gaTggKyAoaTE0
IDw8IDIpIHwgMCA6IGkxMDsKICAgICAgIGk4ID0gKEhFQVAzMltpNDcgPj4gMl0gfCAwKSArIGkx
MyB8IDA7CiAgICAgICBIRUFQMzJbaTQ3ID4+IDJdID0gaTg7CiAgICAgIH0gd2hpbGUgKChpOCB8
IDApIDwgMCk7CiAgICAgIGkzID0gaTk7CiAgICAgfSBlbHNlIGkzID0gaTk7CiAgICAgZG8gaWYg
KGkzID4+PiAwIDwgaTEwID4+PiAwKSB7CiAgICAgIGk5ID0gKGkxOSAtIGkzID4+IDIpICogOSB8
IDA7CiAgICAgIGk3ID0gSEVBUDMyW2kzID4+IDJdIHwgMDsKICAgICAgaWYgKGk3ID4+PiAwIDwg
MTApIGJyZWFrOyBlbHNlIGk4ID0gMTA7CiAgICAgIGRvIHsKICAgICAgIGk4ID0gaTggKiAxMCB8
IDA7CiAgICAgICBpOSA9IGk5ICsgMSB8IDA7CiAgICAgIH0gd2hpbGUgKGk3ID4+PiAwID49IGk4
ID4+PiAwKTsKICAgICB9IGVsc2UgaTkgPSAwOyB3aGlsZSAoMCk7CiAgICAgaTE3ID0gKGkxOCB8
IDApID09IDEwMzsKICAgICBpMTUgPSAoaTQgfCAwKSAhPSAwOwogICAgIGk4ID0gaTQgLSAoKGkx
OCB8IDApICE9IDEwMiA/IGk5IDogMCkgKyAoKGkxNSAmIGkxNykgPDwgMzEgPj4gMzEpIHwgMDsK
ICAgICBpZiAoKGk4IHwgMCkgPCAoKChpMTAgLSBpMTkgPj4gMikgKiA5IHwgMCkgKyAtOSB8IDAp
KSB7CiAgICAgIGk1ID0gaTggKyA5MjE2IHwgMDsKICAgICAgaTE0ID0gKGk1IHwgMCkgLyA5IHwg
MDsKICAgICAgaTggPSBpMjEgKyAoaTE0ICsgLTEwMjMgPDwgMikgfCAwOwogICAgICBpNSA9ICgo
aTUgfCAwKSAlIDkgfCAwKSArIDEgfCAwOwogICAgICBpZiAoKGk1IHwgMCkgPCA5KSB7CiAgICAg
ICBpNyA9IDEwOwogICAgICAgZG8gewogICAgICAgIGk3ID0gaTcgKiAxMCB8IDA7CiAgICAgICAg
aTUgPSBpNSArIDEgfCAwOwogICAgICAgfSB3aGlsZSAoKGk1IHwgMCkgIT0gOSk7CiAgICAgIH0g
ZWxzZSBpNyA9IDEwOwogICAgICBpMTIgPSBIRUFQMzJbaTggPj4gMl0gfCAwOwogICAgICBpMTMg
PSAoaTEyID4+PiAwKSAlIChpNyA+Pj4gMCkgfCAwOwogICAgICBpZiAoKGkxMyB8IDApID09IDAg
PyAoaTIxICsgKGkxNCArIC0xMDIyIDw8IDIpIHwgMCkgPT0gKGkxMCB8IDApIDogMCkgaTcgPSBp
MzsgZWxzZSBpMjcgPSAxNjM7CiAgICAgIGRvIGlmICgoaTI3IHwgMCkgPT0gMTYzKSB7CiAgICAg
ICBpMjcgPSAwOwogICAgICAgZDYgPSAoKChpMTIgPj4+IDApIC8gKGk3ID4+PiAwKSB8IDApICYg
MSB8IDApID09IDAgPyA5MDA3MTk5MjU0NzQwOTkyLjAgOiA5MDA3MTk5MjU0NzQwOTk0LjA7CiAg
ICAgICBpNSA9IChpNyB8IDApIC8gMiB8IDA7CiAgICAgICBkbyBpZiAoaTEzID4+PiAwIDwgaTUg
Pj4+IDApIGQxMSA9IC41OyBlbHNlIHsKICAgICAgICBpZiAoKGkxMyB8IDApID09IChpNSB8IDAp
ID8gKGkyMSArIChpMTQgKyAtMTAyMiA8PCAyKSB8IDApID09IChpMTAgfCAwKSA6IDApIHsKICAg
ICAgICAgZDExID0gMS4wOwogICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgZDExID0g
MS41OwogICAgICAgfSB3aGlsZSAoMCk7CiAgICAgICBkbyBpZiAoaTIyKSB7CiAgICAgICAgaWYg
KChIRUFQOFtpMjMgPj4gMF0gfCAwKSAhPSA0NSkgYnJlYWs7CiAgICAgICAgZDYgPSAtZDY7CiAg
ICAgICAgZDExID0gLWQxMTsKICAgICAgIH0gd2hpbGUgKDApOwogICAgICAgaTUgPSBpMTIgLSBp
MTMgfCAwOwogICAgICAgSEVBUDMyW2k4ID4+IDJdID0gaTU7CiAgICAgICBpZiAoIShkNiArIGQx
MSAhPSBkNikpIHsKICAgICAgICBpNyA9IGkzOwogICAgICAgIGJyZWFrOwogICAgICAgfQogICAg
ICAgaTkgPSBpNSArIGk3IHwgMDsKICAgICAgIEhFQVAzMltpOCA+PiAyXSA9IGk5OwogICAgICAg
aWYgKGk5ID4+PiAwID4gOTk5OTk5OTk5KSB7CiAgICAgICAgaTkgPSBpMzsKICAgICAgICB3aGls
ZSAoMSkgewogICAgICAgICBpNyA9IGk4ICsgLTQgfCAwOwogICAgICAgICBIRUFQMzJbaTggPj4g
Ml0gPSAwOwogICAgICAgICBpZiAoaTcgPj4+IDAgPCBpOSA+Pj4gMCkgewogICAgICAgICAgaTkg
PSBpOSArIC00IHwgMDsKICAgICAgICAgIEhFQVAzMltpOSA+PiAyXSA9IDA7CiAgICAgICAgIH0K
ICAgICAgICAgaTggPSAoSEVBUDMyW2k3ID4+IDJdIHwgMCkgKyAxIHwgMDsKICAgICAgICAgSEVB
UDMyW2k3ID4+IDJdID0gaTg7CiAgICAgICAgIGlmIChpOCA+Pj4gMCA+IDk5OTk5OTk5OSkgaTgg
PSBpNzsgZWxzZSB7CiAgICAgICAgICBpMyA9IGk5OwogICAgICAgICAgaTggPSBpNzsKICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgfQogICAgICAgfQogICAgICAgaTkgPSAoaTE5
IC0gaTMgPj4gMikgKiA5IHwgMDsKICAgICAgIGk1ID0gSEVBUDMyW2kzID4+IDJdIHwgMDsKICAg
ICAgIGlmIChpNSA+Pj4gMCA8IDEwKSB7CiAgICAgICAgaTcgPSBpMzsKICAgICAgICBicmVhazsK
ICAgICAgIH0gZWxzZSBpNyA9IDEwOwogICAgICAgZG8gewogICAgICAgIGk3ID0gaTcgKiAxMCB8
IDA7CiAgICAgICAgaTkgPSBpOSArIDEgfCAwOwogICAgICAgfSB3aGlsZSAoaTUgPj4+IDAgPj0g
aTcgPj4+IDApOwogICAgICAgaTcgPSBpMzsKICAgICAgfSB3aGlsZSAoMCk7CiAgICAgIGk4ID0g
aTggKyA0IHwgMDsKICAgICAgaTMgPSBpNzsKICAgICAgaTEwID0gaTEwID4+PiAwID4gaTggPj4+
IDAgPyBpOCA6IGkxMDsKICAgICB9CiAgICAgaTE0ID0gMCAtIGk5IHwgMDsKICAgICB3aGlsZSAo
MSkgewogICAgICBpZiAoaTEwID4+PiAwIDw9IGkzID4+PiAwKSB7CiAgICAgICBpMTYgPSAwOwog
ICAgICAgaTE4ID0gaTEwOwogICAgICAgYnJlYWs7CiAgICAgIH0KICAgICAgaTggPSBpMTAgKyAt
NCB8IDA7CiAgICAgIGlmICghKEhFQVAzMltpOCA+PiAyXSB8IDApKSBpMTAgPSBpODsgZWxzZSB7
CiAgICAgICBpMTYgPSAxOwogICAgICAgaTE4ID0gaTEwOwogICAgICAgYnJlYWs7CiAgICAgIH0K
ICAgICB9CiAgICAgZG8gaWYgKGkxNykgewogICAgICBpOCA9IChpMTUgJiAxIF4gMSkgKyBpNCB8
IDA7CiAgICAgIGlmICgoaTggfCAwKSA+IChpOSB8IDApICYgKGk5IHwgMCkgPiAtNSkgewogICAg
ICAgaTUgPSBpMjAgKyAtMSB8IDA7CiAgICAgICBpNCA9IGk4ICsgLTEgLSBpOSB8IDA7CiAgICAg
IH0gZWxzZSB7CiAgICAgICBpNSA9IGkyMCArIC0yIHwgMDsKICAgICAgIGk0ID0gaTggKyAtMSB8
IDA7CiAgICAgIH0KICAgICAgaTEwID0gaTI0ICYgODsKICAgICAgaWYgKGkxMCkgewogICAgICAg
aTEyID0gaTEwOwogICAgICAgYnJlYWs7CiAgICAgIH0KICAgICAgZG8gaWYgKGkxNikgewogICAg
ICAgaTggPSBIRUFQMzJbaTE4ICsgLTQgPj4gMl0gfCAwOwogICAgICAgaWYgKCFpOCkgewogICAg
ICAgIGkxMCA9IDk7CiAgICAgICAgYnJlYWs7CiAgICAgICB9CiAgICAgICBpZiAoISgoaTggPj4+
IDApICUgMTAgfCAwKSkgewogICAgICAgIGk3ID0gMTA7CiAgICAgICAgaTEwID0gMDsKICAgICAg
IH0gZWxzZSB7CiAgICAgICAgaTEwID0gMDsKICAgICAgICBicmVhazsKICAgICAgIH0KICAgICAg
IGRvIHsKICAgICAgICBpNyA9IGk3ICogMTAgfCAwOwogICAgICAgIGkxMCA9IGkxMCArIDEgfCAw
OwogICAgICAgfSB3aGlsZSAoKChpOCA+Pj4gMCkgJSAoaTcgPj4+IDApIHwgMCB8IDApID09IDAp
OwogICAgICB9IGVsc2UgaTEwID0gOTsgd2hpbGUgKDApOwogICAgICBpOCA9ICgoaTE4IC0gaTE5
ID4+IDIpICogOSB8IDApICsgLTkgfCAwOwogICAgICBpZiAoKGk1IHwgMzIgfCAwKSA9PSAxMDIp
IHsKICAgICAgIGkxMiA9IGk4IC0gaTEwIHwgMDsKICAgICAgIGkxMiA9IChpMTIgfCAwKSA8IDAg
PyAwIDogaTEyOwogICAgICAgaTQgPSAoaTQgfCAwKSA8IChpMTIgfCAwKSA/IGk0IDogaTEyOwog
ICAgICAgaTEyID0gMDsKICAgICAgIGJyZWFrOwogICAgICB9IGVsc2UgewogICAgICAgaTEyID0g
aTggKyBpOSAtIGkxMCB8IDA7CiAgICAgICBpMTIgPSAoaTEyIHwgMCkgPCAwID8gMCA6IGkxMjsK
ICAgICAgIGk0ID0gKGk0IHwgMCkgPCAoaTEyIHwgMCkgPyBpNCA6IGkxMjsKICAgICAgIGkxMiA9
IDA7CiAgICAgICBicmVhazsKICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgIGk1ID0gaTIwOwog
ICAgICBpMTIgPSBpMjQgJiA4OwogICAgIH0gd2hpbGUgKDApOwogICAgIGkxNSA9IGk0IHwgaTEy
OwogICAgIGk4ID0gKGkxNSB8IDApICE9IDAgJiAxOwogICAgIGkxMyA9IChpNSB8IDMyIHwgMCkg
PT0gMTAyOwogICAgIGlmIChpMTMpIHsKICAgICAgaTEwID0gKGk5IHwgMCkgPiAwID8gaTkgOiAw
OwogICAgICBpMTQgPSAwOwogICAgIH0gZWxzZSB7CiAgICAgIGkxMCA9IChpOSB8IDApIDwgMCA/
IGkxNCA6IGk5OwogICAgICBpMTAgPSBfZm10X3UoaTEwLCAoKGkxMCB8IDApIDwgMCkgPDwgMzEg
Pj4gMzEsIGkzOSkgfCAwOwogICAgICBpZiAoKGk0MiAtIGkxMCB8IDApIDwgMikgZG8gewogICAg
ICAgaTEwID0gaTEwICsgLTEgfCAwOwogICAgICAgSEVBUDhbaTEwID4+IDBdID0gNDg7CiAgICAg
IH0gd2hpbGUgKChpNDIgLSBpMTAgfCAwKSA8IDIpOwogICAgICBIRUFQOFtpMTAgKyAtMSA+PiAw
XSA9IChpOSA+PiAzMSAmIDIpICsgNDM7CiAgICAgIGkxNCA9IGkxMCArIC0yIHwgMDsKICAgICAg
SEVBUDhbaTE0ID4+IDBdID0gaTU7CiAgICAgIGkxMCA9IGk0MiAtIGkxNCB8IDA7CiAgICAgfQog
ICAgIGkxNyA9IGkyMiArIDEgKyBpNCArIGk4ICsgaTEwIHwgMDsKICAgICBfcGFkKGk1MCwgMzIs
IGkyNiwgaTE3LCBpMjQpOwogICAgIGlmICghKEhFQVAzMltpNTAgPj4gMl0gJiAzMikpIF9fX2Z3
cml0ZXgoaTIzLCBpMjIsIGk1MCkgfCAwOwogICAgIF9wYWQoaTUwLCA0OCwgaTI2LCBpMTcsIGky
NCBeIDY1NTM2KTsKICAgICBkbyBpZiAoaTEzKSB7CiAgICAgIGkxMCA9IGkzID4+PiAwID4gaTIx
ID4+PiAwID8gaTIxIDogaTM7CiAgICAgIGk3ID0gaTEwOwogICAgICBkbyB7CiAgICAgICBpOCA9
IF9mbXRfdShIRUFQMzJbaTcgPj4gMl0gfCAwLCAwLCBpMzMpIHwgMDsKICAgICAgIGRvIGlmICgo
aTcgfCAwKSA9PSAoaTEwIHwgMCkpIHsKICAgICAgICBpZiAoKGk4IHwgMCkgIT0gKGkzMyB8IDAp
KSBicmVhazsKICAgICAgICBIRUFQOFtpMzUgPj4gMF0gPSA0ODsKICAgICAgICBpOCA9IGkzNTsK
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgaWYgKGk4ID4+PiAwIDw9IGk0NiA+Pj4gMCkgYnJlYWs7
CiAgICAgICAgZG8gewogICAgICAgICBpOCA9IGk4ICsgLTEgfCAwOwogICAgICAgICBIRUFQOFtp
OCA+PiAwXSA9IDQ4OwogICAgICAgIH0gd2hpbGUgKGk4ID4+PiAwID4gaTQ2ID4+PiAwKTsKICAg
ICAgIH0gd2hpbGUgKDApOwogICAgICAgaWYgKCEoSEVBUDMyW2k1MCA+PiAyXSAmIDMyKSkgX19f
ZndyaXRleChpOCwgaTM0IC0gaTggfCAwLCBpNTApIHwgMDsKICAgICAgIGk3ID0gaTcgKyA0IHwg
MDsKICAgICAgfSB3aGlsZSAoaTcgPj4+IDAgPD0gaTIxID4+PiAwKTsKICAgICAgZG8gaWYgKGkx
NSkgewogICAgICAgaWYgKEhFQVAzMltpNTAgPj4gMl0gJiAzMikgYnJlYWs7CiAgICAgICBfX19m
d3JpdGV4KDQxNzAsIDEsIGk1MCkgfCAwOwogICAgICB9IHdoaWxlICgwKTsKICAgICAgaWYgKChp
NCB8IDApID4gMCAmIGk3ID4+PiAwIDwgaTE4ID4+PiAwKSB7CiAgICAgICBpNSA9IGk0OwogICAg
ICAgaTggPSBpNzsKICAgICAgIHdoaWxlICgxKSB7CiAgICAgICAgaTcgPSBfZm10X3UoSEVBUDMy
W2k4ID4+IDJdIHwgMCwgMCwgaTMzKSB8IDA7CiAgICAgICAgaWYgKGk3ID4+PiAwID4gaTQ2ID4+
PiAwKSBkbyB7CiAgICAgICAgIGk3ID0gaTcgKyAtMSB8IDA7CiAgICAgICAgIEhFQVA4W2k3ID4+
IDBdID0gNDg7CiAgICAgICAgfSB3aGlsZSAoaTcgPj4+IDAgPiBpNDYgPj4+IDApOwogICAgICAg
IGlmICghKEhFQVAzMltpNTAgPj4gMl0gJiAzMikpIF9fX2Z3cml0ZXgoaTcsIChpNSB8IDApID4g
OSA/IDkgOiBpNSwgaTUwKSB8IDA7CiAgICAgICAgaTggPSBpOCArIDQgfCAwOwogICAgICAgIGk0
ID0gaTUgKyAtOSB8IDA7CiAgICAgICAgaWYgKCEoKGk1IHwgMCkgPiA5ICYgaTggPj4+IDAgPCBp
MTggPj4+IDApKSBicmVhazsgZWxzZSBpNSA9IGk0OwogICAgICAgfQogICAgICB9CiAgICAgIF9w
YWQoaTUwLCA0OCwgaTQgKyA5IHwgMCwgOSwgMCk7CiAgICAgfSBlbHNlIHsKICAgICAgaTUgPSBp
MTYgPyBpMTggOiBpMyArIDQgfCAwOwogICAgICBpZiAoKGk0IHwgMCkgPiAtMSkgewogICAgICAg
aTkgPSAoaTEyIHwgMCkgPT0gMDsKICAgICAgIGkxMCA9IGkzOwogICAgICAgZG8gewogICAgICAg
IGk4ID0gX2ZtdF91KEhFQVAzMltpMTAgPj4gMl0gfCAwLCAwLCBpMzMpIHwgMDsKICAgICAgICBp
ZiAoKGk4IHwgMCkgPT0gKGkzMyB8IDApKSB7CiAgICAgICAgIEhFQVA4W2kzNSA+PiAwXSA9IDQ4
OwogICAgICAgICBpOCA9IGkzNTsKICAgICAgICB9CiAgICAgICAgZG8gaWYgKChpMTAgfCAwKSA9
PSAoaTMgfCAwKSkgewogICAgICAgICBpNyA9IGk4ICsgMSB8IDA7CiAgICAgICAgIGlmICghKEhF
QVAzMltpNTAgPj4gMl0gJiAzMikpIF9fX2Z3cml0ZXgoaTgsIDEsIGk1MCkgfCAwOwogICAgICAg
ICBpZiAoaTkgJiAoaTQgfCAwKSA8IDEpIHsKICAgICAgICAgIGk4ID0gaTc7CiAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICBpZiAoSEVBUDMyW2k1MCA+PiAyXSAmIDMyKSB7CiAg
ICAgICAgICBpOCA9IGk3OwogICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgX19f
ZndyaXRleCg0MTcwLCAxLCBpNTApIHwgMDsKICAgICAgICAgaTggPSBpNzsKICAgICAgICB9IGVs
c2UgewogICAgICAgICBpZiAoaTggPj4+IDAgPD0gaTQ2ID4+PiAwKSBicmVhazsKICAgICAgICAg
ZG8gewogICAgICAgICAgaTggPSBpOCArIC0xIHwgMDsKICAgICAgICAgIEhFQVA4W2k4ID4+IDBd
ID0gNDg7CiAgICAgICAgIH0gd2hpbGUgKGk4ID4+PiAwID4gaTQ2ID4+PiAwKTsKICAgICAgICB9
IHdoaWxlICgwKTsKICAgICAgICBpNyA9IGkzNCAtIGk4IHwgMDsKICAgICAgICBpZiAoIShIRUFQ
MzJbaTUwID4+IDJdICYgMzIpKSBfX19md3JpdGV4KGk4LCAoaTQgfCAwKSA+IChpNyB8IDApID8g
aTcgOiBpNCwgaTUwKSB8IDA7CiAgICAgICAgaTQgPSBpNCAtIGk3IHwgMDsKICAgICAgICBpMTAg
PSBpMTAgKyA0IHwgMDsKICAgICAgIH0gd2hpbGUgKGkxMCA+Pj4gMCA8IGk1ID4+PiAwICYgKGk0
IHwgMCkgPiAtMSk7CiAgICAgIH0KICAgICAgX3BhZChpNTAsIDQ4LCBpNCArIDE4IHwgMCwgMTgs
IDApOwogICAgICBpZiAoSEVBUDMyW2k1MCA+PiAyXSAmIDMyKSBicmVhazsKICAgICAgX19fZndy
aXRleChpMTQsIGk0MiAtIGkxNCB8IDAsIGk1MCkgfCAwOwogICAgIH0gd2hpbGUgKDApOwogICAg
IF9wYWQoaTUwLCAzMiwgaTI2LCBpMTcsIGkyNCBeIDgxOTIpOwogICAgIGkzID0gKGkxNyB8IDAp
IDwgKGkyNiB8IDApID8gaTI2IDogaTE3OwogICAgfSBlbHNlIHsKICAgICBpMyA9IChpMjAgJiAz
MiB8IDApICE9IDA7CiAgICAgaTQgPSBkNiAhPSBkNiB8IDAuMCAhPSAwLjA7CiAgICAgaTcgPSBp
NCA/IDAgOiBpMjI7CiAgICAgaTggPSBpNyArIDMgfCAwOwogICAgIF9wYWQoaTUwLCAzMiwgaTI2
LCBpOCwgaTUpOwogICAgIGk1ID0gSEVBUDMyW2k1MCA+PiAyXSB8IDA7CiAgICAgaWYgKCEoaTUg
JiAzMikpIHsKICAgICAgX19fZndyaXRleChpMjMsIGk3LCBpNTApIHwgMDsKICAgICAgaTUgPSBI
RUFQMzJbaTUwID4+IDJdIHwgMDsKICAgICB9CiAgICAgaWYgKCEoaTUgJiAzMikpIF9fX2Z3cml0
ZXgoaTQgPyAoaTMgPyA0MTYyIDogNDE2NikgOiBpMyA/IDQxNTQgOiA0MTU4LCAzLCBpNTApIHwg
MDsKICAgICBfcGFkKGk1MCwgMzIsIGkyNiwgaTgsIGkyNCBeIDgxOTIpOwogICAgIGkzID0gKGk4
IHwgMCkgPCAoaTI2IHwgMCkgPyBpMjYgOiBpODsKICAgIH0gd2hpbGUgKDApOwogICAgaTEyID0g
aTI1OwogICAgY29udGludWUgTDE7CiAgIH0KICBkZWZhdWx0OgogICB7CiAgICBpNSA9IGkyNDsK
ICAgIGk0ID0gaTE2OwogICAgaTEwID0gMDsKICAgIGk5ID0gNDExODsKICAgIGk3ID0gaTI5Owog
ICB9CiAgfSB3aGlsZSAoMCk7CiAgTDMxMyA6IGRvIGlmICgoaTI3IHwgMCkgPT0gNjQpIHsKICAg
aTUgPSBpNDQ7CiAgIGk3ID0gSEVBUDMyW2k1ID4+IDJdIHwgMDsKICAgaTUgPSBIRUFQMzJbaTUg
KyA0ID4+IDJdIHwgMDsKICAgaTggPSBpOSAmIDMyOwogICBpZiAoISgoaTcgfCAwKSA9PSAwICYg
KGk1IHwgMCkgPT0gMCkpIHsKICAgIGkzID0gaTI5OwogICAgZG8gewogICAgIGkzID0gaTMgKyAt
MSB8IDA7CiAgICAgSEVBUDhbaTMgPj4gMF0gPSBIRUFQVThbNDEwMiArIChpNyAmIDE1KSA+PiAw
XSB8IGk4OwogICAgIGk3ID0gX2JpdHNoaWZ0NjRMc2hyKGk3IHwgMCwgaTUgfCAwLCA0KSB8IDA7
CiAgICAgaTUgPSB0ZW1wUmV0MDsKICAgIH0gd2hpbGUgKCEoKGk3IHwgMCkgPT0gMCAmIChpNSB8
IDApID09IDApKTsKICAgIGkyNyA9IGk0NDsKICAgIGlmICgoaTEwICYgOCB8IDApID09IDAgfCAo
SEVBUDMyW2kyNyA+PiAyXSB8IDApID09IDAgJiAoSEVBUDMyW2kyNyArIDQgPj4gMl0gfCAwKSA9
PSAwKSB7CiAgICAgaTcgPSBpMTA7CiAgICAgaTggPSAwOwogICAgIGk5ID0gNDExODsKICAgICBp
MjcgPSA3NzsKICAgIH0gZWxzZSB7CiAgICAgaTcgPSBpMTA7CiAgICAgaTggPSAyOwogICAgIGk5
ID0gNDExOCArIChpOSA+PiA0KSB8IDA7CiAgICAgaTI3ID0gNzc7CiAgICB9CiAgIH0gZWxzZSB7
CiAgICBpMyA9IGkyOTsKICAgIGk3ID0gaTEwOwogICAgaTggPSAwOwogICAgaTkgPSA0MTE4Owog
ICAgaTI3ID0gNzc7CiAgIH0KICB9IGVsc2UgaWYgKChpMjcgfCAwKSA9PSA3NikgewogICBpMyA9
IF9mbXRfdShpNCwgaTMsIGkyOSkgfCAwOwogICBpNyA9IGkyNDsKICAgaTQgPSBpMTY7CiAgIGk5
ID0gaTU7CiAgIGkyNyA9IDc3OwogIH0gZWxzZSBpZiAoKGkyNyB8IDApID09IDgyKSB7CiAgIGky
NyA9IDA7CiAgIGk4ID0gX21lbWNocihpNywgMCwgaTE2KSB8IDA7CiAgIGkzID0gKGk4IHwgMCkg
PT0gMDsKICAgaTEyID0gaTc7CiAgIGk0ID0gaTMgPyBpMTYgOiBpOCAtIGk3IHwgMDsKICAgaTEw
ID0gMDsKICAgaTkgPSA0MTE4OwogICBpNyA9IGkzID8gaTcgKyBpMTYgfCAwIDogaTg7CiAgfSBl
bHNlIGlmICgoaTI3IHwgMCkgPT0gODYpIHsKICAgaTI3ID0gMDsKICAgaTUgPSAwOwogICBpNCA9
IDA7CiAgIGk4ID0gSEVBUDMyW2k0NCA+PiAyXSB8IDA7CiAgIHdoaWxlICgxKSB7CiAgICBpNyA9
IEhFQVAzMltpOCA+PiAyXSB8IDA7CiAgICBpZiAoIWk3KSBicmVhazsKICAgIGk0ID0gX3djdG9t
YihpNDgsIGk3KSB8IDA7CiAgICBpZiAoKGk0IHwgMCkgPCAwIHwgaTQgPj4+IDAgPiAoaTMgLSBp
NSB8IDApID4+PiAwKSBicmVhazsKICAgIGk1ID0gaTQgKyBpNSB8IDA7CiAgICBpZiAoaTMgPj4+
IDAgPiBpNSA+Pj4gMCkgaTggPSBpOCArIDQgfCAwOyBlbHNlIGJyZWFrOwogICB9CiAgIGlmICgo
aTQgfCAwKSA8IDApIHsKICAgIGkxID0gLTE7CiAgICBicmVhayBMMTsKICAgfQogICBfcGFkKGk1
MCwgMzIsIGkyNiwgaTUsIGkyNCk7CiAgIGlmICghaTUpIHsKICAgIGk1ID0gMDsKICAgIGkyNyA9
IDk4OwogICB9IGVsc2UgewogICAgaTMgPSAwOwogICAgaTcgPSBIRUFQMzJbaTQ0ID4+IDJdIHwg
MDsKICAgIHdoaWxlICgxKSB7CiAgICAgaTQgPSBIRUFQMzJbaTcgPj4gMl0gfCAwOwogICAgIGlm
ICghaTQpIHsKICAgICAgaTI3ID0gOTg7CiAgICAgIGJyZWFrIEwzMTM7CiAgICAgfQogICAgIGk0
ID0gX3djdG9tYihpNDgsIGk0KSB8IDA7CiAgICAgaTMgPSBpNCArIGkzIHwgMDsKICAgICBpZiAo
KGkzIHwgMCkgPiAoaTUgfCAwKSkgewogICAgICBpMjcgPSA5ODsKICAgICAgYnJlYWsgTDMxMzsK
ICAgICB9CiAgICAgaWYgKCEoSEVBUDMyW2k1MCA+PiAyXSAmIDMyKSkgX19fZndyaXRleChpNDgs
IGk0LCBpNTApIHwgMDsKICAgICBpZiAoaTMgPj4+IDAgPj0gaTUgPj4+IDApIHsKICAgICAgaTI3
ID0gOTg7CiAgICAgIGJyZWFrOwogICAgIH0gZWxzZSBpNyA9IGk3ICsgNCB8IDA7CiAgICB9CiAg
IH0KICB9IHdoaWxlICgwKTsKICBpZiAoKGkyNyB8IDApID09IDk4KSB7CiAgIGkyNyA9IDA7CiAg
IF9wYWQoaTUwLCAzMiwgaTI2LCBpNSwgaTI0IF4gODE5Mik7CiAgIGkxMiA9IGkyNTsKICAgaTMg
PSAoaTI2IHwgMCkgPiAoaTUgfCAwKSA/IGkyNiA6IGk1OwogICBjb250aW51ZTsKICB9CiAgaWYg
KChpMjcgfCAwKSA9PSA3NykgewogICBpMjcgPSAwOwogICBpNSA9IChpNCB8IDApID4gLTEgPyBp
NyAmIC02NTUzNyA6IGk3OwogICBpNyA9IGk0NDsKICAgaTcgPSAoSEVBUDMyW2k3ID4+IDJdIHwg
MCkgIT0gMCB8IChIRUFQMzJbaTcgKyA0ID4+IDJdIHwgMCkgIT0gMDsKICAgaWYgKChpNCB8IDAp
ICE9IDAgfCBpNykgewogICAgaTEwID0gKGk3ICYgMSBeIDEpICsgKGkzNiAtIGkzKSB8IDA7CiAg
ICBpMTIgPSBpMzsKICAgIGk0ID0gKGk0IHwgMCkgPiAoaTEwIHwgMCkgPyBpNCA6IGkxMDsKICAg
IGkxMCA9IGk4OwogICAgaTcgPSBpMjk7CiAgIH0gZWxzZSB7CiAgICBpMTIgPSBpMjk7CiAgICBp
NCA9IDA7CiAgICBpMTAgPSBpODsKICAgIGk3ID0gaTI5OwogICB9CiAgfQogIGk4ID0gaTcgLSBp
MTIgfCAwOwogIGk3ID0gKGk0IHwgMCkgPCAoaTggfCAwKSA/IGk4IDogaTQ7CiAgaTQgPSBpMTAg
KyBpNyB8IDA7CiAgaTMgPSAoaTI2IHwgMCkgPCAoaTQgfCAwKSA/IGk0IDogaTI2OwogIF9wYWQo
aTUwLCAzMiwgaTMsIGk0LCBpNSk7CiAgaWYgKCEoSEVBUDMyW2k1MCA+PiAyXSAmIDMyKSkgX19f
ZndyaXRleChpOSwgaTEwLCBpNTApIHwgMDsKICBfcGFkKGk1MCwgNDgsIGkzLCBpNCwgaTUgXiA2
NTUzNik7CiAgX3BhZChpNTAsIDQ4LCBpNywgaTgsIDApOwogIGlmICghKEhFQVAzMltpNTAgPj4g
Ml0gJiAzMikpIF9fX2Z3cml0ZXgoaTEyLCBpOCwgaTUwKSB8IDA7CiAgX3BhZChpNTAsIDMyLCBp
MywgaTQsIGk1IF4gODE5Mik7CiAgaTEyID0gaTI1OwogfQogTDM0OCA6IGRvIGlmICgoaTI3IHwg
MCkgPT0gMjQ1KSBpZiAoIWk1MCkgaWYgKGkyKSB7CiAgaTEgPSAxOwogIHdoaWxlICgxKSB7CiAg
IGkyID0gSEVBUDMyW2k1MyArIChpMSA8PCAyKSA+PiAyXSB8IDA7CiAgIGlmICghaTIpIGJyZWFr
OwogICBfcG9wX2FyZzMzOShpNTIgKyAoaTEgPDwgMykgfCAwLCBpMiwgaTUxKTsKICAgaTEgPSBp
MSArIDEgfCAwOwogICBpZiAoKGkxIHwgMCkgPj0gMTApIHsKICAgIGkxID0gMTsKICAgIGJyZWFr
IEwzNDg7CiAgIH0KICB9CiAgaWYgKChpMSB8IDApIDwgMTApIHdoaWxlICgxKSB7CiAgIGlmIChI
RUFQMzJbaTUzICsgKGkxIDw8IDIpID4+IDJdIHwgMCkgewogICAgaTEgPSAtMTsKICAgIGJyZWFr
IEwzNDg7CiAgIH0KICAgaTEgPSBpMSArIDEgfCAwOwogICBpZiAoKGkxIHwgMCkgPj0gMTApIHsK
ICAgIGkxID0gMTsKICAgIGJyZWFrOwogICB9CiAgfSBlbHNlIGkxID0gMTsKIH0gZWxzZSBpMSA9
IDA7IHdoaWxlICgwKTsKIFNUQUNLVE9QID0gaTU0OwogcmV0dXJuIGkxIHwgMDsKfQoKZnVuY3Rp
b24gX2ZyZWUoaTIzKSB7CiBpMjMgPSBpMjMgfCAwOwogdmFyIGkxID0gMCwgaTIgPSAwLCBpMyA9
IDAsIGk0ID0gMCwgaTUgPSAwLCBpNiA9IDAsIGk3ID0gMCwgaTggPSAwLCBpOSA9IDAsIGkxMCA9
IDAsIGkxMSA9IDAsIGkxMiA9IDAsIGkxMyA9IDAsIGkxNCA9IDAsIGkxNSA9IDAsIGkxNiA9IDAs
IGkxNyA9IDAsIGkxOCA9IDAsIGkxOSA9IDAsIGkyMCA9IDAsIGkyMSA9IDAsIGkyMiA9IDAsIGky
NCA9IDAsIGkyNSA9IDAsIGkyNiA9IDAsIGkyNyA9IDA7CiBMMSA6IGRvIGlmIChpMjMpIHsKICBp
NCA9IGkyMyArIC04IHwgMDsKICBpOSA9IEhFQVAzMlsxOV0gfCAwOwogIEwzIDogZG8gaWYgKGk0
ID4+PiAwID49IGk5ID4+PiAwID8gKGkzID0gSEVBUDMyW2kyMyArIC00ID4+IDJdIHwgMCwgaTIg
PSBpMyAmIDMsIChpMiB8IDApICE9IDEpIDogMCkgewogICBpMjAgPSBpMyAmIC04OwogICBpMjEg
PSBpMjMgKyAoaTIwICsgLTgpIHwgMDsKICAgZG8gaWYgKCEoaTMgJiAxKSkgewogICAgaTQgPSBI
RUFQMzJbaTQgPj4gMl0gfCAwOwogICAgaWYgKCFpMikgYnJlYWsgTDE7CiAgICBpMTAgPSAtOCAt
IGk0IHwgMDsKICAgIGkxMiA9IGkyMyArIGkxMCB8IDA7CiAgICBpMTMgPSBpNCArIGkyMCB8IDA7
CiAgICBpZiAoaTEyID4+PiAwIDwgaTkgPj4+IDApIGJyZWFrIEwzOwogICAgaWYgKChpMTIgfCAw
KSA9PSAoSEVBUDMyWzIwXSB8IDApKSB7CiAgICAgaTUgPSBpMjMgKyAoaTIwICsgLTQpIHwgMDsK
ICAgICBpNCA9IEhFQVAzMltpNSA+PiAyXSB8IDA7CiAgICAgaWYgKChpNCAmIDMgfCAwKSAhPSAz
KSB7CiAgICAgIGkyNyA9IGkxMjsKICAgICAgaTUgPSBpMTM7CiAgICAgIGJyZWFrOwogICAgIH0K
ICAgICBIRUFQMzJbMTddID0gaTEzOwogICAgIEhFQVAzMltpNSA+PiAyXSA9IGk0ICYgLTI7CiAg
ICAgSEVBUDMyW2kyMyArIChpMTAgKyA0KSA+PiAyXSA9IGkxMyB8IDE7CiAgICAgSEVBUDMyW2ky
MSA+PiAyXSA9IGkxMzsKICAgICBicmVhayBMMTsKICAgIH0KICAgIGkyID0gaTQgPj4+IDM7CiAg
ICBpZiAoaTQgPj4+IDAgPCAyNTYpIHsKICAgICBpMyA9IEhFQVAzMltpMjMgKyAoaTEwICsgOCkg
Pj4gMl0gfCAwOwogICAgIGk1ID0gSEVBUDMyW2kyMyArIChpMTAgKyAxMikgPj4gMl0gfCAwOwog
ICAgIGk0ID0gMTAwICsgKGkyIDw8IDEgPDwgMikgfCAwOwogICAgIGRvIGlmICgoaTMgfCAwKSAh
PSAoaTQgfCAwKSkgewogICAgICBpZiAoaTMgPj4+IDAgPj0gaTkgPj4+IDAgPyAoSEVBUDMyW2kz
ICsgMTIgPj4gMl0gfCAwKSA9PSAoaTEyIHwgMCkgOiAwKSBicmVhazsKICAgICAgX2Fib3J0KCk7
CiAgICAgfSB3aGlsZSAoMCk7CiAgICAgaWYgKChpNSB8IDApID09IChpMyB8IDApKSB7CiAgICAg
IEhFQVAzMlsxNV0gPSBIRUFQMzJbMTVdICYgfigxIDw8IGkyKTsKICAgICAgaTI3ID0gaTEyOwog
ICAgICBpNSA9IGkxMzsKICAgICAgYnJlYWs7CiAgICAgfQogICAgIGRvIGlmICgoaTUgfCAwKSA9
PSAoaTQgfCAwKSkgaTEgPSBpNSArIDggfCAwOyBlbHNlIHsKICAgICAgaWYgKGk1ID4+PiAwID49
IGk5ID4+PiAwID8gKGk2ID0gaTUgKyA4IHwgMCwgKEhFQVAzMltpNiA+PiAyXSB8IDApID09IChp
MTIgfCAwKSkgOiAwKSB7CiAgICAgICBpMSA9IGk2OwogICAgICAgYnJlYWs7CiAgICAgIH0KICAg
ICAgX2Fib3J0KCk7CiAgICAgfSB3aGlsZSAoMCk7CiAgICAgSEVBUDMyW2kzICsgMTIgPj4gMl0g
PSBpNTsKICAgICBIRUFQMzJbaTEgPj4gMl0gPSBpMzsKICAgICBpMjcgPSBpMTI7CiAgICAgaTUg
PSBpMTM7CiAgICAgYnJlYWs7CiAgICB9CiAgICBpNiA9IEhFQVAzMltpMjMgKyAoaTEwICsgMjQp
ID4+IDJdIHwgMDsKICAgIGk0ID0gSEVBUDMyW2kyMyArIChpMTAgKyAxMikgPj4gMl0gfCAwOwog
ICAgZG8gaWYgKChpNCB8IDApID09IChpMTIgfCAwKSkgewogICAgIGkzID0gaTIzICsgKGkxMCAr
IDIwKSB8IDA7CiAgICAgaTQgPSBIRUFQMzJbaTMgPj4gMl0gfCAwOwogICAgIGlmICghaTQpIHsK
ICAgICAgaTMgPSBpMjMgKyAoaTEwICsgMTYpIHwgMDsKICAgICAgaTQgPSBIRUFQMzJbaTMgPj4g
Ml0gfCAwOwogICAgICBpZiAoIWk0KSB7CiAgICAgICBpMTEgPSAwOwogICAgICAgYnJlYWs7CiAg
ICAgIH0KICAgICB9CiAgICAgd2hpbGUgKDEpIHsKICAgICAgaTIgPSBpNCArIDIwIHwgMDsKICAg
ICAgaTEgPSBIRUFQMzJbaTIgPj4gMl0gfCAwOwogICAgICBpZiAoaTEpIHsKICAgICAgIGk0ID0g
aTE7CiAgICAgICBpMyA9IGkyOwogICAgICAgY29udGludWU7CiAgICAgIH0KICAgICAgaTIgPSBp
NCArIDE2IHwgMDsKICAgICAgaTEgPSBIRUFQMzJbaTIgPj4gMl0gfCAwOwogICAgICBpZiAoIWkx
KSBicmVhazsgZWxzZSB7CiAgICAgICBpNCA9IGkxOwogICAgICAgaTMgPSBpMjsKICAgICAgfQog
ICAgIH0KICAgICBpZiAoaTMgPj4+IDAgPCBpOSA+Pj4gMCkgX2Fib3J0KCk7IGVsc2UgewogICAg
ICBIRUFQMzJbaTMgPj4gMl0gPSAwOwogICAgICBpMTEgPSBpNDsKICAgICAgYnJlYWs7CiAgICAg
fQogICAgfSBlbHNlIHsKICAgICBpMyA9IEhFQVAzMltpMjMgKyAoaTEwICsgOCkgPj4gMl0gfCAw
OwogICAgIGlmICgoaTMgPj4+IDAgPj0gaTkgPj4+IDAgPyAoaTcgPSBpMyArIDEyIHwgMCwgKEhF
QVAzMltpNyA+PiAyXSB8IDApID09IChpMTIgfCAwKSkgOiAwKSA/IChpOCA9IGk0ICsgOCB8IDAs
IChIRUFQMzJbaTggPj4gMl0gfCAwKSA9PSAoaTEyIHwgMCkpIDogMCkgewogICAgICBIRUFQMzJb
aTcgPj4gMl0gPSBpNDsKICAgICAgSEVBUDMyW2k4ID4+IDJdID0gaTM7CiAgICAgIGkxMSA9IGk0
OwogICAgICBicmVhazsKICAgICB9CiAgICAgX2Fib3J0KCk7CiAgICB9IHdoaWxlICgwKTsKICAg
IGlmIChpNikgewogICAgIGk0ID0gSEVBUDMyW2kyMyArIChpMTAgKyAyOCkgPj4gMl0gfCAwOwog
ICAgIGkzID0gMzY0ICsgKGk0IDw8IDIpIHwgMDsKICAgICBpZiAoKGkxMiB8IDApID09IChIRUFQ
MzJbaTMgPj4gMl0gfCAwKSkgewogICAgICBIRUFQMzJbaTMgPj4gMl0gPSBpMTE7CiAgICAgIGlm
ICghaTExKSB7CiAgICAgICBIRUFQMzJbMTZdID0gSEVBUDMyWzE2XSAmIH4oMSA8PCBpNCk7CiAg
ICAgICBpMjcgPSBpMTI7CiAgICAgICBpNSA9IGkxMzsKICAgICAgIGJyZWFrOwogICAgICB9CiAg
ICAgfSBlbHNlIHsKICAgICAgaWYgKGk2ID4+PiAwIDwgKEhFQVAzMlsxOV0gfCAwKSA+Pj4gMCkg
X2Fib3J0KCk7CiAgICAgIGk0ID0gaTYgKyAxNiB8IDA7CiAgICAgIGlmICgoSEVBUDMyW2k0ID4+
IDJdIHwgMCkgPT0gKGkxMiB8IDApKSBIRUFQMzJbaTQgPj4gMl0gPSBpMTE7IGVsc2UgSEVBUDMy
W2k2ICsgMjAgPj4gMl0gPSBpMTE7CiAgICAgIGlmICghaTExKSB7CiAgICAgICBpMjcgPSBpMTI7
CiAgICAgICBpNSA9IGkxMzsKICAgICAgIGJyZWFrOwogICAgICB9CiAgICAgfQogICAgIGkzID0g
SEVBUDMyWzE5XSB8IDA7CiAgICAgaWYgKGkxMSA+Pj4gMCA8IGkzID4+PiAwKSBfYWJvcnQoKTsK
ICAgICBIRUFQMzJbaTExICsgMjQgPj4gMl0gPSBpNjsKICAgICBpNCA9IEhFQVAzMltpMjMgKyAo
aTEwICsgMTYpID4+IDJdIHwgMDsKICAgICBkbyBpZiAoaTQpIGlmIChpNCA+Pj4gMCA8IGkzID4+
PiAwKSBfYWJvcnQoKTsgZWxzZSB7CiAgICAgIEhFQVAzMltpMTEgKyAxNiA+PiAyXSA9IGk0Owog
ICAgICBIRUFQMzJbaTQgKyAyNCA+PiAyXSA9IGkxMTsKICAgICAgYnJlYWs7CiAgICAgfSB3aGls
ZSAoMCk7CiAgICAgaTQgPSBIRUFQMzJbaTIzICsgKGkxMCArIDIwKSA+PiAyXSB8IDA7CiAgICAg
aWYgKGk0KSBpZiAoaTQgPj4+IDAgPCAoSEVBUDMyWzE5XSB8IDApID4+PiAwKSBfYWJvcnQoKTsg
ZWxzZSB7CiAgICAgIEhFQVAzMltpMTEgKyAyMCA+PiAyXSA9IGk0OwogICAgICBIRUFQMzJbaTQg
KyAyNCA+PiAyXSA9IGkxMTsKICAgICAgaTI3ID0gaTEyOwogICAgICBpNSA9IGkxMzsKICAgICAg
YnJlYWs7CiAgICAgfSBlbHNlIHsKICAgICAgaTI3ID0gaTEyOwogICAgICBpNSA9IGkxMzsKICAg
ICB9CiAgICB9IGVsc2UgewogICAgIGkyNyA9IGkxMjsKICAgICBpNSA9IGkxMzsKICAgIH0KICAg
fSBlbHNlIHsKICAgIGkyNyA9IGk0OwogICAgaTUgPSBpMjA7CiAgIH0gd2hpbGUgKDApOwogICBp
ZiAoaTI3ID4+PiAwIDwgaTIxID4+PiAwID8gKGkxNCA9IGkyMyArIChpMjAgKyAtNCkgfCAwLCBp
MTUgPSBIRUFQMzJbaTE0ID4+IDJdIHwgMCwgKGkxNSAmIDEgfCAwKSAhPSAwKSA6IDApIHsKICAg
IGlmICghKGkxNSAmIDIpKSB7CiAgICAgaWYgKChpMjEgfCAwKSA9PSAoSEVBUDMyWzIxXSB8IDAp
KSB7CiAgICAgIGkyMiA9IChIRUFQMzJbMThdIHwgMCkgKyBpNSB8IDA7CiAgICAgIEhFQVAzMlsx
OF0gPSBpMjI7CiAgICAgIEhFQVAzMlsyMV0gPSBpMjc7CiAgICAgIEhFQVAzMltpMjcgKyA0ID4+
IDJdID0gaTIyIHwgMTsKICAgICAgaWYgKChpMjcgfCAwKSAhPSAoSEVBUDMyWzIwXSB8IDApKSBi
cmVhayBMMTsKICAgICAgSEVBUDMyWzIwXSA9IDA7CiAgICAgIEhFQVAzMlsxN10gPSAwOwogICAg
ICBicmVhayBMMTsKICAgICB9CiAgICAgaWYgKChpMjEgfCAwKSA9PSAoSEVBUDMyWzIwXSB8IDAp
KSB7CiAgICAgIGkyMiA9IChIRUFQMzJbMTddIHwgMCkgKyBpNSB8IDA7CiAgICAgIEhFQVAzMlsx
N10gPSBpMjI7CiAgICAgIEhFQVAzMlsyMF0gPSBpMjc7CiAgICAgIEhFQVAzMltpMjcgKyA0ID4+
IDJdID0gaTIyIHwgMTsKICAgICAgSEVBUDMyW2kyNyArIGkyMiA+PiAyXSA9IGkyMjsKICAgICAg
YnJlYWsgTDE7CiAgICAgfQogICAgIGk4ID0gKGkxNSAmIC04KSArIGk1IHwgMDsKICAgICBpMiA9
IGkxNSA+Pj4gMzsKICAgICBkbyBpZiAoaTE1ID4+PiAwID49IDI1NikgewogICAgICBpMSA9IEhF
QVAzMltpMjMgKyAoaTIwICsgMTYpID4+IDJdIHwgMDsKICAgICAgaTUgPSBIRUFQMzJbaTIzICsg
KGkyMCB8IDQpID4+IDJdIHwgMDsKICAgICAgZG8gaWYgKChpNSB8IDApID09IChpMjEgfCAwKSkg
ewogICAgICAgaTQgPSBpMjMgKyAoaTIwICsgMTIpIHwgMDsKICAgICAgIGk1ID0gSEVBUDMyW2k0
ID4+IDJdIHwgMDsKICAgICAgIGlmICghaTUpIHsKICAgICAgICBpNCA9IGkyMyArIChpMjAgKyA4
KSB8IDA7CiAgICAgICAgaTUgPSBIRUFQMzJbaTQgPj4gMl0gfCAwOwogICAgICAgIGlmICghaTUp
IHsKICAgICAgICAgaTIyID0gMDsKICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgfQog
ICAgICAgd2hpbGUgKDEpIHsKICAgICAgICBpMyA9IGk1ICsgMjAgfCAwOwogICAgICAgIGkyID0g
SEVBUDMyW2kzID4+IDJdIHwgMDsKICAgICAgICBpZiAoaTIpIHsKICAgICAgICAgaTUgPSBpMjsK
ICAgICAgICAgaTQgPSBpMzsKICAgICAgICAgY29udGludWU7CiAgICAgICAgfQogICAgICAgIGkz
ID0gaTUgKyAxNiB8IDA7CiAgICAgICAgaTIgPSBIRUFQMzJbaTMgPj4gMl0gfCAwOwogICAgICAg
IGlmICghaTIpIGJyZWFrOyBlbHNlIHsKICAgICAgICAgaTUgPSBpMjsKICAgICAgICAgaTQgPSBp
MzsKICAgICAgICB9CiAgICAgICB9CiAgICAgICBpZiAoaTQgPj4+IDAgPCAoSEVBUDMyWzE5XSB8
IDApID4+PiAwKSBfYWJvcnQoKTsgZWxzZSB7CiAgICAgICAgSEVBUDMyW2k0ID4+IDJdID0gMDsK
ICAgICAgICBpMjIgPSBpNTsKICAgICAgICBicmVhazsKICAgICAgIH0KICAgICAgfSBlbHNlIHsK
ICAgICAgIGk0ID0gSEVBUDMyW2kyMyArIGkyMCA+PiAyXSB8IDA7CiAgICAgICBpZiAoKGk0ID4+
PiAwID49IChIRUFQMzJbMTldIHwgMCkgPj4+IDAgPyAoaTE4ID0gaTQgKyAxMiB8IDAsIChIRUFQ
MzJbaTE4ID4+IDJdIHwgMCkgPT0gKGkyMSB8IDApKSA6IDApID8gKGkxOSA9IGk1ICsgOCB8IDAs
IChIRUFQMzJbaTE5ID4+IDJdIHwgMCkgPT0gKGkyMSB8IDApKSA6IDApIHsKICAgICAgICBIRUFQ
MzJbaTE4ID4+IDJdID0gaTU7CiAgICAgICAgSEVBUDMyW2kxOSA+PiAyXSA9IGk0OwogICAgICAg
IGkyMiA9IGk1OwogICAgICAgIGJyZWFrOwogICAgICAgfQogICAgICAgX2Fib3J0KCk7CiAgICAg
IH0gd2hpbGUgKDApOwogICAgICBpZiAoaTEpIHsKICAgICAgIGk1ID0gSEVBUDMyW2kyMyArIChp
MjAgKyAyMCkgPj4gMl0gfCAwOwogICAgICAgaTQgPSAzNjQgKyAoaTUgPDwgMikgfCAwOwogICAg
ICAgaWYgKChpMjEgfCAwKSA9PSAoSEVBUDMyW2k0ID4+IDJdIHwgMCkpIHsKICAgICAgICBIRUFQ
MzJbaTQgPj4gMl0gPSBpMjI7CiAgICAgICAgaWYgKCFpMjIpIHsKICAgICAgICAgSEVBUDMyWzE2
XSA9IEhFQVAzMlsxNl0gJiB+KDEgPDwgaTUpOwogICAgICAgICBicmVhazsKICAgICAgICB9CiAg
ICAgICB9IGVsc2UgewogICAgICAgIGlmIChpMSA+Pj4gMCA8IChIRUFQMzJbMTldIHwgMCkgPj4+
IDApIF9hYm9ydCgpOwogICAgICAgIGk1ID0gaTEgKyAxNiB8IDA7CiAgICAgICAgaWYgKChIRUFQ
MzJbaTUgPj4gMl0gfCAwKSA9PSAoaTIxIHwgMCkpIEhFQVAzMltpNSA+PiAyXSA9IGkyMjsgZWxz
ZSBIRUFQMzJbaTEgKyAyMCA+PiAyXSA9IGkyMjsKICAgICAgICBpZiAoIWkyMikgYnJlYWs7CiAg
ICAgICB9CiAgICAgICBpNSA9IEhFQVAzMlsxOV0gfCAwOwogICAgICAgaWYgKGkyMiA+Pj4gMCA8
IGk1ID4+PiAwKSBfYWJvcnQoKTsKICAgICAgIEhFQVAzMltpMjIgKyAyNCA+PiAyXSA9IGkxOwog
ICAgICAgaTQgPSBIRUFQMzJbaTIzICsgKGkyMCArIDgpID4+IDJdIHwgMDsKICAgICAgIGRvIGlm
IChpNCkgaWYgKGk0ID4+PiAwIDwgaTUgPj4+IDApIF9hYm9ydCgpOyBlbHNlIHsKICAgICAgICBI
RUFQMzJbaTIyICsgMTYgPj4gMl0gPSBpNDsKICAgICAgICBIRUFQMzJbaTQgKyAyNCA+PiAyXSA9
IGkyMjsKICAgICAgICBicmVhazsKICAgICAgIH0gd2hpbGUgKDApOwogICAgICAgaTIgPSBIRUFQ
MzJbaTIzICsgKGkyMCArIDEyKSA+PiAyXSB8IDA7CiAgICAgICBpZiAoaTIpIGlmIChpMiA+Pj4g
MCA8IChIRUFQMzJbMTldIHwgMCkgPj4+IDApIF9hYm9ydCgpOyBlbHNlIHsKICAgICAgICBIRUFQ
MzJbaTIyICsgMjAgPj4gMl0gPSBpMjsKICAgICAgICBIRUFQMzJbaTIgKyAyNCA+PiAyXSA9IGky
MjsKICAgICAgICBicmVhazsKICAgICAgIH0KICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgIGkz
ID0gSEVBUDMyW2kyMyArIGkyMCA+PiAyXSB8IDA7CiAgICAgIGk1ID0gSEVBUDMyW2kyMyArIChp
MjAgfCA0KSA+PiAyXSB8IDA7CiAgICAgIGk0ID0gMTAwICsgKGkyIDw8IDEgPDwgMikgfCAwOwog
ICAgICBkbyBpZiAoKGkzIHwgMCkgIT0gKGk0IHwgMCkpIHsKICAgICAgIGlmIChpMyA+Pj4gMCA+
PSAoSEVBUDMyWzE5XSB8IDApID4+PiAwID8gKEhFQVAzMltpMyArIDEyID4+IDJdIHwgMCkgPT0g
KGkyMSB8IDApIDogMCkgYnJlYWs7CiAgICAgICBfYWJvcnQoKTsKICAgICAgfSB3aGlsZSAoMCk7
CiAgICAgIGlmICgoaTUgfCAwKSA9PSAoaTMgfCAwKSkgewogICAgICAgSEVBUDMyWzE1XSA9IEhF
QVAzMlsxNV0gJiB+KDEgPDwgaTIpOwogICAgICAgYnJlYWs7CiAgICAgIH0KICAgICAgZG8gaWYg
KChpNSB8IDApID09IChpNCB8IDApKSBpMTYgPSBpNSArIDggfCAwOyBlbHNlIHsKICAgICAgIGlm
IChpNSA+Pj4gMCA+PSAoSEVBUDMyWzE5XSB8IDApID4+PiAwID8gKGkxNyA9IGk1ICsgOCB8IDAs
IChIRUFQMzJbaTE3ID4+IDJdIHwgMCkgPT0gKGkyMSB8IDApKSA6IDApIHsKICAgICAgICBpMTYg
PSBpMTc7CiAgICAgICAgYnJlYWs7CiAgICAgICB9CiAgICAgICBfYWJvcnQoKTsKICAgICAgfSB3
aGlsZSAoMCk7CiAgICAgIEhFQVAzMltpMyArIDEyID4+IDJdID0gaTU7CiAgICAgIEhFQVAzMltp
MTYgPj4gMl0gPSBpMzsKICAgICB9IHdoaWxlICgwKTsKICAgICBIRUFQMzJbaTI3ICsgNCA+PiAy
XSA9IGk4IHwgMTsKICAgICBIRUFQMzJbaTI3ICsgaTggPj4gMl0gPSBpODsKICAgICBpZiAoKGky
NyB8IDApID09IChIRUFQMzJbMjBdIHwgMCkpIHsKICAgICAgSEVBUDMyWzE3XSA9IGk4OwogICAg
ICBicmVhayBMMTsKICAgICB9IGVsc2UgaTUgPSBpODsKICAgIH0gZWxzZSB7CiAgICAgSEVBUDMy
W2kxNCA+PiAyXSA9IGkxNSAmIC0yOwogICAgIEhFQVAzMltpMjcgKyA0ID4+IDJdID0gaTUgfCAx
OwogICAgIEhFQVAzMltpMjcgKyBpNSA+PiAyXSA9IGk1OwogICAgfQogICAgaTQgPSBpNSA+Pj4g
MzsKICAgIGlmIChpNSA+Pj4gMCA8IDI1NikgewogICAgIGkzID0gaTQgPDwgMTsKICAgICBpNSA9
IDEwMCArIChpMyA8PCAyKSB8IDA7CiAgICAgaTEgPSBIRUFQMzJbMTVdIHwgMDsKICAgICBpMiA9
IDEgPDwgaTQ7CiAgICAgaWYgKGkxICYgaTIpIHsKICAgICAgaTIgPSAxMDAgKyAoaTMgKyAyIDw8
IDIpIHwgMDsKICAgICAgaTEgPSBIRUFQMzJbaTIgPj4gMl0gfCAwOwogICAgICBpZiAoaTEgPj4+
IDAgPCAoSEVBUDMyWzE5XSB8IDApID4+PiAwKSBfYWJvcnQoKTsgZWxzZSB7CiAgICAgICBpMjQg
PSBpMjsKICAgICAgIGkyNSA9IGkxOwogICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgSEVBUDMy
WzE1XSA9IGkxIHwgaTI7CiAgICAgIGkyNCA9IDEwMCArIChpMyArIDIgPDwgMikgfCAwOwogICAg
ICBpMjUgPSBpNTsKICAgICB9CiAgICAgSEVBUDMyW2kyNCA+PiAyXSA9IGkyNzsKICAgICBIRUFQ
MzJbaTI1ICsgMTIgPj4gMl0gPSBpMjc7CiAgICAgSEVBUDMyW2kyNyArIDggPj4gMl0gPSBpMjU7
CiAgICAgSEVBUDMyW2kyNyArIDEyID4+IDJdID0gaTU7CiAgICAgYnJlYWsgTDE7CiAgICB9CiAg
ICBpMSA9IGk1ID4+PiA4OwogICAgaWYgKGkxKSBpZiAoaTUgPj4+IDAgPiAxNjc3NzIxNSkgaTQg
PSAzMTsgZWxzZSB7CiAgICAgaTIxID0gKGkxICsgMTA0ODMyMCB8IDApID4+PiAxNiAmIDg7CiAg
ICAgaTIyID0gaTEgPDwgaTIxOwogICAgIGkyMCA9IChpMjIgKyA1MjAxOTIgfCAwKSA+Pj4gMTYg
JiA0OwogICAgIGkyMiA9IGkyMiA8PCBpMjA7CiAgICAgaTQgPSAoaTIyICsgMjQ1NzYwIHwgMCkg
Pj4+IDE2ICYgMjsKICAgICBpNCA9IDE0IC0gKGkyMCB8IGkyMSB8IGk0KSArIChpMjIgPDwgaTQg
Pj4+IDE1KSB8IDA7CiAgICAgaTQgPSBpNSA+Pj4gKGk0ICsgNyB8IDApICYgMSB8IGk0IDw8IDE7
CiAgICB9IGVsc2UgaTQgPSAwOwogICAgaTIgPSAzNjQgKyAoaTQgPDwgMikgfCAwOwogICAgSEVB
UDMyW2kyNyArIDI4ID4+IDJdID0gaTQ7CiAgICBIRUFQMzJbaTI3ICsgMjAgPj4gMl0gPSAwOwog
ICAgSEVBUDMyW2kyNyArIDE2ID4+IDJdID0gMDsKICAgIGkxID0gSEVBUDMyWzE2XSB8IDA7CiAg
ICBpMyA9IDEgPDwgaTQ7CiAgICBMMTY4IDogZG8gaWYgKGkxICYgaTMpIHsKICAgICBpMiA9IEhF
QVAzMltpMiA+PiAyXSB8IDA7CiAgICAgTDE3MSA6IGRvIGlmICgoSEVBUDMyW2kyICsgNCA+PiAy
XSAmIC04IHwgMCkgIT0gKGk1IHwgMCkpIHsKICAgICAgaTQgPSBpNSA8PCAoKGk0IHwgMCkgPT0g
MzEgPyAwIDogMjUgLSAoaTQgPj4+IDEpIHwgMCk7CiAgICAgIHdoaWxlICgxKSB7CiAgICAgICBp
MSA9IGkyICsgMTYgKyAoaTQgPj4+IDMxIDw8IDIpIHwgMDsKICAgICAgIGkzID0gSEVBUDMyW2kx
ID4+IDJdIHwgMDsKICAgICAgIGlmICghaTMpIGJyZWFrOwogICAgICAgaWYgKChIRUFQMzJbaTMg
KyA0ID4+IDJdICYgLTggfCAwKSA9PSAoaTUgfCAwKSkgewogICAgICAgIGkyNiA9IGkzOwogICAg
ICAgIGJyZWFrIEwxNzE7CiAgICAgICB9IGVsc2UgewogICAgICAgIGk0ID0gaTQgPDwgMTsKICAg
ICAgICBpMiA9IGkzOwogICAgICAgfQogICAgICB9CiAgICAgIGlmIChpMSA+Pj4gMCA8IChIRUFQ
MzJbMTldIHwgMCkgPj4+IDApIF9hYm9ydCgpOyBlbHNlIHsKICAgICAgIEhFQVAzMltpMSA+PiAy
XSA9IGkyNzsKICAgICAgIEhFQVAzMltpMjcgKyAyNCA+PiAyXSA9IGkyOwogICAgICAgSEVBUDMy
W2kyNyArIDEyID4+IDJdID0gaTI3OwogICAgICAgSEVBUDMyW2kyNyArIDggPj4gMl0gPSBpMjc7
CiAgICAgICBicmVhayBMMTY4OwogICAgICB9CiAgICAgfSBlbHNlIGkyNiA9IGkyOyB3aGlsZSAo
MCk7CiAgICAgaTEgPSBpMjYgKyA4IHwgMDsKICAgICBpMiA9IEhFQVAzMltpMSA+PiAyXSB8IDA7
CiAgICAgaTIyID0gSEVBUDMyWzE5XSB8IDA7CiAgICAgaWYgKGkyID4+PiAwID49IGkyMiA+Pj4g
MCAmIGkyNiA+Pj4gMCA+PSBpMjIgPj4+IDApIHsKICAgICAgSEVBUDMyW2kyICsgMTIgPj4gMl0g
PSBpMjc7CiAgICAgIEhFQVAzMltpMSA+PiAyXSA9IGkyNzsKICAgICAgSEVBUDMyW2kyNyArIDgg
Pj4gMl0gPSBpMjsKICAgICAgSEVBUDMyW2kyNyArIDEyID4+IDJdID0gaTI2OwogICAgICBIRUFQ
MzJbaTI3ICsgMjQgPj4gMl0gPSAwOwogICAgICBicmVhazsKICAgICB9IGVsc2UgX2Fib3J0KCk7
CiAgICB9IGVsc2UgewogICAgIEhFQVAzMlsxNl0gPSBpMSB8IGkzOwogICAgIEhFQVAzMltpMiA+
PiAyXSA9IGkyNzsKICAgICBIRUFQMzJbaTI3ICsgMjQgPj4gMl0gPSBpMjsKICAgICBIRUFQMzJb
aTI3ICsgMTIgPj4gMl0gPSBpMjc7CiAgICAgSEVBUDMyW2kyNyArIDggPj4gMl0gPSBpMjc7CiAg
ICB9IHdoaWxlICgwKTsKICAgIGkyMiA9IChIRUFQMzJbMjNdIHwgMCkgKyAtMSB8IDA7CiAgICBI
RUFQMzJbMjNdID0gaTIyOwogICAgaWYgKCFpMjIpIGkxID0gNTE2OyBlbHNlIGJyZWFrIEwxOwog
ICAgd2hpbGUgKDEpIHsKICAgICBpMSA9IEhFQVAzMltpMSA+PiAyXSB8IDA7CiAgICAgaWYgKCFp
MSkgYnJlYWs7IGVsc2UgaTEgPSBpMSArIDggfCAwOwogICAgfQogICAgSEVBUDMyWzIzXSA9IC0x
OwogICAgYnJlYWsgTDE7CiAgIH0KICB9IHdoaWxlICgwKTsKICBfYWJvcnQoKTsKIH0gd2hpbGUg
KDApOwogcmV0dXJuOwp9CgpmdW5jdGlvbiBfX191ZGl2bW9kZGk0KGk4LCBpNywgaTIsIGkxMiwg
aTE0KSB7CiBpOCA9IGk4IHwgMDsKIGk3ID0gaTcgfCAwOwogaTIgPSBpMiB8IDA7CiBpMTIgPSBp
MTIgfCAwOwogaTE0ID0gaTE0IHwgMDsKIHZhciBpMSA9IDAsIGkzID0gMCwgaTQgPSAwLCBpNSA9
IDAsIGk2ID0gMCwgaTkgPSAwLCBpMTAgPSAwLCBpMTEgPSAwLCBpMTMgPSAwLCBpMTUgPSAwOwog
aTExID0gaTg7CiBpOSA9IGk3OwogaTEwID0gaTk7CiBpNiA9IGkyOwogaTEzID0gaTEyOwogaTQg
PSBpMTM7CiBpZiAoIWkxMCkgewogIGkxID0gKGkxNCB8IDApICE9IDA7CiAgaWYgKCFpNCkgewog
ICBpZiAoaTEpIHsKICAgIEhFQVAzMltpMTQgPj4gMl0gPSAoaTExID4+PiAwKSAlIChpNiA+Pj4g
MCk7CiAgICBIRUFQMzJbaTE0ICsgNCA+PiAyXSA9IDA7CiAgIH0KICAgaTkgPSAwOwogICBpMTAg
PSAoaTExID4+PiAwKSAvIChpNiA+Pj4gMCkgPj4+IDA7CiAgIHJldHVybiAodGVtcFJldDAgPSBp
OSwgaTEwKSB8IDA7CiAgfSBlbHNlIHsKICAgaWYgKCFpMSkgewogICAgaTkgPSAwOwogICAgaTEw
ID0gMDsKICAgIHJldHVybiAodGVtcFJldDAgPSBpOSwgaTEwKSB8IDA7CiAgIH0KICAgSEVBUDMy
W2kxNCA+PiAyXSA9IGk4IHwgMDsKICAgSEVBUDMyW2kxNCArIDQgPj4gMl0gPSBpNyAmIDA7CiAg
IGk5ID0gMDsKICAgaTEwID0gMDsKICAgcmV0dXJuICh0ZW1wUmV0MCA9IGk5LCBpMTApIHwgMDsK
ICB9CiB9CiBpNSA9IChpNCB8IDApID09IDA7CiBkbyBpZiAoaTYpIHsKICBpZiAoIWk1KSB7CiAg
IGkzID0gKE1hdGhfY2x6MzIoaTQgfCAwKSB8IDApIC0gKE1hdGhfY2x6MzIoaTEwIHwgMCkgfCAw
KSB8IDA7CiAgIGlmIChpMyA+Pj4gMCA8PSAzMSkgewogICAgaTEgPSBpMyArIDEgfCAwOwogICAg
aTkgPSAzMSAtIGkzIHwgMDsKICAgIGk2ID0gaTMgLSAzMSA+PiAzMTsKICAgIGk0ID0gaTE7CiAg
ICBpNSA9IGkxMSA+Pj4gKGkxID4+PiAwKSAmIGk2IHwgaTEwIDw8IGk5OwogICAgaTYgPSBpMTAg
Pj4+IChpMSA+Pj4gMCkgJiBpNjsKICAgIGkxID0gMDsKICAgIGkzID0gaTExIDw8IGk5OwogICAg
YnJlYWs7CiAgIH0KICAgaWYgKCFpMTQpIHsKICAgIGk5ID0gMDsKICAgIGkxMCA9IDA7CiAgICBy
ZXR1cm4gKHRlbXBSZXQwID0gaTksIGkxMCkgfCAwOwogICB9CiAgIEhFQVAzMltpMTQgPj4gMl0g
PSBpOCB8IDA7CiAgIEhFQVAzMltpMTQgKyA0ID4+IDJdID0gaTkgfCBpNyAmIDA7CiAgIGk5ID0g
MDsKICAgaTEwID0gMDsKICAgcmV0dXJuICh0ZW1wUmV0MCA9IGk5LCBpMTApIHwgMDsKICB9CiAg
aTUgPSBpNiAtIDEgfCAwOwogIGlmIChpNSAmIGk2KSB7CiAgIGkzID0gKE1hdGhfY2x6MzIoaTYg
fCAwKSB8IDApICsgMzMgLSAoTWF0aF9jbHozMihpMTAgfCAwKSB8IDApIHwgMDsKICAgaTE1ID0g
NjQgLSBpMyB8IDA7CiAgIGk5ID0gMzIgLSBpMyB8IDA7CiAgIGk4ID0gaTkgPj4gMzE7CiAgIGk3
ID0gaTMgLSAzMiB8IDA7CiAgIGk2ID0gaTcgPj4gMzE7CiAgIGk0ID0gaTM7CiAgIGk1ID0gaTkg
LSAxID4+IDMxICYgaTEwID4+PiAoaTcgPj4+IDApIHwgKGkxMCA8PCBpOSB8IGkxMSA+Pj4gKGkz
ID4+PiAwKSkgJiBpNjsKICAgaTYgPSBpNiAmIGkxMCA+Pj4gKGkzID4+PiAwKTsKICAgaTEgPSBp
MTEgPDwgaTE1ICYgaTg7CiAgIGkzID0gKGkxMCA8PCBpMTUgfCBpMTEgPj4+IChpNyA+Pj4gMCkp
ICYgaTggfCBpMTEgPDwgaTkgJiBpMyAtIDMzID4+IDMxOwogICBicmVhazsKICB9CiAgaWYgKGkx
NCkgewogICBIRUFQMzJbaTE0ID4+IDJdID0gaTUgJiBpMTE7CiAgIEhFQVAzMltpMTQgKyA0ID4+
IDJdID0gMDsKICB9CiAgaWYgKChpNiB8IDApID09IDEpIHsKICAgaTkgPSBpOSB8IGk3ICYgMDsK
ICAgaTEwID0gaTggfCAwIHwgMDsKICAgcmV0dXJuICh0ZW1wUmV0MCA9IGk5LCBpMTApIHwgMDsK
ICB9IGVsc2UgewogICBpOCA9IF9sbHZtX2N0dHpfaTMyKGk2IHwgMCkgfCAwOwogICBpOSA9IGkx
MCA+Pj4gKGk4ID4+PiAwKSB8IDA7CiAgIGkxMCA9IGkxMCA8PCAzMiAtIGk4IHwgaTExID4+PiAo
aTggPj4+IDApIHwgMDsKICAgcmV0dXJuICh0ZW1wUmV0MCA9IGk5LCBpMTApIHwgMDsKICB9CiB9
IGVsc2UgewogIGlmIChpNSkgewogICBpZiAoaTE0KSB7CiAgICBIRUFQMzJbaTE0ID4+IDJdID0g
KGkxMCA+Pj4gMCkgJSAoaTYgPj4+IDApOwogICAgSEVBUDMyW2kxNCArIDQgPj4gMl0gPSAwOwog
ICB9CiAgIGk5ID0gMDsKICAgaTEwID0gKGkxMCA+Pj4gMCkgLyAoaTYgPj4+IDApID4+PiAwOwog
ICByZXR1cm4gKHRlbXBSZXQwID0gaTksIGkxMCkgfCAwOwogIH0KICBpZiAoIWkxMSkgewogICBp
ZiAoaTE0KSB7CiAgICBIRUFQMzJbaTE0ID4+IDJdID0gMDsKICAgIEhFQVAzMltpMTQgKyA0ID4+
IDJdID0gKGkxMCA+Pj4gMCkgJSAoaTQgPj4+IDApOwogICB9CiAgIGk5ID0gMDsKICAgaTEwID0g
KGkxMCA+Pj4gMCkgLyAoaTQgPj4+IDApID4+PiAwOwogICByZXR1cm4gKHRlbXBSZXQwID0gaTks
IGkxMCkgfCAwOwogIH0KICBpNSA9IGk0IC0gMSB8IDA7CiAgaWYgKCEoaTUgJiBpNCkpIHsKICAg
aWYgKGkxNCkgewogICAgSEVBUDMyW2kxNCA+PiAyXSA9IGk4IHwgMDsKICAgIEhFQVAzMltpMTQg
KyA0ID4+IDJdID0gaTUgJiBpMTAgfCBpNyAmIDA7CiAgIH0KICAgaTkgPSAwOwogICBpMTAgPSBp
MTAgPj4+ICgoX2xsdm1fY3R0el9pMzIoaTQgfCAwKSB8IDApID4+PiAwKTsKICAgcmV0dXJuICh0
ZW1wUmV0MCA9IGk5LCBpMTApIHwgMDsKICB9CiAgaTMgPSAoTWF0aF9jbHozMihpNCB8IDApIHwg
MCkgLSAoTWF0aF9jbHozMihpMTAgfCAwKSB8IDApIHwgMDsKICBpZiAoaTMgPj4+IDAgPD0gMzAp
IHsKICAgaTYgPSBpMyArIDEgfCAwOwogICBpMyA9IDMxIC0gaTMgfCAwOwogICBpNCA9IGk2Owog
ICBpNSA9IGkxMCA8PCBpMyB8IGkxMSA+Pj4gKGk2ID4+PiAwKTsKICAgaTYgPSBpMTAgPj4+IChp
NiA+Pj4gMCk7CiAgIGkxID0gMDsKICAgaTMgPSBpMTEgPDwgaTM7CiAgIGJyZWFrOwogIH0KICBp
ZiAoIWkxNCkgewogICBpOSA9IDA7CiAgIGkxMCA9IDA7CiAgIHJldHVybiAodGVtcFJldDAgPSBp
OSwgaTEwKSB8IDA7CiAgfQogIEhFQVAzMltpMTQgPj4gMl0gPSBpOCB8IDA7CiAgSEVBUDMyW2kx
NCArIDQgPj4gMl0gPSBpOSB8IGk3ICYgMDsKICBpOSA9IDA7CiAgaTEwID0gMDsKICByZXR1cm4g
KHRlbXBSZXQwID0gaTksIGkxMCkgfCAwOwogfSB3aGlsZSAoMCk7CiBpZiAoIWk0KSB7CiAgaTkg
PSBpMzsKICBpNCA9IDA7CiAgaTMgPSAwOwogfSBlbHNlIHsKICBpMTAgPSBpMiB8IDAgfCAwOwog
IGk5ID0gaTEzIHwgaTEyICYgMDsKICBpNyA9IF9pNjRBZGQoaTEwIHwgMCwgaTkgfCAwLCAtMSwg
LTEpIHwgMDsKICBpOCA9IHRlbXBSZXQwOwogIGkyID0gaTM7CiAgaTMgPSAwOwogIGRvIHsKICAg
aTE1ID0gaTI7CiAgIGkyID0gaTEgPj4+IDMxIHwgaTIgPDwgMTsKICAgaTEgPSBpMyB8IGkxIDw8
IDE7CiAgIGkxNSA9IGk1IDw8IDEgfCBpMTUgPj4+IDMxIHwgMDsKICAgaTEzID0gaTUgPj4+IDMx
IHwgaTYgPDwgMSB8IDA7CiAgIF9pNjRTdWJ0cmFjdChpNywgaTgsIGkxNSwgaTEzKSB8IDA7CiAg
IGkxMSA9IHRlbXBSZXQwOwogICBpMTIgPSBpMTEgPj4gMzEgfCAoKGkxMSB8IDApIDwgMCA/IC0x
IDogMCkgPDwgMTsKICAgaTMgPSBpMTIgJiAxOwogICBpNSA9IF9pNjRTdWJ0cmFjdChpMTUsIGkx
MywgaTEyICYgaTEwLCAoKChpMTEgfCAwKSA8IDAgPyAtMSA6IDApID4+IDMxIHwgKChpMTEgfCAw
KSA8IDAgPyAtMSA6IDApIDw8IDEpICYgaTkpIHwgMDsKICAgaTYgPSB0ZW1wUmV0MDsKICAgaTQg
PSBpNCAtIDEgfCAwOwogIH0gd2hpbGUgKChpNCB8IDApICE9IDApOwogIGk5ID0gaTI7CiAgaTQg
PSAwOwogfQogaTIgPSAwOwogaWYgKGkxNCkgewogIEhFQVAzMltpMTQgPj4gMl0gPSBpNTsKICBI
RUFQMzJbaTE0ICsgNCA+PiAyXSA9IGk2OwogfQogaTkgPSAoaTEgfCAwKSA+Pj4gMzEgfCAoaTkg
fCBpMikgPDwgMSB8IChpMiA8PCAxIHwgaTEgPj4+IDMxKSAmIDAgfCBpNDsKIGkxMCA9IChpMSA8
PCAxIHwgMCA+Pj4gMzEpICYgLTIgfCBpMzsKIHJldHVybiAodGVtcFJldDAgPSBpOSwgaTEwKSB8
IDA7Cn0KCmZ1bmN0aW9uIF9fWjE1ZmFubmt1Y2hfd29ya2VyUHYoaTIpIHsKIGkyID0gaTIgfCAw
OwogdmFyIGkxID0gMCwgaTMgPSAwLCBpNCA9IDAsIGk1ID0gMCwgaTYgPSAwLCBpNyA9IDAsIGk4
ID0gMCwgaTkgPSAwLCBpMTAgPSAwLCBpMTEgPSAwLCBpMTIgPSAwLCBpMTMgPSAwLCBpMTQgPSAw
LCBpMTUgPSAwLCBpMTYgPSAwLCBpMTcgPSAwLCBpMTggPSAwLCBpMTkgPSAwOwogaTEgPSBIRUFQ
MzJbaTIgKyA0ID4+IDJdIHwgMDsKIGkxNCA9IGkxIDw8IDI7CiBpMTIgPSBfbWFsbG9jKGkxNCkg
fCAwOwogaTEzID0gX21hbGxvYyhpMTQpIHwgMDsKIGkxNCA9IF9tYWxsb2MoaTE0KSB8IDA7CiBp
NCA9IChpMSB8IDApID4gMDsKIGlmIChpNCkgewogIGkzID0gMDsKICBkbyB7CiAgIEhFQVAzMltp
MTIgKyAoaTMgPDwgMikgPj4gMl0gPSBpMzsKICAgaTMgPSBpMyArIDEgfCAwOwogIH0gd2hpbGUg
KChpMyB8IDApICE9IChpMSB8IDApKTsKICBpMTEgPSBpMSArIC0xIHwgMDsKICBpOSA9IEhFQVAz
MltpMiA+PiAyXSB8IDA7CiAgSEVBUDMyW2kxMiArIChpOSA8PCAyKSA+PiAyXSA9IGkxMTsKICBp
MTAgPSBpMTIgKyAoaTExIDw8IDIpIHwgMDsKICBIRUFQMzJbaTEwID4+IDJdID0gaTk7CiAgaWYg
KGk0KSB7CiAgIGk5ID0gaTEgPDwgMjsKICAgaTIgPSAwOwogICBpNCA9IGkxOwogICBMNiA6IHdo
aWxlICgxKSB7CiAgICBpZiAoKGk0IHwgMCkgPiAxKSB7CiAgICAgZG8gewogICAgICBpOCA9IGk0
OwogICAgICBpNCA9IGk0ICsgLTEgfCAwOwogICAgICBIRUFQMzJbaTE0ICsgKGk0IDw8IDIpID4+
IDJdID0gaTg7CiAgICAgfSB3aGlsZSAoKGk0IHwgMCkgPiAxKTsKICAgICBpNCA9IDE7CiAgICB9
CiAgICBpNyA9IEhFQVAzMltpMTIgPj4gMl0gfCAwOwogICAgaWYgKChpNyB8IDApICE9IDAgPyAo
SEVBUDMyW2kxMCA+PiAyXSB8IDApICE9IChpMTEgfCAwKSA6IDApIHsKICAgICBfbWVtY3B5KGkx
MyB8IDAsIGkxMiB8IDAsIGk5IHwgMCkgfCAwOwogICAgIGk1ID0gMDsKICAgICBpOCA9IEhFQVAz
MltpMTMgPj4gMl0gfCAwOwogICAgIGRvIHsKICAgICAgaTYgPSBpOCArIC0xIHwgMDsKICAgICAg
aWYgKChpNiB8IDApID4gMSkgewogICAgICAgaTMgPSAxOwogICAgICAgZG8gewogICAgICAgIGkx
OSA9IGkxMyArIChpMyA8PCAyKSB8IDA7CiAgICAgICAgaTE4ID0gSEVBUDMyW2kxOSA+PiAyXSB8
IDA7CiAgICAgICAgaTE3ID0gaTEzICsgKGk2IDw8IDIpIHwgMDsKICAgICAgICBIRUFQMzJbaTE5
ID4+IDJdID0gSEVBUDMyW2kxNyA+PiAyXTsKICAgICAgICBIRUFQMzJbaTE3ID4+IDJdID0gaTE4
OwogICAgICAgIGkzID0gaTMgKyAxIHwgMDsKICAgICAgICBpNiA9IGk2ICsgLTEgfCAwOwogICAg
ICAgfSB3aGlsZSAoKGkzIHwgMCkgPCAoaTYgfCAwKSk7CiAgICAgIH0KICAgICAgaTUgPSBpNSAr
IDEgfCAwOwogICAgICBpNiA9IGkxMyArIChpOCA8PCAyKSB8IDA7CiAgICAgIGkzID0gaTg7CiAg
ICAgIGk4ID0gSEVBUDMyW2k2ID4+IDJdIHwgMDsKICAgICAgSEVBUDMyW2k2ID4+IDJdID0gaTM7
CiAgICAgfSB3aGlsZSAoKGk4IHwgMCkgIT0gMCk7CiAgICAgaTIgPSAoaTIgfCAwKSA8IChpNSB8
IDApID8gaTUgOiBpMjsKICAgIH0KICAgIGlmICgoaTQgfCAwKSA+PSAoaTExIHwgMCkpIHsKICAg
ICBpMyA9IDMyOwogICAgIGJyZWFrOwogICAgfQogICAgd2hpbGUgKDEpIHsKICAgICBpZiAoKGk0
IHwgMCkgPiAwKSB7CiAgICAgIGk2ID0gMDsKICAgICAgZG8gewogICAgICAgaTggPSBpNjsKICAg
ICAgIGk2ID0gaTYgKyAxIHwgMDsKICAgICAgIEhFQVAzMltpMTIgKyAoaTggPDwgMikgPj4gMl0g
PSBIRUFQMzJbaTEyICsgKGk2IDw8IDIpID4+IDJdOwogICAgICB9IHdoaWxlICgoaTYgfCAwKSAh
PSAoaTQgfCAwKSk7CiAgICAgIGk2ID0gaTQ7CiAgICAgfSBlbHNlIGk2ID0gMDsKICAgICBIRUFQ
MzJbaTEyICsgKGk2IDw8IDIpID4+IDJdID0gaTc7CiAgICAgaTcgPSBpMTQgKyAoaTQgPDwgMikg
fCAwOwogICAgIGk4ID0gSEVBUDMyW2k3ID4+IDJdIHwgMDsKICAgICBIRUFQMzJbaTcgPj4gMl0g
PSBpOCArIC0xOwogICAgIGlmICgoaTggfCAwKSA+IDEpIGNvbnRpbnVlIEw2OwogICAgIGk0ID0g
aTQgKyAxIHwgMDsKICAgICBpZiAoKGk0IHwgMCkgPj0gKGkxMSB8IDApKSB7CiAgICAgIGkzID0g
MzI7CiAgICAgIGJyZWFrIEw2OwogICAgIH0KICAgICBpNyA9IEhFQVAzMltpMTIgPj4gMl0gfCAw
OwogICAgfQogICB9CiAgIGlmICgoaTMgfCAwKSA9PSAzMikgewogICAgX2ZyZWUoaTEyKTsKICAg
IF9mcmVlKGkxMyk7CiAgICBfZnJlZShpMTQpOwogICAgcmV0dXJuIGkyIHwgMDsKICAgfQogIH0g
ZWxzZSB7CiAgIGkxNSA9IGkxMDsKICAgaTE2ID0gaTExOwogIH0KIH0gZWxzZSB7CiAgaTE2ID0g
aTEgKyAtMSB8IDA7CiAgaTEwID0gSEVBUDMyW2kyID4+IDJdIHwgMDsKICBIRUFQMzJbaTEyICsg
KGkxMCA8PCAyKSA+PiAyXSA9IGkxNjsKICBpMTUgPSBpMTIgKyAoaTE2IDw8IDIpIHwgMDsKICBI
RUFQMzJbaTE1ID4+IDJdID0gaTEwOwogfQogaTIgPSAwOwogTDM2IDogd2hpbGUgKDEpIHsKICBp
ZiAoKGkxIHwgMCkgPiAxKSB7CiAgIGRvIHsKICAgIGkxMCA9IGkxOwogICAgaTEgPSBpMSArIC0x
IHwgMDsKICAgIEhFQVAzMltpMTQgKyAoaTEgPDwgMikgPj4gMl0gPSBpMTA7CiAgIH0gd2hpbGUg
KChpMSB8IDApID4gMSk7CiAgIGkxID0gMTsKICB9CiAgaTQgPSBIRUFQMzJbaTEyID4+IDJdIHwg
MDsKICBpZiAoKGk0IHwgMCkgIT0gMCA/IChIRUFQMzJbaTE1ID4+IDJdIHwgMCkgIT0gKGkxNiB8
IDApIDogMCkgewogICBpMyA9IDA7CiAgIGk3ID0gSEVBUDMyW2kxMyA+PiAyXSB8IDA7CiAgIGRv
IHsKICAgIGk1ID0gaTcgKyAtMSB8IDA7CiAgICBpZiAoKGk1IHwgMCkgPiAxKSB7CiAgICAgaTYg
PSAxOwogICAgIGRvIHsKICAgICAgaTggPSBpMTMgKyAoaTYgPDwgMikgfCAwOwogICAgICBpOSA9
IEhFQVAzMltpOCA+PiAyXSB8IDA7CiAgICAgIGkxMCA9IGkxMyArIChpNSA8PCAyKSB8IDA7CiAg
ICAgIEhFQVAzMltpOCA+PiAyXSA9IEhFQVAzMltpMTAgPj4gMl07CiAgICAgIEhFQVAzMltpMTAg
Pj4gMl0gPSBpOTsKICAgICAgaTYgPSBpNiArIDEgfCAwOwogICAgICBpNSA9IGk1ICsgLTEgfCAw
OwogICAgIH0gd2hpbGUgKChpNiB8IDApIDwgKGk1IHwgMCkpOwogICAgfQogICAgaTMgPSBpMyAr
IDEgfCAwOwogICAgaTEwID0gaTEzICsgKGk3IDw8IDIpIHwgMDsKICAgIGk5ID0gaTc7CiAgICBp
NyA9IEhFQVAzMltpMTAgPj4gMl0gfCAwOwogICAgSEVBUDMyW2kxMCA+PiAyXSA9IGk5OwogICB9
IHdoaWxlICgoaTcgfCAwKSAhPSAwKTsKICAgaTIgPSAoaTIgfCAwKSA8IChpMyB8IDApID8gaTMg
OiBpMjsKICB9CiAgaWYgKChpMSB8IDApID49IChpMTYgfCAwKSkgewogICBpMyA9IDMyOwogICBi
cmVhazsKICB9CiAgd2hpbGUgKDEpIHsKICAgaWYgKChpMSB8IDApID4gMCkgewogICAgaTMgPSAw
OwogICAgZG8gewogICAgIGkxMCA9IGkzOwogICAgIGkzID0gaTMgKyAxIHwgMDsKICAgICBIRUFQ
MzJbaTEyICsgKGkxMCA8PCAyKSA+PiAyXSA9IEhFQVAzMltpMTIgKyAoaTMgPDwgMikgPj4gMl07
CiAgICB9IHdoaWxlICgoaTMgfCAwKSAhPSAoaTEgfCAwKSk7CiAgICBpMyA9IGkxOwogICB9IGVs
c2UgaTMgPSAwOwogICBIRUFQMzJbaTEyICsgKGkzIDw8IDIpID4+IDJdID0gaTQ7CiAgIGk5ID0g
aTE0ICsgKGkxIDw8IDIpIHwgMDsKICAgaTEwID0gSEVBUDMyW2k5ID4+IDJdIHwgMDsKICAgSEVB
UDMyW2k5ID4+IDJdID0gaTEwICsgLTE7CiAgIGlmICgoaTEwIHwgMCkgPiAxKSBjb250aW51ZSBM
MzY7CiAgIGkxID0gaTEgKyAxIHwgMDsKICAgaWYgKChpMSB8IDApID49IChpMTYgfCAwKSkgewog
ICAgaTMgPSAzMjsKICAgIGJyZWFrIEwzNjsKICAgfQogICBpNCA9IEhFQVAzMltpMTIgPj4gMl0g
fCAwOwogIH0KIH0KIGlmICgoaTMgfCAwKSA9PSAzMikgewogIF9mcmVlKGkxMik7CiAgX2ZyZWUo
aTEzKTsKICBfZnJlZShpMTQpOwogIHJldHVybiBpMiB8IDA7CiB9CiByZXR1cm4gMDsKfQoKZnVu
Y3Rpb24gX3BvcF9hcmczMzkoaTIsIGkzLCBpMSkgewogaTIgPSBpMiB8IDA7CiBpMyA9IGkzIHwg
MDsKIGkxID0gaTEgfCAwOwogdmFyIGk0ID0gMCwgaTUgPSAwLCBkNiA9IDAuMDsKIEwxIDogZG8g
aWYgKGkzID4+PiAwIDw9IDIwKSBkbyBzd2l0Y2ggKGkzIHwgMCkgewogY2FzZSA5OgogIHsKICAg
aTQgPSAoSEVBUDMyW2kxID4+IDJdIHwgMCkgKyAoNCAtIDEpICYgfig0IC0gMSk7CiAgIGkzID0g
SEVBUDMyW2k0ID4+IDJdIHwgMDsKICAgSEVBUDMyW2kxID4+IDJdID0gaTQgKyA0OwogICBIRUFQ
MzJbaTIgPj4gMl0gPSBpMzsKICAgYnJlYWsgTDE7CiAgfQogY2FzZSAxMDoKICB7CiAgIGk0ID0g
KEhFQVAzMltpMSA+PiAyXSB8IDApICsgKDQgLSAxKSAmIH4oNCAtIDEpOwogICBpMyA9IEhFQVAz
MltpNCA+PiAyXSB8IDA7CiAgIEhFQVAzMltpMSA+PiAyXSA9IGk0ICsgNDsKICAgaTEgPSBpMjsK
ICAgSEVBUDMyW2kxID4+IDJdID0gaTM7CiAgIEhFQVAzMltpMSArIDQgPj4gMl0gPSAoKGkzIHwg
MCkgPCAwKSA8PCAzMSA+PiAzMTsKICAgYnJlYWsgTDE7CiAgfQogY2FzZSAxMToKICB7CiAgIGk0
ID0gKEhFQVAzMltpMSA+PiAyXSB8IDApICsgKDQgLSAxKSAmIH4oNCAtIDEpOwogICBpMyA9IEhF
QVAzMltpNCA+PiAyXSB8IDA7CiAgIEhFQVAzMltpMSA+PiAyXSA9IGk0ICsgNDsKICAgaTEgPSBp
MjsKICAgSEVBUDMyW2kxID4+IDJdID0gaTM7CiAgIEhFQVAzMltpMSArIDQgPj4gMl0gPSAwOwog
ICBicmVhayBMMTsKICB9CiBjYXNlIDEyOgogIHsKICAgaTUgPSAoSEVBUDMyW2kxID4+IDJdIHwg
MCkgKyAoOCAtIDEpICYgfig4IC0gMSk7CiAgIGkzID0gaTU7CiAgIGk0ID0gSEVBUDMyW2kzID4+
IDJdIHwgMDsKICAgaTMgPSBIRUFQMzJbaTMgKyA0ID4+IDJdIHwgMDsKICAgSEVBUDMyW2kxID4+
IDJdID0gaTUgKyA4OwogICBpMSA9IGkyOwogICBIRUFQMzJbaTEgPj4gMl0gPSBpNDsKICAgSEVB
UDMyW2kxICsgNCA+PiAyXSA9IGkzOwogICBicmVhayBMMTsKICB9CiBjYXNlIDEzOgogIHsKICAg
aTQgPSAoSEVBUDMyW2kxID4+IDJdIHwgMCkgKyAoNCAtIDEpICYgfig0IC0gMSk7CiAgIGkzID0g
SEVBUDMyW2k0ID4+IDJdIHwgMDsKICAgSEVBUDMyW2kxID4+IDJdID0gaTQgKyA0OwogICBpMyA9
IChpMyAmIDY1NTM1KSA8PCAxNiA+PiAxNjsKICAgaTEgPSBpMjsKICAgSEVBUDMyW2kxID4+IDJd
ID0gaTM7CiAgIEhFQVAzMltpMSArIDQgPj4gMl0gPSAoKGkzIHwgMCkgPCAwKSA8PCAzMSA+PiAz
MTsKICAgYnJlYWsgTDE7CiAgfQogY2FzZSAxNDoKICB7CiAgIGk0ID0gKEhFQVAzMltpMSA+PiAy
XSB8IDApICsgKDQgLSAxKSAmIH4oNCAtIDEpOwogICBpMyA9IEhFQVAzMltpNCA+PiAyXSB8IDA7
CiAgIEhFQVAzMltpMSA+PiAyXSA9IGk0ICsgNDsKICAgaTEgPSBpMjsKICAgSEVBUDMyW2kxID4+
IDJdID0gaTMgJiA2NTUzNTsKICAgSEVBUDMyW2kxICsgNCA+PiAyXSA9IDA7CiAgIGJyZWFrIEwx
OwogIH0KIGNhc2UgMTU6CiAgewogICBpNCA9IChIRUFQMzJbaTEgPj4gMl0gfCAwKSArICg0IC0g
MSkgJiB+KDQgLSAxKTsKICAgaTMgPSBIRUFQMzJbaTQgPj4gMl0gfCAwOwogICBIRUFQMzJbaTEg
Pj4gMl0gPSBpNCArIDQ7CiAgIGkzID0gKGkzICYgMjU1KSA8PCAyNCA+PiAyNDsKICAgaTEgPSBp
MjsKICAgSEVBUDMyW2kxID4+IDJdID0gaTM7CiAgIEhFQVAzMltpMSArIDQgPj4gMl0gPSAoKGkz
IHwgMCkgPCAwKSA8PCAzMSA+PiAzMTsKICAgYnJlYWsgTDE7CiAgfQogY2FzZSAxNjoKICB7CiAg
IGk0ID0gKEhFQVAzMltpMSA+PiAyXSB8IDApICsgKDQgLSAxKSAmIH4oNCAtIDEpOwogICBpMyA9
IEhFQVAzMltpNCA+PiAyXSB8IDA7CiAgIEhFQVAzMltpMSA+PiAyXSA9IGk0ICsgNDsKICAgaTEg
PSBpMjsKICAgSEVBUDMyW2kxID4+IDJdID0gaTMgJiAyNTU7CiAgIEhFQVAzMltpMSArIDQgPj4g
Ml0gPSAwOwogICBicmVhayBMMTsKICB9CiBjYXNlIDE3OgogIHsKICAgaTMgPSAoSEVBUDMyW2kx
ID4+IDJdIHwgMCkgKyAoOCAtIDEpICYgfig4IC0gMSk7CiAgIGQ2ID0gK0hFQVBGNjRbaTMgPj4g
M107CiAgIEhFQVAzMltpMSA+PiAyXSA9IGkzICsgODsKICAgSEVBUEY2NFtpMiA+PiAzXSA9IGQ2
OwogICBicmVhayBMMTsKICB9CiBjYXNlIDE4OgogIHsKICAgaTMgPSAoSEVBUDMyW2kxID4+IDJd
IHwgMCkgKyAoOCAtIDEpICYgfig4IC0gMSk7CiAgIGQ2ID0gK0hFQVBGNjRbaTMgPj4gM107CiAg
IEhFQVAzMltpMSA+PiAyXSA9IGkzICsgODsKICAgSEVBUEY2NFtpMiA+PiAzXSA9IGQ2OwogICBi
cmVhayBMMTsKICB9CiBkZWZhdWx0OgogIGJyZWFrIEwxOwogfSB3aGlsZSAoMCk7IHdoaWxlICgw
KTsKIHJldHVybjsKfQoKZnVuY3Rpb24gX21haW4oaTEsIGkyKSB7CiBpMSA9IGkxIHwgMDsKIGky
ID0gaTIgfCAwOwogdmFyIGkzID0gMCwgaTQgPSAwLCBpNSA9IDAsIGk2ID0gMCwgaTcgPSAwLCBp
OCA9IDAsIGk5ID0gMCwgaTEwID0gMCwgaTExID0gMCwgaTEyID0gMCwgaTEzID0gMDsKIGkxMiA9
IFNUQUNLVE9QOwogU1RBQ0tUT1AgPSBTVEFDS1RPUCArIDE2IHwgMDsKIGkxMSA9IGkxMiArIDgg
fCAwOwogaTkgPSBpMTI7CiBpZiAoKGkxIHwgMCkgPiAxID8gKGkxMCA9IF9hdG9pKEhFQVAzMltp
MiArIDQgPj4gMl0gfCAwKSB8IDAsIChpMTAgfCAwKSA+PSAxKSA6IDApIHsKICBpZiAoKGkxMCB8
IDApID4gMSkgewogICBpMSA9IGkxMCArIC0xIHwgMDsKICAgaTMgPSAwOwogICBpNCA9IDA7CiAg
IHdoaWxlICgxKSB7CiAgICBpMiA9IF9tYWxsb2MoMTIpIHwgMDsKICAgIEhFQVAzMltpMiA+PiAy
XSA9IGk0OwogICAgSEVBUDMyW2kyICsgNCA+PiAyXSA9IGkxMDsKICAgIEhFQVAzMltpMiArIDgg
Pj4gMl0gPSBpMzsKICAgIGk0ID0gaTQgKyAxIHwgMDsKICAgIGlmICgoaTQgfCAwKSA9PSAoaTEg
fCAwKSkgYnJlYWs7IGVsc2UgaTMgPSBpMjsKICAgfQogIH0gZWxzZSBpMiA9IDA7CiAgaTcgPSBp
MTAgPDwgMjsKICBpNiA9IF9tYWxsb2MoaTcpIHwgMDsKICBpNyA9IF9tYWxsb2MoaTcpIHwgMDsK
ICBpOCA9IChpMTAgfCAwKSA+IDA7CiAgaWYgKGk4KSB7CiAgIGk0ID0gMDsKICAgZG8gewogICAg
SEVBUDMyW2k2ICsgKGk0IDw8IDIpID4+IDJdID0gaTQ7CiAgICBpNCA9IGk0ICsgMSB8IDA7CiAg
IH0gd2hpbGUgKChpNCB8IDApICE9IChpMTAgfCAwKSk7CiAgIGk0ID0gaTEwOwogICBpMSA9IDMw
OwogIH0gZWxzZSB7CiAgIGk0ID0gaTEwOwogICBpMSA9IDMwOwogIH0KICBMMTIgOiBkbyB7CiAg
IGlmIChpOCkgewogICAgaTMgPSAwOwogICAgZG8gewogICAgIEhFQVAzMltpOSA+PiAyXSA9IChI
RUFQMzJbaTYgKyAoaTMgPDwgMikgPj4gMl0gfCAwKSArIDE7CiAgICAgX3ByaW50Zig2OTUsIGk5
KSB8IDA7CiAgICAgaTMgPSBpMyArIDEgfCAwOwogICAgfSB3aGlsZSAoKGkzIHwgMCkgIT0gKGkx
MCB8IDApKTsKICAgfQogICBfcHV0Y2hhcigxMCkgfCAwOwogICBpMSA9IGkxICsgLTEgfCAwOwog
ICBpZiAoKGk0IHwgMCkgPiAxKSB7CiAgICBkbyB7CiAgICAgaTUgPSBpNDsKICAgICBpNCA9IGk0
ICsgLTEgfCAwOwogICAgIEhFQVAzMltpNyArIChpNCA8PCAyKSA+PiAyXSA9IGk1OwogICAgfSB3
aGlsZSAoKGk0IHwgMCkgPiAxKTsKICAgIGk0ID0gMTsKICAgfQogICBpZiAoKGk0IHwgMCkgPT0g
KGkxMCB8IDApKSBicmVhazsKICAgd2hpbGUgKDEpIHsKICAgIGk1ID0gSEVBUDMyW2k2ID4+IDJd
IHwgMDsKICAgIGlmICgoaTQgfCAwKSA+IDApIHsKICAgICBpMyA9IDA7CiAgICAgZG8gewogICAg
ICBpMTMgPSBpMzsKICAgICAgaTMgPSBpMyArIDEgfCAwOwogICAgICBIRUFQMzJbaTYgKyAoaTEz
IDw8IDIpID4+IDJdID0gSEVBUDMyW2k2ICsgKGkzIDw8IDIpID4+IDJdOwogICAgIH0gd2hpbGUg
KChpMyB8IDApICE9IChpNCB8IDApKTsKICAgICBpMyA9IGk0OwogICAgfSBlbHNlIGkzID0gMDsK
ICAgIEhFQVAzMltpNiArIChpMyA8PCAyKSA+PiAyXSA9IGk1OwogICAgaTMgPSBpNyArIChpNCA8
PCAyKSB8IDA7CiAgICBpNSA9IEhFQVAzMltpMyA+PiAyXSB8IDA7CiAgICBIRUFQMzJbaTMgPj4g
Ml0gPSBpNSArIC0xOwogICAgaWYgKChpNSB8IDApID4gMSkgYnJlYWs7CiAgICBpNCA9IGk0ICsg
MSB8IDA7CiAgICBpZiAoKGk0IHwgMCkgPT0gKGkxMCB8IDApKSBicmVhayBMMTI7CiAgIH0KICB9
IHdoaWxlICgoaTEgfCAwKSAhPSAwKTsKICBfZnJlZShpNik7CiAgX2ZyZWUoaTcpOwogIGlmICgh
aTIpIGkxID0gMDsgZWxzZSB7CiAgIGkxID0gMDsKICAgZG8gewogICAgaTkgPSBfX1oxNWZhbm5r
dWNoX3dvcmtlclB2KGkyKSB8IDA7CiAgICBpMSA9IChpMSB8IDApIDwgKGk5IHwgMCkgPyBpOSA6
IGkxOwogICAgaTkgPSBpMjsKICAgIGkyID0gSEVBUDMyW2kyICsgOCA+PiAyXSB8IDA7CiAgICBf
ZnJlZShpOSk7CiAgIH0gd2hpbGUgKChpMiB8IDApICE9IDApOwogIH0KICBIRUFQMzJbaTExID4+
IDJdID0gaTEwOwogIEhFQVAzMltpMTEgKyA0ID4+IDJdID0gaTE7CiAgX3ByaW50Zig2NzIsIGkx
MSkgfCAwOwogIGkxMCA9IDA7CiAgU1RBQ0tUT1AgPSBpMTI7CiAgcmV0dXJuIGkxMCB8IDA7CiB9
CiBfcHV0cyg2OTgpIHwgMDsKIGkxMCA9IDE7CiBTVEFDS1RPUCA9IGkxMjsKIHJldHVybiBpMTAg
fCAwOwp9CgpmdW5jdGlvbiBfX19zdGRpb193cml0ZShpMTQsIGkyLCBpMSkgewogaTE0ID0gaTE0
IHwgMDsKIGkyID0gaTIgfCAwOwogaTEgPSBpMSB8IDA7CiB2YXIgaTMgPSAwLCBpNCA9IDAsIGk1
ID0gMCwgaTYgPSAwLCBpNyA9IDAsIGk4ID0gMCwgaTkgPSAwLCBpMTAgPSAwLCBpMTEgPSAwLCBp
MTIgPSAwLCBpMTMgPSAwLCBpMTUgPSAwOwogaTE1ID0gU1RBQ0tUT1A7CiBTVEFDS1RPUCA9IFNU
QUNLVE9QICsgNDggfCAwOwogaTExID0gaTE1ICsgMTYgfCAwOwogaTEwID0gaTE1OwogaTMgPSBp
MTUgKyAzMiB8IDA7CiBpMTIgPSBpMTQgKyAyOCB8IDA7CiBpNCA9IEhFQVAzMltpMTIgPj4gMl0g
fCAwOwogSEVBUDMyW2kzID4+IDJdID0gaTQ7CiBpMTMgPSBpMTQgKyAyMCB8IDA7CiBpNCA9IChI
RUFQMzJbaTEzID4+IDJdIHwgMCkgLSBpNCB8IDA7CiBIRUFQMzJbaTMgKyA0ID4+IDJdID0gaTQ7
CiBIRUFQMzJbaTMgKyA4ID4+IDJdID0gaTI7CiBIRUFQMzJbaTMgKyAxMiA+PiAyXSA9IGkxOwog
aTggPSBpMTQgKyA2MCB8IDA7CiBpOSA9IGkxNCArIDQ0IHwgMDsKIGkyID0gMjsKIGk0ID0gaTQg
KyBpMSB8IDA7CiB3aGlsZSAoMSkgewogIGlmICghKEhFQVAzMls0XSB8IDApKSB7CiAgIEhFQVAz
MltpMTEgPj4gMl0gPSBIRUFQMzJbaTggPj4gMl07CiAgIEhFQVAzMltpMTEgKyA0ID4+IDJdID0g
aTM7CiAgIEhFQVAzMltpMTEgKyA4ID4+IDJdID0gaTI7CiAgIGk2ID0gX19fc3lzY2FsbF9yZXQo
X19fc3lzY2FsbDE0NigxNDYsIGkxMSB8IDApIHwgMCkgfCAwOwogIH0gZWxzZSB7CiAgIF9wdGhy
ZWFkX2NsZWFudXBfcHVzaCgxLCBpMTQgfCAwKTsKICAgSEVBUDMyW2kxMCA+PiAyXSA9IEhFQVAz
MltpOCA+PiAyXTsKICAgSEVBUDMyW2kxMCArIDQgPj4gMl0gPSBpMzsKICAgSEVBUDMyW2kxMCAr
IDggPj4gMl0gPSBpMjsKICAgaTYgPSBfX19zeXNjYWxsX3JldChfX19zeXNjYWxsMTQ2KDE0Niwg
aTEwIHwgMCkgfCAwKSB8IDA7CiAgIF9wdGhyZWFkX2NsZWFudXBfcG9wKDApOwogIH0KICBpZiAo
KGk0IHwgMCkgPT0gKGk2IHwgMCkpIHsKICAgaTQgPSA2OwogICBicmVhazsKICB9CiAgaWYgKChp
NiB8IDApIDwgMCkgewogICBpNCA9IDg7CiAgIGJyZWFrOwogIH0KICBpNCA9IGk0IC0gaTYgfCAw
OwogIGk1ID0gSEVBUDMyW2kzICsgNCA+PiAyXSB8IDA7CiAgaWYgKGk2ID4+PiAwIDw9IGk1ID4+
PiAwKSBpZiAoKGkyIHwgMCkgPT0gMikgewogICBIRUFQMzJbaTEyID4+IDJdID0gKEhFQVAzMltp
MTIgPj4gMl0gfCAwKSArIGk2OwogICBpNyA9IGk1OwogICBpMiA9IDI7CiAgfSBlbHNlIGk3ID0g
aTU7IGVsc2UgewogICBpNyA9IEhFQVAzMltpOSA+PiAyXSB8IDA7CiAgIEhFQVAzMltpMTIgPj4g
Ml0gPSBpNzsKICAgSEVBUDMyW2kxMyA+PiAyXSA9IGk3OwogICBpNyA9IEhFQVAzMltpMyArIDEy
ID4+IDJdIHwgMDsKICAgaTYgPSBpNiAtIGk1IHwgMDsKICAgaTMgPSBpMyArIDggfCAwOwogICBp
MiA9IGkyICsgLTEgfCAwOwogIH0KICBIRUFQMzJbaTMgPj4gMl0gPSAoSEVBUDMyW2kzID4+IDJd
IHwgMCkgKyBpNjsKICBIRUFQMzJbaTMgKyA0ID4+IDJdID0gaTcgLSBpNjsKIH0KIGlmICgoaTQg
fCAwKSA9PSA2KSB7CiAgaTEwID0gSEVBUDMyW2k5ID4+IDJdIHwgMDsKICBIRUFQMzJbaTE0ICsg
MTYgPj4gMl0gPSBpMTAgKyAoSEVBUDMyW2kxNCArIDQ4ID4+IDJdIHwgMCk7CiAgSEVBUDMyW2kx
MiA+PiAyXSA9IGkxMDsKICBIRUFQMzJbaTEzID4+IDJdID0gaTEwOwogfSBlbHNlIGlmICgoaTQg
fCAwKSA9PSA4KSB7CiAgSEVBUDMyW2kxNCArIDE2ID4+IDJdID0gMDsKICBIRUFQMzJbaTEyID4+
IDJdID0gMDsKICBIRUFQMzJbaTEzID4+IDJdID0gMDsKICBIRUFQMzJbaTE0ID4+IDJdID0gSEVB
UDMyW2kxNCA+PiAyXSB8IDMyOwogIGlmICgoaTIgfCAwKSA9PSAyKSBpMSA9IDA7IGVsc2UgaTEg
PSBpMSAtIChIRUFQMzJbaTMgKyA0ID4+IDJdIHwgMCkgfCAwOwogfQogU1RBQ0tUT1AgPSBpMTU7
CiByZXR1cm4gaTEgfCAwOwp9CgpmdW5jdGlvbiBfdmZwcmludGYoaTE1LCBpMTEsIGkyKSB7CiBp
MTUgPSBpMTUgfCAwOwogaTExID0gaTExIHwgMDsKIGkyID0gaTIgfCAwOwogdmFyIGkxID0gMCwg
aTMgPSAwLCBpNCA9IDAsIGk1ID0gMCwgaTYgPSAwLCBpNyA9IDAsIGk4ID0gMCwgaTkgPSAwLCBp
MTAgPSAwLCBpMTIgPSAwLCBpMTMgPSAwLCBpMTQgPSAwLCBpMTYgPSAwOwogaTE2ID0gU1RBQ0tU
T1A7CiBTVEFDS1RPUCA9IFNUQUNLVE9QICsgMjI0IHwgMDsKIGkxMCA9IGkxNiArIDgwIHwgMDsK
IGkxNCA9IGkxNiArIDk2IHwgMDsKIGkxMyA9IGkxNjsKIGkxMiA9IGkxNiArIDEzNiB8IDA7CiBp
MSA9IGkxNDsKIGkzID0gaTEgKyA0MCB8IDA7CiBkbyB7CiAgSEVBUDMyW2kxID4+IDJdID0gMDsK
ICBpMSA9IGkxICsgNCB8IDA7CiB9IHdoaWxlICgoaTEgfCAwKSA8IChpMyB8IDApKTsKIEhFQVAz
MltpMTAgPj4gMl0gPSBIRUFQMzJbaTIgPj4gMl07CiBpZiAoKF9wcmludGZfY29yZSgwLCBpMTEs
IGkxMCwgaTEzLCBpMTQpIHwgMCkgPCAwKSBpMSA9IC0xOyBlbHNlIHsKICBpZiAoKEhFQVAzMltp
MTUgKyA3NiA+PiAyXSB8IDApID4gLTEpIGk4ID0gX19fbG9ja2ZpbGUoaTE1KSB8IDA7IGVsc2Ug
aTggPSAwOwogIGkyID0gSEVBUDMyW2kxNSA+PiAyXSB8IDA7CiAgaTkgPSBpMiAmIDMyOwogIGlm
ICgoSEVBUDhbaTE1ICsgNzQgPj4gMF0gfCAwKSA8IDEpIEhFQVAzMltpMTUgPj4gMl0gPSBpMiAm
IC0zMzsKICBpMyA9IGkxNSArIDQ4IHwgMDsKICBpZiAoIShIRUFQMzJbaTMgPj4gMl0gfCAwKSkg
ewogICBpMSA9IGkxNSArIDQ0IHwgMDsKICAgaTQgPSBIRUFQMzJbaTEgPj4gMl0gfCAwOwogICBI
RUFQMzJbaTEgPj4gMl0gPSBpMTI7CiAgIGk1ID0gaTE1ICsgMjggfCAwOwogICBIRUFQMzJbaTUg
Pj4gMl0gPSBpMTI7CiAgIGk2ID0gaTE1ICsgMjAgfCAwOwogICBIRUFQMzJbaTYgPj4gMl0gPSBp
MTI7CiAgIEhFQVAzMltpMyA+PiAyXSA9IDgwOwogICBpNyA9IGkxNSArIDE2IHwgMDsKICAgSEVB
UDMyW2k3ID4+IDJdID0gaTEyICsgODA7CiAgIGkyID0gX3ByaW50Zl9jb3JlKGkxNSwgaTExLCBp
MTAsIGkxMywgaTE0KSB8IDA7CiAgIGlmIChpNCkgewogICAgRlVOQ1RJT05fVEFCTEVfaWlpaVtI
RUFQMzJbaTE1ICsgMzYgPj4gMl0gJiAzXShpMTUsIDAsIDApIHwgMDsKICAgIGkyID0gKEhFQVAz
MltpNiA+PiAyXSB8IDApID09IDAgPyAtMSA6IGkyOwogICAgSEVBUDMyW2kxID4+IDJdID0gaTQ7
CiAgICBIRUFQMzJbaTMgPj4gMl0gPSAwOwogICAgSEVBUDMyW2k3ID4+IDJdID0gMDsKICAgIEhF
QVAzMltpNSA+PiAyXSA9IDA7CiAgICBIRUFQMzJbaTYgPj4gMl0gPSAwOwogICB9CiAgfSBlbHNl
IGkyID0gX3ByaW50Zl9jb3JlKGkxNSwgaTExLCBpMTAsIGkxMywgaTE0KSB8IDA7CiAgaTEgPSBI
RUFQMzJbaTE1ID4+IDJdIHwgMDsKICBIRUFQMzJbaTE1ID4+IDJdID0gaTEgfCBpOTsKICBpZiAo
aTgpIF9fX3VubG9ja2ZpbGUoaTE1KTsKICBpMSA9IChpMSAmIDMyIHwgMCkgPT0gMCA/IGkyIDog
LTE7CiB9CiBTVEFDS1RPUCA9IGkxNjsKIHJldHVybiBpMSB8IDA7Cn0KCmZ1bmN0aW9uIF9tZW1j
aHIoaTEsIGk1LCBpMikgewogaTEgPSBpMSB8IDA7CiBpNSA9IGk1IHwgMDsKIGkyID0gaTIgfCAw
OwogdmFyIGkzID0gMCwgaTQgPSAwLCBpNiA9IDAsIGk3ID0gMDsKIGk2ID0gaTUgJiAyNTU7CiBp
MyA9IChpMiB8IDApICE9IDA7CiBMMSA6IGRvIGlmIChpMyAmIChpMSAmIDMgfCAwKSAhPSAwKSB7
CiAgaTQgPSBpNSAmIDI1NTsKICB3aGlsZSAoMSkgewogICBpZiAoKEhFQVA4W2kxID4+IDBdIHwg
MCkgPT0gaTQgPDwgMjQgPj4gMjQpIHsKICAgIGk3ID0gNjsKICAgIGJyZWFrIEwxOwogICB9CiAg
IGkxID0gaTEgKyAxIHwgMDsKICAgaTIgPSBpMiArIC0xIHwgMDsKICAgaTMgPSAoaTIgfCAwKSAh
PSAwOwogICBpZiAoIShpMyAmIChpMSAmIDMgfCAwKSAhPSAwKSkgewogICAgaTcgPSA1OwogICAg
YnJlYWs7CiAgIH0KICB9CiB9IGVsc2UgaTcgPSA1OyB3aGlsZSAoMCk7CiBpZiAoKGk3IHwgMCkg
PT0gNSkgaWYgKGkzKSBpNyA9IDY7IGVsc2UgaTIgPSAwOwogTDggOiBkbyBpZiAoKGk3IHwgMCkg
PT0gNikgewogIGk0ID0gaTUgJiAyNTU7CiAgaWYgKChIRUFQOFtpMSA+PiAwXSB8IDApICE9IGk0
IDw8IDI0ID4+IDI0KSB7CiAgIGkzID0gTWF0aF9pbXVsKGk2LCAxNjg0MzAwOSkgfCAwOwogICBM
MTEgOiBkbyBpZiAoaTIgPj4+IDAgPiAzKSB3aGlsZSAoMSkgewogICAgaTUgPSBIRUFQMzJbaTEg
Pj4gMl0gXiBpMzsKICAgIGlmICgoaTUgJiAtMjEzOTA2MjE0NCBeIC0yMTM5MDYyMTQ0KSAmIGk1
ICsgLTE2ODQzMDA5KSBicmVhazsKICAgIGkxID0gaTEgKyA0IHwgMDsKICAgIGkyID0gaTIgKyAt
NCB8IDA7CiAgICBpZiAoaTIgPj4+IDAgPD0gMykgewogICAgIGk3ID0gMTE7CiAgICAgYnJlYWsg
TDExOwogICAgfQogICB9IGVsc2UgaTcgPSAxMTsgd2hpbGUgKDApOwogICBpZiAoKGk3IHwgMCkg
PT0gMTEpIGlmICghaTIpIHsKICAgIGkyID0gMDsKICAgIGJyZWFrOwogICB9CiAgIHdoaWxlICgx
KSB7CiAgICBpZiAoKEhFQVA4W2kxID4+IDBdIHwgMCkgPT0gaTQgPDwgMjQgPj4gMjQpIGJyZWFr
IEw4OwogICAgaTEgPSBpMSArIDEgfCAwOwogICAgaTIgPSBpMiArIC0xIHwgMDsKICAgIGlmICgh
aTIpIHsKICAgICBpMiA9IDA7CiAgICAgYnJlYWs7CiAgICB9CiAgIH0KICB9CiB9IHdoaWxlICgw
KTsKIHJldHVybiAoKGkyIHwgMCkgIT0gMCA/IGkxIDogMCkgfCAwOwp9CgpmdW5jdGlvbiBfX19m
d3JpdGV4KGkzLCBpNCwgaTYpIHsKIGkzID0gaTMgfCAwOwogaTQgPSBpNCB8IDA7CiBpNiA9IGk2
IHwgMDsKIHZhciBpMSA9IDAsIGkyID0gMCwgaTUgPSAwLCBpNyA9IDA7CiBpMSA9IGk2ICsgMTYg
fCAwOwogaTIgPSBIRUFQMzJbaTEgPj4gMl0gfCAwOwogaWYgKCFpMikgaWYgKCEoX19fdG93cml0
ZShpNikgfCAwKSkgewogIGkyID0gSEVBUDMyW2kxID4+IDJdIHwgMDsKICBpNSA9IDQ7CiB9IGVs
c2UgaTEgPSAwOyBlbHNlIGk1ID0gNDsKIEw0IDogZG8gaWYgKChpNSB8IDApID09IDQpIHsKICBp
NyA9IGk2ICsgMjAgfCAwOwogIGk1ID0gSEVBUDMyW2k3ID4+IDJdIHwgMDsKICBpZiAoKGkyIC0g
aTUgfCAwKSA+Pj4gMCA8IGk0ID4+PiAwKSB7CiAgIGkxID0gRlVOQ1RJT05fVEFCTEVfaWlpaVtI
RUFQMzJbaTYgKyAzNiA+PiAyXSAmIDNdKGk2LCBpMywgaTQpIHwgMDsKICAgYnJlYWs7CiAgfQog
IEw5IDogZG8gaWYgKChIRUFQOFtpNiArIDc1ID4+IDBdIHwgMCkgPiAtMSkgewogICBpMSA9IGk0
OwogICB3aGlsZSAoMSkgewogICAgaWYgKCFpMSkgewogICAgIGkyID0gaTU7CiAgICAgaTEgPSAw
OwogICAgIGJyZWFrIEw5OwogICAgfQogICAgaTIgPSBpMSArIC0xIHwgMDsKICAgIGlmICgoSEVB
UDhbaTMgKyBpMiA+PiAwXSB8IDApID09IDEwKSBicmVhazsgZWxzZSBpMSA9IGkyOwogICB9CiAg
IGlmICgoRlVOQ1RJT05fVEFCTEVfaWlpaVtIRUFQMzJbaTYgKyAzNiA+PiAyXSAmIDNdKGk2LCBp
MywgaTEpIHwgMCkgPj4+IDAgPCBpMSA+Pj4gMCkgYnJlYWsgTDQ7CiAgIGk0ID0gaTQgLSBpMSB8
IDA7CiAgIGkzID0gaTMgKyBpMSB8IDA7CiAgIGkyID0gSEVBUDMyW2k3ID4+IDJdIHwgMDsKICB9
IGVsc2UgewogICBpMiA9IGk1OwogICBpMSA9IDA7CiAgfSB3aGlsZSAoMCk7CiAgX21lbWNweShp
MiB8IDAsIGkzIHwgMCwgaTQgfCAwKSB8IDA7CiAgSEVBUDMyW2k3ID4+IDJdID0gKEhFQVAzMltp
NyA+PiAyXSB8IDApICsgaTQ7CiAgaTEgPSBpMSArIGk0IHwgMDsKIH0gd2hpbGUgKDApOwogcmV0
dXJuIGkxIHwgMDsKfQoKZnVuY3Rpb24gX3djcnRvbWIoaTEsIGkzLCBpMikgewogaTEgPSBpMSB8
IDA7CiBpMyA9IGkzIHwgMDsKIGkyID0gaTIgfCAwOwogZG8gaWYgKGkxKSB7CiAgaWYgKGkzID4+
PiAwIDwgMTI4KSB7CiAgIEhFQVA4W2kxID4+IDBdID0gaTM7CiAgIGkxID0gMTsKICAgYnJlYWs7
CiAgfQogIGlmIChpMyA+Pj4gMCA8IDIwNDgpIHsKICAgSEVBUDhbaTEgPj4gMF0gPSBpMyA+Pj4g
NiB8IDE5MjsKICAgSEVBUDhbaTEgKyAxID4+IDBdID0gaTMgJiA2MyB8IDEyODsKICAgaTEgPSAy
OwogICBicmVhazsKICB9CiAgaWYgKGkzID4+PiAwIDwgNTUyOTYgfCAoaTMgJiAtODE5MiB8IDAp
ID09IDU3MzQ0KSB7CiAgIEhFQVA4W2kxID4+IDBdID0gaTMgPj4+IDEyIHwgMjI0OwogICBIRUFQ
OFtpMSArIDEgPj4gMF0gPSBpMyA+Pj4gNiAmIDYzIHwgMTI4OwogICBIRUFQOFtpMSArIDIgPj4g
MF0gPSBpMyAmIDYzIHwgMTI4OwogICBpMSA9IDM7CiAgIGJyZWFrOwogIH0KICBpZiAoKGkzICsg
LTY1NTM2IHwgMCkgPj4+IDAgPCAxMDQ4NTc2KSB7CiAgIEhFQVA4W2kxID4+IDBdID0gaTMgPj4+
IDE4IHwgMjQwOwogICBIRUFQOFtpMSArIDEgPj4gMF0gPSBpMyA+Pj4gMTIgJiA2MyB8IDEyODsK
ICAgSEVBUDhbaTEgKyAyID4+IDBdID0gaTMgPj4+IDYgJiA2MyB8IDEyODsKICAgSEVBUDhbaTEg
KyAzID4+IDBdID0gaTMgJiA2MyB8IDEyODsKICAgaTEgPSA0OwogICBicmVhazsKICB9IGVsc2Ug
ewogICBIRUFQMzJbKF9fX2Vycm5vX2xvY2F0aW9uKCkgfCAwKSA+PiAyXSA9IDg0OwogICBpMSA9
IC0xOwogICBicmVhazsKICB9CiB9IGVsc2UgaTEgPSAxOyB3aGlsZSAoMCk7CiByZXR1cm4gaTEg
fCAwOwp9CgpmdW5jdGlvbiBfZnB1dGMoaTUsIGk2KSB7CiBpNSA9IGk1IHwgMDsKIGk2ID0gaTYg
fCAwOwogdmFyIGkxID0gMCwgaTIgPSAwLCBpMyA9IDAsIGk0ID0gMCwgaTcgPSAwOwogaWYgKChI
RUFQMzJbaTYgKyA3NiA+PiAyXSB8IDApID49IDAgPyAoX19fbG9ja2ZpbGUoaTYpIHwgMCkgIT0g
MCA6IDApIHsKICBpZiAoKEhFQVA4W2k2ICsgNzUgPj4gMF0gfCAwKSAhPSAoaTUgfCAwKSA/IChp
MiA9IGk2ICsgMjAgfCAwLCBpMyA9IEhFQVAzMltpMiA+PiAyXSB8IDAsIGkzID4+PiAwIDwgKEhF
QVAzMltpNiArIDE2ID4+IDJdIHwgMCkgPj4+IDApIDogMCkgewogICBIRUFQMzJbaTIgPj4gMl0g
PSBpMyArIDE7CiAgIEhFQVA4W2kzID4+IDBdID0gaTU7CiAgIGkxID0gaTUgJiAyNTU7CiAgfSBl
bHNlIGkxID0gX19fb3ZlcmZsb3coaTYsIGk1KSB8IDA7CiAgX19fdW5sb2NrZmlsZShpNik7CiB9
IGVsc2UgaTcgPSAzOwogZG8gaWYgKChpNyB8IDApID09IDMpIHsKICBpZiAoKEhFQVA4W2k2ICsg
NzUgPj4gMF0gfCAwKSAhPSAoaTUgfCAwKSA/IChpNCA9IGk2ICsgMjAgfCAwLCBpMSA9IEhFQVAz
MltpNCA+PiAyXSB8IDAsIGkxID4+PiAwIDwgKEhFQVAzMltpNiArIDE2ID4+IDJdIHwgMCkgPj4+
IDApIDogMCkgewogICBIRUFQMzJbaTQgPj4gMl0gPSBpMSArIDE7CiAgIEhFQVA4W2kxID4+IDBd
ID0gaTU7CiAgIGkxID0gaTUgJiAyNTU7CiAgIGJyZWFrOwogIH0KICBpMSA9IF9fX292ZXJmbG93
KGk2LCBpNSkgfCAwOwogfSB3aGlsZSAoMCk7CiByZXR1cm4gaTEgfCAwOwp9CgpmdW5jdGlvbiBf
X19vdmVyZmxvdyhpOCwgaTYpIHsKIGk4ID0gaTggfCAwOwogaTYgPSBpNiB8IDA7CiB2YXIgaTEg
PSAwLCBpMiA9IDAsIGkzID0gMCwgaTQgPSAwLCBpNSA9IDAsIGk3ID0gMCwgaTkgPSAwOwogaTkg
PSBTVEFDS1RPUDsKIFNUQUNLVE9QID0gU1RBQ0tUT1AgKyAxNiB8IDA7CiBpNyA9IGk5OwogaTUg
PSBpNiAmIDI1NTsKIEhFQVA4W2k3ID4+IDBdID0gaTU7CiBpMiA9IGk4ICsgMTYgfCAwOwogaTMg
PSBIRUFQMzJbaTIgPj4gMl0gfCAwOwogaWYgKCFpMykgaWYgKCEoX19fdG93cml0ZShpOCkgfCAw
KSkgewogIGkzID0gSEVBUDMyW2kyID4+IDJdIHwgMDsKICBpNCA9IDQ7CiB9IGVsc2UgaTEgPSAt
MTsgZWxzZSBpNCA9IDQ7CiBkbyBpZiAoKGk0IHwgMCkgPT0gNCkgewogIGkyID0gaTggKyAyMCB8
IDA7CiAgaTQgPSBIRUFQMzJbaTIgPj4gMl0gfCAwOwogIGlmIChpNCA+Pj4gMCA8IGkzID4+PiAw
ID8gKGkxID0gaTYgJiAyNTUsIChpMSB8IDApICE9IChIRUFQOFtpOCArIDc1ID4+IDBdIHwgMCkp
IDogMCkgewogICBIRUFQMzJbaTIgPj4gMl0gPSBpNCArIDE7CiAgIEhFQVA4W2k0ID4+IDBdID0g
aTU7CiAgIGJyZWFrOwogIH0KICBpZiAoKEZVTkNUSU9OX1RBQkxFX2lpaWlbSEVBUDMyW2k4ICsg
MzYgPj4gMl0gJiAzXShpOCwgaTcsIDEpIHwgMCkgPT0gMSkgaTEgPSBIRUFQVThbaTcgPj4gMF0g
fCAwOyBlbHNlIGkxID0gLTE7CiB9IHdoaWxlICgwKTsKIFNUQUNLVE9QID0gaTk7CiByZXR1cm4g
aTEgfCAwOwp9CgpmdW5jdGlvbiBfcGFkKGk2LCBpMywgaTUsIGk0LCBpMikgewogaTYgPSBpNiB8
IDA7CiBpMyA9IGkzIHwgMDsKIGk1ID0gaTUgfCAwOwogaTQgPSBpNCB8IDA7CiBpMiA9IGkyIHwg
MDsKIHZhciBpMSA9IDAsIGk3ID0gMCwgaTggPSAwOwogaTggPSBTVEFDS1RPUDsKIFNUQUNLVE9Q
ID0gU1RBQ0tUT1AgKyAyNTYgfCAwOwogaTcgPSBpODsKIGRvIGlmICgoaTUgfCAwKSA+IChpNCB8
IDApICYgKGkyICYgNzM3MjggfCAwKSA9PSAwKSB7CiAgaTEgPSBpNSAtIGk0IHwgMDsKICBfbWVt
c2V0KGk3IHwgMCwgaTMgfCAwLCAoaTEgPj4+IDAgPiAyNTYgPyAyNTYgOiBpMSkgfCAwKSB8IDA7
CiAgaTIgPSBIRUFQMzJbaTYgPj4gMl0gfCAwOwogIGkzID0gKGkyICYgMzIgfCAwKSA9PSAwOwog
IGlmIChpMSA+Pj4gMCA+IDI1NSkgewogICBpNSA9IGk1IC0gaTQgfCAwOwogICBkbyB7CiAgICBp
ZiAoaTMpIHsKICAgICBfX19md3JpdGV4KGk3LCAyNTYsIGk2KSB8IDA7CiAgICAgaTIgPSBIRUFQ
MzJbaTYgPj4gMl0gfCAwOwogICAgfQogICAgaTEgPSBpMSArIC0yNTYgfCAwOwogICAgaTMgPSAo
aTIgJiAzMiB8IDApID09IDA7CiAgIH0gd2hpbGUgKGkxID4+PiAwID4gMjU1KTsKICAgaWYgKGkz
KSBpMSA9IGk1ICYgMjU1OyBlbHNlIGJyZWFrOwogIH0gZWxzZSBpZiAoIWkzKSBicmVhazsKICBf
X19md3JpdGV4KGk3LCBpMSwgaTYpIHwgMDsKIH0gd2hpbGUgKDApOwogU1RBQ0tUT1AgPSBpODsK
IHJldHVybjsKfQoKZnVuY3Rpb24gX19fcmVtZGkzKGkxLCBpMiwgaTMsIGk0KSB7CiBpMSA9IGkx
IHwgMDsKIGkyID0gaTIgfCAwOwogaTMgPSBpMyB8IDA7CiBpNCA9IGk0IHwgMDsKIHZhciBpNSA9
IDAsIGk2ID0gMCwgaTcgPSAwLCBpOCA9IDAsIGk5ID0gMCwgaTEwID0gMDsKIGk1ID0gU1RBQ0tU
T1A7CiBTVEFDS1RPUCA9IFNUQUNLVE9QICsgMTYgfCAwOwogaTggPSBpNSB8IDA7CiBpNyA9IGky
ID4+IDMxIHwgKChpMiB8IDApIDwgMCA/IC0xIDogMCkgPDwgMTsKIGk2ID0gKChpMiB8IDApIDwg
MCA/IC0xIDogMCkgPj4gMzEgfCAoKGkyIHwgMCkgPCAwID8gLTEgOiAwKSA8PCAxOwogaTEwID0g
aTQgPj4gMzEgfCAoKGk0IHwgMCkgPCAwID8gLTEgOiAwKSA8PCAxOwogaTkgPSAoKGk0IHwgMCkg
PCAwID8gLTEgOiAwKSA+PiAzMSB8ICgoaTQgfCAwKSA8IDAgPyAtMSA6IDApIDw8IDE7CiBpMiA9
IF9pNjRTdWJ0cmFjdChpNyBeIGkxLCBpNiBeIGkyLCBpNywgaTYpIHwgMDsKIGkxID0gdGVtcFJl
dDA7CiBfX191ZGl2bW9kZGk0KGkyLCBpMSwgX2k2NFN1YnRyYWN0KGkxMCBeIGkzLCBpOSBeIGk0
LCBpMTAsIGk5KSB8IDAsIHRlbXBSZXQwLCBpOCkgfCAwOwogaTEgPSBfaTY0U3VidHJhY3QoSEVB
UDMyW2k4ID4+IDJdIF4gaTcsIEhFQVAzMltpOCArIDQgPj4gMl0gXiBpNiwgaTcsIGk2KSB8IDA7
CiBpMiA9IHRlbXBSZXQwOwogU1RBQ0tUT1AgPSBpNTsKIHJldHVybiAodGVtcFJldDAgPSBpMiwg
aTEpIHwgMDsKfQoKZnVuY3Rpb24gX2ZmbHVzaChpMikgewogaTIgPSBpMiB8IDA7CiB2YXIgaTEg
PSAwLCBpMyA9IDA7CiBkbyBpZiAoaTIpIHsKICBpZiAoKEhFQVAzMltpMiArIDc2ID4+IDJdIHwg
MCkgPD0gLTEpIHsKICAgaTEgPSBfX19mZmx1c2hfdW5sb2NrZWQoaTIpIHwgMDsKICAgYnJlYWs7
CiAgfQogIGkzID0gKF9fX2xvY2tmaWxlKGkyKSB8IDApID09IDA7CiAgaTEgPSBfX19mZmx1c2hf
dW5sb2NrZWQoaTIpIHwgMDsKICBpZiAoIWkzKSBfX191bmxvY2tmaWxlKGkyKTsKIH0gZWxzZSB7
CiAgaWYgKCEoSEVBUDMyWzNdIHwgMCkpIGkxID0gMDsgZWxzZSBpMSA9IF9mZmx1c2goSEVBUDMy
WzNdIHwgMCkgfCAwOwogIF9fX2xvY2soNDQpOwogIGkyID0gSEVBUDMyWzEwXSB8IDA7CiAgaWYg
KGkyKSBkbyB7CiAgIGlmICgoSEVBUDMyW2kyICsgNzYgPj4gMl0gfCAwKSA+IC0xKSBpMyA9IF9f
X2xvY2tmaWxlKGkyKSB8IDA7IGVsc2UgaTMgPSAwOwogICBpZiAoKEhFQVAzMltpMiArIDIwID4+
IDJdIHwgMCkgPj4+IDAgPiAoSEVBUDMyW2kyICsgMjggPj4gMl0gfCAwKSA+Pj4gMCkgaTEgPSBf
X19mZmx1c2hfdW5sb2NrZWQoaTIpIHwgMCB8IGkxOwogICBpZiAoaTMpIF9fX3VubG9ja2ZpbGUo
aTIpOwogICBpMiA9IEhFQVAzMltpMiArIDU2ID4+IDJdIHwgMDsKICB9IHdoaWxlICgoaTIgfCAw
KSAhPSAwKTsKICBfX191bmxvY2soNDQpOwogfSB3aGlsZSAoMCk7CiByZXR1cm4gaTEgfCAwOwp9
CgpmdW5jdGlvbiBfZnJleHAoZDEsIGk1KSB7CiBkMSA9ICtkMTsKIGk1ID0gaTUgfCAwOwogdmFy
IGkyID0gMCwgaTMgPSAwLCBpNCA9IDA7CiBIRUFQRjY0W3RlbXBEb3VibGVQdHIgPj4gM10gPSBk
MTsKIGkyID0gSEVBUDMyW3RlbXBEb3VibGVQdHIgPj4gMl0gfCAwOwogaTMgPSBIRUFQMzJbdGVt
cERvdWJsZVB0ciArIDQgPj4gMl0gfCAwOwogaTQgPSBfYml0c2hpZnQ2NExzaHIoaTIgfCAwLCBp
MyB8IDAsIDUyKSB8IDA7CiBpNCA9IGk0ICYgMjA0NzsKIHN3aXRjaCAoaTQgfCAwKSB7CiBjYXNl
IDA6CiAgewogICBpZiAoZDEgIT0gMC4wKSB7CiAgICBkMSA9ICtfZnJleHAoZDEgKiAxODQ0Njc0
NDA3MzcwOTU1MTYxNi4wLCBpNSk7CiAgICBpMiA9IChIRUFQMzJbaTUgPj4gMl0gfCAwKSArIC02
NCB8IDA7CiAgIH0gZWxzZSBpMiA9IDA7CiAgIEhFQVAzMltpNSA+PiAyXSA9IGkyOwogICBicmVh
azsKICB9CiBjYXNlIDIwNDc6CiAgYnJlYWs7CiBkZWZhdWx0OgogIHsKICAgSEVBUDMyW2k1ID4+
IDJdID0gaTQgKyAtMTAyMjsKICAgSEVBUDMyW3RlbXBEb3VibGVQdHIgPj4gMl0gPSBpMjsKICAg
SEVBUDMyW3RlbXBEb3VibGVQdHIgKyA0ID4+IDJdID0gaTMgJiAtMjE0NjQzNTA3MyB8IDEwNzE2
NDQ2NzI7CiAgIGQxID0gK0hFQVBGNjRbdGVtcERvdWJsZVB0ciA+PiAzXTsKICB9CiB9CiByZXR1
cm4gK2QxOwp9CgpmdW5jdGlvbiBfYXRvaShpMSkgewogaTEgPSBpMSB8IDA7CiB2YXIgaTIgPSAw
LCBpMyA9IDAsIGk0ID0gMCwgaTUgPSAwOwogd2hpbGUgKDEpIHsKICBpMiA9IGkxICsgMSB8IDA7
CiAgaWYgKCEoX2lzc3BhY2UoSEVBUDhbaTEgPj4gMF0gfCAwKSB8IDApKSBicmVhazsgZWxzZSBp
MSA9IGkyOwogfQogaTMgPSBIRUFQOFtpMSA+PiAwXSB8IDA7CiBzd2l0Y2ggKGkzIDw8IDI0ID4+
IDI0IHwgMCkgewogY2FzZSA0NToKICB7CiAgIGk0ID0gMTsKICAgaTUgPSA1OwogICBicmVhazsK
ICB9CiBjYXNlIDQzOgogIHsKICAgaTQgPSAwOwogICBpNSA9IDU7CiAgIGJyZWFrOwogIH0KIGRl
ZmF1bHQ6CiAgaTQgPSAwOwogfQogaWYgKChpNSB8IDApID09IDUpIHsKICBpMSA9IGkyOwogIGkz
ID0gSEVBUDhbaTIgPj4gMF0gfCAwOwogfQogaTIgPSAoaTMgPDwgMjQgPj4gMjQpICsgLTQ4IHwg
MDsKIGlmIChpMiA+Pj4gMCA8IDEwKSB7CiAgaTMgPSBpMTsKICBpMSA9IDA7CiAgZG8gewogICBp
MyA9IGkzICsgMSB8IDA7CiAgIGkxID0gKGkxICogMTAgfCAwKSAtIGkyIHwgMDsKICAgaTIgPSAo
SEVBUDhbaTMgPj4gMF0gfCAwKSArIC00OCB8IDA7CiAgfSB3aGlsZSAoaTIgPj4+IDAgPCAxMCk7
CiB9IGVsc2UgaTEgPSAwOwogcmV0dXJuICgoaTQgfCAwKSAhPSAwID8gaTEgOiAwIC0gaTEgfCAw
KSB8IDA7Cn0KCmZ1bmN0aW9uIF9fX2ZmbHVzaF91bmxvY2tlZChpNykgewogaTcgPSBpNyB8IDA7
CiB2YXIgaTEgPSAwLCBpMiA9IDAsIGkzID0gMCwgaTQgPSAwLCBpNSA9IDAsIGk2ID0gMDsKIGkx
ID0gaTcgKyAyMCB8IDA7CiBpNSA9IGk3ICsgMjggfCAwOwogaWYgKChIRUFQMzJbaTEgPj4gMl0g
fCAwKSA+Pj4gMCA+IChIRUFQMzJbaTUgPj4gMl0gfCAwKSA+Pj4gMCA/IChGVU5DVElPTl9UQUJM
RV9paWlpW0hFQVAzMltpNyArIDM2ID4+IDJdICYgM10oaTcsIDAsIDApIHwgMCwgKEhFQVAzMltp
MSA+PiAyXSB8IDApID09IDApIDogMCkgaTEgPSAtMTsgZWxzZSB7CiAgaTYgPSBpNyArIDQgfCAw
OwogIGkyID0gSEVBUDMyW2k2ID4+IDJdIHwgMDsKICBpMyA9IGk3ICsgOCB8IDA7CiAgaTQgPSBI
RUFQMzJbaTMgPj4gMl0gfCAwOwogIGlmIChpMiA+Pj4gMCA8IGk0ID4+PiAwKSBGVU5DVElPTl9U
QUJMRV9paWlpW0hFQVAzMltpNyArIDQwID4+IDJdICYgM10oaTcsIGkyIC0gaTQgfCAwLCAxKSB8
IDA7CiAgSEVBUDMyW2k3ICsgMTYgPj4gMl0gPSAwOwogIEhFQVAzMltpNSA+PiAyXSA9IDA7CiAg
SEVBUDMyW2kxID4+IDJdID0gMDsKICBIRUFQMzJbaTMgPj4gMl0gPSAwOwogIEhFQVAzMltpNiA+
PiAyXSA9IDA7CiAgaTEgPSAwOwogfQogcmV0dXJuIGkxIHwgMDsKfQoKZnVuY3Rpb24gX21lbWNw
eShpMSwgaTQsIGkyKSB7CiBpMSA9IGkxIHwgMDsKIGk0ID0gaTQgfCAwOwogaTIgPSBpMiB8IDA7
CiB2YXIgaTMgPSAwOwogaWYgKChpMiB8IDApID49IDQwOTYpIHJldHVybiBfZW1zY3JpcHRlbl9t
ZW1jcHlfYmlnKGkxIHwgMCwgaTQgfCAwLCBpMiB8IDApIHwgMDsKIGkzID0gaTEgfCAwOwogaWYg
KChpMSAmIDMpID09IChpNCAmIDMpKSB7CiAgd2hpbGUgKGkxICYgMykgewogICBpZiAoIWkyKSBy
ZXR1cm4gaTMgfCAwOwogICBIRUFQOFtpMSA+PiAwXSA9IEhFQVA4W2k0ID4+IDBdIHwgMDsKICAg
aTEgPSBpMSArIDEgfCAwOwogICBpNCA9IGk0ICsgMSB8IDA7CiAgIGkyID0gaTIgLSAxIHwgMDsK
ICB9CiAgd2hpbGUgKChpMiB8IDApID49IDQpIHsKICAgSEVBUDMyW2kxID4+IDJdID0gSEVBUDMy
W2k0ID4+IDJdOwogICBpMSA9IGkxICsgNCB8IDA7CiAgIGk0ID0gaTQgKyA0IHwgMDsKICAgaTIg
PSBpMiAtIDQgfCAwOwogIH0KIH0KIHdoaWxlICgoaTIgfCAwKSA+IDApIHsKICBIRUFQOFtpMSA+
PiAwXSA9IEhFQVA4W2k0ID4+IDBdIHwgMDsKICBpMSA9IGkxICsgMSB8IDA7CiAgaTQgPSBpNCAr
IDEgfCAwOwogIGkyID0gaTIgLSAxIHwgMDsKIH0KIHJldHVybiBpMyB8IDA7Cn0KCmZ1bmN0aW9u
IF9fX2RpdmRpMyhpMSwgaTIsIGkzLCBpNCkgewogaTEgPSBpMSB8IDA7CiBpMiA9IGkyIHwgMDsK
IGkzID0gaTMgfCAwOwogaTQgPSBpNCB8IDA7CiB2YXIgaTUgPSAwLCBpNiA9IDAsIGk3ID0gMCwg
aTggPSAwLCBpOSA9IDAsIGkxMCA9IDA7CiBpMTAgPSBpMiA+PiAzMSB8ICgoaTIgfCAwKSA8IDAg
PyAtMSA6IDApIDw8IDE7CiBpOSA9ICgoaTIgfCAwKSA8IDAgPyAtMSA6IDApID4+IDMxIHwgKChp
MiB8IDApIDwgMCA/IC0xIDogMCkgPDwgMTsKIGk2ID0gaTQgPj4gMzEgfCAoKGk0IHwgMCkgPCAw
ID8gLTEgOiAwKSA8PCAxOwogaTUgPSAoKGk0IHwgMCkgPCAwID8gLTEgOiAwKSA+PiAzMSB8ICgo
aTQgfCAwKSA8IDAgPyAtMSA6IDApIDw8IDE7CiBpOCA9IF9pNjRTdWJ0cmFjdChpMTAgXiBpMSwg
aTkgXiBpMiwgaTEwLCBpOSkgfCAwOwogaTcgPSB0ZW1wUmV0MDsKIGkyID0gaTYgXiBpMTA7CiBp
MSA9IGk1IF4gaTk7CiByZXR1cm4gX2k2NFN1YnRyYWN0KChfX191ZGl2bW9kZGk0KGk4LCBpNywg
X2k2NFN1YnRyYWN0KGk2IF4gaTMsIGk1IF4gaTQsIGk2LCBpNSkgfCAwLCB0ZW1wUmV0MCwgMCkg
fCAwKSBeIGkyLCB0ZW1wUmV0MCBeIGkxLCBpMiwgaTEpIHwgMDsKfQoKZnVuY3Rpb24gX2ZtdF91
KGkyLCBpMywgaTEpIHsKIGkyID0gaTIgfCAwOwogaTMgPSBpMyB8IDA7CiBpMSA9IGkxIHwgMDsK
IHZhciBpNCA9IDA7CiBpZiAoaTMgPj4+IDAgPiAwIHwgKGkzIHwgMCkgPT0gMCAmIGkyID4+PiAw
ID4gNDI5NDk2NzI5NSkgewogIGk0ID0gaTI7CiAgd2hpbGUgKDEpIHsKICAgaTIgPSBfX191cmVt
ZGkzKGk0IHwgMCwgaTMgfCAwLCAxMCwgMCkgfCAwOwogICBpMSA9IGkxICsgLTEgfCAwOwogICBI
RUFQOFtpMSA+PiAwXSA9IGkyIHwgNDg7CiAgIGkyID0gX19fdWRpdmRpMyhpNCB8IDAsIGkzIHwg
MCwgMTAsIDApIHwgMDsKICAgaWYgKGkzID4+PiAwID4gOSB8IChpMyB8IDApID09IDkgJiBpNCA+
Pj4gMCA+IDQyOTQ5NjcyOTUpIHsKICAgIGk0ID0gaTI7CiAgICBpMyA9IHRlbXBSZXQwOwogICB9
IGVsc2UgYnJlYWs7CiAgfQogfQogaWYgKGkyKSB3aGlsZSAoMSkgewogIGkxID0gaTEgKyAtMSB8
IDA7CiAgSEVBUDhbaTEgPj4gMF0gPSAoaTIgPj4+IDApICUgMTAgfCAwIHwgNDg7CiAgaWYgKGky
ID4+PiAwIDwgMTApIGJyZWFrOyBlbHNlIGkyID0gKGkyID4+PiAwKSAvIDEwIHwgMDsKIH0KIHJl
dHVybiBpMSB8IDA7Cn0KCmZ1bmN0aW9uIF9zdHJsZW4oaTEpIHsKIGkxID0gaTEgfCAwOwogdmFy
IGkyID0gMCwgaTMgPSAwLCBpNCA9IDA7CiBpNCA9IGkxOwogTDEgOiBkbyBpZiAoIShpNCAmIDMp
KSBpMyA9IDQ7IGVsc2UgewogIGkyID0gaTQ7CiAgd2hpbGUgKDEpIHsKICAgaWYgKCEoSEVBUDhb
aTEgPj4gMF0gfCAwKSkgewogICAgaTEgPSBpMjsKICAgIGJyZWFrIEwxOwogICB9CiAgIGkxID0g
aTEgKyAxIHwgMDsKICAgaTIgPSBpMTsKICAgaWYgKCEoaTIgJiAzKSkgewogICAgaTMgPSA0Owog
ICAgYnJlYWs7CiAgIH0KICB9CiB9IHdoaWxlICgwKTsKIGlmICgoaTMgfCAwKSA9PSA0KSB7CiAg
d2hpbGUgKDEpIHsKICAgaTIgPSBIRUFQMzJbaTEgPj4gMl0gfCAwOwogICBpZiAoISgoaTIgJiAt
MjEzOTA2MjE0NCBeIC0yMTM5MDYyMTQ0KSAmIGkyICsgLTE2ODQzMDA5KSkgaTEgPSBpMSArIDQg
fCAwOyBlbHNlIGJyZWFrOwogIH0KICBpZiAoKGkyICYgMjU1KSA8PCAyNCA+PiAyNCkgZG8gaTEg
PSBpMSArIDEgfCAwOyB3aGlsZSAoKEhFQVA4W2kxID4+IDBdIHwgMCkgIT0gMCk7CiB9CiByZXR1
cm4gaTEgLSBpNCB8IDA7Cn0KCmZ1bmN0aW9uIF9tZW1zZXQoaTIsIGk2LCBpMSkgewogaTIgPSBp
MiB8IDA7CiBpNiA9IGk2IHwgMDsKIGkxID0gaTEgfCAwOwogdmFyIGkzID0gMCwgaTQgPSAwLCBp
NSA9IDAsIGk3ID0gMDsKIGkzID0gaTIgKyBpMSB8IDA7CiBpZiAoKGkxIHwgMCkgPj0gMjApIHsK
ICBpNiA9IGk2ICYgMjU1OwogIGk1ID0gaTIgJiAzOwogIGk3ID0gaTYgfCBpNiA8PCA4IHwgaTYg
PDwgMTYgfCBpNiA8PCAyNDsKICBpNCA9IGkzICYgfjM7CiAgaWYgKGk1KSB7CiAgIGk1ID0gaTIg
KyA0IC0gaTUgfCAwOwogICB3aGlsZSAoKGkyIHwgMCkgPCAoaTUgfCAwKSkgewogICAgSEVBUDhb
aTIgPj4gMF0gPSBpNjsKICAgIGkyID0gaTIgKyAxIHwgMDsKICAgfQogIH0KICB3aGlsZSAoKGky
IHwgMCkgPCAoaTQgfCAwKSkgewogICBIRUFQMzJbaTIgPj4gMl0gPSBpNzsKICAgaTIgPSBpMiAr
IDQgfCAwOwogIH0KIH0KIHdoaWxlICgoaTIgfCAwKSA8IChpMyB8IDApKSB7CiAgSEVBUDhbaTIg
Pj4gMF0gPSBpNjsKICBpMiA9IGkyICsgMSB8IDA7CiB9CiByZXR1cm4gaTIgLSBpMSB8IDA7Cn0K
CmZ1bmN0aW9uIF9wdXRzKGkzKSB7CiBpMyA9IGkzIHwgMDsKIHZhciBpMSA9IDAsIGkyID0gMCwg
aTQgPSAwLCBpNSA9IDA7CiBpNCA9IEhFQVAzMlsyXSB8IDA7CiBpZiAoKEhFQVAzMltpNCArIDc2
ID4+IDJdIHwgMCkgPiAtMSkgaTUgPSBfX19sb2NrZmlsZShpNCkgfCAwOyBlbHNlIGk1ID0gMDsK
IGRvIGlmICgoX2ZwdXRzKGkzLCBpNCkgfCAwKSA8IDApIGkxID0gMTsgZWxzZSB7CiAgaWYgKChI
RUFQOFtpNCArIDc1ID4+IDBdIHwgMCkgIT0gMTAgPyAoaTEgPSBpNCArIDIwIHwgMCwgaTIgPSBI
RUFQMzJbaTEgPj4gMl0gfCAwLCBpMiA+Pj4gMCA8IChIRUFQMzJbaTQgKyAxNiA+PiAyXSB8IDAp
ID4+PiAwKSA6IDApIHsKICAgSEVBUDMyW2kxID4+IDJdID0gaTIgKyAxOwogICBIRUFQOFtpMiA+
PiAwXSA9IDEwOwogICBpMSA9IDA7CiAgIGJyZWFrOwogIH0KICBpMSA9IChfX19vdmVyZmxvdyhp
NCwgMTApIHwgMCkgPCAwOwogfSB3aGlsZSAoMCk7CiBpZiAoaTUpIF9fX3VubG9ja2ZpbGUoaTQp
OwogcmV0dXJuIGkxIDw8IDMxID4+IDMxIHwgMDsKfQoKZnVuY3Rpb24gX3N0cmVycm9yKGkxKSB7
CiBpMSA9IGkxIHwgMDsKIHZhciBpMiA9IDAsIGkzID0gMDsKIGkyID0gMDsKIHdoaWxlICgxKSB7
CiAgaWYgKChIRUFQVThbNzE0ICsgaTIgPj4gMF0gfCAwKSA9PSAoaTEgfCAwKSkgewogICBpMyA9
IDI7CiAgIGJyZWFrOwogIH0KICBpMiA9IGkyICsgMSB8IDA7CiAgaWYgKChpMiB8IDApID09IDg3
KSB7CiAgIGkyID0gODc7CiAgIGkxID0gODAyOwogICBpMyA9IDU7CiAgIGJyZWFrOwogIH0KIH0K
IGlmICgoaTMgfCAwKSA9PSAyKSBpZiAoIWkyKSBpMSA9IDgwMjsgZWxzZSB7CiAgaTEgPSA4MDI7
CiAgaTMgPSA1OwogfQogaWYgKChpMyB8IDApID09IDUpIHdoaWxlICgxKSB7CiAgd2hpbGUgKDEp
IHsKICAgaTMgPSBpMSArIDEgfCAwOwogICBpZiAoIShIRUFQOFtpMSA+PiAwXSB8IDApKSB7CiAg
ICBpMSA9IGkzOwogICAgYnJlYWs7CiAgIH0gZWxzZSBpMSA9IGkzOwogIH0KICBpMiA9IGkyICsg
LTEgfCAwOwogIGlmICghaTIpIGJyZWFrOyBlbHNlIGkzID0gNTsKIH0KIHJldHVybiBpMSB8IDA7
Cn0KCmZ1bmN0aW9uIF9fX3N0ZGlvX3NlZWsoaTEsIGkyLCBpNCkgewogaTEgPSBpMSB8IDA7CiBp
MiA9IGkyIHwgMDsKIGk0ID0gaTQgfCAwOwogdmFyIGkzID0gMCwgaTUgPSAwLCBpNiA9IDA7CiBp
NSA9IFNUQUNLVE9QOwogU1RBQ0tUT1AgPSBTVEFDS1RPUCArIDMyIHwgMDsKIGk2ID0gaTU7CiBp
MyA9IGk1ICsgMjAgfCAwOwogSEVBUDMyW2k2ID4+IDJdID0gSEVBUDMyW2kxICsgNjAgPj4gMl07
CiBIRUFQMzJbaTYgKyA0ID4+IDJdID0gMDsKIEhFQVAzMltpNiArIDggPj4gMl0gPSBpMjsKIEhF
QVAzMltpNiArIDEyID4+IDJdID0gaTM7CiBIRUFQMzJbaTYgKyAxNiA+PiAyXSA9IGk0OwogaWYg
KChfX19zeXNjYWxsX3JldChfX19zeXNjYWxsMTQwKDE0MCwgaTYgfCAwKSB8IDApIHwgMCkgPCAw
KSB7CiAgSEVBUDMyW2kzID4+IDJdID0gLTE7CiAgaTEgPSAtMTsKIH0gZWxzZSBpMSA9IEhFQVAz
MltpMyA+PiAyXSB8IDA7CiBTVEFDS1RPUCA9IGk1OwogcmV0dXJuIGkxIHwgMDsKfQoKZnVuY3Rp
b24gX19fdG93cml0ZShpMikgewogaTIgPSBpMiB8IDA7CiB2YXIgaTEgPSAwLCBpMyA9IDA7CiBp
MSA9IGkyICsgNzQgfCAwOwogaTMgPSBIRUFQOFtpMSA+PiAwXSB8IDA7CiBIRUFQOFtpMSA+PiAw
XSA9IGkzICsgMjU1IHwgaTM7CiBpMSA9IEhFQVAzMltpMiA+PiAyXSB8IDA7CiBpZiAoIShpMSAm
IDgpKSB7CiAgSEVBUDMyW2kyICsgOCA+PiAyXSA9IDA7CiAgSEVBUDMyW2kyICsgNCA+PiAyXSA9
IDA7CiAgaTEgPSBIRUFQMzJbaTIgKyA0NCA+PiAyXSB8IDA7CiAgSEVBUDMyW2kyICsgMjggPj4g
Ml0gPSBpMTsKICBIRUFQMzJbaTIgKyAyMCA+PiAyXSA9IGkxOwogIEhFQVAzMltpMiArIDE2ID4+
IDJdID0gaTEgKyAoSEVBUDMyW2kyICsgNDggPj4gMl0gfCAwKTsKICBpMSA9IDA7CiB9IGVsc2Ug
ewogIEhFQVAzMltpMiA+PiAyXSA9IGkxIHwgMzI7CiAgaTEgPSAtMTsKIH0KIHJldHVybiBpMSB8
IDA7Cn0KCmZ1bmN0aW9uIF9fX3N0ZG91dF93cml0ZShpMiwgaTEsIGkzKSB7CiBpMiA9IGkyIHwg
MDsKIGkxID0gaTEgfCAwOwogaTMgPSBpMyB8IDA7CiB2YXIgaTQgPSAwLCBpNSA9IDA7CiBpNSA9
IFNUQUNLVE9QOwogU1RBQ0tUT1AgPSBTVEFDS1RPUCArIDgwIHwgMDsKIGk0ID0gaTU7CiBIRUFQ
MzJbaTIgKyAzNiA+PiAyXSA9IDM7CiBpZiAoKEhFQVAzMltpMiA+PiAyXSAmIDY0IHwgMCkgPT0g
MCA/IChIRUFQMzJbaTQgPj4gMl0gPSBIRUFQMzJbaTIgKyA2MCA+PiAyXSwgSEVBUDMyW2k0ICsg
NCA+PiAyXSA9IDIxNTA1LCBIRUFQMzJbaTQgKyA4ID4+IDJdID0gaTUgKyAxMiwgKF9fX3N5c2Nh
bGw1NCg1NCwgaTQgfCAwKSB8IDApICE9IDApIDogMCkgSEVBUDhbaTIgKyA3NSA+PiAwXSA9IC0x
OwogaTEgPSBfX19zdGRpb193cml0ZShpMiwgaTEsIGkzKSB8IDA7CiBTVEFDS1RPUCA9IGk1Owog
cmV0dXJuIGkxIHwgMDsKfQoKZnVuY3Rpb24gY29weVRlbXBEb3VibGUoaTEpIHsKIGkxID0gaTEg
fCAwOwogSEVBUDhbdGVtcERvdWJsZVB0ciA+PiAwXSA9IEhFQVA4W2kxID4+IDBdOwogSEVBUDhb
dGVtcERvdWJsZVB0ciArIDEgPj4gMF0gPSBIRUFQOFtpMSArIDEgPj4gMF07CiBIRUFQOFt0ZW1w
RG91YmxlUHRyICsgMiA+PiAwXSA9IEhFQVA4W2kxICsgMiA+PiAwXTsKIEhFQVA4W3RlbXBEb3Vi
bGVQdHIgKyAzID4+IDBdID0gSEVBUDhbaTEgKyAzID4+IDBdOwogSEVBUDhbdGVtcERvdWJsZVB0
ciArIDQgPj4gMF0gPSBIRUFQOFtpMSArIDQgPj4gMF07CiBIRUFQOFt0ZW1wRG91YmxlUHRyICsg
NSA+PiAwXSA9IEhFQVA4W2kxICsgNSA+PiAwXTsKIEhFQVA4W3RlbXBEb3VibGVQdHIgKyA2ID4+
IDBdID0gSEVBUDhbaTEgKyA2ID4+IDBdOwogSEVBUDhbdGVtcERvdWJsZVB0ciArIDcgPj4gMF0g
PSBIRUFQOFtpMSArIDcgPj4gMF07Cn0KCmZ1bmN0aW9uIF9fX211bGRzaTMoaTEsIGkyKSB7CiBp
MSA9IGkxIHwgMDsKIGkyID0gaTIgfCAwOwogdmFyIGkzID0gMCwgaTQgPSAwLCBpNSA9IDAsIGk2
ID0gMDsKIGk2ID0gaTEgJiA2NTUzNTsKIGk0ID0gaTIgJiA2NTUzNTsKIGkzID0gTWF0aF9pbXVs
KGk0LCBpNikgfCAwOwogaTUgPSBpMSA+Pj4gMTY7CiBpNCA9IChpMyA+Pj4gMTYpICsgKE1hdGhf
aW11bChpNCwgaTUpIHwgMCkgfCAwOwogaTIgPSBpMiA+Pj4gMTY7CiBpMSA9IE1hdGhfaW11bChp
MiwgaTYpIHwgMDsKIHJldHVybiAodGVtcFJldDAgPSAoaTQgPj4+IDE2KSArIChNYXRoX2ltdWwo
aTIsIGk1KSB8IDApICsgKCgoaTQgJiA2NTUzNSkgKyBpMSB8IDApID4+PiAxNikgfCAwLCBpNCAr
IGkxIDw8IDE2IHwgaTMgJiA2NTUzNSB8IDApIHwgMDsKfQoKZnVuY3Rpb24gX2Z3cml0ZShpMiwg
aTUsIGkxLCBpMykgewogaTIgPSBpMiB8IDA7CiBpNSA9IGk1IHwgMDsKIGkxID0gaTEgfCAwOwog
aTMgPSBpMyB8IDA7CiB2YXIgaTQgPSAwLCBpNiA9IDA7CiBpNCA9IE1hdGhfaW11bChpMSwgaTUp
IHwgMDsKIGlmICgoSEVBUDMyW2kzICsgNzYgPj4gMl0gfCAwKSA+IC0xKSB7CiAgaTYgPSAoX19f
bG9ja2ZpbGUoaTMpIHwgMCkgPT0gMDsKICBpMiA9IF9fX2Z3cml0ZXgoaTIsIGk0LCBpMykgfCAw
OwogIGlmICghaTYpIF9fX3VubG9ja2ZpbGUoaTMpOwogfSBlbHNlIGkyID0gX19fZndyaXRleChp
MiwgaTQsIGkzKSB8IDA7CiBpZiAoKGkyIHwgMCkgIT0gKGk0IHwgMCkpIGkxID0gKGkyID4+PiAw
KSAvIChpNSA+Pj4gMCkgfCAwOwogcmV0dXJuIGkxIHwgMDsKfQoKZnVuY3Rpb24gX2xsdm1fY3R0
el9pMzIoaTIpIHsKIGkyID0gaTIgfCAwOwogdmFyIGkxID0gMDsKIGkxID0gSEVBUDhbY3R0el9p
OCArIChpMiAmIDI1NSkgPj4gMF0gfCAwOwogaWYgKChpMSB8IDApIDwgOCkgcmV0dXJuIGkxIHwg
MDsKIGkxID0gSEVBUDhbY3R0el9pOCArIChpMiA+PiA4ICYgMjU1KSA+PiAwXSB8IDA7CiBpZiAo
KGkxIHwgMCkgPCA4KSByZXR1cm4gaTEgKyA4IHwgMDsKIGkxID0gSEVBUDhbY3R0el9pOCArIChp
MiA+PiAxNiAmIDI1NSkgPj4gMF0gfCAwOwogaWYgKChpMSB8IDApIDwgOCkgcmV0dXJuIGkxICsg
MTYgfCAwOwogcmV0dXJuIChIRUFQOFtjdHR6X2k4ICsgKGkyID4+PiAyNCkgPj4gMF0gfCAwKSAr
IDI0IHwgMDsKfQoKZnVuY3Rpb24gX2luaXRfbXBhcmFtcygpIHsKIHZhciBpMSA9IDA7CiBkbyBp
ZiAoIShIRUFQMzJbMTMzXSB8IDApKSB7CiAgaTEgPSBfc3lzY29uZigzMCkgfCAwOwogIGlmICgh
KGkxICsgLTEgJiBpMSkpIHsKICAgSEVBUDMyWzEzNV0gPSBpMTsKICAgSEVBUDMyWzEzNF0gPSBp
MTsKICAgSEVBUDMyWzEzNl0gPSAtMTsKICAgSEVBUDMyWzEzN10gPSAtMTsKICAgSEVBUDMyWzEz
OF0gPSAwOwogICBIRUFQMzJbMTI2XSA9IDA7CiAgIEhFQVAzMlsxMzNdID0gKF90aW1lKDApIHwg
MCkgJiAtMTYgXiAxNDMxNjU1NzY4OwogICBicmVhazsKICB9IGVsc2UgX2Fib3J0KCk7CiB9IHdo
aWxlICgwKTsKIHJldHVybjsKfQoKZnVuY3Rpb24gX19fdXJlbWRpMyhpMSwgaTIsIGkzLCBpNCkg
ewogaTEgPSBpMSB8IDA7CiBpMiA9IGkyIHwgMDsKIGkzID0gaTMgfCAwOwogaTQgPSBpNCB8IDA7
CiB2YXIgaTUgPSAwLCBpNiA9IDA7CiBpNiA9IFNUQUNLVE9QOwogU1RBQ0tUT1AgPSBTVEFDS1RP
UCArIDE2IHwgMDsKIGk1ID0gaTYgfCAwOwogX19fdWRpdm1vZGRpNChpMSwgaTIsIGkzLCBpNCwg
aTUpIHwgMDsKIFNUQUNLVE9QID0gaTY7CiByZXR1cm4gKHRlbXBSZXQwID0gSEVBUDMyW2k1ICsg
NCA+PiAyXSB8IDAsIEhFQVAzMltpNSA+PiAyXSB8IDApIHwgMDsKfQoKZnVuY3Rpb24gX19fbXVs
ZGkzKGkxLCBpMiwgaTMsIGk0KSB7CiBpMSA9IGkxIHwgMDsKIGkyID0gaTIgfCAwOwogaTMgPSBp
MyB8IDA7CiBpNCA9IGk0IHwgMDsKIHZhciBpNSA9IDAsIGk2ID0gMDsKIGk1ID0gaTE7CiBpNiA9
IGkzOwogaTEgPSBfX19tdWxkc2kzKGk1LCBpNikgfCAwOwogaTMgPSB0ZW1wUmV0MDsKIHJldHVy
biAodGVtcFJldDAgPSAoTWF0aF9pbXVsKGkyLCBpNikgfCAwKSArIChNYXRoX2ltdWwoaTQsIGk1
KSB8IDApICsgaTMgfCBpMyAmIDAsIGkxIHwgMCB8IDApIHwgMDsKfQoKZnVuY3Rpb24gX19fc3Rk
aW9fY2xvc2UoaTEpIHsKIGkxID0gaTEgfCAwOwogdmFyIGkyID0gMCwgaTMgPSAwOwogaTIgPSBT
VEFDS1RPUDsKIFNUQUNLVE9QID0gU1RBQ0tUT1AgKyAxNiB8IDA7CiBpMyA9IGkyOwogSEVBUDMy
W2kzID4+IDJdID0gSEVBUDMyW2kxICsgNjAgPj4gMl07CiBpMSA9IF9fX3N5c2NhbGxfcmV0KF9f
X3N5c2NhbGw2KDYsIGkzIHwgMCkgfCAwKSB8IDA7CiBTVEFDS1RPUCA9IGkyOwogcmV0dXJuIGkx
IHwgMDsKfQoKZnVuY3Rpb24gY29weVRlbXBGbG9hdChpMSkgewogaTEgPSBpMSB8IDA7CiBIRUFQ
OFt0ZW1wRG91YmxlUHRyID4+IDBdID0gSEVBUDhbaTEgPj4gMF07CiBIRUFQOFt0ZW1wRG91Ymxl
UHRyICsgMSA+PiAwXSA9IEhFQVA4W2kxICsgMSA+PiAwXTsKIEhFQVA4W3RlbXBEb3VibGVQdHIg
KyAyID4+IDBdID0gSEVBUDhbaTEgKyAyID4+IDBdOwogSEVBUDhbdGVtcERvdWJsZVB0ciArIDMg
Pj4gMF0gPSBIRUFQOFtpMSArIDMgPj4gMF07Cn0KCmZ1bmN0aW9uIF9iaXRzaGlmdDY0QXNocihp
MywgaTIsIGkxKSB7CiBpMyA9IGkzIHwgMDsKIGkyID0gaTIgfCAwOwogaTEgPSBpMSB8IDA7CiBp
ZiAoKGkxIHwgMCkgPCAzMikgewogIHRlbXBSZXQwID0gaTIgPj4gaTE7CiAgcmV0dXJuIGkzID4+
PiBpMSB8IChpMiAmICgxIDw8IGkxKSAtIDEpIDw8IDMyIC0gaTE7CiB9CiB0ZW1wUmV0MCA9IChp
MiB8IDApIDwgMCA/IC0xIDogMDsKIHJldHVybiBpMiA+PiBpMSAtIDMyIHwgMDsKfQoKZnVuY3Rp
b24gX3ByaW50ZihpMSwgaTIpIHsKIGkxID0gaTEgfCAwOwogaTIgPSBpMiB8IDA7CiB2YXIgaTMg
PSAwLCBpNCA9IDA7CiBpMyA9IFNUQUNLVE9QOwogU1RBQ0tUT1AgPSBTVEFDS1RPUCArIDE2IHwg
MDsKIGk0ID0gaTM7CiBIRUFQMzJbaTQgPj4gMl0gPSBpMjsKIGkxID0gX3ZmcHJpbnRmKEhFQVAz
MlsyXSB8IDAsIGkxLCBpNCkgfCAwOwogU1RBQ0tUT1AgPSBpMzsKIHJldHVybiBpMSB8IDA7Cn0K
CmZ1bmN0aW9uIF9iaXRzaGlmdDY0U2hsKGkzLCBpMiwgaTEpIHsKIGkzID0gaTMgfCAwOwogaTIg
PSBpMiB8IDA7CiBpMSA9IGkxIHwgMDsKIGlmICgoaTEgfCAwKSA8IDMyKSB7CiAgdGVtcFJldDAg
PSBpMiA8PCBpMSB8IChpMyAmICgxIDw8IGkxKSAtIDEgPDwgMzIgLSBpMSkgPj4+IDMyIC0gaTE7
CiAgcmV0dXJuIGkzIDw8IGkxOwogfQogdGVtcFJldDAgPSBpMyA8PCBpMSAtIDMyOwogcmV0dXJu
IDA7Cn0KCmZ1bmN0aW9uIF9iaXRzaGlmdDY0THNocihpMywgaTIsIGkxKSB7CiBpMyA9IGkzIHwg
MDsKIGkyID0gaTIgfCAwOwogaTEgPSBpMSB8IDA7CiBpZiAoKGkxIHwgMCkgPCAzMikgewogIHRl
bXBSZXQwID0gaTIgPj4+IGkxOwogIHJldHVybiBpMyA+Pj4gaTEgfCAoaTIgJiAoMSA8PCBpMSkg
LSAxKSA8PCAzMiAtIGkxOwogfQogdGVtcFJldDAgPSAwOwogcmV0dXJuIGkyID4+PiBpMSAtIDMy
IHwgMDsKfQoKZnVuY3Rpb24gcnVuUG9zdFNldHMoKSB7fQpmdW5jdGlvbiBfaTY0U3VidHJhY3Qo
aTEsIGkyLCBpMywgaTQpIHsKIGkxID0gaTEgfCAwOwogaTIgPSBpMiB8IDA7CiBpMyA9IGkzIHwg
MDsKIGk0ID0gaTQgfCAwOwogaTIgPSBpMiAtIGk0IC0gKGkzID4+PiAwID4gaTEgPj4+IDAgfCAw
KSA+Pj4gMDsKIHJldHVybiAodGVtcFJldDAgPSBpMiwgaTEgLSBpMyA+Pj4gMCB8IDApIHwgMDsK
fQoKZnVuY3Rpb24gX2k2NEFkZChpMSwgaTIsIGkzLCBpNCkgewogaTEgPSBpMSB8IDA7CiBpMiA9
IGkyIHwgMDsKIGkzID0gaTMgfCAwOwogaTQgPSBpNCB8IDA7CiBpMyA9IGkxICsgaTMgPj4+IDA7
CiByZXR1cm4gKHRlbXBSZXQwID0gaTIgKyBpNCArIChpMyA+Pj4gMCA8IGkxID4+PiAwIHwgMCkg
Pj4+IDAsIGkzIHwgMCkgfCAwOwp9CgpmdW5jdGlvbiBkeW5DYWxsX2lpaWkoaTQsIGkxLCBpMiwg
aTMpIHsKIGk0ID0gaTQgfCAwOwogaTEgPSBpMSB8IDA7CiBpMiA9IGkyIHwgMDsKIGkzID0gaTMg
fCAwOwogcmV0dXJuIEZVTkNUSU9OX1RBQkxFX2lpaWlbaTQgJiAzXShpMSB8IDAsIGkyIHwgMCwg
aTMgfCAwKSB8IDA7Cn0KCmZ1bmN0aW9uIF9fX3N5c2NhbGxfcmV0KGkxKSB7CiBpMSA9IGkxIHwg
MDsKIGlmIChpMSA+Pj4gMCA+IDQyOTQ5NjMyMDApIHsKICBIRUFQMzJbKF9fX2Vycm5vX2xvY2F0
aW9uKCkgfCAwKSA+PiAyXSA9IDAgLSBpMTsKICBpMSA9IC0xOwogfQogcmV0dXJuIGkxIHwgMDsK
fQpmdW5jdGlvbiBzdGFja0FsbG9jKGkxKSB7CiBpMSA9IGkxIHwgMDsKIHZhciBpMiA9IDA7CiBp
MiA9IFNUQUNLVE9QOwogU1RBQ0tUT1AgPSBTVEFDS1RPUCArIGkxIHwgMDsKIFNUQUNLVE9QID0g
U1RBQ0tUT1AgKyAxNSAmIC0xNjsKIHJldHVybiBpMiB8IDA7Cn0KCmZ1bmN0aW9uIF9fX2Vycm5v
X2xvY2F0aW9uKCkgewogdmFyIGkxID0gMDsKIGlmICghKEhFQVAzMls0XSB8IDApKSBpMSA9IDU1
NjsgZWxzZSBpMSA9IEhFQVAzMlsoX3B0aHJlYWRfc2VsZigpIHwgMCkgKyA2MCA+PiAyXSB8IDA7
CiByZXR1cm4gaTEgfCAwOwp9CgpmdW5jdGlvbiBfX191ZGl2ZGkzKGkxLCBpMiwgaTMsIGk0KSB7
CiBpMSA9IGkxIHwgMDsKIGkyID0gaTIgfCAwOwogaTMgPSBpMyB8IDA7CiBpNCA9IGk0IHwgMDsK
IHJldHVybiBfX191ZGl2bW9kZGk0KGkxLCBpMiwgaTMsIGk0LCAwKSB8IDA7Cn0KCmZ1bmN0aW9u
IF93Y3RvbWIoaTEsIGkyKSB7CiBpMSA9IGkxIHwgMDsKIGkyID0gaTIgfCAwOwogaWYgKCFpMSkg
aTEgPSAwOyBlbHNlIGkxID0gX3djcnRvbWIoaTEsIGkyLCAwKSB8IDA7CiByZXR1cm4gaTEgfCAw
Owp9CgpmdW5jdGlvbiBzZXRUaHJldyhpMSwgaTIpIHsKIGkxID0gaTEgfCAwOwogaTIgPSBpMiB8
IDA7CiBpZiAoIV9fVEhSRVdfXykgewogIF9fVEhSRVdfXyA9IGkxOwogIHRocmV3VmFsdWUgPSBp
MjsKIH0KfQoKZnVuY3Rpb24gX2ZwdXRzKGkyLCBpMSkgewogaTIgPSBpMiB8IDA7CiBpMSA9IGkx
IHwgMDsKIHJldHVybiAoX2Z3cml0ZShpMiwgX3N0cmxlbihpMikgfCAwLCAxLCBpMSkgfCAwKSAr
IC0xIHwgMDsKfQoKZnVuY3Rpb24gZHluQ2FsbF9paShpMiwgaTEpIHsKIGkyID0gaTIgfCAwOwog
aTEgPSBpMSB8IDA7CiByZXR1cm4gRlVOQ1RJT05fVEFCTEVfaWlbaTIgJiAxXShpMSB8IDApIHwg
MDsKfQoKZnVuY3Rpb24gZXN0YWJsaXNoU3RhY2tTcGFjZShpMSwgaTIpIHsKIGkxID0gaTEgfCAw
OwogaTIgPSBpMiB8IDA7CiBTVEFDS1RPUCA9IGkxOwogU1RBQ0tfTUFYID0gaTI7Cn0KCmZ1bmN0
aW9uIF9jbGVhbnVwKGkxKSB7CiBpMSA9IGkxIHwgMDsKIGlmICghKEhFQVAzMltpMSArIDY4ID4+
IDJdIHwgMCkpIF9fX3VubG9ja2ZpbGUoaTEpOwogcmV0dXJuOwp9CgpmdW5jdGlvbiBfaXNzcGFj
ZShpMSkgewogaTEgPSBpMSB8IDA7CiByZXR1cm4gKChpMSB8IDApID09IDMyIHwgKGkxICsgLTkg
fCAwKSA+Pj4gMCA8IDUpICYgMSB8IDA7Cn0KCmZ1bmN0aW9uIGR5bkNhbGxfdmkoaTIsIGkxKSB7
CiBpMiA9IGkyIHwgMDsKIGkxID0gaTEgfCAwOwogRlVOQ1RJT05fVEFCTEVfdmlbaTIgJiAxXShp
MSB8IDApOwp9CgpmdW5jdGlvbiBiMShpMSwgaTIsIGkzKSB7CiBpMSA9IGkxIHwgMDsKIGkyID0g
aTIgfCAwOwogaTMgPSBpMyB8IDA7CiBhYm9ydCgxKTsKIHJldHVybiAwOwp9CgpmdW5jdGlvbiBf
ZnJleHBsKGQyLCBpMSkgewogZDIgPSArZDI7CiBpMSA9IGkxIHwgMDsKIHJldHVybiArKCtfZnJl
eHAoZDIsIGkxKSk7Cn0KCmZ1bmN0aW9uIF9wdXRjaGFyKGkxKSB7CiBpMSA9IGkxIHwgMDsKIHJl
dHVybiBfZnB1dGMoaTEsIEhFQVAzMlsyXSB8IDApIHwgMDsKfQoKZnVuY3Rpb24gc3RhY2tSZXN0
b3JlKGkxKSB7CiBpMSA9IGkxIHwgMDsKIFNUQUNLVE9QID0gaTE7Cn0KCmZ1bmN0aW9uIHNldFRl
bXBSZXQwKGkxKSB7CiBpMSA9IGkxIHwgMDsKIHRlbXBSZXQwID0gaTE7Cn0KCmZ1bmN0aW9uIGIw
KGkxKSB7CiBpMSA9IGkxIHwgMDsKIGFib3J0KDApOwogcmV0dXJuIDA7Cn0KCmZ1bmN0aW9uIF9f
X3VubG9ja2ZpbGUoaTEpIHsKIGkxID0gaTEgfCAwOwogcmV0dXJuOwp9CgpmdW5jdGlvbiBfX19s
b2NrZmlsZShpMSkgewogaTEgPSBpMSB8IDA7CiByZXR1cm4gMDsKfQoKZnVuY3Rpb24gZ2V0VGVt
cFJldDAoKSB7CiByZXR1cm4gdGVtcFJldDAgfCAwOwp9CgpmdW5jdGlvbiBzdGFja1NhdmUoKSB7
CiByZXR1cm4gU1RBQ0tUT1AgfCAwOwp9CgpmdW5jdGlvbiBiMihpMSkgewogaTEgPSBpMSB8IDA7
CiBhYm9ydCgyKTsKfQoKLy8gRU1TQ1JJUFRFTl9FTkRfRlVOQ1MKdmFyIEZVTkNUSU9OX1RBQkxF
X2lpID0gW2IwLF9fX3N0ZGlvX2Nsb3NlXTsKdmFyIEZVTkNUSU9OX1RBQkxFX2lpaWkgPSBbYjEs
X19fc3Rkb3V0X3dyaXRlLF9fX3N0ZGlvX3NlZWssX19fc3RkaW9fd3JpdGVdOwp2YXIgRlVOQ1RJ
T05fVEFCTEVfdmkgPSBbYjIsX2NsZWFudXBdOwoKICByZXR1cm4geyBfaTY0U3VidHJhY3Q6IF9p
NjRTdWJ0cmFjdCwgX2ZmbHVzaDogX2ZmbHVzaCwgX21haW46IF9tYWluLCBfaTY0QWRkOiBfaTY0
QWRkLCBfbWVtc2V0OiBfbWVtc2V0LCBfbWFsbG9jOiBfbWFsbG9jLCBfbWVtY3B5OiBfbWVtY3B5
LCBfYml0c2hpZnQ2NExzaHI6IF9iaXRzaGlmdDY0THNociwgX2ZyZWU6IF9mcmVlLCBfX19lcnJu
b19sb2NhdGlvbjogX19fZXJybm9fbG9jYXRpb24sIF9iaXRzaGlmdDY0U2hsOiBfYml0c2hpZnQ2
NFNobCwgcnVuUG9zdFNldHM6IHJ1blBvc3RTZXRzLCBzdGFja0FsbG9jOiBzdGFja0FsbG9jLCBz
dGFja1NhdmU6IHN0YWNrU2F2ZSwgc3RhY2tSZXN0b3JlOiBzdGFja1Jlc3RvcmUsIGVzdGFibGlz
aFN0YWNrU3BhY2U6IGVzdGFibGlzaFN0YWNrU3BhY2UsIHNldFRocmV3OiBzZXRUaHJldywgc2V0
VGVtcFJldDA6IHNldFRlbXBSZXQwLCBnZXRUZW1wUmV0MDogZ2V0VGVtcFJldDAsIGR5bkNhbGxf
aWk6IGR5bkNhbGxfaWksIGR5bkNhbGxfaWlpaTogZHluQ2FsbF9paWlpLCBkeW5DYWxsX3ZpOiBk
eW5DYWxsX3ZpIH07Cn0pCi8vIEVNU0NSSVBURU5fRU5EX0FTTQooTW9kdWxlLmFzbUdsb2JhbEFy
ZywgTW9kdWxlLmFzbUxpYnJhcnlBcmcsIGJ1ZmZlcik7CnZhciBfaTY0U3VidHJhY3QgPSBNb2R1
bGVbIl9pNjRTdWJ0cmFjdCJdID0gYXNtWyJfaTY0U3VidHJhY3QiXTsKdmFyIF9mZmx1c2ggPSBN
b2R1bGVbIl9mZmx1c2giXSA9IGFzbVsiX2ZmbHVzaCJdOwp2YXIgX21haW4gPSBNb2R1bGVbIl9t
YWluIl0gPSBhc21bIl9tYWluIl07CnZhciBfaTY0QWRkID0gTW9kdWxlWyJfaTY0QWRkIl0gPSBh
c21bIl9pNjRBZGQiXTsKdmFyIF9tZW1zZXQgPSBNb2R1bGVbIl9tZW1zZXQiXSA9IGFzbVsiX21l
bXNldCJdOwp2YXIgcnVuUG9zdFNldHMgPSBNb2R1bGVbInJ1blBvc3RTZXRzIl0gPSBhc21bInJ1
blBvc3RTZXRzIl07CnZhciBfbWFsbG9jID0gTW9kdWxlWyJfbWFsbG9jIl0gPSBhc21bIl9tYWxs
b2MiXTsKdmFyIF9tZW1jcHkgPSBNb2R1bGVbIl9tZW1jcHkiXSA9IGFzbVsiX21lbWNweSJdOwp2
YXIgX2JpdHNoaWZ0NjRMc2hyID0gTW9kdWxlWyJfYml0c2hpZnQ2NExzaHIiXSA9IGFzbVsiX2Jp
dHNoaWZ0NjRMc2hyIl07CnZhciBfZnJlZSA9IE1vZHVsZVsiX2ZyZWUiXSA9IGFzbVsiX2ZyZWUi
XTsKdmFyIF9fX2Vycm5vX2xvY2F0aW9uID0gTW9kdWxlWyJfX19lcnJub19sb2NhdGlvbiJdID0g
YXNtWyJfX19lcnJub19sb2NhdGlvbiJdOwp2YXIgX2JpdHNoaWZ0NjRTaGwgPSBNb2R1bGVbIl9i
aXRzaGlmdDY0U2hsIl0gPSBhc21bIl9iaXRzaGlmdDY0U2hsIl07CnZhciBkeW5DYWxsX2lpID0g
TW9kdWxlWyJkeW5DYWxsX2lpIl0gPSBhc21bImR5bkNhbGxfaWkiXTsKdmFyIGR5bkNhbGxfaWlp
aSA9IE1vZHVsZVsiZHluQ2FsbF9paWlpIl0gPSBhc21bImR5bkNhbGxfaWlpaSJdOwp2YXIgZHlu
Q2FsbF92aSA9IE1vZHVsZVsiZHluQ2FsbF92aSJdID0gYXNtWyJkeW5DYWxsX3ZpIl07ClJ1bnRp
bWUuc3RhY2tBbGxvYyA9IGFzbVsic3RhY2tBbGxvYyJdOwpSdW50aW1lLnN0YWNrU2F2ZSA9IGFz
bVsic3RhY2tTYXZlIl07ClJ1bnRpbWUuc3RhY2tSZXN0b3JlID0gYXNtWyJzdGFja1Jlc3RvcmUi
XTsKUnVudGltZS5lc3RhYmxpc2hTdGFja1NwYWNlID0gYXNtWyJlc3RhYmxpc2hTdGFja1NwYWNl
Il07ClJ1bnRpbWUuc2V0VGVtcFJldDAgPSBhc21bInNldFRlbXBSZXQwIl07ClJ1bnRpbWUuZ2V0
VGVtcFJldDAgPSBhc21bImdldFRlbXBSZXQwIl07CmZ1bmN0aW9uIEV4aXRTdGF0dXMoc3RhdHVz
KSB7CiB0aGlzLm5hbWUgPSAiRXhpdFN0YXR1cyI7CiB0aGlzLm1lc3NhZ2UgPSAiUHJvZ3JhbSB0
ZXJtaW5hdGVkIHdpdGggZXhpdCgiICsgc3RhdHVzICsgIikiOwogdGhpcy5zdGF0dXMgPSBzdGF0
dXM7Cn0KRXhpdFN0YXR1cy5wcm90b3R5cGUgPSBuZXcgRXJyb3I7CkV4aXRTdGF0dXMucHJvdG90
eXBlLmNvbnN0cnVjdG9yID0gRXhpdFN0YXR1czsKdmFyIGluaXRpYWxTdGFja1RvcDsKdmFyIHBy
ZWxvYWRTdGFydFRpbWUgPSBudWxsOwp2YXIgY2FsbGVkTWFpbiA9IGZhbHNlOwpkZXBlbmRlbmNp
ZXNGdWxmaWxsZWQgPSBmdW5jdGlvbiBydW5DYWxsZXIoKSB7CiBpZiAoIU1vZHVsZVsiY2FsbGVk
UnVuIl0pIHJ1bigpOwogaWYgKCFNb2R1bGVbImNhbGxlZFJ1biJdKSBkZXBlbmRlbmNpZXNGdWxm
aWxsZWQgPSBydW5DYWxsZXI7Cn07Ck1vZHVsZVsiY2FsbE1haW4iXSA9IE1vZHVsZS5jYWxsTWFp
biA9IGZ1bmN0aW9uIGNhbGxNYWluKGFyZ3MpIHsKIGFzc2VydChydW5EZXBlbmRlbmNpZXMgPT0g
MCwgImNhbm5vdCBjYWxsIG1haW4gd2hlbiBhc3luYyBkZXBlbmRlbmNpZXMgcmVtYWluISAobGlz
dGVuIG9uIF9fQVRNQUlOX18pIik7CiBhc3NlcnQoX19BVFBSRVJVTl9fLmxlbmd0aCA9PSAwLCAi
Y2Fubm90IGNhbGwgbWFpbiB3aGVuIHByZVJ1biBmdW5jdGlvbnMgcmVtYWluIHRvIGJlIGNhbGxl
ZCIpOwogYXJncyA9IGFyZ3MgfHwgW107CiBlbnN1cmVJbml0UnVudGltZSgpOwogdmFyIGFyZ2Mg
PSBhcmdzLmxlbmd0aCArIDE7CiBmdW5jdGlvbiBwYWQoKSB7CiAgZm9yICh2YXIgaSA9IDA7IGkg
PCA0IC0gMTsgaSsrKSB7CiAgIGFyZ3YucHVzaCgwKTsKICB9CiB9CiB2YXIgYXJndiA9IFsgYWxs
b2NhdGUoaW50QXJyYXlGcm9tU3RyaW5nKE1vZHVsZVsidGhpc1Byb2dyYW0iXSksICJpOCIsIEFM
TE9DX05PUk1BTCkgXTsKIHBhZCgpOwogZm9yICh2YXIgaSA9IDA7IGkgPCBhcmdjIC0gMTsgaSA9
IGkgKyAxKSB7CiAgYXJndi5wdXNoKGFsbG9jYXRlKGludEFycmF5RnJvbVN0cmluZyhhcmdzW2ld
KSwgImk4IiwgQUxMT0NfTk9STUFMKSk7CiAgcGFkKCk7CiB9CiBhcmd2LnB1c2goMCk7CiBhcmd2
ID0gYWxsb2NhdGUoYXJndiwgImkzMiIsIEFMTE9DX05PUk1BTCk7CiBpbml0aWFsU3RhY2tUb3Ag
PSBSdW50aW1lLnN0YWNrU2F2ZSgpOwogdHJ5IHsKICB2YXIgcmV0ID0gTW9kdWxlWyJfbWFpbiJd
KGFyZ2MsIGFyZ3YsIDApOwogIGV4aXQocmV0LCB0cnVlKTsKIH0gY2F0Y2ggKGUpIHsKICBpZiAo
ZSBpbnN0YW5jZW9mIEV4aXRTdGF0dXMpIHsKICAgcmV0dXJuOwogIH0gZWxzZSBpZiAoZSA9PSAi
U2ltdWxhdGVJbmZpbml0ZUxvb3AiKSB7CiAgIE1vZHVsZVsibm9FeGl0UnVudGltZSJdID0gdHJ1
ZTsKICAgUnVudGltZS5zdGFja1Jlc3RvcmUoaW5pdGlhbFN0YWNrVG9wKTsKICAgcmV0dXJuOwog
IH0gZWxzZSB7CiAgIGlmIChlICYmIHR5cGVvZiBlID09PSAib2JqZWN0IiAmJiBlLnN0YWNrKSBN
b2R1bGUucHJpbnRFcnIoImV4Y2VwdGlvbiB0aHJvd246ICIgKyBbIGUsIGUuc3RhY2sgXSk7CiAg
IHRocm93IGU7CiAgfQogfSBmaW5hbGx5IHsKICBjYWxsZWRNYWluID0gdHJ1ZTsKIH0KfTsKZnVu
Y3Rpb24gcnVuKGFyZ3MpIHsKIGFyZ3MgPSBhcmdzIHx8IE1vZHVsZVsiYXJndW1lbnRzIl07CiBp
ZiAocHJlbG9hZFN0YXJ0VGltZSA9PT0gbnVsbCkgcHJlbG9hZFN0YXJ0VGltZSA9IERhdGUubm93
KCk7CiBpZiAocnVuRGVwZW5kZW5jaWVzID4gMCkgewogIHJldHVybjsKIH0KIHByZVJ1bigpOwog
aWYgKHJ1bkRlcGVuZGVuY2llcyA+IDApIHJldHVybjsKIGlmIChNb2R1bGVbImNhbGxlZFJ1biJd
KSByZXR1cm47CiBmdW5jdGlvbiBkb1J1bigpIHsKICBpZiAoTW9kdWxlWyJjYWxsZWRSdW4iXSkg
cmV0dXJuOwogIE1vZHVsZVsiY2FsbGVkUnVuIl0gPSB0cnVlOwogIGlmIChBQk9SVCkgcmV0dXJu
OwogIGVuc3VyZUluaXRSdW50aW1lKCk7CiAgcHJlTWFpbigpOwogIGlmIChNb2R1bGVbIm9uUnVu
dGltZUluaXRpYWxpemVkIl0pIE1vZHVsZVsib25SdW50aW1lSW5pdGlhbGl6ZWQiXSgpOwogIGlm
IChNb2R1bGVbIl9tYWluIl0gJiYgc2hvdWxkUnVuTm93KSBNb2R1bGVbImNhbGxNYWluIl0oYXJn
cyk7CiAgcG9zdFJ1bigpOwogfQogaWYgKE1vZHVsZVsic2V0U3RhdHVzIl0pIHsKICBNb2R1bGVb
InNldFN0YXR1cyJdKCJSdW5uaW5nLi4uIik7CiAgc2V0VGltZW91dCgoZnVuY3Rpb24oKSB7CiAg
IHNldFRpbWVvdXQoKGZ1bmN0aW9uKCkgewogICAgTW9kdWxlWyJzZXRTdGF0dXMiXSgiIik7CiAg
IH0pLCAxKTsKICAgZG9SdW4oKTsKICB9KSwgMSk7CiB9IGVsc2UgewogIGRvUnVuKCk7CiB9Cn0K
TW9kdWxlWyJydW4iXSA9IE1vZHVsZS5ydW4gPSBydW47CmZ1bmN0aW9uIGV4aXQoc3RhdHVzLCBp
bXBsaWNpdCkgewogaWYgKGltcGxpY2l0ICYmIE1vZHVsZVsibm9FeGl0UnVudGltZSJdKSB7CiAg
cmV0dXJuOwogfQogaWYgKE1vZHVsZVsibm9FeGl0UnVudGltZSJdKSB7fSBlbHNlIHsKICBBQk9S
VCA9IHRydWU7CiAgRVhJVFNUQVRVUyA9IHN0YXR1czsKICBTVEFDS1RPUCA9IGluaXRpYWxTdGFj
a1RvcDsKICBleGl0UnVudGltZSgpOwogIGlmIChNb2R1bGVbIm9uRXhpdCJdKSBNb2R1bGVbIm9u
RXhpdCJdKHN0YXR1cyk7CiB9CiBpZiAoRU5WSVJPTk1FTlRfSVNfTk9ERSkgewogIHByb2Nlc3Nb
InN0ZG91dCJdWyJvbmNlIl0oImRyYWluIiwgKGZ1bmN0aW9uKCkgewogICBwcm9jZXNzWyJleGl0
Il0oc3RhdHVzKTsKICB9KSk7CiAgY29uc29sZS5sb2coIiAiKTsKICBzZXRUaW1lb3V0KChmdW5j
dGlvbigpIHsKICAgcHJvY2Vzc1siZXhpdCJdKHN0YXR1cyk7CiAgfSksIDUwMCk7CiB9IGVsc2Ug
aWYgKEVOVklST05NRU5UX0lTX1NIRUxMICYmIHR5cGVvZiBxdWl0ID09PSAiZnVuY3Rpb24iKSB7
CiAgcXVpdChzdGF0dXMpOwogfQogdGhyb3cgbmV3IEV4aXRTdGF0dXMoc3RhdHVzKTsKfQpNb2R1
bGVbImV4aXQiXSA9IE1vZHVsZS5leGl0ID0gZXhpdDsKdmFyIGFib3J0RGVjb3JhdG9ycyA9IFtd
OwpmdW5jdGlvbiBhYm9ydCh3aGF0KSB7CiBpZiAod2hhdCAhPT0gdW5kZWZpbmVkKSB7CiAgTW9k
dWxlLnByaW50KHdoYXQpOwogIE1vZHVsZS5wcmludEVycih3aGF0KTsKICB3aGF0ID0gSlNPTi5z
dHJpbmdpZnkod2hhdCk7CiB9IGVsc2UgewogIHdoYXQgPSAiIjsKIH0KIEFCT1JUID0gdHJ1ZTsK
IEVYSVRTVEFUVVMgPSAxOwogdmFyIGV4dHJhID0gIlxuSWYgdGhpcyBhYm9ydCgpIGlzIHVuZXhw
ZWN0ZWQsIGJ1aWxkIHdpdGggLXMgQVNTRVJUSU9OUz0xIHdoaWNoIGNhbiBnaXZlIG1vcmUgaW5m
b3JtYXRpb24uIjsKIHZhciBvdXRwdXQgPSAiYWJvcnQoIiArIHdoYXQgKyAiKSBhdCAiICsgc3Rh
Y2tUcmFjZSgpICsgZXh0cmE7CiBpZiAoYWJvcnREZWNvcmF0b3JzKSB7CiAgYWJvcnREZWNvcmF0
b3JzLmZvckVhY2goKGZ1bmN0aW9uKGRlY29yYXRvcikgewogICBvdXRwdXQgPSBkZWNvcmF0b3Io
b3V0cHV0LCB3aGF0KTsKICB9KSk7CiB9CiB0aHJvdyBvdXRwdXQ7Cn0KTW9kdWxlWyJhYm9ydCJd
ID0gTW9kdWxlLmFib3J0ID0gYWJvcnQ7CmlmIChNb2R1bGVbInByZUluaXQiXSkgewogaWYgKHR5
cGVvZiBNb2R1bGVbInByZUluaXQiXSA9PSAiZnVuY3Rpb24iKSBNb2R1bGVbInByZUluaXQiXSA9
IFsgTW9kdWxlWyJwcmVJbml0Il0gXTsKIHdoaWxlIChNb2R1bGVbInByZUluaXQiXS5sZW5ndGgg
PiAwKSB7CiAgTW9kdWxlWyJwcmVJbml0Il0ucG9wKCkoKTsKIH0KfQp2YXIgc2hvdWxkUnVuTm93
ID0gdHJ1ZTsKaWYgKE1vZHVsZVsibm9Jbml0aWFsUnVuIl0pIHsKIHNob3VsZFJ1bk5vdyA9IGZh
bHNlOwp9CnJ1bihbJzEwJ10pOwoKCgoK
</data>

          </attachment>
      

    </bug>

</bugzilla>