<?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>21345</bug_id>
          
          <creation_ts>2008-10-03 13:12:26 -0700</creation_ts>
          <short_desc>Start the debugger without reloading the inspected page</short_desc>
          <delta_ts>2008-10-15 19:36:56 -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>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>93951</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2008-10-03 13:12:26 -0700</bug_when>
    <thetext>Patch coming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93957</commentid>
    <comment_count>1</comment_count>
      <attachid>24065</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2008-10-03 13:17:38 -0700</bug_when>
    <thetext>Created attachment 24065
patch

This is a work-in-progress patch for dynamically recompiling with debugger / profiler hooks. Currently, it&apos;s set up to recompile on a timer, or when you attach the debugger. But there are problems:

* Seem to be some cases where a function doesn&apos;t round-trip correctly from source
* Recompiling on a timer seems to break event handling in dojo demos, gmail.com, and the debugger
* The debugger sometimes crashes

Also, the final version would need to add profiler hook opcodes to the machine, along with logic for emitting them when appropriate, in order to get the speedup.

I was hoping to have this done by the time I left for vacation, but it didn&apos;t come together, so I&apos;m posting it in case anyone wants to have a crack at finishing it while I&apos;m gone.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93960</commentid>
    <comment_count>2</comment_count>
      <attachid>24066</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2008-10-03 13:20:36 -0700</bug_when>
    <thetext>Created attachment 24066
patch

Added a missing file to the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>94711</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-10-09 00:43:28 -0700</bug_when>
    <thetext>I&apos;m merging this patch with TOT so I can do some testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>94721</commentid>
    <comment_count>4</comment_count>
      <attachid>24228</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-10-09 01:45:17 -0700</bug_when>
    <thetext>Created attachment 24228
patch, merged to ToT, with a couple small changes

I merged. I fixed a couple issues I noticed.

I changed the code that recompiles functions to use ProtectedPtr for the JSFunction objects. But maybe that&apos;s not needed, because nothing can be allocated during the recompile timer?

I changed the recompile timer to call JSGlobalObject::globalExec() instead of JSDOMWindowBase::globalExec(), because otherwise we&apos;ll die when recompiling functions attached to pages that are closed and have no frames.

I did a few other tweaks.

So far I haven&apos;t been able to get much of this to work. I die inside assertions in the debugger and I can&apos;t even tell if they&apos;re caused by the patch or not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>94722</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-10-09 01:46:34 -0700</bug_when>
    <thetext>I think the Page.h/cpp part of this patch should probably be dumped.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>94723</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-10-09 01:47:15 -0700</bug_when>
    <thetext>Since nothing starts the timer! Maybe it just happened to be turned off when Geoff posted the patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>95315</commentid>
    <comment_count>7</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2008-10-14 11:27:28 -0700</bug_when>
    <thetext>&gt; Since nothing starts the timer! Maybe it just happened to be turned off when
&gt; Geoff posted the patch?

Yeah, I posted the patch with the timer turned off. I was using the timer as a stress tester.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>95435</commentid>
    <comment_count>8</comment_count>
      <attachid>24367</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2008-10-15 13:30:06 -0700</bug_when>
    <thetext>Created attachment 24367
patch, finished product with no known bugs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>95437</commentid>
    <comment_count>9</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2008-10-15 13:30:44 -0700</bug_when>
    <thetext>*** Bug 21616 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>95443</commentid>
    <comment_count>10</comment_count>
      <attachid>24367</attachid>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-10-15 13:43:52 -0700</bug_when>
    <thetext>Comment on attachment 24367
patch, finished product with no known bugs

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>95469</commentid>
    <comment_count>11</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2008-10-15 16:34:35 -0700</bug_when>
    <thetext>Committed revision 37622.

Darin mentioned in person that we might crash when starting debugging from within a modal dialog. Due to bug 21626, I wasn&apos;t able to verify if that was the case or not. So, for the time being, I&apos;ve just added an ASSERT with an early return to cover the possibility.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>24065</attachid>
            <date>2008-10-03 13:17:38 -0700</date>
            <delta_ts>2008-10-03 13:20:36 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch-debugger-no-recompile.txt</filename>
            <type>text/plain</type>
            <size>36858</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAJKHJldmlzaW9uIDM3MTk2KQorKysgSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCSh3b3JraW5nIGNvcHkpCkBAIC05NSw2ICs5
NSw3IEBAIF9fWk4zSlNDMTBJZGVudGlmaWVyMjRjaGVja1NhbWVJZGVudGlmaWUKIF9fWk4zSlND
MTBJZGVudGlmaWVyMjRjaGVja1NhbWVJZGVudGlmaWVyVGFibGVFUE5TXzlFeGVjU3RhdGVFUE5T
XzdVU3RyaW5nM1JlcEUgCiBfX1pOM0pTQzEwSWRlbnRpZmllcjNhZGRFUE5TXzlFeGVjU3RhdGVF
UEtjCiBfX1pOM0pTQzEwSWRlbnRpZmllcjVlcXVhbEVQS05TXzdVU3RyaW5nM1JlcEVQS2MKK19f
Wk4zSlNDMTBKU0Z1bmN0aW9uNGluZm9FCiBfX1pOM0pTQzEwdGhyb3dFcnJvckVQTlNfOUV4ZWNT
dGF0ZUVOU185RXJyb3JUeXBlRQogX19aTjNKU0MxMHRocm93RXJyb3JFUE5TXzlFeGVjU3RhdGVF
TlNfOUVycm9yVHlwZUVQS2MKIF9fWk4zSlNDMTB0aHJvd0Vycm9yRVBOU185RXhlY1N0YXRlRU5T
XzlFcnJvclR5cGVFUktOU183VVN0cmluZ0UKQEAgLTE1MSw2ICsxNTIsOCBAQCBfX1pOM0pTQzE0
SlNHbG9iYWxPYmplY3REMkV2CiBfX1pOM0pTQzE0SlNHbG9iYWxPYmplY3Rud0VtUE5TXzEySlNH
bG9iYWxEYXRhRQogX19aTjNKU0MxNGNvbnN0cnVjdEFycmF5RVBOU185RXhlY1N0YXRlRVJLTlNf
N0FyZ0xpc3RFCiBfX1pOM0pTQzE1SlNXcmFwcGVyT2JqZWN0NG1hcmtFdgorX19aTjNKU0MxNkZ1
bmN0aW9uQm9keU5vZGUxM2ZpbmlzaFBhcnNpbmdFUE5TXzEwSWRlbnRpZmllckVtCitfX1pOM0pT
QzE2RnVuY3Rpb25Cb2R5Tm9kZTZjcmVhdGVFUE5TXzEySlNHbG9iYWxEYXRhRVBOU18xNFNvdXJj
ZUVsZW1lbnRzRVBOM1dURjZWZWN0b3JJU3Q0cGFpcklOU18xMElkZW50aWZpZXJFakVMbTE2RUVF
UE5TNl9JTlM1XzZSZWZQdHJJTlNfMTJGdW5jRGVjbE5vZGVFRUVMbTE2RUVFUktOU18xMFNvdXJj
ZUNvZGVFYmJiaQogX19aTjNKU0MxNkludGVybmFsRnVuY3Rpb240aW5mb0UKIF9fWk4zSlNDMTZJ
bnRlcm5hbEZ1bmN0aW9uQzJFUE5TXzlFeGVjU3RhdGVFTjNXVEYxMFBhc3NSZWZQdHJJTlNfMTFT
dHJ1Y3R1cmVJREVFRVJLTlNfMTBJZGVudGlmaWVyRQogX19aTjNKU0MxNkpTVmFyaWFibGVPYmpl
Y3QxNGRlbGV0ZVByb3BlcnR5RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRQpAQCAt
MTY3LDcgKzE3MCw5IEBAIF9fWk4zSlNDMjBjb25zdHJ1Y3RFbXB0eU9iamVjdEVQTlNfOUV4ZWMK
IF9fWk4zSlNDMjNvYmplY3RQcm90b0Z1bmNUb1N0cmluZ0VQTlNfOUV4ZWNTdGF0ZUVQTlNfOEpT
T2JqZWN0RVBOU183SlNWYWx1ZUVSS05TXzdBcmdMaXN0RQogX19aTjNKU0MyM3NldFVwU3RhdGlj
RnVuY3Rpb25TbG90RVBOU185RXhlY1N0YXRlRVBLTlNfOUhhc2hFbnRyeUVQTlNfOEpTT2JqZWN0
RVJLTlNfMTBJZGVudGlmaWVyRVJOU18xMlByb3BlcnR5U2xvdEUKIF9fWk4zSlNDNEhlYXAxNGFs
bG9jYXRlTnVtYmVyRW0KK19fWk4zSlNDNEhlYXAxNHByaW1hcnlIZWFwRW5kRXYKIF9fWk4zSlND
NEhlYXAxNXJlY29yZEV4dHJhQ29zdEVtCitfX1pOM0pTQzRIZWFwMTZwcmltYXJ5SGVhcEJlZ2lu
RXYKIF9fWk4zSlNDNEhlYXAxN2dsb2JhbE9iamVjdENvdW50RXYKIF9fWk4zSlNDNEhlYXAyMHBy
b3RlY3RlZE9iamVjdENvdW50RXYKIF9fWk4zSlNDNEhlYXAyNHNldEdDUHJvdGVjdE5lZWRzTG9j
a2luZ0V2CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDM3MTk2KQorKysgSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBj
b3B5KQpAQCAtNjksNiArNjksNyBAQAogCQkxNEJENUEzMDBBM0U5MUY2MDBCQUY1OUMgLyogSlND
b250ZXh0UmVmLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDE0QkQ1QTI5MEEzRTkxRjYwMEJBRjU5QyAvKiBKU0NvbnRleHRSZWYuY3BwICovOyB9Owog
CQkxNEJENUEzMjBBM0U5MUY2MDBCQUY1OUMgLyogSlNWYWx1ZVJlZi5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEJENUEyQjBBM0U5MUY2MDBCQUY1
OUMgLyogSlNWYWx1ZVJlZi5jcHAgKi87IH07CiAJCTE0RTBGRjEyMERCQUFFRDAwMDA3QzBBQiAv
KiBNYWNoaW5lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDE0OUIxNUU3MEQ4MUY5ODYwMDlDQjhDNyAvKiBNYWNoaW5lLmNwcCAqLzsgc2V0dGluZ3Mg
PSB7Q09NUElMRVJfRkxBR1MgPSAiLWZuby10cmVlLXByZSI7IH07IH07CisJCTE0RjM0ODhGMEU5
NUVGOEEwMDM2NDhCQyAvKiBDb2xsZWN0b3JIZWFwSXRlcmF0b3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0RjM0ODhFMEU5NUVGOEEwMDM2NDhCQyAv
KiBDb2xsZWN0b3JIZWFwSXRlcmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk1RDUzNzI2RjBFMUM1NDg4MDAyMUU1NDkgLyogVHJhY2luZy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUQ1MzcyNkUw
RTFDNTQ4ODAwMjFFNTQ5IC8qIFRyYWNpbmcuaCAqLzsgfTsKIAkJNUQ1RDhBQjYwRTBEMEE3MjAw
RjlDNjkyIC8qIGpzYyBpbiBDb3B5IEludG8gRnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzMkY1QkUxMDgyMkExQzcwMDczNjk3NSAvKiBqc2MgKi87IH07CiAJ
CTVENUQ4QUQxMEUwRDBFQkUwMEY5QzY5MiAvKiBsaWJlZGl0LmR5bGliIGluIEZyYW1ld29ya3Mg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUQ1RDhBRDAwRTBEMEVCRTAwRjlD
NjkyIC8qIGxpYmVkaXQuZHlsaWIgKi87IH07CkBAIC01MTUsNiArNTE2LDcgQEAKIAkJMTREQTgx
OEYwRDk5RkQyMDAwQjBBNEZCIC8qIEpTQWN0aXZhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU0FjdGl2YXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxNERFMEQ2ODBEMDI0MzE0MDBBQUNDQTIgLyogSlNHbG9iYWxPYmplY3QuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNHbG9iYWxPYmplY3QuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNEYyNTI1NjBEMDhERDhEMDA0RUNGRkYg
LyogSlNWYXJpYWJsZU9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U1ZhcmlhYmxlT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0RjM0ODhF
MEU5NUVGOEEwMDM2NDhCQyAvKiBDb2xsZWN0b3JIZWFwSXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQ29sbGVjdG9ySGVhcEl0ZXJhdG9yLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFDOTA1MTQyMEJBOUU4QTcwMDgxRTlEMCAvKiBWZXJzaW9uLnhj
Y29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IFZlcnNpb24ueGNjb25maWc7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDOTA1MTQzMEJBOUU4QTcwMDgxRTlEMCAv
KiBKYXZhU2NyaXB0Q29yZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGgg
PSBKYXZhU2NyaXB0Q29yZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MUM5MDUxNDQwQkE5RThBNzAwODFFOUQwIC8qIERlYnVnUmVsZWFzZS54Y2NvbmZpZyAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBEZWJ1Z1JlbGVhc2UueGNjb25maWc7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjk2LDYgKzEyOTgsNyBAQAogCQkJCUY2OTJBODg2MDI1
NTU5N0QwMUZGNjBGNyAvKiB1c3RyaW5nLmggKi8sCiAJCQkJMTQ3QjgzQUEwRTZEQjhDOTAwNDc3
NUE0IC8qIEJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyLmggKi8sCiAJCQkJMTQ3Qjg0NjIwRTZE
RTZCMTAwNDc3NUE0IC8qIFB1dFByb3BlcnR5U2xvdC5oICovLAorCQkJCTE0RjM0ODhFMEU5NUVG
OEEwMDM2NDhCQyAvKiBDb2xsZWN0b3JIZWFwSXRlcmF0b3IuaCAqLywKIAkJCSk7CiAJCQlwYXRo
ID0ga2pzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTE2MDAsNiArMTYwMyw3IEBA
CiAJCQkJN0UyQUREOEUwRTc5QUFENTAwRDUwQzUxIC8qIENoYXJhY3RlckNsYXNzQ29uc3RydWN0
b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MEQxN0Q3MEU4QUQ0QTkwMDBDRDE3RCAvKiBKU0Jh
c2VQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjlFQkNCNzBFOEM2RDRBMDA4NzIyQ0Mg
LyogUmVzdWx0VHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMTRGMzQ4OEYwRTk1RUY4QTAwMzY0
OEJDIC8qIENvbGxlY3RvckhlYXBJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBKYXZh
U2NyaXB0Q29yZS9WTS9Db2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9W
TS9Db2RlQmxvY2suaAkocmV2aXNpb24gMzcxOTYpCisrKyBKYXZhU2NyaXB0Q29yZS9WTS9Db2Rl
QmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMTU5LDcgKzE1OSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICAgICAgICAgIFVTdHJpbmcgZXJyTXNnOwogICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgICAgIFNvdXJjZUNvZGUgc291cmNlID0gbWFrZVNvdXJjZShldmFsU291cmNlKTsK
LSAgICAgICAgICAgICAgICBldmFsTm9kZSA9IGV4ZWMtPnBhcnNlcigpLT5wYXJzZTxFdmFsTm9k
ZT4oZXhlYywgc291cmNlLCAmZXJyTGluZSwgJmVyck1zZyk7CisgICAgICAgICAgICAgICAgZXZh
bE5vZGUgPSBleGVjLT5wYXJzZXIoKS0+cGFyc2U8RXZhbE5vZGU+KGV4ZWMsIGV4ZWMtPmR5bmFt
aWNHbG9iYWxPYmplY3QoKS0+ZGVidWdnZXIoKSwgc291cmNlLCAmZXJyTGluZSwgJmVyck1zZyk7
CiAgICAgICAgICAgICAgICAgaWYgKGV2YWxOb2RlKSB7CiAgICAgICAgICAgICAgICAgICAgIGlm
IChldmFsU291cmNlLnNpemUoKSA8IG1heENhY2hlYWJsZVNvdXJjZUxlbmd0aCAmJiAoKnNjb3Bl
Q2hhaW4tPmJlZ2luKCkpLT5pc1ZhcmlhYmxlT2JqZWN0KCkgJiYgY2FjaGVNYXAuc2l6ZSgpIDwg
bWF4Q2FjaGVFbnRyaWVzKQogICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVNYXAuc2V0KGV2
YWxTb3VyY2UucmVwKCksIGV2YWxOb2RlKTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9EZWJ1
Z2dlckNhbGxGcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL0RlYnVn
Z2VyQ2FsbEZyYW1lLmNwcAkocmV2aXNpb24gMzcxOTYpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMv
RGVidWdnZXJDYWxsRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Myw3ICs3Myw3IEBAIEpT
VmFsdWUqIERlYnVnZ2VyQ2FsbEZyYW1lOjpldmFsdWF0ZShjb24KICAgICBpbnQgZXJyTGluZTsK
ICAgICBVU3RyaW5nIGVyck1zZzsKICAgICBTb3VyY2VDb2RlIHNvdXJjZSA9IG1ha2VTb3VyY2Uo
c2NyaXB0KTsKLSAgICBSZWZQdHI8RXZhbE5vZGU+IGV2YWxOb2RlID0gbmV3RXhlYy5wYXJzZXIo
KS0+cGFyc2U8RXZhbE5vZGU+KCZuZXdFeGVjLCBzb3VyY2UsICZlcnJMaW5lLCAmZXJyTXNnKTsK
KyAgICBSZWZQdHI8RXZhbE5vZGU+IGV2YWxOb2RlID0gbmV3RXhlYy5wYXJzZXIoKS0+cGFyc2U8
RXZhbE5vZGU+KCZuZXdFeGVjLCBuZXdFeGVjLmR5bmFtaWNHbG9iYWxPYmplY3QoKS0+ZGVidWdn
ZXIoKSwgc291cmNlLCAmZXJyTGluZSwgJmVyck1zZyk7CiAgICAgaWYgKCFldmFsTm9kZSkKICAg
ICAgICAgcmV0dXJuIEVycm9yOjpjcmVhdGUoJm5ld0V4ZWMsIFN5bnRheEVycm9yLCBlcnJNc2cs
IGVyckxpbmUsIHNvdXJjZS5wcm92aWRlcigpLT5hc0lEKCksIHNvdXJjZS5wcm92aWRlcigpLT51
cmwoKSk7CiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9GdW5jdGlvbkNvbnN0cnVjdG9yLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvRnVuY3Rpb25Db25zdHJ1Y3Rvci5j
cHAJKHJldmlzaW9uIDM3MTk2KQorKysgSmF2YVNjcmlwdENvcmUva2pzL0Z1bmN0aW9uQ29uc3Ry
dWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw3ICs4Nyw3IEBAIEpTT2JqZWN0KiBjb25z
dHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqIGUKICAgICBpbnQgZXJyTGluZTsKICAgICBVU3RyaW5n
IGVyck1zZzsKICAgICBTb3VyY2VDb2RlIHNvdXJjZSA9IG1ha2VTb3VyY2UoYm9keSwgc291cmNl
VVJMLCBsaW5lTnVtYmVyKTsKLSAgICBSZWZQdHI8RnVuY3Rpb25Cb2R5Tm9kZT4gZnVuY3Rpb25C
b2R5ID0gZXhlYy0+cGFyc2VyKCktPnBhcnNlPEZ1bmN0aW9uQm9keU5vZGU+KGV4ZWMsIHNvdXJj
ZSwgJmVyckxpbmUsICZlcnJNc2cpOworICAgIFJlZlB0cjxGdW5jdGlvbkJvZHlOb2RlPiBmdW5j
dGlvbkJvZHkgPSBleGVjLT5wYXJzZXIoKS0+cGFyc2U8RnVuY3Rpb25Cb2R5Tm9kZT4oZXhlYywg
ZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpLT5kZWJ1Z2dlcigpLCBzb3VyY2UsICZlcnJMaW5l
LCAmZXJyTXNnKTsKIAogICAgIC8vIE5vIHByb2dyYW0gbm9kZSA9PSBzeW50YXggZXJyb3IgLSB0
aHJvdyBhIHN5bnRheCBlcnJvcgogICAgIGlmICghZnVuY3Rpb25Cb2R5KQpAQCAtMTI1LDcgKzEy
NSw3IEBAIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqIGUKICAgICAgICAg
cmV0dXJuIHRocm93RXJyb3IoZXhlYywgU3ludGF4RXJyb3IsICJTeW50YXggZXJyb3IgaW4gcGFy
YW1ldGVyIGxpc3QiKTsKICAgICB9CiAgICAgc2l6ZV90IGNvdW50ID0gcGFyYW1ldGVycy5zaXpl
KCk7Ci0gICAgZnVuY3Rpb25Cb2R5LT5maW5pc2hQYXJzaW5nKHNvdXJjZSwgcGFyYW1ldGVycy5y
ZWxlYXNlQnVmZmVyKCksIGNvdW50KTsKKyAgICBmdW5jdGlvbkJvZHktPmZpbmlzaFBhcnNpbmco
cGFyYW1ldGVycy5yZWxlYXNlQnVmZmVyKCksIGNvdW50KTsKIAogICAgIFNjb3BlQ2hhaW4gc2Nv
cGVDaGFpbihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGV4ZWMtPmdsb2JhbFRoaXNWYWx1
ZSgpKTsKICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoZXhlYykgSlNGdW5jdGlvbihl
eGVjLCBmdW5jdGlvbk5hbWUsIGZ1bmN0aW9uQm9keS5nZXQoKSwgc2NvcGVDaGFpbi5ub2RlKCkp
OwpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL0pTRnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEphdmFTY3JpcHRDb3JlL2tqcy9KU0Z1bmN0aW9uLmNwcAkocmV2aXNpb24gMzcxOTYpCisrKyBK
YXZhU2NyaXB0Q29yZS9ranMvSlNGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYg
KzQ5LDEyIEBAIEpTRnVuY3Rpb246OkpTRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCAKICAgICAs
IG1fYm9keShib2R5KQogICAgICwgbV9zY29wZUNoYWluKHNjb3BlQ2hhaW5Ob2RlKQogeworI2lm
bmRlZiBOREVCVUcKKyAgICBpZiAoIWV4ZWMtPnBhcnNlcigpLT5wYXJzZTxGdW5jdGlvbkJvZHlO
b2RlPihleGVjLCAwLCBib2R5LT5zb3VyY2UoKSkpIHsKKyAgICAgICAgcHJpbnRmKCJGQUlMRUQg
VE8gUkUtUEFSU0U6ICVzXG4iLCBib2R5LT5zb3VyY2UoKS50b1N0cmluZygpLmFzY2lpKCkpOwor
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisjZW5kaWYKIH0KIAogdm9pZCBK
U0Z1bmN0aW9uOjptYXJrKCkKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9KU0dsb2JhbE9iamVj
dEZ1bmN0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL0pTR2xvYmFs
T2JqZWN0RnVuY3Rpb25zLmNwcAkocmV2aXNpb24gMzcxOTYpCisrKyBKYXZhU2NyaXB0Q29yZS9r
anMvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODYsNyAr
Mjg2LDcgQEAgSlNWYWx1ZSogZ2xvYmFsRnVuY0V2YWwoRXhlY1N0YXRlKiBleGVjLAogICAgIFVT
dHJpbmcgZXJyTXNnOwogCiAgICAgU291cmNlQ29kZSBzb3VyY2UgPSBtYWtlU291cmNlKHMpOwot
ICAgIFJlZlB0cjxFdmFsTm9kZT4gZXZhbE5vZGUgPSBleGVjLT5wYXJzZXIoKS0+cGFyc2U8RXZh
bE5vZGU+KGV4ZWMsIHNvdXJjZSwgJmVyckxpbmUsICZlcnJNc2cpOworICAgIFJlZlB0cjxFdmFs
Tm9kZT4gZXZhbE5vZGUgPSBleGVjLT5wYXJzZXIoKS0+cGFyc2U8RXZhbE5vZGU+KGV4ZWMsIGV4
ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKS0+ZGVidWdnZXIoKSwgc291cmNlLCAmZXJyTGluZSwg
JmVyck1zZyk7CiAKICAgICBpZiAoIWV2YWxOb2RlKQogICAgICAgICByZXR1cm4gdGhyb3dFcnJv
cihleGVjLCBTeW50YXhFcnJvciwgZXJyTXNnLCBlcnJMaW5lLCBzb3VyY2UucHJvdmlkZXIoKS0+
YXNJRCgpLCBOVUxMKTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9QYXJzZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9QYXJzZXIuY3BwCShyZXZpc2lvbiAzNzE5NikK
KysrIEphdmFTY3JpcHRDb3JlL2tqcy9QYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MSw5
ICs2MSw2IEBAIHZvaWQgUGFyc2VyOjpwYXJzZShFeGVjU3RhdGUqIGV4ZWMsIGludCoKICAgICAg
ICAgKmVyck1zZyA9ICJQYXJzZSBlcnJvciI7CiAgICAgICAgIG1fc291cmNlRWxlbWVudHMuY2xl
YXIoKTsKICAgICB9Ci0KLSAgICBpZiAoRGVidWdnZXIqIGRlYnVnZ2VyID0gZXhlYy0+ZHluYW1p
Y0dsb2JhbE9iamVjdCgpLT5kZWJ1Z2dlcigpKQotICAgICAgICBkZWJ1Z2dlci0+c291cmNlUGFy
c2VkKGV4ZWMsICptX3NvdXJjZSwgKmVyckxpbmUsICplcnJNc2cpOwogfQogCiB2b2lkIFBhcnNl
cjo6ZGlkRmluaXNoUGFyc2luZyhTb3VyY2VFbGVtZW50cyogc291cmNlRWxlbWVudHMsIFBhcnNl
clJlZkNvdW50ZWREYXRhPERlY2xhcmF0aW9uU3RhY2tzOjpWYXJTdGFjaz4qIHZhclN0YWNrLCAK
SW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9QYXJzZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2Ny
aXB0Q29yZS9ranMvUGFyc2VyLmgJKHJldmlzaW9uIDM3MTk2KQorKysgSmF2YVNjcmlwdENvcmUv
a2pzL1BhcnNlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw2ICsyMyw3IEBACiAjaWZuZGVmIFBh
cnNlcl9oCiAjZGVmaW5lIFBhcnNlcl9oCiAKKyNpbmNsdWRlICJkZWJ1Z2dlci5oIgogI2luY2x1
ZGUgIlNvdXJjZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSAibm9kZXMuaCIKICNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgpAQCAtMzIsNiArMzMsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorICAgIGNs
YXNzIERlYnVnZ2VyOwogICAgIGNsYXNzIEZ1bmN0aW9uQm9keU5vZGU7CiAgICAgY2xhc3MgUHJv
Z3JhbU5vZGU7CiAgICAgY2xhc3MgVVN0cmluZzsKQEAgLTQ4LDggKzUwLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICBjbGFzcyBQYXJzZXIgOiBOb25jb3B5YWJsZSB7CiAgICAgcHVibGljOgot
ICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgUGFyc2VkTm9kZT4gUGFzc1JlZlB0cjxQYXJzZWROb2Rl
PiBwYXJzZShFeGVjU3RhdGUqLCBQYXNzUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiwgaW50KiBlcnJM
aW5lID0gMCwgVVN0cmluZyogZXJyTXNnID0gMCk7Ci0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBQ
YXJzZWROb2RlPiBQYXNzUmVmUHRyPFBhcnNlZE5vZGU+IHBhcnNlKEV4ZWNTdGF0ZSosIGNvbnN0
IFNvdXJjZUNvZGUmLCBpbnQqIGVyckxpbmUgPSAwLCBVU3RyaW5nKiBlcnJNc2cgPSAwKTsKKyAg
ICAgICAgdGVtcGxhdGUgPGNsYXNzIFBhcnNlZE5vZGU+IFBhc3NSZWZQdHI8UGFyc2VkTm9kZT4g
cGFyc2UoRXhlY1N0YXRlKiwgRGVidWdnZXIqLCBjb25zdCBTb3VyY2VDb2RlJiwgaW50KiBlcnJM
aW5lID0gMCwgVVN0cmluZyogZXJyTXNnID0gMCk7CiAKICAgICAgICAgdm9pZCBkaWRGaW5pc2hQ
YXJzaW5nKFNvdXJjZUVsZW1lbnRzKiwgUGFyc2VyUmVmQ291bnRlZERhdGE8RGVjbGFyYXRpb25T
dGFja3M6OlZhclN0YWNrPiosIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFyc2Vy
UmVmQ291bnRlZERhdGE8RGVjbGFyYXRpb25TdGFja3M6OkZ1bmN0aW9uU3RhY2s+KiwgYm9vbCB1
c2VzRXZhbCwgYm9vbCBuZWVkc0Nsb3N1cmUsIGJvb2wgdXNlc0FyZ3VtZW50cywgaW50IGxhc3RM
aW5lLCBpbnQgbnVtQ29uc3RhbnRzKTsKQEAgLTcwLDcgKzcxLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIGludCBtX251bUNvbnN0YW50czsKICAgICB9OwogCi0gICAgdGVtcGxhdGUgPGNs
YXNzIFBhcnNlZE5vZGU+IFBhc3NSZWZQdHI8UGFyc2VkTm9kZT4gUGFyc2VyOjpwYXJzZShFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgaW50KiBlcnJMaW5lLCBVU3Ry
aW5nKiBlcnJNc2cpCisgICAgdGVtcGxhdGUgPGNsYXNzIFBhcnNlZE5vZGU+IFBhc3NSZWZQdHI8
UGFyc2VkTm9kZT4gUGFyc2VyOjpwYXJzZShFeGVjU3RhdGUqIGV4ZWMsIERlYnVnZ2VyKiBkZWJ1
Z2dlciwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBpbnQqIGVyckxpbmUsIFVTdHJpbmcqIGVy
ck1zZykKICAgICB7CiAgICAgICAgIG1fc291cmNlID0gJnNvdXJjZTsKICAgICAgICAgcGFyc2Uo
ZXhlYywgZXJyTGluZSwgZXJyTXNnKTsKQEAgLTkyLDYgKzkzLDkgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIG1fc291cmNlRWxlbWVudHMgPSAwOwogICAgICAgICBtX3ZhckRlY2xhcmF0aW9u
cyA9IDA7CiAgICAgICAgIG1fZnVuY0RlY2xhcmF0aW9ucyA9IDA7CisKKyAgICAgICAgaWYgKGRl
YnVnZ2VyKQorICAgICAgICAgICAgZGVidWdnZXItPnNvdXJjZVBhcnNlZChleGVjLCBzb3VyY2Us
ICplcnJMaW5lLCAqZXJyTXNnKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiAg
ICAgfQogCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvU2hlbGwuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEphdmFTY3JpcHRDb3JlL2tqcy9TaGVsbC5jcHAJKHJldmlzaW9uIDM3MTk2KQorKysgSmF2YVNj
cmlwdENvcmUva2pzL1NoZWxsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE5LDcgKzMxOSw3IEBA
IHN0YXRpYyBib29sIHByZXR0eVByaW50U2NyaXB0KEV4ZWNTdGF0ZSoKIHsKICAgICBpbnQgZXJy
TGluZSA9IDA7CiAgICAgVVN0cmluZyBlcnJNc2c7Ci0gICAgUmVmUHRyPFByb2dyYW1Ob2RlPiBw
cm9ncmFtTm9kZSA9IGV4ZWMtPnBhcnNlcigpLT5wYXJzZTxQcm9ncmFtTm9kZT4oZXhlYywgbWFr
ZVNvdXJjZShzY3JpcHQuZGF0YSgpLCBmaWxlTmFtZSksICZlcnJMaW5lLCAmZXJyTXNnKTsKKyAg
ICBSZWZQdHI8UHJvZ3JhbU5vZGU+IHByb2dyYW1Ob2RlID0gZXhlYy0+cGFyc2VyKCktPnBhcnNl
PFByb2dyYW1Ob2RlPihleGVjLCBleGVjLT5keW5hbWljR2xvYmFsT2JqZWN0KCktPmRlYnVnZ2Vy
KCksIG1ha2VTb3VyY2Uoc2NyaXB0LmRhdGEoKSwgZmlsZU5hbWUpLCAmZXJyTGluZSwgJmVyck1z
Zyk7CiAgICAgaWYgKCFwcm9ncmFtTm9kZSkgewogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVz
OiVkOiAlcy5cbiIsIGZpbGVOYW1lLlVURjhTdHJpbmcoKS5jX3N0cigpLCBlcnJMaW5lLCBlcnJN
c2cuVVRGOFN0cmluZygpLmNfc3RyKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBK
YXZhU2NyaXB0Q29yZS9ranMvU291cmNlUmFuZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9ranMvU291cmNlUmFuZ2UuaAkocmV2aXNpb24gMzcxOTYpCisrKyBKYXZhU2NyaXB0Q29y
ZS9ranMvU291cmNlUmFuZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNjgsNiArNjgsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBtX3Byb3ZpZGVyLT5nZXRSYW5nZShtX3N0
YXJ0Q2hhciwgbV9lbmRDaGFyKTsKICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgYm9vbCBp
c051bGwoKSBjb25zdCB7IHJldHVybiAhbV9wcm92aWRlcjsgfQogICAgICAgICBTb3VyY2VQcm92
aWRlciogcHJvdmlkZXIoKSBjb25zdCB7IHJldHVybiBtX3Byb3ZpZGVyLmdldCgpOyB9CiAgICAg
ICAgIGludCBmaXJzdExpbmUoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0TGluZTsgfQogICAgICAg
ICBpbnQgc3RhcnRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0Q2hhcjsgfQpJbmRleDog
SmF2YVNjcmlwdENvcmUva2pzL2NvbGxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlw
dENvcmUva2pzL2NvbGxlY3Rvci5jcHAJKHJldmlzaW9uIDM3MTk2KQorKysgSmF2YVNjcmlwdENv
cmUva2pzL2NvbGxlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyLDYgKzIyLDcgQEAKICNp
bmNsdWRlICJjb2xsZWN0b3IuaCIKIAogI2luY2x1ZGUgIkFyZ0xpc3QuaCIKKyNpbmNsdWRlICJD
b2xsZWN0b3JIZWFwSXRlcmF0b3IuaCIKICNpbmNsdWRlICJFeGVjU3RhdGUuaCIKICNpbmNsdWRl
ICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTTG9jay5oIgpAQCAtMTY4LDcgKzE2OSw3
IEBAIEhlYXA6On5IZWFwKCkKICNlbmRpZgogfQogCi10ZW1wbGF0ZSA8SGVhcDo6SGVhcFR5cGUg
aGVhcFR5cGU+Cit0ZW1wbGF0ZSA8SGVhcFR5cGUgaGVhcFR5cGU+CiBzdGF0aWMgTkVWRVJfSU5M
SU5FIENvbGxlY3RvckJsb2NrKiBhbGxvY2F0ZUJsb2NrKCkKIHsKICNpZiBQTEFURk9STShEQVJX
SU4pCkBAIC0yNTIsMjUgKzI1Myw3IEBAIHZvaWQgSGVhcDo6cmVjb3JkRXh0cmFDb3N0KHNpemVf
dCBjb3N0KQogICAgIHByaW1hcnlIZWFwLmV4dHJhQ29zdCArPSBjb3N0OwogfQogCi10ZW1wbGF0
ZSA8SGVhcDo6SGVhcFR5cGUgaGVhcFR5cGU+IHN0cnVjdCBIZWFwQ29uc3RhbnRzOwotCi10ZW1w
bGF0ZSA8PiBzdHJ1Y3QgSGVhcENvbnN0YW50czxIZWFwOjpQcmltYXJ5SGVhcD4gewotICAgIHN0
YXRpYyBjb25zdCBzaXplX3QgY2VsbFNpemUgPSBDRUxMX1NJWkU7Ci0gICAgc3RhdGljIGNvbnN0
IHNpemVfdCBjZWxsc1BlckJsb2NrID0gQ0VMTFNfUEVSX0JMT0NLOwotICAgIHN0YXRpYyBjb25z
dCBzaXplX3QgYml0bWFwU2hpZnQgPSAwOwotICAgIHR5cGVkZWYgQ29sbGVjdG9yQ2VsbCBDZWxs
OwotICAgIHR5cGVkZWYgQ29sbGVjdG9yQmxvY2sgQmxvY2s7Ci19OwotCi10ZW1wbGF0ZSA8PiBz
dHJ1Y3QgSGVhcENvbnN0YW50czxIZWFwOjpOdW1iZXJIZWFwPiB7Ci0gICAgc3RhdGljIGNvbnN0
IHNpemVfdCBjZWxsU2l6ZSA9IFNNQUxMX0NFTExfU0laRTsKLSAgICBzdGF0aWMgY29uc3Qgc2l6
ZV90IGNlbGxzUGVyQmxvY2sgPSBTTUFMTF9DRUxMU19QRVJfQkxPQ0s7Ci0gICAgc3RhdGljIGNv
bnN0IHNpemVfdCBiaXRtYXBTaGlmdCA9IDE7Ci0gICAgdHlwZWRlZiBTbWFsbENvbGxlY3RvckNl
bGwgQ2VsbDsKLSAgICB0eXBlZGVmIFNtYWxsQ2VsbENvbGxlY3RvckJsb2NrIEJsb2NrOwotfTsK
LQotdGVtcGxhdGUgPEhlYXA6OkhlYXBUeXBlIGhlYXBUeXBlPiBBTFdBWVNfSU5MSU5FIHZvaWQq
IEhlYXA6OmhlYXBBbGxvY2F0ZShzaXplX3QgcykKK3RlbXBsYXRlIDxIZWFwVHlwZSBoZWFwVHlw
ZT4gQUxXQVlTX0lOTElORSB2b2lkKiBIZWFwOjpoZWFwQWxsb2NhdGUoc2l6ZV90IHMpCiB7CiAg
ICAgdHlwZWRlZiB0eXBlbmFtZSBIZWFwQ29uc3RhbnRzPGhlYXBUeXBlPjo6QmxvY2sgQmxvY2s7
CiAgICAgdHlwZWRlZiB0eXBlbmFtZSBIZWFwQ29uc3RhbnRzPGhlYXBUeXBlPjo6Q2VsbCBDZWxs
OwpAQCAtODQ2LDEzICs4MjksMTMgQEAgdm9pZCBIZWFwOjptYXJrUHJvdGVjdGVkT2JqZWN0cygp
CiAgICAgICAgIG1fcHJvdGVjdGVkVmFsdWVzTXV0ZXgtPnVubG9jaygpOwogfQogCi10ZW1wbGF0
ZSA8SGVhcDo6SGVhcFR5cGUgaGVhcFR5cGU+IHNpemVfdCBIZWFwOjpzd2VlcCgpCit0ZW1wbGF0
ZSA8SGVhcFR5cGUgaGVhcFR5cGU+IHNpemVfdCBIZWFwOjpzd2VlcCgpCiB7CiAgICAgdHlwZWRl
ZiB0eXBlbmFtZSBIZWFwQ29uc3RhbnRzPGhlYXBUeXBlPjo6QmxvY2sgQmxvY2s7CiAgICAgdHlw
ZWRlZiB0eXBlbmFtZSBIZWFwQ29uc3RhbnRzPGhlYXBUeXBlPjo6Q2VsbCBDZWxsOwogCiAgICAg
Ly8gU1dFRVA6IGRlbGV0ZSBldmVyeXRoaW5nIHdpdGggYSB6ZXJvIHJlZmNvdW50IChnYXJiYWdl
KSBhbmQgdW5tYXJrIGV2ZXJ5dGhpbmcgZWxzZQotICAgIENvbGxlY3RvckhlYXAmIGhlYXAgPSBo
ZWFwVHlwZSA9PSBIZWFwOjpQcmltYXJ5SGVhcCA/IHByaW1hcnlIZWFwIDogbnVtYmVySGVhcDsK
KyAgICBDb2xsZWN0b3JIZWFwJiBoZWFwID0gaGVhcFR5cGUgPT0gUHJpbWFyeUhlYXAgPyBwcmlt
YXJ5SGVhcCA6IG51bWJlckhlYXA7CiAgICAgCiAgICAgc2l6ZV90IGVtcHR5QmxvY2tzID0gMDsK
ICAgICBzaXplX3QgbnVtTGl2ZU9iamVjdHMgPSBoZWFwLm51bUxpdmVPYmplY3RzOwpAQCAtODY5
LDcgKzg1Miw3IEBAIHRlbXBsYXRlIDxIZWFwOjpIZWFwVHlwZSBoZWFwVHlwZT4gc2l6ZV8KICAg
ICAgICAgICAgICAgICBpZiAoIWN1ckJsb2NrLT5tYXJrZWQuZ2V0KGkgPj4gSGVhcENvbnN0YW50
czxoZWFwVHlwZT46OmJpdG1hcFNoaWZ0KSkgewogICAgICAgICAgICAgICAgICAgICBDZWxsKiBj
ZWxsID0gY3VyQmxvY2stPmNlbGxzICsgaTsKICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAg
ICAgICAgICAgICAgIGlmIChoZWFwVHlwZSAhPSBIZWFwOjpOdW1iZXJIZWFwKSB7CisgICAgICAg
ICAgICAgICAgICAgIGlmIChoZWFwVHlwZSAhPSBOdW1iZXJIZWFwKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBKU0NlbGwqIGltcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8SlNDZWxsKj4oY2VsbCk7
CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzcGVjaWFsIGNhc2UgZm9yIGFsbG9jYXRlZCBi
dXQgdW5pbml0aWFsaXplZCBvYmplY3QKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChXZSBk
b24ndCBuZWVkIHRoaXMgY2hlY2sgZWFybGllciBiZWNhdXNlIG5vdGhpbmcgcHJpb3IgdGhpcyBw
b2ludCAKQEAgLTg5Nyw3ICs4ODAsNyBAQCB0ZW1wbGF0ZSA8SGVhcDo6SGVhcFR5cGUgaGVhcFR5
cGU+IHNpemVfCiAgICAgICAgICAgICAgICAgICAgICsrbWluaW11bUNlbGxzVG9Qcm9jZXNzOwog
ICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICghY3VyQmxv
Y2stPm1hcmtlZC5nZXQoaSA+PiBIZWFwQ29uc3RhbnRzPGhlYXBUeXBlPjo6Yml0bWFwU2hpZnQp
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGVhcFR5cGUgIT0gSGVhcDo6TnVtYmVy
SGVhcCkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhlYXBUeXBlICE9IE51bWJlckhl
YXApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKU0NlbGwqIGltcCA9IHJlaW50ZXJw
cmV0X2Nhc3Q8SlNDZWxsKj4oY2VsbCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1w
LT5+SlNDZWxsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CkBAIC0xMDcxLDQgKzEwNTQs
MTQgQEAgYm9vbCBIZWFwOjppc0J1c3koKQogICAgIHJldHVybiAocHJpbWFyeUhlYXAub3BlcmF0
aW9uSW5Qcm9ncmVzcyAhPSBOb09wZXJhdGlvbikgfCAobnVtYmVySGVhcC5vcGVyYXRpb25JblBy
b2dyZXNzICE9IE5vT3BlcmF0aW9uKTsKIH0KIAorSGVhcDo6aXRlcmF0b3IgSGVhcDo6cHJpbWFy
eUhlYXBCZWdpbigpCit7CisgICAgcmV0dXJuIGl0ZXJhdG9yKHByaW1hcnlIZWFwLmJsb2Nrcywg
cHJpbWFyeUhlYXAuYmxvY2tzICsgcHJpbWFyeUhlYXAudXNlZEJsb2Nrcyk7Cit9CisKK0hlYXA6
Oml0ZXJhdG9yIEhlYXA6OnByaW1hcnlIZWFwRW5kKCkKK3sKKyAgICByZXR1cm4gaXRlcmF0b3Io
cHJpbWFyeUhlYXAuYmxvY2tzICsgcHJpbWFyeUhlYXAudXNlZEJsb2NrcywgcHJpbWFyeUhlYXAu
YmxvY2tzICsgcHJpbWFyeUhlYXAudXNlZEJsb2Nrcyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpT
QwpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL2NvbGxlY3Rvci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEph
dmFTY3JpcHRDb3JlL2tqcy9jb2xsZWN0b3IuaAkocmV2aXNpb24gMzcxOTYpCisrKyBKYXZhU2Ny
aXB0Q29yZS9ranMvY29sbGVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDkgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNWYWx1ZTsKIAogICAgIGVudW0gT3BlcmF0aW9u
SW5Qcm9ncmVzcyB7IE5vT3BlcmF0aW9uLCBBbGxvY2F0aW9uLCBDb2xsZWN0aW9uIH07CisgICAg
ZW51bSBIZWFwVHlwZSB7IFByaW1hcnlIZWFwLCBOdW1iZXJIZWFwIH07CisKKyAgICB0ZW1wbGF0
ZSA8SGVhcFR5cGU+IGNsYXNzIENvbGxlY3RvckhlYXBJdGVyYXRvcjsKIAogICAgIHN0cnVjdCBD
b2xsZWN0b3JIZWFwIHsKICAgICAgICAgQ29sbGVjdG9yQmxvY2sqKiBibG9ja3M7CkBAIC02Miw3
ICs2NSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEhlYXAgOiBOb25jb3B5YWJsZSB7
CiAgICAgcHVibGljOgogICAgICAgICBjbGFzcyBUaHJlYWQ7Ci0gICAgICAgIGVudW0gSGVhcFR5
cGUgeyBQcmltYXJ5SGVhcCwgTnVtYmVySGVhcCB9OworICAgICAgICB0eXBlZGVmIENvbGxlY3Rv
ckhlYXBJdGVyYXRvcjxQcmltYXJ5SGVhcD4gaXRlcmF0b3I7CisgICAgICAgIHN0YXRpYyBjb25z
dCBzaXplX3QgbWluRXh0cmFDb3N0U2l6ZSA9IDI1NjsKIAogI2lmZGVmIEpBVkFTQ1JJUFRDT1JF
X0JVSUxESU5HX0FMTF9JTl9PTkVfRklMRQogICAgICAgICAvLyBXZSBjYW4gaW5saW5lIHRoZXNl
IGZ1bmN0aW9ucyBiZWNhdXNlIGV2ZXJ5dGhpbmcgaXMgY29tcGlsZWQgYXMKQEAgLTc1LDEyICs3
OSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCogYWxsb2NhdGVOdW1iZXIoc2l6
ZV90KTsKICAgICAgICAgdm9pZCogYWxsb2NhdGUoc2l6ZV90KTsKIAotICAgICAgICBib29sIGNv
bGxlY3QoKTsKLSAgICAgICAgYm9vbCBpc0J1c3koKTsgLy8gdHJ1ZSBpZiBhbiBhbGxvY2F0aW9u
IG9yIGNvbGxlY3Rpb24gaXMgaW4gcHJvZ3Jlc3MKLQogICAgICAgICB+SGVhcCgpOwogCi0gICAg
ICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbWluRXh0cmFDb3N0U2l6ZSA9IDI1NjsKKyAgICAgICAg
Ym9vbCBjb2xsZWN0KCk7CisgICAgICAgIGJvb2wgaXNCdXN5KCk7IC8vIHRydWUgaWYgYW4gYWxs
b2NhdGlvbiBvciBjb2xsZWN0aW9uIGlzIGluIHByb2dyZXNzCiAKICAgICAgICAgdm9pZCByZXBv
cnRFeHRyYU1lbW9yeUNvc3Qoc2l6ZV90IGNvc3QpOwogCkBAIC0xMDgsMTAgKzExMCwxNCBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEoKSBjb25z
dCB7IHJldHVybiBtX2dsb2JhbERhdGE7IH0KICAgICAgICAgc3RhdGljIGJvb2wgaXNOdW1iZXIo
SlNDZWxsKik7CisgICAgICAgIAorICAgICAgICAvLyBJdGVyYXRvcnMgZm9yIHRoZSBvYmplY3Qg
aGVhcC4KKyAgICAgICAgaXRlcmF0b3IgcHJpbWFyeUhlYXBCZWdpbigpOworICAgICAgICBpdGVy
YXRvciBwcmltYXJ5SGVhcEVuZCgpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdGVtcGxhdGUg
PEhlYXA6OkhlYXBUeXBlIGhlYXBUeXBlPiB2b2lkKiBoZWFwQWxsb2NhdGUoc2l6ZV90KTsKLSAg
ICAgICAgdGVtcGxhdGUgPEhlYXA6OkhlYXBUeXBlIGhlYXBUeXBlPiBzaXplX3Qgc3dlZXAoKTsK
KyAgICAgICAgdGVtcGxhdGUgPEhlYXBUeXBlIGhlYXBUeXBlPiB2b2lkKiBoZWFwQWxsb2NhdGUo
c2l6ZV90KTsKKyAgICAgICAgdGVtcGxhdGUgPEhlYXBUeXBlIGhlYXBUeXBlPiBzaXplX3Qgc3dl
ZXAoKTsKICAgICAgICAgc3RhdGljIGNvbnN0IENvbGxlY3RvckJsb2NrKiBjZWxsQmxvY2soY29u
c3QgSlNDZWxsKik7CiAgICAgICAgIHN0YXRpYyBDb2xsZWN0b3JCbG9jayogY2VsbEJsb2NrKEpT
Q2VsbCopOwogICAgICAgICBzdGF0aWMgc2l6ZV90IGNlbGxPZmZzZXQoY29uc3QgSlNDZWxsKik7
CkBAIC0yMDUsNyArMjExLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIENvbGxlY3RvckNl
bGwqIGZyZWVMaXN0OwogICAgICAgICBDb2xsZWN0b3JCaXRtYXAgbWFya2VkOwogICAgICAgICBI
ZWFwKiBoZWFwOwotICAgICAgICBIZWFwOjpIZWFwVHlwZSB0eXBlOworICAgICAgICBIZWFwVHlw
ZSB0eXBlOwogICAgIH07CiAKICAgICBjbGFzcyBTbWFsbENlbGxDb2xsZWN0b3JCbG9jayB7CkBA
IC0yMTUsOSArMjIxLDI3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBTbWFsbENvbGxlY3Rv
ckNlbGwqIGZyZWVMaXN0OwogICAgICAgICBDb2xsZWN0b3JCaXRtYXAgbWFya2VkOwogICAgICAg
ICBIZWFwKiBoZWFwOwotICAgICAgICBIZWFwOjpIZWFwVHlwZSB0eXBlOworICAgICAgICBIZWFw
VHlwZSB0eXBlOwogICAgIH07CiAgICAgCisgICAgdGVtcGxhdGUgPEhlYXBUeXBlIGhlYXBUeXBl
PiBzdHJ1Y3QgSGVhcENvbnN0YW50czsKKworICAgIHRlbXBsYXRlIDw+IHN0cnVjdCBIZWFwQ29u
c3RhbnRzPFByaW1hcnlIZWFwPiB7CisgICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgY2VsbFNp
emUgPSBDRUxMX1NJWkU7CisgICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgY2VsbHNQZXJCbG9j
ayA9IENFTExTX1BFUl9CTE9DSzsKKyAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBiaXRtYXBT
aGlmdCA9IDA7CisgICAgICAgIHR5cGVkZWYgQ29sbGVjdG9yQ2VsbCBDZWxsOworICAgICAgICB0
eXBlZGVmIENvbGxlY3RvckJsb2NrIEJsb2NrOworICAgIH07CisKKyAgICB0ZW1wbGF0ZSA8PiBz
dHJ1Y3QgSGVhcENvbnN0YW50czxOdW1iZXJIZWFwPiB7CisgICAgICAgIHN0YXRpYyBjb25zdCBz
aXplX3QgY2VsbFNpemUgPSBTTUFMTF9DRUxMX1NJWkU7CisgICAgICAgIHN0YXRpYyBjb25zdCBz
aXplX3QgY2VsbHNQZXJCbG9jayA9IFNNQUxMX0NFTExTX1BFUl9CTE9DSzsKKyAgICAgICAgc3Rh
dGljIGNvbnN0IHNpemVfdCBiaXRtYXBTaGlmdCA9IDE7CisgICAgICAgIHR5cGVkZWYgU21hbGxD
b2xsZWN0b3JDZWxsIENlbGw7CisgICAgICAgIHR5cGVkZWYgU21hbGxDZWxsQ29sbGVjdG9yQmxv
Y2sgQmxvY2s7CisgICAgfTsKKwogICAgIGlubGluZSBib29sIEhlYXA6OmlzTnVtYmVyKEpTQ2Vs
bCogY2VsbCkKICAgICB7CiAgICAgICAgIENvbGxlY3RvckJsb2NrKiBibG9jayA9IEhlYXA6OmNl
bGxCbG9jayhjZWxsKTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9pbnRlcnByZXRlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL2ludGVycHJldGVyLmNwcAkocmV2aXNp
b24gMzcxOTYpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvaW50ZXJwcmV0ZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIENvbXBsZXRpb24gSW50ZXJwcmV0ZXI6OmNoZWNrU3lu
dGF4KEV4ZWMKICAgICBpbnQgZXJyTGluZTsKICAgICBVU3RyaW5nIGVyck1zZzsKIAotICAgIFJl
ZlB0cjxQcm9ncmFtTm9kZT4gcHJvZ05vZGUgPSBleGVjLT5wYXJzZXIoKS0+cGFyc2U8UHJvZ3Jh
bU5vZGU+KGV4ZWMsIHNvdXJjZSwgJmVyckxpbmUsICZlcnJNc2cpOworICAgIFJlZlB0cjxQcm9n
cmFtTm9kZT4gcHJvZ05vZGUgPSBleGVjLT5wYXJzZXIoKS0+cGFyc2U8UHJvZ3JhbU5vZGU+KGV4
ZWMsIGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKS0+ZGVidWdnZXIoKSwgc291cmNlLCAmZXJy
TGluZSwgJmVyck1zZyk7CiAgICAgaWYgKCFwcm9nTm9kZSkKICAgICAgICAgcmV0dXJuIENvbXBs
ZXRpb24oVGhyb3csIEVycm9yOjpjcmVhdGUoZXhlYywgU3ludGF4RXJyb3IsIGVyck1zZywgZXJy
TGluZSwgc291cmNlLnByb3ZpZGVyKCktPmFzSUQoKSwgc291cmNlLnByb3ZpZGVyKCktPnVybCgp
KSk7CiAgICAgcmV0dXJuIENvbXBsZXRpb24oTm9ybWFsKTsKQEAgLTU4LDcgKzU4LDcgQEAgQ29t
cGxldGlvbiBJbnRlcnByZXRlcjo6ZXZhbHVhdGUoRXhlY1N0YQogICAgIAogICAgIGludCBlcnJM
aW5lOwogICAgIFVTdHJpbmcgZXJyTXNnOwotICAgIFJlZlB0cjxQcm9ncmFtTm9kZT4gcHJvZ3Jh
bU5vZGUgPSBleGVjLT5wYXJzZXIoKS0+cGFyc2U8UHJvZ3JhbU5vZGU+KGV4ZWMsIHNvdXJjZSwg
JmVyckxpbmUsICZlcnJNc2cpOworICAgIFJlZlB0cjxQcm9ncmFtTm9kZT4gcHJvZ3JhbU5vZGUg
PSBleGVjLT5wYXJzZXIoKS0+cGFyc2U8UHJvZ3JhbU5vZGU+KGV4ZWMsIGV4ZWMtPmR5bmFtaWNH
bG9iYWxPYmplY3QoKS0+ZGVidWdnZXIoKSwgc291cmNlLCAmZXJyTGluZSwgJmVyck1zZyk7CiAK
ICAgICBpZiAoIXByb2dyYW1Ob2RlKQogICAgICAgICByZXR1cm4gQ29tcGxldGlvbihUaHJvdywg
RXJyb3I6OmNyZWF0ZShleGVjLCBTeW50YXhFcnJvciwgZXJyTXNnLCBlcnJMaW5lLCBzb3VyY2Uu
cHJvdmlkZXIoKS0+YXNJRCgpLCBzb3VyY2UucHJvdmlkZXIoKS0+dXJsKCkpKTsKSW5kZXg6IEph
dmFTY3JpcHRDb3JlL2tqcy9ub2Rlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUv
a2pzL25vZGVzLmNwcAkocmV2aXNpb24gMzcxOTYpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvbm9k
ZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzY1LDkgKzE3NjUsMTAgQEAgRXZhbE5vZGUqIEV2
YWxOb2RlOjpjcmVhdGUoSlNHbG9iYWxEYXRhKgogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0gRnVuY3Rpb25Cb2R5Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
Ci1GdW5jdGlvbkJvZHlOb2RlOjpGdW5jdGlvbkJvZHlOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0
aW9uU3RhY2sqIGZ1bmNTdGFjaywgYm9vbCB1c2VzRXZhbCwgYm9vbCBuZWVkc0Nsb3N1cmUsIGJv
b2wgdXNlc0FyZ3VtZW50cywgaW50IG51bUNvbnN0YW50cykKLSAgICA6IFNjb3BlTm9kZShnbG9i
YWxEYXRhLCBTb3VyY2VDb2RlKCksIGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCB1c2Vz
RXZhbCwgbmVlZHNDbG9zdXJlLCB1c2VzQXJndW1lbnRzLCBudW1Db25zdGFudHMpCitGdW5jdGlv
bkJvZHlOb2RlOjpGdW5jdGlvbkJvZHlOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgU291
cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sq
IGZ1bmNTdGFjaywgY29uc3QgU291cmNlQ29kZSYgc291cmNlQ29kZSwgYm9vbCB1c2VzRXZhbCwg
Ym9vbCBuZWVkc0Nsb3N1cmUsIGJvb2wgdXNlc0FyZ3VtZW50cywgaW50IG51bUNvbnN0YW50cykK
KyAgICA6IFNjb3BlTm9kZShnbG9iYWxEYXRhLCBzb3VyY2VDb2RlLCBjaGlsZHJlbiwgdmFyU3Rh
Y2ssIGZ1bmNTdGFjaywgdXNlc0V2YWwsIG5lZWRzQ2xvc3VyZSwgdXNlc0FyZ3VtZW50cywgbnVt
Q29uc3RhbnRzKQogICAgICwgbV9wYXJhbWV0ZXJzKDApCisgICAgLCBtX3BhcmFtZXRlckNvdW50
KDApCiAgICAgLCBtX3JlZkNvdW50KDApCiB7CiB9CkBAIC0xNzg0LDEyICsxNzg1LDE0IEBAIHZv
aWQgRnVuY3Rpb25Cb2R5Tm9kZTo6ZmluaXNoUGFyc2luZyhjb24KICAgICBmb3IgKFBhcmFtZXRl
ck5vZGUqIHBhcmFtZXRlciA9IGZpcnN0UGFyYW1ldGVyOyBwYXJhbWV0ZXI7IHBhcmFtZXRlciA9
IHBhcmFtZXRlci0+bmV4dFBhcmFtKCkpCiAgICAgICAgIHBhcmFtZXRlcnMuYXBwZW5kKHBhcmFt
ZXRlci0+aWRlbnQoKSk7CiAgICAgc2l6ZV90IGNvdW50ID0gcGFyYW1ldGVycy5zaXplKCk7Ci0g
ICAgZmluaXNoUGFyc2luZyhzb3VyY2UsIHBhcmFtZXRlcnMucmVsZWFzZUJ1ZmZlcigpLCBjb3Vu
dCk7CisKKyAgICBzZXRTb3VyY2Uoc291cmNlKTsKKyAgICBmaW5pc2hQYXJzaW5nKHBhcmFtZXRl
cnMucmVsZWFzZUJ1ZmZlcigpLCBjb3VudCk7CiB9CiAKLXZvaWQgRnVuY3Rpb25Cb2R5Tm9kZTo6
ZmluaXNoUGFyc2luZyhjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIElkZW50aWZpZXIqIHBhcmFt
ZXRlcnMsIHNpemVfdCBwYXJhbWV0ZXJDb3VudCkKK3ZvaWQgRnVuY3Rpb25Cb2R5Tm9kZTo6Zmlu
aXNoUGFyc2luZyhJZGVudGlmaWVyKiBwYXJhbWV0ZXJzLCBzaXplX3QgcGFyYW1ldGVyQ291bnQp
CiB7Ci0gICAgc2V0U291cmNlKHNvdXJjZSk7CisgICAgQVNTRVJUKCFzb3VyY2UoKS5pc051bGwo
KSk7CiAgICAgbV9wYXJhbWV0ZXJzID0gcGFyYW1ldGVyczsKICAgICBtX3BhcmFtZXRlckNvdW50
ID0gcGFyYW1ldGVyQ291bnQ7CiB9CkBAIC0xODAyLDEyICsxODA1LDEyIEBAIHZvaWQgRnVuY3Rp
b25Cb2R5Tm9kZTo6bWFyaygpCiAKIEZ1bmN0aW9uQm9keU5vZGUqIEZ1bmN0aW9uQm9keU5vZGU6
OmNyZWF0ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJl
biwgVmFyU3RhY2sqIHZhclN0YWNrLCBGdW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIGJvb2wgdXNl
c0V2YWwsIGJvb2wgbmVlZHNDbG9zdXJlLCBib29sIHVzZXNBcmd1bWVudHMsIGludCBudW1Db25z
dGFudHMpCiB7Ci0gICAgcmV0dXJuIG5ldyBGdW5jdGlvbkJvZHlOb2RlKGdsb2JhbERhdGEsIGNo
aWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCB1c2VzRXZhbCwgbmVlZHNDbG9zdXJlLCB1c2Vz
QXJndW1lbnRzLCBudW1Db25zdGFudHMpOworICAgIHJldHVybiBuZXcgRnVuY3Rpb25Cb2R5Tm9k
ZShnbG9iYWxEYXRhLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgU291cmNlQ29kZSgp
LCB1c2VzRXZhbCwgbmVlZHNDbG9zdXJlLCB1c2VzQXJndW1lbnRzLCBudW1Db25zdGFudHMpOwog
fQogCi1GdW5jdGlvbkJvZHlOb2RlKiBGdW5jdGlvbkJvZHlOb2RlOjpjcmVhdGUoSlNHbG9iYWxE
YXRhKiBnbG9iYWxEYXRhLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJT
dGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBjb25zdCBTb3VyY2VDb2RlJiwgYm9vbCB1
c2VzRXZhbCwgYm9vbCBuZWVkc0Nsb3N1cmUsIGJvb2wgdXNlc0FyZ3VtZW50cywgaW50IG51bUNv
bnN0YW50cykKK0Z1bmN0aW9uQm9keU5vZGUqIEZ1bmN0aW9uQm9keU5vZGU6OmNyZWF0ZShKU0ds
b2JhbERhdGEqIGdsb2JhbERhdGEsIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sq
IHZhclN0YWNrLCBGdW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIGNvbnN0IFNvdXJjZUNvZGUmIHNv
dXJjZUNvZGUsIGJvb2wgdXNlc0V2YWwsIGJvb2wgbmVlZHNDbG9zdXJlLCBib29sIHVzZXNBcmd1
bWVudHMsIGludCBudW1Db25zdGFudHMpCiB7Ci0gICAgcmV0dXJuIG5ldyBGdW5jdGlvbkJvZHlO
b2RlKGdsb2JhbERhdGEsIGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCB1c2VzRXZhbCwg
bmVlZHNDbG9zdXJlLCB1c2VzQXJndW1lbnRzLCBudW1Db25zdGFudHMpOworICAgIHJldHVybiBu
ZXcgRnVuY3Rpb25Cb2R5Tm9kZShnbG9iYWxEYXRhLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNT
dGFjaywgc291cmNlQ29kZSwgdXNlc0V2YWwsIG5lZWRzQ2xvc3VyZSwgdXNlc0FyZ3VtZW50cywg
bnVtQ29uc3RhbnRzKTsKIH0KIAogdm9pZCBGdW5jdGlvbkJvZHlOb2RlOjpnZW5lcmF0ZUNvZGUo
U2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW5Ob2RlKQpJbmRleDogSmF2YVNjcmlwdENvcmUva2pz
L25vZGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL25vZGVzLmgJKHJldmlz
aW9uIDM3MTk2KQorKysgSmF2YVNjcmlwdENvcmUva2pzL25vZGVzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTIxNzEsNyArMjE3MSw2IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZpcnR1YWwg
dm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBKU0NfRkFTVF9DQUxMOwogICAgICAg
ICAKLSAgICAgICAgdm9pZCBzZXRTb3VyY2UoY29uc3QgU291cmNlQ29kZSYgc291cmNlKSB7IG1f
c291cmNlID0gc291cmNlOyB9CiAgICAgICAgIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc291cmNlOyB9CiAgICAgICAgIGNvbnN0IFVTdHJpbmcmIHNvdXJjZVVS
TCgpIGNvbnN0IEpTQ19GQVNUX0NBTEwgeyByZXR1cm4gbV9zb3VyY2UucHJvdmlkZXIoKS0+dXJs
KCk7IH0KICAgICAgICAgaW50cHRyX3Qgc291cmNlSUQoKSBjb25zdCB7IHJldHVybiBtX3NvdXJj
ZS5wcm92aWRlcigpLT5hc0lEKCk7IH0KQEAgLTIxOTIsNiArMjE5MSw4IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICB9CiAKICAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHZvaWQgc2V0U291cmNl
KGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkgeyBtX3NvdXJjZSA9IHNvdXJjZTsgfQorCiAgICAg
ICAgIFZhclN0YWNrIG1fdmFyU3RhY2s7CiAgICAgICAgIEZ1bmN0aW9uU3RhY2sgbV9mdW5jdGlv
blN0YWNrOwogCkBAIC0yMjUzLDggKzIyNTQsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IH5GdW5jdGlvbkJvZHlOb2RlKCk7CiAKICAgICAgICAgY29uc3QgSWRlbnRpZmllciogcGFyYW1l
dGVycygpIGNvbnN0IEpTQ19GQVNUX0NBTEwgeyByZXR1cm4gbV9wYXJhbWV0ZXJzOyB9Ci0gICAg
ICAgIHNpemVfdCBwYXJhbWV0ZXJDb3VudCgpIHsgcmV0dXJuIG1fcGFyYW1ldGVyQ291bnQ7IH0K
KyAgICAgICAgc2l6ZV90IHBhcmFtZXRlckNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0
ZXJDb3VudDsgfQogICAgICAgICBVU3RyaW5nIHBhcmFtU3RyaW5nKCkgY29uc3QgSlNDX0ZBU1Rf
Q0FMTDsKKyAgICAgICAgSWRlbnRpZmllciogcmVsZWFzZVBhcmFtZXRlcnMoKQorICAgICAgICB7
CisgICAgICAgICAgICBJZGVudGlmaWVyKiBwYXJhbWV0ZXJzID0gbV9wYXJhbWV0ZXJzOworICAg
ICAgICAgICAgbV9wYXJhbWV0ZXJzID0gMDsKKyAgICAgICAgICAgIG1fcGFyYW1ldGVyQ291bnQg
PSAwOworICAgICAgICAgICAgcmV0dXJuIHBhcmFtZXRlcnM7CisgICAgICAgIH0KIAogICAgICAg
ICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRDb2RlKENvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklE
KiA9IDApIEpTQ19GQVNUX0NBTEw7CiAgICAgICAgIApAQCAtMjI3Nyw3ICsyMjg1LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgbWFyaygpOwogCiAgICAgICAgIHZvaWQgZmluaXNo
UGFyc2luZyhjb25zdCBTb3VyY2VDb2RlJiwgUGFyYW1ldGVyTm9kZSopOwotICAgICAgICB2b2lk
IGZpbmlzaFBhcnNpbmcoY29uc3QgU291cmNlQ29kZSYsIElkZW50aWZpZXIqIHBhcmFtZXRlcnMs
IHNpemVfdCBwYXJhbWV0ZXJDb3VudCk7CisgICAgICAgIHZvaWQgZmluaXNoUGFyc2luZyhJZGVu
dGlmaWVyKiBwYXJhbWV0ZXJzLCBzaXplX3QgcGFyYW1ldGVyQ291bnQpOwogICAgICAgICAKICAg
ICAgICAgVVN0cmluZyB0b1NvdXJjZVN0cmluZygpIGNvbnN0IEpTQ19GQVNUX0NBTEwgeyByZXR1
cm4gVVN0cmluZygieyIpICsgc291cmNlKCkudG9TdHJpbmcoKSArIFVTdHJpbmcoIn0iKTsgfQog
CkBAIC0yMjk2LDcgKzIzMDQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAg
cHJvdGVjdGVkOgotICAgICAgICBGdW5jdGlvbkJvZHlOb2RlKEpTR2xvYmFsRGF0YSosIFNvdXJj
ZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgYm9vbCB1c2VzRXZhbCwgYm9v
bCBuZWVkc0Nsb3N1cmUsIGJvb2wgdXNlc0FyZ3VtZW50cywgaW50IG51bUNvbnN0YW50cykgSlND
X0ZBU1RfQ0FMTDsKKyAgICAgICAgRnVuY3Rpb25Cb2R5Tm9kZShKU0dsb2JhbERhdGEqLCBTb3Vy
Y2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIGNvbnN0IFNvdXJjZUNvZGUm
LCBib29sIHVzZXNFdmFsLCBib29sIG5lZWRzQ2xvc3VyZSwgYm9vbCB1c2VzQXJndW1lbnRzLCBp
bnQgbnVtQ29uc3RhbnRzKSBKU0NfRkFTVF9DQUxMOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAg
dm9pZCBnZW5lcmF0ZUNvZGUoU2NvcGVDaGFpbk5vZGUqKSBKU0NfRkFTVF9DQUxMOwpJbmRleDog
V2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ranMvQ29sbGVjdG9ySGVhcEl0ZXJhdG9yLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ranMvQ29sbGVjdG9ySGVhcEl0
ZXJhdG9yLmgJKHJldmlzaW9uIDM3MTk2KQkoZnJvbSBXZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJz
L2tqcy91c3RyaW5nLmg6MzcxOTYpCisrKyBXZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2tqcy9D
b2xsZWN0b3JIZWFwSXRlcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxIEBACisjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvdXN0cmluZy5oPgpJbmRleDogV2ViQ29yZS9Gb3J3YXJkaW5n
SGVhZGVycy9ranMvQ29sbGVjdG9ySGVhcEl0ZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9Gb3J3YXJkaW5nSGVhZGVycy9ranMvQ29sbGVjdG9ySGVhcEl0ZXJhdG9yLmgJKHJldmlzaW9u
IDM3MTk2KQorKysgV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ranMvQ29sbGVjdG9ySGVhcEl0
ZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTEgKzEgQEAKLSNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS91c3RyaW5nLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29sbGVjdG9ySGVhcEl0
ZXJhdG9yLmg+CkluZGV4OiBXZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2tqcy9QYXJzZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2tqcy9QYXJzZXIuaAkocmV2
aXNpb24gMzcxOTYpCShmcm9tIFdlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMva2pzL3VzdHJpbmcu
aDozNzE5NikKKysrIFdlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMva2pzL1BhcnNlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEgQEAKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS91c3RyaW5n
Lmg+CkluZGV4OiBXZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2tqcy9QYXJzZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2tqcy9QYXJzZXIuaAkocmV2aXNpb24g
MzcxOTYpCisrKyBXZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2tqcy9QYXJzZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSArMSBAQAotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL3VzdHJpbmcuaD4K
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9QYXJzZXIuaD4KSW5kZXg6IFdlYkNvcmUvcGFnZS9J
bnNwZWN0b3JDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvSW5zcGVj
dG9yQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDM3MTk2KQorKysgV2ViQ29yZS9wYWdlL0luc3Bl
Y3RvckNvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Myw2ICs3Myw3IEBACiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvT3BhcXVlSlNTdHJpbmcuaD4KICNpbmNsdWRlIDxranMvSlNM
b2NrLmg+CiAjaW5jbHVkZSA8a2pzL3VzdHJpbmcuaD4KKyNpbmNsdWRlIDxranMvQ29sbGVjdG9y
SGVhcEl0ZXJhdG9yLmg+CiAjaW5jbHVkZSA8cHJvZmlsZXIvUHJvZmlsZS5oPgogI2luY2x1ZGUg
PHByb2ZpbGVyL1Byb2ZpbGVyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KSW5kZXg6
IFdlYkNvcmUvcGFnZS9KYXZhU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGFnZS9KYXZhU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCShyZXZpc2lvbiAzNzE5NikKKysr
IFdlYkNvcmUvcGFnZS9KYXZhU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00NCw3ICs0NCw5IEBACiAjaW5jbHVkZSAiU2Nyb2xsVmlldy5oIgogI2luY2x1ZGUgIldpZGdl
dC5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlIDxranMvQ29sbGVj
dG9ySGVhcEl0ZXJhdG9yLmg+CiAjaW5jbHVkZSA8a2pzL0RlYnVnZ2VyQ2FsbEZyYW1lLmg+Cisj
aW5jbHVkZSA8a2pzL1BhcnNlci5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5j
bHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CiAKQEAgLTY3LDYgKzY5LDcgQEAgSmF2YVNjcmlwdERl
YnVnU2VydmVyOjpKYXZhU2NyaXB0RGVidWdTZQogICAgICwgbV9wYXVzZWQoZmFsc2UpCiAgICAg
LCBtX2RvbmVQcm9jZXNzaW5nRGVidWdnZXJFdmVudHModHJ1ZSkKICAgICAsIG1fcGF1c2VPbkNh
bGxGcmFtZSgwKQorICAgICwgbV9yZWNvbXBpbGVUaW1lcih0aGlzLCAmSmF2YVNjcmlwdERlYnVn
U2VydmVyOjpyZWNvbXBpbGVBbGxKU0Z1bmN0aW9ucykKIHsKIH0KIApAQCAtODAsNyArODMsNyBA
QCBKYXZhU2NyaXB0RGVidWdTZXJ2ZXI6On5KYXZhU2NyaXB0RGVidWdTCiB2b2lkIEphdmFTY3Jp
cHREZWJ1Z1NlcnZlcjo6YWRkTGlzdGVuZXIoSmF2YVNjcmlwdERlYnVnTGlzdGVuZXIqIGxpc3Rl
bmVyKQogewogICAgIGlmICghaGFzTGlzdGVuZXJzKCkpCi0gICAgICAgIFBhZ2U6OnNldERlYnVn
Z2VyRm9yQWxsUGFnZXModGhpcyk7CisgICAgICAgIHdpbGxBZGRGaXJzdExpc3RlbmVyKCk7CiAK
ICAgICBtX2xpc3RlbmVycy5hZGQobGlzdGVuZXIpOwogfQpAQCAtODgsMTAgKzkxLDggQEAgdm9p
ZCBKYXZhU2NyaXB0RGVidWdTZXJ2ZXI6OmFkZExpc3RlbmVyKAogdm9pZCBKYXZhU2NyaXB0RGVi
dWdTZXJ2ZXI6OnJlbW92ZUxpc3RlbmVyKEphdmFTY3JpcHREZWJ1Z0xpc3RlbmVyKiBsaXN0ZW5l
cikKIHsKICAgICBtX2xpc3RlbmVycy5yZW1vdmUobGlzdGVuZXIpOwotICAgIGlmICghaGFzTGlz
dGVuZXJzKCkpIHsKLSAgICAgICAgUGFnZTo6c2V0RGVidWdnZXJGb3JBbGxQYWdlcygwKTsKLSAg
ICAgICAgbV9kb25lUHJvY2Vzc2luZ0RlYnVnZ2VyRXZlbnRzID0gdHJ1ZTsKLSAgICB9CisgICAg
aWYgKCFoYXNMaXN0ZW5lcnMoKSkKKyAgICAgICAgZGlkUmVtb3ZlTGFzdExpc3RlbmVyKCk7CiB9
CiAKIHZvaWQgSmF2YVNjcmlwdERlYnVnU2VydmVyOjphZGRMaXN0ZW5lcihKYXZhU2NyaXB0RGVi
dWdMaXN0ZW5lciogbGlzdGVuZXIsIFBhZ2UqIHBhZ2UpCkBAIC05OSw3ICsxMDAsNyBAQCB2b2lk
IEphdmFTY3JpcHREZWJ1Z1NlcnZlcjo6YWRkTGlzdGVuZXIoCiAgICAgQVNTRVJUX0FSRyhwYWdl
LCBwYWdlKTsKIAogICAgIGlmICghaGFzTGlzdGVuZXJzKCkpCi0gICAgICAgIFBhZ2U6OnNldERl
YnVnZ2VyRm9yQWxsUGFnZXModGhpcyk7CisgICAgICAgIHdpbGxBZGRGaXJzdExpc3RlbmVyKCk7
CiAKICAgICBwYWlyPFBhZ2VMaXN0ZW5lcnNNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBt
X3BhZ2VMaXN0ZW5lcnNNYXAuYWRkKHBhZ2UsIDApOwogICAgIGlmIChyZXN1bHQuc2Vjb25kKQpA
QCAtMTE4LDE4ICsxMTksMTQgQEAgdm9pZCBKYXZhU2NyaXB0RGVidWdTZXJ2ZXI6OnJlbW92ZUxp
c3RlbgogICAgICAgICByZXR1cm47CiAKICAgICBMaXN0ZW5lclNldCogbGlzdGVuZXJzID0gaXQt
PnNlY29uZDsKLQogICAgIGxpc3RlbmVycy0+cmVtb3ZlKGxpc3RlbmVyKTsKLQogICAgIGlmIChs
aXN0ZW5lcnMtPmlzRW1wdHkoKSkgewogICAgICAgICBtX3BhZ2VMaXN0ZW5lcnNNYXAucmVtb3Zl
KGl0KTsKICAgICAgICAgZGVsZXRlIGxpc3RlbmVyczsKICAgICB9CiAKLSAgICBpZiAoIWhhc0xp
c3RlbmVycygpKSB7Ci0gICAgICAgIFBhZ2U6OnNldERlYnVnZ2VyRm9yQWxsUGFnZXMoMCk7Ci0g
ICAgICAgIG1fZG9uZVByb2Nlc3NpbmdEZWJ1Z2dlckV2ZW50cyA9IHRydWU7Ci0gICAgfQorICAg
IGlmICghaGFzTGlzdGVuZXJzKCkpCisgICAgICAgIGRpZFJlbW92ZUxhc3RMaXN0ZW5lcigpOwog
fQogCiB2b2lkIEphdmFTY3JpcHREZWJ1Z1NlcnZlcjo6cGFnZUNyZWF0ZWQoUGFnZSogcGFnZSkK
QEAgLTUyMSw0ICs1MTgsNjMgQEAgdm9pZCBKYXZhU2NyaXB0RGVidWdTZXJ2ZXI6OmRpZFJlYWNo
QnJlYQogICAgIHBhdXNlSWZOZWVkZWQodG9QYWdlKGRlYnVnZ2VyQ2FsbEZyYW1lLmR5bmFtaWNH
bG9iYWxPYmplY3QoKSkpOwogfQogCit2b2lkIEphdmFTY3JpcHREZWJ1Z1NlcnZlcjo6cmVjb21w
aWxlQWxsSlNGdW5jdGlvbnMoVGltZXI8SmF2YVNjcmlwdERlYnVnU2VydmVyPiopCit7CisgICAg
dHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxGdW5jdGlvbkJvZHlOb2RlPiwgUmVmUHRyPEZ1bmN0aW9u
Qm9keU5vZGU+ID4gRnVuY3Rpb25Cb2R5TWFwOworICAgIHR5cGVkZWYgSGFzaFNldDxSZWZQdHI8
U291cmNlUHJvdmlkZXI+ID4gU291cmNlUHJvdmlkZXJNYXA7CisKKyAgICBKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEgPSBKU0RPTVdpbmRvdzo6Y29tbW9uSlNHbG9iYWxEYXRhKCk7CisgICAgSGVh
cCogaGVhcCA9IGdsb2JhbERhdGEtPmhlYXA7CisKKyAgICBWZWN0b3I8SlNGdW5jdGlvbio+IGZ1
bmN0aW9uczsKKyAgICBIZWFwOjppdGVyYXRvciBoZWFwRW5kID0gaGVhcC0+cHJpbWFyeUhlYXBF
bmQoKTsKKyAgICBmb3IgKEhlYXA6Oml0ZXJhdG9yIGl0ID0gaGVhcC0+cHJpbWFyeUhlYXBCZWdp
bigpOyBpdCAhPSBoZWFwRW5kOyArK2l0KSB7CisgICAgICAgIGlmICgoKml0KS0+aXNPYmplY3Qo
JkpTRnVuY3Rpb246OmluZm8pKQorICAgICAgICAgICAgZnVuY3Rpb25zLmFwcGVuZChzdGF0aWNf
Y2FzdDxKU0Z1bmN0aW9uKj4oKml0KSk7CisgICAgfQorCisgICAgRnVuY3Rpb25Cb2R5TWFwIGZ1
bmN0aW9uQm9kaWVzOworICAgIFNvdXJjZVByb3ZpZGVyTWFwIHNvdXJjZVByb3ZpZGVyczsKKwor
ICAgIHNpemVfdCBzaXplID0gZnVuY3Rpb25zLnNpemUoKTsKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGZ1bmN0
aW9uc1tpXTsKKyAgICAgICAgCisgICAgICAgIEZ1bmN0aW9uQm9keU5vZGUqIG9sZEJvZHkgPSBm
dW5jdGlvbi0+bV9ib2R5LmdldCgpOworICAgICAgICBwYWlyPEZ1bmN0aW9uQm9keU1hcDo6aXRl
cmF0b3IsIGJvb2w+IHJlc3VsdCA9IGZ1bmN0aW9uQm9kaWVzLmFkZChvbGRCb2R5LCAwKTsKKyAg
ICAgICAgaWYgKCFyZXN1bHQuc2Vjb25kKSB7CisgICAgICAgICAgICBmdW5jdGlvbi0+bV9ib2R5
ID0gcmVzdWx0LmZpcnN0LT5zZWNvbmQ7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
fQorCisgICAgICAgIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUgPSBvbGRCb2R5LT5zb3Vy
Y2UoKTsKKyAgICAgICAgRXhlY1N0YXRlKiBleGVjID0gZnVuY3Rpb24tPnNjb3BlKCkuZ2xvYmFs
T2JqZWN0KCktPmdsb2JhbEV4ZWMoKTsKKyAgICAgICAgUmVmUHRyPEZ1bmN0aW9uQm9keU5vZGU+
IG5ld0JvZHkgPSBnbG9iYWxEYXRhLT5wYXJzZXItPnBhcnNlPEZ1bmN0aW9uQm9keU5vZGU+KGV4
ZWMsIDAsIHNvdXJjZUNvZGUpOworICAgICAgICBBU1NFUlQobmV3Qm9keSk7CisgICAgICAgIHNp
emVfdCBwYXJhbWV0ZXJDb3VudCA9IG9sZEJvZHktPnBhcmFtZXRlckNvdW50KCk7CisgICAgICAg
IG5ld0JvZHktPmZpbmlzaFBhcnNpbmcob2xkQm9keS0+cmVsZWFzZVBhcmFtZXRlcnMoKSwgcGFy
YW1ldGVyQ291bnQpOworICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZCA9IG5ld0JvZHkucmVs
ZWFzZSgpOworCisgICAgICAgIGlmIChoYXNMaXN0ZW5lcnMoKSkgeworICAgICAgICAgICAgU291
cmNlUHJvdmlkZXIqIHByb3ZpZGVyID0gc291cmNlQ29kZS5wcm92aWRlcigpOworICAgICAgICAg
ICAgcGFpcjxTb3VyY2VQcm92aWRlck1hcDo6aXRlcmF0b3IsIGJvb2w+IGl0ID0gc291cmNlUHJv
dmlkZXJzLmFkZChwcm92aWRlcik7CisgICAgICAgICAgICBpZiAoaXQuc2Vjb25kKQorICAgICAg
ICAgICAgICAgIHNvdXJjZVBhcnNlZChleGVjLCBTb3VyY2VDb2RlKHByb3ZpZGVyKSwgLTEsIDAp
OworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIEphdmFTY3JpcHREZWJ1Z1NlcnZlcjo6d2ls
bEFkZEZpcnN0TGlzdGVuZXIoKQoreworICAgIFBhZ2U6OnNldERlYnVnZ2VyRm9yQWxsUGFnZXMo
dGhpcyk7CisgICAgbV9yZWNvbXBpbGVUaW1lci5zdGFydE9uZVNob3QoMCk7Cit9CisKK3ZvaWQg
SmF2YVNjcmlwdERlYnVnU2VydmVyOjpkaWRSZW1vdmVMYXN0TGlzdGVuZXIoKQoreworICAgIFBh
Z2U6OnNldERlYnVnZ2VyRm9yQWxsUGFnZXMoMCk7CisgICAgbV9kb25lUHJvY2Vzc2luZ0RlYnVn
Z2VyRXZlbnRzID0gdHJ1ZTsKKyAgICBtX3JlY29tcGlsZVRpbWVyLnN0YXJ0T25lU2hvdCgwKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9wYWdlL0phdmFTY3Jp
cHREZWJ1Z1NlcnZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9KYXZhU2NyaXB0RGVi
dWdTZXJ2ZXIuaAkocmV2aXNpb24gMzcxOTYpCisrKyBXZWJDb3JlL3BhZ2UvSmF2YVNjcmlwdERl
YnVnU2VydmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgorI2luY2x1ZGUgIlRpbWVyLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNz
IERlYnVnZ2VyQ2FsbEZyYW1lOwpAQCAtNzMsNiArNzQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIHZvaWQgc3RlcE92ZXJTdGF0ZW1lbnQoKTsKICAgICAgICAgdm9pZCBzdGVwT3V0
T2ZGdW5jdGlvbigpOwogCisgICAgICAgIHZvaWQgcmVjb21waWxlQWxsSlNGdW5jdGlvbnMoVGlt
ZXI8SmF2YVNjcmlwdERlYnVnU2VydmVyPiopOworCiAgICAgICAgIEphdmFTY3JpcHRDYWxsRnJh
bWUqIGN1cnJlbnRDYWxsRnJhbWUoKTsKIAogICAgICAgICB2b2lkIHBhZ2VDcmVhdGVkKFBhZ2Uq
KTsKQEAgLTEwMyw2ICsxMDYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCB3aWxsRXhlY3V0ZVByb2dyYW0oY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYs
IGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZW5vKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRp
ZEV4ZWN1dGVQcm9ncmFtKGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBz
b3VyY2VJRCwgaW50IGxpbmVubyk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWFjaEJyZWFr
cG9pbnQoY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBp
bnQgbGluZW5vKTsKKyAgICAgICAgCisgICAgICAgIHZvaWQgd2lsbEFkZEZpcnN0TGlzdGVuZXIo
KTsKKyAgICAgICAgdm9pZCBkaWRSZW1vdmVMYXN0TGlzdGVuZXIoKTsKIAogICAgICAgICB0eXBl
ZGVmIEhhc2hNYXA8UGFnZSosIExpc3RlbmVyU2V0Kj4gUGFnZUxpc3RlbmVyc01hcDsKICAgICAg
ICAgUGFnZUxpc3RlbmVyc01hcCBtX3BhZ2VMaXN0ZW5lcnNNYXA7CkBAIC0xMTYsNiArMTIyLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBSZWZQdHI8SmF2YVNjcmlwdENhbGxGcmFt
ZT4gbV9jdXJyZW50Q2FsbEZyYW1lOwogICAgICAgICBIYXNoTWFwPFJlZlB0cjxGcmFtZT4sIFBh
dXNlZFRpbWVvdXRzKj4gbV9wYXVzZWRUaW1lb3V0czsKICAgICAgICAgSGFzaE1hcDxpbnRwdHJf
dCwgSGFzaFNldDx1bnNpZ25lZD4qPiBtX2JyZWFrcG9pbnRzOworICAgICAgICBUaW1lcjxKYXZh
U2NyaXB0RGVidWdTZXJ2ZXI+IG1fcmVjb21waWxlVGltZXI7CiAgICAgfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGFnZS9QYWdlLmNwcAkocmV2aXNpb24gMzcxOTYpCisrKyBXZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNCw2ICsxMjQsNyBAQCBQYWdlOjpQYWdlKENo
cm9tZUNsaWVudCogY2hyb21lQ2xpZW50LCBDCiAgICAgLCBtX3BlbmRpbmdCZWZvcmVVbmxvYWRF
dmVudENvdW50KDApCiAgICAgLCBtX2N1c3RvbUhUTUxUb2tlbml6ZXJUaW1lRGVsYXkoLTEpCiAg
ICAgLCBtX2N1c3RvbUhUTUxUb2tlbml6ZXJDaHVua1NpemUoLTEpCisgICAgLCBtX3RpbWVyKHRo
aXMsICZQYWdlOjpmaXJlZCkKIHsKICAgICBpZiAoIWFsbFBhZ2VzKSB7CiAgICAgICAgIGFsbFBh
Z2VzID0gbmV3IEhhc2hTZXQ8UGFnZSo+OwpAQCAtMTQyLDYgKzE0MywxMiBAQCBQYWdlOjpQYWdl
KENocm9tZUNsaWVudCogY2hyb21lQ2xpZW50LCBDCiAjZW5kaWYKIH0KIAordm9pZCBQYWdlOjpm
aXJlZChUaW1lcjxQYWdlPiopCit7CisgICAgSmF2YVNjcmlwdERlYnVnU2VydmVyOjpzaGFyZWQo
KS5yZWNvbXBpbGVBbGxKU0Z1bmN0aW9ucygwKTsKKyAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdCg4
KTsKK30KKwogUGFnZTo6flBhZ2UoKQogewogICAgIG1fbWFpbkZyYW1lLT5zZXRWaWV3KDApOwpJ
bmRleDogV2ViQ29yZS9wYWdlL1BhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvUGFn
ZS5oCShyZXZpc2lvbiAzNzE5NikKKysrIFdlYkNvcmUvcGFnZS9QYWdlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBQTEFURk9STShNQUMpCiAjaW5jbHVkZSAiU2NoZWR1
bGVQYWlyLmgiCiAjZW5kaWYKKyNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCkBAIC0yMTksNiArMjIwLDkgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIGRvdWJsZSBtX2N1c3RvbUhUTUxUb2tlbml6ZXJU
aW1lRGVsYXk7CiAgICAgICAgIGludCBtX2N1c3RvbUhUTUxUb2tlbml6ZXJDaHVua1NpemU7Cisg
ICAgICAgIAorICAgICAgICB2b2lkIGZpcmVkKFRpbWVyPFBhZ2U+Kik7CisgICAgICAgIFRpbWVy
PFBhZ2U+IG1fdGltZXI7CiAKICNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCiAgICAgICAgIFJlZlB0
cjxTZXNzaW9uU3RvcmFnZT4gbV9zZXNzaW9uU3RvcmFnZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>24066</attachid>
            <date>2008-10-03 13:20:36 -0700</date>
            <delta_ts>2008-10-09 01:45:17 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch-debugger-no-recompile.txt</filename>
            <type>text/plain</type>
            <size>40505</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAJKHJldmlzaW9uIDM3MTk2KQorKysgSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCSh3b3JraW5nIGNvcHkpCkBAIC05NSw2ICs5
NSw3IEBAIF9fWk4zSlNDMTBJZGVudGlmaWVyMjRjaGVja1NhbWVJZGVudGlmaWUKIF9fWk4zSlND
MTBJZGVudGlmaWVyMjRjaGVja1NhbWVJZGVudGlmaWVyVGFibGVFUE5TXzlFeGVjU3RhdGVFUE5T
XzdVU3RyaW5nM1JlcEUgCiBfX1pOM0pTQzEwSWRlbnRpZmllcjNhZGRFUE5TXzlFeGVjU3RhdGVF
UEtjCiBfX1pOM0pTQzEwSWRlbnRpZmllcjVlcXVhbEVQS05TXzdVU3RyaW5nM1JlcEVQS2MKK19f
Wk4zSlNDMTBKU0Z1bmN0aW9uNGluZm9FCiBfX1pOM0pTQzEwdGhyb3dFcnJvckVQTlNfOUV4ZWNT
dGF0ZUVOU185RXJyb3JUeXBlRQogX19aTjNKU0MxMHRocm93RXJyb3JFUE5TXzlFeGVjU3RhdGVF
TlNfOUVycm9yVHlwZUVQS2MKIF9fWk4zSlNDMTB0aHJvd0Vycm9yRVBOU185RXhlY1N0YXRlRU5T
XzlFcnJvclR5cGVFUktOU183VVN0cmluZ0UKQEAgLTE1MSw2ICsxNTIsOCBAQCBfX1pOM0pTQzE0
SlNHbG9iYWxPYmplY3REMkV2CiBfX1pOM0pTQzE0SlNHbG9iYWxPYmplY3Rud0VtUE5TXzEySlNH
bG9iYWxEYXRhRQogX19aTjNKU0MxNGNvbnN0cnVjdEFycmF5RVBOU185RXhlY1N0YXRlRVJLTlNf
N0FyZ0xpc3RFCiBfX1pOM0pTQzE1SlNXcmFwcGVyT2JqZWN0NG1hcmtFdgorX19aTjNKU0MxNkZ1
bmN0aW9uQm9keU5vZGUxM2ZpbmlzaFBhcnNpbmdFUE5TXzEwSWRlbnRpZmllckVtCitfX1pOM0pT
QzE2RnVuY3Rpb25Cb2R5Tm9kZTZjcmVhdGVFUE5TXzEySlNHbG9iYWxEYXRhRVBOU18xNFNvdXJj
ZUVsZW1lbnRzRVBOM1dURjZWZWN0b3JJU3Q0cGFpcklOU18xMElkZW50aWZpZXJFakVMbTE2RUVF
UE5TNl9JTlM1XzZSZWZQdHJJTlNfMTJGdW5jRGVjbE5vZGVFRUVMbTE2RUVFUktOU18xMFNvdXJj
ZUNvZGVFYmJiaQogX19aTjNKU0MxNkludGVybmFsRnVuY3Rpb240aW5mb0UKIF9fWk4zSlNDMTZJ
bnRlcm5hbEZ1bmN0aW9uQzJFUE5TXzlFeGVjU3RhdGVFTjNXVEYxMFBhc3NSZWZQdHJJTlNfMTFT
dHJ1Y3R1cmVJREVFRVJLTlNfMTBJZGVudGlmaWVyRQogX19aTjNKU0MxNkpTVmFyaWFibGVPYmpl
Y3QxNGRlbGV0ZVByb3BlcnR5RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRQpAQCAt
MTY3LDcgKzE3MCw5IEBAIF9fWk4zSlNDMjBjb25zdHJ1Y3RFbXB0eU9iamVjdEVQTlNfOUV4ZWMK
IF9fWk4zSlNDMjNvYmplY3RQcm90b0Z1bmNUb1N0cmluZ0VQTlNfOUV4ZWNTdGF0ZUVQTlNfOEpT
T2JqZWN0RVBOU183SlNWYWx1ZUVSS05TXzdBcmdMaXN0RQogX19aTjNKU0MyM3NldFVwU3RhdGlj
RnVuY3Rpb25TbG90RVBOU185RXhlY1N0YXRlRVBLTlNfOUhhc2hFbnRyeUVQTlNfOEpTT2JqZWN0
RVJLTlNfMTBJZGVudGlmaWVyRVJOU18xMlByb3BlcnR5U2xvdEUKIF9fWk4zSlNDNEhlYXAxNGFs
bG9jYXRlTnVtYmVyRW0KK19fWk4zSlNDNEhlYXAxNHByaW1hcnlIZWFwRW5kRXYKIF9fWk4zSlND
NEhlYXAxNXJlY29yZEV4dHJhQ29zdEVtCitfX1pOM0pTQzRIZWFwMTZwcmltYXJ5SGVhcEJlZ2lu
RXYKIF9fWk4zSlNDNEhlYXAxN2dsb2JhbE9iamVjdENvdW50RXYKIF9fWk4zSlNDNEhlYXAyMHBy
b3RlY3RlZE9iamVjdENvdW50RXYKIF9fWk4zSlNDNEhlYXAyNHNldEdDUHJvdGVjdE5lZWRzTG9j
a2luZ0V2CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDM3MTk2KQorKysgSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBj
b3B5KQpAQCAtNjksNiArNjksNyBAQAogCQkxNEJENUEzMDBBM0U5MUY2MDBCQUY1OUMgLyogSlND
b250ZXh0UmVmLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDE0QkQ1QTI5MEEzRTkxRjYwMEJBRjU5QyAvKiBKU0NvbnRleHRSZWYuY3BwICovOyB9Owog
CQkxNEJENUEzMjBBM0U5MUY2MDBCQUY1OUMgLyogSlNWYWx1ZVJlZi5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEJENUEyQjBBM0U5MUY2MDBCQUY1
OUMgLyogSlNWYWx1ZVJlZi5jcHAgKi87IH07CiAJCTE0RTBGRjEyMERCQUFFRDAwMDA3QzBBQiAv
KiBNYWNoaW5lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDE0OUIxNUU3MEQ4MUY5ODYwMDlDQjhDNyAvKiBNYWNoaW5lLmNwcCAqLzsgc2V0dGluZ3Mg
PSB7Q09NUElMRVJfRkxBR1MgPSAiLWZuby10cmVlLXByZSI7IH07IH07CisJCTE0RjM0ODhGMEU5
NUVGOEEwMDM2NDhCQyAvKiBDb2xsZWN0b3JIZWFwSXRlcmF0b3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0RjM0ODhFMEU5NUVGOEEwMDM2NDhCQyAv
KiBDb2xsZWN0b3JIZWFwSXRlcmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk1RDUzNzI2RjBFMUM1NDg4MDAyMUU1NDkgLyogVHJhY2luZy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUQ1MzcyNkUw
RTFDNTQ4ODAwMjFFNTQ5IC8qIFRyYWNpbmcuaCAqLzsgfTsKIAkJNUQ1RDhBQjYwRTBEMEE3MjAw
RjlDNjkyIC8qIGpzYyBpbiBDb3B5IEludG8gRnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzMkY1QkUxMDgyMkExQzcwMDczNjk3NSAvKiBqc2MgKi87IH07CiAJ
CTVENUQ4QUQxMEUwRDBFQkUwMEY5QzY5MiAvKiBsaWJlZGl0LmR5bGliIGluIEZyYW1ld29ya3Mg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUQ1RDhBRDAwRTBEMEVCRTAwRjlD
NjkyIC8qIGxpYmVkaXQuZHlsaWIgKi87IH07CkBAIC01MTUsNiArNTE2LDcgQEAKIAkJMTREQTgx
OEYwRDk5RkQyMDAwQjBBNEZCIC8qIEpTQWN0aXZhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU0FjdGl2YXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxNERFMEQ2ODBEMDI0MzE0MDBBQUNDQTIgLyogSlNHbG9iYWxPYmplY3QuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNHbG9iYWxPYmplY3QuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNEYyNTI1NjBEMDhERDhEMDA0RUNGRkYg
LyogSlNWYXJpYWJsZU9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U1ZhcmlhYmxlT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0RjM0ODhF
MEU5NUVGOEEwMDM2NDhCQyAvKiBDb2xsZWN0b3JIZWFwSXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQ29sbGVjdG9ySGVhcEl0ZXJhdG9yLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFDOTA1MTQyMEJBOUU4QTcwMDgxRTlEMCAvKiBWZXJzaW9uLnhj
Y29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IFZlcnNpb24ueGNjb25maWc7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDOTA1MTQzMEJBOUU4QTcwMDgxRTlEMCAv
KiBKYXZhU2NyaXB0Q29yZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGgg
PSBKYXZhU2NyaXB0Q29yZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MUM5MDUxNDQwQkE5RThBNzAwODFFOUQwIC8qIERlYnVnUmVsZWFzZS54Y2NvbmZpZyAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBEZWJ1Z1JlbGVhc2UueGNjb25maWc7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjk2LDYgKzEyOTgsNyBAQAogCQkJCUY2OTJBODg2MDI1
NTU5N0QwMUZGNjBGNyAvKiB1c3RyaW5nLmggKi8sCiAJCQkJMTQ3QjgzQUEwRTZEQjhDOTAwNDc3
NUE0IC8qIEJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyLmggKi8sCiAJCQkJMTQ3Qjg0NjIwRTZE
RTZCMTAwNDc3NUE0IC8qIFB1dFByb3BlcnR5U2xvdC5oICovLAorCQkJCTE0RjM0ODhFMEU5NUVG
OEEwMDM2NDhCQyAvKiBDb2xsZWN0b3JIZWFwSXRlcmF0b3IuaCAqLywKIAkJCSk7CiAJCQlwYXRo
ID0ga2pzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTE2MDAsNiArMTYwMyw3IEBA
CiAJCQkJN0UyQUREOEUwRTc5QUFENTAwRDUwQzUxIC8qIENoYXJhY3RlckNsYXNzQ29uc3RydWN0
b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MEQxN0Q3MEU4QUQ0QTkwMDBDRDE3RCAvKiBKU0Jh
c2VQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjlFQkNCNzBFOEM2RDRBMDA4NzIyQ0Mg
LyogUmVzdWx0VHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMTRGMzQ4OEYwRTk1RUY4QTAwMzY0
OEJDIC8qIENvbGxlY3RvckhlYXBJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBKYXZh
U2NyaXB0Q29yZS9WTS9Db2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9W
TS9Db2RlQmxvY2suaAkocmV2aXNpb24gMzcxOTYpCisrKyBKYXZhU2NyaXB0Q29yZS9WTS9Db2Rl
QmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMTU5LDcgKzE1OSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICAgICAgICAgIFVTdHJpbmcgZXJyTXNnOwogICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgICAgIFNvdXJjZUNvZGUgc291cmNlID0gbWFrZVNvdXJjZShldmFsU291cmNlKTsK
LSAgICAgICAgICAgICAgICBldmFsTm9kZSA9IGV4ZWMtPnBhcnNlcigpLT5wYXJzZTxFdmFsTm9k
ZT4oZXhlYywgc291cmNlLCAmZXJyTGluZSwgJmVyck1zZyk7CisgICAgICAgICAgICAgICAgZXZh
bE5vZGUgPSBleGVjLT5wYXJzZXIoKS0+cGFyc2U8RXZhbE5vZGU+KGV4ZWMsIGV4ZWMtPmR5bmFt
aWNHbG9iYWxPYmplY3QoKS0+ZGVidWdnZXIoKSwgc291cmNlLCAmZXJyTGluZSwgJmVyck1zZyk7
CiAgICAgICAgICAgICAgICAgaWYgKGV2YWxOb2RlKSB7CiAgICAgICAgICAgICAgICAgICAgIGlm
IChldmFsU291cmNlLnNpemUoKSA8IG1heENhY2hlYWJsZVNvdXJjZUxlbmd0aCAmJiAoKnNjb3Bl
Q2hhaW4tPmJlZ2luKCkpLT5pc1ZhcmlhYmxlT2JqZWN0KCkgJiYgY2FjaGVNYXAuc2l6ZSgpIDwg
bWF4Q2FjaGVFbnRyaWVzKQogICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVNYXAuc2V0KGV2
YWxTb3VyY2UucmVwKCksIGV2YWxOb2RlKTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9Db2xs
ZWN0b3JIZWFwSXRlcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvQ29s
bGVjdG9ySGVhcEl0ZXJhdG9yLmgJKHJldmlzaW9uIDApCisrKyBKYXZhU2NyaXB0Q29yZS9ranMv
Q29sbGVjdG9ySGVhcEl0ZXJhdG9yLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgImNvbGxlY3Rvci5oIgorCituYW1lc3BhY2UgSlNDIHsKKworICAg
IHRlbXBsYXRlIDxIZWFwVHlwZSBoZWFwVHlwZT4gY2xhc3MgQ29sbGVjdG9ySGVhcEl0ZXJhdG9y
IHsKKyAgICBwdWJsaWM6CisgICAgICAgIENvbGxlY3RvckhlYXBJdGVyYXRvcihDb2xsZWN0b3JC
bG9jayoqIGJsb2NrLCBDb2xsZWN0b3JCbG9jayoqIGVuZEJsb2NrKTsKKworICAgICAgICBib29s
IG9wZXJhdG9yIT0oY29uc3QgQ29sbGVjdG9ySGVhcEl0ZXJhdG9yPGhlYXBUeXBlPiYgb3RoZXIp
IHsgcmV0dXJuIG1fYmxvY2sgIT0gb3RoZXIubV9ibG9jayB8fCBtX2NlbGwgIT0gb3RoZXIubV9j
ZWxsOyB9CisgICAgICAgIENvbGxlY3RvckhlYXBJdGVyYXRvcjxoZWFwVHlwZT4mIG9wZXJhdG9y
KysoKTsKKyAgICAgICAgSlNDZWxsKiBvcGVyYXRvciooKSBjb25zdDsKKyAgICAKKyAgICBwcml2
YXRlOgorICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEhlYXBDb25zdGFudHM8aGVhcFR5cGU+OjpC
bG9jayBCbG9jazsKKyAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBIZWFwQ29uc3RhbnRzPGhlYXBU
eXBlPjo6Q2VsbCBDZWxsOworCisgICAgICAgIEJsb2NrKiogbV9ibG9jazsKKyAgICAgICAgQmxv
Y2sqKiBtX2VuZEJsb2NrOworICAgICAgICBDZWxsKiBtX2NlbGw7CisgICAgICAgIENlbGwqIG1f
ZW5kQ2VsbDsKKyAgICB9OworCisgICAgdGVtcGxhdGUgPEhlYXBUeXBlIGhlYXBUeXBlPiAKKyAg
ICBDb2xsZWN0b3JIZWFwSXRlcmF0b3I8aGVhcFR5cGU+OjpDb2xsZWN0b3JIZWFwSXRlcmF0b3Io
Q29sbGVjdG9yQmxvY2sqKiBibG9jaywgQ29sbGVjdG9yQmxvY2sqKiBlbmRCbG9jaykKKyAgICAg
ICAgOiBtX2Jsb2NrKHJlaW50ZXJwcmV0X2Nhc3Q8QmxvY2sqKj4oYmxvY2spKQorICAgICAgICAs
IG1fZW5kQmxvY2socmVpbnRlcnByZXRfY2FzdDxCbG9jayoqPihlbmRCbG9jaykpCisgICAgICAg
ICwgbV9jZWxsKG1fYmxvY2sgPT0gbV9lbmRCbG9jayA/IDAgOiAoKm1fYmxvY2spLT5jZWxscykK
KyAgICAgICAgLCBtX2VuZENlbGwobV9ibG9jayA9PSBtX2VuZEJsb2NrID8gMCA6ICgqbV9ibG9j
ayktPmNlbGxzICsgSGVhcENvbnN0YW50czxoZWFwVHlwZT46OmNlbGxzUGVyQmxvY2spCisgICAg
eworICAgICAgICBpZiAobV9jZWxsICYmIG1fY2VsbC0+dS5mcmVlQ2VsbC56ZXJvSWZGcmVlID09
IDApCisgICAgICAgICAgICArKyp0aGlzOworICAgIH0KKworICAgIHRlbXBsYXRlIDxIZWFwVHlw
ZSBoZWFwVHlwZT4gCisgICAgQ29sbGVjdG9ySGVhcEl0ZXJhdG9yPGhlYXBUeXBlPiYgQ29sbGVj
dG9ySGVhcEl0ZXJhdG9yPGhlYXBUeXBlPjo6b3BlcmF0b3IrKygpCisgICAgeworICAgICAgICBk
byB7CisgICAgICAgICAgICBmb3IgKCsrbV9jZWxsOyBtX2NlbGwgIT0gbV9lbmRDZWxsOyArK21f
Y2VsbCkKKyAgICAgICAgICAgICAgICBpZiAobV9jZWxsLT51LmZyZWVDZWxsLnplcm9JZkZyZWUg
IT0gMCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBpZiAoKyttX2Jsb2NrICE9IG1fZW5kQmxvY2spIHsKKyAgICAg
ICAgICAgICAgICBtX2NlbGwgPSAoKm1fYmxvY2spLT5jZWxsczsKKyAgICAgICAgICAgICAgICBt
X2VuZENlbGwgPSAoKm1fYmxvY2spLT5jZWxscyArIEhlYXBDb25zdGFudHM8aGVhcFR5cGU+Ojpj
ZWxsc1BlckJsb2NrOworICAgICAgICAgICAgfQorICAgICAgICB9IHdoaWxlKG1fYmxvY2sgIT0g
bV9lbmRCbG9jayk7CisKKyAgICAgICAgbV9jZWxsID0gMDsKKyAgICAgICAgcmV0dXJuICp0aGlz
OworICAgIH0KKworICAgIHRlbXBsYXRlIDxIZWFwVHlwZSBoZWFwVHlwZT4gCisgICAgSlNDZWxs
KiBDb2xsZWN0b3JIZWFwSXRlcmF0b3I8aGVhcFR5cGU+OjpvcGVyYXRvciooKSBjb25zdAorICAg
IHsKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SlNDZWxsKj4obV9jZWxsKTsKKyAg
ICB9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL0RlYnVn
Z2VyQ2FsbEZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvRGVidWdn
ZXJDYWxsRnJhbWUuY3BwCShyZXZpc2lvbiAzNzE5NikKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9E
ZWJ1Z2dlckNhbGxGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczLDcgKzczLDcgQEAgSlNW
YWx1ZSogRGVidWdnZXJDYWxsRnJhbWU6OmV2YWx1YXRlKGNvbgogICAgIGludCBlcnJMaW5lOwog
ICAgIFVTdHJpbmcgZXJyTXNnOwogICAgIFNvdXJjZUNvZGUgc291cmNlID0gbWFrZVNvdXJjZShz
Y3JpcHQpOwotICAgIFJlZlB0cjxFdmFsTm9kZT4gZXZhbE5vZGUgPSBuZXdFeGVjLnBhcnNlcigp
LT5wYXJzZTxFdmFsTm9kZT4oJm5ld0V4ZWMsIHNvdXJjZSwgJmVyckxpbmUsICZlcnJNc2cpOwor
ICAgIFJlZlB0cjxFdmFsTm9kZT4gZXZhbE5vZGUgPSBuZXdFeGVjLnBhcnNlcigpLT5wYXJzZTxF
dmFsTm9kZT4oJm5ld0V4ZWMsIG5ld0V4ZWMuZHluYW1pY0dsb2JhbE9iamVjdCgpLT5kZWJ1Z2dl
cigpLCBzb3VyY2UsICZlcnJMaW5lLCAmZXJyTXNnKTsKICAgICBpZiAoIWV2YWxOb2RlKQogICAg
ICAgICByZXR1cm4gRXJyb3I6OmNyZWF0ZSgmbmV3RXhlYywgU3ludGF4RXJyb3IsIGVyck1zZywg
ZXJyTGluZSwgc291cmNlLnByb3ZpZGVyKCktPmFzSUQoKSwgc291cmNlLnByb3ZpZGVyKCktPnVy
bCgpKTsKIApJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9GdW5jdGlvbkNvbnN0cnVjdG9yLmNw
cAkocmV2aXNpb24gMzcxOTYpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvRnVuY3Rpb25Db25zdHJ1
Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg3LDcgKzg3LDcgQEAgSlNPYmplY3QqIGNvbnN0
cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSogZQogICAgIGludCBlcnJMaW5lOwogICAgIFVTdHJpbmcg
ZXJyTXNnOwogICAgIFNvdXJjZUNvZGUgc291cmNlID0gbWFrZVNvdXJjZShib2R5LCBzb3VyY2VV
UkwsIGxpbmVOdW1iZXIpOwotICAgIFJlZlB0cjxGdW5jdGlvbkJvZHlOb2RlPiBmdW5jdGlvbkJv
ZHkgPSBleGVjLT5wYXJzZXIoKS0+cGFyc2U8RnVuY3Rpb25Cb2R5Tm9kZT4oZXhlYywgc291cmNl
LCAmZXJyTGluZSwgJmVyck1zZyk7CisgICAgUmVmUHRyPEZ1bmN0aW9uQm9keU5vZGU+IGZ1bmN0
aW9uQm9keSA9IGV4ZWMtPnBhcnNlcigpLT5wYXJzZTxGdW5jdGlvbkJvZHlOb2RlPihleGVjLCBl
eGVjLT5keW5hbWljR2xvYmFsT2JqZWN0KCktPmRlYnVnZ2VyKCksIHNvdXJjZSwgJmVyckxpbmUs
ICZlcnJNc2cpOwogCiAgICAgLy8gTm8gcHJvZ3JhbSBub2RlID09IHN5bnRheCBlcnJvciAtIHRo
cm93IGEgc3ludGF4IGVycm9yCiAgICAgaWYgKCFmdW5jdGlvbkJvZHkpCkBAIC0xMjUsNyArMTI1
LDcgQEAgSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSogZQogICAgICAgICBy
ZXR1cm4gdGhyb3dFcnJvcihleGVjLCBTeW50YXhFcnJvciwgIlN5bnRheCBlcnJvciBpbiBwYXJh
bWV0ZXIgbGlzdCIpOwogICAgIH0KICAgICBzaXplX3QgY291bnQgPSBwYXJhbWV0ZXJzLnNpemUo
KTsKLSAgICBmdW5jdGlvbkJvZHktPmZpbmlzaFBhcnNpbmcoc291cmNlLCBwYXJhbWV0ZXJzLnJl
bGVhc2VCdWZmZXIoKSwgY291bnQpOworICAgIGZ1bmN0aW9uQm9keS0+ZmluaXNoUGFyc2luZyhw
YXJhbWV0ZXJzLnJlbGVhc2VCdWZmZXIoKSwgY291bnQpOwogCiAgICAgU2NvcGVDaGFpbiBzY29w
ZUNoYWluKGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgZXhlYy0+Z2xvYmFsVGhpc1ZhbHVl
KCkpOwogICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gbmV3IChleGVjKSBKU0Z1bmN0aW9uKGV4
ZWMsIGZ1bmN0aW9uTmFtZSwgZnVuY3Rpb25Cb2R5LmdldCgpLCBzY29wZUNoYWluLm5vZGUoKSk7
CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvSlNGdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
SmF2YVNjcmlwdENvcmUva2pzL0pTRnVuY3Rpb24uY3BwCShyZXZpc2lvbiAzNzE5NikKKysrIEph
dmFTY3JpcHRDb3JlL2tqcy9KU0Z1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNiAr
NDksMTIgQEAgSlNGdW5jdGlvbjo6SlNGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIAogICAgICwg
bV9ib2R5KGJvZHkpCiAgICAgLCBtX3Njb3BlQ2hhaW4oc2NvcGVDaGFpbk5vZGUpCiB7CisjaWZu
ZGVmIE5ERUJVRworICAgIGlmICghZXhlYy0+cGFyc2VyKCktPnBhcnNlPEZ1bmN0aW9uQm9keU5v
ZGU+KGV4ZWMsIDAsIGJvZHktPnNvdXJjZSgpKSkgeworICAgICAgICBwcmludGYoIkZBSUxFRCBU
TyBSRS1QQVJTRTogJXNcbiIsIGJvZHktPnNvdXJjZSgpLnRvU3RyaW5nKCkuYXNjaWkoKSk7Cisg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyNlbmRpZgogfQogCiB2b2lkIEpT
RnVuY3Rpb246Om1hcmsoKQpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL0pTR2xvYmFsT2JqZWN0
RnVuY3Rpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvSlNHbG9iYWxP
YmplY3RGdW5jdGlvbnMuY3BwCShyZXZpc2lvbiAzNzE5NikKKysrIEphdmFTY3JpcHRDb3JlL2tq
cy9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4Niw3ICsy
ODYsNyBAQCBKU1ZhbHVlKiBnbG9iYWxGdW5jRXZhbChFeGVjU3RhdGUqIGV4ZWMsCiAgICAgVVN0
cmluZyBlcnJNc2c7CiAKICAgICBTb3VyY2VDb2RlIHNvdXJjZSA9IG1ha2VTb3VyY2Uocyk7Ci0g
ICAgUmVmUHRyPEV2YWxOb2RlPiBldmFsTm9kZSA9IGV4ZWMtPnBhcnNlcigpLT5wYXJzZTxFdmFs
Tm9kZT4oZXhlYywgc291cmNlLCAmZXJyTGluZSwgJmVyck1zZyk7CisgICAgUmVmUHRyPEV2YWxO
b2RlPiBldmFsTm9kZSA9IGV4ZWMtPnBhcnNlcigpLT5wYXJzZTxFdmFsTm9kZT4oZXhlYywgZXhl
Yy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpLT5kZWJ1Z2dlcigpLCBzb3VyY2UsICZlcnJMaW5lLCAm
ZXJyTXNnKTsKIAogICAgIGlmICghZXZhbE5vZGUpCiAgICAgICAgIHJldHVybiB0aHJvd0Vycm9y
KGV4ZWMsIFN5bnRheEVycm9yLCBlcnJNc2csIGVyckxpbmUsIHNvdXJjZS5wcm92aWRlcigpLT5h
c0lEKCksIE5VTEwpOwpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL1BhcnNlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL1BhcnNlci5jcHAJKHJldmlzaW9uIDM3MTk2KQor
KysgSmF2YVNjcmlwdENvcmUva2pzL1BhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxLDkg
KzYxLDYgQEAgdm9pZCBQYXJzZXI6OnBhcnNlKEV4ZWNTdGF0ZSogZXhlYywgaW50KgogICAgICAg
ICAqZXJyTXNnID0gIlBhcnNlIGVycm9yIjsKICAgICAgICAgbV9zb3VyY2VFbGVtZW50cy5jbGVh
cigpOwogICAgIH0KLQotICAgIGlmIChEZWJ1Z2dlciogZGVidWdnZXIgPSBleGVjLT5keW5hbWlj
R2xvYmFsT2JqZWN0KCktPmRlYnVnZ2VyKCkpCi0gICAgICAgIGRlYnVnZ2VyLT5zb3VyY2VQYXJz
ZWQoZXhlYywgKm1fc291cmNlLCAqZXJyTGluZSwgKmVyck1zZyk7CiB9CiAKIHZvaWQgUGFyc2Vy
OjpkaWRGaW5pc2hQYXJzaW5nKFNvdXJjZUVsZW1lbnRzKiBzb3VyY2VFbGVtZW50cywgUGFyc2Vy
UmVmQ291bnRlZERhdGE8RGVjbGFyYXRpb25TdGFja3M6OlZhclN0YWNrPiogdmFyU3RhY2ssIApJ
bmRleDogSmF2YVNjcmlwdENvcmUva2pzL1BhcnNlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3Jp
cHRDb3JlL2tqcy9QYXJzZXIuaAkocmV2aXNpb24gMzcxOTYpCisrKyBKYXZhU2NyaXB0Q29yZS9r
anMvUGFyc2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDYgKzIzLDcgQEAKICNpZm5kZWYgUGFy
c2VyX2gKICNkZWZpbmUgUGFyc2VyX2gKIAorI2luY2x1ZGUgImRlYnVnZ2VyLmgiCiAjaW5jbHVk
ZSAiU291cmNlUHJvdmlkZXIuaCIKICNpbmNsdWRlICJub2Rlcy5oIgogI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CkBAIC0zMiw2ICszMyw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCisgICAgY2xh
c3MgRGVidWdnZXI7CiAgICAgY2xhc3MgRnVuY3Rpb25Cb2R5Tm9kZTsKICAgICBjbGFzcyBQcm9n
cmFtTm9kZTsKICAgICBjbGFzcyBVU3RyaW5nOwpAQCAtNDgsOCArNTAsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgIGNsYXNzIFBhcnNlciA6IE5vbmNvcHlhYmxlIHsKICAgICBwdWJsaWM6Ci0g
ICAgICAgIHRlbXBsYXRlIDxjbGFzcyBQYXJzZWROb2RlPiBQYXNzUmVmUHRyPFBhcnNlZE5vZGU+
IHBhcnNlKEV4ZWNTdGF0ZSosIFBhc3NSZWZQdHI8U291cmNlUHJvdmlkZXI+LCBpbnQqIGVyckxp
bmUgPSAwLCBVU3RyaW5nKiBlcnJNc2cgPSAwKTsKLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFBh
cnNlZE5vZGU+IFBhc3NSZWZQdHI8UGFyc2VkTm9kZT4gcGFyc2UoRXhlY1N0YXRlKiwgY29uc3Qg
U291cmNlQ29kZSYsIGludCogZXJyTGluZSA9IDAsIFVTdHJpbmcqIGVyck1zZyA9IDApOworICAg
ICAgICB0ZW1wbGF0ZSA8Y2xhc3MgUGFyc2VkTm9kZT4gUGFzc1JlZlB0cjxQYXJzZWROb2RlPiBw
YXJzZShFeGVjU3RhdGUqLCBEZWJ1Z2dlciosIGNvbnN0IFNvdXJjZUNvZGUmLCBpbnQqIGVyckxp
bmUgPSAwLCBVU3RyaW5nKiBlcnJNc2cgPSAwKTsKIAogICAgICAgICB2b2lkIGRpZEZpbmlzaFBh
cnNpbmcoU291cmNlRWxlbWVudHMqLCBQYXJzZXJSZWZDb3VudGVkRGF0YTxEZWNsYXJhdGlvblN0
YWNrczo6VmFyU3RhY2s+KiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJzZXJS
ZWZDb3VudGVkRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFjaz4qLCBib29sIHVz
ZXNFdmFsLCBib29sIG5lZWRzQ2xvc3VyZSwgYm9vbCB1c2VzQXJndW1lbnRzLCBpbnQgbGFzdExp
bmUsIGludCBudW1Db25zdGFudHMpOwpAQCAtNzAsNyArNzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgaW50IG1fbnVtQ29uc3RhbnRzOwogICAgIH07CiAKLSAgICB0ZW1wbGF0ZSA8Y2xh
c3MgUGFyc2VkTm9kZT4gUGFzc1JlZlB0cjxQYXJzZWROb2RlPiBQYXJzZXI6OnBhcnNlKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBpbnQqIGVyckxpbmUsIFVTdHJp
bmcqIGVyck1zZykKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgUGFyc2VkTm9kZT4gUGFzc1JlZlB0cjxQ
YXJzZWROb2RlPiBQYXJzZXI6OnBhcnNlKEV4ZWNTdGF0ZSogZXhlYywgRGVidWdnZXIqIGRlYnVn
Z2VyLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGludCogZXJyTGluZSwgVVN0cmluZyogZXJy
TXNnKQogICAgIHsKICAgICAgICAgbV9zb3VyY2UgPSAmc291cmNlOwogICAgICAgICBwYXJzZShl
eGVjLCBlcnJMaW5lLCBlcnJNc2cpOwpAQCAtOTIsNiArOTMsOSBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgbV9zb3VyY2VFbGVtZW50cyA9IDA7CiAgICAgICAgIG1fdmFyRGVjbGFyYXRpb25z
ID0gMDsKICAgICAgICAgbV9mdW5jRGVjbGFyYXRpb25zID0gMDsKKworICAgICAgICBpZiAoZGVi
dWdnZXIpCisgICAgICAgICAgICBkZWJ1Z2dlci0+c291cmNlUGFyc2VkKGV4ZWMsIHNvdXJjZSwg
KmVyckxpbmUsICplcnJNc2cpOwogICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKICAg
ICB9CiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9TaGVsbC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
SmF2YVNjcmlwdENvcmUva2pzL1NoZWxsLmNwcAkocmV2aXNpb24gMzcxOTYpCisrKyBKYXZhU2Ny
aXB0Q29yZS9ranMvU2hlbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTksNyArMzE5LDcgQEAg
c3RhdGljIGJvb2wgcHJldHR5UHJpbnRTY3JpcHQoRXhlY1N0YXRlKgogewogICAgIGludCBlcnJM
aW5lID0gMDsKICAgICBVU3RyaW5nIGVyck1zZzsKLSAgICBSZWZQdHI8UHJvZ3JhbU5vZGU+IHBy
b2dyYW1Ob2RlID0gZXhlYy0+cGFyc2VyKCktPnBhcnNlPFByb2dyYW1Ob2RlPihleGVjLCBtYWtl
U291cmNlKHNjcmlwdC5kYXRhKCksIGZpbGVOYW1lKSwgJmVyckxpbmUsICZlcnJNc2cpOworICAg
IFJlZlB0cjxQcm9ncmFtTm9kZT4gcHJvZ3JhbU5vZGUgPSBleGVjLT5wYXJzZXIoKS0+cGFyc2U8
UHJvZ3JhbU5vZGU+KGV4ZWMsIGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKS0+ZGVidWdnZXIo
KSwgbWFrZVNvdXJjZShzY3JpcHQuZGF0YSgpLCBmaWxlTmFtZSksICZlcnJMaW5lLCAmZXJyTXNn
KTsKICAgICBpZiAoIXByb2dyYW1Ob2RlKSB7CiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6
JWQ6ICVzLlxuIiwgZmlsZU5hbWUuVVRGOFN0cmluZygpLmNfc3RyKCksIGVyckxpbmUsIGVyck1z
Zy5VVEY4U3RyaW5nKCkuY19zdHIoKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IEph
dmFTY3JpcHRDb3JlL2tqcy9Tb3VyY2VSYW5nZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRD
b3JlL2tqcy9Tb3VyY2VSYW5nZS5oCShyZXZpc2lvbiAzNzE5NikKKysrIEphdmFTY3JpcHRDb3Jl
L2tqcy9Tb3VyY2VSYW5nZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCw2ICs2OCw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIG1fcHJvdmlkZXItPmdldFJhbmdlKG1fc3Rh
cnRDaGFyLCBtX2VuZENoYXIpOwogICAgICAgICB9CiAgICAgICAgIAorICAgICAgICBib29sIGlz
TnVsbCgpIGNvbnN0IHsgcmV0dXJuICFtX3Byb3ZpZGVyOyB9CiAgICAgICAgIFNvdXJjZVByb3Zp
ZGVyKiBwcm92aWRlcigpIGNvbnN0IHsgcmV0dXJuIG1fcHJvdmlkZXIuZ2V0KCk7IH0KICAgICAg
ICAgaW50IGZpcnN0TGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3RMaW5lOyB9CiAgICAgICAg
IGludCBzdGFydE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRDaGFyOyB9CkluZGV4OiBK
YXZhU2NyaXB0Q29yZS9ranMvY29sbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9ranMvY29sbGVjdG9yLmNwcAkocmV2aXNpb24gMzcxOTYpCisrKyBKYXZhU2NyaXB0Q29y
ZS9ranMvY29sbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIsNiArMjIsNyBAQAogI2lu
Y2x1ZGUgImNvbGxlY3Rvci5oIgogCiAjaW5jbHVkZSAiQXJnTGlzdC5oIgorI2luY2x1ZGUgIkNv
bGxlY3RvckhlYXBJdGVyYXRvci5oIgogI2luY2x1ZGUgIkV4ZWNTdGF0ZS5oIgogI2luY2x1ZGUg
IkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNMb2NrLmgiCkBAIC0xNjgsNyArMTY5LDcg
QEAgSGVhcDo6fkhlYXAoKQogI2VuZGlmCiB9CiAKLXRlbXBsYXRlIDxIZWFwOjpIZWFwVHlwZSBo
ZWFwVHlwZT4KK3RlbXBsYXRlIDxIZWFwVHlwZSBoZWFwVHlwZT4KIHN0YXRpYyBORVZFUl9JTkxJ
TkUgQ29sbGVjdG9yQmxvY2sqIGFsbG9jYXRlQmxvY2soKQogewogI2lmIFBMQVRGT1JNKERBUldJ
TikKQEAgLTI1MiwyNSArMjUzLDcgQEAgdm9pZCBIZWFwOjpyZWNvcmRFeHRyYUNvc3Qoc2l6ZV90
IGNvc3QpCiAgICAgcHJpbWFyeUhlYXAuZXh0cmFDb3N0ICs9IGNvc3Q7CiB9CiAKLXRlbXBsYXRl
IDxIZWFwOjpIZWFwVHlwZSBoZWFwVHlwZT4gc3RydWN0IEhlYXBDb25zdGFudHM7Ci0KLXRlbXBs
YXRlIDw+IHN0cnVjdCBIZWFwQ29uc3RhbnRzPEhlYXA6OlByaW1hcnlIZWFwPiB7Ci0gICAgc3Rh
dGljIGNvbnN0IHNpemVfdCBjZWxsU2l6ZSA9IENFTExfU0laRTsKLSAgICBzdGF0aWMgY29uc3Qg
c2l6ZV90IGNlbGxzUGVyQmxvY2sgPSBDRUxMU19QRVJfQkxPQ0s7Ci0gICAgc3RhdGljIGNvbnN0
IHNpemVfdCBiaXRtYXBTaGlmdCA9IDA7Ci0gICAgdHlwZWRlZiBDb2xsZWN0b3JDZWxsIENlbGw7
Ci0gICAgdHlwZWRlZiBDb2xsZWN0b3JCbG9jayBCbG9jazsKLX07Ci0KLXRlbXBsYXRlIDw+IHN0
cnVjdCBIZWFwQ29uc3RhbnRzPEhlYXA6Ok51bWJlckhlYXA+IHsKLSAgICBzdGF0aWMgY29uc3Qg
c2l6ZV90IGNlbGxTaXplID0gU01BTExfQ0VMTF9TSVpFOwotICAgIHN0YXRpYyBjb25zdCBzaXpl
X3QgY2VsbHNQZXJCbG9jayA9IFNNQUxMX0NFTExTX1BFUl9CTE9DSzsKLSAgICBzdGF0aWMgY29u
c3Qgc2l6ZV90IGJpdG1hcFNoaWZ0ID0gMTsKLSAgICB0eXBlZGVmIFNtYWxsQ29sbGVjdG9yQ2Vs
bCBDZWxsOwotICAgIHR5cGVkZWYgU21hbGxDZWxsQ29sbGVjdG9yQmxvY2sgQmxvY2s7Ci19Owot
Ci10ZW1wbGF0ZSA8SGVhcDo6SGVhcFR5cGUgaGVhcFR5cGU+IEFMV0FZU19JTkxJTkUgdm9pZCog
SGVhcDo6aGVhcEFsbG9jYXRlKHNpemVfdCBzKQordGVtcGxhdGUgPEhlYXBUeXBlIGhlYXBUeXBl
PiBBTFdBWVNfSU5MSU5FIHZvaWQqIEhlYXA6OmhlYXBBbGxvY2F0ZShzaXplX3QgcykKIHsKICAg
ICB0eXBlZGVmIHR5cGVuYW1lIEhlYXBDb25zdGFudHM8aGVhcFR5cGU+OjpCbG9jayBCbG9jazsK
ICAgICB0eXBlZGVmIHR5cGVuYW1lIEhlYXBDb25zdGFudHM8aGVhcFR5cGU+OjpDZWxsIENlbGw7
CkBAIC04NDYsMTMgKzgyOSwxMyBAQCB2b2lkIEhlYXA6Om1hcmtQcm90ZWN0ZWRPYmplY3RzKCkK
ICAgICAgICAgbV9wcm90ZWN0ZWRWYWx1ZXNNdXRleC0+dW5sb2NrKCk7CiB9CiAKLXRlbXBsYXRl
IDxIZWFwOjpIZWFwVHlwZSBoZWFwVHlwZT4gc2l6ZV90IEhlYXA6OnN3ZWVwKCkKK3RlbXBsYXRl
IDxIZWFwVHlwZSBoZWFwVHlwZT4gc2l6ZV90IEhlYXA6OnN3ZWVwKCkKIHsKICAgICB0eXBlZGVm
IHR5cGVuYW1lIEhlYXBDb25zdGFudHM8aGVhcFR5cGU+OjpCbG9jayBCbG9jazsKICAgICB0eXBl
ZGVmIHR5cGVuYW1lIEhlYXBDb25zdGFudHM8aGVhcFR5cGU+OjpDZWxsIENlbGw7CiAKICAgICAv
LyBTV0VFUDogZGVsZXRlIGV2ZXJ5dGhpbmcgd2l0aCBhIHplcm8gcmVmY291bnQgKGdhcmJhZ2Up
IGFuZCB1bm1hcmsgZXZlcnl0aGluZyBlbHNlCi0gICAgQ29sbGVjdG9ySGVhcCYgaGVhcCA9IGhl
YXBUeXBlID09IEhlYXA6OlByaW1hcnlIZWFwID8gcHJpbWFyeUhlYXAgOiBudW1iZXJIZWFwOwor
ICAgIENvbGxlY3RvckhlYXAmIGhlYXAgPSBoZWFwVHlwZSA9PSBQcmltYXJ5SGVhcCA/IHByaW1h
cnlIZWFwIDogbnVtYmVySGVhcDsKICAgICAKICAgICBzaXplX3QgZW1wdHlCbG9ja3MgPSAwOwog
ICAgIHNpemVfdCBudW1MaXZlT2JqZWN0cyA9IGhlYXAubnVtTGl2ZU9iamVjdHM7CkBAIC04Njks
NyArODUyLDcgQEAgdGVtcGxhdGUgPEhlYXA6OkhlYXBUeXBlIGhlYXBUeXBlPiBzaXplXwogICAg
ICAgICAgICAgICAgIGlmICghY3VyQmxvY2stPm1hcmtlZC5nZXQoaSA+PiBIZWFwQ29uc3RhbnRz
PGhlYXBUeXBlPjo6Yml0bWFwU2hpZnQpKSB7CiAgICAgICAgICAgICAgICAgICAgIENlbGwqIGNl
bGwgPSBjdXJCbG9jay0+Y2VsbHMgKyBpOwogICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKGhlYXBUeXBlICE9IEhlYXA6Ok51bWJlckhlYXApIHsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKGhlYXBUeXBlICE9IE51bWJlckhlYXApIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgIEpTQ2VsbCogaW1wID0gcmVpbnRlcnByZXRfY2FzdDxKU0NlbGwqPihjZWxsKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNwZWNpYWwgY2FzZSBmb3IgYWxsb2NhdGVkIGJ1
dCB1bmluaXRpYWxpemVkIG9iamVjdAogICAgICAgICAgICAgICAgICAgICAgICAgLy8gKFdlIGRv
bid0IG5lZWQgdGhpcyBjaGVjayBlYXJsaWVyIGJlY2F1c2Ugbm90aGluZyBwcmlvciB0aGlzIHBv
aW50IApAQCAtODk3LDcgKzg4MCw3IEBAIHRlbXBsYXRlIDxIZWFwOjpIZWFwVHlwZSBoZWFwVHlw
ZT4gc2l6ZV8KICAgICAgICAgICAgICAgICAgICAgKyttaW5pbXVtQ2VsbHNUb1Byb2Nlc3M7CiAg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFjdXJCbG9j
ay0+bWFya2VkLmdldChpID4+IEhlYXBDb25zdGFudHM8aGVhcFR5cGU+OjpiaXRtYXBTaGlmdCkp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoZWFwVHlwZSAhPSBIZWFwOjpOdW1iZXJI
ZWFwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGVhcFR5cGUgIT0gTnVtYmVySGVh
cCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTQ2VsbCogaW1wID0gcmVpbnRlcnBy
ZXRfY2FzdDxKU0NlbGwqPihjZWxsKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXAt
Pn5KU0NlbGwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTEwNzEsNCArMTA1NCwx
NCBAQCBib29sIEhlYXA6OmlzQnVzeSgpCiAgICAgcmV0dXJuIChwcmltYXJ5SGVhcC5vcGVyYXRp
b25JblByb2dyZXNzICE9IE5vT3BlcmF0aW9uKSB8IChudW1iZXJIZWFwLm9wZXJhdGlvbkluUHJv
Z3Jlc3MgIT0gTm9PcGVyYXRpb24pOwogfQogCitIZWFwOjppdGVyYXRvciBIZWFwOjpwcmltYXJ5
SGVhcEJlZ2luKCkKK3sKKyAgICByZXR1cm4gaXRlcmF0b3IocHJpbWFyeUhlYXAuYmxvY2tzLCBw
cmltYXJ5SGVhcC5ibG9ja3MgKyBwcmltYXJ5SGVhcC51c2VkQmxvY2tzKTsKK30KKworSGVhcDo6
aXRlcmF0b3IgSGVhcDo6cHJpbWFyeUhlYXBFbmQoKQoreworICAgIHJldHVybiBpdGVyYXRvcihw
cmltYXJ5SGVhcC5ibG9ja3MgKyBwcmltYXJ5SGVhcC51c2VkQmxvY2tzLCBwcmltYXJ5SGVhcC5i
bG9ja3MgKyBwcmltYXJ5SGVhcC51c2VkQmxvY2tzKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlND
CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvY29sbGVjdG9yLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2
YVNjcmlwdENvcmUva2pzL2NvbGxlY3Rvci5oCShyZXZpc2lvbiAzNzE5NikKKysrIEphdmFTY3Jp
cHRDb3JlL2tqcy9jb2xsZWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsOSBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBKU1ZhbHVlOwogCiAgICAgZW51bSBPcGVyYXRpb25J
blByb2dyZXNzIHsgTm9PcGVyYXRpb24sIEFsbG9jYXRpb24sIENvbGxlY3Rpb24gfTsKKyAgICBl
bnVtIEhlYXBUeXBlIHsgUHJpbWFyeUhlYXAsIE51bWJlckhlYXAgfTsKKworICAgIHRlbXBsYXRl
IDxIZWFwVHlwZT4gY2xhc3MgQ29sbGVjdG9ySGVhcEl0ZXJhdG9yOwogCiAgICAgc3RydWN0IENv
bGxlY3RvckhlYXAgewogICAgICAgICBDb2xsZWN0b3JCbG9jayoqIGJsb2NrczsKQEAgLTYyLDcg
KzY1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSGVhcCA6IE5vbmNvcHlhYmxlIHsK
ICAgICBwdWJsaWM6CiAgICAgICAgIGNsYXNzIFRocmVhZDsKLSAgICAgICAgZW51bSBIZWFwVHlw
ZSB7IFByaW1hcnlIZWFwLCBOdW1iZXJIZWFwIH07CisgICAgICAgIHR5cGVkZWYgQ29sbGVjdG9y
SGVhcEl0ZXJhdG9yPFByaW1hcnlIZWFwPiBpdGVyYXRvcjsKKyAgICAgICAgc3RhdGljIGNvbnN0
IHNpemVfdCBtaW5FeHRyYUNvc3RTaXplID0gMjU2OwogCiAjaWZkZWYgSkFWQVNDUklQVENPUkVf
QlVJTERJTkdfQUxMX0lOX09ORV9GSUxFCiAgICAgICAgIC8vIFdlIGNhbiBpbmxpbmUgdGhlc2Ug
ZnVuY3Rpb25zIGJlY2F1c2UgZXZlcnl0aGluZyBpcyBjb21waWxlZCBhcwpAQCAtNzUsMTIgKzc5
LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkKiBhbGxvY2F0ZU51bWJlcihzaXpl
X3QpOwogICAgICAgICB2b2lkKiBhbGxvY2F0ZShzaXplX3QpOwogCi0gICAgICAgIGJvb2wgY29s
bGVjdCgpOwotICAgICAgICBib29sIGlzQnVzeSgpOyAvLyB0cnVlIGlmIGFuIGFsbG9jYXRpb24g
b3IgY29sbGVjdGlvbiBpcyBpbiBwcm9ncmVzcwotCiAgICAgICAgIH5IZWFwKCk7CiAKLSAgICAg
ICAgc3RhdGljIGNvbnN0IHNpemVfdCBtaW5FeHRyYUNvc3RTaXplID0gMjU2OworICAgICAgICBi
b29sIGNvbGxlY3QoKTsKKyAgICAgICAgYm9vbCBpc0J1c3koKTsgLy8gdHJ1ZSBpZiBhbiBhbGxv
Y2F0aW9uIG9yIGNvbGxlY3Rpb24gaXMgaW4gcHJvZ3Jlc3MKIAogICAgICAgICB2b2lkIHJlcG9y
dEV4dHJhTWVtb3J5Q29zdChzaXplX3QgY29zdCk7CiAKQEAgLTEwOCwxMCArMTEwLDE0IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSgpIGNvbnN0
IHsgcmV0dXJuIG1fZ2xvYmFsRGF0YTsgfQogICAgICAgICBzdGF0aWMgYm9vbCBpc051bWJlcihK
U0NlbGwqKTsKKyAgICAgICAgCisgICAgICAgIC8vIEl0ZXJhdG9ycyBmb3IgdGhlIG9iamVjdCBo
ZWFwLgorICAgICAgICBpdGVyYXRvciBwcmltYXJ5SGVhcEJlZ2luKCk7CisgICAgICAgIGl0ZXJh
dG9yIHByaW1hcnlIZWFwRW5kKCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICB0ZW1wbGF0ZSA8
SGVhcDo6SGVhcFR5cGUgaGVhcFR5cGU+IHZvaWQqIGhlYXBBbGxvY2F0ZShzaXplX3QpOwotICAg
ICAgICB0ZW1wbGF0ZSA8SGVhcDo6SGVhcFR5cGUgaGVhcFR5cGU+IHNpemVfdCBzd2VlcCgpOwor
ICAgICAgICB0ZW1wbGF0ZSA8SGVhcFR5cGUgaGVhcFR5cGU+IHZvaWQqIGhlYXBBbGxvY2F0ZShz
aXplX3QpOworICAgICAgICB0ZW1wbGF0ZSA8SGVhcFR5cGUgaGVhcFR5cGU+IHNpemVfdCBzd2Vl
cCgpOwogICAgICAgICBzdGF0aWMgY29uc3QgQ29sbGVjdG9yQmxvY2sqIGNlbGxCbG9jayhjb25z
dCBKU0NlbGwqKTsKICAgICAgICAgc3RhdGljIENvbGxlY3RvckJsb2NrKiBjZWxsQmxvY2soSlND
ZWxsKik7CiAgICAgICAgIHN0YXRpYyBzaXplX3QgY2VsbE9mZnNldChjb25zdCBKU0NlbGwqKTsK
QEAgLTIwNSw3ICsyMTEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgQ29sbGVjdG9yQ2Vs
bCogZnJlZUxpc3Q7CiAgICAgICAgIENvbGxlY3RvckJpdG1hcCBtYXJrZWQ7CiAgICAgICAgIEhl
YXAqIGhlYXA7Ci0gICAgICAgIEhlYXA6OkhlYXBUeXBlIHR5cGU7CisgICAgICAgIEhlYXBUeXBl
IHR5cGU7CiAgICAgfTsKIAogICAgIGNsYXNzIFNtYWxsQ2VsbENvbGxlY3RvckJsb2NrIHsKQEAg
LTIxNSw5ICsyMjEsMjcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFNtYWxsQ29sbGVjdG9y
Q2VsbCogZnJlZUxpc3Q7CiAgICAgICAgIENvbGxlY3RvckJpdG1hcCBtYXJrZWQ7CiAgICAgICAg
IEhlYXAqIGhlYXA7Ci0gICAgICAgIEhlYXA6OkhlYXBUeXBlIHR5cGU7CisgICAgICAgIEhlYXBU
eXBlIHR5cGU7CiAgICAgfTsKICAgICAKKyAgICB0ZW1wbGF0ZSA8SGVhcFR5cGUgaGVhcFR5cGU+
IHN0cnVjdCBIZWFwQ29uc3RhbnRzOworCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhlYXBDb25z
dGFudHM8UHJpbWFyeUhlYXA+IHsKKyAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBjZWxsU2l6
ZSA9IENFTExfU0laRTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBjZWxsc1BlckJsb2Nr
ID0gQ0VMTFNfUEVSX0JMT0NLOworICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGJpdG1hcFNo
aWZ0ID0gMDsKKyAgICAgICAgdHlwZWRlZiBDb2xsZWN0b3JDZWxsIENlbGw7CisgICAgICAgIHR5
cGVkZWYgQ29sbGVjdG9yQmxvY2sgQmxvY2s7CisgICAgfTsKKworICAgIHRlbXBsYXRlIDw+IHN0
cnVjdCBIZWFwQ29uc3RhbnRzPE51bWJlckhlYXA+IHsKKyAgICAgICAgc3RhdGljIGNvbnN0IHNp
emVfdCBjZWxsU2l6ZSA9IFNNQUxMX0NFTExfU0laRTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHNp
emVfdCBjZWxsc1BlckJsb2NrID0gU01BTExfQ0VMTFNfUEVSX0JMT0NLOworICAgICAgICBzdGF0
aWMgY29uc3Qgc2l6ZV90IGJpdG1hcFNoaWZ0ID0gMTsKKyAgICAgICAgdHlwZWRlZiBTbWFsbENv
bGxlY3RvckNlbGwgQ2VsbDsKKyAgICAgICAgdHlwZWRlZiBTbWFsbENlbGxDb2xsZWN0b3JCbG9j
ayBCbG9jazsKKyAgICB9OworCiAgICAgaW5saW5lIGJvb2wgSGVhcDo6aXNOdW1iZXIoSlNDZWxs
KiBjZWxsKQogICAgIHsKICAgICAgICAgQ29sbGVjdG9yQmxvY2sqIGJsb2NrID0gSGVhcDo6Y2Vs
bEJsb2NrKGNlbGwpOwpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL2ludGVycHJldGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvaW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lv
biAzNzE5NikKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9pbnRlcnByZXRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgQ29tcGxldGlvbiBJbnRlcnByZXRlcjo6Y2hlY2tTeW50
YXgoRXhlYwogICAgIGludCBlcnJMaW5lOwogICAgIFVTdHJpbmcgZXJyTXNnOwogCi0gICAgUmVm
UHRyPFByb2dyYW1Ob2RlPiBwcm9nTm9kZSA9IGV4ZWMtPnBhcnNlcigpLT5wYXJzZTxQcm9ncmFt
Tm9kZT4oZXhlYywgc291cmNlLCAmZXJyTGluZSwgJmVyck1zZyk7CisgICAgUmVmUHRyPFByb2dy
YW1Ob2RlPiBwcm9nTm9kZSA9IGV4ZWMtPnBhcnNlcigpLT5wYXJzZTxQcm9ncmFtTm9kZT4oZXhl
YywgZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpLT5kZWJ1Z2dlcigpLCBzb3VyY2UsICZlcnJM
aW5lLCAmZXJyTXNnKTsKICAgICBpZiAoIXByb2dOb2RlKQogICAgICAgICByZXR1cm4gQ29tcGxl
dGlvbihUaHJvdywgRXJyb3I6OmNyZWF0ZShleGVjLCBTeW50YXhFcnJvciwgZXJyTXNnLCBlcnJM
aW5lLCBzb3VyY2UucHJvdmlkZXIoKS0+YXNJRCgpLCBzb3VyY2UucHJvdmlkZXIoKS0+dXJsKCkp
KTsKICAgICByZXR1cm4gQ29tcGxldGlvbihOb3JtYWwpOwpAQCAtNTgsNyArNTgsNyBAQCBDb21w
bGV0aW9uIEludGVycHJldGVyOjpldmFsdWF0ZShFeGVjU3RhCiAgICAgCiAgICAgaW50IGVyckxp
bmU7CiAgICAgVVN0cmluZyBlcnJNc2c7Ci0gICAgUmVmUHRyPFByb2dyYW1Ob2RlPiBwcm9ncmFt
Tm9kZSA9IGV4ZWMtPnBhcnNlcigpLT5wYXJzZTxQcm9ncmFtTm9kZT4oZXhlYywgc291cmNlLCAm
ZXJyTGluZSwgJmVyck1zZyk7CisgICAgUmVmUHRyPFByb2dyYW1Ob2RlPiBwcm9ncmFtTm9kZSA9
IGV4ZWMtPnBhcnNlcigpLT5wYXJzZTxQcm9ncmFtTm9kZT4oZXhlYywgZXhlYy0+ZHluYW1pY0ds
b2JhbE9iamVjdCgpLT5kZWJ1Z2dlcigpLCBzb3VyY2UsICZlcnJMaW5lLCAmZXJyTXNnKTsKIAog
ICAgIGlmICghcHJvZ3JhbU5vZGUpCiAgICAgICAgIHJldHVybiBDb21wbGV0aW9uKFRocm93LCBF
cnJvcjo6Y3JlYXRlKGV4ZWMsIFN5bnRheEVycm9yLCBlcnJNc2csIGVyckxpbmUsIHNvdXJjZS5w
cm92aWRlcigpLT5hc0lEKCksIHNvdXJjZS5wcm92aWRlcigpLT51cmwoKSkpOwpJbmRleDogSmF2
YVNjcmlwdENvcmUva2pzL25vZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9r
anMvbm9kZXMuY3BwCShyZXZpc2lvbiAzNzE5NikKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9ub2Rl
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3NjUsOSArMTc2NSwxMCBAQCBFdmFsTm9kZSogRXZh
bE5vZGU6OmNyZWF0ZShKU0dsb2JhbERhdGEqCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSBGdW5jdGlvbkJvZHlOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAK
LUZ1bmN0aW9uQm9keU5vZGU6OkZ1bmN0aW9uQm9keU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rp
b25TdGFjayogZnVuY1N0YWNrLCBib29sIHVzZXNFdmFsLCBib29sIG5lZWRzQ2xvc3VyZSwgYm9v
bCB1c2VzQXJndW1lbnRzLCBpbnQgbnVtQ29uc3RhbnRzKQotICAgIDogU2NvcGVOb2RlKGdsb2Jh
bERhdGEsIFNvdXJjZUNvZGUoKSwgY2hpbGRyZW4sIHZhclN0YWNrLCBmdW5jU3RhY2ssIHVzZXNF
dmFsLCBuZWVkc0Nsb3N1cmUsIHVzZXNBcmd1bWVudHMsIG51bUNvbnN0YW50cykKK0Z1bmN0aW9u
Qm9keU5vZGU6OkZ1bmN0aW9uQm9keU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBTb3Vy
Y2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayog
ZnVuY1N0YWNrLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBib29sIHVzZXNFdmFsLCBi
b29sIG5lZWRzQ2xvc3VyZSwgYm9vbCB1c2VzQXJndW1lbnRzLCBpbnQgbnVtQ29uc3RhbnRzKQor
ICAgIDogU2NvcGVOb2RlKGdsb2JhbERhdGEsIHNvdXJjZUNvZGUsIGNoaWxkcmVuLCB2YXJTdGFj
aywgZnVuY1N0YWNrLCB1c2VzRXZhbCwgbmVlZHNDbG9zdXJlLCB1c2VzQXJndW1lbnRzLCBudW1D
b25zdGFudHMpCiAgICAgLCBtX3BhcmFtZXRlcnMoMCkKKyAgICAsIG1fcGFyYW1ldGVyQ291bnQo
MCkKICAgICAsIG1fcmVmQ291bnQoMCkKIHsKIH0KQEAgLTE3ODQsMTIgKzE3ODUsMTQgQEAgdm9p
ZCBGdW5jdGlvbkJvZHlOb2RlOjpmaW5pc2hQYXJzaW5nKGNvbgogICAgIGZvciAoUGFyYW1ldGVy
Tm9kZSogcGFyYW1ldGVyID0gZmlyc3RQYXJhbWV0ZXI7IHBhcmFtZXRlcjsgcGFyYW1ldGVyID0g
cGFyYW1ldGVyLT5uZXh0UGFyYW0oKSkKICAgICAgICAgcGFyYW1ldGVycy5hcHBlbmQocGFyYW1l
dGVyLT5pZGVudCgpKTsKICAgICBzaXplX3QgY291bnQgPSBwYXJhbWV0ZXJzLnNpemUoKTsKLSAg
ICBmaW5pc2hQYXJzaW5nKHNvdXJjZSwgcGFyYW1ldGVycy5yZWxlYXNlQnVmZmVyKCksIGNvdW50
KTsKKworICAgIHNldFNvdXJjZShzb3VyY2UpOworICAgIGZpbmlzaFBhcnNpbmcocGFyYW1ldGVy
cy5yZWxlYXNlQnVmZmVyKCksIGNvdW50KTsKIH0KIAotdm9pZCBGdW5jdGlvbkJvZHlOb2RlOjpm
aW5pc2hQYXJzaW5nKGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSWRlbnRpZmllciogcGFyYW1l
dGVycywgc2l6ZV90IHBhcmFtZXRlckNvdW50KQordm9pZCBGdW5jdGlvbkJvZHlOb2RlOjpmaW5p
c2hQYXJzaW5nKElkZW50aWZpZXIqIHBhcmFtZXRlcnMsIHNpemVfdCBwYXJhbWV0ZXJDb3VudCkK
IHsKLSAgICBzZXRTb3VyY2Uoc291cmNlKTsKKyAgICBBU1NFUlQoIXNvdXJjZSgpLmlzTnVsbCgp
KTsKICAgICBtX3BhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzOwogICAgIG1fcGFyYW1ldGVyQ291bnQg
PSBwYXJhbWV0ZXJDb3VudDsKIH0KQEAgLTE4MDIsMTIgKzE4MDUsMTIgQEAgdm9pZCBGdW5jdGlv
bkJvZHlOb2RlOjptYXJrKCkKIAogRnVuY3Rpb25Cb2R5Tm9kZSogRnVuY3Rpb25Cb2R5Tm9kZTo6
Y3JlYXRlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVu
LCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgYm9vbCB1c2Vz
RXZhbCwgYm9vbCBuZWVkc0Nsb3N1cmUsIGJvb2wgdXNlc0FyZ3VtZW50cywgaW50IG51bUNvbnN0
YW50cykKIHsKLSAgICByZXR1cm4gbmV3IEZ1bmN0aW9uQm9keU5vZGUoZ2xvYmFsRGF0YSwgY2hp
bGRyZW4sIHZhclN0YWNrLCBmdW5jU3RhY2ssIHVzZXNFdmFsLCBuZWVkc0Nsb3N1cmUsIHVzZXNB
cmd1bWVudHMsIG51bUNvbnN0YW50cyk7CisgICAgcmV0dXJuIG5ldyBGdW5jdGlvbkJvZHlOb2Rl
KGdsb2JhbERhdGEsIGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCBTb3VyY2VDb2RlKCks
IHVzZXNFdmFsLCBuZWVkc0Nsb3N1cmUsIHVzZXNBcmd1bWVudHMsIG51bUNvbnN0YW50cyk7CiB9
CiAKLUZ1bmN0aW9uQm9keU5vZGUqIEZ1bmN0aW9uQm9keU5vZGU6OmNyZWF0ZShKU0dsb2JhbERh
dGEqIGdsb2JhbERhdGEsIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sqIHZhclN0
YWNrLCBGdW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIGNvbnN0IFNvdXJjZUNvZGUmLCBib29sIHVz
ZXNFdmFsLCBib29sIG5lZWRzQ2xvc3VyZSwgYm9vbCB1c2VzQXJndW1lbnRzLCBpbnQgbnVtQ29u
c3RhbnRzKQorRnVuY3Rpb25Cb2R5Tm9kZSogRnVuY3Rpb25Cb2R5Tm9kZTo6Y3JlYXRlKEpTR2xv
YmFsRGF0YSogZ2xvYmFsRGF0YSwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayog
dmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgY29uc3QgU291cmNlQ29kZSYgc291
cmNlQ29kZSwgYm9vbCB1c2VzRXZhbCwgYm9vbCBuZWVkc0Nsb3N1cmUsIGJvb2wgdXNlc0FyZ3Vt
ZW50cywgaW50IG51bUNvbnN0YW50cykKIHsKLSAgICByZXR1cm4gbmV3IEZ1bmN0aW9uQm9keU5v
ZGUoZ2xvYmFsRGF0YSwgY2hpbGRyZW4sIHZhclN0YWNrLCBmdW5jU3RhY2ssIHVzZXNFdmFsLCBu
ZWVkc0Nsb3N1cmUsIHVzZXNBcmd1bWVudHMsIG51bUNvbnN0YW50cyk7CisgICAgcmV0dXJuIG5l
dyBGdW5jdGlvbkJvZHlOb2RlKGdsb2JhbERhdGEsIGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0
YWNrLCBzb3VyY2VDb2RlLCB1c2VzRXZhbCwgbmVlZHNDbG9zdXJlLCB1c2VzQXJndW1lbnRzLCBu
dW1Db25zdGFudHMpOwogfQogCiB2b2lkIEZ1bmN0aW9uQm9keU5vZGU6OmdlbmVyYXRlQ29kZShT
Y29wZUNoYWluTm9kZSogc2NvcGVDaGFpbk5vZGUpCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMv
bm9kZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvbm9kZXMuaAkocmV2aXNp
b24gMzcxOTYpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvbm9kZXMuaAkod29ya2luZyBjb3B5KQpA
QCAtMjE3MSw3ICsyMTcxLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdmlydHVhbCB2
b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEpTQ19GQVNUX0NBTEw7CiAgICAgICAg
IAotICAgICAgICB2b2lkIHNldFNvdXJjZShjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpIHsgbV9z
b3VyY2UgPSBzb3VyY2U7IH0KICAgICAgICAgY29uc3QgU291cmNlQ29kZSYgc291cmNlKCkgY29u
c3QgeyByZXR1cm4gbV9zb3VyY2U7IH0KICAgICAgICAgY29uc3QgVVN0cmluZyYgc291cmNlVVJM
KCkgY29uc3QgSlNDX0ZBU1RfQ0FMTCB7IHJldHVybiBtX3NvdXJjZS5wcm92aWRlcigpLT51cmwo
KTsgfQogICAgICAgICBpbnRwdHJfdCBzb3VyY2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNl
LnByb3ZpZGVyKCktPmFzSUQoKTsgfQpAQCAtMjE5Miw2ICsyMTkxLDggQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIH0KIAogICAgIHByb3RlY3RlZDoKKyAgICAgICAgdm9pZCBzZXRTb3VyY2Uo
Y29uc3QgU291cmNlQ29kZSYgc291cmNlKSB7IG1fc291cmNlID0gc291cmNlOyB9CisKICAgICAg
ICAgVmFyU3RhY2sgbV92YXJTdGFjazsKICAgICAgICAgRnVuY3Rpb25TdGFjayBtX2Z1bmN0aW9u
U3RhY2s7CiAKQEAgLTIyNTMsOCArMjI1NCwxNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
fkZ1bmN0aW9uQm9keU5vZGUoKTsKIAogICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBwYXJhbWV0
ZXJzKCkgY29uc3QgSlNDX0ZBU1RfQ0FMTCB7IHJldHVybiBtX3BhcmFtZXRlcnM7IH0KLSAgICAg
ICAgc2l6ZV90IHBhcmFtZXRlckNvdW50KCkgeyByZXR1cm4gbV9wYXJhbWV0ZXJDb3VudDsgfQor
ICAgICAgICBzaXplX3QgcGFyYW1ldGVyQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRl
ckNvdW50OyB9CiAgICAgICAgIFVTdHJpbmcgcGFyYW1TdHJpbmcoKSBjb25zdCBKU0NfRkFTVF9D
QUxMOworICAgICAgICBJZGVudGlmaWVyKiByZWxlYXNlUGFyYW1ldGVycygpCisgICAgICAgIHsK
KyAgICAgICAgICAgIElkZW50aWZpZXIqIHBhcmFtZXRlcnMgPSBtX3BhcmFtZXRlcnM7CisgICAg
ICAgICAgICBtX3BhcmFtZXRlcnMgPSAwOworICAgICAgICAgICAgbV9wYXJhbWV0ZXJDb3VudCA9
IDA7CisgICAgICAgICAgICByZXR1cm4gcGFyYW1ldGVyczsKKyAgICAgICAgfQogCiAgICAgICAg
IHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdENvZGUoQ29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
ID0gMCkgSlNDX0ZBU1RfQ0FMTDsKICAgICAgICAgCkBAIC0yMjc3LDcgKzIyODUsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBtYXJrKCk7CiAKICAgICAgICAgdm9pZCBmaW5pc2hQ
YXJzaW5nKGNvbnN0IFNvdXJjZUNvZGUmLCBQYXJhbWV0ZXJOb2RlKik7Ci0gICAgICAgIHZvaWQg
ZmluaXNoUGFyc2luZyhjb25zdCBTb3VyY2VDb2RlJiwgSWRlbnRpZmllciogcGFyYW1ldGVycywg
c2l6ZV90IHBhcmFtZXRlckNvdW50KTsKKyAgICAgICAgdm9pZCBmaW5pc2hQYXJzaW5nKElkZW50
aWZpZXIqIHBhcmFtZXRlcnMsIHNpemVfdCBwYXJhbWV0ZXJDb3VudCk7CiAgICAgICAgIAogICAg
ICAgICBVU3RyaW5nIHRvU291cmNlU3RyaW5nKCkgY29uc3QgSlNDX0ZBU1RfQ0FMTCB7IHJldHVy
biBVU3RyaW5nKCJ7IikgKyBzb3VyY2UoKS50b1N0cmluZygpICsgVVN0cmluZygifSIpOyB9CiAK
QEAgLTIyOTYsNyArMjMwNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICBw
cm90ZWN0ZWQ6Ci0gICAgICAgIEZ1bmN0aW9uQm9keU5vZGUoSlNHbG9iYWxEYXRhKiwgU291cmNl
RWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBib29sIHVzZXNFdmFsLCBib29s
IG5lZWRzQ2xvc3VyZSwgYm9vbCB1c2VzQXJndW1lbnRzLCBpbnQgbnVtQ29uc3RhbnRzKSBKU0Nf
RkFTVF9DQUxMOworICAgICAgICBGdW5jdGlvbkJvZHlOb2RlKEpTR2xvYmFsRGF0YSosIFNvdXJj
ZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgY29uc3QgU291cmNlQ29kZSYs
IGJvb2wgdXNlc0V2YWwsIGJvb2wgbmVlZHNDbG9zdXJlLCBib29sIHVzZXNBcmd1bWVudHMsIGlu
dCBudW1Db25zdGFudHMpIEpTQ19GQVNUX0NBTEw7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2
b2lkIGdlbmVyYXRlQ29kZShTY29wZUNoYWluTm9kZSopIEpTQ19GQVNUX0NBTEw7CkluZGV4OiBX
ZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2tqcy9Db2xsZWN0b3JIZWFwSXRlcmF0b3IuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2tqcy9Db2xsZWN0b3JIZWFwSXRl
cmF0b3IuaAkocmV2aXNpb24gMzcxOTYpCShmcm9tIFdlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMv
a2pzL3VzdHJpbmcuaDozNzE5NikKKysrIFdlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMva2pzL0Nv
bGxlY3RvckhlYXBJdGVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEgQEAKKyNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS91c3RyaW5nLmg+CkluZGV4OiBXZWJDb3JlL0ZvcndhcmRpbmdI
ZWFkZXJzL2tqcy9Db2xsZWN0b3JIZWFwSXRlcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L0ZvcndhcmRpbmdIZWFkZXJzL2tqcy9Db2xsZWN0b3JIZWFwSXRlcmF0b3IuaAkocmV2aXNpb24g
MzcxOTYpCisrKyBXZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2tqcy9Db2xsZWN0b3JIZWFwSXRl
cmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMSArMSBAQAotI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL3VzdHJpbmcuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db2xsZWN0b3JIZWFwSXRl
cmF0b3IuaD4KSW5kZXg6IFdlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMva2pzL1BhcnNlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMva2pzL1BhcnNlci5oCShyZXZp
c2lvbiAzNzE5NikJKGZyb20gV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ranMvdXN0cmluZy5o
OjM3MTk2KQorKysgV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ranMvUGFyc2VyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSBAQAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL3VzdHJpbmcu
aD4KSW5kZXg6IFdlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMva2pzL1BhcnNlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMva2pzL1BhcnNlci5oCShyZXZpc2lvbiAz
NzE5NikKKysrIFdlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMva2pzL1BhcnNlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xICsxIEBACi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvdXN0cmluZy5oPgor
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1BhcnNlci5oPgpJbmRleDogV2ViQ29yZS9wYWdlL0lu
c3BlY3RvckNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9JbnNwZWN0
b3JDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMzcxOTYpCisrKyBXZWJDb3JlL3BhZ2UvSW5zcGVj
dG9yQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczLDYgKzczLDcgQEAKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9PcGFxdWVKU1N0cmluZy5oPgogI2luY2x1ZGUgPGtqcy9KU0xv
Y2suaD4KICNpbmNsdWRlIDxranMvdXN0cmluZy5oPgorI2luY2x1ZGUgPGtqcy9Db2xsZWN0b3JI
ZWFwSXRlcmF0b3IuaD4KICNpbmNsdWRlIDxwcm9maWxlci9Qcm9maWxlLmg+CiAjaW5jbHVkZSA8
cHJvZmlsZXIvUHJvZmlsZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpJbmRleDog
V2ViQ29yZS9wYWdlL0phdmFTY3JpcHREZWJ1Z1NlcnZlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wYWdlL0phdmFTY3JpcHREZWJ1Z1NlcnZlci5jcHAJKHJldmlzaW9uIDM3MTk2KQorKysg
V2ViQ29yZS9wYWdlL0phdmFTY3JpcHREZWJ1Z1NlcnZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQ0LDcgKzQ0LDkgQEAKICNpbmNsdWRlICJTY3JvbGxWaWV3LmgiCiAjaW5jbHVkZSAiV2lkZ2V0
LmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgPGtqcy9Db2xsZWN0
b3JIZWFwSXRlcmF0b3IuaD4KICNpbmNsdWRlIDxranMvRGVidWdnZXJDYWxsRnJhbWUuaD4KKyNp
bmNsdWRlIDxranMvUGFyc2VyLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNs
dWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KIApAQCAtNjcsNiArNjksNyBAQCBKYXZhU2NyaXB0RGVi
dWdTZXJ2ZXI6OkphdmFTY3JpcHREZWJ1Z1NlCiAgICAgLCBtX3BhdXNlZChmYWxzZSkKICAgICAs
IG1fZG9uZVByb2Nlc3NpbmdEZWJ1Z2dlckV2ZW50cyh0cnVlKQogICAgICwgbV9wYXVzZU9uQ2Fs
bEZyYW1lKDApCisgICAgLCBtX3JlY29tcGlsZVRpbWVyKHRoaXMsICZKYXZhU2NyaXB0RGVidWdT
ZXJ2ZXI6OnJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKQogewogfQogCkBAIC04MCw3ICs4Myw3IEBA
IEphdmFTY3JpcHREZWJ1Z1NlcnZlcjo6fkphdmFTY3JpcHREZWJ1Z1MKIHZvaWQgSmF2YVNjcmlw
dERlYnVnU2VydmVyOjphZGRMaXN0ZW5lcihKYXZhU2NyaXB0RGVidWdMaXN0ZW5lciogbGlzdGVu
ZXIpCiB7CiAgICAgaWYgKCFoYXNMaXN0ZW5lcnMoKSkKLSAgICAgICAgUGFnZTo6c2V0RGVidWdn
ZXJGb3JBbGxQYWdlcyh0aGlzKTsKKyAgICAgICAgd2lsbEFkZEZpcnN0TGlzdGVuZXIoKTsKIAog
ICAgIG1fbGlzdGVuZXJzLmFkZChsaXN0ZW5lcik7CiB9CkBAIC04OCwxMCArOTEsOCBAQCB2b2lk
IEphdmFTY3JpcHREZWJ1Z1NlcnZlcjo6YWRkTGlzdGVuZXIoCiB2b2lkIEphdmFTY3JpcHREZWJ1
Z1NlcnZlcjo6cmVtb3ZlTGlzdGVuZXIoSmF2YVNjcmlwdERlYnVnTGlzdGVuZXIqIGxpc3RlbmVy
KQogewogICAgIG1fbGlzdGVuZXJzLnJlbW92ZShsaXN0ZW5lcik7Ci0gICAgaWYgKCFoYXNMaXN0
ZW5lcnMoKSkgewotICAgICAgICBQYWdlOjpzZXREZWJ1Z2dlckZvckFsbFBhZ2VzKDApOwotICAg
ICAgICBtX2RvbmVQcm9jZXNzaW5nRGVidWdnZXJFdmVudHMgPSB0cnVlOwotICAgIH0KKyAgICBp
ZiAoIWhhc0xpc3RlbmVycygpKQorICAgICAgICBkaWRSZW1vdmVMYXN0TGlzdGVuZXIoKTsKIH0K
IAogdm9pZCBKYXZhU2NyaXB0RGVidWdTZXJ2ZXI6OmFkZExpc3RlbmVyKEphdmFTY3JpcHREZWJ1
Z0xpc3RlbmVyKiBsaXN0ZW5lciwgUGFnZSogcGFnZSkKQEAgLTk5LDcgKzEwMCw3IEBAIHZvaWQg
SmF2YVNjcmlwdERlYnVnU2VydmVyOjphZGRMaXN0ZW5lcigKICAgICBBU1NFUlRfQVJHKHBhZ2Us
IHBhZ2UpOwogCiAgICAgaWYgKCFoYXNMaXN0ZW5lcnMoKSkKLSAgICAgICAgUGFnZTo6c2V0RGVi
dWdnZXJGb3JBbGxQYWdlcyh0aGlzKTsKKyAgICAgICAgd2lsbEFkZEZpcnN0TGlzdGVuZXIoKTsK
IAogICAgIHBhaXI8UGFnZUxpc3RlbmVyc01hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1f
cGFnZUxpc3RlbmVyc01hcC5hZGQocGFnZSwgMCk7CiAgICAgaWYgKHJlc3VsdC5zZWNvbmQpCkBA
IC0xMTgsMTggKzExOSwxNCBAQCB2b2lkIEphdmFTY3JpcHREZWJ1Z1NlcnZlcjo6cmVtb3ZlTGlz
dGVuCiAgICAgICAgIHJldHVybjsKIAogICAgIExpc3RlbmVyU2V0KiBsaXN0ZW5lcnMgPSBpdC0+
c2Vjb25kOwotCiAgICAgbGlzdGVuZXJzLT5yZW1vdmUobGlzdGVuZXIpOwotCiAgICAgaWYgKGxp
c3RlbmVycy0+aXNFbXB0eSgpKSB7CiAgICAgICAgIG1fcGFnZUxpc3RlbmVyc01hcC5yZW1vdmUo
aXQpOwogICAgICAgICBkZWxldGUgbGlzdGVuZXJzOwogICAgIH0KIAotICAgIGlmICghaGFzTGlz
dGVuZXJzKCkpIHsKLSAgICAgICAgUGFnZTo6c2V0RGVidWdnZXJGb3JBbGxQYWdlcygwKTsKLSAg
ICAgICAgbV9kb25lUHJvY2Vzc2luZ0RlYnVnZ2VyRXZlbnRzID0gdHJ1ZTsKLSAgICB9CisgICAg
aWYgKCFoYXNMaXN0ZW5lcnMoKSkKKyAgICAgICAgZGlkUmVtb3ZlTGFzdExpc3RlbmVyKCk7CiB9
CiAKIHZvaWQgSmF2YVNjcmlwdERlYnVnU2VydmVyOjpwYWdlQ3JlYXRlZChQYWdlKiBwYWdlKQpA
QCAtNTIxLDQgKzUxOCw2MyBAQCB2b2lkIEphdmFTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlkUmVhY2hC
cmVhCiAgICAgcGF1c2VJZk5lZWRlZCh0b1BhZ2UoZGVidWdnZXJDYWxsRnJhbWUuZHluYW1pY0ds
b2JhbE9iamVjdCgpKSk7CiB9CiAKK3ZvaWQgSmF2YVNjcmlwdERlYnVnU2VydmVyOjpyZWNvbXBp
bGVBbGxKU0Z1bmN0aW9ucyhUaW1lcjxKYXZhU2NyaXB0RGVidWdTZXJ2ZXI+KikKK3sKKyAgICB0
eXBlZGVmIEhhc2hNYXA8UmVmUHRyPEZ1bmN0aW9uQm9keU5vZGU+LCBSZWZQdHI8RnVuY3Rpb25C
b2R5Tm9kZT4gPiBGdW5jdGlvbkJvZHlNYXA7CisgICAgdHlwZWRlZiBIYXNoU2V0PFJlZlB0cjxT
b3VyY2VQcm92aWRlcj4gPiBTb3VyY2VQcm92aWRlck1hcDsKKworICAgIEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSA9IEpTRE9NV2luZG93Ojpjb21tb25KU0dsb2JhbERhdGEoKTsKKyAgICBIZWFw
KiBoZWFwID0gZ2xvYmFsRGF0YS0+aGVhcDsKKworICAgIFZlY3RvcjxKU0Z1bmN0aW9uKj4gZnVu
Y3Rpb25zOworICAgIEhlYXA6Oml0ZXJhdG9yIGhlYXBFbmQgPSBoZWFwLT5wcmltYXJ5SGVhcEVu
ZCgpOworICAgIGZvciAoSGVhcDo6aXRlcmF0b3IgaXQgPSBoZWFwLT5wcmltYXJ5SGVhcEJlZ2lu
KCk7IGl0ICE9IGhlYXBFbmQ7ICsraXQpIHsKKyAgICAgICAgaWYgKCgqaXQpLT5pc09iamVjdCgm
SlNGdW5jdGlvbjo6aW5mbykpCisgICAgICAgICAgICBmdW5jdGlvbnMuYXBwZW5kKHN0YXRpY19j
YXN0PEpTRnVuY3Rpb24qPigqaXQpKTsKKyAgICB9CisKKyAgICBGdW5jdGlvbkJvZHlNYXAgZnVu
Y3Rpb25Cb2RpZXM7CisgICAgU291cmNlUHJvdmlkZXJNYXAgc291cmNlUHJvdmlkZXJzOworCisg
ICAgc2l6ZV90IHNpemUgPSBmdW5jdGlvbnMuc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gZnVuY3Rp
b25zW2ldOworICAgICAgICAKKyAgICAgICAgRnVuY3Rpb25Cb2R5Tm9kZSogb2xkQm9keSA9IGZ1
bmN0aW9uLT5tX2JvZHkuZ2V0KCk7CisgICAgICAgIHBhaXI8RnVuY3Rpb25Cb2R5TWFwOjppdGVy
YXRvciwgYm9vbD4gcmVzdWx0ID0gZnVuY3Rpb25Cb2RpZXMuYWRkKG9sZEJvZHksIDApOworICAg
ICAgICBpZiAoIXJlc3VsdC5zZWNvbmQpIHsKKyAgICAgICAgICAgIGZ1bmN0aW9uLT5tX2JvZHkg
PSByZXN1bHQuZmlyc3QtPnNlY29uZDsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9
CisKKyAgICAgICAgY29uc3QgU291cmNlQ29kZSYgc291cmNlQ29kZSA9IG9sZEJvZHktPnNvdXJj
ZSgpOworICAgICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBmdW5jdGlvbi0+c2NvcGUoKS5nbG9iYWxP
YmplY3QoKS0+Z2xvYmFsRXhlYygpOworICAgICAgICBSZWZQdHI8RnVuY3Rpb25Cb2R5Tm9kZT4g
bmV3Qm9keSA9IGdsb2JhbERhdGEtPnBhcnNlci0+cGFyc2U8RnVuY3Rpb25Cb2R5Tm9kZT4oZXhl
YywgMCwgc291cmNlQ29kZSk7CisgICAgICAgIEFTU0VSVChuZXdCb2R5KTsKKyAgICAgICAgc2l6
ZV90IHBhcmFtZXRlckNvdW50ID0gb2xkQm9keS0+cGFyYW1ldGVyQ291bnQoKTsKKyAgICAgICAg
bmV3Qm9keS0+ZmluaXNoUGFyc2luZyhvbGRCb2R5LT5yZWxlYXNlUGFyYW1ldGVycygpLCBwYXJh
bWV0ZXJDb3VudCk7CisgICAgICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kID0gbmV3Qm9keS5yZWxl
YXNlKCk7CisKKyAgICAgICAgaWYgKGhhc0xpc3RlbmVycygpKSB7CisgICAgICAgICAgICBTb3Vy
Y2VQcm92aWRlciogcHJvdmlkZXIgPSBzb3VyY2VDb2RlLnByb3ZpZGVyKCk7CisgICAgICAgICAg
ICBwYWlyPFNvdXJjZVByb3ZpZGVyTWFwOjppdGVyYXRvciwgYm9vbD4gaXQgPSBzb3VyY2VQcm92
aWRlcnMuYWRkKHByb3ZpZGVyKTsKKyAgICAgICAgICAgIGlmIChpdC5zZWNvbmQpCisgICAgICAg
ICAgICAgICAgc291cmNlUGFyc2VkKGV4ZWMsIFNvdXJjZUNvZGUocHJvdmlkZXIpLCAtMSwgMCk7
CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgSmF2YVNjcmlwdERlYnVnU2VydmVyOjp3aWxs
QWRkRmlyc3RMaXN0ZW5lcigpCit7CisgICAgUGFnZTo6c2V0RGVidWdnZXJGb3JBbGxQYWdlcyh0
aGlzKTsKKyAgICBtX3JlY29tcGlsZVRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKK30KKwordm9pZCBK
YXZhU2NyaXB0RGVidWdTZXJ2ZXI6OmRpZFJlbW92ZUxhc3RMaXN0ZW5lcigpCit7CisgICAgUGFn
ZTo6c2V0RGVidWdnZXJGb3JBbGxQYWdlcygwKTsKKyAgICBtX2RvbmVQcm9jZXNzaW5nRGVidWdn
ZXJFdmVudHMgPSB0cnVlOworICAgIG1fcmVjb21waWxlVGltZXIuc3RhcnRPbmVTaG90KDApOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3BhZ2UvSmF2YVNjcmlw
dERlYnVnU2VydmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0phdmFTY3JpcHREZWJ1
Z1NlcnZlci5oCShyZXZpc2lvbiAzNzE5NikKKysrIFdlYkNvcmUvcGFnZS9KYXZhU2NyaXB0RGVi
dWdTZXJ2ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CisjaW5jbHVkZSAiVGltZXIuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3Mg
RGVidWdnZXJDYWxsRnJhbWU7CkBAIC03Myw2ICs3NCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgdm9pZCBzdGVwT3ZlclN0YXRlbWVudCgpOwogICAgICAgICB2b2lkIHN0ZXBPdXRP
ZkZ1bmN0aW9uKCk7CiAKKyAgICAgICAgdm9pZCByZWNvbXBpbGVBbGxKU0Z1bmN0aW9ucyhUaW1l
cjxKYXZhU2NyaXB0RGVidWdTZXJ2ZXI+Kik7CisKICAgICAgICAgSmF2YVNjcmlwdENhbGxGcmFt
ZSogY3VycmVudENhbGxGcmFtZSgpOwogCiAgICAgICAgIHZvaWQgcGFnZUNyZWF0ZWQoUGFnZSop
OwpAQCAtMTAzLDYgKzEwNiw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVh
bCB2b2lkIHdpbGxFeGVjdXRlUHJvZ3JhbShjb25zdCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwg
aW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lbm8pOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlk
RXhlY3V0ZVByb2dyYW0oY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNv
dXJjZUlELCBpbnQgbGluZW5vKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlYWNoQnJlYWtw
b2ludChjb25zdCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGlu
dCBsaW5lbm8pOworICAgICAgICAKKyAgICAgICAgdm9pZCB3aWxsQWRkRmlyc3RMaXN0ZW5lcigp
OworICAgICAgICB2b2lkIGRpZFJlbW92ZUxhc3RMaXN0ZW5lcigpOwogCiAgICAgICAgIHR5cGVk
ZWYgSGFzaE1hcDxQYWdlKiwgTGlzdGVuZXJTZXQqPiBQYWdlTGlzdGVuZXJzTWFwOwogICAgICAg
ICBQYWdlTGlzdGVuZXJzTWFwIG1fcGFnZUxpc3RlbmVyc01hcDsKQEAgLTExNiw2ICsxMjIsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFJlZlB0cjxKYXZhU2NyaXB0Q2FsbEZyYW1l
PiBtX2N1cnJlbnRDYWxsRnJhbWU7CiAgICAgICAgIEhhc2hNYXA8UmVmUHRyPEZyYW1lPiwgUGF1
c2VkVGltZW91dHMqPiBtX3BhdXNlZFRpbWVvdXRzOwogICAgICAgICBIYXNoTWFwPGludHB0cl90
LCBIYXNoU2V0PHVuc2lnbmVkPio+IG1fYnJlYWtwb2ludHM7CisgICAgICAgIFRpbWVyPEphdmFT
Y3JpcHREZWJ1Z1NlcnZlcj4gbV9yZWNvbXBpbGVUaW1lcjsKICAgICB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3BhZ2UvUGFnZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwCShyZXZpc2lvbiAzNzE5NikKKysrIFdlYkNvcmUvcGFnZS9Q
YWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI0LDYgKzEyNCw3IEBAIFBhZ2U6OlBhZ2UoQ2hy
b21lQ2xpZW50KiBjaHJvbWVDbGllbnQsIEMKICAgICAsIG1fcGVuZGluZ0JlZm9yZVVubG9hZEV2
ZW50Q291bnQoMCkKICAgICAsIG1fY3VzdG9tSFRNTFRva2VuaXplclRpbWVEZWxheSgtMSkKICAg
ICAsIG1fY3VzdG9tSFRNTFRva2VuaXplckNodW5rU2l6ZSgtMSkKKyAgICAsIG1fdGltZXIodGhp
cywgJlBhZ2U6OmZpcmVkKQogewogICAgIGlmICghYWxsUGFnZXMpIHsKICAgICAgICAgYWxsUGFn
ZXMgPSBuZXcgSGFzaFNldDxQYWdlKj47CkBAIC0xNDIsNiArMTQzLDEyIEBAIFBhZ2U6OlBhZ2Uo
Q2hyb21lQ2xpZW50KiBjaHJvbWVDbGllbnQsIEMKICNlbmRpZgogfQogCit2b2lkIFBhZ2U6OmZp
cmVkKFRpbWVyPFBhZ2U+KikKK3sKKyAgICBKYXZhU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgp
LnJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKDApOworICAgIG1fdGltZXIuc3RhcnRPbmVTaG90KDgp
OworfQorCiBQYWdlOjp+UGFnZSgpCiB7CiAgICAgbV9tYWluRnJhbWUtPnNldFZpZXcoMCk7Cklu
ZGV4OiBXZWJDb3JlL3BhZ2UvUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9QYWdl
LmgJKHJldmlzaW9uIDM3MTk2KQorKysgV2ViQ29yZS9wYWdlL1BhZ2UuaAkod29ya2luZyBjb3B5
KQpAQCAtMjgsNiArMjgsNyBAQAogI2lmIFBMQVRGT1JNKE1BQykKICNpbmNsdWRlICJTY2hlZHVs
ZVBhaXIuaCIKICNlbmRpZgorI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hT
ZXQuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKQEAgLTIxOSw2ICsyMjAsOSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgZG91YmxlIG1fY3VzdG9tSFRNTFRva2VuaXplclRp
bWVEZWxheTsKICAgICAgICAgaW50IG1fY3VzdG9tSFRNTFRva2VuaXplckNodW5rU2l6ZTsKKyAg
ICAgICAgCisgICAgICAgIHZvaWQgZmlyZWQoVGltZXI8UGFnZT4qKTsKKyAgICAgICAgVGltZXI8
UGFnZT4gbV90aW1lcjsKIAogI2lmIEVOQUJMRShET01fU1RPUkFHRSkKICAgICAgICAgUmVmUHRy
PFNlc3Npb25TdG9yYWdlPiBtX3Nlc3Npb25TdG9yYWdlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>24228</attachid>
            <date>2008-10-09 01:45:17 -0700</date>
            <delta_ts>2008-10-15 13:30:06 -0700</delta_ts>
            <desc>patch, merged to ToT, with a couple small changes</desc>
            <filename>RecompilePatch.txt</filename>
            <type>text/plain</type>
            <size>41934</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAJKHJldmlzaW9uIDM3NDQ0KQorKysgSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCSh3b3JraW5nIGNvcHkpCkBAIC05NSw2ICs5
NSw3IEBAIF9fWk4zSlNDMTBJZGVudGlmaWVyMjRjaGVja1NhbWVJZGVudGlmaWUKIF9fWk4zSlND
MTBJZGVudGlmaWVyMjRjaGVja1NhbWVJZGVudGlmaWVyVGFibGVFUE5TXzlFeGVjU3RhdGVFUE5T
XzdVU3RyaW5nM1JlcEUgCiBfX1pOM0pTQzEwSWRlbnRpZmllcjNhZGRFUE5TXzlFeGVjU3RhdGVF
UEtjCiBfX1pOM0pTQzEwSWRlbnRpZmllcjVlcXVhbEVQS05TXzdVU3RyaW5nM1JlcEVQS2MKK19f
Wk4zSlNDMTBKU0Z1bmN0aW9uNGluZm9FCiBfX1pOM0pTQzEwdGhyb3dFcnJvckVQTlNfOUV4ZWNT
dGF0ZUVOU185RXJyb3JUeXBlRQogX19aTjNKU0MxMHRocm93RXJyb3JFUE5TXzlFeGVjU3RhdGVF
TlNfOUVycm9yVHlwZUVQS2MKIF9fWk4zSlNDMTB0aHJvd0Vycm9yRVBOU185RXhlY1N0YXRlRU5T
XzlFcnJvclR5cGVFUktOU183VVN0cmluZ0UKQEAgLTE1Miw2ICsxNTMsNyBAQCBfX1pOM0pTQzE0
SlNHbG9iYWxPYmplY3REMkV2CiBfX1pOM0pTQzE0SlNHbG9iYWxPYmplY3Rud0VtUE5TXzEySlNH
bG9iYWxEYXRhRQogX19aTjNKU0MxNGNvbnN0cnVjdEFycmF5RVBOU185RXhlY1N0YXRlRVJLTlNf
N0FyZ0xpc3RFCiBfX1pOM0pTQzE1SlNXcmFwcGVyT2JqZWN0NG1hcmtFdgorX19aTjNKU0MxNkZ1
bmN0aW9uQm9keU5vZGUxM2ZpbmlzaFBhcnNpbmdFUE5TXzEwSWRlbnRpZmllckVtCiBfX1pOM0pT
QzE2SW50ZXJuYWxGdW5jdGlvbjRpbmZvRQogX19aTjNKU0MxNkludGVybmFsRnVuY3Rpb25DMkVQ
TlNfMTJKU0dsb2JhbERhdGFFTjNXVEYxMFBhc3NSZWZQdHJJTlNfMTFTdHJ1Y3R1cmVJREVFRVJL
TlNfMTBJZGVudGlmaWVyRQogX19aTjNKU0MxNkpTVmFyaWFibGVPYmplY3QxNGRlbGV0ZVByb3Bl
cnR5RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRQpAQCAtMTY4LDcgKzE3MCw5IEBA
IF9fWk4zSlNDMjBjb25zdHJ1Y3RFbXB0eU9iamVjdEVQTlNfOUV4ZWMKIF9fWk4zSlNDMjNvYmpl
Y3RQcm90b0Z1bmNUb1N0cmluZ0VQTlNfOUV4ZWNTdGF0ZUVQTlNfOEpTT2JqZWN0RVBOU183SlNW
YWx1ZUVSS05TXzdBcmdMaXN0RQogX19aTjNKU0MyM3NldFVwU3RhdGljRnVuY3Rpb25TbG90RVBO
U185RXhlY1N0YXRlRVBLTlNfOUhhc2hFbnRyeUVQTlNfOEpTT2JqZWN0RVJLTlNfMTBJZGVudGlm
aWVyRVJOU18xMlByb3BlcnR5U2xvdEUKIF9fWk4zSlNDNEhlYXAxNGFsbG9jYXRlTnVtYmVyRW0K
K19fWk4zSlNDNEhlYXAxNHByaW1hcnlIZWFwRW5kRXYKIF9fWk4zSlNDNEhlYXAxNXJlY29yZEV4
dHJhQ29zdEVtCitfX1pOM0pTQzRIZWFwMTZwcmltYXJ5SGVhcEJlZ2luRXYKIF9fWk4zSlNDNEhl
YXAxN2dsb2JhbE9iamVjdENvdW50RXYKIF9fWk4zSlNDNEhlYXAyMHByb3RlY3RlZE9iamVjdENv
dW50RXYKIF9fWk4zSlNDNEhlYXAyNHNldEdDUHJvdGVjdE5lZWRzTG9ja2luZ0V2CkBAIC0yMDEs
NyArMjA1LDYgQEAgX19aTjNKU0M2SlNMb2NrNGxvY2tFYgogX19aTjNKU0M2SlNMb2NrNnVubG9j
a0ViCiBfX1pOM0pTQzZKU0xvY2s5bG9ja0NvdW50RXYKIF9fWk4zSlNDNkpTTG9ja0MxRVBOU185
RXhlY1N0YXRlRQotX19aTjNKU0M2UGFyc2VyNXBhcnNlRVBOU185RXhlY1N0YXRlRVBpUE5TXzdV
U3RyaW5nRQogX19aTjNKU0M2c3RydG9kRVBLY1BQYwogX19aTjNKU0M3QXJnTGlzdDEwc2xvd0Fw
cGVuZEVQTlNfN0pTVmFsdWVFCiBfX1pOM0pTQzdDU3RyaW5nRDFFdgpAQCAtMzUxLDMgKzM1NCw1
IEBAIF9fWlRWTjNKU0M4SlNPYmplY3RFCiBfX1pUVk4zSlNDOEpTU3RyaW5nRQogX2pzY29yZV9m
YXN0bWFsbG9jX2ludHJvc3BlY3Rpb24KIF9rSlNDbGFzc0RlZmluaXRpb25FbXB0eQorX19aTjNK
U0MxNkZ1bmN0aW9uQm9keU5vZGU2Y3JlYXRlRVBOU18xMkpTR2xvYmFsRGF0YUVQTlNfMTRTb3Vy
Y2VFbGVtZW50c0VQTjNXVEY2VmVjdG9ySVN0NHBhaXJJTlNfMTBJZGVudGlmaWVyRWpFTG0xNkVF
RVBOUzZfSU5TNV82UmVmUHRySU5TXzEyRnVuY0RlY2xOb2RlRUVFTG0xNkVFRVJLTlNfMTBTb3Vy
Y2VDb2RlRWppCitfX1pOM0pTQzZQYXJzZXI1cGFyc2VFUE5TXzEySlNHbG9iYWxEYXRhRVBpUE5T
XzdVU3RyaW5nRQpJbmRleDogSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAzNzQ0NCkKKysrIEphdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtp
bmcgY29weSkKQEAgLTY5LDYgKzY5LDcgQEAKIAkJMTRCRDVBMzAwQTNFOTFGNjAwQkFGNTlDIC8q
IEpTQ29udGV4dFJlZi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxNEJENUEyOTBBM0U5MUY2MDBCQUY1OUMgLyogSlNDb250ZXh0UmVmLmNwcCAqLzsg
fTsKIAkJMTRCRDVBMzIwQTNFOTFGNjAwQkFGNTlDIC8qIEpTVmFsdWVSZWYuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRCRDVBMkIwQTNFOTFGNjAw
QkFGNTlDIC8qIEpTVmFsdWVSZWYuY3BwICovOyB9OwogCQkxNEUwRkYxMjBEQkFBRUQwMDAwN0Mw
QUIgLyogTWFjaGluZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxNDlCMTVFNzBEODFGOTg2MDA5Q0I4QzcgLyogTWFjaGluZS5jcHAgKi87IHNldHRp
bmdzID0ge0NPTVBJTEVSX0ZMQUdTID0gIi1mbm8tdHJlZS1wcmUiOyB9OyB9OworCQkxNEYzNDg4
RjBFOTVFRjhBMDAzNjQ4QkMgLyogQ29sbGVjdG9ySGVhcEl0ZXJhdG9yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEYzNDg4RTBFOTVFRjhBMDAzNjQ4
QkMgLyogQ29sbGVjdG9ySGVhcEl0ZXJhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNUQ1MzcyNkYwRTFDNTQ4ODAwMjFFNTQ5IC8qIFRyYWNp
bmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVENTM3
MjZFMEUxQzU0ODgwMDIxRTU0OSAvKiBUcmFjaW5nLmggKi87IH07CiAJCTVENUQ4QUI2MEUwRDBB
NzIwMEY5QzY5MiAvKiBqc2MgaW4gQ29weSBJbnRvIEZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5MzJGNUJFMTA4MjJBMUM3MDA3MzY5NzUgLyoganNjICovOyB9
OwogCQk1RDVEOEFEMTBFMEQwRUJFMDBGOUM2OTIgLyogbGliZWRpdC5keWxpYiBpbiBGcmFtZXdv
cmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVENUQ4QUQwMEUwRDBFQkUw
MEY5QzY5MiAvKiBsaWJlZGl0LmR5bGliICovOyB9OwpAQCAtNTE1LDYgKzUxNiw3IEBACiAJCTE0
REE4MThGMEQ5OUZEMjAwMEIwQTRGQiAvKiBKU0FjdGl2YXRpb24uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBY3RpdmF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMTRERTBENjgwRDAyNDMxNDAwQUFDQ0EyIC8qIEpTR2xvYmFsT2JqZWN0
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTR2xvYmFsT2JqZWN0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTRGMjUyNTYwRDA4REQ4RDAwNEVD
RkZGIC8qIEpTVmFyaWFibGVPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNWYXJpYWJsZU9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNEYz
NDg4RTBFOTVFRjhBMDAzNjQ4QkMgLyogQ29sbGVjdG9ySGVhcEl0ZXJhdG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbGxlY3RvckhlYXBJdGVyYXRvci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkxQzkwNTE0MjBCQTlFOEE3MDA4MUU5RDAgLyogVmVyc2lv
bi54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBWZXJzaW9uLnhjY29u
ZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzkwNTE0MzBCQTlFOEE3MDA4MUU5
RDAgLyogSmF2YVNjcmlwdENvcmUueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBw
YXRoID0gSmF2YVNjcmlwdENvcmUueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFDOTA1MTQ0MEJBOUU4QTcwMDgxRTlEMCAvKiBEZWJ1Z1JlbGVhc2UueGNjb25maWcgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gRGVidWdSZWxlYXNlLnhjY29uZmlnOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTI5Niw2ICsxMjk4LDcgQEAKIAkJCQlGNjkyQTg4
NjAyNTU1OTdEMDFGRjYwRjcgLyogdXN0cmluZy5oICovLAogCQkJCTE0N0I4M0FBMEU2REI4Qzkw
MDQ3NzVBNCAvKiBCYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplci5oICovLAogCQkJCTE0N0I4NDYy
MEU2REU2QjEwMDQ3NzVBNCAvKiBQdXRQcm9wZXJ0eVNsb3QuaCAqLywKKwkJCQkxNEYzNDg4RTBF
OTVFRjhBMDAzNjQ4QkMgLyogQ29sbGVjdG9ySGVhcEl0ZXJhdG9yLmggKi8sCiAJCQkpOwogCQkJ
cGF0aCA9IGtqczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xNjAwLDYgKzE2MDMs
NyBAQAogCQkJCTdFMkFERDhFMEU3OUFBRDUwMEQ1MEM1MSAvKiBDaGFyYWN0ZXJDbGFzc0NvbnN0
cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDBEMTdENzBFOEFENEE5MDAwQ0QxN0QgLyog
SlNCYXNlUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODY5RUJDQjcwRThDNkQ0QTAwODcy
MkNDIC8qIFJlc3VsdFR5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTE0RjM0ODhGMEU5NUVGOEEw
MDM2NDhCQyAvKiBDb2xsZWN0b3JIZWFwSXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJKTsK
IAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDog
SmF2YVNjcmlwdENvcmUvVk0vQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENv
cmUvVk0vQ29kZUJsb2NrLmgJKHJldmlzaW9uIDM3NDQ0KQorKysgSmF2YVNjcmlwdENvcmUvVk0v
Q29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2MSw3ICsxNjEsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgICAgICAgICBVU3RyaW5nIGVyck1zZzsKICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICBTb3VyY2VDb2RlIHNvdXJjZSA9IG1ha2VTb3VyY2UoZXZhbFNvdXJj
ZSk7Ci0gICAgICAgICAgICAgICAgZXZhbE5vZGUgPSBleGVjLT5nbG9iYWxEYXRhKCkucGFyc2Vy
LT5wYXJzZTxFdmFsTm9kZT4oZXhlYywgc291cmNlLCAmZXJyTGluZSwgJmVyck1zZyk7CisgICAg
ICAgICAgICAgICAgZXZhbE5vZGUgPSBleGVjLT5nbG9iYWxEYXRhKCkucGFyc2VyLT5wYXJzZTxF
dmFsTm9kZT4oZXhlYywgZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpLT5kZWJ1Z2dlcigpLCBz
b3VyY2UsICZlcnJMaW5lLCAmZXJyTXNnKTsKICAgICAgICAgICAgICAgICBpZiAoZXZhbE5vZGUp
IHsKICAgICAgICAgICAgICAgICAgICAgaWYgKGV2YWxTb3VyY2Uuc2l6ZSgpIDwgbWF4Q2FjaGVh
YmxlU291cmNlTGVuZ3RoICYmICgqc2NvcGVDaGFpbi0+YmVnaW4oKSktPmlzVmFyaWFibGVPYmpl
Y3QoKSAmJiBjYWNoZU1hcC5zaXplKCkgPCBtYXhDYWNoZUVudHJpZXMpCiAgICAgICAgICAgICAg
ICAgICAgICAgICBjYWNoZU1hcC5zZXQoZXZhbFNvdXJjZS5yZXAoKSwgZXZhbE5vZGUpOwpJbmRl
eDogSmF2YVNjcmlwdENvcmUva2pzL0NvbGxlY3RvckhlYXBJdGVyYXRvci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIEphdmFTY3JpcHRDb3JlL2tqcy9Db2xsZWN0b3JIZWFwSXRlcmF0b3IuaAkocmV2aXNpb24g
MCkKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9Db2xsZWN0b3JIZWFwSXRlcmF0b3IuaAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw4NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiY29sbGVjdG9yLmgi
CisKK25hbWVzcGFjZSBKU0MgeworCisgICAgdGVtcGxhdGUgPEhlYXBUeXBlIGhlYXBUeXBlPiBj
bGFzcyBDb2xsZWN0b3JIZWFwSXRlcmF0b3IgeworICAgIHB1YmxpYzoKKyAgICAgICAgQ29sbGVj
dG9ySGVhcEl0ZXJhdG9yKENvbGxlY3RvckJsb2NrKiogYmxvY2ssIENvbGxlY3RvckJsb2NrKiog
ZW5kQmxvY2spOworCisgICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBDb2xsZWN0b3JIZWFw
SXRlcmF0b3I8aGVhcFR5cGU+JiBvdGhlcikgeyByZXR1cm4gbV9ibG9jayAhPSBvdGhlci5tX2Js
b2NrIHx8IG1fY2VsbCAhPSBvdGhlci5tX2NlbGw7IH0KKyAgICAgICAgQ29sbGVjdG9ySGVhcEl0
ZXJhdG9yPGhlYXBUeXBlPiYgb3BlcmF0b3IrKygpOworICAgICAgICBKU0NlbGwqIG9wZXJhdG9y
KigpIGNvbnN0OworICAgIAorICAgIHByaXZhdGU6CisgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUg
SGVhcENvbnN0YW50czxoZWFwVHlwZT46OkJsb2NrIEJsb2NrOworICAgICAgICB0eXBlZGVmIHR5
cGVuYW1lIEhlYXBDb25zdGFudHM8aGVhcFR5cGU+OjpDZWxsIENlbGw7CisKKyAgICAgICAgQmxv
Y2sqKiBtX2Jsb2NrOworICAgICAgICBCbG9jayoqIG1fZW5kQmxvY2s7CisgICAgICAgIENlbGwq
IG1fY2VsbDsKKyAgICAgICAgQ2VsbCogbV9lbmRDZWxsOworICAgIH07CisKKyAgICB0ZW1wbGF0
ZSA8SGVhcFR5cGUgaGVhcFR5cGU+IAorICAgIENvbGxlY3RvckhlYXBJdGVyYXRvcjxoZWFwVHlw
ZT46OkNvbGxlY3RvckhlYXBJdGVyYXRvcihDb2xsZWN0b3JCbG9jayoqIGJsb2NrLCBDb2xsZWN0
b3JCbG9jayoqIGVuZEJsb2NrKQorICAgICAgICA6IG1fYmxvY2socmVpbnRlcnByZXRfY2FzdDxC
bG9jayoqPihibG9jaykpCisgICAgICAgICwgbV9lbmRCbG9jayhyZWludGVycHJldF9jYXN0PEJs
b2NrKio+KGVuZEJsb2NrKSkKKyAgICAgICAgLCBtX2NlbGwobV9ibG9jayA9PSBtX2VuZEJsb2Nr
ID8gMCA6ICgqbV9ibG9jayktPmNlbGxzKQorICAgICAgICAsIG1fZW5kQ2VsbChtX2Jsb2NrID09
IG1fZW5kQmxvY2sgPyAwIDogKCptX2Jsb2NrKS0+Y2VsbHMgKyBIZWFwQ29uc3RhbnRzPGhlYXBU
eXBlPjo6Y2VsbHNQZXJCbG9jaykKKyAgICB7CisgICAgICAgIGlmIChtX2NlbGwgJiYgbV9jZWxs
LT51LmZyZWVDZWxsLnplcm9JZkZyZWUgPT0gMCkKKyAgICAgICAgICAgICsrKnRoaXM7CisgICAg
fQorCisgICAgdGVtcGxhdGUgPEhlYXBUeXBlIGhlYXBUeXBlPiAKKyAgICBDb2xsZWN0b3JIZWFw
SXRlcmF0b3I8aGVhcFR5cGU+JiBDb2xsZWN0b3JIZWFwSXRlcmF0b3I8aGVhcFR5cGU+OjpvcGVy
YXRvcisrKCkKKyAgICB7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIGZvciAoKyttX2NlbGw7
IG1fY2VsbCAhPSBtX2VuZENlbGw7ICsrbV9jZWxsKQorICAgICAgICAgICAgICAgIGlmIChtX2Nl
bGwtPnUuZnJlZUNlbGwuemVyb0lmRnJlZSAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiAqdGhpczsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICgrK21fYmxv
Y2sgIT0gbV9lbmRCbG9jaykgeworICAgICAgICAgICAgICAgIG1fY2VsbCA9ICgqbV9ibG9jaykt
PmNlbGxzOworICAgICAgICAgICAgICAgIG1fZW5kQ2VsbCA9ICgqbV9ibG9jayktPmNlbGxzICsg
SGVhcENvbnN0YW50czxoZWFwVHlwZT46OmNlbGxzUGVyQmxvY2s7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0gd2hpbGUobV9ibG9jayAhPSBtX2VuZEJsb2NrKTsKKworICAgICAgICBtX2NlbGwg
PSAwOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgdGVtcGxhdGUgPEhlYXBU
eXBlIGhlYXBUeXBlPiAKKyAgICBKU0NlbGwqIENvbGxlY3RvckhlYXBJdGVyYXRvcjxoZWFwVHlw
ZT46Om9wZXJhdG9yKigpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxKU0NlbGwqPihtX2NlbGwpOworICAgIH0KKworfSAvLyBuYW1lc3BhY2UgSlNDCgpQcm9w
ZXJ0eSBjaGFuZ2VzIG9uOiBKYXZhU2NyaXB0Q29yZS9ranMvQ29sbGVjdG9ySGVhcEl0ZXJhdG9y
LmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXwpOYW1lOiBzdm46ZW9sLXN0eWxlCiAgICsgbmF0aXZlCgpJbmRleDogSmF2
YVNjcmlwdENvcmUva2pzL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZh
U2NyaXB0Q29yZS9ranMvRGVidWdnZXJDYWxsRnJhbWUuY3BwCShyZXZpc2lvbiAzNzQ0NCkKKysr
IEphdmFTY3JpcHRDb3JlL2tqcy9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTcyLDcgKzcyLDcgQEAgSlNWYWx1ZSogRGVidWdnZXJDYWxsRnJhbWU6OmV2YWx1YXRlKGNv
bgogICAgIGludCBlcnJMaW5lOwogICAgIFVTdHJpbmcgZXJyTXNnOwogICAgIFNvdXJjZUNvZGUg
c291cmNlID0gbWFrZVNvdXJjZShzY3JpcHQpOwotICAgIFJlZlB0cjxFdmFsTm9kZT4gZXZhbE5v
ZGUgPSBtX2NhbGxGcmFtZS0+c2NvcGVDaGFpbigpLT5nbG9iYWxEYXRhLT5wYXJzZXItPnBhcnNl
PEV2YWxOb2RlPihtX2NhbGxGcmFtZSwgc291cmNlLCAmZXJyTGluZSwgJmVyck1zZyk7CisgICAg
UmVmUHRyPEV2YWxOb2RlPiBldmFsTm9kZSA9IG1fY2FsbEZyYW1lLT5zY29wZUNoYWluKCktPmds
b2JhbERhdGEtPnBhcnNlci0+cGFyc2U8RXZhbE5vZGU+KG1fY2FsbEZyYW1lLCBtX2NhbGxGcmFt
ZS0+ZHluYW1pY0dsb2JhbE9iamVjdCgpLT5kZWJ1Z2dlcigpLCBzb3VyY2UsICZlcnJMaW5lLCAm
ZXJyTXNnKTsKICAgICBpZiAoIWV2YWxOb2RlKQogICAgICAgICByZXR1cm4gRXJyb3I6OmNyZWF0
ZShtX2NhbGxGcmFtZSwgU3ludGF4RXJyb3IsIGVyck1zZywgZXJyTGluZSwgc291cmNlLnByb3Zp
ZGVyKCktPmFzSUQoKSwgc291cmNlLnByb3ZpZGVyKCktPnVybCgpKTsKIApJbmRleDogSmF2YVNj
cmlwdENvcmUva2pzL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL2tqcy9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMzc0NDQpCisr
KyBKYXZhU2NyaXB0Q29yZS9ranMvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTg3LDcgKzg3LDcgQEAgSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0
ZSogZQogICAgIGludCBlcnJMaW5lOwogICAgIFVTdHJpbmcgZXJyTXNnOwogICAgIFNvdXJjZUNv
ZGUgc291cmNlID0gbWFrZVNvdXJjZShib2R5LCBzb3VyY2VVUkwsIGxpbmVOdW1iZXIpOwotICAg
IFJlZlB0cjxGdW5jdGlvbkJvZHlOb2RlPiBmdW5jdGlvbkJvZHkgPSBleGVjLT5nbG9iYWxEYXRh
KCkucGFyc2VyLT5wYXJzZTxGdW5jdGlvbkJvZHlOb2RlPihleGVjLCBzb3VyY2UsICZlcnJMaW5l
LCAmZXJyTXNnKTsKKyAgICBSZWZQdHI8RnVuY3Rpb25Cb2R5Tm9kZT4gZnVuY3Rpb25Cb2R5ID0g
ZXhlYy0+Z2xvYmFsRGF0YSgpLnBhcnNlci0+cGFyc2U8RnVuY3Rpb25Cb2R5Tm9kZT4oZXhlYywg
ZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpLT5kZWJ1Z2dlcigpLCBzb3VyY2UsICZlcnJMaW5l
LCAmZXJyTXNnKTsKIAogICAgIC8vIE5vIHByb2dyYW0gbm9kZSA9PSBzeW50YXggZXJyb3IgLSB0
aHJvdyBhIHN5bnRheCBlcnJvcgogICAgIGlmICghZnVuY3Rpb25Cb2R5KQpAQCAtMTI1LDcgKzEy
NSw3IEBAIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqIGUKICAgICAgICAg
cmV0dXJuIHRocm93RXJyb3IoZXhlYywgU3ludGF4RXJyb3IsICJTeW50YXggZXJyb3IgaW4gcGFy
YW1ldGVyIGxpc3QiKTsKICAgICB9CiAgICAgc2l6ZV90IGNvdW50ID0gcGFyYW1ldGVycy5zaXpl
KCk7Ci0gICAgZnVuY3Rpb25Cb2R5LT5maW5pc2hQYXJzaW5nKHNvdXJjZSwgcGFyYW1ldGVycy5y
ZWxlYXNlQnVmZmVyKCksIGNvdW50KTsKKyAgICBmdW5jdGlvbkJvZHktPmZpbmlzaFBhcnNpbmco
cGFyYW1ldGVycy5yZWxlYXNlQnVmZmVyKCksIGNvdW50KTsKIAogICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CiAgICAgU2NvcGVD
aGFpbiBzY29wZUNoYWluKGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCks
IGV4ZWMtPmdsb2JhbFRoaXNWYWx1ZSgpKTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9KU0Z1
bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvSlNGdW5jdGlvbi5j
cHAJKHJldmlzaW9uIDM3NDQ0KQorKysgSmF2YVNjcmlwdENvcmUva2pzL0pTRnVuY3Rpb24uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSwxMiBAQCBKU0Z1bmN0aW9uOjpKU0Z1bmN0aW9u
KEV4ZWNTdGF0ZSogZXhlYywgCiAgICAgLCBtX2JvZHkoYm9keSkKICAgICAsIG1fc2NvcGVDaGFp
bihzY29wZUNoYWluTm9kZSkKIHsKKyNpZm5kZWYgTkRFQlVHCisgICAgaWYgKCFleGVjLT5nbG9i
YWxEYXRhKCkucGFyc2VyLT5wYXJzZTxGdW5jdGlvbkJvZHlOb2RlPihleGVjLCAwLCBib2R5LT5z
b3VyY2UoKSkpIHsKKyAgICAgICAgcHJpbnRmKCJGQUlMRUQgVE8gUkUtUEFSU0U6ICVzXG4iLCBi
b2R5LT5zb3VyY2UoKS50b1N0cmluZygpLmFzY2lpKCkpOworICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICB9CisjZW5kaWYKIH0KIAogdm9pZCBKU0Z1bmN0aW9uOjptYXJrKCkKSW5k
ZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAko
cmV2aXNpb24gMzc0NDQpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvSlNHbG9iYWxPYmplY3RGdW5j
dGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODYsNyArMjg2LDcgQEAgSlNWYWx1ZSogZ2xv
YmFsRnVuY0V2YWwoRXhlY1N0YXRlKiBleGVjLAogICAgIFVTdHJpbmcgZXJyTXNnOwogCiAgICAg
U291cmNlQ29kZSBzb3VyY2UgPSBtYWtlU291cmNlKHMpOwotICAgIFJlZlB0cjxFdmFsTm9kZT4g
ZXZhbE5vZGUgPSBleGVjLT5nbG9iYWxEYXRhKCkucGFyc2VyLT5wYXJzZTxFdmFsTm9kZT4oZXhl
Yywgc291cmNlLCAmZXJyTGluZSwgJmVyck1zZyk7CisgICAgUmVmUHRyPEV2YWxOb2RlPiBldmFs
Tm9kZSA9IGV4ZWMtPmdsb2JhbERhdGEoKS5wYXJzZXItPnBhcnNlPEV2YWxOb2RlPihleGVjLCBl
eGVjLT5keW5hbWljR2xvYmFsT2JqZWN0KCktPmRlYnVnZ2VyKCksIHNvdXJjZSwgJmVyckxpbmUs
ICZlcnJNc2cpOwogCiAgICAgaWYgKCFldmFsTm9kZSkKICAgICAgICAgcmV0dXJuIHRocm93RXJy
b3IoZXhlYywgU3ludGF4RXJyb3IsIGVyck1zZywgZXJyTGluZSwgc291cmNlLnByb3ZpZGVyKCkt
PmFzSUQoKSwgTlVMTCk7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvUGFyc2VyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvUGFyc2VyLmNwcAkocmV2aXNpb24gMzc0NDQp
CisrKyBKYXZhU2NyaXB0Q29yZS9ranMvUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIs
NyArMzIsNyBAQCBleHRlcm4gaW50IGtqc3l5cGFyc2Uodm9pZCopOwogCiBuYW1lc3BhY2UgSlND
IHsKIAotdm9pZCBQYXJzZXI6OnBhcnNlKEV4ZWNTdGF0ZSogZXhlYywgaW50KiBlcnJMaW5lLCBV
U3RyaW5nKiBlcnJNc2cpCit2b2lkIFBhcnNlcjo6cGFyc2UoSlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhLCBpbnQqIGVyckxpbmUsIFVTdHJpbmcqIGVyck1zZykKIHsKICAgICBBU1NFUlQoIW1fc291
cmNlRWxlbWVudHMpOwogCkBAIC00NywyMyArNDcsMjAgQEAgdm9pZCBQYXJzZXI6OnBhcnNlKEV4
ZWNTdGF0ZSogZXhlYywgaW50KgogICAgICplcnJMaW5lID0gLTE7CiAgICAgKmVyck1zZyA9IDA7
CiAKLSAgICBMZXhlciYgbGV4ZXIgPSAqZXhlYy0+Z2xvYmFsRGF0YSgpLmxleGVyOworICAgIExl
eGVyJiBsZXhlciA9ICpnbG9iYWxEYXRhLT5sZXhlcjsKICAgICBsZXhlci5zZXRDb2RlKCptX3Nv
dXJjZSk7CiAKLSAgICBpbnQgcGFyc2VFcnJvciA9IGtqc3l5cGFyc2UoJmV4ZWMtPmdsb2JhbERh
dGEoKSk7CisgICAgaW50IHBhcnNlRXJyb3IgPSBranN5eXBhcnNlKGdsb2JhbERhdGEpOwogICAg
IGJvb2wgbGV4RXJyb3IgPSBsZXhlci5zYXdFcnJvcigpOwogICAgIGxleGVyLmNsZWFyKCk7CiAK
LSAgICBQYXJzZXJSZWZDb3VudGVkOjpkZWxldGVOZXdPYmplY3RzKCZleGVjLT5nbG9iYWxEYXRh
KCkpOworICAgIFBhcnNlclJlZkNvdW50ZWQ6OmRlbGV0ZU5ld09iamVjdHMoZ2xvYmFsRGF0YSk7
CiAKICAgICBpZiAocGFyc2VFcnJvciB8fCBsZXhFcnJvcikgewogICAgICAgICAqZXJyTGluZSA9
IGxleGVyLmxpbmVObygpOwogICAgICAgICAqZXJyTXNnID0gIlBhcnNlIGVycm9yIjsKICAgICAg
ICAgbV9zb3VyY2VFbGVtZW50cy5jbGVhcigpOwogICAgIH0KLQotICAgIGlmIChEZWJ1Z2dlciog
ZGVidWdnZXIgPSBleGVjLT5keW5hbWljR2xvYmFsT2JqZWN0KCktPmRlYnVnZ2VyKCkpCi0gICAg
ICAgIGRlYnVnZ2VyLT5zb3VyY2VQYXJzZWQoZXhlYywgKm1fc291cmNlLCAqZXJyTGluZSwgKmVy
ck1zZyk7CiB9CiAKIHZvaWQgUGFyc2VyOjpkaWRGaW5pc2hQYXJzaW5nKFNvdXJjZUVsZW1lbnRz
KiBzb3VyY2VFbGVtZW50cywgUGFyc2VyUmVmQ291bnRlZERhdGE8RGVjbGFyYXRpb25TdGFja3M6
OlZhclN0YWNrPiogdmFyU3RhY2ssIApJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL1BhcnNlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9QYXJzZXIuaAkocmV2aXNpb24gMzc0
NDQpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvUGFyc2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIz
LDYgKzIzLDcgQEAKICNpZm5kZWYgUGFyc2VyX2gKICNkZWZpbmUgUGFyc2VyX2gKIAorI2luY2x1
ZGUgImRlYnVnZ2VyLmgiCiAjaW5jbHVkZSAiU291cmNlUHJvdmlkZXIuaCIKICNpbmNsdWRlICJu
b2Rlcy5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC0zMiw2ICszMyw3IEBACiAKIG5h
bWVzcGFjZSBKU0MgewogCisgICAgY2xhc3MgRGVidWdnZXI7CiAgICAgY2xhc3MgRnVuY3Rpb25C
b2R5Tm9kZTsKICAgICBjbGFzcyBQcm9ncmFtTm9kZTsKICAgICBjbGFzcyBVU3RyaW5nOwpAQCAt
NDgsMTYgKzUwLDEzIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgUGFyc2VyIDogTm9u
Y29weWFibGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFBhcnNlZE5v
ZGU+IFBhc3NSZWZQdHI8UGFyc2VkTm9kZT4gcGFyc2UoRXhlY1N0YXRlKiwgUGFzc1JlZlB0cjxT
b3VyY2VQcm92aWRlcj4sIGludCogZXJyTGluZSA9IDAsIFVTdHJpbmcqIGVyck1zZyA9IDApOwot
ICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgUGFyc2VkTm9kZT4gUGFzc1JlZlB0cjxQYXJzZWROb2Rl
PiBwYXJzZShFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgaW50KiBlcnJMaW5lID0gMCwg
VVN0cmluZyogZXJyTXNnID0gMCk7CisgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBQYXJzZWROb2Rl
PiBQYXNzUmVmUHRyPFBhcnNlZE5vZGU+IHBhcnNlKEV4ZWNTdGF0ZSosIERlYnVnZ2VyKiwgY29u
c3QgU291cmNlQ29kZSYsIGludCogZXJyTGluZSA9IDAsIFVTdHJpbmcqIGVyck1zZyA9IDApOwog
CiAgICAgICAgIHZvaWQgZGlkRmluaXNoUGFyc2luZyhTb3VyY2VFbGVtZW50cyosIFBhcnNlclJl
ZkNvdW50ZWREYXRhPERlY2xhcmF0aW9uU3RhY2tzOjpWYXJTdGFjaz4qLCAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFBhcnNlclJlZkNvdW50ZWREYXRhPERlY2xhcmF0aW9uU3RhY2tz
OjpGdW5jdGlvblN0YWNrPiosIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IGxhc3RMaW5lLCBp
bnQgbnVtQ29uc3RhbnRzKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBK
U0dsb2JhbERhdGE7Ci0KLSAgICAgICAgdm9pZCBwYXJzZShFeGVjU3RhdGUqLCBpbnQqIGVyckxp
bmUsIFVTdHJpbmcqIGVyck1zZyk7CisgICAgICAgIHZvaWQgcGFyc2UoSlNHbG9iYWxEYXRhKiwg
aW50KiBlcnJMaW5lLCBVU3RyaW5nKiBlcnJNc2cpOwogCiAgICAgICAgIGNvbnN0IFNvdXJjZUNv
ZGUqIG1fc291cmNlOwogICAgICAgICBSZWZQdHI8U291cmNlRWxlbWVudHM+IG1fc291cmNlRWxl
bWVudHM7CkBAIC02OCwxMCArNjcsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGludCBt
X251bUNvbnN0YW50czsKICAgICB9OwogCi0gICAgdGVtcGxhdGUgPGNsYXNzIFBhcnNlZE5vZGU+
IFBhc3NSZWZQdHI8UGFyc2VkTm9kZT4gUGFyc2VyOjpwYXJzZShFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgaW50KiBlcnJMaW5lLCBVU3RyaW5nKiBlcnJNc2cpCisg
ICAgdGVtcGxhdGUgPGNsYXNzIFBhcnNlZE5vZGU+IFBhc3NSZWZQdHI8UGFyc2VkTm9kZT4gUGFy
c2VyOjpwYXJzZShFeGVjU3RhdGUqIGV4ZWMsIERlYnVnZ2VyKiBkZWJ1Z2dlciwgY29uc3QgU291
cmNlQ29kZSYgc291cmNlLCBpbnQqIGVyckxpbmUsIFVTdHJpbmcqIGVyck1zZykKICAgICB7CiAg
ICAgICAgIG1fc291cmNlID0gJnNvdXJjZTsKLSAgICAgICAgcGFyc2UoZXhlYywgZXJyTGluZSwg
ZXJyTXNnKTsKKyAgICAgICAgcGFyc2UoJmV4ZWMtPmdsb2JhbERhdGEoKSwgZXJyTGluZSwgZXJy
TXNnKTsKICAgICAgICAgUmVmUHRyPFBhcnNlZE5vZGU+IHJlc3VsdDsKICAgICAgICAgaWYgKG1f
c291cmNlRWxlbWVudHMpIHsKICAgICAgICAgICAgIHJlc3VsdCA9IFBhcnNlZE5vZGU6OmNyZWF0
ZSgmZXhlYy0+Z2xvYmFsRGF0YSgpLApAQCAtODgsNiArODcsOSBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgbV9zb3VyY2VFbGVtZW50cyA9IDA7CiAgICAgICAgIG1fdmFyRGVjbGFyYXRpb25z
ID0gMDsKICAgICAgICAgbV9mdW5jRGVjbGFyYXRpb25zID0gMDsKKworICAgICAgICBpZiAoZGVi
dWdnZXIpCisgICAgICAgICAgICBkZWJ1Z2dlci0+c291cmNlUGFyc2VkKGV4ZWMsIHNvdXJjZSwg
KmVyckxpbmUsICplcnJNc2cpOwogICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKICAg
ICB9CiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9TaGVsbC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
SmF2YVNjcmlwdENvcmUva2pzL1NoZWxsLmNwcAkocmV2aXNpb24gMzc0NDQpCisrKyBKYXZhU2Ny
aXB0Q29yZS9ranMvU2hlbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDUsNyArMzA1LDcgQEAg
c3RhdGljIGJvb2wgcHJldHR5UHJpbnRTY3JpcHQoRXhlY1N0YXRlKgogewogICAgIGludCBlcnJM
aW5lID0gMDsKICAgICBVU3RyaW5nIGVyck1zZzsKLSAgICBSZWZQdHI8UHJvZ3JhbU5vZGU+IHBy
b2dyYW1Ob2RlID0gZXhlYy0+Z2xvYmFsRGF0YSgpLnBhcnNlci0+cGFyc2U8UHJvZ3JhbU5vZGU+
KGV4ZWMsIG1ha2VTb3VyY2Uoc2NyaXB0LmRhdGEoKSwgZmlsZU5hbWUpLCAmZXJyTGluZSwgJmVy
ck1zZyk7CisgICAgUmVmUHRyPFByb2dyYW1Ob2RlPiBwcm9ncmFtTm9kZSA9IGV4ZWMtPmdsb2Jh
bERhdGEoKS5wYXJzZXItPnBhcnNlPFByb2dyYW1Ob2RlPihleGVjLCBleGVjLT5keW5hbWljR2xv
YmFsT2JqZWN0KCktPmRlYnVnZ2VyKCksIG1ha2VTb3VyY2Uoc2NyaXB0LmRhdGEoKSwgZmlsZU5h
bWUpLCAmZXJyTGluZSwgJmVyck1zZyk7CiAgICAgaWYgKCFwcm9ncmFtTm9kZSkgewogICAgICAg
ICBmcHJpbnRmKHN0ZGVyciwgIiVzOiVkOiAlcy5cbiIsIGZpbGVOYW1lLlVURjhTdHJpbmcoKS5j
X3N0cigpLCBlcnJMaW5lLCBlcnJNc2cuVVRGOFN0cmluZygpLmNfc3RyKCkpOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvU291cmNlUmFuZ2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvU291cmNlUmFuZ2UuaAkocmV2aXNpb24gMzc0
NDQpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvU291cmNlUmFuZ2UuaAkod29ya2luZyBjb3B5KQpA
QCAtNjgsNiArNjgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBtX3By
b3ZpZGVyLT5nZXRSYW5nZShtX3N0YXJ0Q2hhciwgbV9lbmRDaGFyKTsKICAgICAgICAgfQogICAg
ICAgICAKKyAgICAgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhbV9wcm92aWRlcjsg
fQogICAgICAgICBTb3VyY2VQcm92aWRlciogcHJvdmlkZXIoKSBjb25zdCB7IHJldHVybiBtX3By
b3ZpZGVyLmdldCgpOyB9CiAgICAgICAgIGludCBmaXJzdExpbmUoKSBjb25zdCB7IHJldHVybiBt
X2ZpcnN0TGluZTsgfQogICAgICAgICBpbnQgc3RhcnRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBt
X3N0YXJ0Q2hhcjsgfQpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL2NvbGxlY3Rvci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL2NvbGxlY3Rvci5jcHAJKHJldmlzaW9uIDM3
NDQ0KQorKysgSmF2YVNjcmlwdENvcmUva2pzL2NvbGxlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJjb2xsZWN0b3IuaCIKIAogI2luY2x1ZGUgIkFy
Z0xpc3QuaCIKKyNpbmNsdWRlICJDb2xsZWN0b3JIZWFwSXRlcmF0b3IuaCIKICNpbmNsdWRlICJF
eGVjU3RhdGUuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTTG9j
ay5oIgpAQCAtMTgxLDcgKzE4Miw3IEBAIHZvaWQgSGVhcDo6ZGVzdHJveSgpCiAgICAgbV9nbG9i
YWxEYXRhID0gMDsKIH0KIAotdGVtcGxhdGUgPEhlYXA6OkhlYXBUeXBlIGhlYXBUeXBlPgordGVt
cGxhdGUgPEhlYXBUeXBlIGhlYXBUeXBlPgogc3RhdGljIE5FVkVSX0lOTElORSBDb2xsZWN0b3JC
bG9jayogYWxsb2NhdGVCbG9jaygpCiB7CiAjaWYgUExBVEZPUk0oREFSV0lOKQpAQCAtMjY1LDI1
ICsyNjYsNyBAQCB2b2lkIEhlYXA6OnJlY29yZEV4dHJhQ29zdChzaXplX3QgY29zdCkKICAgICBw
cmltYXJ5SGVhcC5leHRyYUNvc3QgKz0gY29zdDsKIH0KIAotdGVtcGxhdGUgPEhlYXA6OkhlYXBU
eXBlIGhlYXBUeXBlPiBzdHJ1Y3QgSGVhcENvbnN0YW50czsKLQotdGVtcGxhdGUgPD4gc3RydWN0
IEhlYXBDb25zdGFudHM8SGVhcDo6UHJpbWFyeUhlYXA+IHsKLSAgICBzdGF0aWMgY29uc3Qgc2l6
ZV90IGNlbGxTaXplID0gQ0VMTF9TSVpFOwotICAgIHN0YXRpYyBjb25zdCBzaXplX3QgY2VsbHNQ
ZXJCbG9jayA9IENFTExTX1BFUl9CTE9DSzsKLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGJpdG1h
cFNoaWZ0ID0gMDsKLSAgICB0eXBlZGVmIENvbGxlY3RvckNlbGwgQ2VsbDsKLSAgICB0eXBlZGVm
IENvbGxlY3RvckJsb2NrIEJsb2NrOwotfTsKLQotdGVtcGxhdGUgPD4gc3RydWN0IEhlYXBDb25z
dGFudHM8SGVhcDo6TnVtYmVySGVhcD4gewotICAgIHN0YXRpYyBjb25zdCBzaXplX3QgY2VsbFNp
emUgPSBTTUFMTF9DRUxMX1NJWkU7Ci0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBjZWxsc1BlckJs
b2NrID0gU01BTExfQ0VMTFNfUEVSX0JMT0NLOwotICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYml0
bWFwU2hpZnQgPSAxOwotICAgIHR5cGVkZWYgU21hbGxDb2xsZWN0b3JDZWxsIENlbGw7Ci0gICAg
dHlwZWRlZiBTbWFsbENlbGxDb2xsZWN0b3JCbG9jayBCbG9jazsKLX07Ci0KLXRlbXBsYXRlIDxI
ZWFwOjpIZWFwVHlwZSBoZWFwVHlwZT4gQUxXQVlTX0lOTElORSB2b2lkKiBIZWFwOjpoZWFwQWxs
b2NhdGUoc2l6ZV90IHMpCit0ZW1wbGF0ZSA8SGVhcFR5cGUgaGVhcFR5cGU+IEFMV0FZU19JTkxJ
TkUgdm9pZCogSGVhcDo6aGVhcEFsbG9jYXRlKHNpemVfdCBzKQogewogICAgIHR5cGVkZWYgdHlw
ZW5hbWUgSGVhcENvbnN0YW50czxoZWFwVHlwZT46OkJsb2NrIEJsb2NrOwogICAgIHR5cGVkZWYg
dHlwZW5hbWUgSGVhcENvbnN0YW50czxoZWFwVHlwZT46OkNlbGwgQ2VsbDsKQEAgLTg1OSwxMyAr
ODQyLDEzIEBAIHZvaWQgSGVhcDo6bWFya1Byb3RlY3RlZE9iamVjdHMoKQogICAgICAgICBtX3By
b3RlY3RlZFZhbHVlc011dGV4LT51bmxvY2soKTsKIH0KIAotdGVtcGxhdGUgPEhlYXA6OkhlYXBU
eXBlIGhlYXBUeXBlPiBzaXplX3QgSGVhcDo6c3dlZXAoKQordGVtcGxhdGUgPEhlYXBUeXBlIGhl
YXBUeXBlPiBzaXplX3QgSGVhcDo6c3dlZXAoKQogewogICAgIHR5cGVkZWYgdHlwZW5hbWUgSGVh
cENvbnN0YW50czxoZWFwVHlwZT46OkJsb2NrIEJsb2NrOwogICAgIHR5cGVkZWYgdHlwZW5hbWUg
SGVhcENvbnN0YW50czxoZWFwVHlwZT46OkNlbGwgQ2VsbDsKIAogICAgIC8vIFNXRUVQOiBkZWxl
dGUgZXZlcnl0aGluZyB3aXRoIGEgemVybyByZWZjb3VudCAoZ2FyYmFnZSkgYW5kIHVubWFyayBl
dmVyeXRoaW5nIGVsc2UKLSAgICBDb2xsZWN0b3JIZWFwJiBoZWFwID0gaGVhcFR5cGUgPT0gSGVh
cDo6UHJpbWFyeUhlYXAgPyBwcmltYXJ5SGVhcCA6IG51bWJlckhlYXA7CisgICAgQ29sbGVjdG9y
SGVhcCYgaGVhcCA9IGhlYXBUeXBlID09IFByaW1hcnlIZWFwID8gcHJpbWFyeUhlYXAgOiBudW1i
ZXJIZWFwOwogICAgIAogICAgIHNpemVfdCBlbXB0eUJsb2NrcyA9IDA7CiAgICAgc2l6ZV90IG51
bUxpdmVPYmplY3RzID0gaGVhcC5udW1MaXZlT2JqZWN0czsKQEAgLTg4Miw3ICs4NjUsNyBAQCB0
ZW1wbGF0ZSA8SGVhcDo6SGVhcFR5cGUgaGVhcFR5cGU+IHNpemVfCiAgICAgICAgICAgICAgICAg
aWYgKCFjdXJCbG9jay0+bWFya2VkLmdldChpID4+IEhlYXBDb25zdGFudHM8aGVhcFR5cGU+Ojpi
aXRtYXBTaGlmdCkpIHsKICAgICAgICAgICAgICAgICAgICAgQ2VsbCogY2VsbCA9IGN1ckJsb2Nr
LT5jZWxscyArIGk7CiAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBp
ZiAoaGVhcFR5cGUgIT0gSGVhcDo6TnVtYmVySGVhcCkgeworICAgICAgICAgICAgICAgICAgICBp
ZiAoaGVhcFR5cGUgIT0gTnVtYmVySGVhcCkgewogICAgICAgICAgICAgICAgICAgICAgICAgSlND
ZWxsKiBpbXAgPSByZWludGVycHJldF9jYXN0PEpTQ2VsbCo+KGNlbGwpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gc3BlY2lhbCBjYXNlIGZvciBhbGxvY2F0ZWQgYnV0IHVuaW5pdGlhbGl6
ZWQgb2JqZWN0CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoV2UgZG9uJ3QgbmVlZCB0aGlz
IGNoZWNrIGVhcmxpZXIgYmVjYXVzZSBub3RoaW5nIHByaW9yIHRoaXMgcG9pbnQgCkBAIC05MTAs
NyArODkzLDcgQEAgdGVtcGxhdGUgPEhlYXA6OkhlYXBUeXBlIGhlYXBUeXBlPiBzaXplXwogICAg
ICAgICAgICAgICAgICAgICArK21pbmltdW1DZWxsc1RvUHJvY2VzczsKICAgICAgICAgICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBpZiAoIWN1ckJsb2NrLT5tYXJrZWQuZ2V0
KGkgPj4gSGVhcENvbnN0YW50czxoZWFwVHlwZT46OmJpdG1hcFNoaWZ0KSkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKGhlYXBUeXBlICE9IEhlYXA6Ok51bWJlckhlYXApIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChoZWFwVHlwZSAhPSBOdW1iZXJIZWFwKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgSlNDZWxsKiBpbXAgPSByZWludGVycHJldF9jYXN0PEpTQ2Vs
bCo+KGNlbGwpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcC0+fkpTQ2VsbCgpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMTA4Niw0ICsxMDY5LDE0IEBAIGJvb2wgSGVh
cDo6aXNCdXN5KCkKICAgICByZXR1cm4gKHByaW1hcnlIZWFwLm9wZXJhdGlvbkluUHJvZ3Jlc3Mg
IT0gTm9PcGVyYXRpb24pIHwgKG51bWJlckhlYXAub3BlcmF0aW9uSW5Qcm9ncmVzcyAhPSBOb09w
ZXJhdGlvbik7CiB9CiAKK0hlYXA6Oml0ZXJhdG9yIEhlYXA6OnByaW1hcnlIZWFwQmVnaW4oKQor
eworICAgIHJldHVybiBpdGVyYXRvcihwcmltYXJ5SGVhcC5ibG9ja3MsIHByaW1hcnlIZWFwLmJs
b2NrcyArIHByaW1hcnlIZWFwLnVzZWRCbG9ja3MpOworfQorCitIZWFwOjppdGVyYXRvciBIZWFw
OjpwcmltYXJ5SGVhcEVuZCgpCit7CisgICAgcmV0dXJuIGl0ZXJhdG9yKHByaW1hcnlIZWFwLmJs
b2NrcyArIHByaW1hcnlIZWFwLnVzZWRCbG9ja3MsIHByaW1hcnlIZWFwLmJsb2NrcyArIHByaW1h
cnlIZWFwLnVzZWRCbG9ja3MpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IEphdmFT
Y3JpcHRDb3JlL2tqcy9jb2xsZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9r
anMvY29sbGVjdG9yLmgJKHJldmlzaW9uIDM3NDQ0KQorKysgSmF2YVNjcmlwdENvcmUva2pzL2Nv
bGxlY3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw5IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgIGNsYXNzIEpTVmFsdWU7CiAKICAgICBlbnVtIE9wZXJhdGlvbkluUHJvZ3Jlc3MgeyBO
b09wZXJhdGlvbiwgQWxsb2NhdGlvbiwgQ29sbGVjdGlvbiB9OworICAgIGVudW0gSGVhcFR5cGUg
eyBQcmltYXJ5SGVhcCwgTnVtYmVySGVhcCB9OworCisgICAgdGVtcGxhdGUgPEhlYXBUeXBlPiBj
bGFzcyBDb2xsZWN0b3JIZWFwSXRlcmF0b3I7CiAKICAgICBzdHJ1Y3QgQ29sbGVjdG9ySGVhcCB7
CiAgICAgICAgIENvbGxlY3RvckJsb2NrKiogYmxvY2tzOwpAQCAtNjIsNyArNjUsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICBjbGFzcyBIZWFwIDogTm9uY29weWFibGUgewogICAgIHB1YmxpYzoK
ICAgICAgICAgY2xhc3MgVGhyZWFkOwotICAgICAgICBlbnVtIEhlYXBUeXBlIHsgUHJpbWFyeUhl
YXAsIE51bWJlckhlYXAgfTsKKyAgICAgICAgdHlwZWRlZiBDb2xsZWN0b3JIZWFwSXRlcmF0b3I8
UHJpbWFyeUhlYXA+IGl0ZXJhdG9yOwogCiAgICAgICAgIHZvaWQgZGVzdHJveSgpOwogCkBAIC0x
MDgsMTAgKzExMSwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEoKSBjb25zdCB7IHJldHVybiBtX2dsb2JhbERhdGE7IH0KICAgICAgICAgc3Rh
dGljIGJvb2wgaXNOdW1iZXIoSlNDZWxsKik7CisgICAgICAgIAorICAgICAgICAvLyBJdGVyYXRv
cnMgZm9yIHRoZSBvYmplY3QgaGVhcC4KKyAgICAgICAgaXRlcmF0b3IgcHJpbWFyeUhlYXBCZWdp
bigpOworICAgICAgICBpdGVyYXRvciBwcmltYXJ5SGVhcEVuZCgpOwogCiAgICAgcHJpdmF0ZToK
LSAgICAgICAgdGVtcGxhdGUgPEhlYXA6OkhlYXBUeXBlIGhlYXBUeXBlPiB2b2lkKiBoZWFwQWxs
b2NhdGUoc2l6ZV90KTsKLSAgICAgICAgdGVtcGxhdGUgPEhlYXA6OkhlYXBUeXBlIGhlYXBUeXBl
PiBzaXplX3Qgc3dlZXAoKTsKKyAgICAgICAgdGVtcGxhdGUgPEhlYXBUeXBlIGhlYXBUeXBlPiB2
b2lkKiBoZWFwQWxsb2NhdGUoc2l6ZV90KTsKKyAgICAgICAgdGVtcGxhdGUgPEhlYXBUeXBlIGhl
YXBUeXBlPiBzaXplX3Qgc3dlZXAoKTsKICAgICAgICAgc3RhdGljIGNvbnN0IENvbGxlY3RvckJs
b2NrKiBjZWxsQmxvY2soY29uc3QgSlNDZWxsKik7CiAgICAgICAgIHN0YXRpYyBDb2xsZWN0b3JC
bG9jayogY2VsbEJsb2NrKEpTQ2VsbCopOwogICAgICAgICBzdGF0aWMgc2l6ZV90IGNlbGxPZmZz
ZXQoY29uc3QgSlNDZWxsKik7CkBAIC0yMDYsNyArMjEzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIENvbGxlY3RvckNlbGwqIGZyZWVMaXN0OwogICAgICAgICBDb2xsZWN0b3JCaXRtYXAg
bWFya2VkOwogICAgICAgICBIZWFwKiBoZWFwOwotICAgICAgICBIZWFwOjpIZWFwVHlwZSB0eXBl
OworICAgICAgICBIZWFwVHlwZSB0eXBlOwogICAgIH07CiAKICAgICBjbGFzcyBTbWFsbENlbGxD
b2xsZWN0b3JCbG9jayB7CkBAIC0yMTYsOSArMjIzLDI3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBTbWFsbENvbGxlY3RvckNlbGwqIGZyZWVMaXN0OwogICAgICAgICBDb2xsZWN0b3JCaXRt
YXAgbWFya2VkOwogICAgICAgICBIZWFwKiBoZWFwOwotICAgICAgICBIZWFwOjpIZWFwVHlwZSB0
eXBlOworICAgICAgICBIZWFwVHlwZSB0eXBlOwogICAgIH07CiAgICAgCisgICAgdGVtcGxhdGUg
PEhlYXBUeXBlIGhlYXBUeXBlPiBzdHJ1Y3QgSGVhcENvbnN0YW50czsKKworICAgIHRlbXBsYXRl
IDw+IHN0cnVjdCBIZWFwQ29uc3RhbnRzPFByaW1hcnlIZWFwPiB7CisgICAgICAgIHN0YXRpYyBj
b25zdCBzaXplX3QgY2VsbFNpemUgPSBDRUxMX1NJWkU7CisgICAgICAgIHN0YXRpYyBjb25zdCBz
aXplX3QgY2VsbHNQZXJCbG9jayA9IENFTExTX1BFUl9CTE9DSzsKKyAgICAgICAgc3RhdGljIGNv
bnN0IHNpemVfdCBiaXRtYXBTaGlmdCA9IDA7CisgICAgICAgIHR5cGVkZWYgQ29sbGVjdG9yQ2Vs
bCBDZWxsOworICAgICAgICB0eXBlZGVmIENvbGxlY3RvckJsb2NrIEJsb2NrOworICAgIH07CisK
KyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGVhcENvbnN0YW50czxOdW1iZXJIZWFwPiB7CisgICAg
ICAgIHN0YXRpYyBjb25zdCBzaXplX3QgY2VsbFNpemUgPSBTTUFMTF9DRUxMX1NJWkU7CisgICAg
ICAgIHN0YXRpYyBjb25zdCBzaXplX3QgY2VsbHNQZXJCbG9jayA9IFNNQUxMX0NFTExTX1BFUl9C
TE9DSzsKKyAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBiaXRtYXBTaGlmdCA9IDE7CisgICAg
ICAgIHR5cGVkZWYgU21hbGxDb2xsZWN0b3JDZWxsIENlbGw7CisgICAgICAgIHR5cGVkZWYgU21h
bGxDZWxsQ29sbGVjdG9yQmxvY2sgQmxvY2s7CisgICAgfTsKKwogICAgIGlubGluZSBib29sIEhl
YXA6OmlzTnVtYmVyKEpTQ2VsbCogY2VsbCkKICAgICB7CiAgICAgICAgIENvbGxlY3RvckJsb2Nr
KiBibG9jayA9IEhlYXA6OmNlbGxCbG9jayhjZWxsKTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tq
cy9pbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL2ludGVy
cHJldGVyLmNwcAkocmV2aXNpb24gMzc0NDQpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvaW50ZXJw
cmV0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIENvbXBsZXRpb24gSW50
ZXJwcmV0ZXI6OmNoZWNrU3ludGF4KEV4ZWMKICAgICBpbnQgZXJyTGluZTsKICAgICBVU3RyaW5n
IGVyck1zZzsKIAotICAgIFJlZlB0cjxQcm9ncmFtTm9kZT4gcHJvZ05vZGUgPSBleGVjLT5nbG9i
YWxEYXRhKCkucGFyc2VyLT5wYXJzZTxQcm9ncmFtTm9kZT4oZXhlYywgc291cmNlLCAmZXJyTGlu
ZSwgJmVyck1zZyk7CisgICAgUmVmUHRyPFByb2dyYW1Ob2RlPiBwcm9nTm9kZSA9IGV4ZWMtPmds
b2JhbERhdGEoKS5wYXJzZXItPnBhcnNlPFByb2dyYW1Ob2RlPihleGVjLCBleGVjLT5keW5hbWlj
R2xvYmFsT2JqZWN0KCktPmRlYnVnZ2VyKCksIHNvdXJjZSwgJmVyckxpbmUsICZlcnJNc2cpOwog
ICAgIGlmICghcHJvZ05vZGUpCiAgICAgICAgIHJldHVybiBDb21wbGV0aW9uKFRocm93LCBFcnJv
cjo6Y3JlYXRlKGV4ZWMsIFN5bnRheEVycm9yLCBlcnJNc2csIGVyckxpbmUsIHNvdXJjZS5wcm92
aWRlcigpLT5hc0lEKCksIHNvdXJjZS5wcm92aWRlcigpLT51cmwoKSkpOwogICAgIHJldHVybiBD
b21wbGV0aW9uKE5vcm1hbCk7CkBAIC01OCw3ICs1OCw3IEBAIENvbXBsZXRpb24gSW50ZXJwcmV0
ZXI6OmV2YWx1YXRlKEV4ZWNTdGEKICAgICAKICAgICBpbnQgZXJyTGluZTsKICAgICBVU3RyaW5n
IGVyck1zZzsKLSAgICBSZWZQdHI8UHJvZ3JhbU5vZGU+IHByb2dyYW1Ob2RlID0gZXhlYy0+Z2xv
YmFsRGF0YSgpLnBhcnNlci0+cGFyc2U8UHJvZ3JhbU5vZGU+KGV4ZWMsIHNvdXJjZSwgJmVyckxp
bmUsICZlcnJNc2cpOworICAgIFJlZlB0cjxQcm9ncmFtTm9kZT4gcHJvZ3JhbU5vZGUgPSBleGVj
LT5nbG9iYWxEYXRhKCkucGFyc2VyLT5wYXJzZTxQcm9ncmFtTm9kZT4oZXhlYywgZXhlYy0+ZHlu
YW1pY0dsb2JhbE9iamVjdCgpLT5kZWJ1Z2dlcigpLCBzb3VyY2UsICZlcnJMaW5lLCAmZXJyTXNn
KTsKIAogICAgIGlmICghcHJvZ3JhbU5vZGUpCiAgICAgICAgIHJldHVybiBDb21wbGV0aW9uKFRo
cm93LCBFcnJvcjo6Y3JlYXRlKGV4ZWMsIFN5bnRheEVycm9yLCBlcnJNc2csIGVyckxpbmUsIHNv
dXJjZS5wcm92aWRlcigpLT5hc0lEKCksIHNvdXJjZS5wcm92aWRlcigpLT51cmwoKSkpOwpJbmRl
eDogSmF2YVNjcmlwdENvcmUva2pzL25vZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9ranMvbm9kZXMuY3BwCShyZXZpc2lvbiAzNzQ0NCkKKysrIEphdmFTY3JpcHRDb3JlL2tq
cy9ub2Rlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3NjMsOSArMTc2MywxMCBAQCBFdmFsTm9k
ZSogRXZhbE5vZGU6OmNyZWF0ZShKU0dsb2JhbERhdGEqCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSBGdW5jdGlvbkJvZHlOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAKLUZ1bmN0aW9uQm9keU5vZGU6OkZ1bmN0aW9uQm9keU5vZGUoSlNHbG9iYWxEYXRhKiBn
bG9iYWxEYXRhLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywg
RnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1D
b25zdGFudHMpCi0gICAgOiBTY29wZU5vZGUoZ2xvYmFsRGF0YSwgU291cmNlQ29kZSgpLCBjaGls
ZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgZmVhdHVyZXMsIG51bUNvbnN0YW50cykKK0Z1bmN0
aW9uQm9keU5vZGU6OkZ1bmN0aW9uQm9keU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBT
b3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFj
ayogZnVuY1N0YWNrLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBDb2RlRmVhdHVyZXMg
ZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpCisgICAgOiBTY29wZU5vZGUoZ2xvYmFsRGF0YSwg
c291cmNlQ29kZSwgY2hpbGRyZW4sIHZhclN0YWNrLCBmdW5jU3RhY2ssIGZlYXR1cmVzLCBudW1D
b25zdGFudHMpCiAgICAgLCBtX3BhcmFtZXRlcnMoMCkKKyAgICAsIG1fcGFyYW1ldGVyQ291bnQo
MCkKICAgICAsIG1fcmVmQ291bnQoMCkKIHsKIH0KQEAgLTE3ODIsMTIgKzE3ODMsMTQgQEAgdm9p
ZCBGdW5jdGlvbkJvZHlOb2RlOjpmaW5pc2hQYXJzaW5nKGNvbgogICAgIGZvciAoUGFyYW1ldGVy
Tm9kZSogcGFyYW1ldGVyID0gZmlyc3RQYXJhbWV0ZXI7IHBhcmFtZXRlcjsgcGFyYW1ldGVyID0g
cGFyYW1ldGVyLT5uZXh0UGFyYW0oKSkKICAgICAgICAgcGFyYW1ldGVycy5hcHBlbmQocGFyYW1l
dGVyLT5pZGVudCgpKTsKICAgICBzaXplX3QgY291bnQgPSBwYXJhbWV0ZXJzLnNpemUoKTsKLSAg
ICBmaW5pc2hQYXJzaW5nKHNvdXJjZSwgcGFyYW1ldGVycy5yZWxlYXNlQnVmZmVyKCksIGNvdW50
KTsKKworICAgIHNldFNvdXJjZShzb3VyY2UpOworICAgIGZpbmlzaFBhcnNpbmcocGFyYW1ldGVy
cy5yZWxlYXNlQnVmZmVyKCksIGNvdW50KTsKIH0KIAotdm9pZCBGdW5jdGlvbkJvZHlOb2RlOjpm
aW5pc2hQYXJzaW5nKGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSWRlbnRpZmllciogcGFyYW1l
dGVycywgc2l6ZV90IHBhcmFtZXRlckNvdW50KQordm9pZCBGdW5jdGlvbkJvZHlOb2RlOjpmaW5p
c2hQYXJzaW5nKElkZW50aWZpZXIqIHBhcmFtZXRlcnMsIHNpemVfdCBwYXJhbWV0ZXJDb3VudCkK
IHsKLSAgICBzZXRTb3VyY2Uoc291cmNlKTsKKyAgICBBU1NFUlQoIXNvdXJjZSgpLmlzTnVsbCgp
KTsKICAgICBtX3BhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzOwogICAgIG1fcGFyYW1ldGVyQ291bnQg
PSBwYXJhbWV0ZXJDb3VudDsKIH0KQEAgLTE4MDAsMTIgKzE4MDMsMTIgQEAgdm9pZCBGdW5jdGlv
bkJvZHlOb2RlOjptYXJrKCkKIAogRnVuY3Rpb25Cb2R5Tm9kZSogRnVuY3Rpb25Cb2R5Tm9kZTo6
Y3JlYXRlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVu
LCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgQ29kZUZlYXR1
cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQogewotICAgIHJldHVybiBuZXcgRnVuY3Rp
b25Cb2R5Tm9kZShnbG9iYWxEYXRhLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgZmVh
dHVyZXMsIG51bUNvbnN0YW50cyk7CisgICAgcmV0dXJuIG5ldyBGdW5jdGlvbkJvZHlOb2RlKGds
b2JhbERhdGEsIGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCBTb3VyY2VDb2RlKCksIGZl
YXR1cmVzLCBudW1Db25zdGFudHMpOwogfQogCi1GdW5jdGlvbkJvZHlOb2RlKiBGdW5jdGlvbkJv
ZHlOb2RlOjpjcmVhdGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBTb3VyY2VFbGVtZW50cyog
Y2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBj
b25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRz
KQorRnVuY3Rpb25Cb2R5Tm9kZSogRnVuY3Rpb25Cb2R5Tm9kZTo6Y3JlYXRlKEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3Rh
Y2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgY29uc3QgU291cmNlQ29kZSYgc291cmNlQ29k
ZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQogewotICAgIHJldHVy
biBuZXcgRnVuY3Rpb25Cb2R5Tm9kZShnbG9iYWxEYXRhLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1
bmNTdGFjaywgZmVhdHVyZXMsIG51bUNvbnN0YW50cyk7CisgICAgcmV0dXJuIG5ldyBGdW5jdGlv
bkJvZHlOb2RlKGdsb2JhbERhdGEsIGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCBzb3Vy
Y2VDb2RlLCBmZWF0dXJlcywgbnVtQ29uc3RhbnRzKTsKIH0KIAogdm9pZCBGdW5jdGlvbkJvZHlO
b2RlOjpnZW5lcmF0ZUNvZGUoU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW5Ob2RlKQpJbmRleDog
SmF2YVNjcmlwdENvcmUva2pzL25vZGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUv
a2pzL25vZGVzLmgJKHJldmlzaW9uIDM3NDQ0KQorKysgSmF2YVNjcmlwdENvcmUva2pzL25vZGVz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIxNzQsNyArMjE3NCw2IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBKU0Nf
RkFTVF9DQUxMOwogICAgICAgICAKLSAgICAgICAgdm9pZCBzZXRTb3VyY2UoY29uc3QgU291cmNl
Q29kZSYgc291cmNlKSB7IG1fc291cmNlID0gc291cmNlOyB9CiAgICAgICAgIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlOyB9CiAgICAgICAgIGNvbnN0
IFVTdHJpbmcmIHNvdXJjZVVSTCgpIGNvbnN0IEpTQ19GQVNUX0NBTEwgeyByZXR1cm4gbV9zb3Vy
Y2UucHJvdmlkZXIoKS0+dXJsKCk7IH0KICAgICAgICAgaW50cHRyX3Qgc291cmNlSUQoKSBjb25z
dCB7IHJldHVybiBtX3NvdXJjZS5wcm92aWRlcigpLT5hc0lEKCk7IH0KQEAgLTIxOTYsNiArMjE5
NSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICBwcm90ZWN0ZWQ6CisgICAg
ICAgIHZvaWQgc2V0U291cmNlKGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkgeyBtX3NvdXJjZSA9
IHNvdXJjZTsgfQorCiAgICAgICAgIFZhclN0YWNrIG1fdmFyU3RhY2s7CiAgICAgICAgIEZ1bmN0
aW9uU3RhY2sgbV9mdW5jdGlvblN0YWNrOwogCkBAIC0yMjU1LDggKzIyNTYsMTUgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIH5GdW5jdGlvbkJvZHlOb2RlKCk7CiAKICAgICAgICAgY29uc3Qg
SWRlbnRpZmllciogcGFyYW1ldGVycygpIGNvbnN0IEpTQ19GQVNUX0NBTEwgeyByZXR1cm4gbV9w
YXJhbWV0ZXJzOyB9Ci0gICAgICAgIHNpemVfdCBwYXJhbWV0ZXJDb3VudCgpIHsgcmV0dXJuIG1f
cGFyYW1ldGVyQ291bnQ7IH0KKyAgICAgICAgc2l6ZV90IHBhcmFtZXRlckNvdW50KCkgY29uc3Qg
eyByZXR1cm4gbV9wYXJhbWV0ZXJDb3VudDsgfQogICAgICAgICBVU3RyaW5nIHBhcmFtU3RyaW5n
KCkgY29uc3QgSlNDX0ZBU1RfQ0FMTDsKKyAgICAgICAgSWRlbnRpZmllciogcmVsZWFzZVBhcmFt
ZXRlcnMoKQorICAgICAgICB7CisgICAgICAgICAgICBJZGVudGlmaWVyKiBwYXJhbWV0ZXJzID0g
bV9wYXJhbWV0ZXJzOworICAgICAgICAgICAgbV9wYXJhbWV0ZXJzID0gMDsKKyAgICAgICAgICAg
IG1fcGFyYW1ldGVyQ291bnQgPSAwOworICAgICAgICAgICAgcmV0dXJuIHBhcmFtZXRlcnM7Cisg
ICAgICAgIH0KIAogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRDb2RlKENvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIEpTQ19GQVNUX0NBTEw7CiAgICAgICAgIApAQCAtMjI3
OSw3ICsyMjg3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgbWFyaygpOwogCiAg
ICAgICAgIHZvaWQgZmluaXNoUGFyc2luZyhjb25zdCBTb3VyY2VDb2RlJiwgUGFyYW1ldGVyTm9k
ZSopOwotICAgICAgICB2b2lkIGZpbmlzaFBhcnNpbmcoY29uc3QgU291cmNlQ29kZSYsIElkZW50
aWZpZXIqIHBhcmFtZXRlcnMsIHNpemVfdCBwYXJhbWV0ZXJDb3VudCk7CisgICAgICAgIHZvaWQg
ZmluaXNoUGFyc2luZyhJZGVudGlmaWVyKiBwYXJhbWV0ZXJzLCBzaXplX3QgcGFyYW1ldGVyQ291
bnQpOwogICAgICAgICAKICAgICAgICAgVVN0cmluZyB0b1NvdXJjZVN0cmluZygpIGNvbnN0IEpT
Q19GQVNUX0NBTEwgeyByZXR1cm4gVVN0cmluZygieyIpICsgc291cmNlKCkudG9TdHJpbmcoKSAr
IFVTdHJpbmcoIn0iKTsgfQogCkBAIC0yMjk4LDcgKzIzMDYsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgfQogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICBGdW5jdGlvbkJvZHlOb2RlKEpT
R2xvYmFsRGF0YSosIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwg
Q29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKSBKU0NfRkFTVF9DQUxMOworICAgICAgICBG
dW5jdGlvbkJvZHlOb2RlKEpTR2xvYmFsRGF0YSosIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sq
LCBGdW5jdGlvblN0YWNrKiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51
bUNvbnN0YW50cykgSlNDX0ZBU1RfQ0FMTDsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZvaWQg
Z2VuZXJhdGVDb2RlKFNjb3BlQ2hhaW5Ob2RlKikgSlNDX0ZBU1RfQ0FMTDsKSW5kZXg6IFdlYkNv
cmUvRm9yd2FyZGluZ0hlYWRlcnMva2pzL0NvbGxlY3RvckhlYXBJdGVyYXRvci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMva2pzL0NvbGxlY3RvckhlYXBJdGVyYXRv
ci5oCShyZXZpc2lvbiAzNzE5NikJKGZyb20gV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ranMv
dXN0cmluZy5oOjM3MTk2KQorKysgV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ranMvQ29sbGVj
dG9ySGVhcEl0ZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSBAQAorI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL3VzdHJpbmcuaD4KSW5kZXg6IFdlYkNvcmUvRm9yd2FyZGluZ0hlYWRl
cnMva2pzL0NvbGxlY3RvckhlYXBJdGVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvRm9y
d2FyZGluZ0hlYWRlcnMva2pzL0NvbGxlY3RvckhlYXBJdGVyYXRvci5oCShyZXZpc2lvbiAzNzQ0
MykKKysrIFdlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMva2pzL0NvbGxlY3RvckhlYXBJdGVyYXRv
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xICsxIEBACi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
dXN0cmluZy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbGxlY3RvckhlYXBJdGVyYXRv
ci5oPgpJbmRleDogV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ranMvUGFyc2VyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ranMvUGFyc2VyLmgJKHJldmlzaW9u
IDM3MTk2KQkoZnJvbSBXZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2tqcy91c3RyaW5nLmg6Mzcx
OTYpCisrKyBXZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2tqcy9QYXJzZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxIEBACisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvdXN0cmluZy5oPgpJ
bmRleDogV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ranMvUGFyc2VyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ranMvUGFyc2VyLmgJKHJldmlzaW9uIDM3NDQz
KQorKysgV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ranMvUGFyc2VyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEgKzEgQEAKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS91c3RyaW5nLmg+CisjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvUGFyc2VyLmg+CkluZGV4OiBXZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMzc0NDQpCisrKyBXZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMsNiArNzMs
NyBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL09wYXF1ZUpTU3RyaW5nLmg+CiAjaW5jbHVk
ZSA8a2pzL0pTTG9jay5oPgogI2luY2x1ZGUgPGtqcy91c3RyaW5nLmg+CisjaW5jbHVkZSA8a2pz
L0NvbGxlY3RvckhlYXBJdGVyYXRvci5oPgogI2luY2x1ZGUgPHByb2ZpbGVyL1Byb2ZpbGUuaD4K
ICNpbmNsdWRlIDxwcm9maWxlci9Qcm9maWxlci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CkluZGV4OiBXZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0RGVidWdMaXN0ZW5lci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHREZWJ1Z0xpc3RlbmVyLmgJ
KHJldmlzaW9uIDM3NDQ0KQorKysgV2ViQ29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdERlYnVnTGlz
dGVuZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNiBAQAogI2RlZmluZSBKYXZhU2Ny
aXB0RGVidWdMaXN0ZW5lcl9oCiAKIG5hbWVzcGFjZSBKU0MgewotICAgIGNsYXNzIERlYnVnZ2Vy
Q2FsbEZyYW1lOwogICAgIGNsYXNzIEV4ZWNTdGF0ZTsKICAgICBjbGFzcyBTb3VyY2VDb2RlOwog
ICAgIGNsYXNzIFVTdHJpbmc7CkluZGV4OiBXZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0RGVi
dWdTZXJ2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRE
ZWJ1Z1NlcnZlci5jcHAJKHJldmlzaW9uIDM3NDQ0KQorKysgV2ViQ29yZS9pbnNwZWN0b3IvSmF2
YVNjcmlwdERlYnVnU2VydmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsOSBAQAog
I2luY2x1ZGUgIlNjcm9sbFZpZXcuaCIKICNpbmNsdWRlICJXaWRnZXQuaCIKICNpbmNsdWRlICJT
Y3JpcHRDb250cm9sbGVyLmgiCisjaW5jbHVkZSA8a2pzL0NvbGxlY3RvckhlYXBJdGVyYXRvci5o
PgogI2luY2x1ZGUgPGtqcy9EZWJ1Z2dlckNhbGxGcmFtZS5oPgorI2luY2x1ZGUgPGtqcy9QYXJz
ZXIuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9VbnVzZWRQ
YXJhbS5oPgogCkBAIC02Nyw2ICs2OSw3IEBAIEphdmFTY3JpcHREZWJ1Z1NlcnZlcjo6SmF2YVNj
cmlwdERlYnVnU2UKICAgICAsIG1fcGF1c2VkKGZhbHNlKQogICAgICwgbV9kb25lUHJvY2Vzc2lu
Z0RlYnVnZ2VyRXZlbnRzKHRydWUpCiAgICAgLCBtX3BhdXNlT25DYWxsRnJhbWUoMCkKKyAgICAs
IG1fcmVjb21waWxlVGltZXIodGhpcywgJkphdmFTY3JpcHREZWJ1Z1NlcnZlcjo6cmVjb21waWxl
QWxsSlNGdW5jdGlvbnMpCiB7CiB9CiAKQEAgLTgwLDcgKzgzLDcgQEAgSmF2YVNjcmlwdERlYnVn
U2VydmVyOjp+SmF2YVNjcmlwdERlYnVnUwogdm9pZCBKYXZhU2NyaXB0RGVidWdTZXJ2ZXI6OmFk
ZExpc3RlbmVyKEphdmFTY3JpcHREZWJ1Z0xpc3RlbmVyKiBsaXN0ZW5lcikKIHsKICAgICBpZiAo
IWhhc0xpc3RlbmVycygpKQotICAgICAgICBQYWdlOjpzZXREZWJ1Z2dlckZvckFsbFBhZ2VzKHRo
aXMpOworICAgICAgICB3aWxsQWRkRmlyc3RMaXN0ZW5lcigpOwogCiAgICAgbV9saXN0ZW5lcnMu
YWRkKGxpc3RlbmVyKTsKIH0KQEAgLTg4LDEwICs5MSw4IEBAIHZvaWQgSmF2YVNjcmlwdERlYnVn
U2VydmVyOjphZGRMaXN0ZW5lcigKIHZvaWQgSmF2YVNjcmlwdERlYnVnU2VydmVyOjpyZW1vdmVM
aXN0ZW5lcihKYXZhU2NyaXB0RGVidWdMaXN0ZW5lciogbGlzdGVuZXIpCiB7CiAgICAgbV9saXN0
ZW5lcnMucmVtb3ZlKGxpc3RlbmVyKTsKLSAgICBpZiAoIWhhc0xpc3RlbmVycygpKSB7Ci0gICAg
ICAgIFBhZ2U6OnNldERlYnVnZ2VyRm9yQWxsUGFnZXMoMCk7Ci0gICAgICAgIG1fZG9uZVByb2Nl
c3NpbmdEZWJ1Z2dlckV2ZW50cyA9IHRydWU7Ci0gICAgfQorICAgIGlmICghaGFzTGlzdGVuZXJz
KCkpCisgICAgICAgIGRpZFJlbW92ZUxhc3RMaXN0ZW5lcigpOwogfQogCiB2b2lkIEphdmFTY3Jp
cHREZWJ1Z1NlcnZlcjo6YWRkTGlzdGVuZXIoSmF2YVNjcmlwdERlYnVnTGlzdGVuZXIqIGxpc3Rl
bmVyLCBQYWdlKiBwYWdlKQpAQCAtOTksNyArMTAwLDcgQEAgdm9pZCBKYXZhU2NyaXB0RGVidWdT
ZXJ2ZXI6OmFkZExpc3RlbmVyKAogICAgIEFTU0VSVF9BUkcocGFnZSwgcGFnZSk7CiAKICAgICBp
ZiAoIWhhc0xpc3RlbmVycygpKQotICAgICAgICBQYWdlOjpzZXREZWJ1Z2dlckZvckFsbFBhZ2Vz
KHRoaXMpOworICAgICAgICB3aWxsQWRkRmlyc3RMaXN0ZW5lcigpOwogCiAgICAgcGFpcjxQYWdl
TGlzdGVuZXJzTWFwOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbV9wYWdlTGlzdGVuZXJzTWFw
LmFkZChwYWdlLCAwKTsKICAgICBpZiAocmVzdWx0LnNlY29uZCkKQEAgLTExOCwxOCArMTE5LDE0
IEBAIHZvaWQgSmF2YVNjcmlwdERlYnVnU2VydmVyOjpyZW1vdmVMaXN0ZW4KICAgICAgICAgcmV0
dXJuOwogCiAgICAgTGlzdGVuZXJTZXQqIGxpc3RlbmVycyA9IGl0LT5zZWNvbmQ7Ci0KICAgICBs
aXN0ZW5lcnMtPnJlbW92ZShsaXN0ZW5lcik7Ci0KICAgICBpZiAobGlzdGVuZXJzLT5pc0VtcHR5
KCkpIHsKICAgICAgICAgbV9wYWdlTGlzdGVuZXJzTWFwLnJlbW92ZShpdCk7CiAgICAgICAgIGRl
bGV0ZSBsaXN0ZW5lcnM7CiAgICAgfQogCi0gICAgaWYgKCFoYXNMaXN0ZW5lcnMoKSkgewotICAg
ICAgICBQYWdlOjpzZXREZWJ1Z2dlckZvckFsbFBhZ2VzKDApOwotICAgICAgICBtX2RvbmVQcm9j
ZXNzaW5nRGVidWdnZXJFdmVudHMgPSB0cnVlOwotICAgIH0KKyAgICBpZiAoIWhhc0xpc3RlbmVy
cygpKQorICAgICAgICBkaWRSZW1vdmVMYXN0TGlzdGVuZXIoKTsKIH0KIAogdm9pZCBKYXZhU2Ny
aXB0RGVidWdTZXJ2ZXI6OnBhZ2VDcmVhdGVkKFBhZ2UqIHBhZ2UpCkBAIC01MjEsNCArNTE4LDYy
IEBAIHZvaWQgSmF2YVNjcmlwdERlYnVnU2VydmVyOjpkaWRSZWFjaEJyZWEKICAgICBwYXVzZUlm
TmVlZGVkKHRvUGFnZShkZWJ1Z2dlckNhbGxGcmFtZS5keW5hbWljR2xvYmFsT2JqZWN0KCkpKTsK
IH0KIAordm9pZCBKYXZhU2NyaXB0RGVidWdTZXJ2ZXI6OnJlY29tcGlsZUFsbEpTRnVuY3Rpb25z
KFRpbWVyPEphdmFTY3JpcHREZWJ1Z1NlcnZlcj4qKQoreworICAgIEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSA9IEpTRE9NV2luZG93Ojpjb21tb25KU0dsb2JhbERhdGEoKTsKKworICAgIFZlY3Rv
cjxQcm90ZWN0ZWRQdHI8SlNGdW5jdGlvbj4gPiBmdW5jdGlvbnM7CisgICAgSGVhcDo6aXRlcmF0
b3IgaGVhcEVuZCA9IGdsb2JhbERhdGEtPmhlYXAucHJpbWFyeUhlYXBFbmQoKTsKKyAgICBmb3Ig
KEhlYXA6Oml0ZXJhdG9yIGl0ID0gZ2xvYmFsRGF0YS0+aGVhcC5wcmltYXJ5SGVhcEJlZ2luKCk7
IGl0ICE9IGhlYXBFbmQ7ICsraXQpIHsKKyAgICAgICAgaWYgKCgqaXQpLT5pc09iamVjdCgmSlNG
dW5jdGlvbjo6aW5mbykpCisgICAgICAgICAgICBmdW5jdGlvbnMuYXBwZW5kKHN0YXRpY19jYXN0
PEpTRnVuY3Rpb24qPigqaXQpKTsKKyAgICB9CisKKyAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRy
PEZ1bmN0aW9uQm9keU5vZGU+LCBSZWZQdHI8RnVuY3Rpb25Cb2R5Tm9kZT4gPiBGdW5jdGlvbkJv
ZHlNYXA7CisgICAgdHlwZWRlZiBIYXNoU2V0PFNvdXJjZVByb3ZpZGVyKj4gU291cmNlUHJvdmlk
ZXJTZXQ7CisKKyAgICBGdW5jdGlvbkJvZHlNYXAgZnVuY3Rpb25Cb2RpZXM7CisgICAgU291cmNl
UHJvdmlkZXJTZXQgc291cmNlUHJvdmlkZXJzOworCisgICAgc2l6ZV90IHNpemUgPSBmdW5jdGlv
bnMuc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAg
ICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gZnVuY3Rpb25zW2ldOworICAgICAgICAKKyAgICAg
ICAgRnVuY3Rpb25Cb2R5Tm9kZSogb2xkQm9keSA9IGZ1bmN0aW9uLT5tX2JvZHkuZ2V0KCk7Cisg
ICAgICAgIHBhaXI8RnVuY3Rpb25Cb2R5TWFwOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gZnVu
Y3Rpb25Cb2RpZXMuYWRkKG9sZEJvZHksIDApOworICAgICAgICBpZiAoIXJlc3VsdC5zZWNvbmQp
IHsKKyAgICAgICAgICAgIGZ1bmN0aW9uLT5tX2JvZHkgPSByZXN1bHQuZmlyc3QtPnNlY29uZDsK
KyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgY29uc3QgU291cmNl
Q29kZSYgc291cmNlQ29kZSA9IG9sZEJvZHktPnNvdXJjZSgpOworICAgICAgICBFeGVjU3RhdGUq
IGV4ZWMgPSBmdW5jdGlvbi0+c2NvcGUoKS5nbG9iYWxPYmplY3QoKS0+SlNHbG9iYWxPYmplY3Q6
Omdsb2JhbEV4ZWMoKTsKKyAgICAgICAgUmVmUHRyPEZ1bmN0aW9uQm9keU5vZGU+IG5ld0JvZHkg
PSBnbG9iYWxEYXRhLT5wYXJzZXItPnBhcnNlPEZ1bmN0aW9uQm9keU5vZGU+KGV4ZWMsIDAsIHNv
dXJjZUNvZGUpOworICAgICAgICBBU1NFUlQobmV3Qm9keSk7CisgICAgICAgIHNpemVfdCBwYXJh
bWV0ZXJDb3VudCA9IG9sZEJvZHktPnBhcmFtZXRlckNvdW50KCk7CisgICAgICAgIG5ld0JvZHkt
PmZpbmlzaFBhcnNpbmcob2xkQm9keS0+cmVsZWFzZVBhcmFtZXRlcnMoKSwgcGFyYW1ldGVyQ291
bnQpOworCisgICAgICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kID0gbmV3Qm9keS5yZWxlYXNlKCk7
CisKKyAgICAgICAgaWYgKGhhc0xpc3RlbmVycygpKSB7CisgICAgICAgICAgICBTb3VyY2VQcm92
aWRlciogcHJvdmlkZXIgPSBzb3VyY2VDb2RlLnByb3ZpZGVyKCk7CisgICAgICAgICAgICBpZiAo
c291cmNlUHJvdmlkZXJzLmFkZChwcm92aWRlcikuc2Vjb25kKQorICAgICAgICAgICAgICAgIHNv
dXJjZVBhcnNlZChleGVjLCBTb3VyY2VDb2RlKHByb3ZpZGVyKSwgLTEsIDApOworICAgICAgICB9
CisgICAgfQorfQorCit2b2lkIEphdmFTY3JpcHREZWJ1Z1NlcnZlcjo6d2lsbEFkZEZpcnN0TGlz
dGVuZXIoKQoreworICAgIFBhZ2U6OnNldERlYnVnZ2VyRm9yQWxsUGFnZXModGhpcyk7CisgICAg
bV9yZWNvbXBpbGVUaW1lci5zdGFydE9uZVNob3QoMCk7Cit9CisKK3ZvaWQgSmF2YVNjcmlwdERl
YnVnU2VydmVyOjpkaWRSZW1vdmVMYXN0TGlzdGVuZXIoKQoreworICAgIFBhZ2U6OnNldERlYnVn
Z2VyRm9yQWxsUGFnZXMoMCk7CisgICAgbV9kb25lUHJvY2Vzc2luZ0RlYnVnZ2VyRXZlbnRzID0g
dHJ1ZTsKKyAgICBtX3JlY29tcGlsZVRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdERlYnVn
U2VydmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdERlYnVn
U2VydmVyLmgJKHJldmlzaW9uIDM3NDQ0KQorKysgV2ViQ29yZS9pbnNwZWN0b3IvSmF2YVNjcmlw
dERlYnVnU2VydmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgorI2luY2x1ZGUgIlRpbWVyLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogICAgIGNs
YXNzIERlYnVnZ2VyQ2FsbEZyYW1lOwpAQCAtNzMsNiArNzQsOCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIHZvaWQgc3RlcE92ZXJTdGF0ZW1lbnQoKTsKICAgICAgICAgdm9pZCBzdGVw
T3V0T2ZGdW5jdGlvbigpOwogCisgICAgICAgIHZvaWQgcmVjb21waWxlQWxsSlNGdW5jdGlvbnMo
VGltZXI8SmF2YVNjcmlwdERlYnVnU2VydmVyPiopOworCiAgICAgICAgIEphdmFTY3JpcHRDYWxs
RnJhbWUqIGN1cnJlbnRDYWxsRnJhbWUoKTsKIAogICAgICAgICB2b2lkIHBhZ2VDcmVhdGVkKFBh
Z2UqKTsKQEAgLTEwMyw2ICsxMDYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCB3aWxsRXhlY3V0ZVByb2dyYW0oY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFt
ZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZW5vKTsKICAgICAgICAgdmlydHVhbCB2b2lk
IGRpZEV4ZWN1dGVQcm9ncmFtKGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJf
dCBzb3VyY2VJRCwgaW50IGxpbmVubyk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWFjaEJy
ZWFrcG9pbnQoY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlE
LCBpbnQgbGluZW5vKTsKKyAgICAgICAgCisgICAgICAgIHZvaWQgd2lsbEFkZEZpcnN0TGlzdGVu
ZXIoKTsKKyAgICAgICAgdm9pZCBkaWRSZW1vdmVMYXN0TGlzdGVuZXIoKTsKIAogICAgICAgICB0
eXBlZGVmIEhhc2hNYXA8UGFnZSosIExpc3RlbmVyU2V0Kj4gUGFnZUxpc3RlbmVyc01hcDsKICAg
ICAgICAgUGFnZUxpc3RlbmVyc01hcCBtX3BhZ2VMaXN0ZW5lcnNNYXA7CkBAIC0xMTYsNiArMTIy
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBSZWZQdHI8SmF2YVNjcmlwdENhbGxG
cmFtZT4gbV9jdXJyZW50Q2FsbEZyYW1lOwogICAgICAgICBIYXNoTWFwPFJlZlB0cjxGcmFtZT4s
IFBhdXNlZFRpbWVvdXRzKj4gbV9wYXVzZWRUaW1lb3V0czsKICAgICAgICAgSGFzaE1hcDxpbnRw
dHJfdCwgSGFzaFNldDx1bnNpZ25lZD4qPiBtX2JyZWFrcG9pbnRzOworICAgICAgICBUaW1lcjxK
YXZhU2NyaXB0RGVidWdTZXJ2ZXI+IG1fcmVjb21waWxlVGltZXI7CiAgICAgfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGFnZS9QYWdlLmNwcAkocmV2aXNpb24gMzc0NDQpCisrKyBXZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNCw2ICsxMjQsNyBAQCBQYWdlOjpQYWdl
KENocm9tZUNsaWVudCogY2hyb21lQ2xpZW50LCBDCiAgICAgLCBtX3BlbmRpbmdCZWZvcmVVbmxv
YWRFdmVudENvdW50KDApCiAgICAgLCBtX2N1c3RvbUhUTUxUb2tlbml6ZXJUaW1lRGVsYXkoLTEp
CiAgICAgLCBtX2N1c3RvbUhUTUxUb2tlbml6ZXJDaHVua1NpemUoLTEpCisgICAgLCBtX3RpbWVy
KHRoaXMsICZQYWdlOjpmaXJlZCkKIHsKICAgICBpZiAoIWFsbFBhZ2VzKSB7CiAgICAgICAgIGFs
bFBhZ2VzID0gbmV3IEhhc2hTZXQ8UGFnZSo+OwpAQCAtMTQyLDYgKzE0MywxMiBAQCBQYWdlOjpQ
YWdlKENocm9tZUNsaWVudCogY2hyb21lQ2xpZW50LCBDCiAjZW5kaWYKIH0KIAordm9pZCBQYWdl
OjpmaXJlZChUaW1lcjxQYWdlPiopCit7CisgICAgSmF2YVNjcmlwdERlYnVnU2VydmVyOjpzaGFy
ZWQoKS5yZWNvbXBpbGVBbGxKU0Z1bmN0aW9ucygwKTsKKyAgICBtX3RpbWVyLnN0YXJ0T25lU2hv
dCg4KTsKK30KKwogUGFnZTo6flBhZ2UoKQogewogICAgIG1fbWFpbkZyYW1lLT5zZXRWaWV3KDAp
OwpJbmRleDogV2ViQ29yZS9wYWdlL1BhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2Uv
UGFnZS5oCShyZXZpc2lvbiAzNzQ0NCkKKysrIFdlYkNvcmUvcGFnZS9QYWdlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBQTEFURk9STShNQUMpCiAjaW5jbHVkZSAiU2No
ZWR1bGVQYWlyLmgiCiAjZW5kaWYKKyNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9I
YXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCkBAIC0yMTksNiArMjIwLDkgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIGRvdWJsZSBtX2N1c3RvbUhUTUxUb2tlbml6
ZXJUaW1lRGVsYXk7CiAgICAgICAgIGludCBtX2N1c3RvbUhUTUxUb2tlbml6ZXJDaHVua1NpemU7
CisgICAgICAgIAorICAgICAgICB2b2lkIGZpcmVkKFRpbWVyPFBhZ2U+Kik7CisgICAgICAgIFRp
bWVyPFBhZ2U+IG1fdGltZXI7CiAKICNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCiAgICAgICAgIFJl
ZlB0cjxTZXNzaW9uU3RvcmFnZT4gbV9zZXNzaW9uU3RvcmFnZTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>24367</attachid>
            <date>2008-10-15 13:30:06 -0700</date>
            <delta_ts>2008-10-15 13:43:52 -0700</delta_ts>
            <desc>patch, finished product with no known bugs</desc>
            <filename>patch-debug.txt</filename>
            <type>text/plain</type>
            <size>81228</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDM3NjA5KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNzggQEAKKzIwMDgtMTAtMTUgIEdlb2ZmcmV5
IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIEZpeGVkIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTM0NQorICAgICAgICBTdGFydCB0aGUgZGVidWdnZXIgd2l0aG91
dCByZWxvYWRpbmcgdGhlIGluc3BlY3RlZCBwYWdlCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29y
ZS5leHA6IE5ldyBzeW1ib2xzLgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6IE5ldyBmaWxlcy4KKworICAgICAgICAqIFZNL0NvZGVCbG9jay5oOgor
ICAgICAgICAoSlNDOjpFdmFsQ29kZUNhY2hlOjpnZXQpOiBVcGRhdGVkIGZvciB0d2VhayB0byBw
YXJzaW5nIEFQSS4KKworICAgICAgICAqIGtqcy9Db2xsZWN0b3JIZWFwSXRlcmF0b3IuaDogQWRk
ZWQuIEFuIGl0ZXJhdG9yIGZvciB0aGUgb2JqZWN0IGhlYXAsCisgICAgICAgIHdoaWNoIHdlIHVz
ZSB0byBmaW5kIGFsbCB0aGUgbGl2ZSBmdW5jdGlvbnMgYW5kIHJlY29tcGlsZSB0aGVtLgorCisg
ICAgICAgICoga2pzL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6RGVidWdn
ZXJDYWxsRnJhbWU6OmV2YWx1YXRlKTogVXBkYXRlZCBmb3IgdHdlYWsgdG8gcGFyc2luZyBBUEku
CisKKyAgICAgICAgKiBranMvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6
OmNvbnN0cnVjdEZ1bmN0aW9uKTogVXBkYXRlZCBmb3IgdHdlYWsgdG8gcGFyc2luZyBBUEkuCisK
KyAgICAgICAgKiBranMvSlNGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246
OkpTRnVuY3Rpb24pOiBUcnkgdG8gdmFsaWRhdGUgb3VyIFNvdXJjZUNvZGUgaW4gZGVidWcKKyAg
ICAgICAgYnVpbGRzIGJ5IEFTU0VSVGluZyB0aGF0IGl0J3Mgc3ludGFjdGljYWxseSB2YWxpZC4g
VGhpcyBkb2Vzbid0IGNhdGNoCisgICAgICAgIGFsbCBTb3VyY2VDb2RlIGJ1Z3MsIGJ1dCBpdCBj
YXRjaGVzIGEgbG90IG9mIHRoZW0uCisKKyAgICAgICAgKiBranMvSlNHbG9iYWxPYmplY3RGdW5j
dGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpnbG9iYWxGdW5jRXZhbCk6IFVwZGF0ZWQgZm9yIHR3
ZWFrIHRvIHBhcnNpbmcgQVBJLgorCisgICAgICAgICoga2pzL1BhcnNlci5jcHA6CisgICAgICAg
IChKU0M6OlBhcnNlcjo6cGFyc2UpOgorICAgICAgICAqIGtqcy9QYXJzZXIuaDoKKyAgICAgICAg
KEpTQzo6UGFyc2VyOjpwYXJzZSk6IFR3ZWFrZWQgdGhlIHBhcnNlciB0byBtYWtlIGl0IHBvc3Np
YmxlIHRvIHBhcnNlCisgICAgICAgIHdpdGhvdXQgYW4gRXhlY1N0YXRlLCBhbmQgdG8gYWxsb3cg
dGhlIGNsaWVudCB0byBzcGVjaWZ5IGEgZGVidWdnZXIgdG8KKyAgICAgICAgbm90aWZ5IChvciBu
b3QpIGFib3V0IHRoZSBzb3VyY2Ugd2UgcGFyc2UuIFRoaXMgYWxsb3dzIHRoZSBpbnNwZWN0b3IK
KyAgICAgICAgdG8gcmVjb21waWxlIGV2ZW4gdGhvdWdoIG5vIEphdmFTY3JpcHQgaXMgZXhlY3V0
aW5nLCB0aGVuIG5vdGlmeSB0aGUKKyAgICAgICAgZGVidWdnZXIgYWJvdXQgYWxsIHNvdXJjZSBj
b2RlIHdoZW4gaXQncyBkb25lLgorCisgICAgICAgICoga2pzL1NoZWxsLmNwcDoKKyAgICAgICAg
KHByZXR0eVByaW50U2NyaXB0KTogVXBkYXRlZCBmb3IgdHdlYWsgdG8gcGFyc2luZyBBUEkuCisK
KyAgICAgICAgKiBranMvU291cmNlUmFuZ2UuaDoKKyAgICAgICAgKEpTQzo6U291cmNlQ29kZTo6
aXNOdWxsKTogQWRkZWQgdG8gaGVscCB3aXRoIEFTU0VSVHMuCisKKyAgICAgICAgKiBranMvY29s
bGVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6aGVhcEFsbG9jYXRlKToKKyAgICAgICAg
KEpTQzo6SGVhcDo6c3dlZXApOgorICAgICAgICAoSlNDOjpIZWFwOjpwcmltYXJ5SGVhcEJlZ2lu
KToKKyAgICAgICAgKEpTQzo6SGVhcDo6cHJpbWFyeUhlYXBFbmQpOgorICAgICAgICAqIGtqcy9j
b2xsZWN0b3IuaDoKKyAgICAgICAgKEpTQzo6KTogTW92ZWQgYSBidW5jaCBvZiBkZWNsYXJhdGlv
bnMgYXJvdW5kIHRvIGVuYWJsZSBjb21waWxhdGlvbiBvZgorICAgICAgICBDb2xsZWN0b3JIZWFw
SXRlcmF0b3IuCisKKyAgICAgICAgKiBranMvaW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlND
OjpJbnRlcnByZXRlcjo6Y2hlY2tTeW50YXgpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6
ZXZhbHVhdGUpOiBVcGRhdGVkIGZvciB0d2VhayB0byBwYXJzaW5nIEFQSS4KKworICAgICAgICAq
IGtqcy9sZXhlci5oOgorICAgICAgICAoSlNDOjpMZXhlcjo6c291cmNlQ29kZSk6IEJVRyBGSVg6
IENhbGN1bGF0ZSBTb3VyY2VDb2RlIHJhbmdlcyByZWxhdGl2ZQorICAgICAgICB0byB0aGUgU291
cmNlQ29kZSByYW5nZSBpbiB3aGljaCB3ZSdyZSBsZXhpbmcsIG90aGVyd2lzZSBuZXN0ZWQgZnVu
Y3Rpb25zCisgICAgICAgIHRoYXQgYXJlIGNvbXBpbGVkIGluZGl2aWR1YWxseSBnZXQgU291cmNl
Q29kZSByYW5nZXMgdGhhdCBkb24ndCByZWZsZWN0CisgICAgICAgIHRoZWlyIG5lc3RpbmcuCisK
KyAgICAgICAgKiBranMvbm9kZXMuY3BwOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkJvZHlOb2Rl
OjpGdW5jdGlvbkJvZHlOb2RlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Cb2R5Tm9kZTo6Zmlu
aXNoUGFyc2luZyk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQm9keU5vZGU6OmNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OkZ1bmN0aW9uQm9keU5vZGU6OmNvcHlQYXJhbWV0ZXJzKToKKyAgICAgICAg
KiBranMvbm9kZXMuaDoKKyAgICAgICAgKEpTQzo6U2NvcGVOb2RlOjpzZXRTb3VyY2UpOgorICAg
ICAgICAoSlNDOjpGdW5jdGlvbkJvZHlOb2RlOjpwYXJhbWV0ZXJDb3VudCk6IEFkZGVkIHNvbWUg
aGVscGVyIGZ1bmN0aW9ucyBmb3IKKyAgICAgICAgY29weWluZyBvbmUgRnVuY3Rpb25Cb2R5Tm9k
ZSdzIHBhcmFtZXRlcnMgdG8gYW5vdGhlci4gVGhlIHJlY29tcGlsZXIgdXNlcworICAgICAgICB0
aGVzZSB3aGVuIGNhbGxpbmcgImZpbmlzaFBhcnNpbmciLgorCiAyMDA4LTEwLTE1ICBKb2VyZyBC
b3JuZW1hbm4gIDxqb2VyZy5ib3JuZW1hbm5AdHJvbGx0ZWNoLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LmV4cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAJKHJl
dmlzaW9uIDM3NTg2KQorKysgSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCSh3b3Jr
aW5nIGNvcHkpCkBAIC05NSw2ICs5NSw3IEBAIF9fWk4zSlNDMTBJZGVudGlmaWVyMjRjaGVja1Nh
bWVJZGVudGlmaWUKIF9fWk4zSlNDMTBJZGVudGlmaWVyMjRjaGVja1NhbWVJZGVudGlmaWVyVGFi
bGVFUE5TXzlFeGVjU3RhdGVFUE5TXzdVU3RyaW5nM1JlcEUgCiBfX1pOM0pTQzEwSWRlbnRpZmll
cjNhZGRFUE5TXzlFeGVjU3RhdGVFUEtjCiBfX1pOM0pTQzEwSWRlbnRpZmllcjVlcXVhbEVQS05T
XzdVU3RyaW5nM1JlcEVQS2MKK19fWk4zSlNDMTBKU0Z1bmN0aW9uNGluZm9FCiBfX1pOM0pTQzEw
dGhyb3dFcnJvckVQTlNfOUV4ZWNTdGF0ZUVOU185RXJyb3JUeXBlRQogX19aTjNKU0MxMHRocm93
RXJyb3JFUE5TXzlFeGVjU3RhdGVFTlNfOUVycm9yVHlwZUVQS2MKIF9fWk4zSlNDMTB0aHJvd0Vy
cm9yRVBOU185RXhlY1N0YXRlRU5TXzlFcnJvclR5cGVFUktOU183VVN0cmluZ0UKQEAgLTE1Myw2
ICsxNTQsOSBAQCBfX1pOM0pTQzE0SlNHbG9iYWxPYmplY3REMkV2CiBfX1pOM0pTQzE0SlNHbG9i
YWxPYmplY3Rud0VtUE5TXzEySlNHbG9iYWxEYXRhRQogX19aTjNKU0MxNGNvbnN0cnVjdEFycmF5
RVBOU185RXhlY1N0YXRlRVJLTlNfN0FyZ0xpc3RFCiBfX1pOM0pTQzE1SlNXcmFwcGVyT2JqZWN0
NG1hcmtFdgorX19aTjNKU0MxNkZ1bmN0aW9uQm9keU5vZGUxM2ZpbmlzaFBhcnNpbmdFUE5TXzEw
SWRlbnRpZmllckVtCitfX1pOM0pTQzE2RnVuY3Rpb25Cb2R5Tm9kZTE0Y29weVBhcmFtZXRlcnNF
dgorX19aTjNKU0MxNkZ1bmN0aW9uQm9keU5vZGU2Y3JlYXRlRVBOU18xMkpTR2xvYmFsRGF0YUVQ
TlNfMTRTb3VyY2VFbGVtZW50c0VQTjNXVEY2VmVjdG9ySVN0NHBhaXJJTlNfMTBJZGVudGlmaWVy
RWpFTG0xNkVFRVBOUzZfSU5TNV82UmVmUHRySU5TXzEyRnVuY0RlY2xOb2RlRUVFTG0xNkVFRVJL
TlNfMTBTb3VyY2VDb2RlRWppCiBfX1pOM0pTQzE2SW50ZXJuYWxGdW5jdGlvbjRpbmZvRQogX19a
TjNKU0MxNkludGVybmFsRnVuY3Rpb25DMkVQTlNfMTJKU0dsb2JhbERhdGFFTjNXVEYxMFBhc3NS
ZWZQdHJJTlNfMTFTdHJ1Y3R1cmVJREVFRVJLTlNfMTBJZGVudGlmaWVyRQogX19aTjNKU0MxNkpT
VmFyaWFibGVPYmplY3QxNGRlbGV0ZVByb3BlcnR5RVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVu
dGlmaWVyRQpAQCAtMTY5LDcgKzE3Myw5IEBAIF9fWk4zSlNDMjBjb25zdHJ1Y3RFbXB0eU9iamVj
dEVQTlNfOUV4ZWMKIF9fWk4zSlNDMjNvYmplY3RQcm90b0Z1bmNUb1N0cmluZ0VQTlNfOUV4ZWNT
dGF0ZUVQTlNfOEpTT2JqZWN0RVBOU183SlNWYWx1ZUVSS05TXzdBcmdMaXN0RQogX19aTjNKU0My
M3NldFVwU3RhdGljRnVuY3Rpb25TbG90RVBOU185RXhlY1N0YXRlRVBLTlNfOUhhc2hFbnRyeUVQ
TlNfOEpTT2JqZWN0RVJLTlNfMTBJZGVudGlmaWVyRVJOU18xMlByb3BlcnR5U2xvdEUKIF9fWk4z
SlNDNEhlYXAxNGFsbG9jYXRlTnVtYmVyRW0KK19fWk4zSlNDNEhlYXAxNHByaW1hcnlIZWFwRW5k
RXYKIF9fWk4zSlNDNEhlYXAxNXJlY29yZEV4dHJhQ29zdEVtCitfX1pOM0pTQzRIZWFwMTZwcmlt
YXJ5SGVhcEJlZ2luRXYKIF9fWk4zSlNDNEhlYXAxN2dsb2JhbE9iamVjdENvdW50RXYKIF9fWk4z
SlNDNEhlYXAyMHByb3RlY3RlZE9iamVjdENvdW50RXYKIF9fWk4zSlNDNEhlYXAyNHNldEdDUHJv
dGVjdE5lZWRzTG9ja2luZ0V2CkBAIC0yMDIsNyArMjA4LDcgQEAgX19aTjNKU0M2SlNMb2NrNGxv
Y2tFYgogX19aTjNKU0M2SlNMb2NrNnVubG9ja0ViCiBfX1pOM0pTQzZKU0xvY2s5bG9ja0NvdW50
RXYKIF9fWk4zSlNDNkpTTG9ja0MxRVBOU185RXhlY1N0YXRlRQotX19aTjNKU0M2UGFyc2VyNXBh
cnNlRVBOU185RXhlY1N0YXRlRVBpUE5TXzdVU3RyaW5nRQorX19aTjNKU0M2UGFyc2VyNXBhcnNl
RVBOU18xMkpTR2xvYmFsRGF0YUVQaVBOU183VVN0cmluZ0UKIF9fWk4zSlNDNnN0cnRvZEVQS2NQ
UGMKIF9fWk4zSlNDN0FyZ0xpc3QxMHNsb3dBcHBlbmRFUE5TXzdKU1ZhbHVlRQogX19aTjNKU0M3
Q1N0cmluZ0QxRXYKSW5kZXg6IEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMzc1ODYpCisrKyBKYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC02OSw2ICs2OSw3IEBACiAJCTE0QkQ1QTMwMEEzRTkxRjYwMEJBRjU5QyAv
KiBKU0NvbnRleHRSZWYuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMTRCRDVBMjkwQTNFOTFGNjAwQkFGNTlDIC8qIEpTQ29udGV4dFJlZi5jcHAgKi87
IH07CiAJCTE0QkQ1QTMyMEEzRTkxRjYwMEJBRjU5QyAvKiBKU1ZhbHVlUmVmLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0QkQ1QTJCMEEzRTkxRjYw
MEJBRjU5QyAvKiBKU1ZhbHVlUmVmLmNwcCAqLzsgfTsKIAkJMTRFMEZGMTIwREJBQUVEMDAwMDdD
MEFCIC8qIE1hY2hpbmUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMTQ5QjE1RTcwRDgxRjk4NjAwOUNCOEM3IC8qIE1hY2hpbmUuY3BwICovOyBzZXR0
aW5ncyA9IHtDT01QSUxFUl9GTEFHUyA9ICItZm5vLXRyZWUtcHJlIjsgfTsgfTsKKwkJMTRGMzQ4
OEYwRTk1RUY4QTAwMzY0OEJDIC8qIENvbGxlY3RvckhlYXBJdGVyYXRvci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRGMzQ4OEUwRTk1RUY4QTAwMzY0
OEJDIC8qIENvbGxlY3RvckhlYXBJdGVyYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVENTM3MjZGMEUxQzU0ODgwMDIxRTU0OSAvKiBUcmFj
aW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1RDUz
NzI2RTBFMUM1NDg4MDAyMUU1NDkgLyogVHJhY2luZy5oICovOyB9OwogCQk1RDVEOEFCNjBFMEQw
QTcyMDBGOUM2OTIgLyoganNjIGluIENvcHkgSW50byBGcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTMyRjVCRTEwODIyQTFDNzAwNzM2OTc1IC8qIGpzYyAqLzsg
fTsKIAkJNUQ1RDhBRDEwRTBEMEVCRTAwRjlDNjkyIC8qIGxpYmVkaXQuZHlsaWIgaW4gRnJhbWV3
b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1RDVEOEFEMDBFMEQwRUJF
MDBGOUM2OTIgLyogbGliZWRpdC5keWxpYiAqLzsgfTsKQEAgLTQ0OCw2ICs0NDksNyBAQAogCQkx
NERBODE4RjBEOTlGRDIwMDBCMEE0RkIgLyogSlNBY3RpdmF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQWN0aXZhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTE0REUwRDY4MEQwMjQzMTQwMEFBQ0NBMiAvKiBKU0dsb2JhbE9iamVj
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0dsb2JhbE9iamVj
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0RjI1MjU2MEQwOEREOEQwMDRF
Q0ZGRiAvKiBKU1ZhcmlhYmxlT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTVmFyaWFibGVPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTRG
MzQ4OEUwRTk1RUY4QTAwMzY0OEJDIC8qIENvbGxlY3RvckhlYXBJdGVyYXRvci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2xsZWN0b3JIZWFwSXRlcmF0b3IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM5MDUxNDIwQkE5RThBNzAwODFFOUQwIC8qIFZlcnNp
b24ueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gVmVyc2lvbi54Y2Nv
bmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM5MDUxNDMwQkE5RThBNzAwODFF
OUQwIC8qIEphdmFTY3JpcHRDb3JlLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsg
cGF0aCA9IEphdmFTY3JpcHRDb3JlLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxQzkwNTE0NDBCQTlFOEE3MDA4MUU5RDAgLyogRGVidWdSZWxlYXNlLnhjY29uZmlnICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IERlYnVnUmVsZWFzZS54Y2NvbmZpZzsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyMjksNiArMTIzMSw3IEBACiAJCQkJRjY5MkE4
ODYwMjU1NTk3RDAxRkY2MEY3IC8qIHVzdHJpbmcuaCAqLywKIAkJCQkxNDdCODNBQTBFNkRCOEM5
MDA0Nzc1QTQgLyogQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIuaCAqLywKIAkJCQkxNDdCODQ2
MjBFNkRFNkIxMDA0Nzc1QTQgLyogUHV0UHJvcGVydHlTbG90LmggKi8sCisJCQkJMTRGMzQ4OEUw
RTk1RUY4QTAwMzY0OEJDIC8qIENvbGxlY3RvckhlYXBJdGVyYXRvci5oICovLAogCQkJKTsKIAkJ
CXBhdGggPSBranM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMTUzMyw2ICsxNTM2
LDcgQEAKIAkJCQk3RTJBREQ4RTBFNzlBQUQ1MDBENTBDNTEgLyogQ2hhcmFjdGVyQ2xhc3NDb25z
dHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQwRDE3RDcwRThBRDRBOTAwMENEMTdEIC8q
IEpTQmFzZVByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2OUVCQ0I3MEU4QzZENEEwMDg3
MjJDQyAvKiBSZXN1bHRUeXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQkxNEYzNDg4RjBFOTVFRjhB
MDAzNjQ4QkMgLyogQ29sbGVjdG9ySGVhcEl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCSk7
CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6
IEphdmFTY3JpcHRDb3JlL1ZNL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRD
b3JlL1ZNL0NvZGVCbG9jay5oCShyZXZpc2lvbiAzNzU4NikKKysrIEphdmFTY3JpcHRDb3JlL1ZN
L0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjEsNyArMTYxLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgICAgICAgICAgVVN0cmluZyBlcnJNc2c7CiAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgU291cmNlQ29kZSBzb3VyY2UgPSBtYWtlU291cmNlKGV2YWxTb3Vy
Y2UpOwotICAgICAgICAgICAgICAgIGV2YWxOb2RlID0gZXhlYy0+Z2xvYmFsRGF0YSgpLnBhcnNl
ci0+cGFyc2U8RXZhbE5vZGU+KGV4ZWMsIHNvdXJjZSwgJmVyckxpbmUsICZlcnJNc2cpOworICAg
ICAgICAgICAgICAgIGV2YWxOb2RlID0gZXhlYy0+Z2xvYmFsRGF0YSgpLnBhcnNlci0+cGFyc2U8
RXZhbE5vZGU+KGV4ZWMsIGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKS0+ZGVidWdnZXIoKSwg
c291cmNlLCAmZXJyTGluZSwgJmVyck1zZyk7CiAgICAgICAgICAgICAgICAgaWYgKGV2YWxOb2Rl
KSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChldmFsU291cmNlLnNpemUoKSA8IG1heENhY2hl
YWJsZVNvdXJjZUxlbmd0aCAmJiAoKnNjb3BlQ2hhaW4tPmJlZ2luKCkpLT5pc1ZhcmlhYmxlT2Jq
ZWN0KCkgJiYgY2FjaGVNYXAuc2l6ZSgpIDwgbWF4Q2FjaGVFbnRyaWVzKQogICAgICAgICAgICAg
ICAgICAgICAgICAgY2FjaGVNYXAuc2V0KGV2YWxTb3VyY2UucmVwKCksIGV2YWxOb2RlKTsKSW5k
ZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9Db2xsZWN0b3JIZWFwSXRlcmF0b3IuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvQ29sbGVjdG9ySGVhcEl0ZXJhdG9yLmgJKHJldmlzaW9u
IDApCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvQ29sbGVjdG9ySGVhcEl0ZXJhdG9yLmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsODUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgImNvbGxlY3Rvci5o
IgorCituYW1lc3BhY2UgSlNDIHsKKworICAgIHRlbXBsYXRlIDxIZWFwVHlwZSBoZWFwVHlwZT4g
Y2xhc3MgQ29sbGVjdG9ySGVhcEl0ZXJhdG9yIHsKKyAgICBwdWJsaWM6CisgICAgICAgIENvbGxl
Y3RvckhlYXBJdGVyYXRvcihDb2xsZWN0b3JCbG9jayoqIGJsb2NrLCBDb2xsZWN0b3JCbG9jayoq
IGVuZEJsb2NrKTsKKworICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQ29sbGVjdG9ySGVh
cEl0ZXJhdG9yPGhlYXBUeXBlPiYgb3RoZXIpIHsgcmV0dXJuIG1fYmxvY2sgIT0gb3RoZXIubV9i
bG9jayB8fCBtX2NlbGwgIT0gb3RoZXIubV9jZWxsOyB9CisgICAgICAgIENvbGxlY3RvckhlYXBJ
dGVyYXRvcjxoZWFwVHlwZT4mIG9wZXJhdG9yKysoKTsKKyAgICAgICAgSlNDZWxsKiBvcGVyYXRv
ciooKSBjb25zdDsKKyAgICAKKyAgICBwcml2YXRlOgorICAgICAgICB0eXBlZGVmIHR5cGVuYW1l
IEhlYXBDb25zdGFudHM8aGVhcFR5cGU+OjpCbG9jayBCbG9jazsKKyAgICAgICAgdHlwZWRlZiB0
eXBlbmFtZSBIZWFwQ29uc3RhbnRzPGhlYXBUeXBlPjo6Q2VsbCBDZWxsOworCisgICAgICAgIEJs
b2NrKiogbV9ibG9jazsKKyAgICAgICAgQmxvY2sqKiBtX2VuZEJsb2NrOworICAgICAgICBDZWxs
KiBtX2NlbGw7CisgICAgICAgIENlbGwqIG1fZW5kQ2VsbDsKKyAgICB9OworCisgICAgdGVtcGxh
dGUgPEhlYXBUeXBlIGhlYXBUeXBlPiAKKyAgICBDb2xsZWN0b3JIZWFwSXRlcmF0b3I8aGVhcFR5
cGU+OjpDb2xsZWN0b3JIZWFwSXRlcmF0b3IoQ29sbGVjdG9yQmxvY2sqKiBibG9jaywgQ29sbGVj
dG9yQmxvY2sqKiBlbmRCbG9jaykKKyAgICAgICAgOiBtX2Jsb2NrKHJlaW50ZXJwcmV0X2Nhc3Q8
QmxvY2sqKj4oYmxvY2spKQorICAgICAgICAsIG1fZW5kQmxvY2socmVpbnRlcnByZXRfY2FzdDxC
bG9jayoqPihlbmRCbG9jaykpCisgICAgICAgICwgbV9jZWxsKG1fYmxvY2sgPT0gbV9lbmRCbG9j
ayA/IDAgOiAoKm1fYmxvY2spLT5jZWxscykKKyAgICAgICAgLCBtX2VuZENlbGwobV9ibG9jayA9
PSBtX2VuZEJsb2NrID8gMCA6ICgqbV9ibG9jayktPmNlbGxzICsgSGVhcENvbnN0YW50czxoZWFw
VHlwZT46OmNlbGxzUGVyQmxvY2spCisgICAgeworICAgICAgICBpZiAobV9jZWxsICYmIG1fY2Vs
bC0+dS5mcmVlQ2VsbC56ZXJvSWZGcmVlID09IDApCisgICAgICAgICAgICArKyp0aGlzOworICAg
IH0KKworICAgIHRlbXBsYXRlIDxIZWFwVHlwZSBoZWFwVHlwZT4gCisgICAgQ29sbGVjdG9ySGVh
cEl0ZXJhdG9yPGhlYXBUeXBlPiYgQ29sbGVjdG9ySGVhcEl0ZXJhdG9yPGhlYXBUeXBlPjo6b3Bl
cmF0b3IrKygpCisgICAgeworICAgICAgICBkbyB7CisgICAgICAgICAgICBmb3IgKCsrbV9jZWxs
OyBtX2NlbGwgIT0gbV9lbmRDZWxsOyArK21fY2VsbCkKKyAgICAgICAgICAgICAgICBpZiAobV9j
ZWxsLT51LmZyZWVDZWxsLnplcm9JZkZyZWUgIT0gMCkgeworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gKnRoaXM7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoKyttX2Js
b2NrICE9IG1fZW5kQmxvY2spIHsKKyAgICAgICAgICAgICAgICBtX2NlbGwgPSAoKm1fYmxvY2sp
LT5jZWxsczsKKyAgICAgICAgICAgICAgICBtX2VuZENlbGwgPSAoKm1fYmxvY2spLT5jZWxscyAr
IEhlYXBDb25zdGFudHM8aGVhcFR5cGU+OjpjZWxsc1BlckJsb2NrOworICAgICAgICAgICAgfQor
ICAgICAgICB9IHdoaWxlKG1fYmxvY2sgIT0gbV9lbmRCbG9jayk7CisKKyAgICAgICAgbV9jZWxs
ID0gMDsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIHRlbXBsYXRlIDxIZWFw
VHlwZSBoZWFwVHlwZT4gCisgICAgSlNDZWxsKiBDb2xsZWN0b3JIZWFwSXRlcmF0b3I8aGVhcFR5
cGU+OjpvcGVyYXRvciooKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8SlNDZWxsKj4obV9jZWxsKTsKKyAgICB9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRl
eDogSmF2YVNjcmlwdENvcmUva2pzL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBKYXZhU2NyaXB0Q29yZS9ranMvRGVidWdnZXJDYWxsRnJhbWUuY3BwCShyZXZpc2lvbiAzNzU4
NikKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTcyLDcgKzcyLDcgQEAgSlNWYWx1ZSogRGVidWdnZXJDYWxsRnJhbWU6OmV2YWx1
YXRlKGNvbgogICAgIGludCBlcnJMaW5lOwogICAgIFVTdHJpbmcgZXJyTXNnOwogICAgIFNvdXJj
ZUNvZGUgc291cmNlID0gbWFrZVNvdXJjZShzY3JpcHQpOwotICAgIFJlZlB0cjxFdmFsTm9kZT4g
ZXZhbE5vZGUgPSBtX2NhbGxGcmFtZS0+c2NvcGVDaGFpbigpLT5nbG9iYWxEYXRhLT5wYXJzZXIt
PnBhcnNlPEV2YWxOb2RlPihtX2NhbGxGcmFtZSwgc291cmNlLCAmZXJyTGluZSwgJmVyck1zZyk7
CisgICAgUmVmUHRyPEV2YWxOb2RlPiBldmFsTm9kZSA9IG1fY2FsbEZyYW1lLT5zY29wZUNoYWlu
KCktPmdsb2JhbERhdGEtPnBhcnNlci0+cGFyc2U8RXZhbE5vZGU+KG1fY2FsbEZyYW1lLCBtX2Nh
bGxGcmFtZS0+ZHluYW1pY0dsb2JhbE9iamVjdCgpLT5kZWJ1Z2dlcigpLCBzb3VyY2UsICZlcnJM
aW5lLCAmZXJyTXNnKTsKICAgICBpZiAoIWV2YWxOb2RlKQogICAgICAgICByZXR1cm4gRXJyb3I6
OmNyZWF0ZShtX2NhbGxGcmFtZSwgU3ludGF4RXJyb3IsIGVyck1zZywgZXJyTGluZSwgc291cmNl
LnByb3ZpZGVyKCktPmFzSUQoKSwgc291cmNlLnByb3ZpZGVyKCktPnVybCgpKTsKIApJbmRleDog
SmF2YVNjcmlwdENvcmUva2pzL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEphdmFTY3JpcHRDb3JlL2tqcy9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMzc1
ODYpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTg3LDcgKzg3LDcgQEAgSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4
ZWNTdGF0ZSogZQogICAgIGludCBlcnJMaW5lOwogICAgIFVTdHJpbmcgZXJyTXNnOwogICAgIFNv
dXJjZUNvZGUgc291cmNlID0gbWFrZVNvdXJjZShib2R5LCBzb3VyY2VVUkwsIGxpbmVOdW1iZXIp
OwotICAgIFJlZlB0cjxGdW5jdGlvbkJvZHlOb2RlPiBmdW5jdGlvbkJvZHkgPSBleGVjLT5nbG9i
YWxEYXRhKCkucGFyc2VyLT5wYXJzZTxGdW5jdGlvbkJvZHlOb2RlPihleGVjLCBzb3VyY2UsICZl
cnJMaW5lLCAmZXJyTXNnKTsKKyAgICBSZWZQdHI8RnVuY3Rpb25Cb2R5Tm9kZT4gZnVuY3Rpb25C
b2R5ID0gZXhlYy0+Z2xvYmFsRGF0YSgpLnBhcnNlci0+cGFyc2U8RnVuY3Rpb25Cb2R5Tm9kZT4o
ZXhlYywgZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpLT5kZWJ1Z2dlcigpLCBzb3VyY2UsICZl
cnJMaW5lLCAmZXJyTXNnKTsKIAogICAgIC8vIE5vIHByb2dyYW0gbm9kZSA9PSBzeW50YXggZXJy
b3IgLSB0aHJvdyBhIHN5bnRheCBlcnJvcgogICAgIGlmICghZnVuY3Rpb25Cb2R5KQpAQCAtMTI1
LDcgKzEyNSw3IEBAIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqIGUKICAg
ICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgU3ludGF4RXJyb3IsICJTeW50YXggZXJyb3Ig
aW4gcGFyYW1ldGVyIGxpc3QiKTsKICAgICB9CiAgICAgc2l6ZV90IGNvdW50ID0gcGFyYW1ldGVy
cy5zaXplKCk7Ci0gICAgZnVuY3Rpb25Cb2R5LT5maW5pc2hQYXJzaW5nKHNvdXJjZSwgcGFyYW1l
dGVycy5yZWxlYXNlQnVmZmVyKCksIGNvdW50KTsKKyAgICBmdW5jdGlvbkJvZHktPmZpbmlzaFBh
cnNpbmcocGFyYW1ldGVycy5yZWxlYXNlQnVmZmVyKCksIGNvdW50KTsKIAogICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CiAgICAg
U2NvcGVDaGFpbiBzY29wZUNoYWluKGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5nbG9iYWxE
YXRhKCksIGV4ZWMtPmdsb2JhbFRoaXNWYWx1ZSgpKTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tq
cy9KU0Z1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvSlNGdW5j
dGlvbi5jcHAJKHJldmlzaW9uIDM3NTg2KQorKysgSmF2YVNjcmlwdENvcmUva2pzL0pTRnVuY3Rp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBAIEpTRnVuY3Rpb246OkpTRnVu
Y3Rpb24oRXhlY1N0YXRlKiBleGVjLCAKICAgICAsIG1fYm9keShib2R5KQogICAgICwgbV9zY29w
ZUNoYWluKHNjb3BlQ2hhaW5Ob2RlKQogeworICAgIEFTU0VSVChleGVjLT5nbG9iYWxEYXRhKCku
cGFyc2VyLT5wYXJzZTxGdW5jdGlvbkJvZHlOb2RlPihleGVjLCAwLCBib2R5LT5zb3VyY2UoKSkp
OwogfQogCiB2b2lkIEpTRnVuY3Rpb246Om1hcmsoKQpJbmRleDogSmF2YVNjcmlwdENvcmUva2pz
L0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS9ranMvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCShyZXZpc2lvbiAzNzU4NikKKysrIEph
dmFTY3JpcHRDb3JlL2tqcy9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI4Niw3ICsyODYsNyBAQCBKU1ZhbHVlKiBnbG9iYWxGdW5jRXZhbChFeGVjU3RhdGUq
IGV4ZWMsCiAgICAgVVN0cmluZyBlcnJNc2c7CiAKICAgICBTb3VyY2VDb2RlIHNvdXJjZSA9IG1h
a2VTb3VyY2Uocyk7Ci0gICAgUmVmUHRyPEV2YWxOb2RlPiBldmFsTm9kZSA9IGV4ZWMtPmdsb2Jh
bERhdGEoKS5wYXJzZXItPnBhcnNlPEV2YWxOb2RlPihleGVjLCBzb3VyY2UsICZlcnJMaW5lLCAm
ZXJyTXNnKTsKKyAgICBSZWZQdHI8RXZhbE5vZGU+IGV2YWxOb2RlID0gZXhlYy0+Z2xvYmFsRGF0
YSgpLnBhcnNlci0+cGFyc2U8RXZhbE5vZGU+KGV4ZWMsIGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmpl
Y3QoKS0+ZGVidWdnZXIoKSwgc291cmNlLCAmZXJyTGluZSwgJmVyck1zZyk7CiAKICAgICBpZiAo
IWV2YWxOb2RlKQogICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBTeW50YXhFcnJvciwg
ZXJyTXNnLCBlcnJMaW5lLCBzb3VyY2UucHJvdmlkZXIoKS0+YXNJRCgpLCBOVUxMKTsKSW5kZXg6
IEphdmFTY3JpcHRDb3JlL2tqcy9QYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRD
b3JlL2tqcy9QYXJzZXIuY3BwCShyZXZpc2lvbiAzNzU4NikKKysrIEphdmFTY3JpcHRDb3JlL2tq
cy9QYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBAIGV4dGVybiBpbnQg
a2pzeXlwYXJzZSh2b2lkKik7CiAKIG5hbWVzcGFjZSBKU0MgewogCi12b2lkIFBhcnNlcjo6cGFy
c2UoRXhlY1N0YXRlKiBleGVjLCBpbnQqIGVyckxpbmUsIFVTdHJpbmcqIGVyck1zZykKK3ZvaWQg
UGFyc2VyOjpwYXJzZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCogZXJyTGluZSwgVVN0
cmluZyogZXJyTXNnKQogewogICAgIEFTU0VSVCghbV9zb3VyY2VFbGVtZW50cyk7CiAKQEAgLTQ3
LDIzICs0NywyMCBAQCB2b2lkIFBhcnNlcjo6cGFyc2UoRXhlY1N0YXRlKiBleGVjLCBpbnQqCiAg
ICAgKmVyckxpbmUgPSAtMTsKICAgICAqZXJyTXNnID0gMDsKIAotICAgIExleGVyJiBsZXhlciA9
ICpleGVjLT5nbG9iYWxEYXRhKCkubGV4ZXI7CisgICAgTGV4ZXImIGxleGVyID0gKmdsb2JhbERh
dGEtPmxleGVyOwogICAgIGxleGVyLnNldENvZGUoKm1fc291cmNlKTsKIAotICAgIGludCBwYXJz
ZUVycm9yID0ga2pzeXlwYXJzZSgmZXhlYy0+Z2xvYmFsRGF0YSgpKTsKKyAgICBpbnQgcGFyc2VF
cnJvciA9IGtqc3l5cGFyc2UoZ2xvYmFsRGF0YSk7CiAgICAgYm9vbCBsZXhFcnJvciA9IGxleGVy
LnNhd0Vycm9yKCk7CiAgICAgbGV4ZXIuY2xlYXIoKTsKIAotICAgIFBhcnNlclJlZkNvdW50ZWQ6
OmRlbGV0ZU5ld09iamVjdHMoJmV4ZWMtPmdsb2JhbERhdGEoKSk7CisgICAgUGFyc2VyUmVmQ291
bnRlZDo6ZGVsZXRlTmV3T2JqZWN0cyhnbG9iYWxEYXRhKTsKIAogICAgIGlmIChwYXJzZUVycm9y
IHx8IGxleEVycm9yKSB7CiAgICAgICAgICplcnJMaW5lID0gbGV4ZXIubGluZU5vKCk7CiAgICAg
ICAgICplcnJNc2cgPSAiUGFyc2UgZXJyb3IiOwogICAgICAgICBtX3NvdXJjZUVsZW1lbnRzLmNs
ZWFyKCk7CiAgICAgfQotCi0gICAgaWYgKERlYnVnZ2VyKiBkZWJ1Z2dlciA9IGV4ZWMtPmR5bmFt
aWNHbG9iYWxPYmplY3QoKS0+ZGVidWdnZXIoKSkKLSAgICAgICAgZGVidWdnZXItPnNvdXJjZVBh
cnNlZChleGVjLCAqbV9zb3VyY2UsICplcnJMaW5lLCAqZXJyTXNnKTsKIH0KIAogdm9pZCBQYXJz
ZXI6OmRpZEZpbmlzaFBhcnNpbmcoU291cmNlRWxlbWVudHMqIHNvdXJjZUVsZW1lbnRzLCBQYXJz
ZXJSZWZDb3VudGVkRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6VmFyU3RhY2s+KiB2YXJTdGFjaywg
CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvUGFyc2VyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNj
cmlwdENvcmUva2pzL1BhcnNlci5oCShyZXZpc2lvbiAzNzU4NikKKysrIEphdmFTY3JpcHRDb3Jl
L2tqcy9QYXJzZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsNiArMjMsNyBAQAogI2lmbmRlZiBQ
YXJzZXJfaAogI2RlZmluZSBQYXJzZXJfaAogCisjaW5jbHVkZSAiZGVidWdnZXIuaCIKICNpbmNs
dWRlICJTb3VyY2VQcm92aWRlci5oIgogI2luY2x1ZGUgIm5vZGVzLmgiCiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KQEAgLTQ4LDE2ICs0OSwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNs
YXNzIFBhcnNlciA6IE5vbmNvcHlhYmxlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHRlbXBsYXRl
IDxjbGFzcyBQYXJzZWROb2RlPiBQYXNzUmVmUHRyPFBhcnNlZE5vZGU+IHBhcnNlKEV4ZWNTdGF0
ZSosIFBhc3NSZWZQdHI8U291cmNlUHJvdmlkZXI+LCBpbnQqIGVyckxpbmUgPSAwLCBVU3RyaW5n
KiBlcnJNc2cgPSAwKTsKLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFBhcnNlZE5vZGU+IFBhc3NS
ZWZQdHI8UGFyc2VkTm9kZT4gcGFyc2UoRXhlY1N0YXRlKiwgY29uc3QgU291cmNlQ29kZSYsIGlu
dCogZXJyTGluZSA9IDAsIFVTdHJpbmcqIGVyck1zZyA9IDApOworICAgICAgICB0ZW1wbGF0ZSA8
Y2xhc3MgUGFyc2VkTm9kZT4gUGFzc1JlZlB0cjxQYXJzZWROb2RlPiBwYXJzZShFeGVjU3RhdGUq
LCBEZWJ1Z2dlciosIGNvbnN0IFNvdXJjZUNvZGUmLCBpbnQqIGVyckxpbmUgPSAwLCBVU3RyaW5n
KiBlcnJNc2cgPSAwKTsKIAogICAgICAgICB2b2lkIGRpZEZpbmlzaFBhcnNpbmcoU291cmNlRWxl
bWVudHMqLCBQYXJzZXJSZWZDb3VudGVkRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6VmFyU3RhY2s+
KiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJzZXJSZWZDb3VudGVkRGF0YTxE
ZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFjaz4qLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMs
IGludCBsYXN0TGluZSwgaW50IG51bUNvbnN0YW50cyk7CiAKICAgICBwcml2YXRlOgotICAgICAg
ICBmcmllbmQgY2xhc3MgSlNHbG9iYWxEYXRhOwotCi0gICAgICAgIHZvaWQgcGFyc2UoRXhlY1N0
YXRlKiwgaW50KiBlcnJMaW5lLCBVU3RyaW5nKiBlcnJNc2cpOworICAgICAgICB2b2lkIHBhcnNl
KEpTR2xvYmFsRGF0YSosIGludCogZXJyTGluZSwgVVN0cmluZyogZXJyTXNnKTsKIAogICAgICAg
ICBjb25zdCBTb3VyY2VDb2RlKiBtX3NvdXJjZTsKICAgICAgICAgUmVmUHRyPFNvdXJjZUVsZW1l
bnRzPiBtX3NvdXJjZUVsZW1lbnRzOwpAQCAtNjgsMTAgKzY2LDEwIEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBpbnQgbV9udW1Db25zdGFudHM7CiAgICAgfTsKIAotICAgIHRlbXBsYXRlIDxj
bGFzcyBQYXJzZWROb2RlPiBQYXNzUmVmUHRyPFBhcnNlZE5vZGU+IFBhcnNlcjo6cGFyc2UoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGludCogZXJyTGluZSwgVVN0
cmluZyogZXJyTXNnKQorICAgIHRlbXBsYXRlIDxjbGFzcyBQYXJzZWROb2RlPiBQYXNzUmVmUHRy
PFBhcnNlZE5vZGU+IFBhcnNlcjo6cGFyc2UoRXhlY1N0YXRlKiBleGVjLCBEZWJ1Z2dlciogZGVi
dWdnZXIsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgaW50KiBlcnJMaW5lLCBVU3RyaW5nKiBl
cnJNc2cpCiAgICAgewogICAgICAgICBtX3NvdXJjZSA9ICZzb3VyY2U7Ci0gICAgICAgIHBhcnNl
KGV4ZWMsIGVyckxpbmUsIGVyck1zZyk7CisgICAgICAgIHBhcnNlKCZleGVjLT5nbG9iYWxEYXRh
KCksIGVyckxpbmUsIGVyck1zZyk7CiAgICAgICAgIFJlZlB0cjxQYXJzZWROb2RlPiByZXN1bHQ7
CiAgICAgICAgIGlmIChtX3NvdXJjZUVsZW1lbnRzKSB7CiAgICAgICAgICAgICByZXN1bHQgPSBQ
YXJzZWROb2RlOjpjcmVhdGUoJmV4ZWMtPmdsb2JhbERhdGEoKSwKQEAgLTg4LDYgKzg2LDkgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIG1fc291cmNlRWxlbWVudHMgPSAwOwogICAgICAgICBt
X3ZhckRlY2xhcmF0aW9ucyA9IDA7CiAgICAgICAgIG1fZnVuY0RlY2xhcmF0aW9ucyA9IDA7CisK
KyAgICAgICAgaWYgKGRlYnVnZ2VyKQorICAgICAgICAgICAgZGVidWdnZXItPnNvdXJjZVBhcnNl
ZChleGVjLCBzb3VyY2UsICplcnJMaW5lLCAqZXJyTXNnKTsKICAgICAgICAgcmV0dXJuIHJlc3Vs
dC5yZWxlYXNlKCk7CiAgICAgfQogCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvU2hlbGwuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9TaGVsbC5jcHAJKHJldmlzaW9uIDM3
NTg2KQorKysgSmF2YVNjcmlwdENvcmUva2pzL1NoZWxsLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzA1LDcgKzMwNSw3IEBAIHN0YXRpYyBib29sIHByZXR0eVByaW50U2NyaXB0KEV4ZWNTdGF0ZSoK
IHsKICAgICBpbnQgZXJyTGluZSA9IDA7CiAgICAgVVN0cmluZyBlcnJNc2c7Ci0gICAgUmVmUHRy
PFByb2dyYW1Ob2RlPiBwcm9ncmFtTm9kZSA9IGV4ZWMtPmdsb2JhbERhdGEoKS5wYXJzZXItPnBh
cnNlPFByb2dyYW1Ob2RlPihleGVjLCBtYWtlU291cmNlKHNjcmlwdC5kYXRhKCksIGZpbGVOYW1l
KSwgJmVyckxpbmUsICZlcnJNc2cpOworICAgIFJlZlB0cjxQcm9ncmFtTm9kZT4gcHJvZ3JhbU5v
ZGUgPSBleGVjLT5nbG9iYWxEYXRhKCkucGFyc2VyLT5wYXJzZTxQcm9ncmFtTm9kZT4oZXhlYywg
ZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpLT5kZWJ1Z2dlcigpLCBtYWtlU291cmNlKHNjcmlw
dC5kYXRhKCksIGZpbGVOYW1lKSwgJmVyckxpbmUsICZlcnJNc2cpOwogICAgIGlmICghcHJvZ3Jh
bU5vZGUpIHsKICAgICAgICAgZnByaW50ZihzdGRlcnIsICIlczolZDogJXMuXG4iLCBmaWxlTmFt
ZS5VVEY4U3RyaW5nKCkuY19zdHIoKSwgZXJyTGluZSwgZXJyTXNnLlVURjhTdHJpbmcoKS5jX3N0
cigpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL1Nv
dXJjZVJhbmdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL1NvdXJjZVJhbmdl
LmgJKHJldmlzaW9uIDM3NTg2KQorKysgSmF2YVNjcmlwdENvcmUva2pzL1NvdXJjZVJhbmdlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTY4LDYgKzY4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
ICAgICByZXR1cm4gbV9wcm92aWRlci0+Z2V0UmFuZ2UobV9zdGFydENoYXIsIG1fZW5kQ2hhcik7
CiAgICAgICAgIH0KICAgICAgICAgCisgICAgICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1
cm4gIW1fcHJvdmlkZXI7IH0KICAgICAgICAgU291cmNlUHJvdmlkZXIqIHByb3ZpZGVyKCkgY29u
c3QgeyByZXR1cm4gbV9wcm92aWRlci5nZXQoKTsgfQogICAgICAgICBpbnQgZmlyc3RMaW5lKCkg
Y29uc3QgeyByZXR1cm4gbV9maXJzdExpbmU7IH0KICAgICAgICAgaW50IHN0YXJ0T2Zmc2V0KCkg
Y29uc3QgeyByZXR1cm4gbV9zdGFydENoYXI7IH0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9j
b2xsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9jb2xsZWN0b3Iu
Y3BwCShyZXZpc2lvbiAzNzU4NikKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9jb2xsZWN0b3IuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAiY29sbGVjdG9yLmgi
CiAKICNpbmNsdWRlICJBcmdMaXN0LmgiCisjaW5jbHVkZSAiQ29sbGVjdG9ySGVhcEl0ZXJhdG9y
LmgiCiAjaW5jbHVkZSAiRXhlY1N0YXRlLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIK
ICNpbmNsdWRlICJKU0xvY2suaCIKQEAgLTE4MSw3ICsxODIsNyBAQCB2b2lkIEhlYXA6OmRlc3Ry
b3koKQogICAgIG1fZ2xvYmFsRGF0YSA9IDA7CiB9CiAKLXRlbXBsYXRlIDxIZWFwOjpIZWFwVHlw
ZSBoZWFwVHlwZT4KK3RlbXBsYXRlIDxIZWFwVHlwZSBoZWFwVHlwZT4KIHN0YXRpYyBORVZFUl9J
TkxJTkUgQ29sbGVjdG9yQmxvY2sqIGFsbG9jYXRlQmxvY2soKQogewogI2lmIFBMQVRGT1JNKERB
UldJTikKQEAgLTI2NSwyNSArMjY2LDcgQEAgdm9pZCBIZWFwOjpyZWNvcmRFeHRyYUNvc3Qoc2l6
ZV90IGNvc3QpCiAgICAgcHJpbWFyeUhlYXAuZXh0cmFDb3N0ICs9IGNvc3Q7CiB9CiAKLXRlbXBs
YXRlIDxIZWFwOjpIZWFwVHlwZSBoZWFwVHlwZT4gc3RydWN0IEhlYXBDb25zdGFudHM7Ci0KLXRl
bXBsYXRlIDw+IHN0cnVjdCBIZWFwQ29uc3RhbnRzPEhlYXA6OlByaW1hcnlIZWFwPiB7Ci0gICAg
c3RhdGljIGNvbnN0IHNpemVfdCBjZWxsU2l6ZSA9IENFTExfU0laRTsKLSAgICBzdGF0aWMgY29u
c3Qgc2l6ZV90IGNlbGxzUGVyQmxvY2sgPSBDRUxMU19QRVJfQkxPQ0s7Ci0gICAgc3RhdGljIGNv
bnN0IHNpemVfdCBiaXRtYXBTaGlmdCA9IDA7Ci0gICAgdHlwZWRlZiBDb2xsZWN0b3JDZWxsIENl
bGw7Ci0gICAgdHlwZWRlZiBDb2xsZWN0b3JCbG9jayBCbG9jazsKLX07Ci0KLXRlbXBsYXRlIDw+
IHN0cnVjdCBIZWFwQ29uc3RhbnRzPEhlYXA6Ok51bWJlckhlYXA+IHsKLSAgICBzdGF0aWMgY29u
c3Qgc2l6ZV90IGNlbGxTaXplID0gU01BTExfQ0VMTF9TSVpFOwotICAgIHN0YXRpYyBjb25zdCBz
aXplX3QgY2VsbHNQZXJCbG9jayA9IFNNQUxMX0NFTExTX1BFUl9CTE9DSzsKLSAgICBzdGF0aWMg
Y29uc3Qgc2l6ZV90IGJpdG1hcFNoaWZ0ID0gMTsKLSAgICB0eXBlZGVmIFNtYWxsQ29sbGVjdG9y
Q2VsbCBDZWxsOwotICAgIHR5cGVkZWYgU21hbGxDZWxsQ29sbGVjdG9yQmxvY2sgQmxvY2s7Ci19
OwotCi10ZW1wbGF0ZSA8SGVhcDo6SGVhcFR5cGUgaGVhcFR5cGU+IEFMV0FZU19JTkxJTkUgdm9p
ZCogSGVhcDo6aGVhcEFsbG9jYXRlKHNpemVfdCBzKQordGVtcGxhdGUgPEhlYXBUeXBlIGhlYXBU
eXBlPiBBTFdBWVNfSU5MSU5FIHZvaWQqIEhlYXA6OmhlYXBBbGxvY2F0ZShzaXplX3QgcykKIHsK
ICAgICB0eXBlZGVmIHR5cGVuYW1lIEhlYXBDb25zdGFudHM8aGVhcFR5cGU+OjpCbG9jayBCbG9j
azsKICAgICB0eXBlZGVmIHR5cGVuYW1lIEhlYXBDb25zdGFudHM8aGVhcFR5cGU+OjpDZWxsIENl
bGw7CkBAIC04NTksMTMgKzg0MiwxMyBAQCB2b2lkIEhlYXA6Om1hcmtQcm90ZWN0ZWRPYmplY3Rz
KCkKICAgICAgICAgbV9wcm90ZWN0ZWRWYWx1ZXNNdXRleC0+dW5sb2NrKCk7CiB9CiAKLXRlbXBs
YXRlIDxIZWFwOjpIZWFwVHlwZSBoZWFwVHlwZT4gc2l6ZV90IEhlYXA6OnN3ZWVwKCkKK3RlbXBs
YXRlIDxIZWFwVHlwZSBoZWFwVHlwZT4gc2l6ZV90IEhlYXA6OnN3ZWVwKCkKIHsKICAgICB0eXBl
ZGVmIHR5cGVuYW1lIEhlYXBDb25zdGFudHM8aGVhcFR5cGU+OjpCbG9jayBCbG9jazsKICAgICB0
eXBlZGVmIHR5cGVuYW1lIEhlYXBDb25zdGFudHM8aGVhcFR5cGU+OjpDZWxsIENlbGw7CiAKICAg
ICAvLyBTV0VFUDogZGVsZXRlIGV2ZXJ5dGhpbmcgd2l0aCBhIHplcm8gcmVmY291bnQgKGdhcmJh
Z2UpIGFuZCB1bm1hcmsgZXZlcnl0aGluZyBlbHNlCi0gICAgQ29sbGVjdG9ySGVhcCYgaGVhcCA9
IGhlYXBUeXBlID09IEhlYXA6OlByaW1hcnlIZWFwID8gcHJpbWFyeUhlYXAgOiBudW1iZXJIZWFw
OworICAgIENvbGxlY3RvckhlYXAmIGhlYXAgPSBoZWFwVHlwZSA9PSBQcmltYXJ5SGVhcCA/IHBy
aW1hcnlIZWFwIDogbnVtYmVySGVhcDsKICAgICAKICAgICBzaXplX3QgZW1wdHlCbG9ja3MgPSAw
OwogICAgIHNpemVfdCBudW1MaXZlT2JqZWN0cyA9IGhlYXAubnVtTGl2ZU9iamVjdHM7CkBAIC04
ODIsNyArODY1LDcgQEAgdGVtcGxhdGUgPEhlYXA6OkhlYXBUeXBlIGhlYXBUeXBlPiBzaXplXwog
ICAgICAgICAgICAgICAgIGlmICghY3VyQmxvY2stPm1hcmtlZC5nZXQoaSA+PiBIZWFwQ29uc3Rh
bnRzPGhlYXBUeXBlPjo6Yml0bWFwU2hpZnQpKSB7CiAgICAgICAgICAgICAgICAgICAgIENlbGwq
IGNlbGwgPSBjdXJCbG9jay0+Y2VsbHMgKyBpOwogICAgICAgICAgICAgICAgICAgICAKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKGhlYXBUeXBlICE9IEhlYXA6Ok51bWJlckhlYXApIHsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKGhlYXBUeXBlICE9IE51bWJlckhlYXApIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgIEpTQ2VsbCogaW1wID0gcmVpbnRlcnByZXRfY2FzdDxKU0NlbGwqPihjZWxs
KTsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNwZWNpYWwgY2FzZSBmb3IgYWxsb2NhdGVk
IGJ1dCB1bmluaXRpYWxpemVkIG9iamVjdAogICAgICAgICAgICAgICAgICAgICAgICAgLy8gKFdl
IGRvbid0IG5lZWQgdGhpcyBjaGVjayBlYXJsaWVyIGJlY2F1c2Ugbm90aGluZyBwcmlvciB0aGlz
IHBvaW50IApAQCAtOTEwLDcgKzg5Myw3IEBAIHRlbXBsYXRlIDxIZWFwOjpIZWFwVHlwZSBoZWFw
VHlwZT4gc2l6ZV8KICAgICAgICAgICAgICAgICAgICAgKyttaW5pbXVtQ2VsbHNUb1Byb2Nlc3M7
CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFjdXJC
bG9jay0+bWFya2VkLmdldChpID4+IEhlYXBDb25zdGFudHM8aGVhcFR5cGU+OjpiaXRtYXBTaGlm
dCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoZWFwVHlwZSAhPSBIZWFwOjpOdW1i
ZXJIZWFwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGVhcFR5cGUgIT0gTnVtYmVy
SGVhcCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTQ2VsbCogaW1wID0gcmVpbnRl
cnByZXRfY2FzdDxKU0NlbGwqPihjZWxsKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bXAtPn5KU0NlbGwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTEwODYsNCArMTA2
OSwxNCBAQCBib29sIEhlYXA6OmlzQnVzeSgpCiAgICAgcmV0dXJuIChwcmltYXJ5SGVhcC5vcGVy
YXRpb25JblByb2dyZXNzICE9IE5vT3BlcmF0aW9uKSB8IChudW1iZXJIZWFwLm9wZXJhdGlvbklu
UHJvZ3Jlc3MgIT0gTm9PcGVyYXRpb24pOwogfQogCitIZWFwOjppdGVyYXRvciBIZWFwOjpwcmlt
YXJ5SGVhcEJlZ2luKCkKK3sKKyAgICByZXR1cm4gaXRlcmF0b3IocHJpbWFyeUhlYXAuYmxvY2tz
LCBwcmltYXJ5SGVhcC5ibG9ja3MgKyBwcmltYXJ5SGVhcC51c2VkQmxvY2tzKTsKK30KKworSGVh
cDo6aXRlcmF0b3IgSGVhcDo6cHJpbWFyeUhlYXBFbmQoKQoreworICAgIHJldHVybiBpdGVyYXRv
cihwcmltYXJ5SGVhcC5ibG9ja3MgKyBwcmltYXJ5SGVhcC51c2VkQmxvY2tzLCBwcmltYXJ5SGVh
cC5ibG9ja3MgKyBwcmltYXJ5SGVhcC51c2VkQmxvY2tzKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
SlNDCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvY29sbGVjdG9yLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
SmF2YVNjcmlwdENvcmUva2pzL2NvbGxlY3Rvci5oCShyZXZpc2lvbiAzNzU4NikKKysrIEphdmFT
Y3JpcHRDb3JlL2tqcy9jb2xsZWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsOSBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBKU1ZhbHVlOwogCiAgICAgZW51bSBPcGVyYXRp
b25JblByb2dyZXNzIHsgTm9PcGVyYXRpb24sIEFsbG9jYXRpb24sIENvbGxlY3Rpb24gfTsKKyAg
ICBlbnVtIEhlYXBUeXBlIHsgUHJpbWFyeUhlYXAsIE51bWJlckhlYXAgfTsKKworICAgIHRlbXBs
YXRlIDxIZWFwVHlwZT4gY2xhc3MgQ29sbGVjdG9ySGVhcEl0ZXJhdG9yOwogCiAgICAgc3RydWN0
IENvbGxlY3RvckhlYXAgewogICAgICAgICBDb2xsZWN0b3JCbG9jayoqIGJsb2NrczsKQEAgLTYy
LDcgKzY1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSGVhcCA6IE5vbmNvcHlhYmxl
IHsKICAgICBwdWJsaWM6CiAgICAgICAgIGNsYXNzIFRocmVhZDsKLSAgICAgICAgZW51bSBIZWFw
VHlwZSB7IFByaW1hcnlIZWFwLCBOdW1iZXJIZWFwIH07CisgICAgICAgIHR5cGVkZWYgQ29sbGVj
dG9ySGVhcEl0ZXJhdG9yPFByaW1hcnlIZWFwPiBpdGVyYXRvcjsKIAogICAgICAgICB2b2lkIGRl
c3Ryb3koKTsKIApAQCAtMTA4LDEwICsxMTEsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAg
ICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxEYXRh
OyB9CiAgICAgICAgIHN0YXRpYyBib29sIGlzTnVtYmVyKEpTQ2VsbCopOworICAgICAgICAKKyAg
ICAgICAgLy8gSXRlcmF0b3JzIGZvciB0aGUgb2JqZWN0IGhlYXAuCisgICAgICAgIGl0ZXJhdG9y
IHByaW1hcnlIZWFwQmVnaW4oKTsKKyAgICAgICAgaXRlcmF0b3IgcHJpbWFyeUhlYXBFbmQoKTsK
IAogICAgIHByaXZhdGU6Ci0gICAgICAgIHRlbXBsYXRlIDxIZWFwOjpIZWFwVHlwZSBoZWFwVHlw
ZT4gdm9pZCogaGVhcEFsbG9jYXRlKHNpemVfdCk7Ci0gICAgICAgIHRlbXBsYXRlIDxIZWFwOjpI
ZWFwVHlwZSBoZWFwVHlwZT4gc2l6ZV90IHN3ZWVwKCk7CisgICAgICAgIHRlbXBsYXRlIDxIZWFw
VHlwZSBoZWFwVHlwZT4gdm9pZCogaGVhcEFsbG9jYXRlKHNpemVfdCk7CisgICAgICAgIHRlbXBs
YXRlIDxIZWFwVHlwZSBoZWFwVHlwZT4gc2l6ZV90IHN3ZWVwKCk7CiAgICAgICAgIHN0YXRpYyBj
b25zdCBDb2xsZWN0b3JCbG9jayogY2VsbEJsb2NrKGNvbnN0IEpTQ2VsbCopOwogICAgICAgICBz
dGF0aWMgQ29sbGVjdG9yQmxvY2sqIGNlbGxCbG9jayhKU0NlbGwqKTsKICAgICAgICAgc3RhdGlj
IHNpemVfdCBjZWxsT2Zmc2V0KGNvbnN0IEpTQ2VsbCopOwpAQCAtMjA2LDcgKzIxMyw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBDb2xsZWN0b3JDZWxsKiBmcmVlTGlzdDsKICAgICAgICAg
Q29sbGVjdG9yQml0bWFwIG1hcmtlZDsKICAgICAgICAgSGVhcCogaGVhcDsKLSAgICAgICAgSGVh
cDo6SGVhcFR5cGUgdHlwZTsKKyAgICAgICAgSGVhcFR5cGUgdHlwZTsKICAgICB9OwogCiAgICAg
Y2xhc3MgU21hbGxDZWxsQ29sbGVjdG9yQmxvY2sgewpAQCAtMjE2LDkgKzIyMywyNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgU21hbGxDb2xsZWN0b3JDZWxsKiBmcmVlTGlzdDsKICAgICAg
ICAgQ29sbGVjdG9yQml0bWFwIG1hcmtlZDsKICAgICAgICAgSGVhcCogaGVhcDsKLSAgICAgICAg
SGVhcDo6SGVhcFR5cGUgdHlwZTsKKyAgICAgICAgSGVhcFR5cGUgdHlwZTsKICAgICB9OwogICAg
IAorICAgIHRlbXBsYXRlIDxIZWFwVHlwZSBoZWFwVHlwZT4gc3RydWN0IEhlYXBDb25zdGFudHM7
CisKKyAgICB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgSGVhcENvbnN0YW50czxQcmltYXJ5SGVhcD4gewor
ICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGNlbGxTaXplID0gQ0VMTF9TSVpFOworICAgICAg
ICBzdGF0aWMgY29uc3Qgc2l6ZV90IGNlbGxzUGVyQmxvY2sgPSBDRUxMU19QRVJfQkxPQ0s7Cisg
ICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYml0bWFwU2hpZnQgPSAwOworICAgICAgICB0eXBl
ZGVmIENvbGxlY3RvckNlbGwgQ2VsbDsKKyAgICAgICAgdHlwZWRlZiBDb2xsZWN0b3JCbG9jayBC
bG9jazsKKyAgICB9OworCisgICAgdGVtcGxhdGUgPD4gc3RydWN0IEhlYXBDb25zdGFudHM8TnVt
YmVySGVhcD4geworICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGNlbGxTaXplID0gU01BTExf
Q0VMTF9TSVpFOworICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGNlbGxzUGVyQmxvY2sgPSBT
TUFMTF9DRUxMU19QRVJfQkxPQ0s7CisgICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYml0bWFw
U2hpZnQgPSAxOworICAgICAgICB0eXBlZGVmIFNtYWxsQ29sbGVjdG9yQ2VsbCBDZWxsOworICAg
ICAgICB0eXBlZGVmIFNtYWxsQ2VsbENvbGxlY3RvckJsb2NrIEJsb2NrOworICAgIH07CisKICAg
ICBpbmxpbmUgYm9vbCBIZWFwOjppc051bWJlcihKU0NlbGwqIGNlbGwpCiAgICAgewogICAgICAg
ICBDb2xsZWN0b3JCbG9jayogYmxvY2sgPSBIZWFwOjpjZWxsQmxvY2soY2VsbCk7CkluZGV4OiBK
YXZhU2NyaXB0Q29yZS9ranMvaW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3Jp
cHRDb3JlL2tqcy9pbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDM3NTg2KQorKysgSmF2YVNjcmlw
dENvcmUva2pzL2ludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBA
QCBDb21wbGV0aW9uIEludGVycHJldGVyOjpjaGVja1N5bnRheChFeGVjCiAgICAgaW50IGVyckxp
bmU7CiAgICAgVVN0cmluZyBlcnJNc2c7CiAKLSAgICBSZWZQdHI8UHJvZ3JhbU5vZGU+IHByb2dO
b2RlID0gZXhlYy0+Z2xvYmFsRGF0YSgpLnBhcnNlci0+cGFyc2U8UHJvZ3JhbU5vZGU+KGV4ZWMs
IHNvdXJjZSwgJmVyckxpbmUsICZlcnJNc2cpOworICAgIFJlZlB0cjxQcm9ncmFtTm9kZT4gcHJv
Z05vZGUgPSBleGVjLT5nbG9iYWxEYXRhKCkucGFyc2VyLT5wYXJzZTxQcm9ncmFtTm9kZT4oZXhl
YywgZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpLT5kZWJ1Z2dlcigpLCBzb3VyY2UsICZlcnJM
aW5lLCAmZXJyTXNnKTsKICAgICBpZiAoIXByb2dOb2RlKQogICAgICAgICByZXR1cm4gQ29tcGxl
dGlvbihUaHJvdywgRXJyb3I6OmNyZWF0ZShleGVjLCBTeW50YXhFcnJvciwgZXJyTXNnLCBlcnJM
aW5lLCBzb3VyY2UucHJvdmlkZXIoKS0+YXNJRCgpLCBzb3VyY2UucHJvdmlkZXIoKS0+dXJsKCkp
KTsKICAgICByZXR1cm4gQ29tcGxldGlvbihOb3JtYWwpOwpAQCAtNTgsNyArNTgsNyBAQCBDb21w
bGV0aW9uIEludGVycHJldGVyOjpldmFsdWF0ZShFeGVjU3RhCiAgICAgCiAgICAgaW50IGVyckxp
bmU7CiAgICAgVVN0cmluZyBlcnJNc2c7Ci0gICAgUmVmUHRyPFByb2dyYW1Ob2RlPiBwcm9ncmFt
Tm9kZSA9IGV4ZWMtPmdsb2JhbERhdGEoKS5wYXJzZXItPnBhcnNlPFByb2dyYW1Ob2RlPihleGVj
LCBzb3VyY2UsICZlcnJMaW5lLCAmZXJyTXNnKTsKKyAgICBSZWZQdHI8UHJvZ3JhbU5vZGU+IHBy
b2dyYW1Ob2RlID0gZXhlYy0+Z2xvYmFsRGF0YSgpLnBhcnNlci0+cGFyc2U8UHJvZ3JhbU5vZGU+
KGV4ZWMsIGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKS0+ZGVidWdnZXIoKSwgc291cmNlLCAm
ZXJyTGluZSwgJmVyck1zZyk7CiAKICAgICBpZiAoIXByb2dyYW1Ob2RlKQogICAgICAgICByZXR1
cm4gQ29tcGxldGlvbihUaHJvdywgRXJyb3I6OmNyZWF0ZShleGVjLCBTeW50YXhFcnJvciwgZXJy
TXNnLCBlcnJMaW5lLCBzb3VyY2UucHJvdmlkZXIoKS0+YXNJRCgpLCBzb3VyY2UucHJvdmlkZXIo
KS0+dXJsKCkpKTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9sZXhlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIEphdmFTY3JpcHRDb3JlL2tqcy9sZXhlci5oCShyZXZpc2lvbiAzNzU4NikKKysrIEphdmFT
Y3JpcHRDb3JlL2tqcy9sZXhlci5oCSh3b3JraW5nIGNvcHkpCkBAIC04OCw3ICs4OCw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBib29sIHNhd0Vycm9yKCkgY29uc3QgeyByZXR1cm4gbV9l
cnJvcjsgfQogCiAgICAgICAgIHZvaWQgY2xlYXIoKTsKLSAgICAgICAgU291cmNlQ29kZSBzb3Vy
Y2VDb2RlKGludCBvcGVuQnJhY2UsIGludCBjbG9zZUJyYWNlLCBpbnQgZmlyc3RMaW5lKSB7IHJl
dHVybiBTb3VyY2VDb2RlKG1fc291cmNlLT5wcm92aWRlcigpLCBvcGVuQnJhY2UgKyAxLCBjbG9z
ZUJyYWNlLCBmaXJzdExpbmUpOyB9CisgICAgICAgIFNvdXJjZUNvZGUgc291cmNlQ29kZShpbnQg
b3BlbkJyYWNlLCBpbnQgY2xvc2VCcmFjZSwgaW50IGZpcnN0TGluZSkgeyByZXR1cm4gU291cmNl
Q29kZShtX3NvdXJjZS0+cHJvdmlkZXIoKSwgbV9zb3VyY2UtPnN0YXJ0T2Zmc2V0KCkgKyBvcGVu
QnJhY2UgKyAxLCBtX3NvdXJjZS0+c3RhcnRPZmZzZXQoKSArIGNsb3NlQnJhY2UsIGZpcnN0TGlu
ZSk7IH0KIAogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKU0dsb2JhbERhdGE7
CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvbm9kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL2tqcy9ub2Rlcy5jcHAJKHJldmlzaW9uIDM3NTg2KQorKysgSmF2YVNjcmlwdENv
cmUva2pzL25vZGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc0Niw5ICsxNzQ2LDEwIEBAIEV2
YWxOb2RlKiBFdmFsTm9kZTo6Y3JlYXRlKEpTR2xvYmFsRGF0YSoKIAogLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9uQm9keU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KIAotRnVuY3Rpb25Cb2R5Tm9kZTo6RnVuY3Rpb25Cb2R5Tm9kZShKU0dsb2JhbERh
dGEqIGdsb2JhbERhdGEsIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sqIHZhclN0
YWNrLCBGdW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50
IG51bUNvbnN0YW50cykKLSAgICA6IFNjb3BlTm9kZShnbG9iYWxEYXRhLCBTb3VyY2VDb2RlKCks
IGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCBmZWF0dXJlcywgbnVtQ29uc3RhbnRzKQor
RnVuY3Rpb25Cb2R5Tm9kZTo6RnVuY3Rpb25Cb2R5Tm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGEsIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sqIHZhclN0YWNrLCBGdW5jdGlv
blN0YWNrKiBmdW5jU3RhY2ssIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIENvZGVGZWF0
dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cykKKyAgICA6IFNjb3BlTm9kZShnbG9iYWxE
YXRhLCBzb3VyY2VDb2RlLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgZmVhdHVyZXMs
IG51bUNvbnN0YW50cykKICAgICAsIG1fcGFyYW1ldGVycygwKQorICAgICwgbV9wYXJhbWV0ZXJD
b3VudCgwKQogICAgICwgbV9yZWZDb3VudCgwKQogewogfQpAQCAtMTc2NSwxMiArMTc2NiwxNCBA
QCB2b2lkIEZ1bmN0aW9uQm9keU5vZGU6OmZpbmlzaFBhcnNpbmcoY29uCiAgICAgZm9yIChQYXJh
bWV0ZXJOb2RlKiBwYXJhbWV0ZXIgPSBmaXJzdFBhcmFtZXRlcjsgcGFyYW1ldGVyOyBwYXJhbWV0
ZXIgPSBwYXJhbWV0ZXItPm5leHRQYXJhbSgpKQogICAgICAgICBwYXJhbWV0ZXJzLmFwcGVuZChw
YXJhbWV0ZXItPmlkZW50KCkpOwogICAgIHNpemVfdCBjb3VudCA9IHBhcmFtZXRlcnMuc2l6ZSgp
OwotICAgIGZpbmlzaFBhcnNpbmcoc291cmNlLCBwYXJhbWV0ZXJzLnJlbGVhc2VCdWZmZXIoKSwg
Y291bnQpOworCisgICAgc2V0U291cmNlKHNvdXJjZSk7CisgICAgZmluaXNoUGFyc2luZyhwYXJh
bWV0ZXJzLnJlbGVhc2VCdWZmZXIoKSwgY291bnQpOwogfQogCi12b2lkIEZ1bmN0aW9uQm9keU5v
ZGU6OmZpbmlzaFBhcnNpbmcoY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBJZGVudGlmaWVyKiBw
YXJhbWV0ZXJzLCBzaXplX3QgcGFyYW1ldGVyQ291bnQpCit2b2lkIEZ1bmN0aW9uQm9keU5vZGU6
OmZpbmlzaFBhcnNpbmcoSWRlbnRpZmllciogcGFyYW1ldGVycywgc2l6ZV90IHBhcmFtZXRlckNv
dW50KQogewotICAgIHNldFNvdXJjZShzb3VyY2UpOworICAgIEFTU0VSVCghc291cmNlKCkuaXNO
dWxsKCkpOwogICAgIG1fcGFyYW1ldGVycyA9IHBhcmFtZXRlcnM7CiAgICAgbV9wYXJhbWV0ZXJD
b3VudCA9IHBhcmFtZXRlckNvdW50OwogfQpAQCAtMTc4MywxMiArMTc4NiwxMiBAQCB2b2lkIEZ1
bmN0aW9uQm9keU5vZGU6Om1hcmsoKQogCiBGdW5jdGlvbkJvZHlOb2RlKiBGdW5jdGlvbkJvZHlO
b2RlOjpjcmVhdGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBTb3VyY2VFbGVtZW50cyogY2hp
bGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBDb2Rl
RmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpCiB7Ci0gICAgcmV0dXJuIG5ldyBG
dW5jdGlvbkJvZHlOb2RlKGdsb2JhbERhdGEsIGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNr
LCBmZWF0dXJlcywgbnVtQ29uc3RhbnRzKTsKKyAgICByZXR1cm4gbmV3IEZ1bmN0aW9uQm9keU5v
ZGUoZ2xvYmFsRGF0YSwgY2hpbGRyZW4sIHZhclN0YWNrLCBmdW5jU3RhY2ssIFNvdXJjZUNvZGUo
KSwgZmVhdHVyZXMsIG51bUNvbnN0YW50cyk7CiB9CiAKLUZ1bmN0aW9uQm9keU5vZGUqIEZ1bmN0
aW9uQm9keU5vZGU6OmNyZWF0ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIFNvdXJjZUVsZW1l
bnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sqIHZhclN0YWNrLCBGdW5jdGlvblN0YWNrKiBmdW5jU3Rh
Y2ssIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25z
dGFudHMpCitGdW5jdGlvbkJvZHlOb2RlKiBGdW5jdGlvbkJvZHlOb2RlOjpjcmVhdGUoSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2
YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBjb25zdCBTb3VyY2VDb2RlJiBzb3Vy
Y2VDb2RlLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpCiB7Ci0gICAg
cmV0dXJuIG5ldyBGdW5jdGlvbkJvZHlOb2RlKGdsb2JhbERhdGEsIGNoaWxkcmVuLCB2YXJTdGFj
aywgZnVuY1N0YWNrLCBmZWF0dXJlcywgbnVtQ29uc3RhbnRzKTsKKyAgICByZXR1cm4gbmV3IEZ1
bmN0aW9uQm9keU5vZGUoZ2xvYmFsRGF0YSwgY2hpbGRyZW4sIHZhclN0YWNrLCBmdW5jU3RhY2ss
IHNvdXJjZUNvZGUsIGZlYXR1cmVzLCBudW1Db25zdGFudHMpOwogfQogCiB2b2lkIEZ1bmN0aW9u
Qm9keU5vZGU6OmdlbmVyYXRlQ29kZShTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbk5vZGUpCkBA
IC0xODUwLDYgKzE4NTMsMTMgQEAgVVN0cmluZyBGdW5jdGlvbkJvZHlOb2RlOjpwYXJhbVN0cmlu
ZygpIAogICAgIHJldHVybiBzOwogfQogCitJZGVudGlmaWVyKiBGdW5jdGlvbkJvZHlOb2RlOjpj
b3B5UGFyYW1ldGVycygpCit7CisgICAgSWRlbnRpZmllciogcGFyYW1ldGVycyA9IHN0YXRpY19j
YXN0PElkZW50aWZpZXIqPihmYXN0TWFsbG9jKG1fcGFyYW1ldGVyQ291bnQgKiBzaXplb2YoSWRl
bnRpZmllcikpKTsKKyAgICBWZWN0b3JDb3BpZXI8ZmFsc2UsIElkZW50aWZpZXI+Ojp1bmluaXRp
YWxpemVkQ29weShtX3BhcmFtZXRlcnMsIG1fcGFyYW1ldGVycyArIG1fcGFyYW1ldGVyQ291bnQs
IHBhcmFtZXRlcnMpOworICAgIHJldHVybiBwYXJhbWV0ZXJzOworfQorCiAvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVuY0RlY2xOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQogCiBKU0Z1bmN0aW9uKiBGdW5jRGVjbE5vZGU6Om1ha2VGdW5jdGlvbihFeGVj
U3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluKQpJbmRleDogSmF2YVNjcmlw
dENvcmUva2pzL25vZGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL25vZGVz
LmgJKHJldmlzaW9uIDM3NTg2KQorKysgSmF2YVNjcmlwdENvcmUva2pzL25vZGVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTIxNzQsNyArMjE3NCw2IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAg
IHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBKU0NfRkFTVF9DQUxM
OwogICAgICAgICAKLSAgICAgICAgdm9pZCBzZXRTb3VyY2UoY29uc3QgU291cmNlQ29kZSYgc291
cmNlKSB7IG1fc291cmNlID0gc291cmNlOyB9CiAgICAgICAgIGNvbnN0IFNvdXJjZUNvZGUmIHNv
dXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlOyB9CiAgICAgICAgIGNvbnN0IFVTdHJpbmcm
IHNvdXJjZVVSTCgpIGNvbnN0IEpTQ19GQVNUX0NBTEwgeyByZXR1cm4gbV9zb3VyY2UucHJvdmlk
ZXIoKS0+dXJsKCk7IH0KICAgICAgICAgaW50cHRyX3Qgc291cmNlSUQoKSBjb25zdCB7IHJldHVy
biBtX3NvdXJjZS5wcm92aWRlcigpLT5hc0lEKCk7IH0KQEAgLTIxOTYsNiArMjE5NSw4IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHZvaWQg
c2V0U291cmNlKGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkgeyBtX3NvdXJjZSA9IHNvdXJjZTsg
fQorCiAgICAgICAgIFZhclN0YWNrIG1fdmFyU3RhY2s7CiAgICAgICAgIEZ1bmN0aW9uU3RhY2sg
bV9mdW5jdGlvblN0YWNrOwogCkBAIC0yMjU1LDggKzIyNTYsOSBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgfkZ1bmN0aW9uQm9keU5vZGUoKTsKIAogICAgICAgICBjb25zdCBJZGVudGlmaWVy
KiBwYXJhbWV0ZXJzKCkgY29uc3QgSlNDX0ZBU1RfQ0FMTCB7IHJldHVybiBtX3BhcmFtZXRlcnM7
IH0KLSAgICAgICAgc2l6ZV90IHBhcmFtZXRlckNvdW50KCkgeyByZXR1cm4gbV9wYXJhbWV0ZXJD
b3VudDsgfQorICAgICAgICBzaXplX3QgcGFyYW1ldGVyQ291bnQoKSBjb25zdCB7IHJldHVybiBt
X3BhcmFtZXRlckNvdW50OyB9CiAgICAgICAgIFVTdHJpbmcgcGFyYW1TdHJpbmcoKSBjb25zdCBK
U0NfRkFTVF9DQUxMOworICAgICAgICBJZGVudGlmaWVyKiBjb3B5UGFyYW1ldGVycygpOwogCiAg
ICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdENvZGUoQ29kZUdlbmVyYXRvciYsIFJlZ2lz
dGVySUQqID0gMCkgSlNDX0ZBU1RfQ0FMTDsKICAgICAgICAgCkBAIC0yMjc5LDcgKzIyODEsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBtYXJrKCk7CiAKICAgICAgICAgdm9pZCBm
aW5pc2hQYXJzaW5nKGNvbnN0IFNvdXJjZUNvZGUmLCBQYXJhbWV0ZXJOb2RlKik7Ci0gICAgICAg
IHZvaWQgZmluaXNoUGFyc2luZyhjb25zdCBTb3VyY2VDb2RlJiwgSWRlbnRpZmllciogcGFyYW1l
dGVycywgc2l6ZV90IHBhcmFtZXRlckNvdW50KTsKKyAgICAgICAgdm9pZCBmaW5pc2hQYXJzaW5n
KElkZW50aWZpZXIqIHBhcmFtZXRlcnMsIHNpemVfdCBwYXJhbWV0ZXJDb3VudCk7CiAgICAgICAg
IAogICAgICAgICBVU3RyaW5nIHRvU291cmNlU3RyaW5nKCkgY29uc3QgSlNDX0ZBU1RfQ0FMTCB7
IHJldHVybiBVU3RyaW5nKCJ7IikgKyBzb3VyY2UoKS50b1N0cmluZygpICsgVVN0cmluZygifSIp
OyB9CiAKQEAgLTIyOTgsNyArMjMwMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAK
ICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIEZ1bmN0aW9uQm9keU5vZGUoSlNHbG9iYWxEYXRhKiwg
U291cmNlRWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBDb2RlRmVhdHVyZXMs
IGludCBudW1Db25zdGFudHMpIEpTQ19GQVNUX0NBTEw7CisgICAgICAgIEZ1bmN0aW9uQm9keU5v
ZGUoSlNHbG9iYWxEYXRhKiwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3Rh
Y2sqLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKSBK
U0NfRkFTVF9DQUxMOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBnZW5lcmF0ZUNvZGUo
U2NvcGVDaGFpbk5vZGUqKSBKU0NfRkFTVF9DQUxMOwpJbmRleDogV2ViQ29yZS9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDM3NjEwKQorKysgV2Vi
Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0MiBAQAorMjAwOC0xMC0x
NSAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeGVkIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM0NQorICAgICAgICBTdGFydCB0aGUgZGVidWdnZXIgd2l0
aG91dCByZWxvYWRpbmcgdGhlIGluc3BlY3RlZCBwYWdlCisKKyAgICAgICAgKiBXZWJDb3JlLmJh
c2UuZXhwOiBOZXcgc3ltYm9scy4KKworICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL2tqcy9D
b2xsZWN0b3JIZWFwSXRlcmF0b3IuaDogQ29waWVkIGZyb20gRm9yd2FyZGluZ0hlYWRlcnMva2pz
L3VzdHJpbmcuaC4KKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9ranMvUGFyc2VyLmg6IENv
cGllZCBmcm9tIEZvcndhcmRpbmdIZWFkZXJzL2tqcy91c3RyaW5nLmguCisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBOZXcgZm9yd2FyZGluZyBoZWFkZXJzLgor
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6c2V0V2luZG93VmlzaWJsZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjp3aW5kb3dTY3JpcHRPYmplY3RBdmFpbGFi
bGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6c3RhcnREZWJ1Z2dp
bmcpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmg6IFJlbmFtZWQg
c3RhcnREZWJ1Z2dpbmdBbmRSZWxvYWRJbnNwZWN0ZWRQYWdlCisgICAgICAgIHRvIHN0YXJ0RGVi
dWdnaW5nLCBhbmQgY2hhbmdlZCBpdHMgYmVoYXZpb3IgdG8gbWF0Y2guCisKKyAgICAgICAgKiBp
bnNwZWN0b3IvSmF2YVNjcmlwdERlYnVnTGlzdGVuZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SmF2YVNjcmlwdERlYnVnU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkphdmFTY3JpcHRE
ZWJ1Z1NlcnZlcjo6SmF2YVNjcmlwdERlYnVnU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6Okph
dmFTY3JpcHREZWJ1Z1NlcnZlcjo6YWRkTGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6SmF2
YVNjcmlwdERlYnVnU2VydmVyOjpyZW1vdmVMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpK
YXZhU2NyaXB0RGVidWdTZXJ2ZXI6OnJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKToKKyAgICAgICAg
KFdlYkNvcmU6OkphdmFTY3JpcHREZWJ1Z1NlcnZlcjo6d2lsbEFkZEZpcnN0TGlzdGVuZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SmF2YVNjcmlwdERlYnVnU2VydmVyOjpkaWRSZW1vdmVMYXN0TGlz
dGVuZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9KYXZhU2NyaXB0RGVidWdTZXJ2ZXIuaDogUmVm
YWN0b3JlZCB0aGUKKyAgICAgICAgSmF2YVNjcmlwdERlYnVnU2VydmVyIHRvIGNlbnRyYWxpemUg
aGFuZGxpbmcgb2YgYWRkaW5nIHRoZSBmaXJzdCBsaXN0ZW5lcgorICAgICAgICBhbmQgcmVtb3Zp
bmcgdGhlIGxhc3QuIFRoZW4sIGFkZGVkIGEgZmVhdHVyZSB0byByZWNvbXBpbGUgYWxsIEpTIGZ1
bmN0aW9ucworICAgICAgICBpbiB0aGVzZSBjYXNlcy4gVGhpcyBhbGxvd3MgdXMgdG8gZHluYW1p
Y2FsbHkgYWRkIGFuZCByZW1vdmUgaG9va3MgbGlrZQorICAgICAgICB0aGUgZGVidWdnZXIgaG9v
a3Mgd2l0aG91dCByZWxvYWRpbmcgdGhlIHBhZ2UuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL1NjcmlwdHNQYW5lbC5qczoKKyAgICAgICAgKiBFbmdsaXNoLmxwcm9qL2xvY2FsaXpl
ZFN0cmluZ3MuanM6IFVwZGF0ZWQgZm9yIHN0YXJ0RGVidWdnaW5nQW5kUmVsb2FkSW5zcGVjdGVk
UGFnZSA9PgorICAgICAgICBzdGFydERlYnVnZ2luZyByZW5hbWUuIFJlbW92ZWQgYWxsIFVJIHRo
YXQgY2xhaW1lZCB0aGF0IHN0YXJ0aW5nIHRoZQorICAgICAgICBkZWJ1Z2dlciB3b3VsZCByZWxv
YWQgdGhlIHBhZ2UuCisKIDIwMDgtMTAtMTUgIE1hcmNvIEJhcmlzaW9uZSAgPG1hcmNvLmJhcmlz
aW9uZUBjb2xsYWJvcmEuY28udWs+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSG9sZ2VyIEZyZXl0
aGVyLgpJbmRleDogV2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvV2ViQ29yZS5iYXNlLmV4cAkocmV2aXNpb24gMzc1ODYpCisrKyBXZWJDb3JlL1dlYkNvcmUu
YmFzZS5leHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMCw2ICsxMzAsOCBAQCBfX1pON1dlYkNvcmUx
MENhY2hlZFBhZ2UyNXNldENhY2hlZFBhZ2VQCiBfX1pON1dlYkNvcmUxMEV2ZW50TmFtZXMxMGNs
aWNrRXZlbnRFCiBfX1pON1dlYkNvcmUxMEV2ZW50TmFtZXMxMmtleWRvd25FdmVudEUKIF9fWk43
V2ViQ29yZTEwTW91c2VFdmVudEMxRVJLTlNfMTJBdG9taWNTdHJpbmdFYmJOM1dURjEwUGFzc1Jl
ZlB0cklOU185RE9NV2luZG93RUVFaWlpaWliYmJidE5TNV9JTlNfMTVFdmVudFRhcmdldE5vZGVF
RUVOUzVfSU5TXzlDbGlwYm9hcmRFRUViCitfX1pON1dlYkNvcmUxMFNjcm9sbFZpZXcxN3NldFNj
cm9sbGJhck1vZGVzRU5TXzEzU2Nyb2xsYmFyTW9kZUVTMV8KK19fWk43V2ViQ29yZTEwU2Nyb2xs
VmlldzIwc2V0Q2FuSGF2ZVNjcm9sbGJhcnNFYgogX19aTjdXZWJDb3JlMTBTdHJpbmdJbXBsN3Jl
cGxhY2VFdHQKIF9fWk43V2ViQ29yZTEwU3RyaW5nSW1wbEQxRXYKIF9fWk43V2ViQ29yZTEwU3Ry
aW5nSW1wbGN2UDhOU1N0cmluZ0V2CkBAIC0zNzcsMTAgKzM3OSwxMCBAQCBfX1pON1dlYkNvcmUx
OUNTU1N0eWxlRGVjbGFyYXRpb24xMXNldFByCiBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRy
b2xsZXIxMmF0dGFjaFdpbmRvd0V2CiBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIx
MmRldGFjaFdpbmRvd0V2CiBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIxM3N0b3BE
ZWJ1Z2dpbmdFdgorX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMTRzdGFydERlYnVn
Z2luZ0V2CiBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIxNnNldFdpbmRvd1Zpc2li
bGVFYmIKIF9fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjI2c3RvcFVzZXJJbml0aWF0
ZWRQcm9maWxpbmdFdgogX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMjdzdGFydFVz
ZXJJbml0aWF0ZWRQcm9maWxpbmdFdgotX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVy
MzZzdGFydERlYnVnZ2luZ0FuZFJlbG9hZEluc3BlY3RlZFBhZ2VFdgogX19aTjdXZWJDb3JlMTlJ
bnNwZWN0b3JDb250cm9sbGVyNHNob3dFdgogX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9s
bGVyNWNsb3NlRXYKIF9fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjdpbnNwZWN0RVBO
U180Tm9kZUUKQEAgLTM5OCw2ICs0MDAsOCBAQCBfX1pON1dlYkNvcmUxOVRleHRSZXNvdXJjZURl
Y29kZXJDMUVSS05TCiBfX1pON1dlYkNvcmUxOVRleHRSZXNvdXJjZURlY29kZXJEMUV2CiBfX1pO
N1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMjRzZXRFeHBlY3RlZENvbnRlbnRMZW5ndGhF
eAogX19aTjdXZWJDb3JlMjFDb250ZXh0TWVudUNvbnRyb2xsZXIxNmNsZWFyQ29udGV4dE1lbnVF
dgorX19aTjdXZWJDb3JlMjFKYXZhU2NyaXB0RGVidWdTZXJ2ZXIyM3JlY29tcGlsZUFsbEpTRnVu
Y3Rpb25zRVBOU181VGltZXJJUzBfRUUKK19fWk43V2ViQ29yZTIxSmF2YVNjcmlwdERlYnVnU2Vy
dmVyNnNoYXJlZEV2CiBfX1pON1dlYkNvcmUyMVBsYXRmb3JtS2V5Ym9hcmRFdmVudDI0ZGlzYW1i
aWd1YXRlS2V5RG93bkV2ZW50RU5TMF80VHlwZUViCiBfX1pON1dlYkNvcmUyMVBsYXRmb3JtS2V5
Ym9hcmRFdmVudEMxRVA3TlNFdmVudAogX19aTjdXZWJDb3JlMjFXaW5kb3dzTGF0aW4xRW5jb2Rp
bmdFdgpAQCAtNTMxLDggKzUzNSw4IEBAIF9fWk43V2ViQ29yZTZTdHJpbmdDMUVQOE5TU3RyaW5n
CiBfX1pON1dlYkNvcmU2U3RyaW5nQzFFUEtjCiBfX1pON1dlYkNvcmU2U3RyaW5nQzFFUEtjagog
X19aTjdXZWJDb3JlNlN0cmluZ0MxRVJLTjNKU0M3VVN0cmluZ0UKLV9fWk43V2ViQ29yZTZXaWRn
ZXQxNnJlbW92ZUZyb21QYXJlbnRFdgogX19aTjdXZWJDb3JlNldpZGdldDEyc2V0RnJhbWVSZWN0
RVJLTlNfN0ludFJlY3RFCitfX1pON1dlYkNvcmU2V2lkZ2V0MTZyZW1vdmVGcm9tUGFyZW50RXYK
IF9fWk43V2ViQ29yZTZXaWRnZXQyMHJldGFpblBsYXRmb3JtV2lkZ2V0RXYKIF9fWk43V2ViQ29y
ZTZXaWRnZXQyMXJlbGVhc2VQbGF0Zm9ybVdpZGdldEV2CiBfX1pON1dlYkNvcmU2V2lkZ2V0NGhp
ZGVFdgpAQCAtNjEyLDEwICs2MTYsMTAgQEAgX19aTjdXZWJDb3JlOUZyYW1lVmlldzE0c2V0VHJh
bnNwYXJlbnRFYgogX19aTjdXZWJDb3JlOUZyYW1lVmlldzE1c2V0TWFyZ2luSGVpZ2h0RWkKIF9f
Wk43V2ViQ29yZTlGcmFtZVZpZXcxOHVwZGF0ZUNvbnRyb2xUaW50c0V2CiBfX1pON1dlYkNvcmU5
RnJhbWVWaWV3MjJzZXRCYXNlQmFja2dyb3VuZENvbG9yRU5TXzVDb2xvckUKK19fWk43V2ViQ29y
ZTlGcmFtZVZpZXcyM2xheW91dElmTmVlZGVkUmVjdXJzaXZlRXYKIF9fWk43V2ViQ29yZTlGcmFt
ZVZpZXcyOXNldFNob3VsZFVwZGF0ZVdoaWxlT2Zmc2NyZWVuRWIKIF9fWk43V2ViQ29yZTlGcmFt
ZVZpZXdDMUVQTlNfNUZyYW1lRQotX19aTjdXZWJDb3JlOUhUTUxOYW1lczhmcmFtZVRhZ0UKLV9f
Wk43V2ViQ29yZTlIVE1MTmFtZXM5aWZyYW1lVGFnRQorX19aTjdXZWJDb3JlOUZyYW1lVmlld0Mx
RVBOU181RnJhbWVFUktOU183SW50U2l6ZUUKIF9fWk43V2ViQ29yZTlIVE1MTmFtZXMxMGxpc3Rp
bmdUYWdFCiBfX1pON1dlYkNvcmU5SFRNTE5hbWVzMTNibG9ja3F1b3RlVGFnRQogX19aTjdXZWJD
b3JlOUhUTUxOYW1lczRhVGFnRQpAQCAtNjQzLDggKzY0NywxMCBAQCBfX1pON1dlYkNvcmU5SFRN
TE5hbWVzNmltZ1RhZ0UKIF9fWk43V2ViQ29yZTlIVE1MTmFtZXM2cHJlVGFnRQogX19aTjdXZWJD
b3JlOUhUTUxOYW1lczdmb3JtVGFnRQogX19aTjdXZWJDb3JlOUhUTUxOYW1lczdzcmNBdHRyRQor
X19aTjdXZWJDb3JlOUhUTUxOYW1lczhmcmFtZVRhZ0UKIF9fWk43V2ViQ29yZTlIVE1MTmFtZXM4
aHJlZkF0dHJFCiBfX1pON1dlYkNvcmU5SFRNTE5hbWVzOGlucHV0VGFnRQorX19aTjdXZWJDb3Jl
OUhUTUxOYW1lczlpZnJhbWVUYWdFCiBfX1pON1dlYkNvcmU5UGFnZUNhY2hlMTFzZXRDYXBhY2l0
eUVpCiBfX1pON1dlYkNvcmU5UGFnZUNhY2hlMjdyZWxlYXNlQXV0b3JlbGVhc2VkUGFnZXNOb3dF
dgogX19aTjdXZWJDb3JlOVBhZ2VHcm91cDE0YWRkVmlzaXRlZExpbmtFUEt0bQpAQCAtNjY0LDgg
KzY3MCw2IEBAIF9fWk43V2ViQ29yZXBsRVJLTlNfNlN0cmluZ0VTMl8KIF9fWk5LM0pTQzhCaW5k
aW5nczEwUm9vdE9iamVjdDEyZ2xvYmFsT2JqZWN0RXYKIF9fWk5LN1dlYkNvcmUxMFBsdWdpbkRh
dGExNnN1cHBvcnRzTWltZVR5cGVFUktOU182U3RyaW5nRQogX19aTks3V2ViQ29yZTEwU2Nyb2xs
VmlldzEyZG9jdW1lbnRWaWV3RXYKLV9fWk43V2ViQ29yZTEwU2Nyb2xsVmlldzE3c2V0U2Nyb2xs
YmFyTW9kZXNFTlNfMTNTY3JvbGxiYXJNb2RlRVMxXwotX19aTjdXZWJDb3JlMTBTY3JvbGxWaWV3
MjBzZXRDYW5IYXZlU2Nyb2xsYmFyc0ViCiBfX1pOSzdXZWJDb3JlMTBTY3JvbGxWaWV3MTRzY3Jv
bGxiYXJNb2Rlc0VSTlNfMTNTY3JvbGxiYXJNb2RlRVMyXwogX19aTks3V2ViQ29yZTExQ2FjaGVk
SW1hZ2U1aW1hZ2VFdgogX19aTks3V2ViQ29yZTExQ29udGV4dE1lbnUxOXBsYXRmb3JtRGVzY3Jp
cHRpb25FdgpAQCAtNzExLDYgKzcxNSw4IEBAIF9fWk5LN1dlYkNvcmUxMlNoYXJlZEJ1ZmZlcjRk
YXRhRXYKIF9fWk5LN1dlYkNvcmUxMlNoYXJlZEJ1ZmZlcjRzaXplRXYKIF9fWk5LN1dlYkNvcmUx
MlRleHRFbmNvZGluZzZkZWNvZGVFUEtjbWJSYgogX19aTks3V2ViQ29yZTEyVGV4dEl0ZXJhdG9y
NXJhbmdlRXYKK19fWk5LN1dlYkNvcmUxM0NvbnRhaW5lck5vZGUxNGNoaWxkTm9kZUNvdW50RXYK
K19fWk5LN1dlYkNvcmUxM0NvbnRhaW5lck5vZGU5Y2hpbGROb2RlRWoKIF9fWk5LN1dlYkNvcmUx
M0hpdFRlc3RSZXN1bHQxMGlzTGl2ZUxpbmtFdgogX19aTks3V2ViQ29yZTEzSGl0VGVzdFJlc3Vs
dDEwaXNTZWxlY3RlZEV2CiBfX1pOSzdXZWJDb3JlMTNIaXRUZXN0UmVzdWx0MTF0YXJnZXRGcmFt
ZUV2CkBAIC03MjUsNyArNzMxLDYgQEAgX19aTks3V2ViQ29yZTEzSGl0VGVzdFJlc3VsdDVpbWFn
ZUV2CiBfX1pOSzdXZWJDb3JlMTNIaXRUZXN0UmVzdWx0NXRpdGxlRXYKIF9fWk5LN1dlYkNvcmUx
M0hpdFRlc3RSZXN1bHQ5aW1hZ2VSZWN0RXYKIF9fWk5LN1dlYkNvcmUxM1Jlc291cmNlRXJyb3Jj
dlA3TlNFcnJvckV2Ci1fX1pOSzdXZWJDb3JlMTNDb250YWluZXJOb2RlMTRjaGlsZE5vZGVDb3Vu
dEV2CiBfX1pOSzdXZWJDb3JlMTREb2N1bWVudExvYWRlcjEwcmVxdWVzdFVSTEV2CiBfX1pOSzdX
ZWJDb3JlMTREb2N1bWVudExvYWRlcjExZnJhbWVMb2FkZXJFdgogX19aTks3V2ViQ29yZTE0RG9j
dW1lbnRMb2FkZXIxMXN1YnJlc291cmNlRVJLTlNfNEtVUkxFCkBAIC03NzIsNyArNzc3LDYgQEAg
X19aTks3V2ViQ29yZTRLVVJMY3ZQNU5TVVJMRXYKIF9fWk5LN1dlYkNvcmU0Tm9kZTE0aXNEZXNj
ZW5kYW50T2ZFUEtTMF8KIF9fWk5LN1dlYkNvcmU0Tm9kZTE4Z2V0U3VicmVzb3VyY2VVUkxzRVJO
M1dURjZWZWN0b3JJTlNfNEtVUkxFTG0wRUVFCiBfX1pOSzdXZWJDb3JlNE5vZGU5bm9kZUluZGV4
RXYKLV9fWk5LN1dlYkNvcmUxM0NvbnRhaW5lck5vZGU5Y2hpbGROb2RlRWoKIF9fWk5LN1dlYkNv
cmU0UGFnZTEwcGx1Z2luRGF0YUV2CiBfX1pOSzdXZWJDb3JlNFBhZ2UzNGluTG93UXVhbGl0eUlt
YWdlSW50ZXJwb2xhdGlvbk1vZGVFdgogX19aTks3V2ViQ29yZTRQYWdlOWdyb3VwTmFtZUV2CkBA
IC04NjAsOCArODY0LDYgQEAgX19aTks3V2ViQ29yZTlGcmFtZVRyZWU0ZmluZEVSS05TXzEyQXRv
bQogX19aTks3V2ViQ29yZTlGcmFtZVRyZWU1Y2hpbGRFUktOU18xMkF0b21pY1N0cmluZ0UKIF9f
Wk5LN1dlYkNvcmU5RnJhbWVUcmVlNnBhcmVudEViCiBfX1pOSzdXZWJDb3JlOUZyYW1lVmlldzEx
bmVlZHNMYXlvdXRFdgotX19aTjdXZWJDb3JlOUZyYW1lVmlldzIzbGF5b3V0SWZOZWVkZWRSZWN1
cnNpdmVFdgotX19aTjdXZWJDb3JlOUZyYW1lVmlld0MxRVBOU181RnJhbWVFUktOU183SW50U2l6
ZUUKIF9fWk5LN1dlYkNvcmU5U2VsZWN0aW9uMTdpc0NvbnRlbnRFZGl0YWJsZUV2CiBfX1pOSzdX
ZWJDb3JlOVNlbGVjdGlvbjE5cm9vdEVkaXRhYmxlRWxlbWVudEV2CiBfX1pOSzdXZWJDb3JlOVNl
bGVjdGlvbjIzaXNDb250ZW50UmljaGx5RWRpdGFibGVFdgpJbmRleDogV2ViQ29yZS9Gb3J3YXJk
aW5nSGVhZGVycy9ranMvQ29sbGVjdG9ySGVhcEl0ZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ranMvQ29sbGVjdG9ySGVhcEl0ZXJhdG9yLmgJKHJldmlz
aW9uIDM3NTg2KQkoZnJvbSBXZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2tqcy91c3RyaW5nLmg6
Mzc1ODYpCisrKyBXZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2tqcy9Db2xsZWN0b3JIZWFwSXRl
cmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxIEBACisjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvdXN0cmluZy5oPgpJbmRleDogV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ranMvQ29s
bGVjdG9ySGVhcEl0ZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9Gb3J3YXJkaW5nSGVh
ZGVycy9ranMvQ29sbGVjdG9ySGVhcEl0ZXJhdG9yLmgJKHJldmlzaW9uIDM3NTg2KQorKysgV2Vi
Q29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ranMvQ29sbGVjdG9ySGVhcEl0ZXJhdG9yLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEgKzEgQEAKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS91c3RyaW5nLmg+
CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29sbGVjdG9ySGVhcEl0ZXJhdG9yLmg+CkluZGV4
OiBXZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2tqcy9QYXJzZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2tqcy9QYXJzZXIuaAkocmV2aXNpb24gMzc1ODYpCShm
cm9tIFdlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMva2pzL3VzdHJpbmcuaDozNzU4NikKKysrIFdl
YkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMva2pzL1BhcnNlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEgQEAKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS91c3RyaW5nLmg+CkluZGV4OiBXZWJD
b3JlL0ZvcndhcmRpbmdIZWFkZXJzL2tqcy9QYXJzZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L0ZvcndhcmRpbmdIZWFkZXJzL2tqcy9QYXJzZXIuaAkocmV2aXNpb24gMzc1ODYpCisrKyBXZWJD
b3JlL0ZvcndhcmRpbmdIZWFkZXJzL2tqcy9QYXJzZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSAr
MSBAQAotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL3VzdHJpbmcuaD4KKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9QYXJzZXIuaD4KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCShyZXZpc2lvbiAzNzU4NikKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zNjQsNyArMzY0LDcgQEAKIAkJ
MUM4MUJBMEEwRTk3MzQ4MzAwMjY2RTA3IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDODFCQTA0MEU5NzM0ODMw
MDI2NkUwNyAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmggKi87IH07CiAJCTFDODFCQTBDMEU5NzM0
ODMwMDI2NkUwNyAvKiBKYXZhU2NyaXB0RGVidWdMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4MUJBMDYwRTk3MzQ4MzAwMjY2RTA3IC8q
IEphdmFTY3JpcHREZWJ1Z0xpc3RlbmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUM4MUJBMEQwRTk3MzQ4MzAwMjY2RTA3IC8qIEphdmFTY3Jp
cHREZWJ1Z1NlcnZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQzgxQkEwNzBFOTczNDgzMDAyNjZFMDcgLyogSmF2YVNjcmlwdERlYnVnU2VydmVy
LmNwcCAqLzsgfTsKLQkJMUM4MUJBMEUwRTk3MzQ4MzAwMjY2RTA3IC8qIEphdmFTY3JpcHREZWJ1
Z1NlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUM4MUJBMDgwRTk3MzQ4MzAwMjY2RTA3IC8qIEphdmFTY3JpcHREZWJ1Z1NlcnZlci5oICovOyB9
OworCQkxQzgxQkEwRTBFOTczNDgzMDAyNjZFMDcgLyogSmF2YVNjcmlwdERlYnVnU2VydmVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzgxQkEwODBF
OTczNDgzMDAyNjZFMDcgLyogSmF2YVNjcmlwdERlYnVnU2VydmVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUNBMTlFMDUwREMyNTU5NTAwNjVB
OTk0IC8qIEV2ZW50TG9vcE1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFDQTE5RTAzMERDMjU1OTUwMDY1QTk5NCAvKiBFdmVudExvb3BNYWMubW0g
Ki87IH07CiAJCTFDQTE5RTE2MERDMjU1Q0EwMDY1QTk5NCAvKiBFdmVudExvb3AuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQTE5RTE1MERDMjU1Q0Ew
MDY1QTk5NCAvKiBFdmVudExvb3AuaCAqLzsgfTsKIAkJMUNBRjM0ODEwQTZDNDA1MjAwQUJFMDZF
IC8qIFdlYlNjcmlwdE9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUNBRjM0N0UwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkluZGV4OiBX
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMzc1ODYp
CisrKyBXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzMsNiArNzMsNyBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL09wYXF1ZUpT
U3RyaW5nLmg+CiAjaW5jbHVkZSA8a2pzL0pTTG9jay5oPgogI2luY2x1ZGUgPGtqcy91c3RyaW5n
Lmg+CisjaW5jbHVkZSA8a2pzL0NvbGxlY3RvckhlYXBJdGVyYXRvci5oPgogI2luY2x1ZGUgPHBy
b2ZpbGVyL1Byb2ZpbGUuaD4KICNpbmNsdWRlIDxwcm9maWxlci9Qcm9maWxlci5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC00MzAsNyArNDMxLDcgQEAgU0lNUExFX0lOU1BFQ1RP
Ul9DQUxMQkFDSyhsb2FkZWQsIHNjcmlwdAogU0lNUExFX0lOU1BFQ1RPUl9DQUxMQkFDSyh1bmxv
YWRpbmcsIGNsb3NlKTsKIFNJTVBMRV9JTlNQRUNUT1JfQ0FMTEJBQ0soYXR0YWNoLCBhdHRhY2hX
aW5kb3cpOwogU0lNUExFX0lOU1BFQ1RPUl9DQUxMQkFDSyhkZXRhY2gsIGRldGFjaFdpbmRvdyk7
Ci1TSU1QTEVfSU5TUEVDVE9SX0NBTExCQUNLKHN0YXJ0RGVidWdnaW5nQW5kUmVsb2FkSW5zcGVj
dGVkUGFnZSwgc3RhcnREZWJ1Z2dpbmdBbmRSZWxvYWRJbnNwZWN0ZWRQYWdlKTsKK1NJTVBMRV9J
TlNQRUNUT1JfQ0FMTEJBQ0soc3RhcnREZWJ1Z2dpbmcsIHN0YXJ0RGVidWdnaW5nKTsKIFNJTVBM
RV9JTlNQRUNUT1JfQ0FMTEJBQ0soc3RvcERlYnVnZ2luZywgc3RvcERlYnVnZ2luZyk7CiBTSU1Q
TEVfSU5TUEVDVE9SX0NBTExCQUNLKHBhdXNlSW5EZWJ1Z2dlciwgcGF1c2VJbkRlYnVnZ2VyKTsK
IFNJTVBMRV9JTlNQRUNUT1JfQ0FMTEJBQ0socmVzdW1lRGVidWdnZXIsIHJlc3VtZURlYnVnZ2Vy
KTsKQEAgLTExMTQsNyArMTExNSw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2V0V2lu
ZG93VmlzaWIKICAgICAgICAgaWYgKG1fbm9kZVRvRm9jdXMpCiAgICAgICAgICAgICBmb2N1c05v
ZGUoKTsKICAgICAgICAgaWYgKG1fYXR0YWNoRGVidWdnZXJXaGVuU2hvd24pCi0gICAgICAgICAg
ICBzdGFydERlYnVnZ2luZ0FuZFJlbG9hZEluc3BlY3RlZFBhZ2UoKTsKKyAgICAgICAgICAgIHN0
YXJ0RGVidWdnaW5nKCk7CiAgICAgICAgIGlmIChtX3Nob3dBZnRlclZpc2libGUgIT0gQ3VycmVu
dFBhbmVsKQogICAgICAgICAgICAgc2hvd1BhbmVsKG1fc2hvd0FmdGVyVmlzaWJsZSk7CiAgICAg
fSBlbHNlIHsKQEAgLTEzMjEsNyArMTMyMiw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6
d2luZG93U2NyaXB0T2IKICAgICAgICAgeyAid2luZG93VW5sb2FkaW5nIiwgV2ViQ29yZTo6dW5s
b2FkaW5nLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUgfSwKICAgICAgICAgeyAiYXR0YWNoIiwg
V2ViQ29yZTo6YXR0YWNoLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUgfSwKICAgICAgICAgeyAi
ZGV0YWNoIiwgV2ViQ29yZTo6ZGV0YWNoLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUgfSwKLSAg
ICAgICAgeyAic3RhcnREZWJ1Z2dpbmdBbmRSZWxvYWRJbnNwZWN0ZWRQYWdlIiwgV2ViQ29yZTo6
c3RhcnREZWJ1Z2dpbmdBbmRSZWxvYWRJbnNwZWN0ZWRQYWdlLCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZU5vbmUgfSwKKyAgICAgICAgeyAic3RhcnREZWJ1Z2dpbmciLCBXZWJDb3JlOjpzdGFydERlYnVn
Z2luZywga0pTUHJvcGVydHlBdHRyaWJ1dGVOb25lIH0sCiAgICAgICAgIHsgInN0b3BEZWJ1Z2dp
bmciLCBXZWJDb3JlOjpzdG9wRGVidWdnaW5nLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUgfSwK
ICAgICAgICAgeyAicGF1c2VJbkRlYnVnZ2VyIiwgV2ViQ29yZTo6cGF1c2VJbkRlYnVnZ2VyLCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUgfSwKICAgICAgICAgeyAicmVzdW1lRGVidWdnZXIiLCBX
ZWJDb3JlOjpyZXN1bWVEZWJ1Z2dlciwga0pTUHJvcGVydHlBdHRyaWJ1dGVOb25lIH0sCkBAIC0y
MzEyLDcgKzIzMTMsNyBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6Om1vdmVXaW5kb3dCeShm
CiAgICAgbV9wYWdlLT5jaHJvbWUoKS0+c2V0V2luZG93UmVjdChmcmFtZVJlY3QpOwogfQogCi12
b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnN0YXJ0RGVidWdnaW5nQW5kUmVsb2FkSW5zcGVjdGVk
UGFnZSgpCit2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnN0YXJ0RGVidWdnaW5nKCkKIHsKICAg
ICBpZiAoIWVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjMzMSw4ICsyMzMyLDYgQEAg
dm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzdGFydERlYnVnZ2luZwogICAgIG1fYXR0YWNoRGVi
dWdnZXJXaGVuU2hvd24gPSBmYWxzZTsKIAogICAgIGNhbGxTaW1wbGVGdW5jdGlvbihtX3Njcmlw
dENvbnRleHQsIG1fc2NyaXB0T2JqZWN0LCAiZGVidWdnZXJBdHRhY2hlZCIpOwotCi0gICAgbV9p
bnNwZWN0ZWRQYWdlLT5tYWluRnJhbWUoKS0+bG9hZGVyKCktPnJlbG9hZCgpOwogfQogCiB2b2lk
IEluc3BlY3RvckNvbnRyb2xsZXI6OnN0b3BEZWJ1Z2dpbmcoKQpJbmRleDogV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAkocmV2aXNpb24gMzc1ODYpCisrKyBXZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2MCw3ICsx
NjAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBtb3ZlV2luZG93QnkoZmxvYXQgeCwgZmxvYXQgeSkg
Y29uc3Q7CiAgICAgdm9pZCBjbG9zZVdpbmRvdygpOwogCi0gICAgdm9pZCBzdGFydERlYnVnZ2lu
Z0FuZFJlbG9hZEluc3BlY3RlZFBhZ2UoKTsKKyAgICB2b2lkIHN0YXJ0RGVidWdnaW5nKCk7CiAg
ICAgdm9pZCBzdG9wRGVidWdnaW5nKCk7CiAgICAgYm9vbCBkZWJ1Z2dlckF0dGFjaGVkKCkgY29u
c3QgeyByZXR1cm4gbV9kZWJ1Z2dlckF0dGFjaGVkOyB9CiAKSW5kZXg6IFdlYkNvcmUvaW5zcGVj
dG9yL0phdmFTY3JpcHREZWJ1Z0xpc3RlbmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9pbnNw
ZWN0b3IvSmF2YVNjcmlwdERlYnVnTGlzdGVuZXIuaAkocmV2aXNpb24gMzc1ODYpCisrKyBXZWJD
b3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0RGVidWdMaXN0ZW5lci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMCw3ICszMCw2IEBACiAjZGVmaW5lIEphdmFTY3JpcHREZWJ1Z0xpc3RlbmVyX2gKIAogbmFt
ZXNwYWNlIEpTQyB7Ci0gICAgY2xhc3MgRGVidWdnZXJDYWxsRnJhbWU7CiAgICAgY2xhc3MgRXhl
Y1N0YXRlOwogICAgIGNsYXNzIFNvdXJjZUNvZGU7CiAgICAgY2xhc3MgVVN0cmluZzsKSW5kZXg6
IFdlYkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHREZWJ1Z1NlcnZlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdERlYnVnU2VydmVyLmNwcAkocmV2aXNpb24g
Mzc1ODYpCisrKyBXZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCwxMCBAQAogI2luY2x1ZGUgIlNjcm9sbFZpZXcuaCIK
ICNpbmNsdWRlICJXaWRnZXQuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCisjaW5j
bHVkZSA8a2pzL0NvbGxlY3RvckhlYXBJdGVyYXRvci5oPgogI2luY2x1ZGUgPGtqcy9EZWJ1Z2dl
ckNhbGxGcmFtZS5oPgorI2luY2x1ZGUgPGtqcy9KU0xvY2suaD4KKyNpbmNsdWRlIDxranMvUGFy
c2VyLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvVW51c2Vk
UGFyYW0uaD4KIApAQCAtNjcsNiArNzAsNyBAQCBKYXZhU2NyaXB0RGVidWdTZXJ2ZXI6OkphdmFT
Y3JpcHREZWJ1Z1NlCiAgICAgLCBtX3BhdXNlZChmYWxzZSkKICAgICAsIG1fZG9uZVByb2Nlc3Np
bmdEZWJ1Z2dlckV2ZW50cyh0cnVlKQogICAgICwgbV9wYXVzZU9uQ2FsbEZyYW1lKDApCisgICAg
LCBtX3JlY29tcGlsZVRpbWVyKHRoaXMsICZKYXZhU2NyaXB0RGVidWdTZXJ2ZXI6OnJlY29tcGls
ZUFsbEpTRnVuY3Rpb25zKQogewogfQogCkBAIC04MCw3ICs4NCw3IEBAIEphdmFTY3JpcHREZWJ1
Z1NlcnZlcjo6fkphdmFTY3JpcHREZWJ1Z1MKIHZvaWQgSmF2YVNjcmlwdERlYnVnU2VydmVyOjph
ZGRMaXN0ZW5lcihKYXZhU2NyaXB0RGVidWdMaXN0ZW5lciogbGlzdGVuZXIpCiB7CiAgICAgaWYg
KCFoYXNMaXN0ZW5lcnMoKSkKLSAgICAgICAgUGFnZTo6c2V0RGVidWdnZXJGb3JBbGxQYWdlcyh0
aGlzKTsKKyAgICAgICAgd2lsbEFkZEZpcnN0TGlzdGVuZXIoKTsKIAogICAgIG1fbGlzdGVuZXJz
LmFkZChsaXN0ZW5lcik7CiB9CkBAIC04OCwxMCArOTIsOCBAQCB2b2lkIEphdmFTY3JpcHREZWJ1
Z1NlcnZlcjo6YWRkTGlzdGVuZXIoCiB2b2lkIEphdmFTY3JpcHREZWJ1Z1NlcnZlcjo6cmVtb3Zl
TGlzdGVuZXIoSmF2YVNjcmlwdERlYnVnTGlzdGVuZXIqIGxpc3RlbmVyKQogewogICAgIG1fbGlz
dGVuZXJzLnJlbW92ZShsaXN0ZW5lcik7Ci0gICAgaWYgKCFoYXNMaXN0ZW5lcnMoKSkgewotICAg
ICAgICBQYWdlOjpzZXREZWJ1Z2dlckZvckFsbFBhZ2VzKDApOwotICAgICAgICBtX2RvbmVQcm9j
ZXNzaW5nRGVidWdnZXJFdmVudHMgPSB0cnVlOwotICAgIH0KKyAgICBpZiAoIWhhc0xpc3RlbmVy
cygpKQorICAgICAgICBkaWRSZW1vdmVMYXN0TGlzdGVuZXIoKTsKIH0KIAogdm9pZCBKYXZhU2Ny
aXB0RGVidWdTZXJ2ZXI6OmFkZExpc3RlbmVyKEphdmFTY3JpcHREZWJ1Z0xpc3RlbmVyKiBsaXN0
ZW5lciwgUGFnZSogcGFnZSkKQEAgLTk5LDcgKzEwMSw3IEBAIHZvaWQgSmF2YVNjcmlwdERlYnVn
U2VydmVyOjphZGRMaXN0ZW5lcigKICAgICBBU1NFUlRfQVJHKHBhZ2UsIHBhZ2UpOwogCiAgICAg
aWYgKCFoYXNMaXN0ZW5lcnMoKSkKLSAgICAgICAgUGFnZTo6c2V0RGVidWdnZXJGb3JBbGxQYWdl
cyh0aGlzKTsKKyAgICAgICAgd2lsbEFkZEZpcnN0TGlzdGVuZXIoKTsKIAogICAgIHBhaXI8UGFn
ZUxpc3RlbmVyc01hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1fcGFnZUxpc3RlbmVyc01h
cC5hZGQocGFnZSwgMCk7CiAgICAgaWYgKHJlc3VsdC5zZWNvbmQpCkBAIC0xMTgsMTggKzEyMCwx
NCBAQCB2b2lkIEphdmFTY3JpcHREZWJ1Z1NlcnZlcjo6cmVtb3ZlTGlzdGVuCiAgICAgICAgIHJl
dHVybjsKIAogICAgIExpc3RlbmVyU2V0KiBsaXN0ZW5lcnMgPSBpdC0+c2Vjb25kOwotCiAgICAg
bGlzdGVuZXJzLT5yZW1vdmUobGlzdGVuZXIpOwotCiAgICAgaWYgKGxpc3RlbmVycy0+aXNFbXB0
eSgpKSB7CiAgICAgICAgIG1fcGFnZUxpc3RlbmVyc01hcC5yZW1vdmUoaXQpOwogICAgICAgICBk
ZWxldGUgbGlzdGVuZXJzOwogICAgIH0KIAotICAgIGlmICghaGFzTGlzdGVuZXJzKCkpIHsKLSAg
ICAgICAgUGFnZTo6c2V0RGVidWdnZXJGb3JBbGxQYWdlcygwKTsKLSAgICAgICAgbV9kb25lUHJv
Y2Vzc2luZ0RlYnVnZ2VyRXZlbnRzID0gdHJ1ZTsKLSAgICB9CisgICAgaWYgKCFoYXNMaXN0ZW5l
cnMoKSkKKyAgICAgICAgZGlkUmVtb3ZlTGFzdExpc3RlbmVyKCk7CiB9CiAKIHZvaWQgSmF2YVNj
cmlwdERlYnVnU2VydmVyOjpwYWdlQ3JlYXRlZChQYWdlKiBwYWdlKQpAQCAtNTIxLDQgKzUxOSw2
NCBAQCB2b2lkIEphdmFTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlkUmVhY2hCcmVhCiAgICAgcGF1c2VJ
Zk5lZWRlZCh0b1BhZ2UoZGVidWdnZXJDYWxsRnJhbWUuZHluYW1pY0dsb2JhbE9iamVjdCgpKSk7
CiB9CiAKK3ZvaWQgSmF2YVNjcmlwdERlYnVnU2VydmVyOjpyZWNvbXBpbGVBbGxKU0Z1bmN0aW9u
cyhUaW1lcjxKYXZhU2NyaXB0RGVidWdTZXJ2ZXI+KikKK3sKKyAgICBKU0xvY2sgbG9jayhmYWxz
ZSk7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gSlNET01XaW5kb3c6OmNvbW1vbkpT
R2xvYmFsRGF0YSgpOworCisgICAgVmVjdG9yPFByb3RlY3RlZFB0cjxKU0Z1bmN0aW9uPiA+IGZ1
bmN0aW9uczsKKyAgICBIZWFwOjppdGVyYXRvciBoZWFwRW5kID0gZ2xvYmFsRGF0YS0+aGVhcC5w
cmltYXJ5SGVhcEVuZCgpOworICAgIGZvciAoSGVhcDo6aXRlcmF0b3IgaXQgPSBnbG9iYWxEYXRh
LT5oZWFwLnByaW1hcnlIZWFwQmVnaW4oKTsgaXQgIT0gaGVhcEVuZDsgKytpdCkgeworICAgICAg
ICBpZiAoKCppdCktPmlzT2JqZWN0KCZKU0Z1bmN0aW9uOjppbmZvKSkKKyAgICAgICAgICAgIGZ1
bmN0aW9ucy5hcHBlbmQoc3RhdGljX2Nhc3Q8SlNGdW5jdGlvbio+KCppdCkpOworICAgIH0KKwor
ICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8RnVuY3Rpb25Cb2R5Tm9kZT4sIFJlZlB0cjxGdW5j
dGlvbkJvZHlOb2RlPiA+IEZ1bmN0aW9uQm9keU1hcDsKKyAgICB0eXBlZGVmIEhhc2hTZXQ8U291
cmNlUHJvdmlkZXIqPiBTb3VyY2VQcm92aWRlclNldDsKKworICAgIEZ1bmN0aW9uQm9keU1hcCBm
dW5jdGlvbkJvZGllczsKKyAgICBTb3VyY2VQcm92aWRlclNldCBzb3VyY2VQcm92aWRlcnM7Cisg
ICAgCisgICAgc2l6ZV90IHNpemUgPSBmdW5jdGlvbnMuc2l6ZSgpOworICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0g
ZnVuY3Rpb25zW2ldOworICAgICAgICAKKyAgICAgICAgRnVuY3Rpb25Cb2R5Tm9kZSogb2xkQm9k
eSA9IGZ1bmN0aW9uLT5tX2JvZHkuZ2V0KCk7CisgICAgICAgIHBhaXI8RnVuY3Rpb25Cb2R5TWFw
OjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gZnVuY3Rpb25Cb2RpZXMuYWRkKG9sZEJvZHksIDAp
OworICAgICAgICBpZiAoIXJlc3VsdC5zZWNvbmQpIHsKKyAgICAgICAgICAgIGZ1bmN0aW9uLT5t
X2JvZHkgPSByZXN1bHQuZmlyc3QtPnNlY29uZDsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICB9CisKKyAgICAgICAgRXhlY1N0YXRlKiBleGVjID0gZnVuY3Rpb24tPnNjb3BlKCkuZ2xv
YmFsT2JqZWN0KCktPkpTR2xvYmFsT2JqZWN0OjpnbG9iYWxFeGVjKCk7CisgICAgICAgIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUgPSBvbGRCb2R5LT5zb3VyY2UoKTsKKworICAgICAgICBS
ZWZQdHI8RnVuY3Rpb25Cb2R5Tm9kZT4gbmV3Qm9keSA9IGdsb2JhbERhdGEtPnBhcnNlci0+cGFy
c2U8RnVuY3Rpb25Cb2R5Tm9kZT4oZXhlYywgMCwgc291cmNlQ29kZSk7CisgICAgICAgIEFTU0VS
VChuZXdCb2R5KTsKKyAgICAgICAgbmV3Qm9keS0+ZmluaXNoUGFyc2luZyhvbGRCb2R5LT5jb3B5
UGFyYW1ldGVycygpLCBvbGRCb2R5LT5wYXJhbWV0ZXJDb3VudCgpKTsKKyAgICAgICAgCisgICAg
ICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kID0gbmV3Qm9keTsKKyAgICAgICAgZnVuY3Rpb24tPm1f
Ym9keSA9IG5ld0JvZHkucmVsZWFzZSgpOworCisgICAgICAgIGlmIChoYXNMaXN0ZW5lcnMoKSkg
eworICAgICAgICAgICAgU291cmNlUHJvdmlkZXIqIHByb3ZpZGVyID0gc291cmNlQ29kZS5wcm92
aWRlcigpOworICAgICAgICAgICAgaWYgKHNvdXJjZVByb3ZpZGVycy5hZGQocHJvdmlkZXIpLnNl
Y29uZCkKKyAgICAgICAgICAgICAgICBzb3VyY2VQYXJzZWQoZXhlYywgU291cmNlQ29kZShwcm92
aWRlciksIC0xLCAwKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBKYXZhU2NyaXB0RGVi
dWdTZXJ2ZXI6OndpbGxBZGRGaXJzdExpc3RlbmVyKCkKK3sKKyAgICBQYWdlOjpzZXREZWJ1Z2dl
ckZvckFsbFBhZ2VzKHRoaXMpOworICAgIG1fcmVjb21waWxlVGltZXIuc3RhcnRPbmVTaG90KDAp
OworfQorCit2b2lkIEphdmFTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlkUmVtb3ZlTGFzdExpc3RlbmVy
KCkKK3sKKyAgICBQYWdlOjpzZXREZWJ1Z2dlckZvckFsbFBhZ2VzKDApOworICAgIG1fZG9uZVBy
b2Nlc3NpbmdEZWJ1Z2dlckV2ZW50cyA9IHRydWU7CisgICAgbV9yZWNvbXBpbGVUaW1lci5zdGFy
dE9uZVNob3QoMCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUv
aW5zcGVjdG9yL0phdmFTY3JpcHREZWJ1Z1NlcnZlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
aW5zcGVjdG9yL0phdmFTY3JpcHREZWJ1Z1NlcnZlci5oCShyZXZpc2lvbiAzNzU4NikKKysrIFdl
YkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHREZWJ1Z1NlcnZlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yOSw4ICsyOSw4IEBACiAjaWZuZGVmIEphdmFTY3JpcHREZWJ1Z1NlcnZlcl9oCiAjZGVmaW5l
IEphdmFTY3JpcHREZWJ1Z1NlcnZlcl9oCiAKKyNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUg
PGtqcy9kZWJ1Z2dlci5oPgotCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTczLDYgKzczLDggQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHN0ZXBPdmVyU3RhdGVtZW50KCk7CiAg
ICAgICAgIHZvaWQgc3RlcE91dE9mRnVuY3Rpb24oKTsKIAorICAgICAgICB2b2lkIHJlY29tcGls
ZUFsbEpTRnVuY3Rpb25zKFRpbWVyPEphdmFTY3JpcHREZWJ1Z1NlcnZlcj4qKTsKKwogICAgICAg
ICBKYXZhU2NyaXB0Q2FsbEZyYW1lKiBjdXJyZW50Q2FsbEZyYW1lKCk7CiAKICAgICAgICAgdm9p
ZCBwYWdlQ3JlYXRlZChQYWdlKik7CkBAIC0xMDMsNiArMTA1LDkgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbEV4ZWN1dGVQcm9ncmFtKGNvbnN0IEpTQzo6
RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVubyk7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBkaWRFeGVjdXRlUHJvZ3JhbShjb25zdCBKU0M6OkRlYnVnZ2VyQ2Fs
bEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lbm8pOwogICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVhY2hCcmVha3BvaW50KGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBp
bnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVubyk7CisgICAgICAgIAorICAgICAgICB2b2lkIHdp
bGxBZGRGaXJzdExpc3RlbmVyKCk7CisgICAgICAgIHZvaWQgZGlkUmVtb3ZlTGFzdExpc3RlbmVy
KCk7CiAKICAgICAgICAgdHlwZWRlZiBIYXNoTWFwPFBhZ2UqLCBMaXN0ZW5lclNldCo+IFBhZ2VM
aXN0ZW5lcnNNYXA7CiAgICAgICAgIFBhZ2VMaXN0ZW5lcnNNYXAgbV9wYWdlTGlzdGVuZXJzTWFw
OwpAQCAtMTE2LDYgKzEyMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgUmVmUHRy
PEphdmFTY3JpcHRDYWxsRnJhbWU+IG1fY3VycmVudENhbGxGcmFtZTsKICAgICAgICAgSGFzaE1h
cDxSZWZQdHI8RnJhbWU+LCBQYXVzZWRUaW1lb3V0cyo+IG1fcGF1c2VkVGltZW91dHM7CiAgICAg
ICAgIEhhc2hNYXA8aW50cHRyX3QsIEhhc2hTZXQ8dW5zaWduZWQ+Kj4gbV9icmVha3BvaW50czsK
KyAgICAgICAgVGltZXI8SmF2YVNjcmlwdERlYnVnU2VydmVyPiBtX3JlY29tcGlsZVRpbWVyOwog
ICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcwkocmV2aXNpb24gMzc1ODYpCisrKyBXZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDMsMTIgKzE0Myw2IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwgPSBmdW5jdGlvbigpCiAg
ICAgdGhpcy5hdHRhY2hPdmVybGF5RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRp
diIpOwogICAgIHRoaXMuYXR0YWNoT3ZlcmxheUVsZW1lbnQuaWQgPSAic2NyaXB0cy1hdHRhY2gt
b3ZlcmxheSI7CiAKLSAgICB2YXIgaGVhZGVyRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImgxIik7Ci0gICAgaGVhZGVyRWxlbWVudC50ZXh0Q29udGVudCA9IFdlYkluc3BlY3Rvci5V
SVN0cmluZygiU3RhcnRpbmcgZGVidWdnaW5nIHdpbGwgcmVsb2FkIHRoZSBpbnNwZWN0ZWQgcGFn
ZS4iKTsKLSAgICB0aGlzLmF0dGFjaE92ZXJsYXlFbGVtZW50LmFwcGVuZENoaWxkKGhlYWRlckVs
ZW1lbnQpOwotCi0gICAgdGhpcy5hdHRhY2hPdmVybGF5RWxlbWVudC5hcHBlbmRDaGlsZChkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJiciIpKTsKLQogICAgIHZhciBhdHRhY2hCdXR0b24gPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJidXR0b24iKTsKICAgICBhdHRhY2hCdXR0b24udGV4dENvbnRl
bnQgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0YXJ0IERlYnVnZ2luZyIpOwogICAgIGF0dGFj
aEJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX3RvZ2dsZURlYnVnZ2luZy5i
aW5kKHRoaXMpLCBmYWxzZSk7CkBAIC02NjcsNyArNjYxLDcgQEAgV2ViSW5zcGVjdG9yLlNjcmlw
dHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBpZiAodGhpcy5hdHRhY2hPdmVybGF5
RWxlbWVudC5wYXJlbnROb2RlKQogICAgICAgICAgICAgICAgIHRoaXMuYXR0YWNoT3ZlcmxheUVs
ZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLmF0dGFjaE92ZXJsYXlFbGVtZW50KTsK
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHRoaXMuZGVidWdnaW5nQnV0dG9uLnRpdGxl
ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdGFydCBkZWJ1Z2dpbmcgYW5kIHJlbG9hZCBpbnNw
ZWN0ZWQgcGFnZS4iKTsKKyAgICAgICAgICAgIHRoaXMuZGVidWdnaW5nQnV0dG9uLnRpdGxlID0g
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdGFydCBkZWJ1Z2dpbmcuIik7CiAgICAgICAgICAgICB0
aGlzLmRlYnVnZ2luZ0J1dHRvbi5yZW1vdmVTdHlsZUNsYXNzKCJ0b2dnbGVkLW9uIik7CiAgICAg
ICAgICAgICB0aGlzLnBhdXNlQnV0dG9uLmRpc2FibGVkID0gdHJ1ZTsKIApAQCAtNzQ4LDcgKzc0
Miw3IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICBp
ZiAoSW5zcGVjdG9yQ29udHJvbGxlci5kZWJ1Z2dlckF0dGFjaGVkKCkpCiAgICAgICAgICAgICBJ
bnNwZWN0b3JDb250cm9sbGVyLnN0b3BEZWJ1Z2dpbmcoKTsKICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgSW5zcGVjdG9yQ29udHJvbGxlci5zdGFydERlYnVnZ2luZ0FuZFJlbG9hZEluc3BlY3Rl
ZFBhZ2UoKTsKKyAgICAgICAgICAgIEluc3BlY3RvckNvbnRyb2xsZXIuc3RhcnREZWJ1Z2dpbmco
KTsKIAogICAgICAgICB0aGlzLl9jbGVhckludGVyZmFjZSgpOwogICAgIH0sCkluZGV4OiBXZWJL
aXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2
aXNpb24gMzc2MTApCisrKyBXZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDEzIEBACisyMDA4LTEwLTE1ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4
ZWQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzQ1CisgICAgICAg
IFN0YXJ0IHRoZSBkZWJ1Z2dlciB3aXRob3V0IHJlbG9hZGluZyB0aGUgaW5zcGVjdGVkIHBhZ2UK
KworICAgICAgICAqIFdlYkluc3BlY3Rvci9XZWJJbnNwZWN0b3IubW06CisgICAgICAgICgtW1dl
Ykluc3BlY3RvciBzdGFydERlYnVnZ2luZ0phdmFTY3JpcHQ6XSk6IFVwZGF0ZWQgZm9yIHJlbmFt
ZS4KKwogMjAwOC0xMC0xNSAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+CiAK
ICAgICAgICAgQ2xlYW4gdXAgdXNlciBhZ2VudCBnZW5lcmF0aW9uIHRvIHNpbXBsaWZ5IHRoZSBf
c3RhbmRhcmRVc2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1lOgpJbmRleDogV2ViS2l0L21hYy9X
ZWJJbnNwZWN0b3IvV2ViSW5zcGVjdG9yLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2Vi
SW5zcGVjdG9yL1dlYkluc3BlY3Rvci5tbQkocmV2aXNpb24gMzc1ODYpCisrKyBXZWJLaXQvbWFj
L1dlYkluc3BlY3Rvci9XZWJJbnNwZWN0b3IubW0JKHdvcmtpbmcgY29weSkKQEAgLTg4LDcgKzg4
LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAgICAgaWYgKCFwYWdlKQogICAgICAgICBy
ZXR1cm47CiAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5zaG93UGFuZWwoSW5zcGVj
dG9yQ29udHJvbGxlcjo6U2NyaXB0c1BhbmVsKTsKLSAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9s
bGVyKCktPnN0YXJ0RGVidWdnaW5nQW5kUmVsb2FkSW5zcGVjdGVkUGFnZSgpOworICAgIHBhZ2Ut
Pmluc3BlY3RvckNvbnRyb2xsZXIoKS0+c3RhcnREZWJ1Z2dpbmcoKTsKIH0KIAogLSAodm9pZClz
dG9wRGVidWdnaW5nSmF2YVNjcmlwdDooaWQpc2VuZGVyCkluZGV4OiBXZWJDb3JlL0VuZ2xpc2gu
bHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxl
IG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0gYXBwbGljYXRpb24vb2N0
ZXQtc3RyZWFtCgovLzUyQUdFQWNnQWdBR3dBYndCakFHRUFiQUJwQUhvQVpRQmtBRk1BZEFCeUFH
a0FiZ0JuQUhNQUlBQTlBQ0FBYmdCbEFIY0FJQUJQCkFHSUFhZ0JsQUdNQWRBQTdBQW9BQ2dCc0FH
OEFZd0JoQUd3QWFRQjZBR1VBWkFCVEFIUUFjZ0JwQUc0QVp3QnpBRnNBSWdBZ0FDZ0EKSlFCa0FD
a0FJZ0JkQUNBQVBRQWdBQ0lBSUFBb0FDVUFaQUFwQUNJQU93QUtBR3dBYndCakFHRUFiQUJwQUhv
QVpRQmtBRk1BZEFCeQpBR2tBYmdCbkFITUFXd0FpQUNBQUtBQnlBR1VBY0FCbEFHRUFkQUJsQUdR
QUlBQWxBR1FBSUFCMEFHa0FiUUJsQUhNQUtRQWlBRjBBCklBQTlBQ0FBSWdBZ0FDZ0FjZ0JsQUhB
QVpRQmhBSFFBWlFCa0FDQUFKUUJrQUNBQWRBQnBBRzBBWlFCekFDa0FJZ0E3QUFvQWJBQnYKQUdN
QVlRQnNBR2tBZWdCbEFHUUFVd0IwQUhJQWFRQnVBR2NBY3dCYkFDSUFKUUF1QURBQVpnQkNBQ0lB
WFFBZ0FEMEFJQUFpQUNVQQpMZ0F3QUdZQVFnQWlBRHNBQ2dCc0FHOEFZd0JoQUd3QWFRQjZBR1VB
WkFCVEFIUUFjZ0JwQUc0QVp3QnpBRnNBSWdBbEFDNEFNQUJtCkFHMEFjd0FpQUYwQUlBQTlBQ0FB
SWdBbEFDNEFNQUJtQUcwQWN3QWlBRHNBQ2dCc0FHOEFZd0JoQUd3QWFRQjZBR1VBWkFCVEFIUUEK
Y2dCcEFHNEFad0J6QUZzQUlnQWxBQzRBTVFCbUFDQUFaQUJoQUhrQWN3QWlBRjBBSUFBOUFDQUFJ
Z0FsQUM0QU1RQm1BQ0FBWkFCaApBSGtBY3dBaUFEc0FDZ0JzQUc4QVl3QmhBR3dBYVFCNkFHVUFa
QUJUQUhRQWNnQnBBRzRBWndCekFGc0FJZ0FsQUM0QU1RQm1BR2dBCmNnQnpBQ0lBWFFBZ0FEMEFJ
QUFpQUNVQUxnQXhBR1lBYUFCeUFITUFJZ0E3QUFvQWJBQnZBR01BWVFCc0FHa0FlZ0JsQUdRQVV3
QjAKQUhJQWFRQnVBR2NBY3dCYkFDSUFKUUF1QURFQVpnQnRBR2tBYmdBaUFGMEFJQUE5QUNBQUln
QWxBQzRBTVFCbUFHMEFhUUJ1QUNJQQpPd0FLQUd3QWJ3QmpBR0VBYkFCcEFIb0FaUUJrQUZNQWRB
QnlBR2tBYmdCbkFITUFXd0FpQUNVQUxnQXlBR1lBSlFBbEFDSUFYUUFnCkFEMEFJQUFpQUNVQUxn
QXlBR1lBSlFBbEFDSUFPd0FLQUd3QWJ3QmpBR0VBYkFCcEFIb0FaUUJrQUZNQWRBQnlBR2tBYmdC
bkFITUEKV3dBaUFDVUFMZ0F5QUdZQVN3QkNBQ0lBWFFBZ0FEMEFJQUFpQUNVQUxnQXlBR1lBU3dC
Q0FDSUFPd0FLQUd3QWJ3QmpBR0VBYkFCcApBSG9BWlFCa0FGTUFkQUJ5QUdrQWJnQm5BSE1BV3dB
aUFDVUFMZ0F5QUdZQWN3QWlBRjBBSUFBOUFDQUFJZ0FsQUM0QU1nQm1BSE1BCklnQTdBQW9BYkFC
dkFHTUFZUUJzQUdrQWVnQmxBR1FBVXdCMEFISUFhUUJ1QUdjQWN3QmJBQ0lBSlFBdUFETUFaZ0JO
QUVJQUlnQmQKQUNBQVBRQWdBQ0lBSlFBdUFETUFaZ0JOQUVJQUlnQTdBQW9BYkFCdkFHTUFZUUJz
QUdrQWVnQmxBR1FBVXdCMEFISUFhUUJ1QUdjQQpjd0JiQUNJQUpRQXVBRE1BWmdCdEFITUFJZ0Jk
QUNBQVBRQWdBQ0lBSlFBdUFETUFaZ0J0QUhNQUlnQTdBQW9BYkFCdkFHTUFZUUJzCkFHa0FlZ0Js
QUdRQVV3QjBBSElBYVFCdUFHY0Fjd0JiQUNJQUpRQmtBQ0FBWlFCeUFISUFid0J5QUNJQVhRQWdB
RDBBSUFBaUFDVUEKWkFBZ0FHVUFjZ0J5QUc4QWNnQWlBRHNBQ2dCc0FHOEFZd0JoQUd3QWFRQjZB
R1VBWkFCVEFIUUFjZ0JwQUc0QVp3QnpBRnNBSWdBbApBR1FBSUFCbEFISUFjZ0J2QUhJQUxBQWdB
Q1VBWkFBZ0FIY0FZUUJ5QUc0QWFRQnVBR2NBSWdCZEFDQUFQUUFnQUNJQUpRQXhBQ1FBClpBQWdB
R1VBY2dCeUFHOEFjZ0FzQUNBQUpRQXlBQ1FBWkFBZ0FIY0FZUUJ5QUc0QWFRQnVBR2NBSWdBN0FB
b0FiQUJ2QUdNQVlRQnMKQUdrQWVnQmxBR1FBVXdCMEFISUFhUUJ1QUdjQWN3QmJBQ0lBSlFCa0FD
QUFaUUJ5QUhJQWJ3QnlBQ3dBSUFBbEFHUUFJQUIzQUdFQQpjZ0J1QUdrQWJnQm5BSE1BSWdCZEFD
QUFQUUFnQUNJQUpRQXhBQ1FBWkFBZ0FHVUFjZ0J5QUc4QWNnQXNBQ0FBSlFBeUFDUUFaQUFnCkFI
Y0FZUUJ5QUc0QWFRQnVBR2NBY3dBaUFEc0FDZ0JzQUc4QVl3QmhBR3dBYVFCNkFHVUFaQUJUQUhR
QWNnQnBBRzRBWndCekFGc0EKSWdBbEFHUUFJQUJsQUhJQWNnQnZBSElBY3dBaUFGMEFJQUE5QUNB
QUlnQWxBR1FBSUFCbEFISUFjZ0J2QUhJQWN3QWlBRHNBQ2dCcwpBRzhBWXdCaEFHd0FhUUI2QUdV
QVpBQlRBSFFBY2dCcEFHNEFad0J6QUZzQUlnQWxBR1FBSUFCbEFISUFjZ0J2QUhJQWN3QXNBQ0FB
CkpRQmtBQ0FBZHdCaEFISUFiZ0JwQUc0QVp3QWlBRjBBSUFBOUFDQUFJZ0FsQURFQUpBQmtBQ0FB
WlFCeUFISUFid0J5QUhNQUxBQWcKQUNVQU1nQWtBR1FBSUFCM0FHRUFjZ0J1QUdrQWJnQm5BQ0lB
T3dBS0FHd0Fid0JqQUdFQWJBQnBBSG9BWlFCa0FGTUFkQUJ5QUdrQQpiZ0JuQUhNQVd3QWlBQ1VB
WkFBZ0FHVUFjZ0J5QUc4QWNnQnpBQ3dBSUFBbEFHUUFJQUIzQUdFQWNnQnVBR2tBYmdCbkFITUFJ
Z0JkCkFDQUFQUUFnQUNJQUpRQXhBQ1FBWkFBZ0FHVUFjZ0J5QUc4QWNnQnpBQ3dBSUFBbEFESUFK
QUJrQUNBQWR3QmhBSElBYmdCcEFHNEEKWndCekFDSUFPd0FLQUd3QWJ3QmpBR0VBYkFCcEFIb0Fa
UUJrQUZNQWRBQnlBR2tBYmdCbkFITUFXd0FpQUNVQVpBQWdBRzBBWVFCMApBR01BYUFCbEFITUFJ
Z0JkQUNBQVBRQWdBQ0lBSlFCa0FDQUFiUUJoQUhRQVl3Qm9BR1VBY3dBaUFEc0FDZ0JzQUc4QVl3
QmhBR3dBCmFRQjZBR1VBWkFCVEFIUUFjZ0JwQUc0QVp3QnpBRnNBSWdBbEFHUUFJQUIzQUdFQWNn
QnVBR2tBYmdCbkFDSUFYUUFnQUQwQUlBQWkKQUNVQVpBQWdBSGNBWVFCeUFHNEFhUUJ1QUdjQUln
QTdBQW9BYkFCdkFHTUFZUUJzQUdrQWVnQmxBR1FBVXdCMEFISUFhUUJ1QUdjQQpjd0JiQUNJQUpR
QmtBQ0FBZHdCaEFISUFiZ0JwQUc0QVp3QnpBQ0lBWFFBZ0FEMEFJQUFpQUNVQVpBQWdBSGNBWVFC
eUFHNEFhUUJ1CkFHY0Fjd0FpQURzQUNnQnNBRzhBWXdCaEFHd0FhUUI2QUdVQVpBQlRBSFFBY2dC
cEFHNEFad0J6QUZzQUlnQWxBR1FBSUFEWEFDQUEKSlFCa0FDSUFYUUFnQUQwQUlBQWlBQ1VBTVFB
a0FHUUFJQURYQUNBQUpRQXlBQ1FBWkFBaUFEc0FDZ0JzQUc4QVl3QmhBR3dBYVFCNgpBR1VBWkFC
VEFIUUFjZ0JwQUc0QVp3QnpBRnNBSWdBbEFITUFJQUFvQUd3QWFRQnVBR1VBSUFBbEFHUUFLUUFp
QUYwQUlBQTlBQ0FBCklnQWxBREVBSkFCekFDQUFLQUJzQUdrQWJnQmxBQ0FBSlFBeUFDUUFaQUFw
QUNJQU93QUtBR3dBYndCakFHRUFiQUJwQUhvQVpRQmsKQUZNQWRBQnlBR2tBYmdCbkFITUFXd0Fp
QUNnQVlRQnVBRzhBYmdCNUFHMEFid0IxQUhNQUlBQm1BSFVBYmdCakFIUUFhUUJ2QUc0QQpLUUFp
QUYwQUlBQTlBQ0FBSWdBb0FHRUFiZ0J2QUc0QWVRQnRBRzhBZFFCekFDQUFaZ0IxQUc0QVl3QjBB
R2tBYndCdUFDa0FJZ0E3CkFBb0FiQUJ2QUdNQVlRQnNBR2tBZWdCbEFHUUFVd0IwQUhJQWFRQnVB
R2NBY3dCYkFDSUFLQUJ3QUhJQWJ3Qm5BSElBWVFCdEFDa0EKSWdCZEFDQUFQUUFnQUNJQUtBQndB
SElBYndCbkFISUFZUUJ0QUNrQUlnQTdBQW9BYkFCdkFHTUFZUUJzQUdrQWVnQmxBR1FBVXdCMApB
SElBYVFCdUFHY0Fjd0JiQUNJQUtBQjBBR1VBZUFCMEFDa0FJZ0JkQUNBQVBRQWdBQ0lBS0FCMEFH
VUFlQUIwQUNrQUlnQTdBQW9BCmJBQnZBR01BWVFCc0FHa0FlZ0JsQUdRQVV3QjBBSElBYVFCdUFH
Y0Fjd0JiQUNJQUtBQjNBR2dBYVFCMEFHVUFjd0J3QUdFQVl3QmwKQUNrQUlnQmRBQ0FBUFFBZ0FD
SUFLQUIzQUdnQWFRQjBBR1VBY3dCd0FHRUFZd0JsQUNrQUlnQTdBQW9BYkFCdkFHTUFZUUJzQUdr
QQplZ0JsQUdRQVV3QjBBSElBYVFCdUFHY0Fjd0JiQUNJQU1RQWdBRzBBWVFCMEFHTUFhQUFpQUYw
QUlBQTlBQ0FBSWdBeEFDQUFiUUJoCkFIUUFZd0JvQUNJQU93QUtBR3dBYndCakFHRUFiQUJwQUhv
QVpRQmtBRk1BZEFCeUFHa0FiZ0JuQUhNQVd3QWlBRUVBYmdBZ0FHVUEKY2dCeUFHOEFjZ0FnQUc4
QVl3QmpBSFVBY2dCeUFHVUFaQUFnQUhRQWNnQjVBR2tBYmdCbkFDQUFkQUJ2QUZ3QWJnQnlBR1VB
WVFCawpBQ0FBZEFCb0FHVUFJQUFjSUNVQWN3QWRJQ0FBZEFCaEFHSUFiQUJsQUM0QUlnQmRBQ0FB
UFFBZ0FDSUFRUUJ1QUNBQVpRQnlBSElBCmJ3QnlBQ0FBYndCakFHTUFkUUJ5QUhJQVpRQmtBQ0FB
ZEFCeUFIa0FhUUJ1QUdjQUlBQjBBRzhBWEFCdUFISUFaUUJoQUdRQUlBQjAKQUdnQVpRQWdBQndn
SlFCekFCMGdJQUIwQUdFQVlnQnNBR1VBTGdBaUFEc0FDZ0JzQUc4QVl3QmhBR3dBYVFCNkFHVUFa
QUJUQUhRQQpjZ0JwQUc0QVp3QnpBRnNBSWdCQkFHNEFJQUIxQUc0QVpRQjRBSEFBWlFCakFIUUFa
UUJrQUNBQVpRQnlBSElBYndCeUFDQUFKUUJ6CkFDQUFid0JqQUdNQWRRQnlBR1VBWkFBdUFDSUFY
UUFnQUQwQUlBQWlBRUVBYmdBZ0FIVUFiZ0JsQUhnQWNBQmxBR01BZEFCbEFHUUEKSUFCbEFISUFj
Z0J2QUhJQUlBQWxBSE1BSUFCdkFHTUFZd0IxQUhJQVpRQmtBQzRBSWdBN0FBb0FiQUJ2QUdNQVlR
QnNBR2tBZWdCbApBR1FBVXdCMEFISUFhUUJ1QUdjQWN3QmJBQ0lBUWdCeUFHVUFZUUJyQUhBQWJ3
QnBBRzRBZEFCekFDSUFYUUFnQUQwQUlBQWlBRUlBCmNnQmxBR0VBYXdCd0FHOEFhUUJ1QUhRQWN3
QWlBRHNBQ2dCc0FHOEFZd0JoQUd3QWFRQjZBR1VBWkFCVEFIUUFjZ0JwQUc0QVp3QnoKQUZzQUln
QkRBR0VBYkFCc0FDQUFVd0IwQUdFQVl3QnJBQ0lBWFFBZ0FEMEFJQUFpQUVNQVlRQnNBR3dBSUFC
VEFIUUFZUUJqQUdzQQpJZ0E3QUFvQWJBQnZBR01BWVFCc0FHa0FlZ0JsQUdRQVV3QjBBSElBYVFC
dUFHY0Fjd0JiQUNJQVF3QmhBR3dBYkFCekFDSUFYUUFnCkFEMEFJQUFpQUVNQVlRQnNBR3dBY3dB
aUFEc0FDZ0JzQUc4QVl3QmhBR3dBYVFCNkFHVUFaQUJUQUhRQWNnQnBBRzRBWndCekFGc0EKSWdC
REFHd0FaUUJoQUhJQUlBQmpBRzhBYmdCekFHOEFiQUJsQUNBQWJBQnZBR2NBTGdBaUFGMEFJQUE5
QUNBQUlnQkRBR3dBWlFCaApBSElBSUFCakFHOEFiZ0J6QUc4QWJBQmxBQ0FBYkFCdkFHY0FMZ0Fp
QURzQUNnQnNBRzhBWXdCaEFHd0FhUUI2QUdVQVpBQlRBSFFBCmNnQnBBRzRBWndCekFGc0FJZ0JE
QUd3QWJ3QnpBSFVBY2dCbEFDSUFYUUFnQUQwQUlBQWlBRU1BYkFCdkFITUFkUUJ5QUdVQUlnQTcK
QUFvQWJBQnZBR01BWVFCc0FHa0FlZ0JsQUdRQVV3QjBBSElBYVFCdUFHY0Fjd0JiQUNJQVF3QnZB
RzBBY0FCMUFIUUFaUUJrQUNBQQpVd0IwQUhrQWJBQmxBQ0lBWFFBZ0FEMEFJQUFpQUVNQWJ3QnRB
SEFBZFFCMEFHVUFaQUFnQUZNQWRBQjVBR3dBWlFBaUFEc0FDZ0JzCkFHOEFZd0JoQUd3QWFRQjZB
R1VBWkFCVEFIUUFjZ0JwQUc0QVp3QnpBRnNBSWdCRUFFOEFUUUFpQUYwQUlBQTlBQ0FBSWdCRUFF
OEEKVFFBaUFEc0FDZ0JzQUc4QVl3QmhBR3dBYVFCNkFHVUFaQUJUQUhRQWNnQnBBRzRBWndCekFG
c0FJZ0JFQUdFQWRBQmhBR0lBWVFCegpBR1VBSUFCdUFHOEFJQUJzQUc4QWJnQm5BR1VBY2dBZ0FH
Z0FZUUJ6QUNBQVpRQjRBSEFBWlFCakFIUUFaUUJrQUNBQWRnQmxBSElBCmN3QnBBRzhBYmdBdUFD
SUFYUUFnQUQwQUlBQWlBRVFBWVFCMEFHRUFZZ0JoQUhNQVpRQWdBRzRBYndBZ0FHd0Fid0J1QUdj
QVpRQnkKQUNBQWFBQmhBSE1BSUFCbEFIZ0FjQUJsQUdNQWRBQmxBR1FBSUFCMkFHVUFjZ0J6QUdr
QWJ3QnVBQzRBSWdBN0FBb0FiQUJ2QUdNQQpZUUJzQUdrQWVnQmxBR1FBVXdCMEFISUFhUUJ1QUdj
QWN3QmJBQ0lBUkFCaEFIUUFZUUJpQUdFQWN3QmxBSE1BSWdCZEFDQUFQUUFnCkFDSUFSQUJoQUhR
QVlRQmlBR0VBY3dCbEFITUFJZ0E3QUFvQWJBQnZBR01BWVFCc0FHa0FlZ0JsQUdRQVV3QjBBSElB
YVFCdUFHY0EKY3dCYkFDSUFSQUJsQUdJQWRRQm5BR2NBYVFCdUFHY0FJQUJ6QUdNQWNnQnBBSEFB
ZEFCekFDQUFjZ0JsQUhFQWRRQnBBSElBWlFCegpBQ0FBZVFCdkFIVUFJQUIwQUc4QUlBQnpBSFFB
WVFCeUFIUUFJQUIwQUdnQVpRQWdBR1FBWlFCaUFIVUFad0JuQUdVQWNnQXVBQ0lBClhRQWdBRDBB
SUFBaUFFUUFaUUJpQUhVQVp3Qm5BR2tBYmdCbkFDQUFjd0JqQUhJQWFRQndBSFFBY3dBZ0FISUFa
UUJ4QUhVQWFRQnkKQUdVQWN3QWdBSGtBYndCMUFDQUFkQUJ2QUNBQWN3QjBBR0VBY2dCMEFDQUFk
QUJvQUdVQUlBQmtBR1VBWWdCMUFHY0Fad0JsQUhJQQpMZ0FpQURzQUNnQnNBRzhBWXdCaEFHd0Fh
UUI2QUdVQVpBQlRBSFFBY2dCcEFHNEFad0J6QUZzQUlnQkVBR2tBYlFCbEFHNEFjd0JwCkFHOEFi
Z0J6QUNJQVhRQWdBRDBBSUFBaUFFUUFhUUJ0QUdVQWJnQnpBR2tBYndCdUFITUFJZ0E3QUFvQWJB
QnZBR01BWVFCc0FHa0EKZWdCbEFHUUFVd0IwQUhJQWFRQnVBR2NBY3dCYkFDSUFSQUJ2QUdNQWF3
QWdBSFFBYndBZ0FHMEFZUUJwQUc0QUlBQjNBR2tBYmdCawpBRzhBZHdBdUFDSUFYUUFnQUQwQUlB
QWlBRVFBYndCakFHc0FJQUIwQUc4QUlBQnRBR0VBYVFCdUFDQUFkd0JwQUc0QVpBQnZBSGNBCkxn
QWlBRHNBQ2dCc0FHOEFZd0JoQUd3QWFRQjZBR1VBWkFCVEFIUUFjZ0JwQUc0QVp3QnpBRnNBSWdC
RUFHOEFZd0IxQUcwQVpRQnUKQUhRQWN3QWlBRjBBSUFBOUFDQUFJZ0JFQUc4QVl3QjFBRzBBWlFC
dUFIUUFjd0FpQURzQUNnQnNBRzhBWXdCaEFHd0FhUUI2QUdVQQpaQUJUQUhRQWNnQnBBRzRBWndC
ekFGc0FJZ0JFQUc4QWJnQW5BSFFBSUFCd0FHRUFkUUJ6QUdVQUlBQnZBRzRBSUFCbEFIZ0FZd0Js
CkFIQUFkQUJwQUc4QWJnQnpBQzRBSWdCZEFDQUFQUUFnQUNJQVJBQnZBRzRBR1NCMEFDQUFjQUJo
QUhVQWN3QmxBQ0FBYndCdUFDQUEKWlFCNEFHTUFaUUJ3QUhRQWFRQnZBRzRBY3dBdUFDSUFPd0FL
QUd3QWJ3QmpBR0VBYkFCcEFIb0FaUUJrQUZNQWRBQnlBR2tBYmdCbgpBSE1BV3dBaUFFVUFiQUJs
QUcwQVpRQnVBSFFBY3dBaUFGMEFJQUE5QUNBQUlnQkZBR3dBWlFCdEFHVUFiZ0IwQUhNQUlnQTdB
QW9BCmJBQnZBR01BWVFCc0FHa0FlZ0JsQUdRQVV3QjBBSElBYVFCdUFHY0Fjd0JiQUNJQVJRQjJB
R1VBYmdCMEFDQUFSQUJ2QUdNQWRRQnQKQUdVQWJnQjBBQ0lBWFFBZ0FEMEFJQUFpQUVVQWRnQmxB
RzRBZEFBZ0FFUUFid0JqQUhVQWJRQmxBRzRBZEFBaUFEc0FDZ0JzQUc4QQpZd0JoQUd3QWFRQjZB
R1VBWkFCVEFIUUFjZ0JwQUc0QVp3QnpBRnNBSWdCRkFIWUFaUUJ1QUhRQUlBQlVBR0VBY2dCbkFH
VUFkQUFpCkFGMEFJQUE5QUNBQUlnQkZBSFlBWlFCdUFIUUFJQUJVQUdFQWNnQm5BR1VBZEFBaUFE
c0FDZ0JzQUc4QVl3QmhBR3dBYVFCNkFHVUEKWkFCVEFIUUFjZ0JwQUc0QVp3QnpBRnNBSWdCRkFI
Z0FZd0JzQUhVQVpBQmxBQ0FBY3dCbEFHd0FaUUJqQUhRQVpRQmtBQ0FBWmdCMQpBRzRBWXdCMEFH
a0Fid0J1QUM0QUlnQmRBQ0FBUFFBZ0FDSUFSUUI0QUdNQWJBQjFBR1FBWlFBZ0FITUFaUUJzQUdV
QVl3QjBBR1VBClpBQWdBR1lBZFFCdUFHTUFkQUJwQUc4QWJnQXVBQ0lBT3dBS0FHd0Fid0JqQUdF
QWJBQnBBSG9BWlFCa0FGTUFkQUJ5QUdrQWJnQm4KQUhNQVd3QWlBRVlBYVFCc0FHVUFJQUJ6QUdr
QWVnQmxBQ0lBWFFBZ0FEMEFJQUFpQUVZQWFRQnNBR1VBSUFCekFHa0FlZ0JsQUNJQQpPd0FLQUd3
QWJ3QmpBR0VBYkFCcEFIb0FaUUJrQUZNQWRBQnlBR2tBYmdCbkFITUFXd0FpQUVZQWJ3QmpBSFVB
Y3dBZ0FITUFaUUJzCkFHVUFZd0IwQUdVQVpBQWdBR1lBZFFCdUFHTUFkQUJwQUc4QWJnQXVBQ0lB
WFFBZ0FEMEFJQUFpQUVZQWJ3QmpBSFVBY3dBZ0FHOEEKYmdBZ0FITUFaUUJzQUdVQVl3QjBBR1VB
WkFBZ0FHWUFkUUJ1QUdNQWRBQnBBRzhBYmdBdUFDSUFPd0FLQUd3QWJ3QmpBR0VBYkFCcApBSG9B
WlFCa0FGTUFkQUJ5QUdrQWJnQm5BSE1BV3dBaUFFWUFid0J1QUhRQWN3QWlBRjBBSUFBOUFDQUFJ
Z0JHQUc4QWJnQjBBSE1BCklnQTdBQW9BYkFCdkFHTUFZUUJzQUdrQWVnQmxBR1FBVXdCMEFISUFh
UUJ1QUdjQWN3QmJBQ0lBUmdCMUFHNEFZd0IwQUdrQWJ3QnUKQUNJQVhRQWdBRDBBSUFBaUFFWUFk
UUJ1QUdNQWRBQnBBRzhBYmdBaUFEc0FDZ0JzQUc4QVl3QmhBR3dBYVFCNkFHVUFaQUJUQUhRQQpj
Z0JwQUc0QVp3QnpBRnNBSWdCSEFGSUFRUUJRQUVnQVV3QWlBRjBBSUFBOUFDQUFJZ0JIQUZJQVFR
QlFBRWdBVXdBaUFEc0FDZ0JzCkFHOEFZd0JoQUd3QWFRQjZBR1VBWkFCVEFIUUFjZ0JwQUc0QVp3
QnpBRnNBSWdCSEFHd0Fid0JpQUdFQWJBQWlBRjBBSUFBOUFDQUEKSWdCSEFHd0Fid0JpQUdFQWJB
QWlBRHNBQ2dCc0FHOEFZd0JoQUd3QWFRQjZBR1VBWkFCVEFIUUFjZ0JwQUc0QVp3QnpBRnNBSWdC
SQpBR1VBWVFCMkFIa0FJQUFvQUVJQWJ3QjBBSFFBYndCdEFDQUFWUUJ3QUNrQUlnQmRBQ0FBUFFB
Z0FDSUFTQUJsQUdFQWRnQjVBQ0FBCktBQkNBRzhBZEFCMEFHOEFiUUFnQUZVQWNBQXBBQ0lBT3dB
S0FHd0Fid0JqQUdFQWJBQnBBSG9BWlFCa0FGTUFkQUJ5QUdrQWJnQm4KQUhNQVd3QWlBRWdBYVFC
a0FHVUFJQUJqQUc4QWJnQnpBRzhBYkFCbEFDNEFJZ0JkQUNBQVBRQWdBQ0lBU0FCcEFHUUFaUUFn
QUdNQQpid0J1QUhNQWJ3QnNBR1VBTGdBaUFEc0FDZ0JzQUc4QVl3QmhBR3dBYVFCNkFHVUFaQUJU
QUhRQWNnQnBBRzRBWndCekFGc0FJZ0JKCkFHMEFZUUJuQUdVQWN3QWlBRjBBSUFBOUFDQUFJZ0JK
QUcwQVlRQm5BR1VBY3dBaUFEc0FDZ0JzQUc4QVl3QmhBR3dBYVFCNkFHVUEKWkFCVEFIUUFjZ0Jw
QUc0QVp3QnpBRnNBSWdCSkFHNEFiQUJwQUc0QVpRQWdBRk1BZEFCNUFHd0FaUUFnQUVFQWRBQjBB
SElBYVFCaQpBSFVBZEFCbEFDSUFYUUFnQUQwQUlBQWlBRWtBYmdCc0FHa0FiZ0JsQUNBQVV3QjBB
SGtBYkFCbEFDQUFRUUIwQUhRQWNnQnBBR0lBCmRRQjBBR1VBSWdBN0FBb0FiQUJ2QUdNQVlRQnNB
R2tBZWdCbEFHUUFVd0IwQUhJQWFRQnVBR2NBY3dCYkFDSUFUQUJ2QUdNQVlRQnMKQUNJQVhRQWdB
RDBBSUFBaUFFd0Fid0JqQUdFQWJBQWlBRHNBQ2dCc0FHOEFZd0JoQUd3QWFRQjZBR1VBWkFCVEFI
UUFjZ0JwQUc0QQpad0J6QUZzQUlnQk5BRWtBVFFCRkFDQUFkQUI1QUhBQVpRQWlBRjBBSUFBOUFD
QUFJZ0JOQUVrQVRRQkZBQ0FBZEFCNUFIQUFaUUFpCkFEc0FDZ0JzQUc4QVl3QmhBR3dBYVFCNkFH
VUFaQUJUQUhRQWNnQnBBRzRBWndCekFGc0FJZ0JOQUdVQWRBQnlBR2tBWXdCekFDSUEKWFFBZ0FE
MEFJQUFpQUUwQVpRQjBBSElBYVFCakFITUFJZ0E3QUFvQWJBQnZBR01BWVFCc0FHa0FlZ0JsQUdR
QVV3QjBBSElBYVFCdQpBR2NBY3dCYkFDSUFUZ0J2QUNBQVFnQnlBR1VBWVFCckFIQUFid0JwQUc0
QWRBQnpBQ0lBWFFBZ0FEMEFJQUFpQUU0QWJ3QWdBRUlBCmNnQmxBR0VBYXdCd0FHOEFhUUJ1QUhR
QWN3QWlBRHNBQ2dCc0FHOEFZd0JoQUd3QWFRQjZBR1VBWkFCVEFIUUFjZ0JwQUc0QVp3QnoKQUZz
QUlnQk9BRzhBSUFCUUFISUFid0J3QUdVQWNnQjBBR2tBWlFCekFDSUFYUUFnQUQwQUlBQWlBRTRB
YndBZ0FGQUFjZ0J2QUhBQQpaUUJ5QUhRQWFRQmxBSE1BSWdBN0FBb0FiQUJ2QUdNQVlRQnNBR2tB
ZWdCbEFHUUFVd0IwQUhJQWFRQnVBR2NBY3dCYkFDSUFUZ0J2CkFDQUFWZ0JoQUhJQWFRQmhBR0lB
YkFCbEFITUFJZ0JkQUNBQVBRQWdBQ0lBVGdCdkFDQUFWZ0JoQUhJQWFRQmhBR0lBYkFCbEFITUEK
SWdBN0FBb0FiQUJ2QUdNQVlRQnNBR2tBZWdCbEFHUUFVd0IwQUhJQWFRQnVBR2NBY3dCYkFDSUFU
Z0J2QUhRQUlBQkdBRzhBZFFCdQpBR1FBSWdCZEFDQUFQUUFnQUNJQVRnQnZBSFFBSUFCR0FHOEFk
UUJ1QUdRQUlnQTdBQW9BYkFCdkFHTUFZUUJzQUdrQWVnQmxBR1FBClV3QjBBSElBYVFCdUFHY0Fj
d0JiQUNJQVRnQnZBSFFBSUFCUUFHRUFkUUJ6QUdVQVpBQWlBRjBBSUFBOUFDQUFJZ0JPQUc4QWRB
QWcKQUZBQVlRQjFBSE1BWlFCa0FDSUFPd0FLQUd3QWJ3QmpBR0VBYkFCcEFIb0FaUUJrQUZNQWRB
QnlBR2tBYmdCbkFITUFXd0FpQUU4QQpkQUJvQUdVQWNnQWlBRjBBSUFBOUFDQUFJZ0JQQUhRQWFB
QmxBSElBSWdBN0FBb0FiQUJ2QUdNQVlRQnNBR2tBZWdCbEFHUUFVd0IwCkFISUFhUUJ1QUdjQWN3
QmJBQ0lBVUFCaEFIVUFjd0JsQUNBQWJ3QnVBQ0FBWlFCNEFHTUFaUUJ3QUhRQWFRQnZBRzRBY3dB
dUFDSUEKWFFBZ0FEMEFJQUFpQUZBQVlRQjFBSE1BWlFBZ0FHOEFiZ0FnQUdVQWVBQmpBR1VBY0FC
MEFHa0Fid0J1QUhNQUxnQWlBRHNBQ2dCcwpBRzhBWXdCaEFHd0FhUUI2QUdVQVpBQlRBSFFBY2dC
cEFHNEFad0J6QUZzQUlnQlFBR0VBZFFCekFHVUFJQUJ6QUdNQWNnQnBBSEFBCmRBQWdBR1VBZUFC
bEFHTUFkUUIwQUdrQWJ3QnVBQzRBSWdCZEFDQUFQUUFnQUNJQVVBQmhBSFVBY3dCbEFDQUFjd0Jq
QUhJQWFRQncKQUhRQUlBQmxBSGdBWlFCakFIVUFkQUJwQUc4QWJnQXVBQ0lBT3dBS0FHd0Fid0Jq
QUdFQWJBQnBBSG9BWlFCa0FGTUFkQUJ5QUdrQQpiZ0JuQUhNQVd3QWlBRkFBWVFCMUFITUFaUUJr
QUNJQVhRQWdBRDBBSUFBaUFGQUFZUUIxQUhNQVpRQmtBQ0lBT3dBS0FHd0Fid0JqCkFHRUFiQUJw
QUhvQVpRQmtBRk1BZEFCeUFHa0FiZ0JuQUhNQVd3QWlBRkFBWVFCMUFITUFhUUJ1QUdjQUlnQmRB
Q0FBUFFBZ0FDSUEKVUFCaEFIVUFjd0JwQUc0QVp3QWlBRHNBQ2dCc0FHOEFZd0JoQUd3QWFRQjZB
R1VBWkFCVEFIUUFjZ0JwQUc0QVp3QnpBRnNBSWdCUQpBSElBYndCbUFHa0FiQUJsQUNBQUpRQmtB
Q0lBWFFBZ0FEMEFJQUFpQUZBQWNnQnZBR1lBYVFCc0FHVUFJQUFsQUdRQUlnQTdBQW9BCmJBQnZB
R01BWVFCc0FHa0FlZ0JsQUdRQVV3QjBBSElBYVFCdUFHY0Fjd0JiQUNJQVVBQnlBRzhBWmdCcEFH
d0FaUUJ6QUNJQVhRQWcKQUQwQUlBQWlBRkFBY2dCdkFHWUFhUUJzQUdVQWN3QWlBRHNBQ2dCc0FH
OEFZd0JoQUd3QWFRQjZBR1VBWkFCVEFIUUFjZ0JwQUc0QQpad0J6QUZzQUlnQlFBSElBYndCd0FH
VUFjZ0IwQUdrQVpRQnpBQ0lBWFFBZ0FEMEFJQUFpQUZBQWNnQnZBSEFBWlFCeUFIUUFhUUJsCkFI
TUFJZ0E3QUFvQWJBQnZBR01BWVFCc0FHa0FlZ0JsQUdRQVV3QjBBSElBYVFCdUFHY0Fjd0JiQUNJ
QVVBQnlBRzhBZEFCdkFIUUEKZVFCd0FHVUFJZ0JkQUNBQVBRQWdBQ0lBVUFCeUFHOEFkQUJ2QUhR
QWVRQndBR1VBSWdBN0FBb0FiQUJ2QUdNQVlRQnNBR2tBZWdCbApBR1FBVXdCMEFISUFhUUJ1QUdj
QWN3QmJBQ0lBVVFCMUFHVUFjZ0I1QUNJQVhRQWdBRDBBSUFBaUFGRUFkUUJsQUhJQWVRQWlBRHNB
CkNnQnNBRzhBWXdCaEFHd0FhUUI2QUdVQVpBQlRBSFFBY2dCcEFHNEFad0J6QUZzQUlnQlNBRVVB
VXdCUEFGVUFVZ0JEQUVVQVV3QWkKQUYwQUlBQTlBQ0FBSWdCU0FFVUFVd0JQQUZVQVVnQkRBRVVB
VXdBaUFEc0FDZ0JzQUc4QVl3QmhBR3dBYVFCNkFHVUFaQUJUQUhRQQpjZ0JwQUc0QVp3QnpBRnNB
SWdCU0FHVUFjUUIxQUdVQWN3QjBBQ0FBU0FCbEFHRUFaQUJsQUhJQWN3QWlBRjBBSUFBOUFDQUFJ
Z0JTCkFHVUFjUUIxQUdVQWN3QjBBQ0FBU0FCbEFHRUFaQUJsQUhJQWN3QWlBRHNBQ2dCc0FHOEFZ
d0JoQUd3QWFRQjZBR1VBWkFCVEFIUUEKY2dCcEFHNEFad0J6QUZzQUlnQlNBR1VBY3dCdkFIVUFj
Z0JqQUdVQUlBQnBBRzRBZEFCbEFISUFjQUJ5QUdVQWRBQmxBR1FBSUFCaApBSE1BSUFBbEFITUFJ
QUJpQUhVQWRBQWdBSFFBY2dCaEFHNEFjd0JtQUdVQWNnQnlBR1VBWkFBZ0FIY0FhUUIwQUdnQUlB
Qk5BRWtBClRRQkZBQ0FBZEFCNUFIQUFaUUFnQUNVQWN3QXVBQ0lBWFFBZ0FEMEFJQUFpQUZJQVpR
QnpBRzhBZFFCeUFHTUFaUUFnQUdrQWJnQjAKQUdVQWNnQndBSElBWlFCMEFHVUFaQUFnQUdFQWN3
QWdBQ1VBTVFBa0FITUFJQUJpQUhVQWRBQWdBSFFBY2dCaEFHNEFjd0JtQUdVQQpjZ0J5QUdVQVpB
QWdBSGNBYVFCMEFHZ0FJQUJOQUVrQVRRQkZBQ0FBZEFCNUFIQUFaUUFnQUNVQU1nQWtBSE1BTGdB
aUFEc0FDZ0JzCkFHOEFZd0JoQUd3QWFRQjZBR1VBWkFCVEFIUUFjZ0JwQUc0QVp3QnpBRnNBSWdC
U0FHVUFjd0J2QUhVQWNnQmpBR1VBY3dBaUFGMEEKSUFBOUFDQUFJZ0JTQUdVQWN3QnZBSFVBY2dC
akFHVUFjd0FpQURzQUNnQnNBRzhBWXdCaEFHd0FhUUI2QUdVQVpBQlRBSFFBY2dCcApBRzRBWndC
ekFGc0FJZ0JTQUdVQWN3QndBRzhBYmdCekFHVUFJQUJJQUdVQVlRQmtBR1VBY2dCekFDSUFYUUFn
QUQwQUlBQWlBRklBClpRQnpBSEFBYndCdUFITUFaUUFnQUVnQVpRQmhBR1FBWlFCeUFITUFJZ0E3
QUFvQWJBQnZBR01BWVFCc0FHa0FlZ0JsQUdRQVV3QjAKQUhJQWFRQnVBR2NBY3dCYkFDSUFVZ0Js
QUhNQWRBQnZBSElBWlFBZ0FHRUFiQUJzQUNBQVpnQjFBRzRBWXdCMEFHa0Fid0J1QUhNQQpMZ0Fp
QUYwQUlBQTlBQ0FBSWdCU0FHVUFjd0IwQUc4QWNnQmxBQ0FBWVFCc0FHd0FJQUJtQUhVQWJnQmpB
SFFBYVFCdkFHNEFjd0F1CkFDSUFPd0FLQUd3QWJ3QmpBR0VBYkFCcEFIb0FaUUJrQUZNQWRBQnlB
R2tBYmdCbkFITUFXd0FpQUZJQWRRQnVBQ0FBSlFCa0FDSUEKWFFBZ0FEMEFJQUFpQUZJQWRRQnVB
Q0FBSlFCa0FDSUFPd0FLQUd3QWJ3QmpBR0VBYkFCcEFIb0FaUUJrQUZNQWRBQnlBR2tBYmdCbgpB
SE1BV3dBaUFGTUFZd0J2QUhBQVpRQWdBRllBWVFCeUFHa0FZUUJpQUd3QVpRQnpBQ0lBWFFBZ0FE
MEFJQUFpQUZNQVl3QnZBSEFBClpRQWdBRllBWVFCeUFHa0FZUUJpQUd3QVpRQnpBQ0lBT3dBS0FH
d0Fid0JqQUdFQWJBQnBBSG9BWlFCa0FGTUFkQUJ5QUdrQWJnQm4KQUhNQVd3QWlBRk1BWXdCeUFH
a0FjQUIwQUhNQUlnQmRBQ0FBUFFBZ0FDSUFVd0JqQUhJQWFRQndBSFFBY3dBaUFEc0FDZ0JzQUc4
QQpZd0JoQUd3QWFRQjZBR1VBWkFCVEFIUUFjZ0JwQUc0QVp3QnpBRnNBSWdCVEFHVUFZUUJ5QUdN
QWFBQWdBQ1VBY3dBaUFGMEFJQUE5CkFDQUFJZ0JUQUdVQVlRQnlBR01BYUFBZ0FDVUFjd0FpQURz
QUNnQnNBRzhBWXdCaEFHd0FhUUI2QUdVQVpBQlRBSFFBY2dCcEFHNEEKWndCekFGc0FJZ0JUQUdV
QWJBQm1BQ0lBWFFBZ0FEMEFJQUFpQUZNQVpRQnNBR1lBSWdBN0FBb0FiQUJ2QUdNQVlRQnNBR2tB
ZWdCbApBR1FBVXdCMEFISUFhUUJ1QUdjQWN3QmJBQ0lBVXdCb0FHOEFkd0FnQUdFQVlnQnpBRzhB
YkFCMUFIUUFaUUFnQUhRQWJ3QjBBR0VBCmJBQWdBR0VBYmdCa0FDQUFjd0JsQUd3QVpnQWdBSFFB
YVFCdEFHVUFjd0F1QUNJQVhRQWdBRDBBSUFBaUFGTUFhQUJ2QUhjQUlBQmgKQUdJQWN3QnZBR3dB
ZFFCMEFHVUFJQUIwQUc4QWRBQmhBR3dBSUFCaEFHNEFaQUFnQUhNQVpRQnNBR1lBSUFCMEFHa0Fi
UUJsQUhNQQpMZ0FpQURzQUNnQnNBRzhBWXdCaEFHd0FhUUI2QUdVQVpBQlRBSFFBY2dCcEFHNEFa
d0J6QUZzQUlnQlRBR2dBYndCM0FDQUFZd0J2CkFHNEFjd0J2QUd3QVpRQXVBQ0lBWFFBZ0FEMEFJ
QUFpQUZNQWFBQnZBSGNBSUFCakFHOEFiZ0J6QUc4QWJBQmxBQzRBSWdBN0FBb0EKYkFCdkFHTUFZ
UUJzQUdrQWVnQmxBR1FBVXdCMEFISUFhUUJ1QUdjQWN3QmJBQ0lBVXdCb0FHOEFkd0FnQUdrQWJn
Qm9BR1VBY2dCcApBSFFBWlFCa0FDSUFYUUFnQUQwQUlBQWlBRk1BYUFCdkFIY0FJQUJwQUc0QWFB
QmxBSElBYVFCMEFHVUFaQUFpQURzQUNnQnNBRzhBCll3QmhBR3dBYVFCNkFHVUFaQUJUQUhRQWNn
QnBBRzRBWndCekFGc0FJZ0JUQUdnQWJ3QjNBQ0FBZEFCb0FHVUFJQUJ1QUdVQWVBQjAKQUNBQWN3
QmpBSElBYVFCd0FIUUFJQUJ5QUdVQWN3QnZBSFVBY2dCakFHVUFMZ0FpQUYwQUlBQTlBQ0FBSWdC
VEFHZ0Fid0IzQUNBQQpkQUJvQUdVQUlBQnVBR1VBZUFCMEFDQUFjd0JqQUhJQWFRQndBSFFBSUFC
eUFHVUFjd0J2QUhVQWNnQmpBR1VBTGdBaUFEc0FDZ0JzCkFHOEFZd0JoQUd3QWFRQjZBR1VBWkFC
VEFIUUFjZ0JwQUc0QVp3QnpBRnNBSWdCVEFHZ0Fid0IzQUNBQWRBQm9BR1VBSUFCd0FISUEKWlFC
MkFHa0Fid0IxQUhNQUlBQnpBR01BY2dCcEFIQUFkQUFnQUhJQVpRQnpBRzhBZFFCeUFHTUFaUUF1
QUNJQVhRQWdBRDBBSUFBaQpBRk1BYUFCdkFIY0FJQUIwQUdnQVpRQWdBSEFBY2dCbEFIWUFhUUJ2
QUhVQWN3QWdBSE1BWXdCeUFHa0FjQUIwQUNBQWNnQmxBSE1BCmJ3QjFBSElBWXdCbEFDNEFJZ0E3
QUFvQWJBQnZBR01BWVFCc0FHa0FlZ0JsQUdRQVV3QjBBSElBYVFCdUFHY0Fjd0JiQUNJQVV3Qm8K
QUc4QWR3QWdBSFFBYndCMEFHRUFiQUFnQUdFQWJnQmtBQ0FBY3dCbEFHd0FaZ0FnQUhRQWFRQnRB
R1VBY3dBZ0FHRUFjd0FnQUhBQQpaUUJ5QUdNQVpRQnVBSFFBWVFCbkFHVUFjd0F1QUNJQVhRQWdB
RDBBSUFBaUFGTUFhQUJ2QUhjQUlBQjBBRzhBZEFCaEFHd0FJQUJoCkFHNEFaQUFnQUhNQVpRQnNB
R1lBSUFCMEFHa0FiUUJsQUhNQUlBQmhBSE1BSUFCd0FHVUFjZ0JqQUdVQWJnQjBBR0VBWndCbEFI
TUEKTGdBaUFEc0FDZ0JzQUc4QVl3QmhBR3dBYVFCNkFHVUFaQUJUQUhRQWNnQnBBRzRBWndCekFG
c0FJZ0JUQUdrQWVnQmxBQ0lBWFFBZwpBRDBBSUFBaUFGTUFhUUI2QUdVQUlnQTdBQW9BYkFCdkFH
TUFZUUJzQUdrQWVnQmxBR1FBVXdCMEFISUFhUUJ1QUdjQWN3QmJBQ0lBClV3QnZBSElBZEFBZ0FH
SUFlUUFnQUVRQWRRQnlBR0VBZEFCcEFHOEFiZ0FpQUYwQUlBQTlBQ0FBSWdCVEFHOEFjZ0IwQUNB
QVlnQjUKQUNBQVJBQjFBSElBWVFCMEFHa0Fid0J1QUNJQU93QUtBR3dBYndCakFHRUFiQUJwQUhv
QVpRQmtBRk1BZEFCeUFHa0FiZ0JuQUhNQQpXd0FpQUZNQWJ3QnlBSFFBSUFCaUFIa0FJQUJGQUc0
QVpBQWdBRlFBYVFCdEFHVUFJZ0JkQUNBQVBRQWdBQ0lBVXdCdkFISUFkQUFnCkFHSUFlUUFnQUVV
QWJnQmtBQ0FBVkFCcEFHMEFaUUFpQURzQUNnQnNBRzhBWXdCaEFHd0FhUUI2QUdVQVpBQlRBSFFB
Y2dCcEFHNEEKWndCekFGc0FJZ0JUQUc4QWNnQjBBQ0FBWWdCNUFDQUFUQUJoQUhRQVpRQnVBR01B
ZVFBaUFGMEFJQUE5QUNBQUlnQlRBRzhBY2dCMApBQ0FBWWdCNUFDQUFUQUJoQUhRQVpRQnVBR01B
ZVFBaUFEc0FDZ0JzQUc4QVl3QmhBR3dBYVFCNkFHVUFaQUJUQUhRQWNnQnBBRzRBClp3QnpBRnNB
SWdCVEFHOEFjZ0IwQUNBQVlnQjVBQ0FBVWdCbEFITUFjQUJ2QUc0QWN3QmxBQ0FBVkFCcEFHMEFa
UUFpQUYwQUlBQTkKQUNBQUlnQlRBRzhBY2dCMEFDQUFZZ0I1QUNBQVVnQmxBSE1BY0FCdkFHNEFj
d0JsQUNBQVZBQnBBRzBBWlFBaUFEc0FDZ0JzQUc4QQpZd0JoQUd3QWFRQjZBR1VBWkFCVEFIUUFj
Z0JwQUc0QVp3QnpBRnNBSWdCVEFHOEFjZ0IwQUNBQVlnQjVBQ0FBVXdCcEFIb0FaUUFpCkFGMEFJ
QUE5QUNBQUlnQlRBRzhBY2dCMEFDQUFZZ0I1QUNBQVV3QnBBSG9BWlFBaUFEc0FDZ0JzQUc4QVl3
QmhBR3dBYVFCNkFHVUEKWkFCVEFIUUFjZ0JwQUc0QVp3QnpBRnNBSWdCVEFHOEFjZ0IwQUNBQVln
QjVBQ0FBVXdCMEFHRUFjZ0IwQUNBQVZBQnBBRzBBWlFBaQpBRjBBSUFBOUFDQUFJZ0JUQUc4QWNn
QjBBQ0FBWWdCNUFDQUFVd0IwQUdFQWNnQjBBQ0FBVkFCcEFHMEFaUUFpQURzQUNnQnNBRzhBCll3
QmhBR3dBYVFCNkFHVUFaQUJUQUhRQWNnQnBBRzRBWndCekFGc0FJZ0JUQUc4QWRRQnlBR01BWlFB
aUFGMEFJQUE5QUNBQUlnQlQKQUc4QWRRQnlBR01BWlFBaUFEc0FDZ0JzQUc4QVl3QmhBR3dBYVFC
NkFHVUFaQUJUQUhRQWNnQnBBRzRBWndCekFGc0FJZ0JUQUhRQQpZUUJ5QUhRQUlBQkVBR1VBWWdC
MUFHY0Fad0JwQUc0QVp3QWlBRjBBSUFBOUFDQUFJZ0JUQUhRQVlRQnlBSFFBSUFCRUFHVUFZZ0Ix
CkFHY0Fad0JwQUc0QVp3QWlBRHNBQ2dCc0FHOEFZd0JoQUd3QWFRQjZBR1VBWkFCVEFIUUFjZ0Jw
QUc0QVp3QnpBRnNBSWdCVEFIUUEKWVFCeUFIUUFJQUJrQUdVQVlnQjFBR2NBWndCcEFHNEFad0F1
QUNJQVhRQWdBRDBBSUFBaUFGTUFkQUJoQUhJQWRBQWdBR1FBWlFCaQpBSFVBWndCbkFHa0FiZ0Ju
QUM0QUlnQTdBQW9BYkFCdkFHTUFZUUJzQUdrQWVnQmxBR1FBVXdCMEFISUFhUUJ1QUdjQWN3QmJB
Q0lBClV3QjBBR0VBY2dCMEFDQUFjQUJ5QUc4QVpnQnBBR3dBYVFCdUFHY0FMZ0FpQUYwQUlBQTlB
Q0FBSWdCVEFIUUFZUUJ5QUhRQUlBQncKQUhJQWJ3Qm1BR2tBYkFCcEFHNEFad0F1QUNJQU93QUtB
R3dBYndCakFHRUFiQUJwQUhvQVpRQmtBRk1BZEFCeUFHa0FiZ0JuQUhNQQpXd0FpQUZNQWRBQmxB
SEFBSUFCcEFHNEFkQUJ2QUNBQWJnQmxBSGdBZEFBZ0FHWUFkUUJ1QUdNQWRBQnBBRzhBYmdBZ0FH
TUFZUUJzCkFHd0FMZ0FpQUYwQUlBQTlBQ0FBSWdCVEFIUUFaUUJ3QUNBQWFRQnVBSFFBYndBZ0FH
NEFaUUI0QUhRQUlBQm1BSFVBYmdCakFIUUEKYVFCdkFHNEFJQUJqQUdFQWJBQnNBQzRBSWdBN0FB
b0FiQUJ2QUdNQVlRQnNBR2tBZWdCbEFHUUFVd0IwQUhJQWFRQnVBR2NBY3dCYgpBQ0lBVXdCMEFH
VUFjQUFnQUc4QWRRQjBBQ0FBYndCbUFDQUFZd0IxQUhJQWNnQmxBRzRBZEFBZ0FHWUFkUUJ1QUdN
QWRBQnBBRzhBCmJnQXVBQ0lBWFFBZ0FEMEFJQUFpQUZNQWRBQmxBSEFBSUFCdkFIVUFkQUFnQUc4
QVpnQWdBR01BZFFCeUFISUFaUUJ1QUhRQUlBQm0KQUhVQWJnQmpBSFFBYVFCdkFHNEFMZ0FpQURz
QUNnQnNBRzhBWXdCaEFHd0FhUUI2QUdVQVpBQlRBSFFBY2dCcEFHNEFad0J6QUZzQQpJZ0JUQUhR
QVpRQndBQ0FBYndCMkFHVUFjZ0FnQUc0QVpRQjRBSFFBSUFCbUFIVUFiZ0JqQUhRQWFRQnZBRzRB
SUFCakFHRUFiQUJzCkFDNEFJZ0JkQUNBQVBRQWdBQ0lBVXdCMEFHVUFjQUFnQUc4QWRnQmxBSElB
SUFCdUFHVUFlQUIwQUNBQVpnQjFBRzRBWXdCMEFHa0EKYndCdUFDQUFZd0JoQUd3QWJBQXVBQ0lB
T3dBS0FHd0Fid0JqQUdFQWJBQnBBSG9BWlFCa0FGTUFkQUJ5QUdrQWJnQm5BSE1BV3dBaQpBRk1B
ZEFCbEFIQUFjQUJwQUc0QVp3QWlBRjBBSUFBOUFDQUFJZ0JUQUhRQVpRQndBSEFBYVFCdUFHY0FJ
Z0E3QUFvQWJBQnZBR01BCllRQnNBR2tBZWdCbEFHUUFVd0IwQUhJQWFRQnVBR2NBY3dCYkFDSUFV
d0IwQUc4QWNBQWdBR1FBWlFCaUFIVUFad0JuQUdrQWJnQm4KQUM0QUlnQmRBQ0FBUFFBZ0FDSUFV
d0IwQUc4QWNBQWdBR1FBWlFCaUFIVUFad0JuQUdrQWJnQm5BQzRBSWdBN0FBb0FiQUJ2QUdNQQpZ
UUJzQUdrQWVnQmxBR1FBVXdCMEFISUFhUUJ1QUdjQWN3QmJBQ0lBVXdCMEFHOEFjQUFnQUhBQWNn
QnZBR1lBYVFCc0FHa0FiZ0JuCkFDNEFJZ0JkQUNBQVBRQWdBQ0lBVXdCMEFHOEFjQUFnQUhBQWNn
QnZBR1lBYVFCc0FHa0FiZ0JuQUM0QUlnQTdBQW9BYkFCdkFHTUEKWVFCc0FHa0FlZ0JsQUdRQVV3
QjBBSElBYVFCdUFHY0Fjd0JiQUNJQVV3QjBBSGtBYkFCbEFITUFJZ0JkQUNBQVBRQWdBQ0lBVXdC
MApBSGtBYkFCbEFITUFJZ0E3QUFvQWJBQnZBR01BWVFCc0FHa0FlZ0JsQUdRQVV3QjBBSElBYVFC
dUFHY0Fjd0JiQUNJQVV3QjBBSGtBCmJBQmxBSE1BYUFCbEFHVUFkQUJ6QUNJQVhRQWdBRDBBSUFB
aUFGTUFkQUI1QUd3QVpRQnpBR2dBWlFCbEFIUUFjd0FpQURzQUNnQnMKQUc4QVl3QmhBR3dBYVFC
NkFHVUFaQUJUQUhRQWNnQnBBRzRBWndCekFGc0FJZ0JVQUdnQVpRQWdBQndnSlFCekFCMGdYQUJ1
QUhRQQpZUUJpQUd3QVpRQWdBR2tBY3dBZ0FHVUFiUUJ3QUhRQWVRQXVBQ0lBWFFBZ0FEMEFJQUFp
QUZRQWFBQmxBQ0FBSENBbEFITUFIU0JjCkFHNEFkQUJoQUdJQWJBQmxBQ0FBYVFCekFDQUFaUUJ0
QUhBQWRBQjVBQzRBSWdBN0FBb0FiQUJ2QUdNQVlRQnNBR2tBZWdCbEFHUUEKVXdCMEFISUFhUUJ1
QUdjQWN3QmJBQ0lBVkFCcEFHMEFaUUFpQUYwQUlBQTlBQ0FBSWdCVUFHa0FiUUJsQUNJQU93QUtB
R3dBYndCagpBR0VBYkFCcEFIb0FaUUJrQUZNQWRBQnlBR2tBYmdCbkFITUFXd0FpQUZRQWJ3QjBB
R0VBYkFBaUFGMEFJQUE5QUNBQUlnQlVBRzhBCmRBQmhBR3dBSWdBN0FBb0FiQUJ2QUdNQVlRQnNB
R2tBZWdCbEFHUUFVd0IwQUhJQWFRQnVBR2NBY3dCYkFDSUFWQUJ5QUdVQVpRQWcKQUNnQVZBQnZB
SEFBSUFCRUFHOEFkd0J1QUNrQUlnQmRBQ0FBUFFBZ0FDSUFWQUJ5QUdVQVpRQWdBQ2dBVkFCdkFI
QUFJQUJFQUc4QQpkd0J1QUNrQUlnQTdBQW9BYkFCdkFHTUFZUUJzQUdrQWVnQmxBR1FBVXdCMEFI
SUFhUUJ1QUdjQWN3QmJBQ0lBVlFCdUFHUUFid0JqCkFHc0FJQUJwQUc0QWRBQnZBQ0FBY3dCbEFI
QUFZUUJ5QUdFQWRBQmxBQ0FBZHdCcEFHNEFaQUJ2QUhjQUxnQWlBRjBBSUFBOUFDQUEKSWdCVkFH
NEFaQUJ2QUdNQWF3QWdBR2tBYmdCMEFHOEFJQUJ6QUdVQWNBQmhBSElBWVFCMEFHVUFJQUIzQUdr
QWJnQmtBRzhBZHdBdQpBQ0lBT3dBS0FHd0Fid0JqQUdFQWJBQnBBSG9BWlFCa0FGTUFkQUJ5QUdr
QWJnQm5BSE1BV3dBaUFGVUFjd0JsQUNBQWJBQmhBSElBClp3QmxBQ0FBY2dCbEFITUFid0IxQUhJ
QVl3QmxBQ0FBY2dCdkFIY0Fjd0F1QUNJQVhRQWdBRDBBSUFBaUFGVUFjd0JsQUNBQWJBQmgKQUhJ
QVp3QmxBQ0FBY2dCbEFITUFid0IxQUhJQVl3QmxBQ0FBY2dCdkFIY0Fjd0F1QUNJQU93QUtBR3dB
YndCakFHRUFiQUJwQUhvQQpaUUJrQUZNQWRBQnlBR2tBYmdCbkFITUFXd0FpQUZVQWN3QmxBQ0FB
Y3dCdEFHRUFiQUJzQUNBQWNnQmxBSE1BYndCMUFISUFZd0JsCkFDQUFjZ0J2QUhjQWN3QXVBQ0lB
WFFBZ0FEMEFJQUFpQUZVQWN3QmxBQ0FBY3dCdEFHRUFiQUJzQUNBQWNnQmxBSE1BYndCMUFISUEK
WXdCbEFDQUFjZ0J2QUhjQWN3QXVBQ0lBT3dBS0FHd0Fid0JqQUdFQWJBQnBBSG9BWlFCa0FGTUFk
QUJ5QUdrQWJnQm5BSE1BV3dBaQpBRmNBYVFCMEFHZ0FJQUJDQUd3QWJ3QmpBR3NBSWdCZEFDQUFQ
UUFnQUNJQVZ3QnBBSFFBYUFBZ0FFSUFiQUJ2QUdNQWF3QWlBRHNBCkNnQnNBRzhBWXdCaEFHd0Fh
UUI2QUdVQVpBQlRBSFFBY2dCcEFHNEFad0J6QUZzQUlnQllBRWdBVWdBaUFGMEFJQUE5QUNBQUln
QlkKQUVnQVVnQWlBRHNBQ2dCc0FHOEFZd0JoQUd3QWFRQjZBR1VBWkFCVEFIUUFjZ0JwQUc0QVp3
QnpBRnNBSWdCWkFHOEFkUUFnQUdNQQpid0IxQUd3QVpBQWdBSE1BWVFCMkFHVUFJQUJpQUdFQWJn
QmtBSGNBYVFCa0FIUUFhQUFnQUdJQWVRQWdBR2dBWVFCMkFHa0FiZ0JuCkFDQUFlUUJ2QUhVQWNn
QWdBSGNBWlFCaUFDQUFjd0JsQUhJQWRnQmxBSElBSUFCakFHOEFiUUJ3QUhJQVpRQnpBSE1BSUFC
MEFHZ0EKYVFCekFDQUFkQUJ5QUdFQWJnQnpBR1lBWlFCeUFDQUFkd0JwQUhRQWFBQWdBR2NBZWdC
cEFIQUFJQUJ2QUhJQUlBQjZBR3dBYVFCaQpBQzRBSWdCZEFDQUFQUUFnQUNJQVdRQnZBSFVBSUFC
akFHOEFkUUJzQUdRQUlBQnpBR0VBZGdCbEFDQUFZZ0JoQUc0QVpBQjNBR2tBClpBQjBBR2dBSUFC
aUFIa0FJQUJvQUdFQWRnQnBBRzRBWndBZ0FIa0Fid0IxQUhJQUlBQjNBR1VBWWdBZ0FITUFaUUJ5
QUhZQVpRQnkKQUNBQVl3QnZBRzBBY0FCeUFHVUFjd0J6QUNBQWRBQm9BR2tBY3dBZ0FIUUFjZ0Jo
QUc0QWN3Qm1BR1VBY2dBZ0FIY0FhUUIwQUdnQQpJQUJuQUhvQWFRQndBQ0FBYndCeUFDQUFlZ0Jz
QUdrQVlnQXVBQ0lBT3dBS0FHd0Fid0JqQUdFQWJBQnBBSG9BWlFCa0FGTUFkQUJ5CkFHa0FiZ0Ju
QUhNQVd3QWlBR0lBYndCeUFHUUFaUUJ5QUNJQVhRQWdBRDBBSUFBaUFHSUFid0J5QUdRQVpRQnlB
Q0lBT3dBS0FHd0EKYndCakFHRUFiQUJwQUhvQVpRQmtBRk1BZEFCeUFHa0FiZ0JuQUhNQVd3QWlB
R01BYndCdUFIUUFaUUJ1QUhRQUlnQmRBQ0FBUFFBZwpBQ0lBWXdCdkFHNEFkQUJsQUc0QWRBQWlB
RHNBQ2dCc0FHOEFZd0JoQUd3QWFRQjZBR1VBWkFCVEFIUUFjZ0JwQUc0QVp3QnpBRnNBCklnQmtB
RzhBWXdCMUFHMEFaUUJ1QUhRQUlnQmRBQ0FBUFFBZ0FDSUFaQUJ2QUdNQWRRQnRBR1VBYmdCMEFD
SUFPd0FLQUd3QWJ3QmoKQUdFQWJBQnBBSG9BWlFCa0FGTUFkQUJ5QUdrQWJnQm5BSE1BV3dBaUFH
VUFiQUJsQUcwQVpRQnVBSFFBR1NCekFDQUFIQ0FsQUhNQQpIU0FnQUdFQWRBQjBBSElBYVFCaUFI
VUFkQUJsQUNJQVhRQWdBRDBBSUFBaUFHVUFiQUJsQUcwQVpRQnVBSFFBR1NCekFDQUFIQ0FsCkFI
TUFIU0FnQUdFQWRBQjBBSElBYVFCaUFIVUFkQUJsQUNJQU93QUtBR3dBYndCakFHRUFiQUJwQUhv
QVpRQmtBRk1BZEFCeUFHa0EKYmdCbkFITUFXd0FpQUdZQWJ3QnVBSFFBSWdCZEFDQUFQUUFnQUNJ
QVpnQnZBRzRBZEFBaUFEc0FDZ0JzQUc4QVl3QmhBR3dBYVFCNgpBR1VBWkFCVEFIUUFjZ0JwQUc0
QVp3QnpBRnNBSWdCcEFHMEFZUUJuQUdVQUlnQmRBQ0FBUFFBZ0FDSUFhUUJ0QUdFQVp3QmxBQ0lB
Ck93QUtBR3dBYndCakFHRUFiQUJwQUhvQVpRQmtBRk1BZEFCeUFHa0FiZ0JuQUhNQVd3QWlBR2tB
YmdCc0FHa0FiZ0JsQUNBQWN3QjAKQUhrQWJBQmxBSE1BYUFCbEFHVUFkQUFpQUYwQUlBQTlBQ0FB
SWdCcEFHNEFiQUJwQUc0QVpRQWdBSE1BZEFCNUFHd0FaUUJ6QUdnQQpaUUJsQUhRQUlnQTdBQW9B
YkFCdkFHTUFZUUJzQUdrQWVnQmxBR1FBVXdCMEFISUFhUUJ1QUdjQWN3QmJBQ0lBYkFCcEFHNEFa
UUFnCkFDVUFaQUFpQUYwQUlBQTlBQ0FBSWdCc0FHa0FiZ0JsQUNBQUpRQmtBQ0lBT3dBS0FHd0Fi
d0JqQUdFQWJBQnBBSG9BWlFCa0FGTUEKZEFCeUFHa0FiZ0JuQUhNQVd3QWlBRzBBWVFCeUFHY0Fh
UUJ1QUNJQVhRQWdBRDBBSUFBaUFHMEFZUUJ5QUdjQWFRQnVBQ0lBT3dBSwpBR3dBYndCakFHRUFi
QUJwQUhvQVpRQmtBRk1BZEFCeUFHa0FiZ0JuQUhNQVd3QWlBRzhBZEFCb0FHVUFjZ0FpQUYwQUlB
QTlBQ0FBCklnQnZBSFFBYUFCbEFISUFJZ0E3QUFvQWJBQnZBR01BWVFCc0FHa0FlZ0JsQUdRQVV3
QjBBSElBYVFCdUFHY0Fjd0JiQUNJQWNBQmgKQUdRQVpBQnBBRzRBWndBaUFGMEFJQUE5QUNBQUln
QndBR0VBWkFCa0FHa0FiZ0JuQUNJQU93QUtBR3dBYndCakFHRUFiQUJwQUhvQQpaUUJrQUZNQWRB
QnlBR2tBYmdCbkFITUFXd0FpQUhBQWJ3QnpBR2tBZEFCcEFHOEFiZ0FpQUYwQUlBQTlBQ0FBSWdC
d0FHOEFjd0JwCkFIUUFhUUJ2QUc0QUlnQTdBQW9BYkFCdkFHTUFZUUJzQUdrQWVnQmxBR1FBVXdC
MEFISUFhUUJ1QUdjQWN3QmJBQ0lBY3dCakFISUEKYVFCd0FIUUFJZ0JkQUNBQVBRQWdBQ0lBY3dC
akFISUFhUUJ3QUhRQUlnQTdBQW9BYkFCdkFHTUFZUUJzQUdrQWVnQmxBR1FBVXdCMApBSElBYVFC
dUFHY0Fjd0JiQUNJQWN3QjBBSGtBYkFCbEFITUFhQUJsQUdVQWRBQWlBRjBBSUFBOUFDQUFJZ0J6
QUhRQWVRQnNBR1VBCmN3Qm9BR1VBWlFCMEFDSUFPd0FLQUd3QWJ3QmpBR0VBYkFCcEFIb0FaUUJr
QUZNQWRBQnlBR2tBYmdCbkFITUFXd0FpQUhVQWN3QmwKQUhJQUlBQmhBR2NBWlFCdUFIUUFJQUJ6
QUhRQWVRQnNBR1VBY3dCb0FHVUFaUUIwQUNJQVhRQWdBRDBBSUFBaUFIVUFjd0JsQUhJQQpJQUJo
QUdjQVpRQnVBSFFBSUFCekFIUUFlUUJzQUdVQWN3Qm9BR1VBWlFCMEFDSUFPd0FLQUd3QWJ3QmpB
R0VBYkFCcEFIb0FaUUJrCkFGTUFkQUJ5QUdrQWJnQm5BSE1BV3dBaUFIVUFjd0JsQUhJQUlBQnpB
SFFBZVFCc0FHVUFjd0JvQUdVQVpRQjBBQ0lBWFFBZ0FEMEEKSUFBaUFIVUFjd0JsQUhJQUlBQnpB
SFFBZVFCc0FHVUFjd0JvQUdVQVpRQjBBQ0lBT3dBS0FHd0Fid0JqQUdFQWJBQnBBSG9BWlFCawpB
Rk1BZEFCeUFHa0FiZ0JuQUhNQVd3QWlBRk1BWlFCc0FHVUFZd0IwQUNBQVlRQnVBQ0FBWlFCc0FH
VUFiUUJsQUc0QWRBQWdBR2tBCmJnQWdBSFFBYUFCbEFDQUFjQUJoQUdjQVpRQWdBSFFBYndBZ0FH
a0FiZ0J6QUhBQVpRQmpBSFFBSUFCcEFIUUFMZ0FpQUYwQUlBQTkKQUNBQUlnQlRBR1VBYkFCbEFH
TUFkQUFnQUdFQWJnQWdBR1VBYkFCbEFHMEFaUUJ1QUhRQUlBQnBBRzRBSUFCMEFHZ0FaUUFnQUhB
QQpZUUJuQUdVQUlBQjBBRzhBSUFCcEFHNEFjd0J3QUdVQVl3QjBBQ0FBYVFCMEFDNEFJZ0E3QUFv
QQoK
</data>
<flag name="review"
          id="11109"
          type_id="1"
          status="+"
          setter="zwarich"
    />
          </attachment>
      

    </bug>

</bugzilla>